The following macro defines device characteristics found in dkdriver. The device ID is the identifier returned on INQUIRY, which is generally what shows up in the >>>SHO DEV display as the device name. This is how a device is recognized. The table of specific device types can be located easily in a copy of sys$dkdriver.exe by looking for ASCII strings like RZ23, RZ57, etc. Note that the structure of entries is as the macro below defines: 1. a one byte VMS device type (need not be definitive) 2. Flags byte. Most commonly the value 03 is in this, i.e., disconnect and sync modes supported. To disable disconnect for example, change to 02. 3. A word (2 bytes) padding 4. The device ID string (up to 8 ASCII characters, space padded) 5. Minimum firmware rev level, a longword. Usually just zero. 6. Media id. Optional. Can be zeroes. Used to override name in ident string. 7. Phase change timeout, sec. On slow devices you may want to extend 8. Disconnect timeout, sec. Slow devices may need longer. VFE is handy for patching this. .SBTTL SCSI_DEV_TYPES - Build SCSI device table ;+ ; SCSI_DEV_TYPES ; ; This macro builds a table of pre-defined SCSI device types. During unit ; initialization, an inquiry command is sent to the target which returns ; 8 bytes of ID string. The table is then scanned for a matching ID. If one ; is found, information for that entry is copied into the UCB, including the ; device type, media ID, disconnect/synchronous flags, and various timeout ; values. If no matching entry is found, the device is assumed to be a ; "generic" SCSI disk, and the entry for generic devices is used. Each entry ; in the device type table has the following format: ; $DEFINI SCSI_DEVICE_ENTRY $DEF DTYP_TYPE .BLKB 1 ; VMS Device type $DEF DTYP_FLAGS .BLKB 1 ; Flags. Bit set means: $VIELD DTYP,0,<- ; ,- ; Bit 0 = disconnect support ,- ; Bit 1 = sync mode support ,- ; Bit 2 = disable TCQ support > ; Bit 3 = Mode Sense 10 req'd $DEF <> .BLKW 1 ; Pad for alignment $DEF DTYP_ID_STRING .BLKL 2 ; ID String $DEF DTYP_MINREV .BLKL 1 ; Min. Revision level $DEF DTYP_MEDIA_ID .BLKL 1 ; Media Id $DEF DTYP_PHASE_TMO .BLKW 1 ; Phase Change Timeout $DEF DTYP_DISC_TMO .BLKW 1 ; Disconnect Timeout $DEF DTYP_TABLE_ENTRY_SIZE ; Size of SCSI Device Table Entry $DEFINI SCSI_DEVICE_ENTRY ; Each table entry is 24 bytes, which allows successive entries ; to be naturally aligned. ASSUME DTYP_TABLE_ENTRY_SIZE EQ 24 ; The table is terminated with a VMS device code of 0. ;- .MACRO SCSI_DEV_TYPES, LIST .ALIGN LONG .MACRO SCSI_DEV_TYPES1, ID_STRING, DEVICE_TYPE, MEDIA_ID,- MINIMUM_REVISION, DISCONNECT, SYNCHRONOUS,- PHASE_CHANGE_TIMEOUT, DISCONNECT_TIMEOUT,- TAGGED_QUEUING, MODE_SENSE_10 .IF IDN , GENERIC GENERIC_SCSI_DISK: .ENDC ; Device type .BYTE DT$_'DEVICE_TYPE' ; Flags, including disconnect and synchronous $$$FLAGS = 0 .IIF IDN DISCONNECT, YES, $$$FLAGS = $$$FLAGS + DTYP$M_DISC .IIF IDN SYNCHRONOUS, YES, $$$FLAGS = $$$FLAGS + DTYP$M_SYNC .IIF IDN TAGGED_QUEUING, NO, $$$FLAGS = $$$FLAGS + DTYP$M_NO_TCQ .IIF IDN MODE_SENSE_10, YES, $$$FLAGS = $$$FLAGS + DTYP$M_MODE_10 .BYTE $$$FLAGS ; Pad to longword align the entry .WORD 0 ; 8 character product ID string, padded with spaces .NCHR $$$STRLEN, .IIF GT $$$STRLEN-8, .ERROR ;Illegal SCSI product ID: ID_STRING $$$PADCNT = 8-$$$STRLEN .ASCII /ID_STRING/ .REPT $$$PADCNT .ASCII / / .ENDR ; Minimum revision level. This field is compared to the revision field returned ; in the inquiry data. If the device is out of rev, an error is logged. .ASCII /MINIMUM_REVISION/ ; Media ID field, derived from the device type if possible, otherwise supplied ; in the table. .IF DIF , GENERIC .IF B MEDIA_ID MEDIA , .IFF MEDIA , .ENDC .IFF MEDIA , , DT$_Generic_DK ; Media value for generic DK device .ENDC ; Phase change timeout $$$PHASE_CHANGE_TIMEOUT = DEFAULT_PHASE_CHANGE_TIMEOUT .IF DIF PHASE_CHANGE_TIMEOUT, DEFAULT $$$PHASE_CHANGE_TIMEOUT = PHASE_CHANGE_TIMEOUT .ENDC .WORD $$$PHASE_CHANGE_TIMEOUT ; Disconnect timeout $$$DISCONNECT_TIMEOUT = DEFAULT_DISCONNECT_TIMEOUT .IF DIF DISCONNECT_TIMEOUT, DEFAULT $$$DISCONNECT_TIMEOUT = DISCONNECT_TIMEOUT .ENDC .WORD $$$DISCONNECT_TIMEOUT .ENDM SCSI_DEV_TYPES1 .IRP ENTRY, SCSI_DEV_TYPES1 ENTRY .ENDR .ENDM SCSI_DEV_TYPES .SBTTL SCSI device types table ;+ ; SCSI_DEVICE_TABLE ; ; This table is used to translate the product ID field from the inquiry data ; to a VMS device type. Once the device type is determined, various information ; about the device such as disconnect and synchronous flags and timeout vaules ; is saved in the UCB. ; ; To clarify the meanings of some fields: ; ; TCQ: A value of NO means that the device should be unconditionally treated ; as incapable of tagged command queuing. Any other value indicates that ; the drive should be declared TCQ, provided 3 factors test true: ; - The Inquiry TCQ support bit is set. ; - The control mode page TCQ-disable bit is clear. ; - The underlying adapter supports TCQ. ; ; Mode Sense 10: YES means that all Mode Sense/Select commands shall attempt ; the 10-byte version of the command first, then fall back to 6-byte only ; if necessary. NO means that only the 6-byte version should ever be attempted. ;- SCSI_DEVICE_TABLE:: SCSI_DEV_TYPES <- ; ; ID string Dev type Media ID Min Rev Disc Synch Phas tmo Disc tmo TCQ Mode Sense 10 ; --------- -------- -------- ------- ---- ----- -------- --------- --------- ------------- ; <, RZ22, , <0615>, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ23, , <0615>, YES, NO, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ23L, RZL23, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ24, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ25, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ31, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ55, , <0700>, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ56, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ57, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, FD3, , < >, NO, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ57I, RZI57, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ58, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >> SCSI_DEV_TYPES <- <, RRD40S, RRD40, <250D>, YES, NO, DEFAULT, RRD40_DISC_TMO, DEFAULT, NO >,- <, RRD42, , < >, YES, NO, DEFAULT, RRD42_DISC_TMO, DEFAULT, NO >> SCSI_DEV_TYPES <- <, RZ72, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ73, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ35, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RWZ01, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ24L, RZL24, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ25L, RZL25, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ26L, RZL26, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >> SCSI_DEV_TYPES <- <, RZ55L, RZL55, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ56L, RZL56, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ57L, RZL57, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ26, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ36, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ74, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >> .IF DEFINED RZ74_CACHE .print ; Add comment to previous line SCSI_DEV_TYPES <- <, RZ74, , <436A>, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >> .ENDC SCSI_DEV_TYPES <- <, RZ27, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ37, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ38, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ75, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ59, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ34L, RZL34, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ35L, RZL35, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ36L, RZL36, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RRD43, , < >, YES, NO, DEFAULT, RRD42_DISC_TMO, DEFAULT, NO >,- <, RRD44, , < >, YES, NO, DEFAULT, RRD42_DISC_TMO, DEFAULT, NO >> SCSI_DEV_TYPES <- <, RZ13, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ14, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ15, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ16, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ17, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ18, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, EZ51, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, EZ52, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, EZ53, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, EZ54, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, EZ58, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >> SCSI_DEV_TYPES <- <, HSZ10, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ28, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ29, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ22, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- < RZ23, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <<1578-15>, RZ55, , < >, NO, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RRD40S, RRD40, < >, YES, NO, DEFAULT, RRD40_DISC_TMO, DEFAULT, NO >,- <, RX23S, RX23, < >, YES, NO, RX_PHS_TMO, RX_DISC_TMO, DEFAULT, NO >,- <, RX33S, RX33, < >, YES, NO, RX_PHS_TMO, RX_DISC_TMO, DEFAULT, NO >,- <, RX26, , < >, YES, NO, RX_PHS_TMO, RX_DISC_TMO, DEFAULT, NO >,- <, RZ55, , , YES, NO, DEFAULT, DEFAULT, DEFAULT, NO >,- <, GENERIC_DK, , < >, NO , YES, DEFAULT, DEFAULT, DEFAULT, NO >> SCSI_DEV_TYPES <- <, RZ26B, RZB26, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ27B, RZB27, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ28B, RZB28, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ29B, RZB29, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ73B, RZB73, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ74B, RZB74, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ75B, RZB75, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ27L, RZL27, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RWZ21, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, HSZ20, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, HSZ40, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >> SCSI_DEV_TYPES <- <, HSX00, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, HSX01, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, HSZ15, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RZ26M, RZM26, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RW504, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RW510, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RW514, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RW516, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >> SCSI_DEV_TYPES <- <, RWZ52, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RWZ53, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RWZ54, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, RWZ31, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >> SCSI_DEV_TYPES <- <, EZ31, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, EZ32, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, EZ33, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, EZ34, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, EZ35, , < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, EZ31L, EZL31, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, EZ32L, EZL32, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >,- <, EZ33L, EZL33, < >, YES, YES, DEFAULT, DEFAULT, DEFAULT, NO >>