diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index db40c88e..c73dff3a 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -598,28 +598,6 @@ INT_IM1: ; JR HBX_INT ; GO TO ROUTING CODE ; #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 ; #IF (INTMODE > 0) @@ -967,6 +945,20 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK LD HL,MSG_HBVER CALL DSKY_SHOWSEG #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 ; @@ -1039,6 +1031,14 @@ HB_CPU1: ; ; PRE-CONSOLE INITIALIZATION ; + +; TEST DEBUG *************************************************************************************** +; + CALL NEWLINE + CALL REGDMP +; +; TEST DEBUG *************************************************************************************** +; #IF (ASCIENABLE) CALL ASCI_PREINIT #ENDIF @@ -1054,15 +1054,48 @@ HB_CPU1: #IF (PIO_4P | PIO_ZP) CALL PIO_PREINIT #ENDIF +; TEST DEBUG *************************************************************************************** +; + CALL NEWLINE + CALL REGDMP +; +; TEST DEBUG *************************************************************************************** ; 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 ; VIA HBIOS. ; XOR A ; INITIALLY, FIRST SERIAL UNIT IS CONSOLE 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 ; @@ -2728,7 +2761,13 @@ SIZ_PIO .EQU $ - ORG_PIO #INCLUDE "time.asm" #INCLUDE "bcd.asm" #INCLUDE "decode.asm" -;#INCLUDE "xio.asm" +; +#IF WBWDEBUG=USEXIO +#INCLUDE "xio.asm" +#ENDIF +#IF WBWDEBUG=USEMIO +#INCLUDE "mio.asm" +#ENDIF ; #IF (DSKYENABLE) #DEFINE DSKY_KBD @@ -3511,7 +3550,7 @@ COUT: LD E,A ; TEMPORARILY STASH OUTPUT CHAR IN E LD A,(CB_CONDEV) ; GET CONSOLE UNIT BYTE 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 LD C,A ; CONSOLE UNIT TO C @@ -3520,9 +3559,15 @@ COUT: JR COUT2 ; CONTINUE ; 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: ; RESTORE ALL REGISTERS @@ -3542,7 +3587,7 @@ CIN: ; LD A,(CB_CONDEV) ; GET CONSOLE UNIT BYTE 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 LD C,A ; CONSOLE UNIT TO C @@ -3552,8 +3597,13 @@ CIN: JR CIN2 ; CONTINUE ; 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: ; @@ -3573,7 +3623,7 @@ CST: ; LD A,(CB_CONDEV) ; GET CONSOLE UNIT BYTE 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 LD C,A ; CONSOLE UNIT TO C @@ -3582,8 +3632,13 @@ CST: JR CST2 ; CONTINUE ; 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: ; RESTORE REGISTERS (AF IS OUTPUT) diff --git a/Source/HBIOS/mio.asm b/Source/HBIOS/mio.asm new file mode 100644 index 00000000..850a6195 --- /dev/null +++ b/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 +; \ No newline at end of file diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 77f9404c..e7822b92 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -27,6 +27,13 @@ FALSE .EQU 0 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 ; PLT_SBC .EQU 1 ; SBC ECB Z80 SBC