|
|
|
@ -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) |
|
|
|
|