; ; File: AppleDeskBusPriv.a ; ; Contains: This file holds equates private to the ADB implementation. It was separated out from ; Private.a so that feature-based conditionals can be used. As a result, this file ; should NEVER be included into a symbol dump (.d) file. ; ; Written by: Gary Davidian ; ; Copyright: © 1984-1992 by Apple Computer, Inc., all rights reserved. ; ; Change History (most recent first): ; ; 7/7/92 CSS Remove includes to ApplDeskBusPriv.a and roll changes ; from that file into this one: ; 5/2/92 kc Roll in Horror. Comments follow: ; <2> 8/5/91 SC Added new bits to the PMGR ADB flags. ; Updated from Reality: ; <6> 4/24/92 JF Added comment to let everyone know that one of three unused ; l ongs in ADBVars is now being used. ; 5/25/92 RB Commented out the definition of talkCmd and listenCmd since they ; are also defined in EgretEqu.a, which seems to be included ; everywhere. ; <5> 8/21/91 JSM Clean up header. ; <4> 1/30/91 gbm sab, #38: Change the ‘already including this file’ variable to ; all uppercase (for security reasons) ; <2> 2/28/90 GMR Added data structures for use with the new Egret based ADB ; implementation ; <1.4> 11/19/89 GGD NEEDED FOR ZONE-5 Added 'SetPollEnables' bit definition for IOP ; Based ADBMsg.Flags requests. ; <1.3> 5/15/89 GGD Re-written to support latest ADB manager code. ; <1.2> 5/1/89 GGD Converted data structure definitions to use records instead of ; equates. ; <1.1> 11/17/88 CCH Added stuff from system build. ; <1.0> 11/9/88 CCH Adding to EASE. ; <1.3> 10/14/88 LDC Removed ADB equates used by the ScriptManager ; <1.2> 10/13/88 LDC Added still more equates ; <1.1> 10/13/88 LDC Added more private data structures used by script manager ; <1.0> 10/7/88 rwh new to EASE today ; IF &TYPE('__INCLUDINGAPPLEDESKBUSPRIV__') = 'UNDEFINED' THEN __INCLUDINGAPPLEDESKBUSPRIV__ SET 1 ;----- ; Other common equates ;----- maskADBCmd EQU $0C ; Mask for ADB command resetCmd EQU $00 ; Command for Bus Reset ; rb talkCmd EQU $0C ; Command for Talk R0 ; rb listenCmd EQU $08 ; Command for Listen R0 kbdAddr EQU $02 ; keyboard type device mouseAddr EQU $03 ; mouse type device numFDBAdr EQU 16 ; number of avaiblae FDB address moveTime EQU 50 ; number of times to move device IF IopADB THEN ADBMsg RECORD 0,increment ; format CPU <-> IOP messages Flags ds.b 1 ; modifier/status flags (bit definitions below) NoReply equ 1 ; flag for 'command timed out' SRQReq equ 2 ; int flag for 'device requesting service' SetPollEnables equ 5 ; Update auto-enable bit mask from ADBData field <1.4> PollEnable equ 6 ; enable auto polling and auto srq polling ExplicitCmd equ 7 ; message contains an explicit cmd DataCount ds.b 1 ; number of bytes of ADBData (0..8) (cmd not included) ADBCmd ds.b 1 ; ADB command to send / command that replied ADBData ds.b 8 ; ADB Data to be sent with command, or data received align 2 ; force even alignment ADBMsgSize equ *-ADBMsg ; byte length of an ADB message request ENDR ADBIopNum EQU SwimIopNum ; SWIM IOP supports ADB too. ADBMsgNum EQU 3 ; IOP message number 3 is used for ADB ENDIF ; {IopADB} ; ; FDB varibles (total of 192+112+52= 356 bytes, plus 72 bytes if IOP) ; ; Device table offset ADBDeviceEntry record 0,increment ; device table entry fDBDevTy ds.b 1 ; fDB device type (1 byte) fDBOAddr ds.b 1 ; Original fDB address of device (1 byte) fDBAddr ds.b 1 ; fDB address (1 byte) fDBUnused ds.b 1 ; unused (1 byte) fDBCRA ds.l 1 ; fDB completion routine address (4 bytes) fDBOpData ds.l 1 ; fDB optional data buffer (4 bytes) fRecSize equ *-ADBDeviceEntry; record size endr ; command queue offset ADBCmdQEntry record 0,increment ; Command Queue entry fQCmd ds.b 1 ; fDB command (1 byte) fQUnused ds.b 1 ; not used (1 byte) fQBuff ds.l 1 ; buffer address (4 bytes) fQComp ds.l 1 ; completion routine address (4 bytes) fQData ds.l 1 ; optional data buffer (4 bytes) fQSize equ *-ADBCmdQEntry ; record size endr ADBVars record 0,increment ; private ADB data structures startDevT ds.b (ADBDeviceEntry.fRecSize)*numFDBAdr ; start of device table devTSize equ *-startDevT ; device table has 16 entries (192 bytes) startCQ ds.b (ADBCmdQEntry.fQSize)*8 ; 8 entries in command queue (112 bytes) endCQ equ * ; mark end of command queue StartReqProc ds.l 1 ; pointer to HW dependent routine to start a req. if ViaADB then ListenBuffPtr ds.l 1 ; pointer into listen buffer ShiftIntResume ds.l 1 ; address to resume at after shift reg interrupt else ds.l 2 ; unused space endif ; {ViaADB} fQBegPtr ds.l 1 ; Command queue start pointer (4 bytes) fQEndPtr ds.l 1 ; command queue end pointer (4 bytes) fQHeadPtr ds.l 1 ; command queue head pointer (4 bytes) fQEntPtr ds.l 1 ; command queue entry pointer (4 bytes) hasDev ds.w 1 ; every bit corresponds to an device address ; 1 = device is present in address (2 bytes) devMap ds.w 1 ; device address map (2 bytes) ds.l 1 ; unused space <6> ds.l 1 ; •• Now Used! •• Pointer to Extended ADB Data (4 bytes) <6> ds.l 1 ; unused space <6> fDBCmd ds.b 1 ; last fDB command (1 byte) fDBFlag ds.b 1 ; fDB Flags (1 byte) ; Common bit definitions in FDBFlag fDBQEmpty equ 2 ; fDB queue empty flag, 1 = empty fDBInit equ 5 ; initialization flag fDBAuFlag ds.b 1 ; fDB Auxillary Flag (1 byte) ; h/w specific bit definitions in FDBAuFlag If ViaADB then fDBBusy equ 4 ; fDB busy flag, 1 = busy fDBNoReply equ 5 ; No data (timeout) in reply, 1 = no reply fDBSRQ equ 6 ; SRQ active in reply, 1 = SRQ in reply fDBAPoll equ 7 ; Auto Poll reply, 1 = in auto polling endif if PwrMgrADB then pMgrPollEnable equ 1 ; 1 = autopoll handled by PMGR

