DivIDE

From Sinclair Wiki
Jump to navigation Jump to search

The DivIDE is an interface for connecting IDE mass storage devices to the ZX Spectrum. It has gained wide popularity amongst Spectrum users in the UK and Western/Central Europe, as a way to transfer and run emulator files seamlessly on the real hardware. CompactFlash cards are commonly used as the storage medium, as these can be used in "True IDE mode", and IDE-CF adapters are readily available. (The newer DivIDE variants have a CompactFlash connector on board.) IDE to SD card adapters also exist, however SD cards have no native ATA mode therefore the adapter board is more complex.

http://divide.cz/ is the official website of the DivIDE interface. The hardware design has been released as open source, allowing various third parties to produce their own batches of interfaces, as well as a number of updated models.

Models

  • The basic DivIDE model is the DivIDE 57c, designed by Pavel "Zilog" Cimbal. This is equipped with a single IDE connector (allowing two devices - master and slave - to be connected), an 8K EEPROM and 32K RAM.
  • The DivIDE Plus, developed by Jarek Adamski and Jurek Dudek, increases both the ROM and RAM to 512K, and adds an onboard CompactFlash connector and a pass-through edge connector.
  • The DivIDE 2k11, produced by Lotharek, provides the same 8K ROM / 32K RAM configuration as the original model, but is re-implemented in CPLD and vertically mounted for a much smaller footprint. It has a CompactFlash slot on board, and no IDE connector.
  • The DivMMC, announced by Mario Prato of Apulia Group Retrocomputing in May 2013, provides two Secure Digital card slots. It differs from earlier DivIDE models in that since SD cards are not IDE devices firmware must use the SD protocol to access data - nevertheless, it is strongly inspired by the DivIDE hardware design, and runs a version of ESXDOS providing the same functionality (except where the application software relies on direct IDE access, such as audio/video players). Schematics are available on the DivMMC website.
  • The DivMMC EnJoy! is an enhancement of the DivMMC by Ben Versteeg, adding a Kempston joystick interface.

Firmware

At a hardware level, the DivIDE provides a 16 bit parallel ATA interface. Higher level capabilities (such as access to PC filesystems and loading emulator files) are handled in firmware written to the onboard Flash ROM - the DivIDE provides hooks into various points in the Spectrum ROM, such as the tape load/save routines, meaning that disk access can be closely integrated into Spectrum BASIC. There are a variety of firmware images available, offering different features:

  • ESXDOS, by Phoenix, is an operating system providing read/write access to FAT16 and FAT32 filesystems, and the ability to load emulator snapshot / tape files, via extended BASIC syntax and a menu-driven file launcher. It also emulates the TR-DOS disk system (used by the majority of Russian software).
  • FATware, by Baze, works with FAT16-formatted disks and provides a friendly menu-driven interface for launching emulator snapshot and tape files, including support for long filenames. However, disk access is read-only, and there's no provision for accessing the filesystem directly from user code.
  • ResiDOS, by Garry Lancaster, runs on the DivIDE Plus and extends BASIC with commands for disk access, along with various additional tools and packages including a task manager, simple windowing facilities and emulators for the ZX80 and ZX81. It primarily works with IDEDOS filesystems, but FAT support is available in an add-on package.

Other firmwares exist - see the firmware listing on divide.cz - but these have either been largely superseded by the above projects, or have more specialist purposes such as emulating older disk systems.

Availability

48/128 compatibility

Due to the complexities of getting the ROM hooks to work correctly in 128K mode, most firmwares skip the startup menu on 128K machines and boot into 'USR 0 mode', in which the 48K BASIC editor is active but the full 128K RAM is still accessible through memory paging. This is fine for the vast majority of 128K software, as only a small number of titles rely on the 128K ROM. However, it causes problems with some pre-1986 software - notably, several Ultimate games - as these erroneously trigger the 128K paging mechanism and page themselves out, causing a crash. To fix this, you can force 'true' 48K mode by entering OUT 32765,48 before loading.

DivIDE interfaces can be used in +3 BASIC with the +3e ROMs as a dumb 16-bit IDE interface by setting jumpers to disable the ROM/RAM paging functionality.