Ruud's Commodore Site: SASI Home Email

SASI



The story of this document

The Commodore 9060 and 9090 are equipped with the Shugart Associates Standard Interface (SASI). Due to the lack of any clear documentation on Internet about the technical background of SASI, I started to collect all kind information I could lay my hands on to make my own electronic manual.

Update:
At 2011-01-25 I was pointed to this document at www.bitsavers.org by Michał Pleban. Thank you, Michał!


Some preinformation

The first thing you have to know: it is the host that initiates the transfer of data and commands but it is the SASI device that keeps in control of the process for the rest of the operation.
SASI can handle multiple devices as well as multiple hosts.

In this document, when I mention the host, I mean the Disk Controller of the 9060/9090. Furthermore, if I mention "input" or "output" then this is seen from the point of view of the Disk Controller part of the 9060/9090.
Because the 9060/9090 is a single host system the "Attention" line isn't needed. To simplify the design, Commodore omitted the "Parity" line as well. Therefore these lines won't be mentioned anymore in this document.


The signals

Like IEEE-488 SASI has eight bidirectional data lines. Furthermore it has eight control lines: five input and three output only lines. So it does NOT have bidirectional control lines like IEEE-488 has.

The five input lines:
- I/O (Input/Output) tells the host the direction of the data.
- C/D (Control/Data) tells the the host whether the SASI device expects command or data bytes.
- MSG (MeSsaGe) tells the the host that the SASI device is sending the last byte.
- REQ (REQuest) tells the the host that it has to read or write a byte and it has to acknowledge the action by activating the ACK signal.
- BSY (BuSY) tells the the host that the SASI device is still active doing something.

The three output lines:
- SEL (SELect) is used by the host to select a SASI device. The byte on the data bus tells all connected controllers which ones attention is needed. This enables someone to connect more than one SASI device to a computer.
- RST (ReSeT) can be used by the host to reset a busy SASI device if needed.
- ACK (ACKnowledge) has to be activated when the host has to acknowledge a request from the SASI device.

As said, SASI has eight data lines. When 16-bits processors appeared this was seen as a shortcoming. For this reason its successor, SCSI, was able to handle 16 data lines.


The protocol

SASI has eight operational stages:
1. Bus free phase
No host or SASI device is using the bus. In this case SEL, BSY and RST aren't activated.

2. Arbitration phase
Only needed with a multiple host system. Therefore not used here.

3. Selection phase
The host selects/activates the SASI device. This is done by placing the identification code on the data bus and activating SEL. After detecting an active BSY, the host deactivates SEL and tristates the data bus.

4. Reselection phase
Can only be used in combination with the Arbitration phase and therefore isn't used her as well.

5. Command phase
The SASI device will ask for six command bytes that will specify the needed disk action.
This is done by activating REQ in the first place. I/O tells the host it has to supply a byte and C/D specifies if it is a command byte. The host now supplies this byte and confirms the action by activating ACK.

3. Data phase
The SASI device will ask for/send n data bytes (if appropriate).
If the host has to supply data, this is done in the same way as supplying the command bytes. The only difference is the state of C/D.
If the host has to read data, I/O is changed accordingly as well. Now the SASI device supplies the data and the only thing the host has to do is to activate ACK after having read the data.

4. Status phase
The SASI device will send two status bytes. It sets REQ, I/O and C/D accordingly and puts the bytes on the bus. The host has to read them using ACK as mentioned before.

1. Message phase
Not used (AFAIK so far).


Emulating the SASI board and hard disk

I own a 9060 and a 9090 but only one CBM board is in working order. The second board has a problem with the Zero Page RAM although it is not the onboard 6810. It can be repaired IMHO but I have to give it more time.
The two SASI boards and two hard disks are dead and beyond repair. And that gave me the idea to emulate them in one or anther way. I wanted to make a project of it in two, maybe three, phases:
- Using a PC to find out how things work. I can use one of the interfaces I developed for CBM-HD.
- Using a 1541 board and an IDE hard disk.
- Using a microcontroller and an IDE hard disk.





Having questions or comment? You want more information?
You can email me here.