sys7.1-doc-wip/Internal/Asm/SlotMgrEqu.a
2019-07-27 22:37:48 +08:00

229 lines
8.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;
; File: SlotMgrEqu.a
;
; Contains: This file contains PRIVATE equates for the slot manager
;
; Written by: George Norman
;
; Copyright: © 1986-1992 by Apple Computer, Inc. All rights reserved.
;
; Change History (most recent first):
;
; <SM4> 10/28/92 SWC Changed SlotEqu.a->Slots.a.
; <SM3> 6/30/92 kc Roll in Horror, comments follow:
; <H4> 6/10/92 djw Add new selector for doSecondaryInit (a private routine)
; <H3> 6/10/92 djw Add new private trap macro's for AddCard, RemoveCard,
; and CheckSlot.
; <SM2> 5/17/92 kc Add get sGetSRTEntry vector number.
; <5> 1/7/92 RB Added a couple of records structures used to identify faulty
; drivers in Apple display cards.
; <4> 1/30/91 gbm sab, #38: Change the already including this file variable to
; all uppercase (for security reasons)
; <2> 1/17/90 djw Add new slotmgr private selector GetBoard
; <1.9> 6/30/89 djw removed pSlotStatus.
; <1.8> 4/16/89 GGD Added new data structures used by SlotInterrupts.a and
; VerticalRetraceMgr.a
; <1.7> 4/12/89 djw Removed including slotequ.a and duplicate state constants
; (state_sdminit,...)
; <1.6> 3/28/89 djw added an SRT entries count to globals. Added macros for private
; routines, added last SRT ptr in globals.
; <1.5> 3/12/89 djw changed srt link block and added some mark values, deleted
; SRTlastBlk ptr in globals and substituted expansion chassis
; support fields.
; <1.4> 3/1/89 djw change srrblock flag field from byte to long
; <1.3> 2/20/89 djw added SRT header record definition, added slot mgr globals
; record. added flag field to srrBlock for enable/disable.
; <1.2> 1/6/89 djw Add slotVNum for slot version number
; <1.1> 11/17/88 CCH Added stuff from system build.
; <1.0> 11/9/88 CCH Adding to EASE.
; <1.0> 10/24/88 djw Adding for the first time into EASE.
; 1/10/88 djw created - removed sSDMRecord and state equates
;
;_______________________________________________________________________________________
IF &TYPE('__INCLUDINGSLOTMGREQU__') = 'UNDEFINED' THEN
__INCLUDINGSLOTMGREQU__ SET 1
Include 'Slots.a'
;---------------------------------------------------------------------
;MACRO: sNextStep(VAR Step:Dx; VAR Temp:Dy; VAR sPointer:An)
; sNextStep creates a new pointer from the given pointer and step
; register. The step register is updated for the next call.
; NOTE: &Temp must be CLEAR in bits 8..15.
;---------------------------------------------------------------------
MACRO
sNextStep &Step,&Temp,&sPointer
MOVE.B &Step,&Temp ;&Temp <- the Least Significant Byte of the Step register.
ADD.W &Temp,&sPointer ;&sPointer <- &sPointer + Step[x]
@M10 ROR.L #8,&Step ;&Step <- the next step value.
TST.B &Step ;IF (the next step value is zero) THEN
BEQ.S @M10 ; GOTO @M10 {Skip it}
ENDM
;=====================================================================
; Constants
;=====================================================================
slotVNum EQU 2 ; if new slot manager is in ROM <1.3>
; 1 if slot manager has been patched
; 0 if not present - really an error
srDisable EQU 0 ; bit number for srrFlags - set = disabled <1.3>
;these are apple internal only, never roll into equates
srrBlock RECORD 0 ;Slot Resource Table Record.
srrSlot DS.B 1 ; Slot
srrId DS.B 1 ; Id
srrExtDev DS.B 1 ; External Device <C663>
srrHWDev DS.B 1 ; Hardware device id. <1.3>
srrRefNum DS.W 1 ; RefNum of driver
srrIOReserved DS.W 1 ; Reserved
srrCategory DS.W 1 ; sType: Category
srrCType DS.W 1 ; Type
srrDrvrSW DS.W 1 ; DrvrSW
srrDrvrHW DS.W 1 ; DrvrHW
srrsRsrcPtr DS.L 1 ; Pointer to sResource
srrFlags DS.L 1 ; flag field <1.4>
SRTRecSize EQU * ; Size of se parameter Block
ENDR
srtLink RECORD 0 ; SRT link block <1.5>
srtMarker DS.W 1 ; place holder for marker
srtNext DS.L 1 ; ptr to next srt block, or nil
srtLinkSize EQU * ; size of srt link record
ENDR
srtend EQU $FFFF ; end of the srt blk and start of link block <1.5>
srtfree EQU $FF01 ; a free entry <1.5>
srtMaxEntries EQU 8 ; 8 entries per SRT block <1.3>
srtBlkSize EQU srtMaxEntries*srrBlock.SRTRecSize ; size of srt blocks to allocate <1.3>
SlotRsrcType RECORD 0 ;Slot Resource Type.
sCategory DS.W 1 ; sType: Category
sCType DS.W 1 ; Type
sDrvrSW DS.W 1 ; DrvrSW
sDrvrHW DS.W 1 ; DrvrHW
SRSize EQU * ; Size of Slot resource type.
ENDR
seHeader2 RECORD 0 ;Record structure of sExec Block, Revision-2.
seRevision DS.B 1 ; Revision of seBlock. Revision = 2. {Must be same field as se1Block}
seCPUId DS.B 1 ; Id of CPU
seTimeOut DS.W 1 ; Time Out
seCodeOffset DS.L 1 ; Offset to code.
ENDR
; Slot Manager global variables - globals are a negative offset from sInfoPtr.
slotGlobals RECORD 0,DECR ; global variables for slot manager <1.3>
BusUseCnt DS.W 1 ; count for usage of exception vector - when zero restore saved one
entryMMUMode DS.W 1 ; saved mmu mode when bus exception was swapped
sysBusExcptn DS.L 1 ; saved bus exception vector
slotBusExcptn DS.L 1 ; slot manager's bus exception vector
lastSRTPtr DS.L 1 ; ptr to the last entry in the SRT <1.6>
srtCnt DS.W 1 ; number of entries in the SRT <1.6>
expnSlot DS.B 1 ; expansion chassis slot number <1.5>
expnId DS.B 1 ; expansion chassis sRsrc id <1.5>
slotGlobalSize EQU slotGlobals-*
ENDR
; <5> rb, from Terror
DevTblRec Record 0 ; CardDevice identification record.
category Ds.w 1 ; spCategory
cType Ds.w 1 ; spCType
drvrSW Ds.w 1 ; spDrvrSW
drvrHW Ds.w 1 ; spDrvrHW
drvrVers Ds.w 1 ; driver version number
DTEntrySize Equ *
Endr
LoadTBlRec Record 0 ; Table of device parameter offsets.
ltAddrOff Ds.l 1 ; Offset to driver code.
ltSizeOff Ds.l 1 ; Offset to size of driver.
ltSpID Ds.b 1 ; Kind of spID to look for.
ltSpExtDev Ds.b 1 ; Multiple devices?
ltPadding Ds.b 2 ; Padding (for alignment).
LTEntrySize Equ *
Endr
; Slot manager private routines - these routines are accessed through <1.6>
; the vector table, but not the trap dispatcher.
macro
slotjsr &selector
pea @resume
move.l ([SDMJmpTblPtr],&selector*4),-(sp)
rts
@resume
endm
sDoSecondary equ $0f ; <h4> djw
sAddCard equ $1e ; <h3> djw
sRemoveCard equ $1f ; <h3> djw
sCheckSlot equ $27 ; <h3> djw
NewSRTEntry equ $34
InitEntry equ $35
SrToSpBlock equ $36
Read4Bytes equ $37
GetBoard equ $38 ; <2>
BusException equ $39
InstallBus equ $3A
RestoreBus equ $3B
AllocSRTBlk equ $3C
sGetSRTEntry equ $3D
; Slot manager sustem private routines which are accessed through the trap dispatcher.
macro ; <h3> djw
_AddCard
moveq.l #sAddCard,d0
_SlotManager
endm
macro ; <h3> djw
_RemoveCard
moveq.l #sRemoveCard,d0
_SlotManager
endm
macro ; <h3> djw
_CheckSlot
moveq.l #sCheckSlot,d0
_SlotManager
endm
; Private data structures used by slot interrupt and VBL processing.
slotVBLInfo record {slotVBLQHdr},increment
ds.w 1 ; unused space, for alignment
slotVBLQHdr ds.b qHeadSize ; slot VBL queue header for this slot
slotTickCount ds.l 1 ; VBL tick count for this slot
sVBLInfoSize equ *-slotVBLInfo
endr
slotIntGlobals record {slotVBLPtrs},increment ; globals pointed to by SlotQDT
slotVBLPtrs ds.l TotalSlots ; pointers to slotIntInfo records, indexed by slot number
ds.l 1 ; filler, reserved
slotIntQHeads ds.l TotalSlots ; pointers to SlotIntQElement records, indexed by slot number
ds.l 1 ; filler, reserved
slotVBLInfos ds.b TotalSlots*slotVBLInfo.sVBLInfoSize ; VBL info record for each possible slot
sIntGlobalSize equ *-slotIntGlobals
endr
ENDIF ; ...already included