The Oric disk formatWriteDsk.exeImageDisk.exeKryoflux and coGreaseweazleHardware configurationSoftwareDrive ID specificationDrive timingsHFE and IMD formatsCleaning the drive headWriting to diskDrive models
Working with emulators is nice, but it's even nicer when you can use your vintage hardware and storage media!Let's see how we can make a usable floppy disk.
The Oric disk format
Before looking at how we can create a floppy disk, we need to take a serious look at the available digital format options.The Oric users are generally using the .DSK format which historically came with the first usable Oric emulator: Euphoric.
There are quite a few non-Oric .DSK formats, like the one used on Amstrad CPC, but they are different and will not work on the Oric.
There are unfortunately two variants of the Oric .DSK format, they have the same extension but not the same content:
- The first version was just a list of tracks and sectors with a minimal header containing the number of sides, tracks and sectors per track. You can identify these by searching for the ORICDISK ascii signature in the file
- The second version is more advanced and contains information about track metadata information such as gaps and checksums, and have the MFM_DISK ascii signature in the file
Files generated by the FloppyBuilder tool are already in the new .DSK format and do not require conversion.
WriteDsk.exe
Back in the days, most PCs had relatively advanced floppy disk controllers able to support a multitude of drive models and floppy formats. This stopped at some point and the last batches of PCs still having floppy disk drives could only really access standardized 1.44MB DOS formatted floppies.If you still have one of these old PCs running DOS or a DOS based version of Windows (like Windows 95 or 98), you can use the old WriteDsk.exe program to convert a .DSK file into a real floppy.
All you need to do is to put your 3" Microdisc (or use a 3.5" or 5.25" drive if it's what you use on your Oric) inside the PC with the proper jumper and cable configuration
Usage: writedsk <disk-image> <floppy-drive:>
Unfortunately, most of us don't have such a working machine anymore, so we had to turn to modern solutions
ImageDisk.exe
An alternative to WriteDsk if it does not work for you is ImageDisk.This is also a DOS based solution, so the same gotcha as for WriteDsk apply: It accesses the disk controller of the PC directly so must not have interference from another operating system, so if your machine is running Windows 95 or 98 you must restart in DOS mode.
The software is available free from the author along with lots of other information on old computers/disk/tools etc... and is still maintained.
Here is how Rob used it:
I installed a 720K floppy drive into my Win98 PC and configured the BIOS for a 3.5"
720K drive. There is a small software program available from the same website page given
earlier that can be used to check the floppy drive and controller (TestFDC) before using
ImageDisk.
The 720K floppy drive I used was a "NEC 1036A". It was configured as Drive 1(B) when
installing it in the PC, as a modern PC expects it to be configured as B.
(When connected to the floppy connector with the "twist" it is then recognised as drive "A")
This floppy drive was originally from a generic twin floppy drive unit that dates back to
the 80's.
All being well this should produce a working Oric 3,5" floppy disk from the *.img file used.
ImageDisk 1.2 takes *.imd files as input directly (no conversion needed).
Kryoflux and co
Before moving to the Greaseweazle, I want to point out there's been a number of other solutions, such as the Kryoflux or SuperCardPro, or even before that the Catweasle.If you have any of these devices, you can probably achieve the same thing as what I'm explaining on this page, but I don't have one myself so you are on your own, that being said, feel free to comment on the page if you have tried these!
Greaseweazle
These days the recommended device is the Greaseweazle: It's cheap, easy to source, and it has a quite reactive community for when you need help.The important gotcha is that not all models will happily play with older disk drives such as the ones used on the Oric.
Modern 3.5" drives tend to be reasonable in terms of power usage, while 3" and 5.25" drives may require dedicated power supplies and strengthened electronic to drive them, so make sure to pick the right one!
As of today, here are the available models:
| Feature | F1 | F1 Plus | F7 Lightning Plus | V4.1 |
|---|---|---|---|---|
| Jumperless Update | Yes | Yes | Yes | |
| Multiple Drives | Yes | Yes | Yes | |
| Write-Protect Jumper | Yes | Yes | Yes | |
| Buffered Outputs | Yes | Yes | Yes | |
| High-Speed USB | Yes | |||
| 12v Power | Yes | Yes | ||
| Flippy Drive | Yes | Yes | Yes | |
| Disk Change Detect | Yes | Yes | Yes | |
| User Outputs | 1 | 3 | 3 | 3 |
What really matters for you is the Buffered Outputs: "Higher (40mA) output drive capability, needed for older floppy drives with strong input pull-ups (resistance <1kOhm)."
A nice to have is the 12v Power option: "Allows board and drive to be powered from a single 12v power brick. These models are the only ones to directly support drives requiring a 12v supply; other models require such drives to be separately powered."
Basically, instead of trying to find a decent power supply able to provide both 12v and 5v, you can just power the Greaseweazle with a 12V power brick, and it will use it to generate the proper 12v and 5v for the disk drive.
These requirements disqualify the F1 completely, and I'd say the F1 Plus and F7 Lightning Plus are probably the best choices.
Hardware configuration
I personally got the F7 Lightning Plus model and integrated it into a slave Microdisc unit, and I 3D-printed some plate to make it look nice.You obviously don't have to do that, but it helps keeping the setup in good shape and ready to use when you need it!
So anyway, when you have all that assembled, you need to use a powerful enough power brick (I'm using a 5 Amps brick from an old laptop) and connect the USB cable to your PC.
Software
In order to use the device, you need to use the Greaseweazle Host Tools that can be found on github.It's quite simple, you can just download and extract a zip file, everything is explained on the site.
Here is what my version contains:
You can check that the tool works by calling the help function:
gw --help
Usage: gw [--time] [action] [-h] ...
--time Print elapsed time after action is executed
-h, --help Show help message for specified action
Actions:
info Display information about the Greaseweazle setup.
read Read a disk to the specified image file.
write Write a disk from the specified image file.
convert Convert between image formats.
erase Erase a disk.
clean Clean a drive in a zig-zag pattern using a cleaning disk.
seek Seek to the specified cylinder.
delays Display (and optionally modify) drive-delay parameters.
update Update the Greaseweazle device firmware to latest (or specified) version.
pin Change the setting of a user-modifiable interface pin.
reset Reset the Greaseweazle device to power-on default state.
bandwidth Report the available USB bandwidth for the Greaseweazle device.
rpm Measure RPM of drive spindle.
At this point the most useful command to try is the info one.
Here is what you should get if your device is not properly connected:
gw info
Host Tools: 1.22
Device:
Not found
and here is the result if the device is recognized and installed properly:
Host Tools: 1.22
Device:
Port: COM8
Model: Greaseweazle F7 Lightning Plus
MCU: 216MHz, 256kB SRAM
Firmware: 1.6
Serial: GW0041001F3133511538343933
USB: High Speed (480 Mbit/s), 128kB Buffer
The important part here is the Port, currently set at COM8, because you will need to use this information when trying to address the drive.
Drive ID specification
One very confusing thing when trying to find information about how to use the Greaseweazle successfully is that the software and the parameters have changed of the years, so what you may find on a web page (that one included if you are from the future), is that some commands will not work anymore because something changed in the interface.One such issue is how drive units are specified, and the problem is that quite often the toosl will return you a very not helpful "Command Failed: GetFluxStatus: No Index" message that does not really help figuring out what the problem is.
For example, one thing you want to test is the speed of your drive. And the command for that is the "rpm" command which you will often see mentioned without a drive specification:
If I don't explicitly specified to use the drive 0, I get this:
gw rpm --nr 10
Command Failed: GetFluxStatus: No Index
Just adding "--drive=0" returns that instead:
gw rpm --nr 10 --drive=0
Rate: 299.382 rpm ; Period: 200.413 ms
Rate: 299.401 rpm ; Period: 200.400 ms
Rate: 299.415 rpm ; Period: 200.391 ms
Rate: 299.424 rpm ; Period: 200.385 ms
Rate: 299.442 rpm ; Period: 200.373 ms
Rate: 299.455 rpm ; Period: 200.364 ms
Rate: 299.462 rpm ; Period: 200.359 ms
Rate: 299.471 rpm ; Period: 200.353 ms
Rate: 299.479 rpm ; Period: 200.348 ms
Rate: 299.489 rpm ; Period: 200.341 ms
***
FASTEST: Rate: 299.489 rpm ; Period: 200.341 ms
Ar.Mean: Rate: 299.442 rpm ; Period: 200.373 ms
Median: Rate: 299.442 rpm ; Period: 200.373 ms
SLOWEST: Rate: 299.382 rpm ; Period: 200.413 ms
Obviously you need to use a different number if you have a drive setup as unit 1 or 2 instead of 0.
Drive timings
The 3" and 5.25" drives are generally not as fast as 3.5" drives, so you may have to adjust timings.Just calling "delays" will output the current values:
gw delays
Select Delay: 10us
Step Delay: 10000us
Settle Time: 15ms
Motor Delay: 750ms
Watchdog: 10000ms
Pre-Write: 100us
Post-Write: 1000us
Index Mask: 200us
You can change these delays as well:
gw delays --select 500 --step 60000 --settle 100 --motor 1000 --watchdog 30000
TODO: Indicate the types of delays working on 3" drives
HFE and IMD formats
The Greaseweazle does not support all the image disk formats of the universe, and it specifically does not support the Oric .DSK format, so you will have to convert that to another format.Attempting to write a .DSK file will result in this error:
Writing disk to device
** FATAL ERROR:
Sector image requires a disk format to be specified
Unfortunately there is no way to convert these image files using either the Oric or Greaseweazle tools, so you will have to download the HxC Floppy Emulator Software to do that.
After unzipping the archive, you should be able to find a hxcfe.exe executable, which you can then use to convert your Oric DSK file into a variety of formats.
For example, to convert your .DSK file to either .HFE or .IMD formats you could do that:
hxcfe.exe -finput:"source_image_disk.dsk" -conv:HXC_HFE -foutput:"target_image_disk.hfe"
hxcfe.exe -finput:"source_image_disk.dsk" -conv:IMD_IMG -foutput:"target_image_disk.imd"
You may be wondering why you should be using .HFE or .IMD formats?
Well, if you happen to have a Gotek or HxC Floppy Emulator device for the Oric, you can skip the entire Greaseweazle thing and just copy the .HFE to your usb stick and use it like that.
Technically, you could even use the .HFE to create a real floppy with the Greaseweazle host tools... except you should not because this format does not support write verification!
So if you want to make reliable floppies, you should use the .IMD format, this way after each written track the tool will try to read it back and validate that the content match.
Cleaning the drive head
This may not be necessary, but if you are often using floppies kept in storage in dubious conditions, you may end up contaminating the drive heads with dust, mold, etc... which in turn will get transmitted to the next floppy you insert in the drive.A way to fix that is to use some q-tip with some IPA1 delicately over the heads.
Another way is to use a cleaning floppy, which is a special type of floppy disk where the magnetic substrate has been replaced by some type of special fabric on which you drop a cleaning product and then run a command to move the disk head across the disk.
If you find such a kit, the liquid will most probably have evaporated, but you can just use IPA in it.
You can then use the tool "clean" command to perform the cleaning:
gw clean --device=COM8 --drive=0 --cyls=42 --linger=300
This will basically start the disk rotation and move the head back and forth other the entire width of the cleaning disk and hopefully remove any unwanted deposit from the head.
Writing to disk
So assuming everything is working, you can now write your .IMD image file to the drive.gw write --device=COM8 --drive=0 --tracks=c=0-41:h=0,1:step=1 target_image_disk.imd
Here is what a successful result looks like:
gw write --device=COM8 --drive=0 --tracks=c=0-41:h=0,1:step=1 EncounterHD-EN-50HZ-v1.2.4.imd
Writing disk to device
Writing c=0-41:h=0-1
T0.0: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T0.1: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T1.0: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T1.1: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T2.0: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T2.1: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
(...)
T7.0: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T7.1: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T8.0: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T8.1: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T9.0: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T9.1: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
(...)
T39.1: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T40.0: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T40.1: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T41.0: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T41.1: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
All tracks verified
and here is what a non working result would look like:
gw write --device=COM8 --drive=0 --tracks=c=0-41:h=0,1:step=1 EncounterHD-EN-50HZ-v1.2.4.imdHere we can see that the first side of track zero was successfully written to disk, but the opposite track failed, and after three retries the tool aborted the operation.
Writing disk to device
Writing c=0-41:h=0-1
T0.0: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T0.1: Writing Track (Flux: 200.0ms period, 220.0 ms total, Terminate at index)
T0.1: Writing Track (Verify Failure: Retry #1)
T0.1: Writing Track (Verify Failure: Retry #2)
T0.1: Writing Track (Verify Failure: Retry #3)
** FATAL ERROR:
Failed to verify Track 0.1
Drive models
From various discussions on the Defence Force forums, it seems that there are three main models of drives found in Microdisc units:- HITACHI HFD305S
- HITACHI HFD305D
- SANKYO FDU-300
From various experiments it seems the Sankyo is the easiest to get to run with the Greaseweazle, but I did manage to get one of my HFD305D to work with it as well, while my second HFD305D kept returning "No Index" errors.
HITACHI HFD305S
The HFD305S is a disk drive equipped with a single head, it can only access one side of a floppy disk.HITACHI HFD305D
The HFD305D has two heads, it can access both sides of a floppy disk. Based on the name you could have thought that it was just a variant of the S model, but if you compare the drives they have little in common: The layout of chips on the PCB is completely different, and they have a totally different set of jumpers to configure them.Sankyo FDU-300
The FDU-300 is also a double sided disk drive, so like the Hitachi HFD305D you can access both sides of a floppy.MATSUSHITA EME-101
The EME-101 is a disk drive equipped with a single head, it can only access one side of a floppy disk. This type of drive was apparently present in the Cumana disk drive.1. Isopropyl alcohol, not IPA beer↩

Writting to floppy disks












