mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-22 04:31:30 +00:00
211 lines
8.5 KiB
Plaintext
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 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 <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 |