André's 8-bit Pages  Projects  Code  Resources  Tools  Forum
(by Google)

SCSI interface information

  •  
    2013-05-01 Added History section.

CSI means "Small Computer System Interface". It is an interface that connectes computers with peripheral devices, like disks, scanners, CD-ROMs etc. As such it is very flexible.

The first SCSI interfaces were using asynchronous I/O mode. Each transfered byte was requested and acknowledged with a special handshake. Nowadays synchronous modes with up to 80 or more MByte/s are supported. Yet, all devices still know the asynchronous mode and can be used with this interface (at least I did not encounter one, but I also did not test that many).

The SCSI-II standard defines a number of command sets for a variety of devices. Disks are accessed as "direct access devices", and commands for CD-ROM devices, Printers, coprocessors etc are defined. The commands are transferred in a standard way, which makes the transport level flexible. And once you know how to send one command, you can easily send any other. To send a command you can have a look at the software from this site, that includes SCSI drivers for the 6502 in the GeckOS operating system.

The SCSI-II standard is refered to as ANSI X3.131-1990 Small Computer Systems Interface-2 (SCSI-II). The SCSI-I standard is X3.131-1986. The SCSI-III standard still specifies the asynchronous mode for parallel cable transfer, which is used in my current designs. In the resources section below are links to the standards and to a very good article on SCSI.

A good source (although a bit hard to read) is the linux kernel source code. Recommended reading are the comments at the beginning of drivers/scsi/aha152x.c, the defines in include/scsi/*, especially the SCSI command opcodes. greping for them in the code will give you an idea how to use them. One example is the function scan_scsis_single() in drivers/scsi/scsi.c. All code references relative to the main source directory, usually under /usr/src/linux/, of linux kernel version 2.0.36 (although the linux version should not matter that much here).

SCSI was derived from the "Shugart Associates System Interface". Commodore used a SASI board as disk controller for its 9060 and 9090 harddisk drives for the PET.

Wikipedia states: "SASI, which was used in mini- and early microcomputers, defined the interface as using a 50-pin flat ribbon connector which was adopted as the SCSI-1 connector. SASI is a fully compliant subset of SCSI-1 so that many, if not all, of the then-existing SASI controllers were SCSI-1 compatible."

One caveat with old SASI and/or SCSI drives is the TERMPWR line. It provides a power supply for the interface part of devices that are switched off, so that bus terminators for example could be powered. Only if more that one drive drives this line, short circuit problems could appear.

Installing a SCSI drive instead of the SASI-to-MFM controller board in the Commodore disk drive has been reported to melt the TERMPWR line in the cable (yuck!). Also the 9060/9090 drives us 256 byte sectors as opposed to the 512 byte sectors commonly in use today (before the advent of the 4k sectors).

The SCSI standard is now managed by the Technical Committee T10, that unfortunately have decided to give access to the standards only after registration as I understand. Here are some links anyway.


Return to Homepage

Last modified: 2013-05-02
follow

Follow my 8-bit tweets on Mastodon (In new window) or Bluesky

discuss

Discuss my site on this 6502.org forum thread

(Forum registration required to post)

hot!

Dive into the retro feeling and build yourself a Micro-PET or a Multi-board Commodore 4032 replica

Need more speed? Speed up your 6502 computer with this 10 MHz 6502 CPU accelerator board

Interested in electronics design? Look at the design lesson I got from Bil Herd, the hardware designer of the C128

Want 64bit? - pimp the 6502 with the 65k processor design!