SCSI Driver

The SCSI Driver is a well-defined open software interface for accessing any kind of peripheral, not only SCSI devices. Also SATA drives for optical media like DVDs and BDs use the SCSI command set. For other hardware interfaces, e.g. IDE or USB, SCSI commands can be emulated, like HDDRIVER does it for IDE and SATA hard disk drives. All in all with SCSI Drivers one can send any SCSI command to any hardware interface.
The sources of the software on this page are available on GitHub.

Standard Interface

HDDRIVER fully supports the current version 1.01 of the SCSI Driver interface. The documentation is available in ST GUIDE format and includes C and Modula-2 bindings.

Download SCSI Driver Documentation SCSI Driver documentation

Target Interface

HDDRIVER is the only driver for the Atari implementing the target interface: TT or Falcon are detected as SCSI devices by other computers (also non-Ataris) and can execute standardized or customized SCSI commands.

SCSI Target Interface
The screenshot displays the device check of a TT, with a Falcon on the same bus. The TT (SCSI ID 7) is running HDDRIVER 11.06, the Falcon (SCSI ID 6) is running HDDRIVER 11.05. Both computers "see" each other, and one can execute SCSI commands sent by the other.

Sample code in C for implementing custom SCSI commands is provided on GitHub. In order for the target interface to work faultlessly any software directly accessing SCSI peripherals has to use the SCSI Driver interface.

Implementations

Fully functional SCSI Drivers are available for the following hardware interfaces and software emulators:

Interface/Emulator Software Package Author
Atari ACSI/SCSI/IDE HDDRIVER
CBHD/SCSIDRV.PRG
Uwe Seimet
Claus Brod, Steffen Engel
Atari ATAPI/SATA HDDRIVER Uwe Seimet
Milan IDE/ATAPI/SATA HDDRIVER Uwe Seimet
Milan SCSI Milan PCI SCSI Driver Michael Schwingen
MagiCMac CBHD/MM_SCSI.PRG Steffen Engel, Thomas Tempelmann
MagiCPC CBHD/SCSIDRIV.DLL Steffen Engel
Hatari 2.x (Linux SCSI/IDE/ATAPI/SATA/USB) NF_SCSI, see below Uwe Seimet
ARAnyM 1.1 (Linux SCSI/IDE/ATAPI/SATA/USB) NF_SCSI, see below Uwe Seimet, Thorsten Otto

There are also other, apparently incomplete implementations with unknown status, which are therefore not listed. The SCSI Driver of the FireBee unfortunately has known bugs.
When implementing a new SCSI Driver it is recommended to not only study the SCSI Driver specification but also the command standards documents, in particular for SPC, SBC and MMC. Information on the SCSI Driver interface is also provided by some of my papers for the German ST Computer magazine.

Driver for Hatari and ARAnyM (Linux only)

Download NF_SCSI NF_SCSI 1.20

This SCSI Driver provides direct access to devices like hard disks, SSDs, memory cards, optical drives or streamers. Supported interfaces are SCSI, IDE/SATA and USB. NVMe SSDs require an NVMe-to-USB adapter.

Device check with SCSI Driver

The driver can be launched as a regular program or as an HDDRIVER module. With Hatari the NatFeats support has to be explicitly enabled in the Hatari configuration file or on the command line. The HDDRIVER forum also provides information on this SCSI Driver.

SCSI Driver Monitor

Download SCSI_MON SCSI_MON 1.40

SCSI_MON logs SCSI Driver calls, which helps to analyze errors or when implementing a new SCSI Driver. SCSI_MON also helps to understand the SCSI and SATA software protocols. The program can be launched as a regular program or as an HDDRIVER module.

SCSI Driver Testsuite

Download SCSI Driver Testsuite SDRVTEST 2.10

This archive contains tools for testing SCSI firmware/emulations and certain SCSI Driver functions, also for SCSI Drivers that support IDE/SATA drives or USB devices.