24
Product Manual - Disc Drive SCSI-2/SCSI-3 Interface (Vol. 2; Ver. 2), Rev. E
_____________________________________________________________________________________
3.4.1
Current pointers
Current Pointers represent the current state of the interface between the initiator and the target the initiator is
currently connected to and servicing. The pointers for the current command remain in the initiator Current
Pointer registers from the time they are put there after the completion of all activities associated with the
previous command until the logic of the Initiator dictates a new command shall be executed. Normally, suc-
cessful receipt by the initiator of good status associated with current command triggers the initiator to insert
a new set of the three “current” pointers for the next command. The initiator does not wait for the Command
Complete signal before deciding whether to retry the current command or transfer in new command pointers.
If the current command was never satisfactorily completed, the initiator logic may dictate that some special
response action be taken, such as restoring the values in the current pointer registers to their beginning
values so the current command can be resent*, or sending a command such as a Request Sense command
to the target, or the initiator could ignore the unsatisfactorily completed command and send the next originally
scheduled command.
* For example, if the drive detects a parity error in the data out from the current command, it sends the
“Restore Pointers” message to the initiator. In this case, the Restore Pointers request causes the initiator to
restore the current pointers to the values existing at the beginning of the current command so the current
command can be resent. The “beginning” pointer values point to the first byte of the current Command
Descriptor Block, the first byte of the area set aside for status to be returned and the first byte of the area
set aside for data associated with the current command. (See paragraph 3.4.2 for a detailed description of
operations resulting from the Restore Pointers message).
3.4.2
Saved pointers
Saved pointers point to initiator storage locations where command, status and data information are stored for
a command that was saved at some point in the past. There is one set of saved pointers for the current
command for each target on the interface bus that is currently active (whether or not it is currently connected
to the initiator). The saved command pointer always points to the first byte of the Command Descriptor Block
(see paragraph 4.2) for the “current” command for each target, the saved status pointer always points to the
first byte of the area used for the status associated with the command, and the saved data pointer points to
some location (not necessarily the beginning) in the area used for data associated with the command. When
a target disconnects the initiator saves the current pointers. Before a target disconnects it may send a Save
Data Pointers message to the initiator, which copies the data pointer that is for the current command for that
target into the location set aside for the target’s saved pointers. When a target reconnects, the initiator
performs a restore pointers operation that copies the saved pointers for the reconnected target into the
initiator current pointer registers so that the current command for that target may continue its operation from
where it left off before disconnecting. If the target had sent a Save Data Pointer message previously, the
current data pointer points to the place in the data store area where operations left off. The data pointer
otherwise points to the beginning of the data area, unless the data pointers were modified by a MODIFY
DATA POINTERS message from the target prior to disconnecting. The MODIFY DATA POINTERS message
adds a value to the data pointer that allows data to be taken, upon reconnection, from a location before or
after the last byte transferred location.
3.5
Message system specification
The message system allows communication between an initiator and target for the purpose of interface
management. For the disc drive, the Logical Unit Number (see Section 4.2.2), (LUN) is always zero.