Description
The MegaFlash is a ROMBoard similar to the MegaROM. It provides up to 32 virtual ROMs (Numbered 0 to 31) in a single 512K Flash ROM, but unlike the MegaROM, the MegaFlash can be populated directly from the CPC using TFMs MegaFlashROManager (available for Basic and FutureOS) without the need for an EPROM Burner or any additional hardware. Other ROManagement software will currently not work with the MegaFlash.
Being based on Flash technology it also doesn't require a battery like other solutions did in the past. Unfortunately, due to complexity, the PCB design needs to be double-sided, making this project a little more difficult for hobbiests to build than the MegaROM was.
The complete hardware of the MegaFlash was developed by Bryce and released in August 2011.
If you have any further questions regarding this project contact Bryce through the Wiki Forum.
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 Flash Memory. This must be a W29C040-90 (ie: the Winbond version) to be fully compatible with TFMs MegaFlashROManager The five other ICs are standard TTL Logic devices and only need to be of the type 74LSxx (74HCxx, 74Fxx etc will also work but are not necessary in this application). The finished PCB is approx. 70mm x 55mm.
Parts List
This is the Parts list for the Centronics version:
Component | Quantity |
W29C040-90 | 1 |
74LS374 | 1 |
74LS32 | 2 |
74LS02 | 1 |
74LS20 | 1 |
100µf 16V Electrolytic Capacitor | 1 |
100nf Ceramic Capacitor | 6 |
1K 1/4W Resistor | 3 |
220ohm 1/4W Resistor | 1 |
1N4148 Diode | 3 |
3mm LED (red) | 1 |
32 Pole PLCC IC Socket | 1 |
50 (2x25) way Header RM 2.54 | 1 |
3 way header RM 2.54 (for jumpers) | 2 |
Jumper Bridge | 2 |
DPDT Slider switch RM 2.54 | 1 |
50 way Centronics plug | 1 |
50 way flat cable | 1 |
50 flat cable connector | 1 |
Note: In the picture above and also in the parts list, I have chosen to use a header connector on the PCB. I did this because I intend using the MegaFlash 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. You may choose a direct connection to the PCB if you don't need this feature, dropping the price another few cents.
Construction Tips
As the PCB design is double-sided there are no bridges this time. The components may be added in the order you prefer.
The polarity of C7 and diodes D1 to D3 is critical, the other capacitors and resistors R1 to R4 may be soldered in either direction. The orientation for the ICs can be found in the part position layout file below (Coming Soon).
Closing an IDC connector on a 50way flat cable can be a difficult task and if not done properly, may cost you a connector or two. I recommend first putting the cable in position and pushing it slightly closed to keep the cable in place, then place the connector in a bench vice with rubber between the metal of the vice and the connector, then slowly closing the vice on the connector until it reaches it's home position. You may have to re-position the connector a few times until it's completely closed. Bad connections with these connectors are the cause of many peripherals not working, the pins in the centre cause the most issues, so turn the connector 90° in the vice for a final squeeze to make sure these pins are properly connected. Don't try closing an IDC connector with a hammer, pliers or other tool that only applies pressure to a tiny area of the connector, it will break!
Using The MegaFlash
It is possible to populate the Flash Memory with a good EPROM Burner. If you choose to do this, the ROMs should be saved to the following addresses. The Memory allocation file is also available below in PDF Format.
However, using TFMs MegaFlashROManager Software, you can populate the MegaFlash directly from the CPC. All instructions on how to use the ROManager software can be found here.
When using the ROManager software to write ROMs to the MegaFlash and other functions such as Delete / Park, you will be requested to switch to Write-mode. Only switch to write mode when requested to do so. Leaving the write mode switched on, or restarting the CPC while write-mode is enabled can cause the saved ROM images to be corrupted. The red LED is lit when in write-mode.
The CPC464 and 664 only initialises ROMs 7 to 0 at start up and all other CPCs initialise ROMs 15 to 0. The additional ROM positions can be either initialised by installing the Booster ROM in position 15 or by manually initialising them. Because ROMs 16 to 31 are largely ignored by the computer, this area of memory does not have to adhere to the normal ROM header rules and can also be used to store generic data such as graphics or music data.
Jumper Settings
On the PCB there are two jumpers, which need to be set. Jumper 1 enables or disables ROM 0 on the MegaFlash to allow users to replace the internal ROM on the CPC. Jumper 2 enables or disables ROM 7 on the MegaFlash to choose between the CPCs internal OS ROM or an alternative OS on the MegaFlash. The jumpers need to be set to the correct position otherwise the CPC may not boot. Using the ROManager software it is also possible to enable or disable any of the other 30 virtual ROMs as required.
Compatibility
The MegaFlash is compatible with all 464, 664, 6128, 464+ and 6128+ and can be used to host standard ROM images such as AMSDOS, BCPL, FutureOS, MAXAM, Protext, Utopia, VDOS, XD-DOS.
CPC Specific Limitations:
- CPC464/664 - The 464 and 664 only scan and initialise ROMs 7 to 0 at start-up. ROMs 15 to 8 are only accessable if manually initialised.
- CPC6128 - Classic CPC6128 can not overwrite the internal ROM 7 with an external device, to make use of the external ROM 7 the CPC must be modified to allow the internal ROM 7 to be disabled (eg: By adding a switch to the internal ROMs Chip Enable pin)
The MegaFlash fully decodes the Address and Data buses, so it should not clash with any other official expansions installed in parallel or plus cartridges. However, adding two ROMBoards to a CPC in Parallel will cause crashes in some circumstances.
Resources
File:MegaFlash Layout.zip - PCB Track Layout (Cadsoft Eagle brd format)
File:MegaFlash Memory Map.pdf - EPROM Memory Allocations Chart
A full list of available ROMs can be found here.
Troubleshooting
CPC crashes at startup?
Solution 1:
In the unlikely event that you program a ROM (in positions 0-15) with a bad image / experimental program / a picture of your cat, then there's a chance that the CPC will crash when trying to initialise the ROMs. And you can't erase the rubbish without a running CPC. For ROMs 0/7 this isn't a problem, because you can manually disable them with the jumpers, but not with the other positions.
Here's the solution to get out of this catch 22:
First disconnect the MegaFlash from the CPC and carefully remove the Flash from its socket. The socket has two slits on opposite corners of the IC, using a very small screw-driver you can slowly ease the IC out of the socket.
Now plug the Flash-less MegaFlash into the CPC and start as normal (make sure both ROMs 0 and 7 are disabled on the MegaFlash). The CPC will start as normal and you can now replace the Flash in its socket (do this at the Basic prompt, don't start any programs beforehand). It only fits in one direction, due to one corner of the IC being tapered.
You can now start the ROManager software and erase the offending image.
Solution 2:
First you need to add a push button: One side of the button goes to GND. The negative pin of the 100µf capacitor is probably the safest location to solder the wire to GND. The negative pin is the one nearest the Flash socket. The other side of the button should go to the centre pin of the ROM7 jumper.
If you want to start the CPC with no MegaFlash ROMs enabled, just remove the ROM 7 jumper completely and hold the button pressed while you are switching the CPC on, then replace the ROM 7 jumper as soon as you get the Ready Prompt. DON'T press this button while the Jumper is still in place! In fact to make it safer, you could use a two pin jumper-header instead of a button. Then you just move the Jumper from the normal ROM 7 jumper-pins to your new pins and move it back when ready has appeared.
It's not a really great solution, but it's safe for your CPC, your MegaFlash and the PLCC socket will get to live a lot longer.
Solution 3:
Activate the Autostart option of RSX |RMA of the MegaFlashROManager ROM version (located at ROM position 15) using SOFTBRENNER. Reset your CPC, the FlashROManager will start immediately. This way can be a bit tricky.
Rom Pack Download
Also,Cholo has created this ROM pack to get you started. The contents are as follows:
- Amram 2 - Sideways RAM toolkit ROM (19xx)(Silicon Systems)(AMRAM2.ROM).zip
- Amsdos 720K (19xx)(-)(720KAMSD.ROM).zip
- Amstrad Eprom Programmer (19xx)(Fleet Microsystems Ltd & F.Kup)(FLTEPRM.ROM).zip
- Amstrad Toolkit v1.4 (1986)(Bee Bug Soft)(TOOLKIT.ROM).zip
- Bos v2.1 (1987)(Vortex Gmbh)(BOS21.ROM).zip
- Cage Comms v1.1 (19xx)(D. Gorski and I. Hoare)(CAGE11.ROM).zip
- Communication Interface Unit Driver Softare 1.5 (1986)(Panda Electronics Ltd)(PIADR.ROM).zip
- Comstar v1.25 #1 (1986)(Honeysoft - Pace)(COMSTAR1.ROM).zip
- Comstar v1.25 #2 (1986)(Honeysoft - Pace)(COMSTAR2.ROM).zip
- Copy Lock v6.0 (1988)(Romantic Robot)(COPYl60.ROM).zip
- Copymate + v3.2 (1990)(Marco Vieth)(De)(COPYM32.ROM).zip
- CPC 464 Basic (1985)(Amstrad)(BASIC.ROM).zip
- CPC 464 Modified OS (19xx)(-)(Da)(CPC464DK.ROM).zip
- CPC 464 OS (1985)(Amstrad)(OS.ROM).zip
- CPC 464+ and 6128+ Basic (1991)(Amstrad - Locomotive)(BASIC.ROM).zip
- CPC 464+ and 6128+ OS (1991)(Amstrad - Locomotive)(OS.ROM).zip
- CPC 464+ Plus A2 (1991)(Amstrad - Locomotive)(ROMPLUSADOS.ROM).zip
- CPC 664 Amsdos (1985)(Amstrad)(AMSDOS.ROM).zip
- CPC 664 Basic (1985)(Amstrad)(BASIC.ROM).zip
- Cpc 664 OS (1985)(Amstrad)(OS.ROM).zip
- CPC 6128 Basic (1985)(Amstrad - Locomotive)(Fr)(FBASIC.ROM).zip
- CPC 6128 Basic (1985)(Amstrad - Locomotive)(Sp)(BASIC.ROM).zip
- CPC 6128 Basic (1986)(Amstrad - Locomotive)(BASIC.ROM).zip
- CPC 6128 OS (1985)(Amstrad - Locomotive)(Fr)(F6128OS.ROM).zip
- CPC 6128 OS (1985)(Amstrad - Locomotive)(OS.ROM).zip
- CPC 6128 OS (1985)(Amstrad - Locomotive)(Sp)(S6128OS.ROM).zip
- CPM Accessory Rom 1 (1988)(Graduate Software)(CPMACC1.ROM).zip
- CPM+ #1 (1988)(Graduate Software - Digital Research - Amstrad)(CPM1.ROM).zip
- CPM+ #2 (1988)(Graduate Software - Digital Research - Amstrad)(CPM2.ROM).zip
- Disc Demon v1.1 (1986)(Bee Bug Soft)(DDEMON.ROM).zip
- Disc Power (19xx)(-)(DISCPWR.ROM).zip
- Discology Disccopier (1987)(Meridien Software)(DISCOLOG.ROM).zip
- Discology Filecopier (19xx)(-)(Fr)(DISCFILE.ROM).zip
- Discology v6.0 (19xx)(Meridien Software)(DOLOGY6.ROM).zip
- Dk'Tronics Speech Rom v1.1 (19xx)(Dk'Tronics)(DKSPEECH.ROM).zip
- Dos Copy v1.3 and Crime v1.3 (1991)(-)(DOSCRIME.ROM)[ROM v2.1].zip
- Dragon Breed Rom 1 (19xx)(Dragon Breed)(DBREED1.ROM).zip
- Extended Basic v1.1 (1986)(John Morrison)(EXBASIC.ROM).zip
- Hack It-Le Hackeur (19xx)(Siren Software)(En-Fre)(HACKEUR.ROM).zip
- JL Utilities v1.2 (19xx)(J0rn Lorentzen-JLCS)(JLUTIL12.ROM).zip
- JL Utilities v2.1 (19xx)(J0rn Lorentzen-JLCS)(JLUTIL21.ROM).zip
- Jm Eprom Programmer (1985)(John Morrison)(JMPEPRM.ROM).zip
- Jm Maxidos v1.2 (19xx)(Nemesis)(MAXIDOS.ROM).zip
- K.D.S Serial Interface & Comms Pack 5 v4.2B (19xx)(K.D.S. Electronics)(KSERIAL.ROM).zip
- Kns Rom 6128 v1.01 (1989)(MFW)(KNSROM.ROM).zip
- Lock Smith (1985)(Bee Bug Soft)(LOCKS.ROM).zip
- Master File 128 v2.2 (19xx)(Campbell Systems and GoldMark)(MFILE128.ROM).zip
- Master File 464 v1.1 (1984)(Campbell Systems and Amsoft)(MFILE464.ROM).zip
- Micro Music Creator #1 (1988)(First Byte)(MMC1.ROM).zip
- Micro Music Creator #2 (1988)(First Byte)(MMC2.ROM).zip
- Micro Style Rom v2.11 (1989)(Micro Style - PotPlant Systems)(STYLE.ROM).zip
- Multiface 2 (19xx)(Romantic Robot)(MULTFACE.ROM).zip
- Nigdos 2.24 (1988)(-)(NIGDOS.ROM).zip
- Nirvana 1.1 (1990)( GoldMark Systems)(NIRVANA.ROM).zip
- Nwc Utilities 1.1 (19xx)(Nwc)(NWCUTIL.ROM).zip
- Odd Job 2.2 (1985)Pride Utilities - GoldMark)(ODDJOB22.ROM).zip
- Pro Skey - Procopy v1.2 and Speed Key (1990)(Nemesis)(PROSKEY.ROM).zip
- Programmer's Toolbox 1.0a (19xx)(-)(TOOLBOX.ROM).zip
- Programmers Tool Box v1.2a (19xx)(-)(PT12A.ROM).zip
- Rodos v2.11 (19xx)(Romantic Robot)(RODOS211.ROM).zip
- Rodos v2.15 (19xx)(Romantic Robot)(RODOS215.ROM).zip
- Rom Dos (1988)(Kds Electronics)(ROMDOS.ROM).zip
- Rom Dos XL (1992)(Siren Software Ltd - Kds Electronics)(ROMDOSXL.ROM).zip
- Rom Dos XL v4.88 (1993)(Siren Software Ltd)(RDOSXL48.ROM).zip
- Super Power Mailing List (1985)(Micro Power Ltd)(MAIL.ROM).zip
- Super Rom v1.0 (1991)(Vorax)(SUPER.ROM).zip
- Super Romplus - Auto Rom Control System 1.6 (1986)(Britannia Software Ltd)(ARCS16.ROM).zip
- System-X v2.1 (1985)(Pride Utilities)(SYSX21.ROM).zip
- T3m Rom (19xx)(-)(T3MROM.ROM).zip
- Transmat v2.1 (1985)(Pride Utilities)(TMAT21.ROM).zip
- UNCR v2.4 - Cruncher Accessory ROM for CPM (1988)(Graduate Software)(CPMCRCH.ROM).zip
- Utility Suite (19xx)(-)(ROB3ROM.ROM).zip
- Vorax's CPM Plus Rom #1 (19xx)(Graduate - Vorax)(CPM1.ROM).zip
- Vortex Ram - Expansion Card ID (19xx)(Vortex)(De)(VRAMID.ROM).zip
- X-Ddos (1987)(-)(XDDOS111.ROM).zip
- XROM Eprommer v1.16 (1986)(Timatic Systems)(XROM.ROM).zip