|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 2176 (0x880)
Types: TextFile
Names: »PIO.MAC«
└─⟦72577d508⟧ Bits:30003297 Diverse BIOS typer til RC703
└─⟦this⟧ »PIO.MAC«
SUBTTL Z-80 PIO DRIVER
;========================================================
;= Z80 PIO DRIVER =
;========================================================
KEYFLG:DB 0 ; KEYBOARD BUSY FLAG (0=BUSY)
PARFLG:DB 0 ; CHANNEL B BUSY FLAG (0=BUSY)
;========================================================
;= CHANNEL A (KEYBOARD) =
;========================================================
CONST: LD A,(KEYFLG) ;
RET
CONIN: LD A,(KEYFLG) ;
OR A ;
JP Z,CONIN ; WHILE KEYBOARD_BUSY DO;
DI ;
XOR A ;
LD (KEYFLG),A ; KEYBOARD_BUSY:=TRUE;
EI ;
IN A,(PIOAD) ; A := CONVERT(CHAR);
LD C,A ;
LD HL,INCONV ;
CALL CON1 ;
RET ;
PAGE
;========================================================
;= CHANNEL A (KEYBOARD) INTERRUPT ROUTINE =
;========================================================
KEYIT: LD (SP_SAV),SP ; SAVE ACCUMULATOR AND FLAGS
LD SP,ISTACK ;
PUSH AF ;
LD A,0FFH ;
LD (KEYFLG),A ;
POP AF ; RESTORE ACCUMULATOR AND FLAGS
LD SP,(SP_SAV) ;
EI ;
RETI ;
;========================================================
;= CHANNEL B INTERRUPT ROUTINE =
;========================================================
PARIN: LD (SP_SAV),SP ; SAVE ACCUMULATOR AND FLAGS
LD SP,ISTACK ;
PUSH AF ;
LD A,0FFH ;
LD (PARFLG),A ;
POP AF ; RESTORE ACCUMULATOR AND FLAGS
LD SP,(SP_SAV) ;
EI ;
RETI ;
PAGE
«eof»