[abc80] Emulering av 7.8kHz interrupt i ABCWin?

Erik Isaksson exon at lysator.liu.se
Fre Jan 20 13:23:52 PST 2017


Så, det verkar som att jag bara har stöd för "bitwise"-moden i min 
pio-implementation. Vilket betyder en del knåpande innan allt är på 
plats. Som tur är så är jag lycklig ägare till en kopia av Z80 User's 
Manual :-)

Var finns ljud2.asm? Och kanske finns det ett färdigt testprogram (.BAC) 
som jag kan köra för att se om det funkar?

PS. Ni är synnerligen onda människor som får mig att ta tag i det här 
igen... ;)

mvh Erik


On 2017-01-20 09:39, juhasz wrote:
> Just det, man ställer om pio:n till att reagera på astb istf en 
> ändring av bit 7 på tgbordet. Detta görs i ett litet "paket" av out 
> till pio-porten
> (se ljud2.asm). dessutom måste man stödja registret för 
> interruptadress (som normalt är 0x26) som styr vart z80 hoppar vid 
> interrupt. Så det är lite pyssel. Bra referenser är
> - ljud2.asm - där ser man inkoppling o även återställning av pio-register
> - Z80 pio datablad
> - listan....
>
> Robert
>
> Skickat från min Samsung Galaxy-smartphone.
>
> -------- Originalmeddelande --------
> Från: "H. Peter Anvin" <hpa at zytor.com>
> Datum: 2017-01-20 05:12 (GMT+01:00)
> Till: Erik Isaksson <exon at lysator.liu.se>, Andreas Gustafsson 
> <andreas.gustafsson at gmail.com>, juhasz <juhasz at abc.se>
> Kopia: abc80 <abc80 at abc80.org>
> Rubrik: Re: [abc80] Emulering av 7.8kHz interrupt i ABCWin?
>
> On 01/19/17 13:53, Erik Isaksson wrote:
> > Hm, jag känner att jag behöver lite mer input här. Är det signalen in på
> > /ASTB som åsyftas? Den ser ut att komma från bit 0 i linjeräknaren.
> >
> > Och hur programmeras PIOn för att generera detta interrupt? Är osäker på
> > hur väl jag emulerar den. Samt att påverkas inte tangentbordsfunktionen
> > om man pillar för mycket på den?
>
> Sätt PIO port A till "input" i stället för "bitwise".  Det gör också att
> tangentbordsstoben inte längre generar interrupt, så din drivrutin måste
> kolla om port 56, bit 7 går från 0 -> 1 och hoppa till interruptrutinen
> i BASIC-tolken i stället för att göra RETI, d.v.s. något i den här stilen:
>
>
> interrupt:
> push af
> push hl
>
> ; Your own interrupt code goes here
>
>
> ld a,(last_key)
> xor 0FFh
> ld l,a
> in a,(56)
> ld (last_key),a
> and l
> pop hl
> jp m,keyboard_int
> pop af
> reti
> keyboard_int:
> pop af
> jp basic_keyboard_int
>
> last_key:
> defb 0




More information about the ABC80 mailing list