000
01.12.2011, 07:35 Uhr
volkerp
Default Group and Edit
|
ich habe eine Frage zum N-Kommando (Schrittbetrieb) des Z1013
An der System-PIO geht Port B Bit 5 an den Adressbus AB Bit 0 (Eingabe). Die PIO wird beim N-Kommando so programmiert, dass bei B5 H -> L ein Interrupt generiert wird. Vor den aktuellen Befehl wird EI gepoked und gestartet. Sobald nun EI und nachfolgender Befehl ausgeführt wird, und AB0 => 0 generiert PIO B5 einen Interrupt und der Interrupt-Code wird ausgeführt (Registeranzeige etc.)
Aber wann [b]genau[b] erfolgt die Aktivierung an Pio B5? In vermute: entweder steht der Befehl selbst auf gerader Adr. oder beim Wechsel zur nächsten Adr. geht AB0 auf 0. Aber ist das wirklich so und reicht das aus?
nb: Beim Z9001 wird die CTC genutzt. Hier wird 1 Takt gezählt und dann der Interrupt ausgelöst. Dies erfolgt also stets innerhalb des aktuellen Befehls.
Quellcode: | PIOBC equ 03h Bit5->AB0 in ;NEXT-Kommando, Step-Betrieb ; ;Initialisierungstabelle fuer PIO bei NEXT ;PIO B5 => AB0 in ; NKTA: DB Lo(NINTA) ;Interruptvektor Low Byte DB 10010111b ;Interruptsteuerwort, EI, Low-aktiv, Mask folgt DB 11011111b ;Interruptmaske Bit5 aktiv ; ;NEXT-Kommando ; N_KDO: LD A,Hi(NINTA) LD I,A ;Interruptvektor DI LD HL,NKTA ;Initialisieren PIO Port B LD BC,0303H ;3 Bytes, Port PIOBC OTIR ;loest selbstaendig INT aus LD HL,(BPADR) ;Byte vor Breakadr.(!) DEC HL ;wird EI LD A,(HL) LD (NBYTE),A ;Byte retten LD (HL),0FBH ;Code EI einschreiben LD (SPADR),SP LD SP,(REGSP) PUSH HL ;Adr. mit EI-Befehl JP REGH ;Register sichern und Start ; ;Eingang bei Interrupt ....
|
-- VolkerP
http://hc-ddr.hucki.net (Z9001, Z1013, LC-80, ...) |