diff --git a/branches/s100/Source/memmgr.asm b/branches/s100/Source/memmgr.asm index ff79d6df..b6152655 100644 --- a/branches/s100/Source/memmgr.asm +++ b/branches/s100/Source/memmgr.asm @@ -7,10 +7,79 @@ ; RAMPGZ AND ROMPGZ ARE SHORTCUTS TO PAGE IN THE RAM/ROM ZERO PAGE. ;______________________________________________________________________________________________________________________ ; -#IF (PLATFORM = PLT_N8) + + +;______________________________________________________________________________________________________________________; +; 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_N8VEM) 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 + + #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 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#IF (PLATFORM == PLT_ZETA) +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 + + #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 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +#IF (PLATFORM == PLT_N8) +RAMPGZ: ; SELECT RAM PAGE ZERO + XOR A RAMPG: RLCA RLCA @@ -19,10 +88,9 @@ RAMPG: LD A,DEFACR | 80H OUT0 (ACR),A RET -; +;a ROMPGZ: ; SELECT ROM PAGE ZERO XOR A - ROMPG: OUT0 (RMAP),A XOR A @@ -30,17 +98,26 @@ ROMPG: LD A,DEFACR OUT0 (ACR),A RET -#ELSE + +#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 + +#ENDIF + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#IF (PLATFORM == PLT_S2I) 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 @@ -49,31 +126,44 @@ PGSEL: OUT (MPCL_ROM),A OUT (MPCL_RAM),A RET + #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 -; -;______________________________________________________________________________________________________________________ -; -; 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 +#IF (PLATFORM == PLT_S100) +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 - #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 + +;;;;;;;;;;;;;;;;;;;; +; EOF - MEMMGR.ASM ; +;;;;;;;;;;;;;;;;;;;;