Following on my previous review of a 100-bank low-cost USB floppy emulator and testing of the emulator, I realized that the eBay market saw the introduction of another floppy emulator. This one is the GoTek System SFR1M44-U100K 1000-bank USB floppy emulator, also attractively priced around US$20.
The Unit and Inclusions
The device itself has the letters GOTEK in the moulding, and features a three-digit seven-segment LED display (still covered with plastic tape), a USB port, two push buttons and an access LED. The green LED lights up whenever the drive is active. The right button is used to increment the “ones” position, the left button increments the “tens” position, and pressing both buttons momentarily increments the “hundreds” position. Holding them both may engage the auto-format function which will erase all content.
In use, this drive allows you to increment the bank during accesses but this may lead to data loss. The increment function appears to cause the change line to be toggled to signal to the controller a disk removal. The other emulator locks-out the increment/decrement during accesses.
The casing itself differs from the other emulator, with a distinctive “step” shape, and the use of only three screws to secure the unit together. There was also the provision for branding and other button labels which are not provided.
The step shape is clearly visible here – and may be an advantage when trying to shoehorn the device into non-standard floppy drive enclosures, although those often have non-standard interfaces as well. Exposed at the rear are jumpers – some are labelled for drive select, and others are undocumented. There are also through holes unpopulated which are also for configuration by jumper. The 34 pin interface has the keying pin (pin 3) still in place (just like the other emulator I had), there’s no harm clipping this off for cables with the hole blocked.
It’s probably a good time to note that this emulator does come with an 8cm CD (groan!) however, the tools provided are arranged arbitrarily, are poor and (some) improperly licensed. I’ll show you some of it later on. It also comes with manuals, although for a variety of versions of products which are not related whatsoever.
It appears there are separate versions for 720kB, 1.2Mb and 1.44Mb format, and there is a format which images the disk, and another which interprets folders as a disk – and customized versions for sewing machines and networked applications. There are some documentation which refers to a 100-bank model, and others to a 1000-bank model and indeed the tools seem deficient in the least. Most of this is there to confuse you, so I’d suggest avoiding the CD if you can. The datasheet is provided though with some jumper explanation.
The internals consist of a green PCB populated with an STM32F105 ARM Cortex-M3 CPU from STMicroelectronics, a NXP 74HC04D Hex Inverter Buffer, a 3.3v regulator, and a few supporting resistors, capacitors and a crystal. It’s a little simpler looking compared to the other emulator – having no external SRAM or multiple ICs – the magic will obviously be in the programming of the ARM CPU.
The rear side of the PCB is relatively bare – picture is for proof:
The Unit In Use
I plugged it into the same old Windows 95 box that I have running (since it’s capable of non-standard formats) just to give it a go.
The unit would display 000 without a USB stick connected, and would display the same once a stick is connected. Formatting the disks (with verification) with WinImage was not a problem at 1.44Mb. Surprisingly, a format at 1.2Mb also succeeded. 720kB and all non-standard (1.68Mb, 1.72Mb, DMF, 820kB, 360kB, 320kB, 180kB, 160kB) all failed.
Following the same methodology as before, I performed a pattern fill on the USB key to be used with the device, and I formatted the first 5 banks, and the last bank and found the “beginning” of the images. It was found that this device also stores sector images, just like the other emulator. The offsets to each bank are as follows:
- Image 000 – 0h
- Image 001 – 180000h
- Image 002 – 300000h
- Image 003 – 480000h
- Image 004 – 600000h
- Image 999 – 5DA80000h
Do you know what this means? This is the same scheme as for the other emulator which means, in theory, the first 100 banks will be interchangeable between both emulators without requiring any attention. The pattern is obvious and tells us that for 1000 floppies, only the first 1500MiB of any USB key will be used. Therefore, a 2Gb USB key is enough!
A commenter on my previous post said that Ipcas has a similar floppy emulator to the other emulator and had software downloads. Curiously, their software download is similar to the software provided with this GoTek system unit – but does not appear to work.
There are two programs supplied – one of them is called UFDISKManager.exe and is supposed to allow you to access each of the disks on your USB key by extracting the files into a temporary directory, where you can modify them, and then repack them back and write them to the USB key. The language seems permanently fixed to Chinese, and I don’t really find it workable …
You can see that I formatted bank 001 as a 1.2Mb floppy and it detects that correctly. It does not change the binary offset for the other banks however, but this does not work properly, as I will explain later …
The other pieces of software is UFloppyManager.exe with a plethora of options related to pre-formatting a USB key for use with the drive, but I haven’t managed to get it to work meaningfully either. So it’s pretty much a fail all round with the software.
Analyzing the Output
Thanks to the Kryoflux, we can get a little more information about how the drive presents itself to the host. On connecting the Kryoflux, the calibration option returns a value of 84 tracks (0-83). The Kryoflux itself doesn’t test for larger values – it may be possible to get 85!
This is different to the other emulator which tops out at 80 tracks (0-79). When reading the “virtual” floppy, it is very close to 300RPM with a clean signal – on all tracks!
The first question we should ask is what is being returned on those tracks? A quick peek in the hex editor reveals that those tracks indeed return the data “in sequence” from the USB key – so if they were never written by a host, they will return whatever was remnant on the USB key in the “gap” between images (in my case, 0xBAADF00D).
Another question is what happens when we attempt to read a disk which is formatted as a 1.2Mb bank? Well, as it turns out, the unit emits the full 18-sectors per track at 300rpm – not the expected 15 sectors per track at 360rpm. This makes the unit that I have unsuitable for emulating 5.25″ HD drives – only good for 1.44Mb HD 3.5″.
For people wanting to deal with unusual format disks, it’s a disappointment – but at this price, I really don’t mind. It works as advertised for 1.44Mb HD MFM 18-sectors per track 500kbit/s format. The software is a bit cryptic and generally rubbish, but the “compatibility” suggests there may be an “unwritten agreement” somewhere about USB Floppy Emulation, or maybe it’s a case of someone wanting to remain compatible with the “status quo”. Whatever it is, it’s good and bad news. While the first 100 banks may be compatible, additional banks following the same pattern are inaccessible from certain emulators – and their handling of track 80+ is different. I suppose the good thing is that the reported RPM of this unit is much closer to what is expected, although only having increment buttons and the potential for changing the bank during a write is a bit of a risk.
At least, I hope this information comes in handy for anyone who may be thinking of purchasing such a unit …