mac-rom/Internal/Asm/AppleDeskBusPriv.a

211 lines
8.5 KiB
Plaintext

;
; 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):
;
; <SM3> 7/7/92 CSS Remove includes to ApplDeskBusPriv.a and roll changes
; from that file into this one:
; <SM1> 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.
; <SM2> 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
; <SM2> rb talkCmd EQU $0C ; Command for Talk R0
; <SM2> 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 10 ; 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 <H2>
pMgrAutoPoll equ 2 ; 1 = Auto Polling enabled
pMgrSRQ equ 3 ; 1 = SRQ detected
pMgrSetPoll equ 7 ; 1 = will be passing addr bitmap to PMGR <H2>
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