A few weeks ago I snapped up an MSX machine on eBay, had wanted one for a while but the MSX range of machines is a very wide, and I wanted an interesting one! Well the one I found is probably the most interesting one there ever was. MSX was an 8bit standard set up by a consortium of Japanese companies in the 80s who were trying to create a range of machines which possessed the then-unheard of feature called software compatibility. So at heart all MSX machines are very much alike, its the bolt on extras that differentiate them.
The one I bought was the Yamaha C5XM machine, an MSX 1 standard machine but its bolt on extra was the heart of the top of the range (at the time) Yamaha DX7 Synthesiser. Its got a honking great synth board stashed away inside which is midi compatible and has over 100 built in voices. Of course MSX software cant use that as its not standard so it has a separate ROM for the music application. They are not common tho as they didn't sell well, it was a niche market and at between 500 and 700 quid a go there were not cheap.
Anyway - having got this machine I not only wanted to play around with the synth module, I also wanted to run up some games - mainly Gunfright - my hands down favourite 8 bit game which surprisingly got an outing on the MSX.
I was to be disappointed, my MSX only has 32KB on-board, which is a drop too little to do anything useful these days. The problem is actually two-fold, firstly the fact I don't have much ram, secondly is the way MSX software is presented these days means that 32KB is less useful than it once was.
As MSX machines all had a cartridge slot, the majority of the software available these days for the emulators is in the format of a ROM dump. Even games that were never originally available on ROM have been snap-shotted and saved as binary files. This is great if you have an emulator as you just load the .rom into the systems virtual ROM slot, its also good if you have a spare ROM cart and an eprom blower as you can make a real ROM cart.
As ROMs are useful and neat, it seems all other formats have died a death, I can't find anywhere where you can download MSX software in non-ROM format. You would assume there is a way to turn the old .rom files back into wav files such as there is for many other formats. Well yes and no, spectrum and oric data files are not really ROM files, (snapshots aside), most are actually block patterns that were once on tape, when loaded sequentially the emulator is running the exact same operations that the tape loader of old was doing, only a damn sight faster. A binary ROM file contains no information about how the software was actually loaded, its just a block of information that appears on the data bus, there is no "how to load and where to start" information that was once part of the tape version of the games. These loaders are no more, stripped off by the process of dumping the RAM into a ROM file. There are what are called "wrappers" generic programs that take a ROM, and wrap a loader around it and spit out a WAV file - sounds just what I need, except there is a RAM overhead. To load a 32KB game (which was most of them) you actually need a 48KB machine as the loader needs to live somewhere and then loads the game code somewhere else), it could be a lot neater, but as the wrapper has to work for every game it cant be too clever with how it does this or many games would not work.
So I still have too little RAM even if the game was originally for a 32KB MSX machine. Even the bloody RAM checker app is 32KB and needs to be blown to an EPROM or loaded via a wrapper you need to have 48KB.
I have an old set of magazines from the 80s in a set of binders that I found in a junk shop for thruppence each, it has an inside and out review of this machine, and it states that this beast has 48K. Sadly the journalists took Yamaha's word for this and it only partially true. MSX machines led the way in misleading spec sheets. It does have 48K inside, but 16K is dedicated video RAM so really I only have 32K usable. Even machines with 64K were loudly touted as having 80KB - cheeky really.
I can find a 16KB RAM upgrade cartridge online for not an insignificant sum, but that would only take me to 48K and the game I really want to run needs 48K anyway, so once wrappedI would need 64KB again. 64KB RAM carts are rare, mainly because they were the top of the range, expensive when new and sold in low numbers. Also I think MSX is only really a loved format in some areas, most of the MSX information online is dead, tantalising links to pages that once held good info now yield only 404 messages. The hardcore MSX crowd have their upgrades that take an MSX1 machine to MSX2 standard, and add multiple megabytes of RAM plus disk drives, hard drives and all sorts of hardware that is not a great deal of use unless you are daft enough to try to make the MSX machine the only machine you use, but I don't want to get into mod scene, and it seems that most MSX machines came with 64KB, only the ridiculously expensive ones ironically had less to keep the price from going even higher.
So faced with the above problem I have decided to bite the bullet, I am going to build my own RAM expansion cartridge from scratch. I managed to find the service manual and schematic for the MSX machine I have, which luckily contains a good description of what the MSX memory manager custom chip does on system bootup. It also has a lot of very good information on the RAM subsystem and the signals presented on the rear connector.
Time for a trip to Jaycar and a rummage in my arcade scrap drawer. Oddly enough the hardest part to source was the edge connector. PCB edges as connectors were very common in the 80s, but were generally a bad idea. Connectors cost money and as you needed the PCB anyway if that could be one half of the connector then it was money saved. In the end I had to buy them online and import them from the US.
Once they arrived I took my wire cutters to an old SCSI cable I rescued from a bin at work for some unknown reason and made the cable I needed. The PCB is a small chunk of prototyping board from the local electronics shop, the TTL logic chips and right-angle edge connector is from an old arcade board and the resistors are from old PCBs I keep to scavenge parts from.
Decided to take the easy road and instead of solder dozens of wires between the two chips to link them together I would just solder them on top of each other. Such a scheme would make electronics engineers weep, but if its good enough for Sir Clive its good enough for me. Round the back is 1 pin that is not soldered to its mate - thats the CS pin which controls which chip is active on the bus at any given time.
I got this far and realised I hadn't allowed for pull up resistors on the data lines, much swearing later and I found I had a resistor network that would do the job, that came from an old microwave oven control panel PCB - don't ask. Its the long yellow thing on the PCB.
Next time I may well make my own PCB as soldering this all together was tedious in the extreme.
Actually the toughest part was working out the best layout for the chips and the resistors, there is no perfect solution and some pins were hard to get to when the thing was fully wired. This is just the data bus to the edge connector via the pull up resistors in the resistor network.
And this is when the address lines, control logic and power feeds are wired in.
All that wiring just for 64KB, imagine the wiring that's built into your 1GB DIMMs!!!
So, deep breath time, plug into the back....
Machine boots, finds new RAM, assigns the 64KB block to be master instead of the 32KB on-board, and she will now happily take a drop of Gunfright!!!
Pleased with myself I are!!!
Am going to cut the PCB in half as the top half is unused then fit it in a small case, will be about the side of a matchbox when that's done.