Transform the Gotek Floppy Emulator into an Amiga Floppy emulator

DISCLAIMER :
No software from Gotek System was used or reversed to make this new firmware.

Informations and softwares on this page are provided in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
The author will not be held liable for any loss, damage or failure or any incident related to the use of this software and informations.
It is not a commercial work and had been done at my free time so don’t expect instant support or warranty.
The informations and softwares provided on this page can’t be sold directly or indirectly into a preflashed device.

 

Warning – be aware :
The Gotek drive with this firmware can now be found for sale on several places.
Be careful with these resellers, they are generally omitting some important things:
- I am not affiliated with any of these resellers !
- The actual firmware is in beta version and still updated : The serial cable is strongly recommended to update the drive !
- The price of a normal Gotek drive is around 27$, shipping included ! The serial cable/adapter cost only some dollars.
- No, really, flashing the drive is not so hard…
- I will not do any support for the resellers account. If you have any problem with a preflashed drive, please contact your reseller.
- Any accident ? Data lost ? Damaged hardware ? Please contact your reseller.
Thanks for your understanding.

 

Some time ago i bought one of these very low cost USB floppy emulator from ebay to play some ADF files on my Amiga. Unfortunately these drives was unable to support/emulate the Amiga sectors encoding scheme and couldn’t work on Amiga computers… But now all of this is past…

After some hours of coding the the Gotek firmware can now be replaced by an Amiga compatible firmware. This firmware allows to load any ADF file present on the USB key and play it on the Amiga !

A special boot ADF file allows to select the game or demo to start.

The Gotek Floppy emulator working on an Amiga 600 running the State Of The Art Demo :

Actual main features of this firmware :

- Read & Write 880KB ADF Files.
– USB Key support.
– FAT12,FAT16 & FAT32 support, Subfolder support.
– Amiga software to select the ADF files on the USB key.
– Tested on A500 & A600. Should work on all Amiga.

HOW TO USE IT  ?

This is quite simple : You have just to copy all your favourite ADF files on the USB Key.

On the Amiga you can select the ADF files thanks to a special ADF file (SELECTOR.ADF). Once done the Amiga restart on the first image selected. In the actual version you can select up to 30 999 images (position 001 up to 030 999 on the 7-segments display). By this way multi-disks games can be played without problem.

The 7-segments display on the emulator shows the actual disk number selected. You can change the disk with the two buttons present on the front of the emulator.

To start again the special ADF you have just to select the position “000” and restart your Amiga. The menu appears in less than 10 seconds. In the software you can use the joystick or the arrows + enter at the keyboard to choose the images and save the selection.

WHERE TO GET THIS EMULATOR ?

The Gotek floppy emulators can be found everywhere.  Since all Gotek drives are based on the same hardware, any version should be compatible.
For reference i got the drive for 24.5Euros/33$ (Shipping included) on Ebay (Link to the Ebay page here)

I also bought a different model, without the 7- segments display & buttons from another place to check if there is some differences. There is no difference and the firmware is working on both models without any modification.

OK I HAVE THE EMULATOR, HOW TO "TRANSFORM" IT ?

To do this you need :

  • Any serial RS232<>3.3V TTL adapter or USB to serial cable. I used an FTDI TTL-232R-3V3, but anything providing a 3,3V signal level is ok. TX & RX support is enough to reflash the MCU (no hardware handshake needed) . ( Some places to get this kind of cable :  https://www.adafruit.com/products/954 ,  ebay 1 , ebay 2 )
    (EDIT : Since the STM32 serial port pins are 5V tolerant, a 5V version of the cable/adapter should be fine too.)

The progamming port can be found at the rear of the emulator. Most of time you don’t even need to open it :) :

Here is the list of connections to do :
– Connect BOOT0 to 3.3V : This will put the device in programming mode at power up.
– Connect TX to the RX wire of the 3.3V serial cable.
– Connect RX to the TX wire of the 3.3V serial cable.
– Connect VSS to the ground wire of the serial cable.
– Connect the 5V to a 5V source. I just used the 5V coming from the FTDI cable.

Note: The above picture shows you the actual pinout of the programming port, not where to plug the wires: Don’t forget to cross connect the TX and RX lines between the adapter and the usb drive (adapter TX on USB drive RX and adapter RX on USB drive TX).

