Move KIO Support to Dedicated Module

This commit is contained in:
Wayne Warthen
2021-06-09 20:01:31 -07:00
parent 8e4ea799af
commit 226c24d666
4 changed files with 106 additions and 4 deletions

View File

@@ -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
View 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

View File

@@ -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"

View File

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