; ; File: SCSIPriv.a ; ; Contains: SCSI Mgr-specific variable and constant definitions ; ; Written by: Jerry Katzung ; ; Copyright: © 1989-1992 by Apple Computer, Inc. All rights reserved. ; ; Change History (most recent first): ; ; 11/20/92 SWC Rolled in changes from Horror. ;

6/10/92 BG Added global sdmStack for DB Lite SCSI Disk Mode. Added global ; for DREQ bit position within DREQ access location. Added tail ; bytes to SCSIGlobals for expansion and updated file from Reality ; SCSIPriv.a . ;

2/28/92 SWC Removed temporary DBLite equates. ;

2/10/92 SWC jab/Added base address storage for external c80 in DB Lite. ; 7/28/92 PW Added Cousin Itt stuff: xptGlobals (ptr) and RecorderPtr (for ; debugging). ; 7/7/92 CSS Updated from Reality: ; <17> 5/22/92 DTY #1029009 : Added global for DREQ bit position within DREQ ; access location. ; 5/17/92 kc Remove conditionals. ; 5/1/92 JSM Roll-in changes from Reality: ; <16> 5/1/92 JSM We need to define Max020030BusErrs because it's sometimes wrong ; to use MaxBusErr since CPU is set to 00 for System builds. ; <15> 4/7/92 pvh Fill in vectors jvUnused10-jvUnused 16 for the SCSI Manager ; (these are what were added to HORROR's SCSIPriv.a) Per James ; Blair. ; 3/3/92 kc Add TransactionFlag, and FreeHookPending to SCSIGlobals. ; <14> 12/26/91 RB Include PowerPrivEqu.a for Power Manager definitions. ; <13> 12/21/91 RB Need to add definition for scsiNewSCSIMax for the ROM to build. ; <12> 11/25/91 DTY Added bit flags for transaction table. ; <11> 10/28/91 SAM/KSM Rolled in Regatta file. ; (pdw) Added all of the lo-mem SCSI Globals that were defined in ; the TERROR version of this file. Also added several others that ; are unique to the Regatta version of the c96 SCSIMgr. ; <10> 8/22/91 JSM Clean up header. ; <9> 6/12/91 LN added #include 'InternalOnlyEqu.a' ; <8> 1/30/91 gbm sab, #38: Change the Ôalready including this fileÕ variable to ; all uppercase (for security reasons) ; <7> 12/14/90 dnf Add dispatch selector and macro for _SCSIBusy ; <6> 9/14/90 MSH Added to conditional list that extends the local storage to ; accomodate spinning down the hard disk. ; <4> 2/21/90 CCH Removed Max040BusErrs from conditional. ; <3> 2/20/90 BG Added 040 BusErr retry constant. ; <2> 1/18/90 JWK Needed for Zone5 - Added equates for SCSIStat fix and new ; watchdog timeout value. ; <1.4> 12/10/89 jwk NEEDED FOR F19 - Additional locals to DMA in old SCSI Mgr ; <1.3> 9/11/89 jwk NEEDED FOR F19 - Added Bus Dev Rst, support for SE and Plus ; <1.2> 7/15/89 jwk NEEDED FOR AURORA - Minor changes for intr handling ; <1.1> 6/29/89 jwk NEEDED FOR AURORA - Added equates to help with System patch ; builds ; <1.0> 6/13/89 jwk Reorganizing SCSI sources to be Universal-ROM friendly ; IF &TYPE('__INCLUDINGSCSIPRIV__') = 'UNDEFINED' THEN __INCLUDINGSCSIPRIV__ SET 1 ; This is the SCSIPriv.a file ; BLANKS ON STRING ASIS INCLUDE 'InternalOnlyEqu.a' INCLUDE 'PowerPrivEqu.a' ; <14> rb IF Cpu ³ 020 THEN MACHINE MC68020 ; for '020 instructions ENDIF scsiNewSCSIMax EQU 2 ; <13> rb, maximum selector supported in motherboard ; ; Stack frame definitions (frame allocated in StdEntry) ; OldBusErrVct EQU -4 ; long BusErrCount EQU -6 ; word LocalSize EQU -6 ; total IF Cpu ³ 020 THEN MaxBusErr EQU 5 ELSE MaxBusErr EQU 2 ENDIF Max020030BusErrs EQU 5 ; same as MaxBusErr when Cpu ³ 020 <16> Max040BusErrs EQU 1 ; only once because of Instruction Restart <3><4> ; ; Additional stack frame definitions for SCSI DMA chip support in the old SCSI Mgr ; AddLocalSize EQU 20 ; 5 longs vAddr EQU 0 ; virtual address vCount EQU 4 ; virtual buffer length pAddr EQU 8 ; physical address pCount EQU 12 ; physical buffer length ;======================================================================================= ; Private Old SCSI Manager Related Stuff scsiBusy Equ 14 ; SCSIBusy routine selector <7> djw macro ; check if SCSI mgr is busy or free <7> djw _SCSIBusy move.w #scsiBusy,-(sp) _SCSIDispatch endm ; Bit flags for transaction table fDoFreeHook equ 0 ; set = execute "jSCSIFreeHook" fSetTransFlag equ 1 ; set = set "TransactionFlag" fClearTransFlag equ 2 ; set = clear "TransactionFlag" unconditionally fClearTransErr equ 3 ; set = clear "TransactionFlag" if function error ; ; Trap number for the new SCSI Manager trap ; TrapNum EQU $A089 ; _NewSCSI _NewSCSI OPWORD $A089 ; the exciting, powerful, new SCSI Mgr traps ; ; These are the private fields in the parameter block ; scsiPrivPB RECORD 0, INCREMENT scsiPrivLink DS.L 1 ; link to next SCSI Mgr private record scsiFlags DS.B 1 ; SCSI Mgr operation flag bits scsiState DS.B 1 ; SCSI Message Out state machine scsiFlag1 DS.B 1 ; flag expansion scsiFlag2 DS.B 1 ; flag expansion scsiTime DS.L 1 ; timeout time scsiCmdOffs DS.L 1 ; value of command buffer ptr between interrupts scsiTempErr DS.W 1 ; current error message scsiFiller DS.W 1 ; future expansion scsiDCSaved DS.L 1 ; part of Saved Data Pointer scsiDCOffs DS.L 1 ; value of data pointer between interrupts scsiMoveOffs DS.L 1 ; partial "dcMove" count between interrupts scsiVAddr DS.L 1 ; virtual address for Logical/Physical translation scsiVCount DS.L 1 ; virtual count for Logical/Physical translation scsiPAddr DS.L 1 ; physical address from Logical/Physical translation scsiPCount DS.L 1 ; physical count from Logical/Physical translation scsiPrivPBSize EQU *-scsiPrivPB ; size of SCSI Mgr private storage (per active request) ENDR ; ; Version number of the SCSI Mgr ; mgrVersion EQU 1 ; brand new SCSI Mgr 2 ; ; Valid ID and LUN values are from 0-7 inclusive. ; LUNMask EQU 7 ; mask for valid logical unit numbers (0-7) ; ; SCSI protocol equates ; minSnsLen EQU 4 ; minimum sense buffer length allocLen EQU 4 ; offset to alloc length byte in auto Req Sense cmd ; ; These bits are used to indicate information in the "state1" global variable ; dtEnqueued EQU 7 ; Deferred Task already enqueued dataSem EQU 3 ; SCSI Mgr data structures inconsistent doingDMA EQU 1 ; SCSIDMA chip is DMAing (don't let SCSIStat touch it) <2> waitingForIRQ EQU 0 ; waiting for an intr - DMA in progress, ; or waiting for Loss of BSY ; ; This constant is used to set up the watchdog timer to timeout after 250ms. ; This value was chosen as the timeout value since 250ms is much more lenient than ; the current 16us on the MacII-class machines. It is equal to the Mac SE timeout, ; and is much greater than the effective 20us timeout of the Mac Plus. ; sc250msTicks EQU 2500000 ; 250ms * 10000 watchdog timer ticks/ms <2> ; ; interrupt level of the SCSI chip -- will be moved to HardwareEqu.a (???) ; scsiIntMask EQU $0200 ; on Rom32 machines ; ; Currently the watchdog timer goes off every five seconds. ; WDTO EQU 5000 ; watchdog timeout value in milliseconds (word) bDBP EQU 0 ; bit test for *DBP - add to xHardwareEqu.a ; Location of Mac Plus SCSIGlobals ptr SCSIDispVct EQU $000c54 ; address of _SCSIDispatch vector in trap dispatch table SCSIPtr EQU -4 ; offset from _SCSIDispatch code to SCSI Mgr globals ptr ; ; Base addresses for the Mac Plus. The Mac Plus doesn't actually have ; hardware-handshaking circuitry, but using the pseudo-DMA base address ; in place of the hhsk base address makes the data transfer code simpler. ; plusSCSIBase EQU $580000 ; read base address of Mac Plus SCSI chip plusSCSIDMA EQU $580200 ; pseudo-DMA read base address of Mac Plus SCSI chip plusSCSIHsk EQU $580200 ; fake "hardware-handshake" read base address macPlusSCSIDB EQU $00db ; trial-and-error value for Mac Plus macSeSCSIDB EQU $00fc ; trial-and-error value for Mac SE OldTimeSCSIDB EQU $da6 ; SCSI DBRA's per millisecond on all machines scsiOldSCSIErr EQU -1 ; old SCSI Mgr called ClearState ; ; SCSI Mgr flags: ; scsiFInUse EQU $01 ; SCSI Mgr private storage record is in use scsiFAutoSns EQU $02 ; parameter block for automatic Request Sense scsiFComp EQU $10 ; Perform a read-compare (old requests only) scsiFStatus EQU $20 ; Device has gone through Status phase scsiFPtyErr EQU $40 ; a parity error has occurred scsiFTagged EQU $80 ; request is in danger of timing out ; SCSI Mgr bits: scsiBInUse EQU 0 ; SCSI Mgr private storage record is in use scsiBAutoSns EQU 1 ; parameter block for automatic Request Sense scsiBComp EQU 4 ; Perform a read-compare (old requests only) scsiBStatus EQU 5 ; Device has gone through Status phase scsiBPtyErr EQU 6 ; a parity error has occurred scsiBTagged EQU 7 ; request is in danger of timing out ; ; Message Out state machine state variable values ; scsiMOID EQU $00 ; "ID" state - normal Identify sequence scsiMOMR EQU $01 ; "MR" state - Message Reject sequence scsiMOInvalid EQU $02 ; "Invalid" state - bad state machine sequence scsiMOKIO EQU $03 ; "KIO" state - Kill I/O sequence scsiMONOP EQU $04 ; "NOP" state - unexpected Message Out, send No Op's scsiMOBDR EQU $05 ; "Bus Device Reset" state - send a BDR message ; ; Messages - used as an index into a jump table of message-handler routines ; scsiCmdComplete EQU $00 ; Command Complete scsiExtendedMsg EQU $01 ; Extended Message scsiSaveDataPtr EQU $02 ; Save Data Pointer scsiRestorePtrs EQU $03 ; Restore Pointers scsiDisconnect EQU $04 ; Disconnect scsiIDetectErr EQU $05 ; Initiator Detected Error scsiAbort EQU $06 ; Abort scsiMsgReject EQU $07 ; Message Reject scsiNoOperation EQU $08 ; No Operation scsiMsgParityErr EQU $09 ; Message Parity Error scsiLnkCmdCpl EQU $0A ; Linked Command Complete scsiLnkCmdCplFlg EQU $0B ; Linked Command Complete (with flag) scsiBusDevReset EQU $0C ; Bus Device Reset scsiIdentFlg EQU $80 ; Identify flag scsiIdentBit EQU 7 ; Identify bit scsiReselFlg EQU $40 ; "Initiator supports Reselection" flag scsiReselBit EQU 6 ; "Initiator supports Reselection" bit scsiIdentifyIn EQU $0D ; vector number for Identify message (pseudo-message) scsiMsgRejectOut EQU $0E ; vector number for an invalid message (pseudo-message) ; ; declaration of SCSI Manager globals ; scsiGlobalRecord RECORD 0, INCREMENT ; ; SCSI Manager "G_State" flags ; ;sBusy EQU 1 ; used for G_State field -- SCSI Mgr is busy (non-zero) ;sFree EQU 0 ; used for G_State field -- SCSI Mgr is free scPending EQU 7 ; bit in G_State -- an old request is spinning in SCSIGet scBusy EQU 0 ; bit in G_State -- an old request is pending/in progress ; ; old SCSI Manager globals ; numVectors EQU 24 ; 24 4-byte jump table vectors numSCSIVect EQU numVectors ; number of SCSI Mgr vectors jmpTblSize EQU numVectors*4 ; 24 4-byte jump table vectors G_JmpTbl ; 24 4-byte jump table vectors jvReset DS.L 1 ; SCSIReset vector jvGet DS.L 1 ; SCSIGet vector jvSelect DS.L 1 ; SCSISelect vector jvCmd DS.L 1 ; SCSICmd vector jvComplete DS.L 1 ; SCSIComplete vector jvRead DS.L 1 ; SCSIRead vector jvWrite DS.L 1 ; SCSIWrite vector jvInstall DS.L 1 ; SCSI installation vector (for debugging purposes) jvRBlind DS.L 1 ; SCSIRBlind vector jvWBlind DS.L 1 ; SCSIWBlind vector jvStat DS.L 1 ; SCSIStat vector jvSelAtn DS.L 1 ; SCSISelAtn vector jvSMsgIn DS.L 1 ; SCSIMsgIn vector jvSMsgOut DS.L 1 ; SCSIMsgOut vector ; firstPrivate DS.L 1 ; ptr to SCSI Mgr private storage record circularly linked list nextPrivate DS.L 1 ; ptr to next available SCSI Mgr private storage record base5380 DS.L 1 ; SCSI read base address pdma5380 DS.L 1 ; SCSI pseudo-DMA read base addr hhsk5380 DS.L 1 ; SCSI hardware-handshaked read base addr wrOffset DS.W 1 ; write offset relative to "base5380" scsiQHdr ; 10-byte OS queue header - SCSI request queue scsiQFlags DS.W 1 ; flags for SCSI request queue scsiQHead DS.L 1 ; ptr to head of SCSI request queue scsiQTail DS.L 1 ; ptr to tail of SCSI request queue activeReq DS.L 1 ; ptr to currently active SCSI request timeout DS.L 1 ; next timeout should occur at this time ; G_ID DS.B 1 ; initiator's SCSI ID mask G_State DS.B 1 ; SCSI Mgr state (free/busy) G_Async DS.W 1 ; unused - $62 ;G_CompTicks ; when request finished (unpatched SE only) G_Reserved0 DS.L 1 ; box number in high byte. HW flags in low bytes pageFault ; ptr to page fault SCSI PB G_Reserved1 DS.L 1 ; used for storing timer value pdw G_Reserved2 DS.L 1 ; machine-specific storage RecorderPtr DS.L 1 ; debugging event recorder pointer $70 pdw ;G_ExtPtr DS.L 1 ; unused (saved for future expansion) ; ; extended SCSI manager globals ; numExtVec EQU 96 ; 96 new vectors discLUN DS.B 8 ; bitmaps of disconnected LUN's by SCSI ID discID DS.B 1 ; bitmap of disconnected SCSI ID's state1 DS.B 1 ; dTask enqueued, data structures inconsistent, DMA in progress state2 DS.B 1 ; SCSI Mgr interface level state3 DS.B 1 ; SCSI DMA ? busTO DS.L 1 ; byte-to-byte timing in microseconds phaseTable ; 8-entry jump table for phase handler routines jvDataOut DS.L 1 ; Data Out phase handler jvDataIn DS.L 1 ; Data In phase handler jvCommand DS.L 1 ; Command phase handler jvStatus DS.L 1 ; Status phase handler jvIllegal1 DS.L 1 ; Illegal phase - reset the bus jvIllegal2 DS.L 1 ; Illegal phase - reset the bus jvMsgOut DS.L 1 ; Message Out phase handler jvMsgIn DS.L 1 ; Message In phase handler dataTable ; 16-entry jump table for data-transfer routines jvVSR DS.L 1 ; virtual slow reads jvVSW DS.L 1 ; virtual slow writes jvVFR DS.L 1 ; virtual fast reads jvVFW DS.L 1 ; virtual fast writes jvUnused1 DS.L 1 ; unused (illegal) jvUnused2 DS.L 1 ; unused (illegal) jvPFR DS.L 1 ; physical fast reads (DMA) jvPFW DS.L 1 ; physical fast writes (DMA) jvVSRO DS.L 1 ; virtual slow reads jvVSWO DS.L 1 ; virtual slow writes jvVFRO DS.L 1 ; virtual fast reads (hhsk) jvVFWO DS.L 1 ; virtual fast writes (hhsk) jvCSO DS.L 1 ; virtual slow compare ("p" bit redefined to mean "compare") jvUnused3 DS.L 1 ; unused jvCFO DS.L 1 ; virtual fast compare ("p" bit redefined to mean "compare") jvUnused4 DS.L 1 ; unused scsiReadSlow EQU jvVSRO - jvVSR ; offset to old slow read routine scsiWriteSlow EQU jvVSWO - jvVSR ; offset to old slow write routine scsiReadFast EQU jvVFRO - jvVSR ; offset to old slow read routine scsiWriteFast EQU jvVFWO - jvVSR ; offset to old slow write routine scsiCompBit EQU scsiBPhysical ; bit to select old SCSI Mgr "scComp" operation ; msgTable ; 32-entry jump table for different messages jvInvalidIn DS.L 1 ; Invalid Message In jvIdentifyIn DS.L 1 ; Identify Message In jvCmdComplete DS.L 1 ; Command Complete jvExtendedMsg DS.L 1 ; Extended Message jvSaveDataPtr DS.L 1 ; Save Data Pointer jvRestorePtrs DS.L 1 ; Restore Pointers jvDisconnect DS.L 1 ; Disconnect jvMsgRejIn DS.L 1 ; Message Reject In jvLCCF DS.L 1 ; Linked Command Complete with (or without) flag ; Base addresses for dual c80 SCSI Bus sdmStack DS.L 1 ; SCSIDiskMode stack global for DB Lite
jab base5380_1 DS.L 1 ; SCSI read base address (internal)

