In the CPC464, CPC664 and KC compact, ram management is performed by a ram expansion device. In the CPC6128 ram management is performed by a PAL IC on the main PCB or by an expansion device. In the CPC464+ and CPC6128+ ram management is performed by the ASIC or by an expansion device.
When a ram expansion is used with the CPC6128,CPC464+ and CPC6128+ this normally has priority over the internal ram management.
This document will list the common ram expansions for these systems, and will describe the expansion signals available for ram managment devices to use.
These ram expansions all use the same design.
The memory selection hardware in the CPC6128,CPC464+ and CPC6128+ act the same as a CPC464/CPC664/KC compact with a 64K ram expansion.
The ram paging register is accessed when bit 15 of I/O address is set to "0". This register is write only and cannot be read. This register shares the same I/O address decoding as the Gate-Array, but uses a unused function to avoid conflict.
When Bit 7 and 6 of the data written is set to "1", bits 5-0 define the configuration. With some ram expansions, the configuration may not be decoded fully, therefore the same configuration may be selected by writing more than one value to the ram selection port.
Up to 512K of additional ram may be used with this method, giving 576K in total (512K expansion ram and 64K base ram).
There are 8 different ram configurations which work on the currently selected 64k logical block.
The following tables show the possible ram configurations. A "*" identifies a sub-block which is a member of the currently selected secondary 64k block, otherwise the sub-block is a member of the primary 64k block.
Blocks are numbered 0 to 3, corresponding to the the following ranges within each 64k block: &0000-&3fff,&4000-&7fff,&8000-&BFFF and &C000-&FFFF.
Configuration "0":
Z80 Memory Range | Sub-block |
---|---|
&0000-&3fff | 0 |
&4000-&7fff | 1 |
&8000-&bfff | 2 |
&c000-&ffff | 3 |
Configuration "1":
Z80 Memory Range | Sub-block |
---|---|
&0000-&3fff | 0 |
&4000-&7fff | 1 |
&8000-&bfff | 2 |
&c000-&ffff | 3* |
Configuration "2":
Z80 Memory Range | Sub-block |
---|---|
&0000-&3fff | 0* |
&4000-&7fff | 1* |
&8000-&bfff | 2* |
&c000-&ffff | 3* |
Configuration "3":
Z80 Memory Range | Sub-block |
---|---|
&0000-&3fff | 0 |
&4000-&7fff | 3 |
&8000-&bfff | 2 |
&c000-&ffff | 3* |
Configuration "4":
Z80 Memory Range | Sub-block |
---|---|
&0000-&3fff | 0 |
&4000-&7fff | 0* |
&8000-&bfff | 2 |
&c000-&ffff | 3 |
Configuration "5":
Z80 Memory Range | Sub-block |
---|---|
&0000-&3fff | 0 |
&4000-&7fff | 1* |
&8000-&bfff | 2 |
&c000-&ffff | 3 |
Configuration "6"
Z80 Memory Range | Sub-block |
---|---|
&0000-&3fff | 0 |
&4000-&7fff | 2* |
&8000-&bfff | 2 |
&c000-&ffff | 3 |
Configuration "7":
Z80 Memory Range | Sub-block |
---|---|
&0000-&3fff | 0 |
&4000-&7fff | 3* |
&8000-&bfff | 2 |
&c000-&ffff | 3 |
RAM Expansion | Bits | |||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
CPC6128 (note 1) | 1 | 1 | - | - | - | s2 | s1 | s0 |
Dk'tronics 256K Silicon Disk | 1 | 1 | 1 | b1 | b0 | s2 | s1 | s0 |
Key:
Notes:
Details to follow..