mirror of https://github.com/wwarthen/RomWBW.git
4 changed files with 106 additions and 4 deletions
@ -0,0 +1,92 @@ |
|||
;___KIO________________________________________________________________________________________________________________ |
|||
; |
|||
; Z80 KIO |
|||
; |
|||
; DISPLAY CONFIGURATION DETAILS |
|||
;______________________________________________________________________________________________________________________ |
|||
; |
|||
; |
|||
; |
|||
KIO_PIOADAT .EQU KIOBASE + $00 |
|||
KIO_PIOACMD .EQU KIOBASE + $01 |
|||
KIO_PIOBDAT .EQU KIOBASE + $02 |
|||
KIO_PIOBCMD .EQU KIOBASE + $03 |
|||
KIO_CTC0 .EQU KIOBASE + $04 |
|||
KIO_CTC1 .EQU KIOBASE + $05 |
|||
KIO_CTC2 .EQU KIOBASE + $06 |
|||
KIO_CTC3 .EQU KIOBASE + $07 |
|||
KIO_SIOADAT .EQU KIOBASE + $08 |
|||
KIO_SIOACMD .EQU KIOBASE + $09 |
|||
KIO_SIOBDAT .EQU KIOBASE + $0A |
|||
KIO_SIOBCMD .EQU KIOBASE + $0B |
|||
KIO_PIACDAT .EQU KIOBASE + $0C |
|||
KIO_PIACCMD .EQU KIOBASE + $0D |
|||
KIO_KIOCMD .EQU KIOBASE + $0E |
|||
KIO_KIOCMDB .EQU KIOBASE + $0F |
|||
; |
|||
; |
|||
; |
|||
KIO_PREINIT: |
|||
CALL KIO_DETECT |
|||
RET NZ |
|||
; |
|||
; RECORD PRESENCE |
|||
LD A,$FF |
|||
LD (KIO_EXISTS),A |
|||
; INITIALIZE KIO |
|||
LD A,%11111001 ; RESET ALL DEVICES, SET DAISYCHAIN |
|||
OUT (KIO_KIOCMD),A ; DO IT |
|||
; |
|||
XOR A |
|||
RET |
|||
; |
|||
; |
|||
; |
|||
KIO_INIT: |
|||
; ANNOUNCE PORT |
|||
CALL NEWLINE ; FORMATTING |
|||
PRTS("KIO:$") ; FORMATTING |
|||
; |
|||
PRTS(" IO=0x$") ; FORMATTING |
|||
LD A,KIOBASE ; GET BASE PORT |
|||
CALL PRTHEXBYTE ; PRINT BASE PORT |
|||
; |
|||
LD A,(KIO_EXISTS) |
|||
OR A |
|||
JR Z,KIO_INIT2 |
|||
; |
|||
PRTS(" ENABLED$") ; DISPLAY ENABLED |
|||
XOR A ; SIGNAL SUCCESS |
|||
RET ; DONE |
|||
; |
|||
KIO_INIT2: |
|||
PRTS(" NOT PRESENT$") ; NOT ZERO, H/W NOT PRESENT |
|||
OR $FF ; SIGNAL FAILURE |
|||
RET ; BAIL OUT |
|||
; |
|||
; |
|||
; |
|||
KIO_DETECT: |
|||
LD C,KIO_SIOBCMD ; USE SIOB COMMAND PORT |
|||
LD B,2 ; SIO REG 2 |
|||
; |
|||
OUT (C),B |
|||
XOR A ; ZERO |
|||
OUT (C),A ; WRITE IT |
|||
OUT (C),B |
|||
IN A,(C) |
|||
AND $F0 ; TOP NIBBLE ONLY |
|||
RET NZ ; FAIL IF NOT ZERO |
|||
; |
|||
OUT (C),B |
|||
LD A,$FF ; $FF |
|||
OUT (C),A ; WRITE IT |
|||
OUT (C),B |
|||
IN A,(C) |
|||
AND $F0 ; TOP NIBBLE ONLY |
|||
CP $F0 ; COMPARE |
|||
RET ; DONE, Z IF FOUND, NZ IF MISCOMPARE |
|||
; |
|||
; |
|||
; |
|||
KIO_EXISTS .DB 0 |
|||
Loading…
Reference in new issue