antoine-source/scsi2/SCSI.Drivers/SCSICD.Equates

1 line
19 KiB
Plaintext

*** WARNING *** Far as I can tell, this file is completely unused. 15-Dec-92 DAL ***
;*******************************************************
;
; This file contains all the global equates for the
; SCSI Driver. Only those items below that are marked
; as "**** Changable ****" can be altered safly
; without detailed intimate knowledge of how the
; generic driver functions. Any other values should
; only be modified by someone who understands how this
; generic driver functions.
;
;*******************************************************
;
; Bit Location equates
;
null equ %0000000000000000
bit_0 equ %0000000000000001
bit_1 equ %0000000000000010
bit_2 equ %0000000000000100
bit_3 equ %0000000000001000
bit_4 equ %0000000000010000
bit_5 equ %0000000000100000
bit_6 equ %0000000001000000
bit_7 equ %0000000010000000
bit_8 equ %0000000100000000
bit_9 equ %0000001000000000
bit_10 equ %0000010000000000
bit_11 equ %0000100000000000
bit_12 equ %0001000000000000
bit_13 equ %0010000000000000
bit_14 equ %0100000000000000
bit_15 equ %1000000000000000
;
; Partition Map Signature
;
Part_sig equ $4d50
;
; Booleans
;
true equ bit_0
false equ null
;
; Structure Sizes.
;
qtr_sec equ $0001
one_sec equ 4*qtr_sec
one_min equ 60*one_sec
max_timeout equ 2*one_min ;**** Changable ****
one_page equ $00000100
block_size equ one_page*2 ;**** Changable ****
dib_size equ one_page
max_dvc_cnt equ 100 ;Yes: that's decimal 100
max_gdvc_buf equ $00000704
max_cmd_len equ 12 ;Yes: that's decimal 12
p_mask_adder equ bit_10 ;First Bit of Partition Count. *** Changable ***
max_p_mask equ p_mask_adder\ ;6 bits of unit number
+p_mask_adder*2\
+p_mask_adder*4\
+p_mask_adder*8\
+p_mask_adder*16\
+p_mask_adder*32
max_partitions equ max_p_mask/p_mask_adder+1
interleave equ 1 ;**** Changable ****
;
; SCSI Driver Version Number.
; and other driver dependent data
;
drvr_vers equ $0010 ;**** Changable ****
cmd_start equ $0000 ;Driver Startup Call
cmd_open equ $0001 ;Driver Open Call
cmd_read equ $0002 ;Driver Read Call
cmd_write equ $0003 ;Driver Write Call
cmd_close equ $0004 ;Driver Close Call
cmd_status equ $0005 ;Driver Status Call
cmd_control equ $0006 ;Driver Control Call
cmd_flush equ $0007 ;Driver Flush Call
cmd_shutdown equ $0008 ;Driver Shutdown Call
max_d_cmd equ $0008 ;Max Driver Command **** Changable ****
max_s_cmd equ $0004 ;Max Status Code **** Changable ****
max_c_cmd equ $0009 ;Max Control Code **** Changable ****
;
; Suppervisory Dispatcher IDs and
; SCSI Manager Command Numbers
;
super_d_id equ $0000 ;Supervisory Dispatcher's ID
get_sdrvr_id equ $0000 ;Get S Driver's ID Number
set_sib_ptr equ $0001 ;Set SIB Pointer
cmd_get_dvc equ $0002 ;SCSI Manager Get Devices Call
cmd_claim_dvc equ $0003 ;SCSI Manager Claim Devices Call
scsi_io_call equ $0004 ;SCSI Manager I/O Call
;
; SCSI Device Types from INQUIRY Call
;
direct_acc equ $0000 ; Direct-Access Device
seq_acc equ $0001 ; Sequential-Access Device
print_dvc equ $0002 ; Printer Device
proc_dvc equ $0003 ; Processor Device
worm_dvc equ $0004 ; Write-once Read-multiple Device
read_dacc equ $0005 ; Read-only Direct-Access Device
scanner equ $0006 ; Scanner Device
optic_mem equ $0007 ; Optical Memory Devices
changer equ $0008 ; Changer Devices
comm_dvc equ $0009 ; Communication Devices
mcd_40 equ $0010 ; Apple's tape. Direct Access Magnetic Tape Device
apple_cd equ $0005 ; Apple's CD-ROM
apple_scan equ $00ff ; Apple's Scanner
appl_laser equ $00ff ; Apple's LaserWriter SC
data_dat equ $00ff ; Data Dat Device
mag_optical equ $00ff ; Magneto-Optical Device
;
; Type of Device we support in this driver.
;
scsi_dtype equ apple_cd ;**** Changable ****
scsi_duid equ $3C00 ;**** Changable ****
claim_dvc equ false ;**** Changable ****
block_dvc equ true ;**** Changable ****
character_dvc equ false ;**** Changable ****
IF block_dvc=character_dvc THEN
; "These two can not be the same!"
ENDIF
;
; IMMED Bit is bit 0 of byte 1 in
; the standard SCSI Command for
; Direct-Access Devices.
; That means the high byte because
; of the 65xxx Low -> High structure.
; Kind of confusing!
;
immed_loc equ bit_8 ;**** Changable ****
;
; System Service Calls we need.
;
;*******************************************************
;
; ENTRY: move_info via 'jsl'
;
; LONGWORD - Source buffer pointer
; LONGWORD - Destination buffer pointer
; LONGWORD - Transfer length
; WORD - Source buffer pointer
; SP -->
;
; A Reg = Undefined
; X Reg = Undefined
; Y Reg = Undefined
; Bank Reg = Undefined
; Dir Reg = GS/OS Direct Page
; P Reg = N V M X D I Z C E
; x x 0 0 0 x x x 0
;
; EXIT: move_info via 'rtl'
;
; A Reg = Error Code
; X Reg = Undefined
; Y Reg = Undefined
; Bank Reg = Undefined
; Dir Reg = GS/OS Direct Page
; P Reg = N V M X D I Z C E
; x x 0 0 0 x x 0 0 No Error
; x x 0 0 0 x x 1 0 Error
;
;*******************************************************
move_info equ $01fc70
moveblkcmd equ $0800 ;Block Move Option
move_sinc_dinc equ $0805 ;Source Inc, Dest Inc
move_sinc_ddec equ $0809 ;Source Inc, Dest Dec
move_sdec_dinc equ $0806 ;Source Dec, Dest Inc
move_sdec_ddec equ $080a ;Source Dec, Dest Dec
move_scon_dcon equ $0800 ;Source con, Dest con
move_sinc_dcon equ $0801 ;Source Inc, Dest con
move_sdec_dcon equ $0802 ;Source Dec, Dest con
move_scon_dinc equ $0804 ;Source con, Dest Inc
move_scon_ddec equ $0808 ;Source con, Dest Dec
;*******************************************************
;
; ENTRY: set_disksw via 'jsl'
;
; A Reg = Undefined
; X Reg = Undefined
; Y Reg = Undefined
; Bank Reg = Undefined
; Dir Reg = GS/OS Direct Page
; P Reg = N V M X D I Z C E
; x x 0 0 0 x x x 0
;
; EXIT: set_disksw via 'rtl'
;
; A Reg = Undefined
; X Reg = Undefined
; Y Reg = Undefined
; Bank Reg = Undefined
; Dir Reg = GS/OS Direct Page
; P Reg = N V M X D I Z C E
; x x 0 0 0 x x 0 0 No Error
;
;*******************************************************
set_disksw equ $01fc90
s_dispatch equ $01fca4
install_driver equ $01fca8
;
; Direct Page Addresses.
;
dev_num equ $0000 ;Device Number
call_num equ $0002 ;Call Number
buff_ptr equ $0004 ;Buffer Pointer
rqst_cnt equ $0008 ;Request Count
trans_cnt equ $000C ;Transfer Count
block_num equ $0010 ;Block Number (Read/Write only)
blk_size equ $0014 ;Block Size
fst_num equ $0016 ;FST Number (Read/Write only)
stat_code equ $0016 ;Status Command Code
cont_code equ $0016 ;Control Command Code
volume_id equ $0018 ;Volume ID (Read/Write only)
cache_prio equ $001A ;Cache Priority Value (Read/Write only)
cache_ptr equ $001C ;Cache Pointer (Read/Write only)
dib_ptr equ $0020 ;DIB Pointer
scsi_mdrvr equ $005A ;Main Driver Command Data Ptr goes here.
dvc_list equ scsi_mdrvr+4;Get Devices List (Startup Command Only)
scsi_zp0 equ dvc_list+4 ;User Defined Direct page scratch pad
scsi_zp1 equ scsi_zp0+2 ;User Defined Direct page scratch pad
scsi_zp2 equ scsi_zp1+2 ;User Defined Direct page scratch pad
scsi_zp3 equ scsi_zp2+2 ;User Defined Direct page scratch pad
scsi_zp4 equ scsi_zp3+2 ;User Defined Direct page scratch pad
scsi_zp5 equ scsi_zp4+2 ;User Defined Direct page scratch pad
scsi_zp6 equ scsi_zp5+2 ;User Defined Direct page scratch pad
scsi_zp7 equ scsi_zp6+2 ;User Defined Direct page scratch pad
first_dib equ scsi_zp7+2 ;Start of DIB RAM (Startup Command Only)
next_dib equ first_dib+4 ;Next DIB to be used (Startup Command Only)
last_dib equ next_dib+4 ;Pointer to Default DIB Structure
sib_pointer equ $0074
smgr_pl_ptr equ $0078
;
; Memory attribute equates
;
attrlock equ bit_15 ;Block is locked down.
attrfixed equ bit_14 ;Block can't move in mem
attrpurg1 equ bit_8 ;Purge level 1
attrpurg2 equ bit_9 ;Purge level 2
attrpurg3 equ bit_8+bit_9 ;Purge level 3
attrnocross equ bit_4 ;May not cross banks
attrnospec equ bit_3 ;don't use special mem
attrpage equ bit_2 ;Page alligned
attraddr equ bit_1 ;Remain at fixed address
attrbank equ bit_0 ;Remain in fixed bank
;
; SCSI Command Translation Table Flags
;
scsit_tx equ bit_15 ;SCSI Send Data Command
scsit_rx equ bit_14 ;SCSI Receive Data Command
scsit_stat equ bit_13 ;SCSI Status Command
scsit_cont equ bit_12 ;SCSI Control Command
scsit_data equ bit_11 ;SCSI Data I/O Command
scsit_dvc equ bit_10 ;SCSI Device I/O Command
scsit_blk equ bit_9 ;Command has a Block Number
scsic_1st equ bit_8 ;Must be first device if linked
scsic_int equ bit_7 ;Internal Driver Command only
scsic_dsw equ bit_6 ;Issue DISK_SW with this call
scsic_off equ bit_5 ;Device is going offline.
scsic_tout equ bit_4 ;Adjust time out by block count
scsid_asis equ bit_3 ;CMD Data is in SCSI format
scsid_blk equ bit_1 ;Convert Trans Count to Blocks
scsid_byte equ bit_0 ;Leave Trans Count in Bytes
scsid_none equ null ;Transfer count does not go in CMD
scsi_endcmd equ null ;End of SCSI Translation Table
;
; Device Characteristics.
;
ram_rom_disk equ bit_15 ;RAM or ROM Disk if Set
gened_drvr equ bit_14 ;Generated Driver if Set
linked_dvc equ bit_13 ;Linked Device if Set
call_active equ bit_12 ;Device Busy if Set
mhz_1 equ null ;1 Mhz Device
mhz_2_6 equ bit_8 ;2.6 Mhz Device
mhz_gt_2_6 equ bit_9 ;>2.6 Mhz Device
speed_ind equ bit_8+bit_9 ;Device is speed independent
blk_device equ bit_7 ;Block Device if Set
write_allow equ bit_6 ;Write is Allowed if Set
read_allow equ bit_5 ;Read is Allowed if Set
format_allow equ bit_3 ;Format is Allowed if Set
removable equ bit_2 ;Removable Media if Set
;
; Device Flags for 'dvcflag'. All
; are considered true if set.
;
int_busy equ bit_15 ;Internal busy flag for async
wait_mode equ bit_14 ;Driver Wait/No Wait state
dvc_online equ bit_13 ;Device Online Flag
dvc_switch equ bit_12 ;Device Switched Flag
dvc_hardofl equ bit_11 ;Device Hard Offline Flag
; Bits 0 - 10 are reserved at this time.
;
; Error Codes.
;
no_error equ $0000
bad_dev_number equ $0011
drvr_bad_req equ $0020
drvr_bad_code equ $0021
drvr_bad_parm equ $0022
drvr_not_open equ $0023
drvr_prior_open equ $0024
drvr_io equ $0027
drvr_no_dev equ $0028
drvr_busy equ $0029
drvr_bad_cnt equ $002c
drvr_off_line equ $002f
;*******************************************************
;
; The following statements are used to define the DIB
; structure. The structure contains the traditional
; DIB followed by an extension used for device
; maintainence. All together each DIB with the
; associated extensions will take one page of RAM.
;
;*******************************************************
;
; $00 ------------------------------------------------
; | |
; | Device Information Block Data (DIB) |
; $3F | |
; ------------------------------------------------
; $40 | Physical Block Number |
; | |
; $43 | that maps to logical block zero |
; ------------------------------------------------
; $44 | |
; | Head Pointer |
; $47 | |
; ------------------------------------------------
; $48 | |
; | Forward Pointer |
; $4B | |
; ------------------------------------------------
; $4C | Memory DIB Count |
; ------------------------------------------------
; $4E | Reserved |
; ------------------------------------------------
; $50 | |
; | Memory Manager Handle for this DIB |
; $53 | |
; ------------------------------------------------
; $54 | |
; | Block Size (Bytes) |
; $57 | |
; ------------------------------------------------
; $58 | Max SCSI Command for this Device |
; ------------------------------------------------
; $5A | |
; | Command Bitmap (See ERS for description) |
; $79 | |
; ------------------------------------------------
; $7A | SCSI Command Data |
; | and |
; $D9 | SCSI Manager Call Buffer Structures |
; ------------------------------------------------
; $DA | 'Busy' and other Flags |
; ------------------------------------------------
; $DC | |
; | Completion Vector with Code |
; $FF | |
; ------------------------------------------------
;
;*******************************************************
dib RECORD $0000
;
; Definition of DIB Structure.
;
linkptr ds.l 1 ; DIB Link Pointer (LONG)
entry ds.l 1 ; Pointer to Drvrs Main Entry (LONG)
dvcchar ds.w 1 ; Device Characteristics (WORD)
blkcnt ds.l 1 ; Block Count for this device (LONG)
namelen ds.b 1 ; Length of Descriptive Name (PSTR)
disname ds.b 31 ; Field for this devices Name (STR)
slotnum ds.w 1 ; Device Slot Number from MGR. (WORD)
unitnum ds.w 1 ; Device Unit Number from MGR. (WORD)
versnum ds.w 1 ; Version Number for our Driver (WORD)
dvcid ds.w 1 ; ID of Device we talk to (WORD)
headlnk ds.w 1 ; Head Device Link (WORD)
fdvclnk ds.w 1 ; Forward Device Link (WORD)
ext_ptr ds.l 1 ; Pointer to DIB Extension (LONG)
devnum ds.w 1 ; DIB Device Number (WORD)
;
; The Starting Block Number for this device
; is maintained here. This is used to
; modify the requested block number from
; a logical to a physical number.
;
start_blk ds.l 1 ; Starting Physical Block Num. (LONG)
;
; These two pointers are the compliment
; to the links in the standard DIB and
; will point to the actual DIB referenced
; in the Head and Forward Device Links.
;
headptr ds.l 1 ; Head Dvc Pointer (LONG)
fdvcptr ds.l 1 ; Forward Dvc Pointer (LONG)
mem_dib_cnt ds.w 1 ; Number of active dibs in mem (WORD)
part_blk ds.w 1 ; Reserved (WORD)
;
; Memory Manager Handle
;
handle ds.l 1 ; (LONG)
;
; Block Size
;
blksize ds.l 1 ; (LONG)
;
; Maximum SCSI Command supported by
; the device for this DIB.
;
maxcmd ds.w 1 ; (WORD)
;
; SCSI Command Group Bitmaps
;
group0 ds.l 1 ; Group 0 (LONG)
group1 ds.l 1 ; Group 1 (LONG)
group2 ds.l 1 ; Group 2 (LONG)
group3 ds.l 1 ; Group 3 (LONG)
group4 ds.l 1 ; Group 4 (LONG)
group5 ds.l 1 ; Group 5 (LONG)
group6 ds.l 1 ; Group 6 (LONG)
group7 ds.l 1 ; Group 7 (LONG)
;
; SCSI Manager Call PList
;
scsiid ds.w 1 ; Same as our Unit Number (WORD)
scsic_flgs ds.w 1 ; Flags from Command Table (WORD)
time_out ds.w 1 ; Time Out Factor * xxx ms (WORD)
compvec ds.l 1 ; Completion Routine Pointer (LONG)
cp_ptr ds.l 1 ; Pointer to Command Packet (LONG)
trx_ptr ds.l 1 ; Ptr to Send/R'cv Structure (LONG)
trx_len
trx_rqst ds.l 1 ; Users Send/R'cv Length (LONG)
rslt_ptr ds.l 1 ; Pointer to Status Structure (LONG)
msg_ptr ds.l 1 ; Pointer to Message Structure (LONG)
reserv0 ds.w 1 ; Reserved space 0 (WORD)
reserv1 ds.w 1 ; Reserved space 1 (WORD)
;
; SCSI Command Packet
;
scsicmd ds.b 12 ; Room for any SCSI Command (BYTES)
;
; SCSI Manager Device Send/R'cv Buffers List
;
trx_buff ds.l 1 ; Users Send Buffer (LONG)
trx_length ds.l 1 ; Request cnt for this buffer (LONG)
trx_offset ds.l 1 ; Offset for next pass (LONG)
trx_null ds.l 1 ; Null (LONG)
trx_stop ds.l 1 ; Null (LONG)
ds.l 1 ; Null (LONG)
ds.l 1 ; Null (LONG)
ds.l 1 ; Null (LONG)
trx_rsrv ds.l 4 ; Reserved Space * 4 for future (LONG)
;
; Device Busy and other Flags and results
;
dvcflag ds.w 1 ; Device Busy and other Flags (WORD)
;
; Completion Routine for this DIB.
; This takes the remaining space in
; the allocated RAM. Any routine can
; be placed here but must never go
; beyond offset $FF
;
end equ *
complet ds.b $100-end
ENDR
pm RECORD $0000
;
; All Values given below are
; in Macintosh High >> Low
; format.
;
Sig ds.w 1 ;Signature Always $504d
; Apple II = $4d50
SigPad ds.w 1 ;Reserved for future use
MapBlkCnt ds.l 1 ;Number of blocks in Map
PyPartStart ds.l 1 ;First Physical Block of Partition
PartBlkCnt ds.l 1 ;Number of Blocks in Partition
PartName ds.b 32 ;Partition Name
PartType ds.b 32 ;Partition Type
LgDataStart ds.l 1 ;1st Logical Data Block
DataCnt ds.l 1 ;Number of data blocks
PartStatus ds.l 1 ;Partition Status Info
LgBootStart ds.l 1 ;1st Logical Boot Block
BootSize ds.l 1 ;Size of Boot Code in Bytes
BootLoad ds.l 1 ;Boot Code Load Address
BootLoad2 ds.l 1 ;Additional Boot Load Info
BootEntry ds.l 1 ;Boot Code Entry Point
BootEntry2 ds.l 1 ;Additional Boot Entry Info
BootCksum ds.l 1 ;Boot Code Checksum
Processor ds.b 16 ;Processor Type
Args ds.b 128 ;Boot Specific Arguments
end equ *
ds.b $200-end ;Pad to 1 Block
ENDR
block RECORD $0000
count ds.l 1 ;Block Count High >> Low
size ds.l 1 ;Block Size High >> Low
ENDR
mode RECORD $0000
sense_len ds.b 1 ;Sense Data Length
med_type ds.b 1 ;Medium Type
w_protect ds.b 1 ;Write Protect bit 7
ds.b 2 ;Unused data
blocks ds.b 3 ;Block Count High >> Low
ds.b 1 ;Unused data
blk_size ds.b 3 ;Block Size High >> Low
ENDR
inq RECORD $0000
pd_type ds.b 1 ;Peripheral Device Type
removable ds.b 1 ;Removable bit 7
ds.b $26-2 ;Unused data
group ds.b 1 ;First Group Number
ENDR
ds RECORD $0000
version ds.w 1 ;Version Number of this structure
ds.b 12 ;Command Bytes
DCcode ds.l 1 ;1st DC Code
DCcount ds.l 1 ;1st Count
DCoffset ds.l 1 ;1st Offset
DCreserved ds.l 1 ;1st Reserved
ENDR
EJECT