Browse Source

Add debugging module mio

Cached debug out
pull/34/head
b1ackmai1er 7 years ago
parent
commit
c39c27009b
  1. 123
      Source/HBIOS/hbios.asm
  2. 49
      Source/HBIOS/mio.asm
  3. 7
      Source/HBIOS/std.asm

123
Source/HBIOS/hbios.asm

@ -598,28 +598,6 @@ INT_IM1:
; JR HBX_INT ; GO TO ROUTING CODE ; JR HBX_INT ; GO TO ROUTING CODE
; #ENDIF ; #ENDIF
;; ;;
;#IF (PIO_ZP)
;INT_ZP0: ; PIO INTERRUPT HANDLER
; PUSH HL ; SAVE HL
; LD HL,PIO0INT ; HL := PIO INT HANDLER IN BIOS BANK
; JR HBX_INT ; GO TO ROUTING CODE
;INT_ZP1
; PUSH HL ; SAVE HL
; LD HL,PIO1INT ; HL := PIO INT HANDLER IN BIOS BANK
; JR HBX_INT ; GO TO ROUTING CODE
;#ENDIF
;;
;#IF (PIO_4P)
;INT_4P0: ; PIO INTERRUPT HANDLER
; PUSH HL ; SAVE HL
; LD HL,PIO2INT ; HL := PIO INT HANDLER IN BIOS BANK
; JR HBX_INT ; GO TO ROUTING CODE
;INT_4P1:
; PUSH HL ; SAVE HL
; LD HL,PIO3INT ; HL := PIO INT HANDLER IN BIOS BANK
; JR HBX_INT ; GO TO ROUTING CODE
;#ENDIF
;;
;#ENDIF ;#ENDIF
; ;
#IF (INTMODE > 0) #IF (INTMODE > 0)
@ -967,6 +945,20 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK
LD HL,MSG_HBVER LD HL,MSG_HBVER
CALL DSKY_SHOWSEG CALL DSKY_SHOWSEG
#ENDIF #ENDIF
#IF (WBWDEBUG=USEMIO) ; BUFFER OUTPUT UNTIL
CALL MIO_INIT ; WE GET TO BOOT MESSAGE
#ENDIF
;
; TEST DEBUG ***************************************************************************************
;
PRTS("DEBUG-IVT$")
LD DE,HB_IVT
CALL DUMP_BUFFER
CALL NEWLINE
;
; TEST DEBUG ***************************************************************************************
;
; ;
; DISCOVER CPU TYPE ; DISCOVER CPU TYPE
; ;
@ -1039,6 +1031,14 @@ HB_CPU1:
; ;
; PRE-CONSOLE INITIALIZATION ; PRE-CONSOLE INITIALIZATION
; ;
; TEST DEBUG ***************************************************************************************
;
CALL NEWLINE
CALL REGDMP
;
; TEST DEBUG ***************************************************************************************
;
#IF (ASCIENABLE) #IF (ASCIENABLE)
CALL ASCI_PREINIT CALL ASCI_PREINIT
#ENDIF #ENDIF
@ -1054,15 +1054,48 @@ HB_CPU1:
#IF (PIO_4P | PIO_ZP) #IF (PIO_4P | PIO_ZP)
CALL PIO_PREINIT CALL PIO_PREINIT
#ENDIF #ENDIF
; TEST DEBUG ***************************************************************************************
;
CALL NEWLINE
CALL REGDMP
;
; TEST DEBUG ***************************************************************************************
; ;
DIAG(%01111111) DIAG(%01111111)
; ;
; PRIOR TO THIS POINT, CONSOLE I/O WAS DIRECTED TO HARDWARE (XIO.ASM).
; PRIOR TO THIS POINT, CONSOLE I/O WAS NOT AVAILABLE UNLESS DIRECTED TO DEBUG OUTPUT I.E. XIO
; NOW THAT HBIOS IS READY, SET THE CONSOLE UNIT TO ACTIVATE CONSOLE I/O ; NOW THAT HBIOS IS READY, SET THE CONSOLE UNIT TO ACTIVATE CONSOLE I/O
; VIA HBIOS. ; VIA HBIOS.
; ;
XOR A ; INITIALLY, FIRST SERIAL UNIT IS CONSOLE XOR A ; INITIALLY, FIRST SERIAL UNIT IS CONSOLE
LD (CB_CONDEV),A ; SAVE IT, ACTIVATES CONSOLE ON HBIOS LD (CB_CONDEV),A ; SAVE IT, ACTIVATES CONSOLE ON HBIOS
#IF (WBWDEBUG=USEMIO) ; OUTPUT ANY CACHED DEBUG TEXT
LD HL,MIOOUTPTR
LD E,(HL)
INC HL
LD D,(HL)
INC HL
NXTMIO: LD A,(HL)
CALL COUT
INC HL
LD A,L
CP E
JR NZ,NXTMIO
LD A,H
CP D
JR NZ,NXTMIO
; CALL WRITESTR ; WRITESTR WILL WORK WILL ONLY PRINT UP TO FIRST $
#ENDIF
;
; TEST DEBUG ***************************************************************************************
;
CALL NEWLINE2
PRTS("DEBUG+IVT$")
LD DE,HB_IVT
CALL DUMP_BUFFER
;
; TEST DEBUG ***************************************************************************************
; ;
; ANNOUNCE HBIOS ; ANNOUNCE HBIOS
; ;
@ -2712,7 +2745,13 @@ SIZ_PIO .EQU $ - ORG_PIO
#INCLUDE "time.asm" #INCLUDE "time.asm"
#INCLUDE "bcd.asm" #INCLUDE "bcd.asm"
#INCLUDE "decode.asm" #INCLUDE "decode.asm"
;#INCLUDE "xio.asm"
;
#IF WBWDEBUG=USEXIO
#INCLUDE "xio.asm"
#ENDIF
#IF WBWDEBUG=USEMIO
#INCLUDE "mio.asm"
#ENDIF
; ;
#IF (DSKYENABLE) #IF (DSKYENABLE)
#DEFINE DSKY_KBD #DEFINE DSKY_KBD
@ -3495,7 +3534,7 @@ COUT:
LD E,A ; TEMPORARILY STASH OUTPUT CHAR IN E LD E,A ; TEMPORARILY STASH OUTPUT CHAR IN E
LD A,(CB_CONDEV) ; GET CONSOLE UNIT BYTE LD A,(CB_CONDEV) ; GET CONSOLE UNIT BYTE
CP $FF ; TEST FOR $FF (HBIOS NOT READY) CP $FF ; TEST FOR $FF (HBIOS NOT READY)
JR Z,COUT1 ; IF NOT READY, USE XIO
JR Z,COUT1 ; IF NOT READY, TRY DEBUG OUTPUT
; ;
; USE HBIOS ; USE HBIOS
LD C,A ; CONSOLE UNIT TO C LD C,A ; CONSOLE UNIT TO C
@ -3504,9 +3543,15 @@ COUT:
JR COUT2 ; CONTINUE JR COUT2 ; CONTINUE
; ;
COUT1: COUT1:
;; USE XIO
;LD A,E ; GET OUTPUT CHAR BACK TO ACCUM
;CALL XIO_OUTC ; OUTPUT VIA XIO
;
#IF WBWDEBUG=USEXIO
LD A,E ; GET OUTPUT CHAR BACK TO ACCUM
CALL XIO_OUTC ; OUTPUT VIA XIO
#ENDIF
#IF WBWDEBUG=USEMIO
LD A,E
CALL MIO_OUTC ; OUTPUT VIA MIO
#ENDIF
; ;
COUT2: COUT2:
; RESTORE ALL REGISTERS ; RESTORE ALL REGISTERS
@ -3526,7 +3571,7 @@ CIN:
; ;
LD A,(CB_CONDEV) ; GET CONSOLE UNIT BYTE LD A,(CB_CONDEV) ; GET CONSOLE UNIT BYTE
CP $FF ; TEST FOR $FF (HBIOS NOT READY) CP $FF ; TEST FOR $FF (HBIOS NOT READY)
JR Z,CIN1 ; IF NOT READY, USE XIO
JR Z,CIN1 ; IF NOT READY, TRY DEBUG INPUT
; ;
; USE HBIOS ; USE HBIOS
LD C,A ; CONSOLE UNIT TO C LD C,A ; CONSOLE UNIT TO C
@ -3536,8 +3581,13 @@ CIN:
JR CIN2 ; CONTINUE JR CIN2 ; CONTINUE
; ;
CIN1: CIN1:
;; USE XIO
;CALL XIO_INC ; GET CHAR
;
#IF WBWDEBUG=USEXIO
CALL XIO_INC ; GET CHAR
#ENDIF
#IF WBWDEBUG=USEMIO
CALL MIO_INC ; GET CHAR
#ENDIF
; ;
CIN2: CIN2:
; ;
@ -3557,7 +3607,7 @@ CST:
; ;
LD A,(CB_CONDEV) ; GET CONSOLE UNIT BYTE LD A,(CB_CONDEV) ; GET CONSOLE UNIT BYTE
CP $FF ; TEST FOR $FF (HBIOS NOT READY) CP $FF ; TEST FOR $FF (HBIOS NOT READY)
JR Z,CST1 ; IF NOT READY, USE XIO
JR Z,CST1 ; IIF NOT READY, TRY DEBUG DEBUG STATUS
; ;
; USE HBIOS ; USE HBIOS
LD C,A ; CONSOLE UNIT TO C LD C,A ; CONSOLE UNIT TO C
@ -3566,8 +3616,13 @@ CST:
JR CST2 ; CONTINUE JR CST2 ; CONTINUE
; ;
CST1: CST1:
;; USE XIO
;CALL XIO_IST ; GET STATUS
;
#IF WBWDEBUG=USEXIO
CALL XIO_IST ; GET STATUS
#ENDIF
#IF WBWDEBUG=USEMIO
CALL MIO_IST ; GET STATUS
#ENDIF
; ;
CST2: CST2:
; RESTORE REGISTERS (AF IS OUTPUT) ; RESTORE REGISTERS (AF IS OUTPUT)

