Changes

Standard Memory Expansions

1,539 bytes added, 24 February
/* Extended-Standard Expansions */
The '''standard''' memory expansions are often credited to [[Dk'tronics]] and [[Dobbertin]] (not sure which company initially developed it though). There's also an '''extended standard''' which may be credited to probably [[YarekRAM7]] (seen at least in comp.sys.amstrad.8bit FAQ v0.90, 11 september 1997) or [[RAM7Yarek]] (not sure who came first here, too).
== Technical ==
The standard expansions are based on the RAM banking logic from the CPC6128, ie. equivalent This is handled by a PAL16L8 but to the programmer it appears to be the fourth register in the [[Gate Array]] register in . The I/O decoding is different to the CPC6128 (or more preciselyGate-Array.* PAL16L8 decodes A15=0 only* Gate-Array decodes A15=0 and A14=1 To access the RAM and Gate-Array port 7fxx is used. In addition the RAM answers when the data has bit 7=1 and bit 6=1, which is unused in the PAL that assists its Gate -Array chip).  External expansions have their own PAL or hardware which performs the same operation. Later CPC revisions with the costdown ASIC and the Plus have the RAM expansion logic inside their ASICs.
----
=== Standard 128K-512K Expansions (dk'tronics/dobbertin-style) ===
Expansions bigger than 64K combine the CPC6128-style mapping with some formerly unused chips bits in the fourth Gate Array registervalue written to the RAM select:
Gate Array, Port 7Fxxh: 7-6 Must be 3 (aka Gate Array Register 3)both set to 1
5-3 Bank number in 64K units (for expansions bigger than 64K) (max = 512K)
2-.0 Bank mapping in 16K fragments (RAM configuration as on normal CPC 6128 Gate Array)The 16K fragments are consisting of 8 banks. Banks 0-3 are the internal RAM, banks 4-7 are external RAM (CPC6128 taken from the currently selected 64K block).bank
'''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).
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 configuration (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 commandregister at FB7Fh is mirrored to these locations. Using 7B80h..7BFFh wouldfix that problem, but might conflict with other connected expansionhardware.
* '''Compatibility''' - The first 512K (Port 7Fxxh) are fully compatible with dk'tronics. Using the next 1.5MB (Port 7Exxh,7Dxxh,7Cxxh) should similarly work without conflicting with the other hardware expansions.
* '''Compatibility Problems''' - The last upper 2MB (Port 7Bxxh,7Axxh,79xxh,78xxh) of a 4MB expansion can conflict with other hardwareas setting A10 to 0 is also used for many hardware expansions. As workaround: Either leave them unused, or If those hardware expansions do not check A15 (and most don't) they might get activated if a RAM bank in the range 2-4MB is accessed. If you need to use RAM in that range make sure to 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) (and obviously, different ". If unsure use &FF for xx" may be needed in 7Bxxh as in 7Axxhno custom hardware expansion should react if all bits of the lower byte are set. So e.g. OUT &78FF, for example&C4 or OUT &7AFF,&C5 should always be fine whereas OUT &7800,&C4 or OUT &7AC5,&C5 (as happening sometimes with speed optimised code)might unexpectedly turn on a feature on an expansion.
== Capacity ==
* [[RAM BOX]]
* [[SYMBiFACE II]] - includes (among others) 512K RAM expansion
* [[X-MEM]]
* [[Old_School_512K_RAM_Expansion]]
* [[CPC 6320 / CPC 6512 - internal 320K / 512K for CPC 6128]] (eto) - replacement of original RAM ICs
== Extended-Standard Expansions ==
* [[CPC4MBGemini]] (DIYShinra - PulkoTronics) - compatible with standard 512 Kbyte expansion (plus extra extended-standard 3.5 MBbyte512 Kbyte), also handles special case for Amstrad Plus ASIC* [[Y-MEM]]* [[RAM7 2MB memory expansion]] ([[RAM7]]) - compatible with standard 512 Kbyte expansion (plus extra extended-standard 1.5 MBbyte)* [[CPC4MB]] ([[Yarek]]) (DIY) - compatible with standard 512 Kbyte expansion (plus extra extended-standard 3.5 MBbyte)* [[CPC iRAM]] (eto) DIY - compatible with standard 512K expansion (plus up to 512K extended-standard )
== Semi-Standard Expansions ==
* [[Aleste 520EX]] - a CPC clone that allows to access 256K (of its total 512K memory) in semiInicron-standard style fashion (ie. as on a 64K computer with 192K expansionwhich can be mapped to 4000h..7FFFh).* [[Inicron RAM-Box]] - not fully compatible with standard expansions (semi-standard)These two "semi-standard" ones can map some expansion banks RAM only to 4000h..7FFFh).
== Non-Standard Expansions ==
* [[c't 512 KB internal RAM expansion]] - works similar to dk'tronics expansions, but, alltogether, there isn't much compatibility between c't and dk'tronics.
* [[Otten & Fecht 1 MB RAM-Disc]] - Accessed through I/O ports (RAM is not mapped to memory)
* [[Vortex Expansions RAM card]] - an older expansion, uses 32K-banks, not compatible with the later standard
* [[Nova]] - Non-volatile 32KB RAM and RTC
== Expansions that are unknown how they work, and if they are standard or not ==
* [[Data Media SP64Memory Expansion]] - an older thing, said to be not dk'tronics compatible, nothing else known
* [[Phoenix M64]] - all unknown
 
 
[[Category:Hardware]][[Category:Memory expansions| ]][[Category:DATA Storage]][[Category:Expansion ROM]][[Category:Peripherals|*]]
12,598
edits