Amstrad CPC 4MB ROM upgrade
Internal and external 4MB ROM (Flash EEPROM) upgrade for Amstrad CPC.
The upgrade uses some output ports:
|#DFxx||Selects ROM bank (0..255) as read-only. ROM access must be enabled by #7Fxx port. This is usual CPC feature, however CPC6128 has only banks 0 (BASIC) and 7 (DISK).|
|#DExx||Selects ROM bank as write-enabled. ROM can be written in #C000..#FFFF area. Writing also goes to RAM selected in this area! ROM must be enabled by #7Fxx port to be readable. To program a Flash EEPROM a special procedure must be performed (see datasheet).|
|Addresses reserved for enable or disable a group of ROM banks for external upgrade.|
|Addresses reserved for switching between first and rescue ROM chips, also for selecting bank for the low ROM.|
Banks group is a four banks that have the same bits 0 to 2 and 3 to 7 in its number. An example is group of banks 0, 8, 16, 24, another is 1, 9, 17, 23. The groups have two purposes.
External ROM add-ons, like 512kB Inicron ROM-RAM-BOX have dip-switch that can disable any of first 8 groups. This is used, when you don't want all the banks to be initialized. The groups appeard, because the 128kB memory chips were connected pararelly to one dip-switch of 8 slides.
Second reason for groups is that 512kB Flash EEPROM (29F040) has sectors of 64kB. (Sector is the smallest area that must be erased to change at least one bit from 0 to 1.) The 64kB takes 4 banks, and to reprogram bank 1 it is better to erase banks 1, 9, 17, 23 than 0, 1, 2, 3. The 4MB Flash EEPROM (29F320) also has 64kB sectors.
In case of installing a software that takes 3-4 banks (e.g. FutureOS), it is recommended to put it into one banks group.
Rescue ROM chip in internal upgrade
The internal upgrade completely removes the original ROMs. In case of Flash programming fail or software bug, the Flash contents could be damaged. This would make the machine unuseable. So, the rescue ROM is to be used to boot the computer and load software to correct the first Flash. Also, it can contain some repair software (when the chip is larger than 64kB), that will clear the first Flash and fill it with the minimum contents.
Rescue ROM is activated by pressing [F9] key on keyboard, while power-on or reset. Rescue ROM and first ROM can be also swapped by software, using the #DBxx port. As this port can be in future also used to change the low ROM bank, the low byte and value OUTed are important (please use OUT #DB9F,#9F). To select rescue ROM, set the AY port (keyboard) to output and clear bit 3. To select first ROM, set the keyboard column (PC0..PC4 of 8255) to value 10 (AY port should be in normal configuration). Otherwise the ROM selected while OUT depends on [F9] key.
It is not recommended to reprogram the rescue ROM without stable first ROM. In case the rescue ROM fails, the ROM must be removed and programmed with an external programmer, or special rescue interface must be connected to Expansion slot.
Low ROM bank
One ROM bank range 1..31 must be reserved for the low ROM, that is paged to #0000..#3FFF. The bank is selected to 31 by resistors (in CPCF-105 board). By rewiring the resistors other bank can be selected. Or the resistors can be driven by dip-switches, so the bank is manually selectable.
There are future plans for a board, that could select the low ROM bank with #DBxx port. Writing to this port also changes the high ROM bank, so OUT #DFxx,... must follow with number of required high ROM bank.
Internal 512kB to 4MB ROM upgrade
This upgrade replaces the 40015 and 40025 chips and uses some onboard logic that is not needed anymore. It includes two ROM chips. First is 512kB Flash EEPROM (29F040) that can be expanded to 4MB, or battery backuped SRAM. The second is 64kB to 512kB EPROM or Flash EEPROM and is used only for rescue purposes, when the first chip contents gets corrupted while programming. There are 3 boards available at this moment.
CPCF-105 is the basic board, replaces internal ROMs. There are two 32 pins precise sockets on it and some logic. One socket is for first ROM, second for rescue ROM. The rescure ROM socket can be rewired to accept 64/128kB ROM. Into this board a memory in DIL32 (or DIL28 for rescue) can be inserted.
CPCF-201 is small board, that converts memory in TSOP32 case into DIL32 one. Also contains extra logic, so up to 8 such boards can be connected parallely, giving 4MB when each board has a 512kB chip (29F040). The two logic chips must be mounted on only one such board. Boards set is connected with vertical copper wires and is insertable into DIL32 socket. The TSOP32 case is very thin and 29F040 TSOP can be get at very low price.
CPCF-301 is a board that converts two TSOP32 memories into DIL32. There's no space for the logic, so requires at least one CPCF-201. It can join two sets made of CPCF-201 boards to reduce height while full 4MB is mounted under keyboard.
Files for download
- cpc6128d.zip 39.1kB (2007-09-18 00:50), uploaded by Jarek Adamski
- Standard CPC6128 ROMs packed into a 512kB file for 29F040 programming. The disk support is active in bank 15 and parked in bank 7.
- cpcf-904.png 56.0kB (2007-07-03 01:50)
- Schematics of changed needed to CPC6128 board PTNO.Z70210 for internal Flash upgrade.
- cpc664.zip 39.0kB (2007-06-28 15:48)
- Standard CPC664 ROMs packed into a 512kB file for 29F040 programming.
- cpc6128.zip 39.0kB (2007-06-27 15:31)
- Standard CPC6128 ROMs packed into a 512kB file for 29F040 programming.
- cpcf105t.jpg 63.1kB (2007-06-19 23:38)
- A photo of mounted CPCF-105 board.
Links to other pages
- ROM :: Amstrad CPC
- Extra memory that behaves like ROM banks. If SRAM with battery backup or EEPROM are used, the contents can be software changed.
- ROM, EPROM, EEPROM, PEROM
- Memories with parallel address and data lines.
- FutureOS / CPC
- Operating system for Amstrad CPC.
- Amstrad CPC
- Amstrad CPC - main board types, ROMs.