APPENDIX SIXTEEN
Memory Management On The 130XE
The bank select location is 54017 ($D301). PORTB, now an output rather than the input byte it was on the 400/800 machines, uses bits 2-5 (corresponding to pins 2-5 on the PIA 6520 chip) to select which 16K bank is being accessed and whether or not the area is used for video (ANTIC) access or 6502 access. There is another 64K of RAM in the 130XE (not the 65XE) which is identical to the main bank in layout and control, but it can be accessed only in 16K banks at any one time. Of course, using a fast interrupt driven ML routine, you can change bits in PORTB to shunt between 16K banks as necessary. When a bank is enabled for access, it appears through an "access window" in the main memory, at locations 16384-32767 ($4000-$7FFF, below the OS ROM or cartridge areas). If you enable bank switching, you cause the normal RAM in this area to be replaced by the bank you've chosen. Bit 4 is the CPU Bank Enable bit--CBE--and bit 5 is the Video Bank Enable bit--VBE. Bits 3 and 2 are the MSB and LSB of the secondary bank address, respectively. You can configure the system to one of four modes: compatible with existing XL/XE software, CPU extended RAM, video extended RAM, and general extended RAM modes. In all cases, only the area in the access window is affected by the mode selection. No synchronization between areas is required by the programmer; the system will know where the display area is by the bit settings in PORTB. This is important: Once you set the bits, you don't have to worry about where the access will occur; the OS takes over and se- lects the right bank. If you intend to make use of more than one 16K block in the extended RAM, you'll have to set and reset the bank selection bits as necessary, but not the CPE or VBE bits. In CPU extended RAM mode, only the CPU accesses the extra mem- ory. All ANTIC cycles operate in the main 64K memory. This means you can use the extended memory for programs and data, while using the main bank for display lists and screen data. In the video extended RAM mode, all ANTIC references to the area $4000-$7FFF will be directed to the secondary bank; all CPU ref- erences will occur in the main bank. This allows programmers to ac- cess the entire RAM memory for programs and data in the main area, while locating display lists and screen data in the secondary bank. In the extended RAM mode, both the CPU and ANTIC process in the second bank, exactly as if it were the main bank in compatibility mode (which is then not accessed at all). The normal state of the bits for either CPE or VBE is 1; secondary bank disabled. When set to 0, the access to the second bank is enabled. Here are the possible bit contigurations (M stands for main bank, E for extended or secondary bank): Compatibility mode (only main bank enabled) Bit 5 Bit 4 Bit 3 Bit 2 CPU accesses: ANTIC accesses: VBE CPE Bank selection 1 1 doesn't matter M $4000-$7FFF M $4000-$7FFF CPU extended RAM mode Bit 5 Bit 4 Bit 3 Bit 2 CPU accesses: ANTIC accesses: VBE CPE Bank selection 1 0 0 0 E $0000-$3FFF M $4000-$7FFF 1 0 0 1 E $4000-$7FFF M $4000-$7FFF 1 0 1 0 E $8000-$BFFF M $4000-$7FFF 1 0 1 1 E $C000-$FFFF M $4000-$7FFF Video (ANTIC) extended RAM mode Bit 5 Bit 4 Bit 3 Bit 2 CPU accesses: ANTIC accesses: VBE CPE Bank selection 0 1 0 0 M $4000-$7FFF E $0000-$3FFF 0 1 0 1 M $4000-$7FFF E $4000-$7FFF 0 1 1 0 M $4000-$7FFF B $8000-$BFFF 0 1 1 1 M $4000-$7FFF E $C000-$FFFF General extended RAM Mode Bit 5 Bit 4 Bit 3 Bit 2 CPU accesses: ANTIC accesses: VBE CPE Bank selection 0 0 0 0 E $0000-$3FFF E $0000-$3FFF 0 0 0 1 E $4000-$7FFF E $4000-$7FFF 0 0 1 0 E $8000-$BFFF E $8000-$BFFF 0 0 1 1 E $C000-$FFFF E $C000-$FFFF To select which mode and bank you want to access in BASIC, use POKE 54017, 193 + (MODE * 16) + (BANK * 4) For MODE and BANK, chose the number below which represents the type and area at address: MODE BANK No. 6502 ANTIC No. Address 0 Extd Extd 0 $0000-$3FFF 1 Main Exd 1 $4000-$7FFF 2 Extd Main 2 $8000-$BFFF 3 Main Main 3 $C000-$FFFF Access to the extended memory is always through the bank $4000-$7FFF, so no matter what the address of the extended bank, you still PEEK and POKE at locations 16384-32767 ($4000-$7FFF), not the extended bank address. DOS 2.5 includes a program called RAMDISK.SYS which, when the disk is booted, checks to see if you have a 130XE and, if so, creates a 64K memory disk (RAMdisk) out of the extended memory. (See the section on DOS 2.5.) The RAMdisk occupies the entire 64K extended block, so you cannot use the extra 64K for BASIC or other programs if you want to keep the RAMdisk intact.
Return to Table of Contents | Previous Chapter | Next Chapter