• Please review our updated Terms and Rules here

Making SSSD disks for the Osborne 1 using MAME


Experienced Member
Aug 29, 2021
Zuid Holland, The Netherlands
After about a day of trial and error I was able to make an SSSD disk in the Osborne 1 emulator in MAME. By copying files from an SSDD image to an SSSD image, you could export it into an .HFE file and use it in a Gotek. This way, you don't need a system with a drive controller that can write single density disks with Teledisk or Image disk.

The main downsides though are MAME, the lack of documentation on the Osborne 1 emulator and the fact you need to modify the Osborne 1 by adding the Gotek drive.

Now, before anyone says "You could have asked instead of wasting a day on trial and error", you are right... I could have. But it was a good wasted day, and I learned a lot by just doing and eventually (more or less) brute forced the solution.

The biggest hurdle that I encountered was the MAME Osborne 1 can't use .IMD files - or at least, I could not get them to work.
It pretends to accept them but throws Bdos errors trying to access them. Teledisks .TD0 files can be accessed but only work in "read-only" mode. Any other mode either throws an error or crashes the emulator entirely.

But, while playing around with these .TD0 files with the "read from this and write to another image" option, you get the .MFM file format for HxC drive emulators. So, I exported a blank SSSD image using the HxC software to a .MFM file. After formating the image the MAME Osborne 1 is perfectly happy both reading from and writing to it.


After copying some files from the SSDD image (this can left as a TD0) to the empty .MFM image and converting that into .HFE, I had a working SSSD image for the real Osborne 1.


There are plenty of sites available that have the Osborne 1's standard complement of disks listed, both in .TD0 and in .IMD format, often including a blank image. Getting a Gotek to work in the Osborne 1 has been fairly well documented on various forums.

This method eliminates the need to use command line tools and systems not everyone has access to (like myself for example, I have no other computer in my collection that can write to SSSD disks).
Debian Linux from Ver 8 to Version 11 can write SS SD Floppy's according to the
/etc/mediaprm file.

# Osborne 1 - SSSD 48 tpi 5.25"

 SS SD sect=10 dtr=1 fm=1 ssize=256

# Osborne 1 - SSDD 48 tpi 5.25"

 SS DD sect=5 ssize=1KB

All you need to do is set the Motherboard BIOS for a 360K Floppy, and install a
Single Sided Floppy Drive. (A 360K Floppy Drive will not work because of a BUG
in the FDUTILS package since version 8, or perhaps before.)

$ lsblk
$ sudo setfdprm -p /dev/fd0 OSB100
$ lsblk
$ sudo superformat /dev/fd0 OSB100

Then use dd to write the *.RAW floppy image.

A double-sided drive is quite capable of acting as a single-sided one. The converse, not so much.
I know that, I tried using one of my spare 360k drives to write disks... realizing i don't have the correct chipset in the process. I tried a few XT class portables but had no luck with any of them.

and install a Single Sided Floppy Drive.
He stated to use a single sided drive due to a problem with FDUTILS
I have no idea what FDUTILS is doing such that a double-sided drive would confuse things.

Curiously, the chances of finding a floppy controller on an XT-class machine that supports FM is pretty small. You're likely to have better luck with P3 or P4 systems.
The FDUTILS BUG report is at:

and a Debian Forum Posting is at:

Obviously, it's been a problem since mid ~2016 to mid ~2018 when version 8.11 was released.
There doesn't appear to be any activity on the BUG report, even though it shouldn't take more
than 30 minutes to prove it either works or doesn't.

Thats a lot of work - Thanks for writing it up. The only remaining question I have is what is the best way to convert
I don't know what the "best" way would be. But the HxC emulator program (not the emulator firmware) is available for free from the HxC website and can convert both the .IMD and .TD0 to .MFM to use in the emulator. And can then convert the filled up .MFM image to .HFE to use in the Gotek installed in the Osborne 1. It's basicly drag-drop-export.

From there you can even make real SSSD disks in the Osborne 1, although i was quickly running out of working empty disks as of late so I'm happy to use the Gotek from now on.

On the amount of work... most was figuring out what image to use in MAME that could read and write. And figuring out how the MAME emulator worked. I can now write disk images in a matter of minutes.
To be honest, I did notice that i can no longer write to an image at a later point. It gives a Bdos error. So once the destination image is formatted you have to fill it up in one session (which is fairly easy to do as it's only 90k in size).
@BlaBla1985, I hit my head on this same topic in the past two days.
I know it is not easy but the IMD format is correctly implemented by MAME, you can verify this by using TD02IMD and try loading an IMD disk image that worked in Teledisk mode.
MAME is quite peeky and often crashes with little clues on what is going on. In example, an error referred to the image size might be consequence of a wrong encoding (FM and MFM will produce different physical images, but some of the disk dump tools use the "format" descriptor to describe the transfer speed found on the drive used to produce the dump, which may be different than the drive used by the real machine).
My the way, my choice for z88dk to produce valid IMD files for MAME is slightly different than the ones used elsewhere (cpmtools, etc):

.name = "Osborne_DD",
.disk_mode = MFM300, <--- as said, this is probably referred to the hw used to dump the image
.sectors_per_track = 5,
.tracks = 40,
.sides = 1,
.sector_size = 1024,
.filler_byte = 0xe5,
.boottracks = 3,
.directory_entries = 64,
.extent_size = 1024,
.byte_size_extents = 1,
.first_sector_offset = 1,

.name = "Osborne_SD",
.disk_mode = FM250,
.sectors_per_track = 10,
.tracks = 40,
.sides = 1,
.sector_size = 256,
.filler_byte = 0xe5,
.boottracks = 3,
.directory_entries = 64,
.extent_size = 2048,
.byte_size_extents = 1,
.first_sector_offset = 1,
.has_skew = 1,
.skew_tab = { 0, 2, 4, 6, 8, 1, 3, 5, 7, 9 } <--- 1,3,5, etc.. if you need to configure this table on other conversion tools