ACSI

From Atari Wiki
Revision as of 10:22, 15 October 2011 by Admin (talk | contribs)
Jump to navigation Jump to search

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.