mirror of
https://github.com/antoinevignau/source.git
synced 2025-01-01 15:30:02 +00:00
d29484938c
What we wrote to make audio hearable on a SCSI-2 CD-ROM drive ;-)
1 line
89 KiB
Plaintext
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 |