From e974a4a9607945e3ca891dae9bb4110db6409801 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Tue, 31 May 2022 21:06:02 +0800 Subject: [PATCH 1/7] Recovery mode message, ay-3-8910 build fix --- Source/Apps/assign.asm | 2 +- Source/HBIOS/ay38910.asm | 8 ++++---- Source/HBIOS/hbios.asm | 12 ++++++++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Source/Apps/assign.asm b/Source/Apps/assign.asm index 258573e8..757859f4 100644 --- a/Source/Apps/assign.asm +++ b/Source/Apps/assign.asm @@ -244,7 +244,7 @@ initcpm3: ; The CP/M 3 drvtbl is in common memory, but the XDPHs are not. ; So, here we temporarily swap the bank to the CP/M 3 system ; bank. We cannot use the CP/M Direct BIOS call because it -; explicitly blocks use of SELMEM, so we are foreced to use +; explicitly blocks use of SELMEM, so we are forced to use ; HBIOS call. The CP/M 3 system bank is always the HBIOS ; user bank. ; diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index 2dde8d29..99743f68 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -534,7 +534,7 @@ AY_EI: AY_WRTPSG: CALL AY_DI #IFDEF SBCV2004 - LD A,(RTCVAL) ; GET CURRENT RTC LATCH VALUE + LD A,(HB_RTCVAL) ; GET CURRENT RTC LATCH VALUE OR %00001000 ; SBC-V2-004 CHANGE OUT (RTCIO),A ; TO HALF CLOCK SPEED #ENDIF @@ -553,7 +553,7 @@ AY_WRTPSG: OUT0 (Z180_DCNTL),A ; AND RESTORE IT #ENDIF #IFDEF SBCV2004 - LD A,(RTCVAL) ; SBC-V2-004 CHANGE TO + LD A,(RTCDEFVAL) ; SBC-V2-004 CHANGE TO OUT (RTCIO),A ; NORMAL CLOCK SPEED #ENDIF JP AY_EI @@ -565,7 +565,7 @@ AY_WRTPSG: AY_RDPSG: CALL AY_DI #IFDEF SBCV2004 - LD A,(RTCVAL) ; GET CURRENT RTC LATCH VALUE + LD A,(HB_RTCVAL) ; GET CURRENT RTC LATCH VALUE OR %00001000 ; SBC-V2-004 CHANGE OUT (RTCIO),A ; TO HALF CLOCK SPEED #ENDIF @@ -584,7 +584,7 @@ AY_RDPSG: OUT0 (Z180_DCNTL),A ; AND RESTORE IT #ENDIF #IFDEF SBCV2004 - LD A,(RTCVAL) ; SBC-V2-004 CHANGE TO + LD A,(RTCDEFVAL) ; SBC-V2-004 CHANGE TO OUT (RTCIO),A ; NORMAL CLOCK SPEED #ENDIF JP AY_EI diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 8fcc5a53..ea2846ab 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2284,6 +2284,18 @@ NXTMIO: LD A,(HL) CALL PRTSTRD .TEXT "HBIOS MUTEX ENABLED$" #ENDIF +; +; DISPLAY RECOVERY MODE MESSAGE +; +#IF (BT_REC_TYPE != BT_REC_NONE) + LD A,(HB_BOOT_REC) ; IF WE ARE IN RECOVERY MODE + OR A ; DISPLAY RECOVERY MODE MESSAGE + JR Z,NOT_REC_M2 + CALL NEWLINE + CALL PRTSTRD + .TEXT "RECOVERY MODE$" +#ENDIF +NOT_REC_M2: ; DIAG(%11111111) ; From c1412ee755c61fab0422a68164337c6ceb2f8dae Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Wed, 1 Jun 2022 19:19:56 +0800 Subject: [PATCH 2/7] Fix boot failure with three sound devices --- Source/HBIOS/hbios.asm | 4 ++-- Source/HBIOS/sn76489.asm | 9 +++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index ea2846ab..64e43c83 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -3695,7 +3695,7 @@ SND_ADDENT: ; WORD UNIT SPECIFIC DATA (TYPICALLY A DEVICE INSTANCE DATA ADDRESS) ; SND_FNCNT .EQU 8 ; NUMBER OF SND FUNCS (FOR RANGE CHECK) -SND_MAX .EQU 3 ; UP TO 2 UNITS +SND_MAX .EQU 4 ; UP TO 3 UNITS SND_SIZ .EQU SND_MAX * 4 ; EACH ENTRY IS 4 BYTES ; .DB SND_FNCNT ; SND FUNCTION COUNT (FOR RANGE CHECK) @@ -5230,7 +5230,7 @@ HB_ADDENT: ; ALL OTHER REGISTERS PRESERVED ; ; A 4 BYTE HEADER IS PLACED IN FRONT OF THE ALLOCATED MEMORY -; - DWORD: SIZE OF MEMROY ALLOCATED (DOES NOT INCLUDE 4 BYTE HEADER) +; - DWORD: SIZE OF MEMORY ALLOCATED (DOES NOT INCLUDE 4 BYTE HEADER) ; - DWORD: ADDRESS WHERE ALLOC WAS CALLED (VALUE ON TOP OF STACK AT CALL) ; HB_ALLOC: diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index e7aa315b..60cb1ca8 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -43,6 +43,9 @@ SN7RATIO .EQU SN7CLK * 100 / 32 SN76489_INIT: LD IY, SN7_IDAT ; POINTER TO INSTANCE DATA + LD BC, SN7_FNTBL ; BC := FUNCTION TABLE ADDRESS + LD DE, SN7_IDAT ; DE := SN7 INSTANCE DATA PTR + CALL SND_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED LD DE,STR_MESSAGELT CALL WRITESTR @@ -53,11 +56,6 @@ SN76489_INIT: CALL WRITESTR LD A, SN76489_PORT_RIGHT CALL PRTHEXBYTE -; -SN7_INIT1: - LD BC, SN7_FNTBL ; BC := FUNCTION TABLE ADDRESS - LD DE, SN7_IDAT ; DE := SN7 INSTANCE DATA PTR - CALL SND_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED CALL SN7_VOLUME_OFF XOR A ; SIGNAL SUCCESS @@ -67,7 +65,6 @@ SN7_INIT1: ; SN76489 DRIVER - SOUND ADAPTER (SND) FUNCTIONS ;====================================================================== ; - SN7_RESET: AUDTRACE(SNT_INIT) CALL SN7_VOLUME_OFF From 719c993a60edae51dcd08b55cb5d5f047f0c7cfb Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Fri, 17 Jun 2022 18:30:35 +0800 Subject: [PATCH 3/7] MBC6502 support in dbgmon Add an option in the monitor to switch to MBC6502. Excluded by default. --- Source/HBIOS/dbgmon.asm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Source/HBIOS/dbgmon.asm b/Source/HBIOS/dbgmon.asm index 7467519f..1dbd5067 100644 --- a/Source/HBIOS/dbgmon.asm +++ b/Source/HBIOS/dbgmon.asm @@ -38,6 +38,8 @@ ENA_XM .EQU FALSE ; NO ROOM FOR BOTH DSKY+XMODEM ENA_XM .EQU TRUE ; INCLUDE XMODEM IF SPACE AVAILABLE #ENDIF ; +ENA_MBC6502 .EQU FALSE ; ENABLE OR DISABLE MBC6502 OPTION +; #INCLUDE "util.asm" ; ;__UART_ENTRY_________________________________________________________________ @@ -69,6 +71,7 @@ UART_ENTRY: ; R XXXX - RUN A PROGRAM AT ADDRESS XXXX ; S XX - SET ACTIVE BANK TO XX ; T XXXX - X-MODEM TRANSFER TO MEMORY LOCATION XXXX +; 6 XX - TRANSFER CONTROL TO MBC6502 UNIT XX ; X - EXIT MONITOR ; ;__COMMAND_PARSE______________________________________________________________ @@ -126,6 +129,10 @@ SERIALCMDLOOP: #IF (BIOS == BIOS_WBW) CP 'S' ; IS IT A "S" (Y/N) JP Z,SETBNK ; SET BANK COMMAND +#ENDIF +#IF ((PLATFORM = PLT_MBC) & ENA_MBC6502) + CP '6' ; IS IT A "6" (Y/N) + JP Z,MBC6502 ; TRANSFER TO MBC6502 COMMAND #ENDIF CP 'X' ; IS IT A "X" (Y/N) JP Z,EXIT ; EXIT COMMAND @@ -769,6 +776,28 @@ HELP: CALL PRTSTR ; DISPLAY IT JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP ; +;__MBC6502____________________________________________________________________ +; +; TRANSFER CONTROL TO MBC6502 +;_____________________________________________________________________________ +; +; +#IF ((PLATFORM = PLT_MBC) & ENA_MBC6502) +MBC6502: + CALL BYTEPARM ; GET BYTE VALUE (FILL VALUE) INTO A + CPL ; UNIT 0 = FFH, 1 = FEH ETC + LD C,A +; + IN A,(C) ; EXECUTE + NOP ; TRANSFER +; + LD A,($FFE0) ; GET PREVIOUS BANK + OUT (MPCL_RAM),A ; SET RAM PAGE SELECTOR + OUT (MPCL_ROM),A ; SET ROM PAGE SELECTOR +; + JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP +#ENDIF +; ;__ERR________________________________________________________________________ ; ; SYNTAX ERROR @@ -1208,6 +1237,9 @@ TXT_HELP .TEXT "\r\nMonitor Commands (all values in hex):" .TEXT "\r\nS xx - Set bank to xx" #IF (ENA_XM) .TEXT "\r\nT xxxx - X-modem transfer to memory location xxxx" +#ENDIF +#IF ((PLATFORM == PLT_MBC) & ENA_MBC6502) + .TEXT "\r\n6 xx - Transfer control to MBC6502 unit xx" #ENDIF .TEXT "\r\nX - Exit monitor" .TEXT "$" From 526a1a5d33171a7a863bddc4483627fb5343101c Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Fri, 17 Jun 2022 18:35:46 +0800 Subject: [PATCH 4/7] Fixup restore of rtcval in ay-3-8910 driver --- Source/HBIOS/ay38910.asm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index 99743f68..91477135 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -553,7 +553,7 @@ AY_WRTPSG: OUT0 (Z180_DCNTL),A ; AND RESTORE IT #ENDIF #IFDEF SBCV2004 - LD A,(RTCDEFVAL) ; SBC-V2-004 CHANGE TO + LD A,(HB_RTCDEFVAL) ; SBC-V2-004 CHANGE TO OUT (RTCIO),A ; NORMAL CLOCK SPEED #ENDIF JP AY_EI @@ -584,7 +584,7 @@ AY_RDPSG: OUT0 (Z180_DCNTL),A ; AND RESTORE IT #ENDIF #IFDEF SBCV2004 - LD A,(RTCDEFVAL) ; SBC-V2-004 CHANGE TO + LD A,(HB_RTCDEFVAL) ; SBC-V2-004 CHANGE TO OUT (RTCIO),A ; NORMAL CLOCK SPEED #ENDIF JP AY_EI From fe19472a2c344e6113cc50b60e68cf5ea07a1e66 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Fri, 17 Jun 2022 18:39:18 +0800 Subject: [PATCH 5/7] Fixup restore of rtcval in ay-3-8910 driver --- Source/HBIOS/ay38910.asm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index 91477135..1d596dbd 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -553,7 +553,7 @@ AY_WRTPSG: OUT0 (Z180_DCNTL),A ; AND RESTORE IT #ENDIF #IFDEF SBCV2004 - LD A,(HB_RTCDEFVAL) ; SBC-V2-004 CHANGE TO + LD A,(HB_RTCVAL) ; SBC-V2-004 CHANGE TO OUT (RTCIO),A ; NORMAL CLOCK SPEED #ENDIF JP AY_EI @@ -584,7 +584,7 @@ AY_RDPSG: OUT0 (Z180_DCNTL),A ; AND RESTORE IT #ENDIF #IFDEF SBCV2004 - LD A,(HB_RTCDEFVAL) ; SBC-V2-004 CHANGE TO + LD A,(HB_RTCVAL) ; SBC-V2-004 CHANGE TO OUT (RTCIO),A ; NORMAL CLOCK SPEED #ENDIF JP AY_EI From eb255e7016f6cd5a2a561748fdbdf8b38836510d Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Fri, 17 Jun 2022 21:37:23 +0800 Subject: [PATCH 6/7] Add bank unset. Fix xmodem transfer bios call --- Source/HBIOS/dbgmon.asm | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/Source/HBIOS/dbgmon.asm b/Source/HBIOS/dbgmon.asm index 1dbd5067..f5d360ef 100644 --- a/Source/HBIOS/dbgmon.asm +++ b/Source/HBIOS/dbgmon.asm @@ -38,7 +38,7 @@ ENA_XM .EQU FALSE ; NO ROOM FOR BOTH DSKY+XMODEM ENA_XM .EQU TRUE ; INCLUDE XMODEM IF SPACE AVAILABLE #ENDIF ; -ENA_MBC6502 .EQU FALSE ; ENABLE OR DISABLE MBC6502 OPTION +ENA_MBC6502 .EQU TRUE ; ENABLE OR DISABLE MBC6502 OPTION ; #INCLUDE "util.asm" ; @@ -71,6 +71,7 @@ UART_ENTRY: ; R XXXX - RUN A PROGRAM AT ADDRESS XXXX ; S XX - SET ACTIVE BANK TO XX ; T XXXX - X-MODEM TRANSFER TO MEMORY LOCATION XXXX +; U - SET BANK TO PREVIOUS BANK ; 6 XX - TRANSFER CONTROL TO MBC6502 UNIT XX ; X - EXIT MONITOR ; @@ -129,6 +130,8 @@ SERIALCMDLOOP: #IF (BIOS == BIOS_WBW) CP 'S' ; IS IT A "S" (Y/N) JP Z,SETBNK ; SET BANK COMMAND + CP 'U' ; IS IT A "U" (Y/N) + JP Z,UNSETBNK ; UNSET (REVERT) BANK COMMAND #ENDIF #IF ((PLATFORM = PLT_MBC) & ENA_MBC6502) CP '6' ; IS IT A "6" (Y/N) @@ -225,6 +228,8 @@ SETBNK: LD HL,TXT_IMERR CALL PRTSTR #ELSE + LD A,($FFE0) ; GET AND SAVE + LD (BNKSAV),A ; CURRENT BANK CALL BYTEPARM ; GET BANK NUMBER JP C,ERR ; HANDLE DATA ENTRY ERROR LD C,A ; PUT IN C FOR FOR FUNC CALL @@ -233,6 +238,25 @@ SETBNK: #ENDIF JP SERIALCMDLOOP ; NEXT COMMAND ; +;__UNSETBNK___________________________________________________________________ +; +; PERFORM UNSET BANK ACTION - REVERT TO BANK BEFORE PREVIOUS SET +;_____________________________________________________________________________ +; +UNSETBNK: +#IF (INTMODE == 1) + LD HL,TXT_IMERR + CALL PRTSTR +#ELSE + LD A,(BNKSAV) + LD C,A ; PUT IN C FOR FOR FUNC CALL + LD B,BF_SYSSETBNK ; SET BANK FUNCTION + CALL $FFF0 ; C HAS BANK, DO IT +#ENDIF + JP SERIALCMDLOOP ; NEXT COMMAND +; +BNKSAV .DB 00H ; OLD BANK FROM BEFORE SET +; #ENDIF ; ;__RUN________________________________________________________________________ @@ -365,7 +389,8 @@ XMLOAD: CALL WORDPARM ; GET STARTING LOCATION CALL NEWLINE ; LD BC,$F8F0 ; GET CPU SPEED - RST 08 ; AND MULTIPLY + CALL $FFF0 ; CALL HBIOS +; RST 08 ; AND MULTIPLY LD A,L ; BY 4 PUSH AF ADD A,A ; TO CREATE @@ -1234,7 +1259,10 @@ TXT_HELP .TEXT "\r\nMonitor Commands (all values in hex):" .TEXT "\r\nP xxxx - Program RAM at address xxxx" .TEXT "\r\nR xxxx [[yy] [zzzz]] - Run code at address xxxx" .TEXT "\r\n Pass yy and zzzz to register A and BC" +#IF (BIOS == BIOS_WBW) .TEXT "\r\nS xx - Set bank to xx" + .TEXT "\r\nU - Set bank to previous bank" +#ENDIF #IF (ENA_XM) .TEXT "\r\nT xxxx - X-modem transfer to memory location xxxx" #ENDIF From 691842c1bc57058dca2441ad4d4152f1e7d64886 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Fri, 17 Jun 2022 21:49:08 +0800 Subject: [PATCH 7/7] Fix default --- Source/HBIOS/dbgmon.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/HBIOS/dbgmon.asm b/Source/HBIOS/dbgmon.asm index f5d360ef..fde7110b 100644 --- a/Source/HBIOS/dbgmon.asm +++ b/Source/HBIOS/dbgmon.asm @@ -38,7 +38,7 @@ ENA_XM .EQU FALSE ; NO ROOM FOR BOTH DSKY+XMODEM ENA_XM .EQU TRUE ; INCLUDE XMODEM IF SPACE AVAILABLE #ENDIF ; -ENA_MBC6502 .EQU TRUE ; ENABLE OR DISABLE MBC6502 OPTION +ENA_MBC6502 .EQU FALSE ; ENABLE OR DISABLE MBC6502 OPTION ; #INCLUDE "util.asm" ;