[abc80] Emulering av 7.8kHz interrupt i ABCWin?

juhasz juhasz at abc.se
Fre Jan 20 00:39:05 PST 2017


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