|
|
|
@ -1735,7 +1735,7 @@ ROMRESUME: |
|
|
|
; |
|
|
|
; WE USE THE TWO BYTES IMMEDIATELY BELOW THE PROXY TO STORE A COUPLE |
|
|
|
; VALUES TEMPORARILY BECAUSE WE MAY BE OPERATING IN ROM AT THIS POINT. |
|
|
|
; (HBX_LOC - 1) = BATCOND, (HBX_LOC - 2) = APPBANK |
|
|
|
; (HBX_LOC - 1) = BATCOND, (HBX_LOC - 2) = LOADBANK |
|
|
|
; THERE IS NOTHING ON THE STACK AT THIS POINT SO, HERE, WE JUST RESET |
|
|
|
; THE STACK TO HBX_LOC - 2. |
|
|
|
; |
|
|
|
@ -1757,7 +1757,7 @@ ROMRESUME: |
|
|
|
XOR A ; ZERO MEANS LOW BAT |
|
|
|
LD (HL),A ; FIRST RAM ACCESS |
|
|
|
INC A ; 1 MEANS BAT OK |
|
|
|
LD (HL),A ; SECOND RAM ACCESS (BLOLCKED IF BATTERY ISSUE) |
|
|
|
LD (HL),A ; SECOND RAM ACCESS (BLOCKED IF BATTERY ISSUE) |
|
|
|
; |
|
|
|
; INSTALL PROXY IN UPPER MEMORY |
|
|
|
; |
|
|
|
@ -1907,6 +1907,7 @@ MBC_SINGLE: |
|
|
|
; COPY OURSELVES TO HBIOS BANK IN RAM |
|
|
|
; |
|
|
|
LD A,(HB_CURBNK) ; GET CURRENT BANK ID |
|
|
|
LD (HBX_LOC - 2),A ; SAVE THE LOAD BANK |
|
|
|
; |
|
|
|
; CHECK TO SEE IF WE ARE ALREADY RUNNING IN THE HBIOS RAM |
|
|
|
; BANK AND SKIP THE COPY IF SO (DON'T COPY OVER OURSELVES). |
|
|
|
@ -1914,7 +1915,7 @@ MBC_SINGLE: |
|
|
|
; FULL RESTART OF A SYSTEM USING THE EXISTING HBIOS COPY. |
|
|
|
; NOTE THAT THIS TEST WORKS BECAUSE BID_BIOS == BID_BOOT |
|
|
|
; IN THESE SCENARIOS. |
|
|
|
CP BID_BIOS ; SAVE AS BIOS BANK? |
|
|
|
CP BID_BIOS ; SAME AS BIOS BANK? |
|
|
|
JR Z,HB_START1 ; IF SO, SKIP |
|
|
|
; |
|
|
|
LD (HB_SRCBNK),A ; CURRENT BANK IS SOURCE |
|
|
|
@ -1999,8 +2000,35 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK |
|
|
|
INC HL |
|
|
|
LD (HL),$4D |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
; CHECK TO SEE IF THIS IS AN IN-PLACE RESTART. IF SO, |
|
|
|
; WE NEED TO SKIP THE COPY OF THE CONCATENATED OS IMAGES BELOW. |
|
|
|
LD A,(HB_RAMFLAG) ; GET THE FLAG |
|
|
|
OR A ; TEST IT |
|
|
|
JR NZ,HB_START2 ; IF SET, SKIP |
|
|
|
DEC A ; SET FLAG |
|
|
|
LD (HB_RAMFLAG),A ; SAVE IT |
|
|
|
; |
|
|
|
; FOR AN APPLICATION BOOT, WE ALSO COPY THE CONCATENATED OS |
|
|
|
; IMAGES TO THE AUX BANK WHERE WE WILL JUMP TO ROMLDR LATER. |
|
|
|
LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY |
|
|
|
LD D,BID_AUX ; D = DEST BANK = AUX BANK |
|
|
|
LD A,(HBX_LOC - 2) ; E = SRC BANK = LOAD BANK |
|
|
|
LD E,A ; USE AS SOURCE |
|
|
|
LD HL,$8000 ; HL = COPY LEN = ENTIRE BANK |
|
|
|
RST 08 ; DO IT |
|
|
|
LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY |
|
|
|
LD HL,HB_END ; COPY FROM END OF HBIOS |
|
|
|
LD DE,0 ; TO START OF TARGET BANK |
|
|
|
RST 08 ; DO IT |
|
|
|
JR HB_START2 ; CONTINUE |
|
|
|
; |
|
|
|
HB_RAMFLAG .DB $00 |
|
|
|
; |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
HB_START2: |
|
|
|
; |
|
|
|
#IF FALSE |
|
|
|
; |
|
|
|
; POPULATE THE CRITICAL RAM BANK NUMBERS. |
|
|
|
@ -8564,20 +8592,6 @@ STR_APPBOOT .DB "\r\n\r\n*** Launching RomWBW HBIOS v", BIOSVER, ", ", TIMESTAMP |
|
|
|
.DB "\r\n\r\n ", PLATFORM_NAME, "$" |
|
|
|
; |
|
|
|
HB_APPBOOT2: |
|
|
|
; FOR AN APPLICATION BOOT, WE ALSO COPY THE CONCATENATED OS |
|
|
|
; IMAGES TO THE AUX BANK WHERE WE WILL JUMP TO ROMLDR LATER. |
|
|
|
; THE AUX BANK WILL BE DESTROYED IF CP/M 3 IS LOADED. WE DON'T |
|
|
|
; LIVE IN A PERFECT WORLD. |
|
|
|
LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY |
|
|
|
LD D,BID_AUX ; D = DEST BANK = AUX BANK |
|
|
|
LD A,(HB_CURBNK) ; E = SRC BANK = CUR BANK |
|
|
|
LD E,A ; USE AS SOURCE |
|
|
|
LD HL,$8000 ; HL = COPY LEN = ENTIRE BANK |
|
|
|
RST 08 ; DO IT |
|
|
|
LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY |
|
|
|
LD HL,HB_END ; COPY FROM END OF HBIOS |
|
|
|
LD DE,0 ; TO START OF TARGET BANK |
|
|
|
RST 08 ; DO IT |
|
|
|
; |
|
|
|
#IF (MEMMGR == MM_Z280) |
|
|
|
; WE NEED TO SWITCH FROM USER MODE TO SYSTEM MODE, BUT CONTINUE |
|
|
|
@ -8585,7 +8599,6 @@ HB_APPBOOT2: |
|
|
|
; |
|
|
|
; FIRST, OVERLAY PROXY CODE WITH FRESH CODE SO WE CAN USE THE |
|
|
|
; PROXY ROUTINES SAFELY. |
|
|
|
|
|
|
|
LD A,(HB_CURBNK) ; GET CURBNK |
|
|
|
LD DE,HBX_LOC ; RUNNING LOCATION |
|
|
|
LD HL,HBX_IMG ; LOCATION IN IMAGE |
|
|
|
@ -8601,7 +8614,7 @@ HB_APPBOOT2: |
|
|
|
LDIR |
|
|
|
; |
|
|
|
; THEN SYSCALL IT. NOTE THAT THE ROUTINE CALLED DOES NOT |
|
|
|
; (RET)URN, IT JUMPS TO CONTINUE SO THAT THE SYSCALL DOES |
|
|
|
; (RET)URN, IT JUMPS TO HB_RESTART SO THAT THE SYSCALL DOES |
|
|
|
; NOT RETURN TO USER MODE. |
|
|
|
SC HBX_BUF ; SYSCALL ROUTINE |
|
|
|
; |
|
|
|
|