antoine-source/scsi2/SCSI.Drivers/SCSI Command Table copy

1 line
89 KiB
Plaintext

;*******************************************************
;
; SCSI Driver 'Command Table'.
;
; Written by Matt Gulick. Started May 20,1988
;
; Copyright Apple Computer, Inc. 1988,89
;
;*******************************************************
;*******************************************************
;
; This file contains the Command Tables that actually
; drives the SCSI Driver when talking to a target
; device. By changing these tables, the SCSI Driver
; will be able to talk to almost any class of SCSI
; Device. There are actually two tables in this file.
; The first table is a list of a two word group for
; each command supported.
;
; The first word is the actual SCSI Command Number
; followed by the low word of that commands table
; address. We use the only the low word because the
; second table is in the same bank as the indexing
; table.
;
; The second table is the actual command translation
; data. The first word is a set of flags that
; indicate some of the translation and verification
; that needs to take place.
;
; Bit 15 = Data is being sent to the device
; 14 = Data is to be received by us
; 13 = This is a Status Command
; 12 = This is a Control Command
; 11 = Data I/O Command
; 10 = Device I/O Command
; 9 = Command Includes Block Number
; 8 = Must be first device if linked
; 7 = Internal Driver Command Only
; 6 = Must issue a DISK_SW with this call
; 5 = Results in device offline
; 4 = Reserved
; 3 = Command Data needs no translation
; 2 = Reserved
; 1 = Block request count goes into command
; 0 = Byte request count goes into command
;
; The second word is a time out tick count to be used by
; the SCSI Manager to determine when to abandone any SCSI
; Device transaction due to lack of response by the
; target. Each tick = 250 ms.
;
; Any additional words are only used if Bit 3 above is
; zero. The translation bytes conatin two offsets. A
; Source and a Destination offset. This is used by the
; driver to take information fron the caller's command
; (Source) and .OR. them in to their proper location in
; the SCSI Command Packet (Destination).
;
; MSBit LSBit
; %0000 0000 0000 0000
;
; R S R D
; e o e e
; s u s s
; e r e t
; r c r i
; v e v t
; e e i
; d d n
; a
; t
; i
; o
; n
;
; A NULL Word at any location in the command entry
; will terminate translation for that command.
;
;*******************************************************
;*******************************************************
;
; Revision History:
;
;*******************************************************
; May 20, 1988 File started.
; Feb 28, 1989 Added Tape Drive Tables
STRING PASCAL
BLANKS OFF
PAGESIZE 70
PRINT NOGEN
PRINT NOMDIR
MACHINE M65816
PRINT OFF
INCLUDE 'scsihd.equates'
INCLUDE 'M16.MEMORY'
INCLUDE 'M16.UTIL'
PRINT ON
EJECT
;*******************************************************
;
; List of Commands Supported:
;
;*******************************************************
EXPORT cmd_t_tbl
cmd_t_tbl PROC
;-------------------------------------------------------------------------------
IF scsi_dtype = direct_acc THEN
;
;
;
;
dc.w $0028 ; Command $28 'READ (EXTENDED)'
dc.w scsi_cmd28 ; Mandatory
;
dc.w $002A ; Command $2A 'WRITE (EXTENDED)'
dc.w scsi_cmd2A ; Mandatory
;
dc.w $0008 ; Command $08 'READ'
dc.w scsi_cmd08 ; Mandatory
;
dc.w $000A ; Command $0A 'WRITE'
dc.w scsi_cmd0A ; Mandatory
;
dc.w $0000 ; Command $00 'TEST UNIT READY'
dc.w scsi_cmd00 ; Mandatory
;
dc.w $0003 ; Command $03 'REQUEST SENSE'
dc.w scsi_cmd03 ; Mandatory
;
dc.w $0025 ; Command $25 'READ CAPACITY'
dc.w scsi_cmd25 ; Mandatory
;
dc.w $0012 ; Command $12 'INQUIRY'
dc.w scsi_cmd12 ; Mandatory
;
dc.w $001A ; Command $1A 'MODE SENSE'
dc.w scsi_cmd1A ; Optional
;
dc.w $0015 ; Command $15 'MODE SELECT'
dc.w scsi_cmd15 ; Optional
;
dc.w $0004 ; Command $04 'FORMAT UNIT'
dc.w scsi_cmd04 ; Mandatory
;
dc.w $001E ; Command $1E 'PREVENT/ALLOW REMOVAL'
dc.w scsi_cmd1E ; Optional
;
dc.w $0001 ; Command $01 'REZERO UNIT'
dc.w scsi_cmd01 ; Optional
;
dc.w $0007 ; Command $07 'REASSIGN BLOCKS'
dc.w scsi_cmd07 ; Optional
;
dc.w $000B ; Command $0B 'SEEK'
dc.w scsi_cmd0B ; Optional
;
dc.w $002B ; Command $2B 'SEEK (EXTENDED)'
dc.w scsi_cmd2B ; Optional
;
dc.w $0016 ; Command $16 'RESERVE UNIT'
dc.w scsi_cmd16 ; Mandatory
;
dc.w $0017 ; Command $17 'RELEASE UNIT'
dc.w scsi_cmd17 ; Mandatory
;
dc.w $001B ; Command $1B 'START/STOP UNIT'
dc.w scsi_cmd1B ; Optional
;
dc.w $001C ; Command $1C 'RECEIVE DIAGNOSTIC RESULTS'
dc.w scsi_cmd1C ; Optional
;
dc.w $001D ; Command $1D 'SEND DIAGNOSTICS'
dc.w scsi_cmd1D ; Mandatory
;
dc.w $002E ; Command $2E 'WRITE AND VERIFY'
dc.w scsi_cmd2E ; Optional
;
dc.w $002F ; Command $2F 'VERIFY'
dc.w scsi_cmd2F ; Optional
;
dc.w $0033 ; Command $33 'SET LIMITS'
dc.w scsi_cmd33 ; Optional
;
dc.w $0034 ; Command $34 'PRE-FETCH'
dc.w scsi_cmd34 ; Optional
;
dc.w $0035 ; Command $35 'SYNCHRONIZE CACHE'
dc.w scsi_cmd35 ; Optional
;
dc.w $0036 ; Command $36 'LOCK/UNLOCK CACHE'
dc.w scsi_cmd36 ; Optional
;
dc.w $0037 ; Command $37 'READ DEFECT DATA'
dc.w scsi_cmd37 ; Optional
;
dc.w $003B ; Command $3B 'WRITE BUFFER'
dc.w scsi_cmd3B ; Optional
;
dc.w $003C ; Command $3C 'READ BUFFER'
dc.w scsi_cmd3C ; Optional
;
dc.w $003E ; Command $3E 'READ LONG'
dc.w scsi_cmd3E ; Optional
;
dc.w $003F ; Command $3F 'WRITE LONG'
dc.w scsi_cmd3F ; Optional
;
dc.w $004C ; Command $4C 'LOG SELECT'
dc.w scsi_cmd4C ; Optional
;
dc.w $004D ; Command $4D 'LOG SENSE'
dc.w scsi_cmd4D ; Optional
;
dc.w $0055 ; Command $55 'MODE SELECT'
dc.w scsi_cmd55 ; Optional
;
dc.w $005A ; Command $5A 'MODE SENSE'
dc.w scsi_cmd5A ; Mandatory
;
dc.w $00B3 ; Command $B3 'SET LIMITS'
dc.w scsi_cmdB3 ; Optional
ENDIF
;-------------------------------------------------------------------------------
IF scsi_dtype = apple_cd THEN
;
;
dc.w $00CC ; Command $CC 'AUDIO STATUS'
dc.w scsi_cmdCC ; Mandatory
;
dc.w $0003 ; Command $03 'REQUEST SENSE'
dc.w scsi_cmd03 ; Mandatory
;
dc.w $0028 ; Command $28 'READ (EXTENDED)'
dc.w scsi_cmd28 ; Mandatory
;
dc.w $0008 ; Command $08 'READ'
dc.w scsi_cmd08 ; Mandatory
;
dc.w $0000 ; Command $00 'TEST UNIT READY'
dc.w scsi_cmd00 ; Mandatory
;
dc.w $0012 ; Command $12 'INQUIRY'
dc.w scsi_cmd12 ; Mandatory
;
dc.w $001A ; Command $1A 'MODE SENSE'
dc.w scsi_cmd1A ; Optional
;
dc.w $0025 ; Command $25 'READ CAPACITY'
dc.w scsi_cmd25 ; Mandatory
;
dc.w $0015 ; Command $15 'MODE SELECT'
dc.w scsi_cmd15 ; Optional
;
dc.w $00C0 ; Command $C0 'EJECT DISK'
dc.w scsi_cmdC0 ; Mandatory
;
dc.w $001E ; Command $1E 'PREVENT/ALLOW REMOVAL'
dc.w scsi_cmd1E ; Optional
;
dc.w $00C9 ; Command $C9 'AUDIO PLAY'
dc.w scsi_cmdC9 ; Mandatory
;
dc.w $00CE ; Command $CE 'AUDIO CONTROL'
dc.w scsi_cmdCE ; Mandatory
;
dc.w $00CA ; Command $CA 'AUDIO PAUSE'
dc.w scsi_cmdCA ; Mandatory
;
dc.w $00CB ; Command $CB 'AUDIO STOP'
dc.w scsi_cmdCB ; Mandatory
;
dc.w $00CD ; Command $CD 'AUDIO SCAN'
dc.w scsi_cmdCD ; Mandatory
;
dc.w $0001 ; Command $01 'REZERO UNIT'
dc.w scsi_cmd01 ; Optional
;
dc.w $000B ; Command $0B 'SEEK'
dc.w scsi_cmd0B ; Optional
;
dc.w $0016 ; Command $16 'RESERVE UNIT'
dc.w scsi_cmd16 ; Mandatory
;
dc.w $0017 ; Command $17 'RELEASE UNIT'
dc.w scsi_cmd17 ; Mandatory
;
dc.w $001B ; Command $1B 'START/STOP UNIT'
dc.w scsi_cmd1B ; Optional
;
dc.w $001C ; Command $1C 'RECEIVE DIAGNOSTIC RESULTS'
dc.w scsi_cmd1C ; Optional
;
dc.w $001D ; Command $1D 'SEND DIAGNOSTICS'
dc.w scsi_cmd1D ; Mandatory
;
dc.w $002B ; Command $2B 'SEEK (EXTENDED)'
dc.w scsi_cmd2B ; Optional
;
dc.w $002F ; Command $2F 'VERIFY'
dc.w scsi_cmd2F ; Optional
;
dc.w $003B ; Command $3B 'WRITE BUFFER'
dc.w scsi_cmd3B ; Optional
;
dc.w $003C ; Command $3C 'READ BUFFER'
dc.w scsi_cmd3C ; Optional
;
dc.w $004C ; Command $4C 'LOG SELECT'
dc.w scsi_cmd4C ; Optional
;
dc.w $004D ; Command $4D 'LOG SENSE'
dc.w scsi_cmd4D ; Optional
;
dc.w $0055 ; Command $55 'MODE SELECT (EXTENDED)'
dc.w scsi_cmd55 ; Optional
;
dc.w $005A ; Command $5A 'MODE SENSE (EXTENDED)'
dc.w scsi_cmd5A ; Optional
;
dc.w $00C1 ; Command $C1 'READ TOC'
dc.w scsi_cmdC1 ; Mandatory
;
dc.w $01C2 ; Command $1C2 'READ Q SUBCODE VOLUME LEVEL'
dc.w scsi_cmd1C2 ; Mandatory
;
dc.w $00C2 ; Command $C2 'READ Q SUBCODE'
dc.w scsi_cmdC2 ; Mandatory
;
dc.w $00C3 ; Command $C3 'READ HEADER'
dc.w scsi_cmdC3 ; Mandatory
;
dc.w $00C8 ; Command $C8 'AUDIO TRACK SEARCH'
dc.w scsi_cmdC8 ; Mandatory
ENDIF
;-------------------------------------------------------------------------------
IF scsi_dtype = mcd_40 THEN
;
;
;
;
dc.w $002A ; Command $2A 'WRITE (EXTENDED)'
dc.w scsi_cmd2A ; Mandatory
;
dc.w $0028 ; Command $28 'READ (EXTENDED)'
dc.w scsi_cmd28 ; Mandatory
;
dc.w $002B ; Command $2B 'SEEK (EXTENDED)'
dc.w scsi_cmd2B ; Optional
;
dc.w $001B ; Command $1B 'LOAD/UNLOAD UNIT'
dc.w scsi_cmd1B ; Optional
;
dc.w $0000 ; Command $00 'TEST UNIT READY'
dc.w scsi_cmd00 ; Mandatory
;
dc.w $0003 ; Command $03 'REQUEST SENSE'
dc.w scsi_cmd03 ; Mandatory
;
dc.w $0001 ; Command $01 'REZERO UNIT'
dc.w scsi_cmd01 ; Optional
;
dc.w $0025 ; Command $25 'READ CAPACITY'
dc.w scsi_cmd25 ; Mandatory
;
dc.w $0012 ; Command $12 'INQUIRY'
dc.w scsi_cmd12 ; Mandatory
;
dc.w $001A ; Command $1A 'MODE SENSE'
dc.w scsi_cmd1A ; Optional
;
dc.w $0015 ; Command $15 'MODE SELECT'
dc.w scsi_cmd15 ; Optional
;
dc.w $0016 ; Command $16 'RESERVE UNIT'
dc.w scsi_cmd16 ; Mandatory
;
dc.w $0017 ; Command $17 'RELEASE UNIT'
dc.w scsi_cmd17 ; Mandatory
;
dc.w $000A ; Command $0A 'WRITE'
dc.w scsi_cmd0A ; Mandatory
;
dc.w $0008 ; Command $08 'READ'
dc.w scsi_cmd08 ; Mandatory
;
dc.w $000B ; Command $0B 'SEEK'
dc.w scsi_cmd0B ; Optional
;
dc.w $0004 ; Command $04 'FORMAT UNIT'
dc.w scsi_cmd04 ; Mandatory
;
dc.w $0007 ; Command $07 'REASSIGN BLOCKS'
dc.w scsi_cmd07 ; Optional
;
dc.w $001C ; Command $1C 'RECEIVE DIAGNOSTIC RESULTS'
dc.w scsi_cmd1C ; Optional
;
dc.w $001D ; Command $1D 'SEND DIAGNOSTICS'
dc.w scsi_cmd1D ; Mandatory
;
dc.w $0037 ; Command $37 'READ DEFECT DATA'
dc.w scsi_cmd37 ; Optional
;
dc.w $003B ; Command $3B 'WRITE BUFFER'
dc.w scsi_cmd3B ; Optional
;
dc.w $003C ; Command $3C 'READ BUFFER'
dc.w scsi_cmd3C ; Optional
;
dc.w $0005 ; Command $05 'Send QIC 100 Sys Data'
dc.w scsi_cmd05 ; Optional
;
dc.w $0006 ; Command $06 'Recv QIC 100 Sys Data'
dc.w scsi_cmd06 ; Optional
;
dc.w $0009 ; Command $09 'VERIFY UNIT'
dc.w scsi_cmd09 ; Optional
;
dc.w $000D ; Command $0D 'Read SCSI Defect (Vendor)'
dc.w scsi_cmd0D ; Optional
;
dc.w $000E ; Command $0E 'Read Controller Info'
dc.w scsi_cmd0E ; Optional
;
dc.w $000F ; Command $0F 'Write Controller Info'
dc.w scsi_cmd0F ; Optional
;
dc.w $0010 ; Command $10 'DRIVE PASS-THRU'
dc.w scsi_cmd10 ; Optional
;
dc.w $0011 ; Command $11 'READ DRIVE LINES'
dc.w scsi_cmd11 ; Optional
;
dc.w $0013 ; Command $13 'Read QIC INFO'
dc.w scsi_cmd13 ; Optional
;
dc.w $0014 ; Command $14 'Write QIC INFO'
dc.w scsi_cmd14 ; Optional
;
dc.w $0019 ; Command $19 'Read QIC Defect Data'
dc.w scsi_cmd19 ; Optional
;
dc.w $004C ; Command $4C 'LOG SELECT'
dc.w scsi_cmd4C ; Optional
;
dc.w $004D ; Command $4D 'LOG SENSE'
dc.w scsi_cmd4D ; Optional
;
dc.w $0055 ; Command $55 'MODE SELECT (EXTENDED)'
dc.w scsi_cmd55 ; Optional
;
dc.w $005A ; Command $5A 'MODE SENSE (EXTENDED)'
dc.w scsi_cmd5A ; Optional
ENDIF
;-------------------------------------------------------------------------------
IF scsi_dtype = scanner THEN
;
;
;
;
dc.w $0034 ; Command $34 'GET DATA STATUS'
dc.w scsi_cmd34 ; Optional
;
dc.w $0007 ; Command $07 'GET DATA STATUS'
dc.w scsi_cmd07 ; Optional
;
dc.w $000E ; Command $0E 'EXPLORATORY STATUS'
dc.w scsi_cmd0E ; Optional
;
dc.w $0011 ; Command $11 'SPACE'
dc.w scsi_cmd11 ; Optional
;
dc.w $0028 ; Command $28 'READ (EXTENDED)'
dc.w scsi_cmd28 ; Mandatory
;
dc.w $0008 ; Command $08 'READ'
dc.w scsi_cmd08 ; Mandatory
;
dc.w $000A ; Command $0A 'SEND'
dc.w scsi_cmd0A ; Mandatory
;
dc.w $0024 ; Command $24 'DEFINE WINDOW PARAMETERS'
dc.w scsi_cmd24 ; Mandatory
;
dc.w $001B ; Command $1B 'SCAN (EXTENDED)'
dc.w scsi_cmd1B ; Optional
;
dc.w $0000 ; Command $00 'TEST UNIT READY'
dc.w scsi_cmd00 ; Mandatory
;
dc.w $0012 ; Command $12 'INQUIRY'
dc.w scsi_cmd12 ; Mandatory
;
dc.w $0003 ; Command $03 'REQUEST SENSE'
dc.w scsi_cmd03 ; Mandatory
;
dc.w $0025 ; Command $25 'GET WINDOW PARAMETRS'
dc.w scsi_cmd25 ; Optional
;
dc.w $001A ; Command $1A 'MODE SENSE'
dc.w scsi_cmd1A ; Optional
;
dc.w $0015 ; Command $15 'MODE SELECT'
dc.w scsi_cmd15 ; Optional
;
dc.w $0016 ; Command $16 'RESERVE UNIT'
dc.w scsi_cmd16 ; Mandatory
;
dc.w $0017 ; Command $17 'RELEASE UNIT'
dc.w scsi_cmd17 ; Mandatory
;
dc.w $0031 ; Command $31 'MEDIUM POSSITION'
dc.w scsi_cmd31 ; Optional
;
dc.w $002A ; Command $2A 'SEND (EXTENDED)'
dc.w scsi_cmd2A ; Optional
;
dc.w $0018 ; Command $18 'COPY'
dc.w scsi_cmd18 ; Optional
;
dc.w $001C ; Command $1C 'RECEIVE DIAGNOSTIC RESULTS'
dc.w scsi_cmd1C ; Optional
;
dc.w $001D ; Command $1D 'SEND DIAGNOSTICS'
dc.w scsi_cmd1D ; Mandatory
;
dc.w $0039 ; Command $39 'COMPARE'
dc.w scsi_cmd39 ; Optional
;
dc.w $003A ; Command $3A 'COPY AND VERIFY'
dc.w scsi_cmd3A ; Optional
;
dc.w $003B ; Command $3B 'WRITE BUFFER'
dc.w scsi_cmd3B ; Optional
;
dc.w $003C ; Command $3C 'READ BUFFER'
dc.w scsi_cmd3C ; Optional
;
dc.w $004C ; Command $4C 'LOG SELECT'
dc.w scsi_cmd4C ; Optional
;
dc.w $004D ; Command $4D 'LOG SENSE'
dc.w scsi_cmd4D ; Optional
;
dc.w $0055 ; Command $55 'MODE SELECT (EXTENDED)'
dc.w scsi_cmd55 ; Optional
;
dc.w $005A ; Command $5A 'MODE SENSE (EXTENDED)'
dc.w scsi_cmd5A ; Optional
ENDIF
;-------------------------------------------------------------------------------
IF scsi_dtype = appl_laser THEN
;
;
;
;
dc.w $0000 ; Command $00 'TEST UNIT READY'
dc.w scsi_cmd00 ; Mandatory
;
dc.w $0001 ; Command $01 'RESET PRINTER'
dc.w scsi_cmd01 ; Optional
;
dc.w $0002 ; Command $02 'DOWN LOAD CODE'
dc.w scsi_cmd02 ; Optional
;
dc.w $0003 ; Command $03 'REQUEST SENSE'
dc.w scsi_cmd03 ; Mandatory
;
dc.w $0004 ; Command $04 'FORMAT UNIT'
dc.w scsi_cmd04 ; Mandatory
;
dc.w $0005 ; Command $05 'DRAW BITS'
dc.w scsi_cmd05 ; Optional
;
dc.w $0006 ; Command $06 'CLEAR BITS'
dc.w scsi_cmd06 ; Optional
;
dc.w $000A ; Command $0A 'PRINT'
dc.w scsi_cmd0A ; Mandatory
;
dc.w $0012 ; Command $12 'INQUIRY'
dc.w scsi_cmd12 ; Mandatory
;
dc.w $0015 ; Command $15 'MODE SELECT'
dc.w scsi_cmd15 ; Optional
;
dc.w $0016 ; Command $16 'RESERVE UNIT'
dc.w scsi_cmd16 ; Mandatory
;
dc.w $0017 ; Command $17 'RELEASE UNIT'
dc.w scsi_cmd17 ; Mandatory
;
dc.w $001A ; Command $1A 'MODE SENSE'
dc.w scsi_cmd1A ; Optional
ENDIF
;-------------------------------------------------------------------------------
dc.w $FFFF ; End of the List.
dc.w $FFFF ;
EJECT
;*******************************************************
;
; Command translation Table:
;
;*******************************************************
;*******************************************************
;
;scsi_cmdxx dc.w scsit_tx++\ ; SCSI Send Data Command
; scsit_rx++\ ; SCSI Receive Data Command
; scsit_stat++\ ; SCSI Status Command
; scsit_cont++\ ; SCSI Control Command
; scsit_data++\ ; SCSI Data I/O Command
; scsit_dvc++\ ; SCSI Device I/O Command
; scsit_blk++\ ; Command has a Block Number
; scsic_1st++\ ; Must be first device if linked
; scsic_int++\ ; Internal Driver Command only
; scsic_dsw++\ ; Issue DISK_SW with this call
; scsic_off++\ ; Device is going offline.
; scsic_tout++\ ; Adjust time out by block count
; scsid_asis++\ ; CMD Data is in SCSI format
; scsid_blk++\ ; Convert Trans Count to Blocks
; scsid_byte++\ ; Leave Trans Count in Bytes
; scsid_none ; Transfer count does not go in CMD
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
; dc.w scsi_endcmd ; End of SCSI Translation Table
;
;*******************************************************
;-------------------------------------------------------------------------------
IF scsi_dtype = direct_acc THEN
;
; Command $00 'TEST UNIT READY'
; Mandatory
;
scsi_cmd00 dc.w scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $01 'REZERO UNIT'
; Optional
;
scsi_cmd01 dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 2*one_min ; Time out = 2 minutes.
dc.w scsi_endcmd
;
; Command $03 'REQUEST SENSE'
; Mandatory
;
scsi_cmd03 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 10*one_sec ; Time out = 10 second ticks.
dc.w scsi_endcmd
;
; Command $04 'FORMAT UNIT'
; Mandatory
;
scsi_cmd04 dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_1st++\ ; Must be first device if linked
scsic_dsw++\ ; Issue DISK_SW with this call
scsic_off++\ ; Device is going offline.
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 60*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $07 'REASSIGN BLOCKS'
; Optional
;
scsi_cmd07 dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_1st++\ ; Must be first device if linked
scsic_int++\ ; Internal Driver Command Only
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 1*one_sec ; Time out = one second.
dc.w scsi_endcmd
;
; Command $08 'READ'
; Mandatory
;
scsi_cmd08 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_data++\ ; It is a Data I/O Command
scsic_tout++\ ; Adjust time out by block count
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_blk ; Length is in Blocks
dc.w one_sec ; Time out = 1 second/Block.
dc.w scsi_endcmd
;
; Command $0A 'WRITE'
; Mandatory
;
scsi_cmd0A dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_data++\ ; It is a Data I/O Command
scsic_tout++\ ; Adjust time out by block count
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_blk ; Length is in Blocks
dc.w one_sec ; Time out = 1 second/Block.
dc.w scsi_endcmd
;
; Command $0B 'SEEK'
; Optional
;
scsi_cmd0B dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 1*one_sec ; Time out = 1 second.
dc.w scsi_endcmd
;
; Command $12 'INQUIRY'
; Mandatory
;
scsi_cmd12 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $15 'MODE SELECT'
; Optional
;
scsi_cmd15 dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_1st++\ ; Must be first device if linked
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 20*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $16 'RESERVE UNIT'
; Mandatory
;
scsi_cmd16 dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_1st++\ ; Must be first device if linked
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $17 'RELEASE UNIT'
; Mandatory
;
scsi_cmd17 dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_1st++\ ; Must be first device if linked
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $1A 'MODE SENSE'
; Optional
;
scsi_cmd1A dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $1B 'START/STOP UNIT'
; Optional
;
scsi_cmd1B dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_1st++\ ; Must be first device if linked
scsic_dsw++\ ; Issue DISK_SW with this call
scsic_off++\ ; Device is going offline.
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $1C 'RECEIVE DIAGNOSTIC RESULTS'
; Optional
;
scsi_cmd1C dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $1D 'SEND DIAGNOSTICS'
; Mandatory
;
scsi_cmd1D dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $1E 'PREVENT/ALLOW REMOVAL'
; Optional
;
scsi_cmd1E dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $25 'READ CAPACITY'
; Mandatory
;
scsi_cmd25 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $28 'READ (EXTENDED)'
; Mandatory
;
scsi_cmd28 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_data++\ ; It is a Data I/O Command
scsic_tout++\ ; Adjust time out by block count
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_blk ; Length is in Blocks
dc.w one_sec ; Time out = 1 second/Block.
dc.w scsi_endcmd
;
; Command $2A 'WRITE (EXTENDED)'
; Mandatory
;
scsi_cmd2A dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_data++\ ; It is a Data I/O Command
scsic_tout++\ ; Adjust time out by block count
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_blk ; Length is in Blocks
dc.w one_sec ; Time out = 1 second/Block.
dc.w scsi_endcmd
;
; Command $2B 'SEEK (EXTENDED)'
; Optional
;
scsi_cmd2B dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $2E 'WRITE AND VERIFY'
; Optional
;
scsi_cmd2E dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_data++\ ; It is a Data I/O Command
scsic_tout++\ ; Adjust time out by block count
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_blk ; Length is in Blocks
dc.w one_sec ; Time out = 1 second/Block.
dc.w scsi_endcmd
;
; Command $2F 'VERIFY'
; Optional
;
scsi_cmd2F dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_tout++\ ; Adjust time out by block count
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w one_sec ; Time out = 1 second/Block.
dc.w scsi_endcmd
;
; Command $33 'SET LIMITS'
; Optional
;
scsi_cmd33 dc.w scsit_cont++\ ; It is a Control Command
scsic_int++\ ; Internal Driver Command Only
scsit_dvc++\ ; It is a Device I/O Command
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $34 'PRE-FETCH'
; Optional
;
scsi_cmd34 dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $35 'SYNCHRONIZE CACHE'
; Optional
;
scsi_cmd35 dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $36 'LOCK/UNLOCK CACHE'
; Optional
;
scsi_cmd36 dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $37 'READ DEFECT DATA'
; Optional
;
scsi_cmd37 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $3B 'WRITE BUFFER'
; Optional
;
scsi_cmd3B dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_data++\ ; It is a Data I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $3C 'READ BUFFER'
; Optional
;
scsi_cmd3C dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_data++\ ; It is a Data I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $3E 'READ LONG'
; Optional
;
scsi_cmd3E dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_data++\ ; It is a Data I/O Command
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $3F 'WRITE LONG'
; Optional
;
scsi_cmd3F dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_data++\ ; It is a Data I/O Command
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $4C 'LOG SELECT'
; Optional
;
scsi_cmd4C dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $4D 'LOG SENSE'
; Optional
;
scsi_cmd4D dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $55 'MODE SELECT'
; Optional
;
scsi_cmd55 dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_1st++\ ; Must be first device if linked
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w one_sec ; Time out = 4 qtr second tick.
dc.w scsi_endcmd
;
; Command $5A 'MODE SENSE'
; Mandatory
;
scsi_cmd5A dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
;
; Command $B3 'SET LIMITS'
; Optional
;
scsi_cmdB3 dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd
ENDIF
;-------------------------------------------------------------------------------
IF scsi_dtype = apple_cd THEN
;
; Command $00 'TEST UNIT READY'
; Mandatory
;
scsi_cmd00 dc.w scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
; dc.w qtr_sec ; Time out = 1 qtr second tick.
dc.w 10*one_sec ; Time out = 10 seconds.
dc.w scsi_endcmd
;
; Command $01 'REZERO UNIT'
; Optional
;
scsi_cmd01 dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
; dc.w 2*one_min ; Time out = 2 minutes.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $03 'REQUEST SENSE'
; Mandatory
;
scsi_cmd03 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
; dc.w 2*qtr_sec ; Time out = 2 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $08 'READ'
; Mandatory
;
scsi_cmd08 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_data++\ ; It is a Data I/O Command
scsic_tout++\ ; Adjust time out by block count
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_blk ; Length is in Blocks
; dc.w 4*qtr_sec ; Time out = 1 second/block.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $0B 'SEEK'
; Optional
;
scsi_cmd0B dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
; dc.w 1*one_sec ; Time out = 1 second.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $12 'INQUIRY'
; Mandatory
;
scsi_cmd12 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
; dc.w 2*qtr_sec ; Time out = 2 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $15 'MODE SELECT'
; Optional
;
scsi_cmd15 dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_1st++\ ; Must be first device if linked
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
; dc.w 2*qtr_sec ; Time out = 2 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $16 'RESERVE UNIT'
; Mandatory
;
scsi_cmd16 dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_1st++\ ; Must be first device if linked
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
; dc.w 2*qtr_sec ; Time out = 2 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $17 'RELEASE UNIT'
; Mandatory
;
scsi_cmd17 dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_1st++\ ; Must be first device if linked
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
; dc.w 2*qtr_sec ; Time out = 2 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $1A 'MODE SENSE'
; Optional
;
scsi_cmd1A dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
; dc.w 2*qtr_sec ; Time out = 2 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $1B 'START/STOP UNIT'
; Optional
;
scsi_cmd1B dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_1st++\ ; Must be first device if linked
scsic_dsw++\ ; Issue DISK_SW with this call
scsic_off++\ ; Device is going offline.
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
; dc.w 2*qtr_sec ; Time out = 2 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $1C 'RECEIVE DIAGNOSTIC RESULTS'
; Optional
;
scsi_cmd1C dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
; dc.w 2*qtr_sec ; Time out = 2 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $1D 'SEND DIAGNOSTICS'
; Mandatory
;
scsi_cmd1D dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
; dc.w 2*qtr_sec ; Time out = 2 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $1E 'PREVENT/ALLOW REMOVAL'
; Optional
;
scsi_cmd1E dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
; dc.w 2*qtr_sec ; Time out = 2 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $25 'READ CAPACITY'
; Mandatory
;
scsi_cmd25 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
; dc.w 2*qtr_sec ; Time out = 2 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $28 'READ (EXTENDED)'
; Mandatory
;
scsi_cmd28 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_data++\ ; It is a Data I/O Command
scsic_tout++\ ; Adjust time out by block count
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_blk ; Length is in Blocks
; dc.w 4*qtr_sec ; Time out = 1 second/block.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $2B 'SEEK (EXTENDED)'
; Optional
;
scsi_cmd2B dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $2F 'VERIFY'
; Optional
;
scsi_cmd2F dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_tout++\ ; Adjust time out by block count
scsit_blk++\ ; It has a Block Number
scsid_asis++\ ; It is an as is Packet
scsid_blk ; Length is in Blocks
; scsid_none ; Length is not in command
dc.w 4*qtr_sec ; Time out = 1 second/block.
dc.w scsi_endcmd
;
; Command $3B 'WRITE BUFFER'
; Optional
;
scsi_cmd3B dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_data++\ ; It is a Data I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $3C 'READ BUFFER'
; Optional
;
scsi_cmd3C dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_data++\ ; It is a Data I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $4C 'LOG SELECT'
; Optional
;
scsi_cmd4C dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $4D 'LOG SENSE'
; Optional
;
scsi_cmd4D dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $55 'MODE SELECT (EXTENDED)'
; Optional
;
scsi_cmd55 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $5A 'MODE SENSE (EXTENDED)'
; Optional
;
scsi_cmd5A dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $C0 'EJECT DISK'
; Mandatory
;
scsi_cmdC0 dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsic_dsw++\ ; Issue DISK_SW with this call
scsic_off++\ ; Device is going offline.
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Length is not in command
; dc.w 2*qtr_sec ; Time out = 2 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd
;
; Command $C1 'READ TOC'
; Mandatory
;
scsi_cmdC1 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_data++\ ; SCSI Data I/O Command
scsid_byte ; Leave Trans Count in Bytes
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w $0101
dc.w $0205
dc.w $0307
dc.w $0408
dc.w $0509
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $C2 'READ Q SUBCODE'
; Mandatory
;
scsi_cmdC2 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_byte ; Leave Trans Count in Bytes
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w $0101
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $C3 'READ HEADER'
; Mandatory
;
scsi_cmdC3 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_data++\ ; SCSI Data I/O Command
scsid_byte ; Leave Trans Count in Bytes
; scsit_blk++\ ; Command has a Block Number
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w $0101
dc.w $0202
dc.w $0303
dc.w $0404
dc.w $0505
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $C8 'AUDIO TRACK SEARCH'
; Mandatory
;
scsi_cmdC8 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_none ; Transfer count does not go in CMD
; scsit_blk++\ ; Command has a Block Number
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w $0101
dc.w $0201
dc.w $0301
dc.w $0402
dc.w $0503
dc.w $0604
dc.w $0705
dc.w $0809
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $C9 'AUDIO PLAY'
; Mandatory
;
scsi_cmdC9 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_none ; Transfer count does not go in CMD
; scsit_blk++\ ; Command has a Block Number
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w $0101
dc.w $0201
dc.w $0301
dc.w $0402
dc.w $0503
dc.w $0604
dc.w $0705
dc.w $0809
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $CA 'AUDIO PAUSE'
; Mandatory
;
scsi_cmdCA dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_none ; Transfer count does not go in CMD
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w $0101
dc.w $0201
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $CB 'AUDIO STOP'
; Mandatory
;
scsi_cmdCB dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_none ; Transfer count does not go in CMD
; scsit_blk++\ ; Command has a Block Number
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w $0101
dc.w $0202
dc.w $0303
dc.w $0404
dc.w $0505
dc.w $0609
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $CC 'AUDIO STATUS'
; Mandatory
;
scsi_cmdCC dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_byte ; Leave Trans Count in Bytes
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w $0101
dc.w $0201
dc.w $0301
dc.w $0402
dc.w $0503
dc.w $0604
dc.w $0705
dc.w $0809
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $CD 'AUDIO SCAN'
; Mandatory
;
scsi_cmdCD dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_none ; Transfer count does not go in CMD
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w $0101
dc.w $0201
dc.w $0301
dc.w $0402
dc.w $0503
dc.w $0604
dc.w $0705
dc.w $0809
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $CE 'AUDIO CONTROL'
; Mandatory
;
scsi_cmdCE dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $1C2 'READ Q SUBCODE'
; Mandatory
;
scsi_cmd1C2 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
ENDIF
;-------------------------------------------------------------------------------
IF scsi_dtype = mcd_40 THEN
;
; Command $00 'TEST UNIT READY'
; Mandatory
;
scsi_cmd00 dc.w scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $01 'REZERO UNIT'
; Optional
;
scsi_cmd01 dc.w scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 90*one_sec ; Time out = 90 seconds.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $03 'REQUEST SENSE'
; Mandatory
;
scsi_cmd03 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $04 'FORMAT UNIT'
; Mandatory
;
scsi_cmd04 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsic_dsw++\ ; Issue DISK_SW with this call
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w one_min*50 ; Time out = 50 Minutes.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $05 'Send QIC 100 Sys Data'
; Optional
;
scsi_cmd05 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $06 'Recv QIC 100 Sys Data'
; Optional
;
scsi_cmd06 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $07 'REASSIGN BLOCKS'
; Optional
;
scsi_cmd07 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 90*one_sec ; Time out = 90 seconds.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $08 'READ'
; Mandatory
;
scsi_cmd08 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_data++\ ; SCSI Data I/O Command
scsit_blk++\ ; Command has a Block Number
scsic_tout++\ ; Adjust time out by block count
scsid_asis++\ ; CMD Data is in SCSI format
scsid_blk ; Convert Trans Count to Blocks
dc.w 90*one_sec ; Time out = 90 seconds/Block.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $09 'VERIFY UNIT'
; Optional
;
scsi_cmd09 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w one_min*50 ; Time out = 50 Minutes.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $0A 'WRITE'
; Mandatory
;
scsi_cmd0A dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_data++\ ; SCSI Data I/O Command
scsit_blk++\ ; Command has a Block Number
scsic_tout++\ ; Adjust time out by block count
scsid_asis++\ ; CMD Data is in SCSI format
scsid_blk ; Convert Trans Count to Blocks
dc.w 90*one_sec ; Time out = 90 seconds/Block.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $0B 'SEEK'
; Optional
;
scsi_cmd0B dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsit_blk++\ ; Command has a Block Number
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 90*one_sec ; Time out = 90 seconds.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $0D 'Read SCSI Defect (Vendor)'
; Optional
;
scsi_cmd0D dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 90*one_sec ; Time out = 90 seconds.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $0E 'Read Controller Info'
; Optional
;
scsi_cmd0E dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $0F 'Write Controller Info'
; Optional
;
scsi_cmd0F dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $10 'DRIVE PASS-THRU'
; Optional
;
scsi_cmd10 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $11 'READ DRIVE LINES'
; Optional
;
scsi_cmd11 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $12 'INQUIRY'
; Mandatory
;
scsi_cmd12 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $13 'Read QIC INFO'
; Optional
;
scsi_cmd13 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $14 'Write QIC INFO'
; Optional
;
scsi_cmd14 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $15 'MODE SELECT'
; Optional
;
scsi_cmd15 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $16 'RESERVE UNIT'
; Mandatory
;
scsi_cmd16 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $17 'RELEASE UNIT'
; Mandatory
;
scsi_cmd17 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $19 'Read QIC Defect Data'
; Optional
;
scsi_cmd19 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 90*one_sec ; Time out = 90 seconds.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $1A 'MODE SENSE'
; Optional
;
scsi_cmd1A dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $1B 'LOAD/UNLOAD UNIT'
; Optional
;
scsi_cmd1B dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 90*one_sec ; Time out = 90 seconds.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $1C 'RECEIVE DIAGNOSTIC RESULTS'
; Optional
;
scsi_cmd1C dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $1D 'SEND DIAGNOSTICS'
; Mandatory
;
scsi_cmd1D dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $25 'READ CAPACITY'
; Mandatory
;
scsi_cmd25 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $28 'READ (EXTENDED)'
; Mandatory
;
scsi_cmd28 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_data++\ ; SCSI Data I/O Command
scsit_blk++\ ; Command has a Block Number
scsic_tout++\ ; Adjust time out by block count
scsid_asis++\ ; CMD Data is in SCSI format
scsid_blk ; Convert Trans Count to Blocks
dc.w 90*one_sec ; Time out = 90 seconds/Block.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $2A 'WRITE (EXTENDED)'
; Mandatory
;
scsi_cmd2A dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_data++\ ; SCSI Data I/O Command
scsit_blk++\ ; Command has a Block Number
scsic_tout++\ ; Adjust time out by block count
scsid_asis++\ ; CMD Data is in SCSI format
scsid_blk ; Convert Trans Count to Blocks
dc.w 90*one_sec ; Time out = 90 seconds/Block.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $2B 'SEEK (EXTENDED)'
; Optional
;
scsi_cmd2B dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsit_blk++\ ; Command has a Block Number
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 90*one_sec ; Time out = 90 seconds.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $37 'READ DEFECT DATA'
; Optional
;
scsi_cmd37 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $3B 'WRITE BUFFER'
; Optional
;
scsi_cmd3B dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $3C 'READ BUFFER'
; Optional
;
scsi_cmd3C dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $4C 'LOG SELECT'
; Optional
;
scsi_cmd4C dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $4D 'LOG SENSE'
; Optional
;
scsi_cmd4D dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $55 'MODE SELECT (EXTENDED)'
; Optional
;
scsi_cmd55 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $5A 'MODE SENSE (EXTENDED)'
; Optional
;
scsi_cmd5A dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
ENDIF
;-------------------------------------------------------------------------------
IF scsi_dtype = scanner THEN
;
; Command $00 'TEST UNIT READY'
; Mandatory
;
scsi_cmd00 dc.w scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $03 'REQUEST SENSE'
; Mandatory
;
scsi_cmd03 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $07 'GET DATA STATUS'
; Optional
;
scsi_cmd07 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $08 'READ'
; Mandatory
;
scsi_cmd08 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $0A 'SEND'
; Mandatory
;
scsi_cmd0A dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $0E 'SPACE'
; Mandatory
;
scsi_cmd0E dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 8*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $11 'SPACE'
; Mandatory
;
scsi_cmd11 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $12 'INQUIRY'
; Mandatory
;
scsi_cmd12 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
dc.w $000E ; Command $0E 'EXPLORATORY STATUS'
dc.w scsi_cmd0E ; Optional
;
; Command $15 'MODE SELECT'
; Optional
;
scsi_cmd15 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $16 'RESERVE UNIT'
; Mandatory
;
scsi_cmd16 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $17 'RELEASE UNIT'
; Mandatory
;
scsi_cmd17 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $18 'COPY'
; Optional
;
scsi_cmd18 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $1A 'MODE SENSE'
; Optional
;
scsi_cmd1A dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $1B 'SCAN'
; Optional
;
scsi_cmd1B dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 1*one_min ; Time out = 1 Minute.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $1C 'RECEIVE DIAGNOSTIC RESULTS'
; Optional
;
scsi_cmd1C dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $1D 'SEND DIAGNOSTICS'
; Mandatory
;
scsi_cmd1D dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
; dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w 10*one_min ; Time out = 10 minutes.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $24 'DEFINE WINDOW PARAMETERS'
; Mandatory
;
scsi_cmd24 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $25 'GET WINDOW PARAMETERS'
; Optional
;
scsi_cmd25 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $28 'READ (EXTENDED)'
; Mandatory
;
scsi_cmd28 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 10*one_min ; Time out = 10 minutes.
; dc.w 2*one_sec ; Time out = 2 seconds
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $2A 'WRITE (EXTENDED)'
; Mandatory
;
scsi_cmd2A dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 2*one_sec ; Time out = 2 seconds
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $31 'MEDIUM POSITION'
; Optional
;
scsi_cmd31 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 1*one_min ; Time out = 1 Minute.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $34 'GET DATA STATUS'
; Optional
;
scsi_cmd34 dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 2*one_min ; Time out = 1 Minute.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $39 'COMPARE'
; Optional
;
scsi_cmd39 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $3A 'COPY AND VERIFY'
; Optional
;
scsi_cmd3A dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_none ; Transfer count does not go in CMD
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $3B 'WRITE BUFFER'
; Optional
;
scsi_cmd3B dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $3C 'READ BUFFER'
; Optional
;
scsi_cmd3C dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $4C 'LOG SELECT'
; Optional
;
scsi_cmd4C dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $4D 'LOG SENSE'
; Optional
;
scsi_cmd4D dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_data++\ ; SCSI Data I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $55 'MODE SELECT (EXTENDED)'
; Optional
;
scsi_cmd55 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; SCSI Control Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
;
; Command $5A 'MODE SENSE (EXTENDED)'
; Optional
;
scsi_cmd5A dc.w scsit_rx++\ ; SCSI Receive Data Command
scsit_stat++\ ; SCSI Status Command
scsit_dvc++\ ; SCSI Device I/O Command
scsid_asis++\ ; CMD Data is in SCSI format
scsid_byte ; Leave Trans Count in Bytes
dc.w 4*qtr_sec ; Time out = 4 qtr second ticks.
dc.w scsi_endcmd ; End of SCSI Translation Table
ENDIF
;-------------------------------------------------------------------------------
IF scsi_dtype = appl_laser THEN
;
; Command $00 'TEST UNIT READY'
; Mandatory
;
scsi_cmd00 dc.w scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd
;
; Command $01 'RESET PRINTER'
; Optional
;
scsi_cmd01 dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd
;
; Command $02 'DOWN LOAD CODE'
; Optional
;
scsi_cmd02 dc.w scsit_tx++\ ; SCSI Send Data Command
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Leave Trans Count in Bytes
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd
;
; Command $03 'REQUEST SENSE'
; Mandatory
;
scsi_cmd03 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd
;
; Command $04 'FORMAT UNIT'
; Mandatory
;
scsi_cmd04 dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd
;
; Command $05 'DRAW BITS'
; Optional
;
scsi_cmd05 dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Transfer count does not go in CMD
dc.w 10*one_min ; Time out = 10 Minute.
dc.w scsi_endcmd
;
; Command $06 'CLEAR BITS'
; Mandatory
;
scsi_cmd06 dc.w scsit_tx++\ ; It requests data from target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 10*one_min ; Time out = 10 Minute.
dc.w scsi_endcmd
;
; Command $0A 'PRINT'
; Mandatory
;
scsi_cmd0A dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Transfer count does not go in CMD
dc.w 10*one_min ; Time out = 10 Minute.
dc.w scsi_endcmd
;
; Command $12 'INQUIRY'
; Mandatory
;
scsi_cmd12 dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd
;
; Command $15 'MODE SELECT'
; Optional
;
scsi_cmd15 dc.w scsit_tx++\ ; It sends data to the target
scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd
;
; Command $16 'RESERVE UNIT'
; Mandatory
;
scsi_cmd16 dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Transfer count does not go in CMD
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd
;
; Command $17 'RELEASE UNIT'
; Mandatory
;
scsi_cmd17 dc.w scsit_cont++\ ; It is a Control Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_none ; Length is not in command
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd
;
; Command $1A 'MODE SENSE'
; Optional
;
scsi_cmd1A dc.w scsit_rx++\ ; It requests data from target
scsit_stat++\ ; It is a Status Command
scsit_dvc++\ ; It is a Device I/O Command
scsid_asis++\ ; It is an as is Packet
scsid_byte ; Length is in Bytes
dc.w 1*qtr_sec ; Time out = 1 qtr second ticks.
dc.w scsi_endcmd
ENDIF
;-------------------------------------------------------------------------------
ENDP
EJECT
;*******************************************************
;
; Command Packet Size Table:
;
; This table is indexed by (Group Number * 6)
;
; The first word in an entry equals the Packet Size.
; This is used to set the command length in the data
; for the SCSI Manager calls. If this value is null,
; then the group is undefined for this driver.
;
; The next byte is the offset to the first and most
; significant byte of the requested block number if
; used in this packet.
;
; The byte following this is the number of bytes that
; make up a valid Block Number.
;
; The next byte is the offset to the first and most
; significant byte of the requested data length if
; used in this packet.
;
; The byte following this is the number of bytes that
; make up a valid request length.
;
;*******************************************************
EXPORT cmd_ps_tbl
cmd_ps_tbl PROC
start_tbl
;
; Group 0 Commands
;
dc.w 0006 ; 6 Byte Command.
dc.b $03 ; Offset to last Block Parm
EXPORT c_blk_len:EQU
c_blk_len equ *-start_tbl ; Equated offset to Block Length
dc.b $03 ; Length of Block Parm
dc.b $04 ; Offset to last Length Parm
EXPORT c_len_len:EQU
c_len_len equ *-start_tbl ; Equated offset to Length Length
;-------------------------------------------------------------------------------
IF scsi_dtype = scanner THEN
dc.b $02 ; Length of Length Parm
ELSE
;-------------------------------------------------------------------------------
dc.b $01 ; Length of Length Parm
ENDIF
;-------------------------------------------------------------------------------
;
; Group 1 Commands
;
dc.w 0010 ; 10 Byte Command.
dc.b $05 ; Offset to last Block Parm
dc.b $04 ; Length of Block Parm
dc.b $08 ; Offset to last Length Parm
dc.b $03 ; Length of Length Parm
;
; Group 2 Commands
;
dc.w 0010 ; 10 Byte Command.
dc.b $05 ; Offset to last Block Parm
dc.b $04 ; Length of Block Parm
dc.b $08 ; Offset to last Length Parm
dc.b $03 ; Length of Length Parm
;
; Group 3 Commands
;
dc.w 0000 ; Reserved Command.
dc.b $00 ; Offset to last Block Parm
dc.b $00 ; Length of Block Parm
dc.b $00 ; Offset to last Length Parm
dc.b $00 ; Length of Length Parm
;
; Group 4 Commands
;
dc.w 0000 ; Reserved Command.
dc.b $00 ; Offset to last Block Parm
dc.b $00 ; Length of Block Parm
dc.b $00 ; Offset to last Length Parm
dc.b $00 ; Length of Length Parm
;
; Group 5 Commands
;
dc.w 0012 ; 12 Byte Command.
dc.b $05 ; Offset to last Block Parm
dc.b $04 ; Length of Block Parm
dc.b $09 ; Offset to last Length Parm
dc.b $04 ; Length of Length Parm
;
; Group 6 Commands
;
dc.w 0010 ; 10 Byte Command.
dc.b $05 ; Offset to last Block Parm
dc.b $04 ; Length of Block Parm
dc.b $08 ; Offset to last Length Parm
dc.b $03 ; Length of Length Parm
;
; Group 7 Commands
;
dc.w 0000 ; Reserved Command.
dc.b $00 ; Offset to last Block Parm
dc.b $00 ; Length of Block Parm
dc.b $00 ; Offset to last Length Parm
dc.b $00 ; Length of Length Parm
ENDP
EJECT
;*******************************************************
;
; Internal Data Buffer:
;
; This buffer is used by the driver for all of it's
; maintainence I/O between it and the devices that it
; manages or communicates with. This is where any
; INQUIRY data will be received or blocks read in that
; are needed by the driver to make any kind of
; determination. There is also a section reserved for
; the REQUEST SENSE command for that last command sent.
;
;*******************************************************
EXPORT internal_buff
internal_buff PROC
;-------------------------------------------------------------------------------
IF scsi_dtype = direct_acc THEN
dcb.b block_size+20,0 ;Incase 532 byte block
ENDIF
;-------------------------------------------------------------------------------
IF scsi_dtype = apple_cd THEN
dcb.b block_size*4,0 ;Worst case 2k Block size
ENDIF
;-------------------------------------------------------------------------------
IF scsi_dtype = mcd_40 THEN
dcb.b block_size,0
ENDIF
;-------------------------------------------------------------------------------
IF scsi_dtype = scanner THEN
dcb.b one_page*2,0
ENDIF
;-------------------------------------------------------------------------------
IF scsi_dtype = appl_laser THEN
dcb.b one_page*2,0
ENDIF
;-------------------------------------------------------------------------------
ENDP
END
EJECT