Retro computing and loading stuff

So after getting monitor output working on these old computers the next challenge is loading stuff. Generally, just about every game and application ever released for these old platforms has been ‘captured’ and is available for download. In the case of the Electron, the actual audio for tape loading of various games has been captured. For the Amiga, disk images have been dumped (often in ADF format ; just a track by track copy of the original disk).

So for the Electron it is relatively straight forward to play your audio files via FreeUEF out the audio out of your modern PC through  an appropriate cable to the cassette input of the Electron. Type ‘CHAIN “” ‘ on the electron and ‘hope’ it loads. Just like back in the 80s, the tape load might fail because the volume was too loud or too soft … and tape players back then often had a ‘tone control’ or something similar as well. For me it’s been problematic finding the right settings. I was originally running FreeUEF in a windows VM on my macbook which meant you had the volume control of the Windows VM plus the Volume control of the macbook to complicate things. On top of that I found FreeUEF tended to crash or lockup quite a bit. I then tried FreeUEF’s mode of dumping out a wav file, transferred the wav file back to OSX on the macbook and then tried playing it via iTunes. This was a lot more successful once I found the equaliser settings and set ‘Treble booster’.

The Amiga uses a floppy drive instead. Some people might think you’d just run some program on your modern PC, perhaps with a floppy attached and then write out a ADF file to it, then load it in the Amiga. Due to historical reasons, the very low level floppy format of a PC floppy is very different to an Amiga one. There are some programs for a PC that can read Amiga floppies (such as adfread), but the closest thing to ‘natively writing from a PC’ is ADTWin which requires you to wire a special cable from a PC parallel port to a floppy drive.

Of course you can transfer an ADF image over a serial link from a PC to an Amiga and get the Amiga to write the data itself using a utility called transwarp. Its not very fast (19200 bps!!) but seems to get the job done. However, I had a big problem before I even got started ; finding a working Amiga drive.

So I have two Amiga 500s. The first one had a dead internal drive and the external drive was working fine. The 2nd one had an internal CHINON drive that was a bit ‘hit and miss’ and an external drive that looked like it was rusting away .. and certainly did not work. So essentially there was one ‘good’ drive which happened to be an external one. Amigas (by default) don’t boot off external drives (at least not using Kickstart 1.2 or 1.3). I did originally get things working by hacking the disk select lines so I could boot off the working external drive … but I was keen to get a working internal one.

So the Amiga used a 3.5″ DD floppy drive which was ever so slightly different to a PC one such that you cannot just swap in a floppy drive from a PC. Because floppy drives tend to wear out the net has quite a few ‘howtos’ on modifying a PC floppy drive to work in an Amiga. I had a few Mitsumi D359M3 drives so I set about modifying one. I followed this amibay how to on modding the D359M3 which is based on some german notes. It appeared to mostly work with the occasional strange behaviour of sometimes booting to a blank AmigaDOS terminal window when there were no disks in any drive. It also would not detect a HD floppy if I inserted it … but when I covered up the HD hole on the floppy it was detected.

I was keen to have it detect all floppies as DD ones regardless of whether they were HD or not (I bought some new floppies and got tired of having to put some tape over the corner of each of them). Trying to find detailed information about old PC floppy drives is not that easy … but a few things I discovered

– The hack from the amibay link ties the RDY signal to the MOTORON signal … so if the motor is on the drive is assumed to be ready. That doesn’t sound right, but seems to work. The other strange thing was that the DISKCHANGE signal went through a jumper called DEN2. DEN2 is actually for the DD/HD sense button, so the DD/HD sense button was being used as the disk insertion detection (which is why the Amiga never saw a drive inserted if it was a HD one).

– The drive already had a quite useable DISKCHANGE signal wired to pin 34 of its connector. Now for whatever reasons, an Amiga drive has pin 34 as RDY and pin 2 as DISKCHANGE.

So I changed a few things;

– So the original hack had the trace cut from the controller chip to pin 34, and then pin 34 wired to pin 4. I left the wire in place, but for the trace that I cut, I scraped away a bit on the side of the cut going to the controller chip, and soldered a wire going to pin 2 of the floppy connector

– I removed the link across DEN2

– Where you see the white connector coming in at the top of the controller board, you’ll see labels for  +5V, GND, WP (write protect I guess) and a few others. Find the one called HD and solder a wire between it and GND. This basically forces all disks to appear to have no hole where the usual HD hole is … and therefore appear as DD disks. This was quite an interesting one for me, as I had earlier found that the left hand side of DEN1 selects the motor speed; if it is +5V then the motor is locked at 300rpm like a normal DD drive. Strangely this only worked ‘most of the time’, with some games (Gianna Sisters)  not loading properly at all. Weird. Anyway, locking the HD switch to GND seems to be the better way to do it.

And I kept the same stuff per the cut and wire for the SEL0 on pin 10 of the floppy connector.

Mounting the drive in the Amiga 500 was a bit tricky. A PC drive sits lower and the eject button won’t line up. I used some nuts in various places to raise the drive a little, and I removed the eject button entirely, bent the metal around where the eject button should have gone .. and basically use a screw driver poked into the eject button hole to eject a floppy.

So that got me going with a working internal floppy again. So I could transfer ADFs from linux via null modem to the amiga. Originally I was using an FTDI usb serial adapter from the linux system … but that worked incredibly unreliably. So  ‘real’ serial ports have pretty much disappeared off most modern systems, but a lot of modern motherboards still have a header for ‘COM1’ and you just need the right DB9 to 10 pin adapter to get a real serial port going. Anyway, using my linux boxes native COM1 port made transfers seemingly 100% reliable at 19200 bps using transwarp.

Another interesting thing re getting the floppy drive working, is that the 2nd Amiga I recently bought came with 200+ old floppies full of games .. and initially I thought ‘great’, but I would say 95% of these old floppies are full of errors. Mouldy? or dusty or something. Anyway I think I will sadly have to throw them all out.

So my Atari 800XL is the next thing to tackle. I still haven’t done the SVIDEO hack on it … and the SIO bus was basically a TTL serial bus as far as I can tell … so in theory you can hook it straight into a PC with a TTL serial port and run something like aspeqt to simulate an Atari floppy drive.