Browse Source

Move KIO Support to Dedicated Module

pull/201/head
Wayne Warthen 5 years ago
parent
commit
226c24d666
  1. 14
      Source/HBIOS/hbios.asm
  2. 92
      Source/HBIOS/kio.asm
  3. 2
      Source/ver.inc
  4. 2
      Source/ver.lib

14
Source/HBIOS/hbios.asm

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

@ -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
Source/ver.inc

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

2
Source/ver.lib

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

Loading…
Cancel
Save