|
|
|
|
@@ -463,9 +463,14 @@ HBX_BNKSEL1:
|
|
|
|
|
#ENDIF
|
|
|
|
|
;
|
|
|
|
|
#IF (MEMMGR == MM_Z280)
|
|
|
|
|
PUSH BC ; SAVE BC
|
|
|
|
|
PUSH HL ; SAVE HL
|
|
|
|
|
LD B,$00 ; FIRST USER PDR
|
|
|
|
|
.DB $ED,$71 ; SC
|
|
|
|
|
.DW Z280_BNKSEL ; SC PARAMETER
|
|
|
|
|
RET
|
|
|
|
|
POP HL ; RESTORE HL
|
|
|
|
|
POP BC ; RESTORE BC
|
|
|
|
|
RET ; DONE
|
|
|
|
|
#ENDIF
|
|
|
|
|
;
|
|
|
|
|
#IF (MEMMGR == MM_ZRC)
|
|
|
|
|
@@ -1223,6 +1228,7 @@ Z280_INITZ:
|
|
|
|
|
;
|
|
|
|
|
#IF (MEMMGR == MM_Z280)
|
|
|
|
|
LD A,BID_BIOS
|
|
|
|
|
LD B,$10 ; FIRST SYSTEM PDR
|
|
|
|
|
CALL Z280_BNKSEL
|
|
|
|
|
#ELSE
|
|
|
|
|
LD A,BID_BIOS ; BIOS BANK ID
|
|
|
|
|
@@ -2005,11 +2011,7 @@ INITSYS4:
|
|
|
|
|
|
|
|
|
|
HB_DI ; NOT SURE THIS IS NEEDED
|
|
|
|
|
|
|
|
|
|
; FIXUP BNKSEL TO WORK ON USER MODE PDRS
|
|
|
|
|
XOR A
|
|
|
|
|
LD (Z280_BNKSEL2+1),A
|
|
|
|
|
|
|
|
|
|
; MAKE USER MODE BANK CORRECT
|
|
|
|
|
; ACTIVATE THE CORRECT USER MODE BANK
|
|
|
|
|
LD A,(HB_CURBNK) ; GET CURRENT BANK
|
|
|
|
|
CALL HBX_BNKSEL
|
|
|
|
|
|
|
|
|
|
@@ -2900,6 +2902,7 @@ SYS_SETBNK:
|
|
|
|
|
PUSH AF ; SAVE IT
|
|
|
|
|
LD A,C ; NEW BANK TO A
|
|
|
|
|
LD (HB_INVBNK),A ; UPDATE INVBNK
|
|
|
|
|
LD B,$00 ; FIRST USER PDR
|
|
|
|
|
CALL Z280_BNKSEL ; DO IT
|
|
|
|
|
POP AF ; RECOVER PREV BANK
|
|
|
|
|
LD C,A ; PREVIOUS BANK TO C
|
|
|
|
|
@@ -4070,11 +4073,10 @@ Z280_IVT:
|
|
|
|
|
;
|
|
|
|
|
#IF (MEMMGR == MM_Z280) & FALSE
|
|
|
|
|
;
|
|
|
|
|
; REG A HAS BANK ID
|
|
|
|
|
; REG A HAS BANK ID, REG B HAS INITIAL PDR TO PROGRAM
|
|
|
|
|
; REGISTERS AF, BC, HL DESTROYED
|
|
|
|
|
;
|
|
|
|
|
Z280_BNKSEL:
|
|
|
|
|
PUSH BC
|
|
|
|
|
PUSH HL
|
|
|
|
|
;
|
|
|
|
|
; SELECT I/O PAGE FOR MMU
|
|
|
|
|
LD L,$FF ; MMU AT I/O PAGE $FF
|
|
|
|
|
@@ -4094,13 +4096,8 @@ Z280_BNKSEL1:
|
|
|
|
|
LD L,A
|
|
|
|
|
;
|
|
|
|
|
Z280_BNKSEL2:
|
|
|
|
|
; POINT TO FIRST PDR TO PROGRAM ($00=USER, $10=SYSTEM)
|
|
|
|
|
; THIS CODE USES $10 (FIRST SYSTEM PDR) INITIALLY FOR
|
|
|
|
|
; SYSTEM STARTUP. ONCE WE HAVE TRANSITIONED TO THE
|
|
|
|
|
; RAM PAGE CODE OF HBIOS, THE LINE BELOW IS MODIFIED
|
|
|
|
|
; IN MEMORY TO POINT TO THE FIRST USER PDR. THIS IS
|
|
|
|
|
; DONE NEAR INITSYS4.
|
|
|
|
|
LD A,$10 ; FIRST SYSTEM PDR
|
|
|
|
|
; POINT TO FIRST PDR TO PROGRAM
|
|
|
|
|
LD A,B ; FIRST PDR TO PROG
|
|
|
|
|
OUT (Z280_MMUPDRPTR),A ; SET THE PDR POINTER
|
|
|
|
|
;
|
|
|
|
|
; PROGRAM 8 PDRS
|
|
|
|
|
@@ -4113,8 +4110,6 @@ Z280_BNKSEL2:
|
|
|
|
|
LD C,Z280_IOPR ; I/O PAGE REGISTER TO C
|
|
|
|
|
.DB $ED,$6E ; LDCTL (C),HL
|
|
|
|
|
;
|
|
|
|
|
POP HL
|
|
|
|
|
POP BC
|
|
|
|
|
RET
|
|
|
|
|
;
|
|
|
|
|
#IF (($ & $FF) != 0)
|
|
|
|
|
@@ -4422,17 +4417,15 @@ Z280_PDRTBL:
|
|
|
|
|
;
|
|
|
|
|
; Z280 BANK SELECTION (CALLED FROM PROXY)
|
|
|
|
|
;
|
|
|
|
|
; THIS VERSION IS SLOWER, BUT ABOIDS THE USE OF THE 512
|
|
|
|
|
; THIS VERSION IS SLOWER, BUT AVOIDS THE USE OF THE 512+
|
|
|
|
|
; BYTE TABLE.
|
|
|
|
|
;
|
|
|
|
|
#IF (MEMMGR == MM_Z280)
|
|
|
|
|
;
|
|
|
|
|
; REG A HAS BANK ID
|
|
|
|
|
; REG A HAS BANK ID, REG B HAS INITIAL PDR TO PROGRAM
|
|
|
|
|
; REGISTERS AF, BC, HL DESTROYED
|
|
|
|
|
;
|
|
|
|
|
Z280_BNKSEL:
|
|
|
|
|
PUSH BC
|
|
|
|
|
PUSH HL
|
|
|
|
|
;
|
|
|
|
|
; SELECT I/O PAGE FOR MMU
|
|
|
|
|
LD L,$FF ; MMU AT I/O PAGE $FF
|
|
|
|
|
LD C,Z280_IOPR ; I/O PAGE REGISTER TO C
|
|
|
|
|
@@ -4445,44 +4438,52 @@ Z280_BNKSEL:
|
|
|
|
|
;
|
|
|
|
|
; IF R BIT (RAM/ROM) IS SET, WE WANT TO CONVERT
|
|
|
|
|
; FROM R000 BBBB -> 000R BBBB
|
|
|
|
|
BIT 7,A ; CHECK BIT
|
|
|
|
|
JR Z,Z280_BNKSEL1 ; NOT SET, SKIP AHEAD
|
|
|
|
|
XOR %10010000 ; FIX IT
|
|
|
|
|
RLCA ; A=R 000B BBBR
|
|
|
|
|
JP NC,Z280_BNKSEL1
|
|
|
|
|
XOR %00100001 ; A=00RB BBB0
|
|
|
|
|
;
|
|
|
|
|
Z280_BNKSEL1:
|
|
|
|
|
;MULTU A,$80 ; HL=0000 RBBB B000 0000
|
|
|
|
|
.DB $FD,$ED,$F9,$80 ; MULTU A,$80
|
|
|
|
|
;MULTU A,$40 ; HL=0000 RBBB B000 0000
|
|
|
|
|
.DB $FD,$ED,$F9,$40 ; MULTU A,$40
|
|
|
|
|
;
|
|
|
|
|
LD A,$0A ; VALUE FOR LOW NIBBLE
|
|
|
|
|
OR L ; COMBINE WITH L
|
|
|
|
|
LD L,A ; PUT IT BACK
|
|
|
|
|
.DB $ED,$6D ; ADD HL,A ; HL=0000 RBBB B000 1010
|
|
|
|
|
;
|
|
|
|
|
Z280_BNKSEL2:
|
|
|
|
|
; POINT TO FIRST PDR TO PROGRAM ($00=USER, $10=SYSTEM)
|
|
|
|
|
; THIS CODE USES $10 (FIRST SYSTEM PDR) INITIALLY FOR
|
|
|
|
|
; SYSTEM STARTUP. ONCE WE HAVE TRANSITIONED TO THE
|
|
|
|
|
; RAM PAGE CODE OF HBIOS, THE LINE BELOW IS MODIFIED
|
|
|
|
|
; IN MEMORY TO POINT TO THE FIRST USER PDR. THIS IS
|
|
|
|
|
; DONE NEAR INITSYS4.
|
|
|
|
|
LD A,$10 ; FIRST SYSTEM PDR
|
|
|
|
|
; POINT TO FIRST PDR TO PROGRAM
|
|
|
|
|
LD A,B ; INITIAL PDR TO PROG
|
|
|
|
|
OUT (Z280_MMUPDRPTR),A ; SET THE PDR POINTER
|
|
|
|
|
;
|
|
|
|
|
; PROGRAM 8 PDRS
|
|
|
|
|
LD C,Z280_MMUBLKMOV ; PDR BLOCK MOVE PORT
|
|
|
|
|
LD B,8 ; PROGRAM 8 PDRS
|
|
|
|
|
;LD B,8 ; PROGRAM 8 PDRS
|
|
|
|
|
LD A,$10 ; PDR VALUE INCREMENT
|
|
|
|
|
Z280_BNKSEL3:
|
|
|
|
|
; PROGRAM 8 PDR VALUES
|
|
|
|
|
; LOOP UNROLLED FOR SPEED
|
|
|
|
|
.DB $ED,$BF ; OUTW (C),HL
|
|
|
|
|
.DB $ED,$6D ; ADD HL, A ; BUMP VALUE
|
|
|
|
|
DJNZ Z280_BNKSEL3 ; DO ALL PDRS
|
|
|
|
|
.DB $ED,$BF ; OUTW (C),HL
|
|
|
|
|
.DB $ED,$6D ; ADD HL, A ; BUMP VALUE
|
|
|
|
|
.DB $ED,$BF ; OUTW (C),HL
|
|
|
|
|
.DB $ED,$6D ; ADD HL, A ; BUMP VALUE
|
|
|
|
|
.DB $ED,$BF ; OUTW (C),HL
|
|
|
|
|
.DB $ED,$6D ; ADD HL, A ; BUMP VALUE
|
|
|
|
|
.DB $ED,$BF ; OUTW (C),HL
|
|
|
|
|
.DB $ED,$6D ; ADD HL, A ; BUMP VALUE
|
|
|
|
|
.DB $ED,$BF ; OUTW (C),HL
|
|
|
|
|
.DB $ED,$6D ; ADD HL, A ; BUMP VALUE
|
|
|
|
|
.DB $ED,$BF ; OUTW (C),HL
|
|
|
|
|
.DB $ED,$6D ; ADD HL, A ; BUMP VALUE
|
|
|
|
|
.DB $ED,$BF ; OUTW (C),HL
|
|
|
|
|
.DB $ED,$6D ; ADD HL, A ; BUMP VALUE
|
|
|
|
|
;DJNZ Z280_BNKSEL3 ; DO ALL PDRS
|
|
|
|
|
;
|
|
|
|
|
; RESTORE I/O PAGE TO $00
|
|
|
|
|
LD L,$00 ; NORMAL I/O PAGE $00
|
|
|
|
|
LD C,Z280_IOPR ; I/O PAGE REGISTER TO C
|
|
|
|
|
.DB $ED,$6E ; LDCTL (C),HL
|
|
|
|
|
;
|
|
|
|
|
POP HL
|
|
|
|
|
POP BC
|
|
|
|
|
;
|
|
|
|
|
RET
|
|
|
|
|
#ENDIF
|
|
|
|
|
;
|
|
|
|
|
|