Once done, connect the cable to the computer and start the “Flash Loader Demo” software.

Select the right COM port and press Next.

NOTE (26/02/14) : If you have some difficulties to make the connection between the device and the software, you can try to issue a reset to the emulator. To do this connect during 1 second the "RST" signal (present at the right of the RX signal)  to the ground. Don’t disconnect the RX/TX & Power wires during this operation. Once done start again the software.
Also to make sure that your serial adapter is working correctly, you can try a loopback test : use a terminal software and connect the rx & tx wires of the adapter together : if you get an echo of what you send to the terminal, the loopback test is working !

If the connection to the device is working you will get this screen :

Since the Gotek firmware is protected against the read, the software ask you to remove the protections. This will erase the flash and the firmware shipped with the device will be lost. Please note that this operation cannot be reverted !

Press “Remove Protection”

Press "OK"

Press “Next”.

Press “Next”.

Select the firmware HEX file and correct the settings according to this screenshot (if needed).

Then press “Next” -> The flash process begin (Take 1/2 minutes).

Once you got this last window, the device is ready : You can disconnect all wires and connect the emulator into your Amiga. :)
Don’t forget to move the jumper to the "S0" position to replace DF0.

BUT HOW THIS IS POSSIBLE ? TELL ME MORE ! WHAT IS INSIDE THESE DRIVES ?

The Gotek drives use a powerful Cortex ARM based STM32 MCU working at 72Mhz with lots of timers with DMA support, which make the job somewhat easy. For instance, this MCU only need 0.5 ms (500us) to MFM-encode an Amiga sector, with all the parity checksums computation. DMA and timers are used to stream out the MFM flux so almost no MCU time is used for this task. The MCU is free to do others job in the same time (prepare the next sector).  Thanks to this, all is done in realtime and no extra buffer is needed to precompute/generate the track.

The write process also use DMA and a timer block to capture the incoming flux. Once captured some functions find the sectors into the flux, decode  and check the sectors (parity checking) and write back the data to the ADF on the USB stick (if the parity is good ;) ).

As many ARM based MCU this one have a bootloader in ROM allowing the Flash programming through various interfaces, which make this project possible.
Regarding the firmware, less than the half of the Flash space is actually used.

Here is the schematic of the Gotek drive :

FULL RESOLUTION SCHEMATIC HERE.

PCB – TOP side

FULL RESOLUTION TOP PCB HERE.

PCB – BOTTOM side

FULL RESOLUTION BOTTOM PCB HERE.

Inside the BOX :

FULL RESOLUTION HERE.

As you can see there is a lot of possible further hardware and software development with these devices ! :)

I WANT TO SEE THE DRIVE WORKING !

Ok, here is some pictures :

A USB Stick is not enough ? Then go for a IDE/SATA Hard Disk  ;)

SD Card ? , Compact Flash ?,  xD card ?, MS card ? -> Just use the right adapter ! :)

Work in progress ;)

DOWNLOAD

- The STMicroelectonics Flash loader software : stsw-mcu005.zip

- The new firmware HEX file :  cortexamigafloppyemulator_v105a.docx (Change the file extension .docx to .zip !)

1.0a – Initial release
1.01a 2K14/02/15 – Interrupts priorities changed, I/O latency reduced -> Better stability.
1.02a 2K14/02/15 – I/O latency reduced (again).
1.03a 2K14/03/02 – Up to 999 images pre-selection support, some graphicals glitches corrected, keyboard delay is   now timer driven, Amiga MFM encoding corrected, Index timing corrected, track length corrected, disk change delay set to 4seconds, Firmware version printed at startup.
Note :Both selector.adf and firmware need to be updated !
1.04a 2K14/03/05 – 2 digits/74HC164 based 7 segments display support added. 4 seconds disk change delay disabled at power up and at the selector exit.
1.04b 2K14/03/08 Selector.adf update : Floppy Emulator auto-detection : Can now control the emulator on DF0/DF1/DF2/DF3…
1.05a 2K14/03/30 Selection problem with fast machines corrected, archive flag issue corrected, Spurious track step workaround added, Fast forward image selection : keep the button pressed to speed up the increment/decrement. Press both buttons to jump to the selector.adf / "000" image.

H.M

All softwares, binaires and informations provided on this page was written by Hervé Messinger.
Copyright  (C) 2013,2014 Hervé Messinger.