|
|
@ -588,54 +588,29 @@ HBX_BC_ITER: |
|
|
HBX_BNKCALL: |
|
|
HBX_BNKCALL: |
|
|
; |
|
|
; |
|
|
#IF (MEMMGR == MM_Z280) |
|
|
#IF (MEMMGR == MM_Z280) |
|
|
JR HBX_BNKCALL2 |
|
|
|
|
|
|
|
|
|
|
|
CP BID_BIOS ; CALLING HBIOS? |
|
|
CP BID_BIOS ; CALLING HBIOS? |
|
|
JR NZ,HBX_BNKCALL2 ; NOPE, DO NORMAL PROCESSING |
|
|
|
|
|
|
|
|
|
|
|
;PUSH AF |
|
|
|
|
|
;LD A,'[' |
|
|
|
|
|
;.DB $ED,$71 ; SC |
|
|
|
|
|
;.DW COUT ; SC PARAMETER |
|
|
|
|
|
;POP AF |
|
|
|
|
|
|
|
|
|
|
|
; |
|
|
|
|
|
;LD A,(HB_CURBNK) ; GET CURRENT BANK |
|
|
|
|
|
;LD (HB_INVBNK),A ; SAVE INVOCATION BANK |
|
|
|
|
|
; |
|
|
|
|
|
;LD A,BID_BIOS ; HBIOS BANK |
|
|
|
|
|
;LD (HB_CURBNK),A ; SET AS CURRENT BANK |
|
|
|
|
|
|
|
|
|
|
|
LD (HBX_BNKCALL1+2),IX ; SETUP TARGET ADDRESS |
|
|
|
|
|
HBX_BNKCALL1: |
|
|
|
|
|
|
|
|
JR NZ,HBX_BNKCALL3 ; NOPE, DO NORMAL PROCESSING |
|
|
.DB $ED,$71 ; SC |
|
|
.DB $ED,$71 ; SC |
|
|
.DW $FFFF ; SC PARAMETER (SET ABOVE) |
|
|
|
|
|
|
|
|
|
|
|
;PUSH AF |
|
|
|
|
|
;LD A,']' |
|
|
|
|
|
;.DB $ED,$71 ; SC |
|
|
|
|
|
;.DW COUT ; SC PARAMETER |
|
|
|
|
|
;POP AF |
|
|
|
|
|
|
|
|
|
|
|
;PUSH AF |
|
|
|
|
|
;LD A,(HB_INVBNK) |
|
|
|
|
|
;LD (HB_CURBNK),A |
|
|
|
|
|
;POP AF |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RET |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
|
|
|
.DW HBX_BNKCALL2 ; CALL HERE IN SYSTEM MODE |
|
|
|
|
|
RET ; THEN RETURN |
|
|
|
|
|
|
|
|
HBX_BNKCALL2: |
|
|
HBX_BNKCALL2: |
|
|
LD (HBX_TGTBNK),A ; STUFF TARGET BANK TO CALL INTO CODE BELOW |
|
|
|
|
|
LD (HBX_TGTADR),IX ; STUFF ADDRESS TO CALL INTO CODE BELOW |
|
|
|
|
|
|
|
|
HB_EI ; INTS ARE OK |
|
|
|
|
|
LD (HBX_BNKCALL_GO+1),IX ; SETUP DEST ADR |
|
|
|
|
|
.DB $ED,$65 ; PCACHE (CRITICAL!!!) |
|
|
|
|
|
HBX_BNKCALL_GO: |
|
|
|
|
|
JP $FFFF ; DO THE REAL WORK AND RETURN |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
|
|
|
|
|
|
HBX_BNKCALL3: |
|
|
|
|
|
LD (HBX_BNKCALL_BNK+1),A ; STUFF TARGET BANK TO CALL INTO CODE BELOW |
|
|
|
|
|
LD (HBX_BNKCALL_ADR+1),IX ; STUFF ADDRESS TO CALL INTO CODE BELOW |
|
|
LD A,(HB_CURBNK) ; GET CURRENT BANK |
|
|
LD A,(HB_CURBNK) ; GET CURRENT BANK |
|
|
PUSH AF ; SAVE FOR RETURN |
|
|
PUSH AF ; SAVE FOR RETURN |
|
|
HBX_TGTBNK .EQU $ + 1 |
|
|
|
|
|
|
|
|
HBX_BNKCALL_BNK: |
|
|
LD A,$FF ; LOAD BANK TO CALL ($FF OVERLAID AT ENTRY) |
|
|
LD A,$FF ; LOAD BANK TO CALL ($FF OVERLAID AT ENTRY) |
|
|
CALL HBX_BNKSEL ; ACTIVATE THE NEW BANK |
|
|
CALL HBX_BNKSEL ; ACTIVATE THE NEW BANK |
|
|
HBX_TGTADR .EQU $ + 1 |
|
|
|
|
|
|
|
|
HBX_BNKCALL_ADR: |
|
|
CALL $FFFF ; CALL ROUTINE ($FFFF IS OVERLAID ABOVE) |
|
|
CALL $FFFF ; CALL ROUTINE ($FFFF IS OVERLAID ABOVE) |
|
|
EX (SP),HL ; SAVE HL AND GET BANK TO RESTORE IN HL |
|
|
EX (SP),HL ; SAVE HL AND GET BANK TO RESTORE IN HL |
|
|
PUSH AF ; SAVE AF |
|
|
PUSH AF ; SAVE AF |
|
|
@ -4390,7 +4365,7 @@ W_MMU1: |
|
|
.DB $ED,$BF ; OUTW (C),HL |
|
|
.DB $ED,$BF ; OUTW (C),HL |
|
|
W_MMU2: |
|
|
W_MMU2: |
|
|
;.DB $ED,$65 ; PCACHE |
|
|
;.DB $ED,$65 ; PCACHE |
|
|
LD L,0 ; RESTORE I/O PAGE REG TO 0 |
|
|
|
|
|
|
|
|
LD L,$00 ; RESTORE I/O PAGE REG TO 0 |
|
|
LD C,Z280_IOPR |
|
|
LD C,Z280_IOPR |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
POP BC |
|
|
POP BC |
|
|
@ -4450,7 +4425,7 @@ Z2DMALOOP: |
|
|
JR NZ,Z2DMALOOP ; LOOP WHILE ACTIVE |
|
|
JR NZ,Z2DMALOOP ; LOOP WHILE ACTIVE |
|
|
|
|
|
|
|
|
; RETURN TO I/O PAGE $00 |
|
|
; RETURN TO I/O PAGE $00 |
|
|
XOR A ; I/O PAGE ZERO |
|
|
|
|
|
|
|
|
LD L,$00 ; RESTORE I/O PAGE REG TO 0 |
|
|
LD C,Z280_IOPR ; I/O PAGE REGISTER |
|
|
LD C,Z280_IOPR ; I/O PAGE REGISTER |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
.DB $ED,$6E ; LDCTL (C),HL |
|
|
|
|
|
|
|
|
|