|
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 - 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»