From 3a020341cb983498fd43a6df0d7820de910be3d1 Mon Sep 17 00:00:00 2001 From: b1ackmai1er <39449559+b1ackmai1er@users.noreply.github.com> Date: Sat, 23 May 2020 23:56:04 +0800 Subject: [PATCH] Update cbios.asm --- Source/CBIOS/cbios.asm | 68 ++++++++---------------------------------- 1 file changed, 13 insertions(+), 55 deletions(-) diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index 6d2c1a9b..162f7645 100644 --- a/Source/CBIOS/cbios.asm +++ b/Source/CBIOS/cbios.asm @@ -300,7 +300,8 @@ DPBCNT .EQU ($ - DPBMAP) / 2 ;__________________________________________________________________________________________________ BOOT: ; STANDARD BOOT INVOCATION - LD SP,STACK ; STACK FOR INITIALIZATION + ;LD SP,STACK ; STACK FOR INITIALIZATION + LD SP,CCP_LOC ; PUT STACK JUST BELOW CCP ; ; COPY INITIALIZATION CODE TO RUNNING LOCATION $8000 LD HL,BUFPOOL @@ -328,17 +329,17 @@ BOOT: ; ;__________________________________________________________________________________________________ REBOOT: - ; REBOOT FROM ROM, REPLACES BOOT AFTER INIT + ; RESTART, REPLACES BOOT AFTER INIT #IFDEF PLTUNA + ; FOR UNA, COLD BOOT DI ; NO INTERRUPTS LD BC,$01FB ; UNA FUNC = SET BANK LD DE,0 ; ROM BOOT BANK CALL $FFFD ; DO IT (RST 08 NOT SAFE HERE) #ENDIF +; #IFDEF PLTWBW - ;DI ; NO INTERRUPTS - ;LD A,0 ; ROM BOOT BANK - ;CALL HB_BNKSEL ; SELECT IT INTO LOW MEMORY + ; WARM START LD B,BF_SYSRESET ; SYSTEM RESTART LD C,BF_SYSRES_WARM ; WARM START CALL $FFF0 ; CALL HBIOS @@ -401,23 +402,13 @@ RESCPM: LD HL,WBOOTE ; GET WARM BOOT ENTRY ADDRESS LD ($0001),HL ; AND PUT IT AT $0001 -; ; INT / RST 38 -> INVOKE MONITOR -; LD ($0038),A -; LD HL,GOMON -; LD ($0039),HL - -; ; INT / RST 38 -> PANIC -; LD ($0038),A -; LD HL,PANIC ; PANIC ROUTINE ADDRESS -; LD ($0039),HL ; POKE IT - ; CALL 5 -> INVOKE BDOS LD ($0005),A ; JP OPCODE AT $0005 LD HL,BDOS_LOC + 6 ; GET BDOS ENTRY ADDRESS LD ($0006),HL ; PUT IT AT $0006 ; ; INSTALL ROMWBW CBIOS PAGE ZERO STAMP AT $40 - LD HL,STPIMG ; FORM STAMP DATA IMAGE + LD HL,STPIMG ; FROM STAMP DATA IMAGE LD DE,STPLOC ; TO IT'S LOCATION IN PAGE ZERO LD BC,STPSIZ ; SIZE OF BLOCK TO COPY LDIR ; DO IT @@ -448,26 +439,6 @@ GOCCP: LD C,A ; SETUP C WITH CURRENT USER/DISK, ASSUME IT IS OK JP CCP_LOC ; JUMP TO COMMAND PROCESSOR ; -;__________________________________________________________________________________________________ -GOMON: - CALL PANIC -; -; DI -; IM 1 -; -; LD SP,STACK -; -; ; RELOAD MONITOR INTO RAM (IN CASE IT HAS BEEN OVERWRITTEN) -; CALL ROMPGZ -; LD HL,MON_IMG -; LD DE,MON_LOC -; LD BC,MON_SIZ -; LDIR -; CALL RAMPGZ - -; ; JUMP TO MONITOR WARM ENTRY -; JP MON_UART -; ; ;================================================================================================== ; CHARACTER BIOS FUNCTIONS @@ -1360,27 +1331,14 @@ DSK_MBR: DSK_MBR0: ; #IFDEF PLTWBW - ; SWITCH TO BIOS BANK TO ACCESS DISK BUFFER + ; ACTIVATE BIOS BANK TO ACCESS DISK BUFFER LD (STKSAV),SP ; SAVE CUR STACK - LD SP,XSTACK ; NEW STACK IN HI MEM - LD A,(HB_CURBNK) ; GET CUR BANK - PUSH AF ; SAVE CUR BANK - LD A,(BNKBIOS) ; BIOS BANK - CALL HB_BNKSEL ; DO IT - CALL DSK_MBR1 ; DO THE WORK - ; RESTORE BANK - PUSH AF ; SAVE RESULT - POP HL ; TO HL - EX (SP),HL ; RESULT TO TOS, PREV BANK TO H - LD A,H ; PREV BANK TO A - CALL HB_BNKSEL ; SELECT IT - POP AF ; ORIGINAL RESULT BACK + LD SP,STACK ; NEW STACK IN HI MEM + LD A,(BNKBIOS) ; ACTIVATE HBIOS BANK + LD HL,DSK_MBR1 ; ROUTINE TO RUN + CALL HB_BNKCALL ; DO IT LD SP,(STKSAV) ; RESTORE ORIGINAL STACK RET - - .FILL 32,0 -XSTACK .EQU $ - #ENDIF ; DSK_MBR1: @@ -3239,7 +3197,7 @@ CMD .DB CMDLEN - 2 CMDLEN .EQU $ - CMD ; FCB_SUB .DB '?' ; DRIVE CODE, 0 = CURRENT DRIVE - .DB "SUBMIT " ; FILE NAME, 8 CHARS + .DB "SUBMIT " ; FILE NAME, 8 CHARS .DB "COM" ; FILE TYPE, 3 CHARS .FILL 36-($-FCB_SUB),0 ; ZERO FILL REMAINDER OF FCB ;