[[Category:DIY]] [[Category:Memory expansions]]
A project to upgrade a CPC6128 to 512K RAM (total), done by replacing the CPC6128's RAM chips, and its PAL banking chip, the project was released 1987 in german magazine ''c't Magazin''.
* RAMDIS is not supported, not a problem in most cases, but won't work with some special types of expansion hardware, like [[Multiface II]].
* The bank selection for CPU address expansion seems to have been designed independently of [[Standard Memory Expansions]] like the dk'tronics one. So, there is no (intended) compatibility. However, both c't and dk'tronics are designed around the CPC6128 banking mechanism, so they do work similar in some ways. Namely, both can map expansion banks to 4000h..7FFFh does also affect bank bits0-1 for VRAM at , but there are several differences:** For the mapping to 4000h..7FFFh; thus the CRTC may see bank 0-3 in that region (whilst, as far as knowndk'tronics uses values CCh..CFh, on a normal CPCD4h..C7h, it should always see bank 1 DCh..DFh, ... FCh..FFh whilst c't uses values C8h..DFh. Some of these values do overlap, resulting in that regionsome (unintended).** '''Notice''semi-compatibility, but there' s still one big difference: along with the included sample program above values, dk'''does''' seem to map VRAM tronics maps bank 3 to 4000hC000h..FFFFh, whilst mapping expansion banks c't maps bank 7 to 4000h at the same timethat region. Theoretically, this should result in display glitches - unknown if/how/why the sample works [?]
== Memory Configurations ==
IF (GND) /IOWR=/IOWR ;dummy (do not output anything on this pin)
'''Note:''' For VRAM access, bank bits 2,3,4 are forced to zero (by above formulas), bank bit 0,1 are coming from the CRTC, passed directly to IC109 (without going through the PAL), so, the RAM banking affects only the CPU's memory accesses, not the CRTC's video memory accesses.
Some notes on the syntax:
* The "*" and "+" operators are meaning "* = AND", "+ = OR". The idea behind that confusing syntax was to make it "easier" to learn for people who are trained only in basic maths (the formulas do also work when treating *=multiply, and +=plus. For example: 1+0+1+1 = 3 = nonzero = true).
* There must be some priority ordering in the formulas: Either * before +, or operations inside of a line before merging the results of the separate lines (in above examples, both ordering methods do work).
== Newer Info ==
Having a short look at the article, it seems to be all different as than expected:
* There is no dk'tronics compatibility intended - however, c't and dk'tronics are based on the CPC6128 banking mechanism, so they work similar, and to some level there is some (unintended) compatibility. Namely, ONE HALF of the memory can be accessed in dk'tronics style fashion.
* There seems to be no hardware based "Video RAM" support at all. However, there's some unspectacular software based example included that copies expansion RAM to VRAM via LDIR opcode.
== Scanned Article / Schematics ==
== Related hardware modifications ==
* [http[CPC_6320_/_CPC_6512_-_internal_320K_/_512K_for_CPC_6128|CPC 6320 / CPC 6512 (by eto) - similar logic, but fully standards compatible]]* [https://cpcwiki.eu/forum/index.php/topic,662.msg7113.html#msg7113 Bank Swapper by Khany/Cherry-T] (less complex: bank-exchanging toggle, no memory expansion; 1993)
* [[CPC4MB| CPC4MB memory upgrade by Yarek]] (more advanced; 2005/2006)