SCSI Driver

The SCSI Driver is an 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 devices a SCSI Driver can emulate SCSI commands, just like HDDRIVER does it for IDE and SATA drives.
The sources of the software on this page are available on GitHub.

SCSI Driver Interface

HDDRIVER fully supports the latest version 1.01 of the SCSI Driver interface. Via SCSI Drivers HDDRIVER and HDDRUTIL can access peripherals connected to any interface, provided HDDRIVER or HDDRUTIL were started after the respective SCSI Driver.

SCSI Driver documentation 1.01

SCSI Driver Target Interface

For Atari TT and Falcon HDDRIVER implements the so-called SCSI Driver Target Interface: A TT or Falcon is detected as a SCSI device by other devices connected to the SCSI bus, and the Atari can execute SCSI commands. Sample code in C for implementing SCSI commands is provided on GitHub. These sources are meant for developers who have a very good knowledge of SCSI. In order for the target interface to work flawlessly all drivers accessing SCSI peripherals must use the SCSI Driver.

SCSI Driver 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.0 (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.
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 is also provided by some of my articles for the ST-Computer magazine (German only).

SCSI Driver for Hatari and ARAnyM (Linux only)

NF_SCSI 1.10

The TOS component of the SCSI Driver for Hatari and ARAnyM, based on the NatFeats interface of these emulators. It can be launched as a regular program or as an HDDRIVER module.
With this driver Atari software (e.g. HDDRIVER, HDDRUTIL, DISKUS, EXTENDOS, GEMAR) has access to all devices managed by the Linux SG driver, e.g. hard disk drives, memory cards and CD/DVD writers. (SSD connected to an NVMe interface are not supported by the Linux SG driver.)
Please thoroughly read the README file. The native SCSI Driver component for Linux, which is the counterpart of NF_SCSI, is included in the current versions of Hatari and ARAnyM. With Hatari the NatFeats support has to be explicitly enabled in the Hatari configuration file or on the command line.

SCSI Driver Monitor

SCSI_MON 1.40

SCSI_MON logs SCSI Driver calls, which helps with analyzing 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 Test Tool

SDRVTEST 1.35

SDRVTEST is a simple tool for testing certain SCSI Driver functions, in particular (but not only) for SCSI Drivers that support IDE/SATA drives or USB devices.