diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 5430fdc5..9a43b700 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -666,6 +666,30 @@ HBX_PPRET: HBX_PPSP .EQU $ - 2 RET ; +; SPECIAL ROUTINE IN HIGH MEMORY TO PERFORM A COLD START ON Z280 +; THIS REQUIRES US TO REMAP LOW MEMORY, THEN JUMP TO ZERO +; +#IF (MEMMGR == MM_Z280) +; +Z280_RESTART: + DI ; KILL INTERRUPTS + LD SP,HBX_LOC ; STACK IN HIGH MEMORY +; + ; RELOCATE Z280 BANK SELECT TO HIGH MEMORY + LD HL,Z280_BNKSEL + LD DE,$8000 + LD BC,Z280_BNKSEL_LEN + LDIR +; + ; MAKE ROM BOOT BANK ACTIVE IN LOW SYS MEM + LD A,BID_BOOT + LD B,$10 ; FIRST SYS PDR + CALL $8000 ; DO IT +; + ; NOW JUST JUMP TO START OF ROM BOOT CODE + JP 0 +#ENDIF +; ; PRIVATE STACK AT END OF HBIOS CODE ; OCCUPIES SPACE BEFORE IVT ; @@ -2944,11 +2968,15 @@ SYS_RESWARM: ; RESTART SYSTEM AS THOUGH POWER HAD JUST BEEN TURNED ON ; SYS_RESCOLD: +#IF (MEMMGR == MM_Z280) + JP Z280_RESTART +#ELSE DI LD SP,HBX_LOC ; STACK JUST BELOW HBIOS PROXY LD A,BID_BOOT ; BOOT BANK LD IX,0 ; ADDRESS ZERO CALL HB_BNKCALL ; DOES NOT RETURN +#ENDIF ; ; HOOK CALLED WHEN A USERLAND RESET IS INVOKED, TYPICALLY VIA A JUMP ; TO LOGICAL CPU ADDRESS $0000 @@ -4193,6 +4221,9 @@ Z280_IVT: ; REG A HAS BANK ID, REG B HAS INITIAL PDR TO PROGRAM ; REGISTERS AF, BC, HL DESTROYED ; +; THIS ROUTINE MAY BE RELOCATED TO RUN IN HIGH MEMORY IN CERTAIN CASES +; LIKE A SYSTEM RESTART. IT MUST BE KEPT ENTIRELY RELOCATABLE. +; Z280_BNKSEL: ; *DEBUG* ;CALL PC_LBKT @@ -4259,6 +4290,9 @@ Z280_BNKSEL3: LDCTL (C),HL ; RET +; +Z280_BNKSEL_LEN .EQU $ - Z280_BNKSEL +; #ENDIF ; ; Z280 BANK COPY (CALLED FROM PROXY) diff --git a/Source/ver.inc b/Source/ver.inc index 0525fbc7..a0cd61b9 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.56" +#DEFINE BIOSVER "3.1.1-pre.57" diff --git a/Source/ver.lib b/Source/ver.lib index c8ed827a..1b49de90 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.56" + db "3.1.1-pre.57" endm