pdma5380_1 DS.L 1 ; SCSI pseudo-DMA read base addr (internal)

hhsk5380_1 DS.L 1 ; SCSI hardware-handshaked read base addr (internal)

base5380_2 DS.L 1 ; SCSI read base address (external)

pdma5380_2 DS.L 1 ; SCSI pseudo-DMA read base addr (external)

hhsk5380_2 DS.L 1 ; SCSI hardware-handshaked read base addr (external)

jvIdentifyOut DS.L 1 ; Identify Message Out jvMsgRejOut DS.L 1 ; Message Reject Out jvInvalidOut DS.L 1 ; Invalid Message Out jvKillIO DS.L 1 ; Kill I/O jvNoOp DS.L 1 ; No Operation jvBusDevRstOut DS.L 1 ; Bus Device Reset Out ; SUPPORT FOR 5396 (13C bytes from the base) ; (These used to be jvUnused23-30) G_SCSIDREQ DS.L 1 ; SCSI DREQ base address G_TargetID DS.L 1 ; Target ID G_FakeStat DS.L 1 ; Fake state G_OldTrapAdrs DS.L 1 ; contains the old SCSIMgr address G_OldIntHnd DS.L 1 ; contains old intrp level 2 handler G_IntrpCount DS.L 1 ; counts total # of intrps G_IntrpStat DS.L 1 ; Status read by Intrp routine G_State96 DS.L 1 ; Bits to make c96 backwards compatible pdw BootCfgFlags DS.L 1 ; copy of d2 passed to InitHW_SCSI96 at boot (used by jvInitHW) pdw G_bitDREQ DS.B 1 ; Bit position at DREQ location <17> jab jvUnused32 DS.B 1 ; Future expansion <17> jab jvUnused33 DS.W 1 ; Future expansion <17> jab ; from prev jvIntHnd DS.L 1 ; 24-entry jump table -- interrupt handler jvMessage DS.L 1 ; Send a message to the deferred task jvClearIRQ DS.L 1 ; Clear the SCSI interrupt (and VIA, if necessary) jvDisEnable DS.L 1 ; Enable/disable interrupts routine jvLogError DS.L 1 ; Record error for the PB jvSCSIDT DS.L 1 ; Deferred Task for all other interrupts jvFind DS.L 1 ; Find a request to process jvSetup DS.L 1 ; Setup active request jvPreflight DS.L 1 ; Preflight the parameter block jvEnDequeue DS.L 1 ; Enqueue/dequeue a parameter block jvArb DS.L 1 ; Arbitrate for the SCSI bus jvSel DS.L 1 ; Select a SCSI device jvDelay22 DS.L 1 ; Delay 2.2 microseconds jvClearState DS.L 1 ; Remove the current request jvTransfer DS.L 1 ; Transfer data using the primitive routines jvSetTimer DS.L 1 ; Set the timer jvResetBus DS.L 1 ; Reset SCSI bus and kill all requests jvClearBus DS.L 1 ; Clear the SCSI bus jvBusErr DS.L 1 ; Bus error handler jvDataDMA DS.L 1 ; DMA-related data-chaining interpreter xptGlobals DS.L 1 ; pointer to Cousin Itt's XPT globals $1b4 pdw ; thru next ; More Space for the new SCSI96 Manager(1B8 bytes from the base) ; (these used to be jvUnused 47-53) blindBusTO DS.L 1 ; number of ticks to wait for blind transfer bytes (after 1st byte) transferType DS.W 1 ; Type of data transfer to perform (used in Transfer_96, BusError) lastINTread DS.B 1 ; Value of rINT at last valid interrupt read lastSTAread DS.B 1 ; Value of rSTA at last valid interrupt read yeOldeBusErrVct DS.L 1 ; temp storage while we insert our buserr handler pdw base539x0 DS.L 1 ; SCSI 539x base address, bus0 base539x1 DS.L 1 ; SCSI 539x base address, bus1 G_SCSIDevMap0 DS.L 1 ; SCSI Device Map for the Internal SCSI Bus G_SCSIDevMap1 DS.L 1 ; SCSI Device Map for the External SCSI Bus jvErr DS.L 1 ; SCSI96 Error, used to be jUnused 54 jvEscLoop DS.L 1 ; SCSI Escape Loop Vector jvCyclePhase DS.L 1 ; Bitbuckets or fills bytes to get target to Status phase (was jvUnused49) jvInitSCSIHW DS.L 1 ; init SCSI chip (was jvUnused57) pdw ; from prev ; newSCSIDisp jvSCSIRequestIO DS.L 1 ; SCSIRequestIO jvSCSIKillIO DS.L 1 ; SCSIKillIO jvSCSIBusInfo DS.L 1 ; SCSIBusInfo newSCSI96Disp ; used to be jvUnused63-jvUnused66 thru next jvSCSIBusy DS.L 1 ; SCSIBusy vector, selector 14 jvSel15 DS.L 1 ; SCSI vector for selector 15 jvSel16 DS.L 1 ; SCSI vector for selector 16 jvSel17 DS.L 1 ; SCSI vector for selector 17 jvAltBusCall DS.L 1 ; Call to alternate SCSI bus from prev ; numMsgVct EQU 36 ; number of message routing vectors msgInTbl DS.B numMsgVct ; dispatch table for Messages 00H-23H (Msg In) msgOutTbl DS.B numMsgVct ; dispatch table for Messages 00H-23H (Msg Out) ; dtQElSize EQU 20 ; temporary dTask DS.B dtQElSize ; Deferred Task Mgr task record ; tmQSize EQU 14 ; Time Mgr task record size timer DS.B tmQSize ; Time Mgr task record for request timing ; RSCmd DS.B 6 ; Request Sense command buffer RSDC DS.L 12 ; data-chaining block for Request Sense command ; dummy DS scsiPB ; dummy parameter block ; dummyPriv DS scsiPrivPB ; dummy private storage faultPriv DS scsiPrivPB ; private storage for page-fault handling firstPriv DS scsiPrivPB ; private storage for request processing DS scsiPrivPB ; private storage for request processing DS scsiPrivPB ; private storage for request processing DS scsiPrivPB ; private storage (machine-specific storage follows) TransactionFlag DS.L 1 ; location to store SCSI transaction flag <2> kc FreeHookPending DS.L 1 ; location of pending free-hook flag <2> kc GlobalSize EQU *-scsiGlobalRecord ; size of SCSI Mgr globals ENDR ; ; Machine-specific structure ; machSpecRecord RECORD 0, INCREMENT IF tmQSize > SleepqRec.SleepqSize THEN ; use the larger of the two data structures <14> rb sleep ; 12-byte sleep queue element (onHcMac) OR timer2 DS.B tmQSize ; 14-byte intr polling timer (onMac) ELSE sleep ; 12-byte sleep queue element (onHcMac) OR timer2 DS.B SleepqSize ; 14-byte intr polling timer (onMac) ENDIF machSpecSize EQU *-machSpecRecord ; size of machine-specific record ENDR ; ; Find selector (passed in d0.l) ; findAny EQU -1 ; find first non-disconnected request findAnyFlag EQU 31 ; find first non-disconnected request flag (bit 31) ; ; EnDequeue selector (passed in d0.l) ; enqNormal EQU -1 ; enqueue at end of queue enqFront EQU -2 ; enqueue at front of queue ("immediate" function, page fault) deqNormal EQU 1 ; dequeue one request (linked commands are elevated) deqLinked EQU 2 ; remove a series of linked commands (to cleanly kill linked cmds) enqueueFlag EQU 31 ; enqueue/dequeue selection flag (bit 31) ; ; Masks for the interrupt handler. They are used to determine the interrupt type. ; These masks are the concatenation of the Bus and Status Register with the ; Current SCSI Bus Status Register. The BSR is the most-significant byte. ; mReselect EQU $F5E2 ; mask to clear don't cares for Reselect interrupt iReselect EQU $1002 ; bit image for a Reselect intr. with don't care bits reset scResel EQU 7 ; bit in "dtParm" for Reselect interrupts mEOP EQU $F6C2 ; mask to clear don't cares for EOP intr (PM is don't care) iEOP EQU $9040 ; bit image for EOP intr. with don't care bits cleared scEOP EQU 6 ; bit in "dtParm" for Reselect interrupts mPhaseMm EQU $BDE2 ; mask to clear don't cares for Phase Mismatch Error intr. iPhaseMm EQU $1060 ; bit image for Phase Mismatch Error without don't care's scPhaseMm EQU 5 ; bit in "dtParm" for Reselect interrupts mLossBsy EQU $F7FF ; mask to clear don't cares for Loss of BSY interrupts iLossBsy EQU $1400 ; bit image for Loss of BSY intr. without don't care's scLossBsy EQU 4 ; bit in "dtParm" for Reselect interrupts mBusReset EQU $F77F ; mask to clear don't cares for SCSI Bus Reset interrupt iBusReset EQU $1000 ; bit image for SCSI Bus Reset intr. with don't care's reset scBusReset EQU 3 ; bit in "dtParm" for Reselect interrupts mParity EQU $BCC2 ; mask to clear don't cares for Parity Error interrupt iParity EQU $3840 ; bit image for Parity Error intr. with don't care's reset scParity EQU 2 ; bit in "dtParm" for Reselect interrupts scNewRequest EQU 1 ; bit in "dtParm" indicating a new request to process ; ; Register saving convention ; scsiRegs REG a0-a5/d1-d7 ; standard register saving convention (result in d0) intrRegs REG a0-a5/d0-d7 ; interrupt handler register saving convention zeroReg EQU d7 ; quick source of zeroes (CLR won't work on SCSI chip) ; ; Old SCSI Mgr equates -- temporary, since SCSIEqu.a has the public portion of the PB ; maxOpcode EQU 8 ; highest numbered TIB opcode (from PatchIIROM.a) ; ; ; ; Here we redefined the Universal ROM's hardware feature bits to serve our own twisted ; purposes. If we're building for a System Disk, then these bits in the "G_Reserved0" ; variable in the globals reflect the low memory data structures defined for the ROM's. ; ; NOTE that these are also defined in SCSIMgrFlags.a, so if you change 'em here.... ; sHWCbPwrMgr equ 0 ; see if we have a Power Mgr sOSSExists equ 1 ; do we have an OSS ? sRBVExists equ 2 ; do we have an RBV ? sVIA2Exists equ 3 ; do we have a second VIA ? sSCSIDMAExists equ 4 ; do we have a SCSI DMA chip ? isMacPlus equ 5 ; are we on a Mac Plus ? is68000 equ 6 ; are we on a 68000 ? sDeferUserFn equ 7 ; is _DeferUserFn defined ? ;sSCSI96_1 equ 8 ; do we have 1st SCSI96 chip ;sSCSI96_2 equ 9 ; do we have 2nd SCSI96 chip? ;sSCSI96_1 equ 8 ; do we have 1st SCSI96 chip ;sSCSI96_2 equ 9 ; do we have 2nd SCSI96 chip? numSelectorsDB equ 2 ; we only patch three SCSI Mgr routines

cTargSetup equ $40 ; setup target mode for DBLite's dual bus DiskMode

ENDIF ; ...already included