Documentation Archive Developer
Search

ADC Home > Reference Library > Technical Q&As > Legacy Documents > Hardware & Drivers >

Legacy Documentclose button

Important: This document is part of the Legacy section of the ADC Reference Library. This information should not be used for new development.

Current information on this Reference Library topic can be found here:

Macintosh Quadra 700 and 900 SCSI Chip Anomaly and Fix


Q: Every now and then, my optical driver's Test Unit Ready command, which goes through the SCSI Manager, returns zero on the status byte, but two on the message byte. This is strange, because there's no cartridge inserted. Is something wrong with the SCSI Manager?

A: There is an identified problem in the SCSI chip on the Macintosh Quadra 700 and 900. The National 53c96 chips used in these models do something the SCSI Manager doesn't expect -- they sometimes retain a byte in the chip's onboard FIFO. As a result (in some cases), the SCSI Manager retrieves the stuck byte as the Status byte, and the Message byte as the Status byte, instead of retrieving the Status and Message bytes from the drive it just posted a command to.

Odd things may happen as a result of this anomaly. For instance, some users report that they can't get CD-ROM drives to work with Macintosh Quadra 900s, and some users also find that, periodically, they get "Can't read drive X" messages on the desktop.

The problem occurs with CD-ROM drives and other removable-media devices, such as SyQuest drives. Since these devices may or may not have media inserted, their drivers typically poll devices that don't have media inserted, looking for newly inserted media. Often, they do this by issuing a TestUnitReady SCSI command to the device. If the device returns a zero, which indicates NO ERROR, it's assumed that some sort of media is in the drive, so the driver tries to mount the newly inserted media.

This is the command sent to the CD-ROM drive:

  0, 0, 0, 0, 0, 0
  |  |  |  |  |  |
  |  |  |  |  | - Linked command byte: On Macintosh systems, always 0
  |  |  |  | -  -  Reserved
  |  |  |  -  -  -  Reserved
  |  |  -  -  -  -  Reserved
  |   -  -  -  -  -  Logical unit number (usually 0)
    -  -  -  -  -  -  SCSI command: TestUnitReady

The last byte (SCSI command such as Linked) is always zero, and this is the byte that sticks in the FIFO of the c96, so when you read the Status and Message bytes back, you get a zero back as the Status byte, and a "Not Ready" (2) in the Message byte. Unfortunately, zero is the value returned to the driver, which proceeds to issue (in the case of the CD-ROM drive) a _PostEvent. This causes other _Read trap calls, all of which fail, and you end up with the Uninitialized Disk dialog box.

Apple has implemented a SCSI Manager fix for this problem in System 7.1 and later.

[Jul 01 1995]