mac-rom/Internal/Asm/egretequ.a

303 lines
13 KiB
Plaintext

Eject
************************************************************************
; EGRET Manager Equates
;
; File: EgretEqu.a
;
; Contains: Equate definitions used by EgretMgr.a
;
; Written by: Gus Andrade, Gary Rensberger
;
; Copyright: © 1990-1992 by Apple Computer, Inc., all rights reserved.
;
; Change History (most recent first):
;
; <SM6> 11/20/92 GS (rbm) Allocated one of the expansion variables in the Cuda
; globals for preserving any existing poll stack. Updated the
; 10ms delay to be a little longer. Renamed the Macsbug continue
; var to PDMDebugCont. for consistancy.
; <SM5> 10/7/92 GS Increase size of Cuda manager globals so that support for
; calling the resume procedure associated with power messages can
; be accessed externally.
; Added equates for debugger continue (Power Message Support).
; Added equates for asynchronous IIC traffic.
; <SM4> 9/18/92 GS Added Time out equates, and added a new Shutdown selector for
; the Macsbug Continue state.
; <SM3> 6/26/92 GS (RBM) Comment now says the WrDFAC is always DFAC mode.
; Eliminated SetDFACmode and replaced it with RdWrIIC. RdWrIIC is
; always I squared C mode. Expanded Egret parameter blocks so
; that the Cuda manager can have room for extensible featuresÉ
; Added equate for hardware based delay in SyncAck cycle (see
; CudaInit).
; <SM2> 5/22/92 RB Updated for new values used for Cuda in Pandora.
;
; SuperMario Change History:
;
; <11> 10/28/91 SAM/KSM Rolled in Regatta file.
;
; Regatta Change History:
;
; <3> 6/14/91 SAM (bg) Made this file look like the one in TERROR.
; <1> 6/12/91 SAM Split off from 7.0 GM sources.
;
; 7.0 Change History:
;
; <10> 1/30/91 gbm sab, #38: Change the Ôalready including this fileÕ variable to
; all uppercase (for security reasons)
; <9> 5/8/90 GA Added Retry Count and Timeout count for SendEgretCmd new
; RetryCount and Timeout support in SendPtype.
; <7> 4/25/90 GA Added equates needed in EgretMgr to fix DFAC bug and Error
; reporting bug.
; <6> 4/10/90 GA Added equates to support the error checking code in EgretMgr.a
; <5> 4/2/90 GA Changing the ElsieDFAC back to $57 AGAIN!!!. The hardware people
; should make up their minds!
; <4> 3/30/90 GA Added equates for EricksonDFAC & ElsieDFAC
; <3> 2/28/90 GMR Modified to match new EgretMgr.a
; <2> 2/3/90 GA first checked in
; <1> 2/3/90 GA first checked in
;
; To Do:
;
************************************************************************
IF &TYPE('__INCLUDINGEGRETEQU__') = 'UNDEFINED' THEN
__INCLUDINGEGRETEQU__ SET 1
;
; Egret parameter block
;
EgretPB RECORD 0,increment
pbCmdType ds.b 1 ; command type
pbCmd ds.b 1 ; Egret command
pbParam ds.b 4 ; Generic parameter (Addr, Time, etc), if needed for this command
pbByteCnt ds.w 1 ; # bytes of send/rcv data, if needed for this command
pbBufPtr ds.l 1 ; ptr to send/receive data, if any
pbFlags ds.b 1 ; Egrets flags (from response packet)
ds.b 1 ; word align
pbResult ds.w 1 ; result code (if any)
pbCompletion ds.l 1 ; ptr to completion routine
EgretPBSize EQU *
ENDR
;________________________________________________________________________________________________
; Globals
EgretGlobals RECORD 0,increment
flags ds.w 1 ; Egret Manager state flags
sendHdrCnt ds.w 1 ; # bytes in command header to send
sendHdrPtr ds.l 1 ; ptr into command header
sendDataCnt ds.w 1 ; # data bytes to send for current cmd
sendDataPtr ds.l 1 ; ptr to next data byte to send
rcvHdrCnt ds.w 1 ; # bytes to receive in response header
rcvHdrIndex ds.w 1 ; current index into receive header buffer
rcvDataCnt ds.w 1 ; # data bytes to receive
rcvDataPtr ds.l 1 ; ptr into receive buffer
rcvHeader ds.b 12 ; temp buffer for response packet
completion ds.l 1 ; ptr to completion routine for current packet
tickComp ds.l 1 ; tick packet completion routine
PDMComp ds.l 1 ; Eclipse PowerDown Message Handler Vector <T2>
adbPb ds.l 1 ; ptr to ADB auto response param block
curPb ds.l 1 ; ptr to current param block
workPb ds.b EgretPB.EgretPBSize ; local parameter block for unsolicited packets
ds.b 4 ; expansion space for the Egret parameter block <SM3><3>
IICComp ds.l 1 ; vector to handler for asynchronous IIC traffic <SM5>
ContinueComp ds.l 1 ; vector to power message continue procedure <SM5>
deferredPDM ds.l 1 ; pointer to PDM deferred task to post alert <SM5>
prevPollStack ds.l 1 ; keep address of any other poll stack <SM6>
SpareComp3 ds.l 1 ; spare vector #3 <SM5>
ds.b $178-$64 ; new
EgretGlobSize EQU *
ENDR
;________________________________________________________________________________________________
; Response Packet
respPacket RECORD 0,increment ; record describing rcvHeader
length ds.b 1 ; number of bytes in rcvHeader (4+data count)
respType ds.b 1 ; packet type (0=ADB, 3=ticks)
respFlag ds.b 1 ; flags
respCmd ds.b 1 ; command
respData ds.b 8 ; data bytes that came in (ticks, adb data)
ENDR
;________________________________________________________________________________________________
; Record Descriptor for Response Packet Header
;
RespHeader RECORD 0,increment ; record descriptor for Response packet Header <T2>
RespAttn ds.b 1 ; Attention Byte <T2>
RespPktType ds.b 1 ; Packet type <T2>
RespFlags ds.b 1 ; Flags byte <T2>
RespCmd ds.b 1 ; Command number <T2>
RespData ds.b 8 ; Data area for ADB or Time data <T2>
ENDR ; <T2>
;________________________________________________________________________________________________
; Egret8 and Caboose Bit definitions
xcvrSes EQU 3 ; ADBu session PB3
viaFull EQU 4 ; Via full indicator PB4
sysSes EQU 5 ; System session is PB5
;________________________________________________________________________________________________
; Cuda VIA Bit Definitions
TReq EQU 3 ; CUDA transaction PB3 <P1>
vByteAck EQU 4 ; acknowledge byte transfer PB4 <P1>
TIP EQU 5 ; System transaction PB5 <P1>
ACRmode EQU %00001100 ; shift reg mode (input with ext clock)
SRdir EQU 4 ; shift reg direction bit (0=input, 1=output)
; from Cuda, from System
vShift EQU 2 ; shift reg interrupt bit
;
;_______________________________________________________________________
; Egret Manager Flag Bit Definitions
busy EQU 0 ; flag bit 0 means we're busy with a packet
openData EQU 1 ; flag bit 1 means this is an open ended read response
BadPkt EQU 2 ; flag bit 2 means 1= Error Packet in progress <7>
PBPending EQU 3 ; PB aborted and pending <T2>
IdleAckFlag EQU 4 ; flag bit 4 set means an IdleAck pkt expected (Cuda) <P1>
;
;_______________________________________________________________________
; Flag Bits in the ADB Status byte returned from the ADB processor
EgSRQ equ 0 ; bit 0, 1=SRQ asserted
EgTimeOut equ 1 ; bit 1, 1=Active device did not have data available
EgSRQError equ 2 ; bit 2, 1=Device asserted excessive SRQ period
EgBusError equ 3 ; bit 3, 1=Timing error in bit cell was detected
EgAutoPoll equ 6 ; bit 6, 1=Data is from an Auto Poll
EgResponse equ 7 ; bit 7, 1=Response packett in process
;________________________________________________________________________________________________
; Elsie/Erickson DFAC initial settings
ElsieDFAC equ $0057
EricksonDFAC equ $0000
EclipseDFAC equ $0010 ; initial dfac values for Eclipse and Spike <t3> djw
SpikeDFAC equ $0010
;________________________________________________________________________________________________
; Packet types
adbPkt EQU $0000 ; ADB request packet type
pseudoPkt EQU $0001 ; pseudo commands packet type
errorPkt EQU $0002 ; error packets type
tickPkt EQU $0003 ; Egret 1 second tick packet type
PDMPkt equ $0004 ; PowerDown Message Packet (From Egret) <T2>
IICPkt equ $0005 ; asynchronous IIC packet SM5
DoContinueProc equ $00FB ; execute the continue procedure <SM5>
ContinueVectPkt equ $00FC ; initialize the vector with the current continue PROC <SM5>
IICVectPkt equ $00FD ; asynchronous IIC message vector <SM5>
PDMVectPkt equ $00FE ; Eclipse Init PowerDown Message vector <T2>
specialPkt EQU $00FF ; used to install ADB handler/pb
AddrField equ 4 ; ADB address field in most significant nibble
ADBFlushCmd equ %00000001 ; Flush Command
ListenCmd equ %00001000 ; Listen Command
TalkCmd equ %00001100 ; Talk Command
TalkAnR3 equ TalkCmd|3 ; Talk Command - Address N, Register 3
TalkA2R0 equ TalkCmd|(2<<AddrField) ; Talk address 2, register 0
TalkA2R2 equ TalkCmd|(2<<AddrField)|2 ; Talk address 2, register 2
FlushKybd equ ADBFlushCmd|(2<<AddrField) ; flush the keyboard buffer
;
; Shutdown Initiators from SysFlag in Cuda FW.
;
FrmChassisSw equ $01 ; Initiate ShutDown from Chassis Power Switch
FrmKeyBdSw equ $02 ; Initiate ShutDown from KeyBoard Switch
FrmKeySw equ $05 ; Initiate ShutDown from Secure Key Switch
;
; Selectors of the Shutdown Initiator Codes
;
KeySwSecure Equ 2 ; keyswitch from ON to FS
KeySwOn Equ 1 ; keyswithc from FS to ON
KeySwPwrDn Equ 0 ; keyswitch from On to OFF - no User Alert
ChassisSwOff Equ 0 ; Chassis sw Off - no User Alert
KyBdSoftOff Equ 4 ; keyboard sw Off - User alert
;
; Selectors of the Power Down Message
;
PDMTurnOff EQU 0 ; disable PDM
PDMTurnOn EQU 1 ; enable PDM ^
PDMSuspend EQU 2 ; suspend PDM, for SoftOff |
PDMContinue EQU 3 ; resume PDM, for SoftOff <P5>
PDMDebugCont equ 4 ; restore PDM (turn PDM on if OFF & Suspended) <SM6>
;
;________________________________________________________________________________________________
; Pseudo commands
NopCmd equ $00
APoll equ $01 ; start/stop autopoll
Rd6805addr equ $02 ; read 6805 address
RdTime equ $03 ; read real time clock pseudo commmand
RdRomSize equ $04 ; get romsize command
RdRomBase equ $05 ; get rom base address
RdRomHeader equ $06 ; get rom header address
RdPram equ $07 ; read parameter ram
Wr6805Addr equ $08 ; write 6805 address
WrTime equ $09 ; write time command
PwrDown equ $0A ; Erickson powerdown command
WrPwrupTime equ $0B ; Erickson set powerup time
WrPram equ $0C ; write parameter ram
MonoReset equ $0D ; Monostable reset
WrDFAC equ $0E ; write DFAC (always DFAC mode) <SM3>[rbm]<3>
Egretdiags equ $0F ; run egret diagnostics
RdCtlPanel equ $10 ; Sense control panel enable
RdBattery equ $10 ; Sense if battery was changed <P1>
ResetEgret equ $11 ; Egret Cold start command
EnDisVpp equ $12 ; ELSIE enable/disabe VPP
SetIPL equ $12 ; Set IPL level <P1>
EnDisFiles equ $13 ; enable/disable file server flag
SetAutopoll equ $14 ; set autopoll rate
RdPramSize equ $15 ; get parameter ram size
RdAutoRate equ $16 ; get autopoll rate
WrBusDelay equ $17 ; set bus delay constant
RdBusDelay equ $18 ; get busdelay constant
WrDevList equ $19 ; set ADB device list
RdDevList equ $1A ; get ADB device list
Wr1SecMode equ $1B ; set 1 second interrupt mode
EnDisKbdNmi equ $1C ; enable/disable keyboard NMI
EnDisParse equ $1D ; enable/disable post parse R2 A2
WrHangTout equ $1E ; set hang threshold
RdHangTout equ $1F ; get hang threshold
SetDefDFAC equ $20 ; Set Default DFAC String <T2>
EnDisPDM equ $21 ; Enable/Disable PowerDown Message <T2>
RdWrIIC equ $22 ; Read or Write IIC (I sqared C) <SM3>[rbm]<3>
WakeUpMode equ $23 ; Enable/Disable WakeUpMode <P1>
TimerTickle equ $24 ; ShutDown Timer Tickle <P1>
; more commands apparently added
MaxPseudoCmd equ $2A ; largest possible pseudo command number <P1>
;
;__________________________________________________________________________________________________
; MISC Equates
InvPseudo equ $0202 ; Invalid Pseudo packet <6>
InvPkt equ $0201 ; Invalid Packet type <6>
Enable equ $00FF ; Nonzero to enable Egret functions <T2>
Disable equ $0000 ; Zero to disable Egret functions <T2>
MaxRetries equ $0100 ; 256 Retries to communicate with Egret in SendEgretCmd<9>
MaxTout equ $2000 ; timeout waiting for Vsr irq from Egret 10millsecs<9>
DelayCnt equ $0068 ; count for register base delay100us routine
EclipseDelay equ 00025 ; Extra delay required for Eclipse <T2>
PollStackSize equ $0020 ; 32 byte buffer for SCC Poll data
Mode3Clock equ $0003 ; Mode 3 packets for clock data
MRUAddr equ $00B3 ; MRU address in Egret/Caboose/Cuda <10>
LRUAddr equ $00B4 ; LRU address in Egret/Caboose/Cuda <10>
hw4msDelay equ 3333 ; constant for 4ms delay in DBRA loop w/ hardware access <SM3><2>
;hw10msDelay equ 9167 ; delay to exceed maximum auto poll period on CUDA. <SM5>
hw10msDelay equ 15000 ; delay to exceed maximum auto poll period on CUDA. <SM6>
ENDIF ; ...already included