You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

79 lines
2.3 KiB

;==================================================================================================
; MEMORY PAGE MANAGEMENT
;==================================================================================================
;
; PAGE THE REQUESTED 32K BLOCK OF RAM/ROM INTO THE LOWER 32K OF CPU ADDRESS SPACE.
; LOAD DESIRED PAGE INDEX INTO A AND CALL EITHER RAMPG OR ROMPG AS DESIRED.
; RAMPGZ AND ROMPGZ ARE SHORTCUTS TO PAGE IN THE RAM/ROM ZERO PAGE.
;______________________________________________________________________________________________________________________
;
#IF (PLATFORM = PLT_N8)
RAMPGZ: ; SELECT RAM PAGE ZERO
XOR A
RAMPG:
RLCA
RLCA
RLCA
OUT0 (CPU_BBR),A
LD A,DEFACR | 80H
OUT0 (ACR),A
RET
;
ROMPGZ: ; SELECT ROM PAGE ZERO
XOR A
ROMPG:
OUT0 (RMAP),A
XOR A
OUT0 (CPU_BBR),A
LD A,DEFACR
OUT0 (ACR),A
RET
#ELSE
RAMPGZ: ; SELECT RAM PAGE ZERO
XOR A
RAMPG:
OR 80H ; TURN ON BIT 7 TO SELECT RAM PAGES
JR PGSEL
ROMPGZ: ; SELECT ROM PAGE ZERO
XOR A
ROMPG:
AND 7FH ; TURN OFF BIT 7 TO SELECT ROM PAGES
JR PGSEL
PGSEL:
OUT (MPCL_ROM),A
OUT (MPCL_RAM),A
RET
#ENDIF
;
;______________________________________________________________________________________________________________________
;
; MACROS TO PERFORM RAM/ROM PAGE SELECTION INTO LOWER 32K OF MEMORY SPACE
; PGRAM(P) SELECT RAM PAGE P
; PGRAMF(P) SELECT RAM PAGE P, FAST VERSION ASSUMES CURRENT PAGE IS A RAM PAGE
; PGROM(P) SELECT ROM PAGE P
; PGROMF(P) SELECT ROM PAGE P, FAST VERSION ASSUMES CURRENT PAGE IS A ROM PAGE
;
; REGISTER A IS DESTROYED
;______________________________________________________________________________________________________________________
;
#IF (PLATFORM = PLT_N8)
#DEFINE PGRAM(P) LD A,P << 3 \ OUT0 (CPU_BBR),A \ LD A,DEFACR | 80H \ OUT0 (ACR),A
#DEFINE PGRAMF(P) LD A,P << 3 \ OUT0 (CPU_BBR),A
#DEFINE PGROM(P) LD A,P \ OUT0 (RMAP),A \ XOR A \ OUT0 (CPU_BBR),A \ LD A,DEFACR \ OUT0 (ACR),A
#DEFINE PGROMF(P) LD A,P \ OUT0 (RMAP),A
#ELSE
#DEFINE PGRAM(P) LD A,P | 80H \ OUT (MPCL_ROM),A \ OUT (MPCL_RAM),A
#DEFINE PGRAMF(P) LD A,P | 80H \ OUT (MPCL_RAM),A
#DEFINE PGROM(P) LD A,P & 7FH \ OUT (MPCL_ROM),A \ OUT (MPCL_RAM),A
#DEFINE PGROMF(P) LD A,P & 7FH \ OUT (MPCL_ROM),A
#ENDIF