mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Move KIO Support to Dedicated Module
This commit is contained in:
@@ -1588,8 +1588,7 @@ HB_CPU2:
|
||||
#ENDIF
|
||||
;
|
||||
#IF (KIOENABLE)
|
||||
LD A,%11111001 ; RESET ALL DEVICES, SET DAISYCHAIN
|
||||
OUT (KIOBASE+$0E),A ; DO IT
|
||||
CALL KIO_PREINIT
|
||||
#ENDIF
|
||||
;
|
||||
#IF (CTCENABLE)
|
||||
@@ -2239,6 +2238,9 @@ HB_PCINITTBLLEN .EQU (($ - HB_PCINITTBL) / 2)
|
||||
;==================================================================================================
|
||||
;
|
||||
HB_INITTBL:
|
||||
#IF (KIOENABLE)
|
||||
.DW KIO_INIT
|
||||
#ENDIF
|
||||
#IF (CTCENABLE)
|
||||
.DW CTC_INIT
|
||||
#ENDIF
|
||||
@@ -4794,6 +4796,14 @@ SIZ_UF .EQU $ - ORG_UF
|
||||
.ECHO SIZ_UF
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
#IF (KIOENABLE)
|
||||
ORG_KIO .EQU $
|
||||
#INCLUDE "kio.asm"
|
||||
SIZ_KIO .EQU $ - ORG_KIO
|
||||
.ECHO "KIO occupies "
|
||||
.ECHO SIZ_KIO
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
#IF (CTCENABLE)
|
||||
ORG_CTC .EQU $
|
||||
#INCLUDE "ctc.asm"
|
||||
|
||||
92
Source/HBIOS/kio.asm
Normal file
92
Source/HBIOS/kio.asm
Normal file
@@ -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
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 1
|
||||
#DEFINE RUP 1
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.1.1-pre.80"
|
||||
#DEFINE BIOSVER "3.1.1-pre.81"
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 1
|
||||
rup equ 1
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.1.1-pre.80"
|
||||
db "3.1.1-pre.81"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user