Changes

Standard Memory Expansions

1,513 bytes added, 02:48, 13 February 2010
/* Technical */
The standard expansions are based on the RAM banking logic from the CPC6128, ie. equivalent to the fourth [[Gate Array]] register in the CPC6128 (or more precisely, the PAL that assists its Gate Array chip).
 
=== 64K Expansion (CPC6128-style) ===
* Accessing a 64K expansion (or the first 64K of a bigger expansion) is compatible to the 128K in the CPC6128
* For full CPC6128 compatibility one may need some patches (eg. CP/M Plus will still refuse to work; because it "detects" the 128K by checking the BASIC ROMs version number)
 
=== 128K-512K Expansions (dk'tronics/dobbertin-style) ===
Expansions bigger than 64K combine the CPC6128-style mapping with some formerly unused chips in the fourth Gate Array register:
'''Caution''' - The 64K bank numbers don't always start at bank 0 (In the Dk'tronics 256K Silicon Disc, the 64K banks are numbered 4..7).
 
=== 1M-4M Expansions (extended standard) ===
 
Expansions bigger than 512K extend that above standard. The LSBs of the 64K bank number is kept in D5-D3 data bits (as above), the MSBs of the 64K bank number are in A10-A8 address bits. Typically in inverted form (so the first 512K block is accessed via Port 7Fxxh, the next via 7Exxh, etc.
 
OUT [01111aaaxxxxxxxx],11bbbccc
aaa = upper bits of 64K bank selection (512K-step) (A8,A9,A10 bits)
bbb = lower bits of 64K bank selection (64K-step) (D3,D4,D5 bits)
ccc = mapping of 16K fragments (as in CPC6128) (D0,D1,D2 bits)
xxxxxxxx = should be set so that it doesn't conflict with other ports (*)
 
(*) For example 7B01h or 7B7Fh would be no good, because the FDC command
register at FB7Fh is mirrored to these locations. Using 7B80h..7BFFh would
fix that problem, but might conflict with other connected expansion
hardware.
 
* '''Compatibility''' - The first 512K (Port 7Fxxh) are fully compatible with dk'tronics. Using the next 1.5MB (Port 7Exxh,7Dxxh,7Cxxh) should work without conflicting with the other hardware expansions.
 
* '''Compatibility Problems''' - The last 2MB (Port 7Bxxh,7Axxh,79xxh,78xxh) can conflict with other hardware. As workaround: Either leave them unused, or use values for "xx" that do not conflict with your hardware (which values are good for "xx" and which aren't good depends on what other hardware you have connected).
== Capacity ==
6,388
edits