ACSI
ACSI stands for Atari Computer System Interface. It is a proprietary hard disk protocol that was implemented in the Atari ST line of personal computers. It is an 8-bit protocol and is related to SCSI.
The following is an excerpt from Atari's official Engineering Hardware Specification which describes aspects of the ACSI protocol and hardware interface.
_5._6. _D_i_s_k _D_r_i_v_e _I_n_t_e_r_f_a_c_e The ST floppy disk drive interface is provided through the DMA controller to an on board WD1772 Floppy Disk Con- troller. A total of two daisy chained floppy disk drives (drive 0 or 1) can be supported. Commands are sent to the FDC by first writing to the DMA Mode Control Register to select the FDC internal command register and then writing the desired one byte command to the Disk Controller Regis- ter. The entire floppy disk DMA read or write sequence is as follows: o select floppy drive 0 or 1 (PSG I/O Port A). o select floppy side 0 or 1 (PSG I/O Port A). o load DMA Base Address and Counter Register. o toggle Write/_Read to clear status (DMA Mode Control Register). o select DMA read or write (DMA Mode Control Register). o select DMA Sector Count Register (DMA Mode Control Register). o load DMA Sector Count Register (DMA operation trigger). o select FDC internal command register (DMA Mode Control Register). o issue FDC read or write command (Disk Controller Register). o DMA active until sector count is zero (DMA Status Register, do not poll during DMA active). o issue FDC force interrupt command on multi-sector transfers except at track boundaries (Disk Controller Register). o check DMA error status (DMA Status Register, nondestructive). The detection of floppy disk removal is not supported in hardware. The ST hard disk drive interface is also provided through the DMA controller, however the Atari Hard Disk Con- troller is off board and is sent commands using an ANSI X3T9.2 SCSI-like (Small Computer Systems Interface) command descriptor block protocol. The Atari Hard Disk Interface (AHDI) supports a minimal subset of SCSI commands (Class 0 OpCodes), which are dispatched using the following fixed six byte Atari Computer System Interface (ACSI) command packet format: ----- ACSI Command Descriptor Block --------------- Byte 0 |xxxxxxxx| |||||||| ||| -------- Operation Code ----------- Controller Number Byte 1 |xxxxxxxx| |||||||| |||--------- Block Address High ----------- Device Number Byte 2 |xxxxxxxx| |||||||| ----------- Block Address Mid Byte 3 |xxxxxxxx| |||||||| ----------- Block Address Low Byte 4 |xxxxxxxx| |||||||| ----------- Block Count Byte 5 |xxxxxxxx| |||||||| ----------- Control Byte The following is a summary of available command OpCodes: ----- AHDI Command Summary Table --------------- ---------- -------------------- | OpCode | Command | ---------- -------------------- | 0x00 | Test Unit Ready | | 0x05 | Verify Track | * | 0x06 | Format Track | * | 0x08 | Read | * | 0x0a | Write | * | 0x0b | Seek | | 0x0d | Correction Pattern | | 0x15 | Mode Select | | 0x1a | Mode Sense | ---------- -------------------- * multisector transfer with implied seek NOTE: subject to change. Commands are issued to the Atari HDC in a manner simi- lar to that of the FDC, with the major difference being the handshaking of a multi-byte command descriptor block. The entire hard disk DMA read or write sequence is as follows: o load DMA Base Address and Counter Register. o toggle Write/_Read to clear status (DMA Mode Control Register). o select DMA read or write (DMA Mode Control Register). o select DMA Sector Count Register (DMA Mode Control Register). o load DMA Sector Count Register (DMA operation trigger). o select HDC internal command register (DMA Mode Control Register). o issue controller select byte while clearing A0. o set A0 for remaining command bytes. o after last command byte select controller (DMA Mode Control Register). o DMA active until sector count is zero (DMA Status Register, do not poll during DMA active). o check DMA error status (DMA Status Register, nondestructive). o check HDC status byte and if necessary perform ECC correction following a Verify Track or Read Sector command. The format of both floppy and hard disks contain 512 byte data sectors. ----- Floppy Disk Port Pin Assignments --------------- ST Circular DIN 14S ---- ---- 1 |<--- Read Data -------------------| PSG I/O A 2 |---- Side0 Select --------------->| 3 |---- Logic Ground ----------------| 4 |<--- Index Pulse -----------------| PSG I/O A 5 |---- Drive0 Select -------------->| PSG I/O A 6 |---- Drive1 Select -------------->| 7 |---- Logic Ground ----------------| 8 |---- Motor On ------------------->| 9 |---- Direction In --------------->| 10 |---- Step ----------------------->| 11 |---- Write Data ----------------->| 12 |---- Write Gate ----------------->| 13 |<--- Track 00 --------------------| 14 |<--- Write Protect ---------------| ---- ---- NOTE: shield ground must not be connected on the ST side, the cable must have Read Data and Write Data paired with Logic Grounds. Signal Characteristics pin 1 TTL levels, active low, 1 Kohm pullup resistor to +5 VDC. pin 2 TTL levels, active high, high at system reset. pin 4 TTL levels, active low, 1 Kohm pullup resistor to +5 VDC. pins 5-6 TTL levels, active low, high at system reset. pins 8-12 TTL levels, active low (inverted). pins 13-14 TTL levels, active low, 1 Kohm pullup resistors to +5 VDC. ----- Hard Disk Port Pin Assignments --------------- ST DB 19S ---- ---- 1 |<--- Data 0 --------------------->| 2 |<--- Data 1 --------------------->| 3 |<--- Data 2 --------------------->| 4 |<--- Data 3 --------------------->| 5 |<--- Data 4 --------------------->| 6 |<--- Data 5 --------------------->| 7 |<--- Data 6 --------------------->| 8 |<--- Data 7 --------------------->| 9 |---- Chip Select ---------------->| MFP 10 |<--- Interrupt Request -----------| 11 |---- Ground ----------------------| 12 |---- Reset ---------------------->| 13 |---- Ground ----------------------| 14 |---- Acknowledge ---------------->| 15 |---- Ground ----------------------| 16 |---- A1 ------------------------->| 17 |---- Ground ----------------------| 18 |---- Read/Write ----------------->| 19 |<--- Data Request ----------------| ---- ---- Signal Characteristics pins 1-8 TTL levels. pin 9 TTL levels, active low. pin 10 TTL levels, active low, 1 Kohm pullup resistor to +5 VDC. pin 12 TTL levels, active low, system reset. pin 14 TTL levels, active low. pins 16,18 TTL levels. pin 19 TTL levels, active low, 1 Kohm pullup resistor to +5 VDC.