pMgrAutoPoll equ 2 ; 1 = Auto Polling enabled pMgrSRQ equ 3 ; 1 = SRQ detected pMgrSetPoll equ 7 ; 1 = will be passing addr bitmap to PMGR

endif if IopADB then fDBUseRcvMsg equ 0 ; send reply in receive message fDBExpActive equ 1 ; an explicit command is active endif if hasEgret then ; <2> fDBExpInited equ 0 ; initialization for Explicit commands has been done <2> fDBImpInited equ 1 ; initialization for Implicit commands has been done <2> fDBExpRunning equ 2 ; an explicit command is active <2> endif ; <2> ds.b 2 ; unused space devTOffset ds.b 1 ; offset into the Device table for polling (1 byte) fDBMvCnt ds.b 1 ; counter for moving address (1 byte) ; fDBPBuff must be right after fDBCnt, they form a pascal string fDBCnt ds.b 1 ; poll data count (1 byte) fDBPBuff ds.b 8 ; internal poll data buffer (8 bytes) fDBByte0 equ fDBPBuff+0 ; byte0 of data buffer fDBByte1 equ fDBPBuff+1 ; byte1 of data buffer pollAddr ds.b 1 ; device address in poll (1 byte) newAddr ds.b 1 ; new address (1 byte) pollCmd ds.b 1 ; poll command (1 byte) InitAddr ds.b 1 ; device address in poll during init (1 byte) align 4 HWDependentVars equ * ; starting origin for hardware dependent variables <2> fDBDSize set *-ADBVars ; size of FDB data <2> if IopADB then org HWDependentVars ; start at HWDependentVars <2> XmtRequest ds IOPRequestInfo ; param blk for Host Initiated Xmt Requests RcvRequest ds IOPRequestInfo ; param blk for IOP Initiated Rcv Requests XmtMsg ds ADBMsg ; Xmt msg buffer RcvMsg ds ADBMsg ; Rcv msg buffer if (*-ADBVars) > fDBDSize then ; <2> fDBDSize set *-ADBVars ; size of FDB data <2> endif ; <2> endif ; {IopADB} if hasEgret then ; <2> org HWDependentVars ; start at HWDependentVars ExplicitEPB ds EgretPB ; param block used for async explicit requests ImplicitEPB ds EgretPB ; param block used to wait for implicit autopoll data if (*-ADBVars) > fDBDSize then ; fDBDSize set *-ADBVars ; size of FDB data endif ; endif ; <2> endr ENDIF ; ...already included