MegaROM
Contents
Description
The MegaROM is a low-cost replacement for a standard ROMBoard, but rather than using an array of 16k EPROMs as traditional ROMBoards use, the MegaROM uses a single 8x128k (1Mbit) or 8x256k (2Mbit) EPROM (or Flash EPROM) divided into 16k blocks. This not only reduces the size of the device significantly, but due to the fact that 16k EPROMs are a dying breed, it is much easier and cheaper to find a single 8x256k EPROM than buy sixteen 16k EPROMs.
The original idea for the MegaROM came from discussions with TFM/FS. The main goals being that it would offer up to 16 ROM positions, be very low cost and be a single-sided PCB design so that it could be easily built by most electronic hobbyists.
Warning / Disclaimer
Although I have taken the utmost care preparing this documentation, I do not guarantee that it is error free and I accept no responsibility for damage to anyone’s CPC, other personal equipment or injury inflicted on you or others.
The Circuit
The main component on the PCB is the EPROM itself. This may be any pin compatible 8x128k (8 virtual ROMs) or 8x256k (16 virtual ROMs) part such as the 27C1001 (8x128k UV EPROM), 27C2001 (8x256k UV EPROM), 28F020 (8x 256k Flash EPROM). The EPROM should have a response time of 200ns or less. The five other ICs are standard TTL Logic devices and only need to be of the type 74LSxx (74HCTxx, 74Fxx etc will also work but are not necessary in this application). The unconnected pins on the EPROM in the schematic above, should be connected to the associated Address and Data bus pins of the 50way connector. I just left them out for clarity.
Parts List
As always, one of my priorities is to keep the price as low as possible, the cost of the entire board should come in at under 11€. Here’s the Parts list (including a 8x256k UV EPROM) and their approximate prices for a Centronics version:
Component | Quantity | Price | Total |
27C2001 | 1 | 3.90€ | 3.90€ |
74LS374 | 1 | 0.25€ | 0.25€ |
74LS32 | 2 | 0.32€ | 0.64€ |
74LS02 | 1 | 0.31€ | 0.31€ |
74LS20 | 1 | 0.33€ | 0.33€ |
100µf 16V Electrolytic Capacitor | 1 | 0.04€ | 0.04€ |
100nf Ceramic Capacitor | 6 | 0.03€ | 0.18€ |
1K 1/4W Resistor | 1 | 0.05€ | 0.05€ |
1N4148 | 1 | 0.02€ | 0.02€ |
32 Pole IC Socket | 1 | 0.50€ | 0.50€ |
50 (2x25) way Header RM 2.54 | 1 | 0.19€ | 0.19€ |
3x 3 way header RM 2.54 (for jumpers) | 1 | 0.05€ | 0.05€ |
Jumper Bridge | 3 | 0.05€ | 0.15€ |
50 way Centronics plug | 1 | 1.80€ | 1.80€ |
50 way flat cable | 1 | 0.20€ | 0.20€ |
50 flat cable connector | 1 | 0.25€ | 0.25€ |
160x100x1.5mm 35µ Single Sided photo-resist PCB | 1 | 1.70€ | 1.70€ |
10.56€ |
Note: In the picture above and also in the price list, I have chosen to use a header connector on the PCB. I did this because I intend using the MegaROM on both a UK CPC464 and a German CPC6128 and by using a header connector I can swap the connection cable to suit which CPC I'm connecting to.
Construction Tips
Due to the fact that I needed the PCB to be single-sided, I was forced to have quite a few bridges in the layout. These should be soldered on first, because I have placed as many as possible underneath the ICs to keep the design looking tidy. You should use insulated wire for the bridges to avoid short circuits, because they are very close to each other. In the documents below there is bridge layout plan with just the bridges highlighted to make things easier.
The other components may be added in the order you prefer. For C6 (100µf Electrolytic) there are mounting positions for both radial and axial type parts. You only need to drill the two holes you require, the other two should be left un-drilled.
The polarity of C6 and D1 is critical, the other capacitors and R1 may be soldered in either direction. The orientation for the ICs can be found in the part position layout file below.
The finished PCB is 73mm x 73mm. The four holes (M3) in each corner can be used for mounting within a housing or as I have done here, adding legs to keep the PCB off the desk. If you use metal parts as I did, you will need to add plastic isolation beneath the metal parts to avoid short circuits or damaging the tracks that are routed under the metal.
Using The MegaROM
Using your favourite EPROM Programmer, you can burn the ROM images to the locations shown below. You can either do this ROM for ROM or compile one single ROM file to burn in one go. You should set the EPROM programmer to only write to the area required, in case you want to add additional ROMs later, any unwritten area will be regarded as empty by the CPC. Below you can see the memory allocation for each virtual ROM within the EPROM. This file is also available below in PDF Format.
Jumper Settings
On the PCB there are three jumpers, which need to be set. Jumper 1 enables or disables ROM 7 on the MegaROM to allow use of the internal ROM on the 6128. Jumper 2 enables or disables ROM 0 on the MegaROM to choose between the CPCs internal Basic ROM or an alternative Boot ROM on the MegaROM. Jumper 3 is used to select which type of EPROM is installed. If a 8x128k EPROM is installed, the jumper must be set to the correct position otherwise the CPC will not boot. If a 8x256k EPROM is installed, the jumper can be set to 256k to enable all 16 ROMs or to 128k to disable the upper 8 ROMs (8-15).
Compatibility
The MegaROM is compatible with all 464, 664 and 6128s. It may also be compatible with the CPC plus, but this has not yet been tested.
Resources
File:MegaROM Layout.pdf - PCB Track Layout
File:MegaROM Bridges.pdf - PCB Bridge Position Layout
File:MegaROM Partpos.pdf - PCB Component Position Layout
File:MegaROM Memory Map.pdf - EPROM Memory Allocations Chart
Further development
I am currently working on a PLCC (that's those even smaller EPROMs with pins on all four sides) version of the MegaROM. The functionality is identical, it's just smaller. If 73mm x 73mm is too big for you, then wait a bit, the new layout will be along soon.
If you have any further questions regarding this project, please contact me through the Wiki Forum.
Bryce.