49
Source/HBIOS/mio.asm

@ -0,0 +1,49 @@
;___MIO________________________________________________________________________________________________________________
;
; MEMORY MAPPED I/O
;
; PROVIDES AN INTERFACE TO BUFFER OUTPUT FROM PRE-INITIALIZATION
; FUNCTIONS PRIOR TO OTHER OUTPUT METHODS BEING AVAILABLE
;______________________________________________________________________________________________________________________
;
; $ CODE NOT STRICTLY REQUIRED.
;
MIOOUTPTR .EQU BNKTOP
;
MIO_INIT: ; MINIMAL INIT
PUSH HL
LD HL,MIOOUTPTR+2
LD (MIOOUTPTR),HL
LD (HL),'$'
POP HL
RET
;
MIO_OUTC: ; OUTPUT BYTE IN A
PUSH HL
PUSH DE
LD HL,MIOOUTPTR
LD E,(HL)
INC HL
LD D,(HL)
LD H,D
LD L,E
LD (HL),A
INC HL
LD (MIOOUTPTR),HL
LD (HL),'$'
POP DE
POP HL
RET
;
; NOT USED AT THE MOMENT
;
MIO_INC: ; INPUT BYTE TO A
LD A,'$'
RET
;
;
MIO_IST: ; INPUT STATUS TO A (NUM CHARS WAITING)
LD A,1
OR A
RET ; DONE
;

7
Source/HBIOS/std.asm

@ -27,6 +27,13 @@
FALSE .EQU 0 FALSE .EQU 0
TRUE .EQU ~FALSE TRUE .EQU ~FALSE
; ;
; DEBUGGNG OPTIONS
;
USENONE .EQU 0 ; NO DEBUG
USEXIO .EQU 1 ; BASIC SERIAL DRIVER
USEMIO .EQU 2 ; MEMORY BUFFER DRIVER
WBWDEBUG .EQU USENONE
;
; PRIMARY HARDWARE PLATFORMS ; PRIMARY HARDWARE PLATFORMS
; ;
PLT_SBC .EQU 1 ; SBC ECB Z80 SBC PLT_SBC .EQU 1 ; SBC ECB Z80 SBC

Loading…
Cancel
Save