Emulating the +3e and/or ResiDOS

There are a multitude of Spectrum emulators available, and many now have support for hard disk/compactflash emulation, and so can be used to emulate the +3e or ResiDOS.

Here's a short list of the emulators I know about containing at least some level of support:

RealSpectrum (DOS/Windows)
This was the first emulator to support hard disk emulation. Unfortunately, it does not emulate multi-sector read/writes, and so is only suitable for emulating earlier versions of the +3e (v1.12 and below).
Fuse (Linux/UNIX/Mac OS X)
Fuse has excellent hard disk emulation, supporting the simple 8-bit interface as well as the ZXATASP, ZXCF and divIDE interfaces. It can emulate both the +3e and ResiDOS. Note, however, that the current release build (0.7.0) is rather old and does not include support for multi-sector read/writes, so you currently need to download the sources from CVS and build it yourself...
SPIN (Windows)
Emulates the +3e with simple 8-bit interface. There is currently a bug in the auto-detection on this emulator, so to format a HDF image you will have to use the old v1.11 ROMs provided with Spin. The current ROMs should work fine once you have a formatted HDF image.
EightyOne (Windows)
Emulates both the +3e and ResiDOS on a wide range of interfaces, including ZXCF, divIDE and the simple 8-bit interface. It also has the ability to directly access an attached compactflash card (or hard disk) under emulation. You currently need to download the "Test2" version for IDE support.


HDF image file utilities

The .HDF hard disk image files used by emulators can be read from and written back to real hard disks or compactflash cards in a variety of ways.

The following utilities are available:

HDFutils (DOS)
Basic DOS utilities for reading/writing HDF files to real hard disks. Not recommended for use under Windows.
Drimg (Windows)
Full-featured drive image utility from Pera Putnik.
hdfmonkey (Linux)
Tool for creating FAT filesystems in HDF files, and adding/retrieving files to them. Therefore useful for ResiDOS users, but not +3e users (as there is no current support for +3DOS filesystems).


Reading/writing HDF image files without a dedicated utility

For users of Unix/Linux/Mac OS X, you can use the dd utility to read and write hard disks or compactflash cards. Be careful, however, as you can easily damage your system if you don't know what you're doing!

Here is the method I have used under Mac OS X:

1. Create a header for the .HDF file

You only need to do this once for any particular hard disk/compactflash card. First, use createhdf from fuse-utils (distributed with the Fuse emulator) to create a dummy .HDF file using the same cylinders/heads/sectors as your card (you can determine this by typing CAT TAB on the +3e). eg:

      createhdf 490 8 32 dummy.hdf

Save the first 128 bytes of this as your header, eg to create hdfheader.bin:

      split -b 128 dummy.hdf hdfheader
      mv hdfheaderaa hdfheader.bin
      rm hdfheader??
      rm dummy.hdf
2. To read your card/disk to an .HDF file

Determine the device number of your card by doing ls /dev/* before and after attaching it. On my Mac OS X system this was found to be /dev/disk2. Then use dd to read the data, and combine it with your pre-generated header:

      dd if=/dev/disk2 of=cfcard.raw bs=512
      cat hdfheader.bin cfcard.raw > cfcard.hdf
3. To write a .HDF file back to card/disk

Assuming your card is on the same device, do:

      dd ibs=128 obs=512 skip=1 if=cfcard.hdf of=/dev/disk2


Back to ZX Spectrum +3e homepage