Mr Floppy

A project log for Arduino IO card for Amstrad CPC 6128

Hooking an Amstrad CPC 6128 to the modern world with HDMI converter, USB floppy and Arduino based expansion card

darrenLindleydarrenLindley 01/19/2020 at 23:280 Comments

Unlike many other home computers of this era which used a 3.5" floppy disc drive, these machines used a 3" floppy disc (apparently they were cheaper), you cannot get these discs and I have only one.  I took the floppy drive out and discovered the drive belt had died,  I wont be using this drive but Ill will fix it because I can, so I order one of these from Spain.  

Apparently it is possible to connect a 3.5" floppy drive to the machine using the external floppy port using an old floppy cable that has an edge connector. The internal drive has 26 pin connection, 3.5" drives have 34 pin connector, you can make a cable up but the external floppy drive port has 34 pins and is compatible with these drives. At the moment I have no way to get programs in and out of this machine, even when I replace the floppy drive I wont be able to connect it up to another machine, so if I can connect a 3.5" floppy I could get a usb converter and connect it up to another computer....but I still need to buy 3.5" floppys.  I realised this is silly.  

There are USB floppy drives which connect via a floppy cable and store floppy images on usb sticks.  I thought I could just make one of these using a micro controller but Ill need a working floppy drive to reverse engineer the signals. I ordered a cheap Gotek USB Floppy and replace the floppy using the internal 6 pin connector instead of using the exteral 34 pin floppy port. Thats going to take some time to get here so I waited. 

I bought a GoTek System SFRc922D USB Floppy Disk Emulator for about $32 AUD, It looked the same as the ones I had seen on various Amstrad floppy upgrade sites. Soon as I got it I took it apart to find it has a STM32F105 ARM Cortex-M3 CPU, I located all the jumpers to do the reprogramming with Flash Floppy so it will recognise the Amstrad DSK files.

THe first thing I needed to do is make a cable to convert the 26pin internal floppy cable to the 34pin connector on the Gotek floppy emulator. I gave this a few goes using secondhand cables I had lying around but none worked so I decided to work out exactly what pins need to go to what.

The pins on the underside of Gotek board are all earths, one of these should connect to one of the odd numbered (underside) pins of the internal FFD connector. The even numbered pins (upperside) match up on the higher number end but the lower 5 dont, the tenth pin on the 36pin connector goes to pin 2 on the 26 pin connector. To make sure Im making the correct connections I followed schematics of the 6128 and found that pin36 of the Gotek should connect to pin 2 of the exteral FFD edge connector terminal and pin15 of IC203 on the 6128 motherboard.  Pin8 on the Gotek board should connect to pin 28 of the exteral FFD edge connector terminal and pin4 of IC203 on the 6128 motherboard (see table below).

Gotek pin       Int FFD pin     CPC motherboard
34 --------------- 26                  External FFD port pin 2 / IC203 pin15
32 --------------- 24
30 --------------- 22
28 --------------- 20
26 --------------- 18
24 --------------- 16
22 --------------- 14
20 --------------- 12
18 ---------------- 10
16 ---------------- 08
14 ---------------- 06
12 ---------------- 04
10     nc   ,------ 02                   External FFD port pin 28 / IC203 pin4
08 ---------"
06     nc
04     nc
02     nc

I made a circuit on a little piece of strip board just like the diagram above and underneath I soldered together all the pins of the 26pin connector and ran a wire to one of the underside pins of the 34pin connector. I made it a little too wide but it just fits.

THE POWER CABLE NEED TO BE CONVERTED. The 5v and 12v lines are opposite on the Amstrad floppy compared to the standard floppies, so all I did was unclip the terminals with a small screw driver and put the 5v one where the 12v one was and the 12v where the 5v was. Its a good idea to label this alteration incase the original floppy is replaced in the future.

The Gotek needs to be reprogrammed, I watched this video  to get an overall view of what needs doing then I followed this tutorial and used the stm32flash Linux application to program Gotek as described on FlashFloppy site 

Initially it didnt work, the problem could be the connector or the software or the Jumpers. I had a jumper on the S0 pin, I changed this to the S1 pin and it worked.  I printed out a frame for the board I found on Thingiverse using my aging 3D printer using red filament, Ill have to paint it.  I received the ssd1306 .9" I2C OLED display I ordered previously, hooked this up and changed some configuration settings on the USB stick, worked great, it was that simple.

The display is hard to see because it faces straight out and is mounted behind a hole on the front panel, it would be better to angle the display 45 degrees up. and either could mount it on the outside with the PCB showing or behind something seethrough so only the screen is showing.  I remembered I was given a lifeless fitness tracker (one that is broken, not one for the lifeless, that would be silly), the screen fits perfectly behind smooth, rounded cover, I could print out a holder angled at 45 deg and bolt that onto the front panel.

The frame I printed seems to only bold to the chassis at one point I cant drill holes or add other points.  The other hole the disc drive bolted to is a fair distance from the back of the new board, to anchor to this I would need to design, print and fit a bracket.  The old floppy has a bracket that bolts between two risers and to the floppy drive, I could bolt this in giving me two holes closer to the board on which to bolt brackets. There are two unused mounting holes on the board I  could attach such a bracket that extends across to a 'C' shaped pillar on the side of the chassis.  I designed this in SCAD, printed this off and it worked.