From eb255e7016f6cd5a2a561748fdbdf8b38836510d Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Fri, 17 Jun 2022 21:37:23 +0800 Subject: [PATCH] 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