mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-29 07:29:15 +00:00
272 lines
9.7 KiB
OpenEdge ABL
272 lines
9.7 KiB
OpenEdge ABL
|
|
||
|
{
|
||
|
Created: Saturday, July 27, 1991 at 11:41 PM
|
||
|
Slots.p
|
||
|
Pascal Interface to the Macintosh Libraries
|
||
|
|
||
|
Copyright Apple Computer, Inc. 1986-1991
|
||
|
All rights reserved
|
||
|
|
||
|
Change History (most recent first):
|
||
|
|
||
|
<8> 3/23/92 JSM OSEvents.p is obsolete, use Events.p instead.
|
||
|
<7> 7/31/91 JL Updated Copyright.
|
||
|
<6> 2/4/91 JL Change aSync param name to async.
|
||
|
<5> 1/27/91 LN Checked in Database generate file from DSG.
|
||
|
<4> 1/23/91 stb BBM: change spParamData in SpBlock type from Ptr to a LONGINT
|
||
|
<3> 12/14/90 dba <JDR> use inlines for everything
|
||
|
<2> 10/3/90 JAL Updated to Match C Interface.
|
||
|
}
|
||
|
|
||
|
|
||
|
{$IFC UNDEFINED UsingIncludes}
|
||
|
{$SETC UsingIncludes := 0}
|
||
|
{$ENDC}
|
||
|
|
||
|
{$IFC NOT UsingIncludes}
|
||
|
UNIT Slots;
|
||
|
INTERFACE
|
||
|
{$ENDC}
|
||
|
|
||
|
{$IFC UNDEFINED UsingSlots}
|
||
|
{$SETC UsingSlots := 1}
|
||
|
|
||
|
{$I+}
|
||
|
{$SETC SlotsIncludes := UsingIncludes}
|
||
|
{$SETC UsingIncludes := 1}
|
||
|
{$IFC UNDEFINED UsingTypes}
|
||
|
{$I $$Shell(PInterfaces)Types.p}
|
||
|
{$ENDC}
|
||
|
{$IFC UNDEFINED UsingEvents}
|
||
|
{$I $$Shell(PInterfaces)Events.p}
|
||
|
{$ENDC}
|
||
|
{$IFC UNDEFINED UsingOSUtils}
|
||
|
{$I $$Shell(PInterfaces)OSUtils.p}
|
||
|
{$ENDC}
|
||
|
{$IFC UNDEFINED UsingFiles}
|
||
|
{$I $$Shell(PInterfaces)Files.p}
|
||
|
{$ENDC}
|
||
|
{$SETC UsingIncludes := SlotsIncludes}
|
||
|
|
||
|
CONST
|
||
|
fCardIsChanged = 1; {Card is Changed field in StatusFlags field of sInfoArray}
|
||
|
fCkForSame = 0; {For SearchSRT. Flag to check for SAME sResource in the table. }
|
||
|
fCkForNext = 1; {For SearchSRT. Flag to check for NEXT sResource in the table. }
|
||
|
fWarmStart = 2; {If this bit is set then warm start else cold start.}
|
||
|
|
||
|
stateNil = 0; {State}
|
||
|
stateSDMInit = 1; {:Slot declaration manager Init}
|
||
|
statePRAMInit = 2; {:sPRAM record init}
|
||
|
statePInit = 3; {:Primary init}
|
||
|
stateSInit = 4; {:Secondary init}
|
||
|
|
||
|
{ flags for spParamData }
|
||
|
fall = 0; { bit 0: set=search enabled/disabled sRsrc's }
|
||
|
foneslot = 1; { 1: set=search sRsrc's in given slot only }
|
||
|
fnext = 2; { 2: set=search for next sRsrc }
|
||
|
|
||
|
TYPE
|
||
|
SQElemPtr = ^SlotIntQElement;
|
||
|
SlotIntQElement = RECORD
|
||
|
sqLink: Ptr; {ptr to next element}
|
||
|
sqType: INTEGER; {queue type ID for validity}
|
||
|
sqPrio: INTEGER; {priority}
|
||
|
sqAddr: ProcPtr; {interrupt service routine}
|
||
|
sqParm: LONGINT; {optional A1 parameter}
|
||
|
END;
|
||
|
|
||
|
SpBlockPtr = ^SpBlock;
|
||
|
SpBlock = PACKED RECORD
|
||
|
spResult: LONGINT; {FUNCTION Result}
|
||
|
spsPointer: Ptr; {structure pointer}
|
||
|
spSize: LONGINT; {size of structure}
|
||
|
spOffsetData: LONGINT; {offset/data field used by sOffsetData}
|
||
|
spIOFileName: Ptr; {ptr to IOFile name for sDisDrvrName}
|
||
|
spsExecPBlk: Ptr; {pointer to sExec parameter block.}
|
||
|
spParamData: LONGINT; {misc parameter data (formerly spStackPtr).}
|
||
|
spMisc: LONGINT; {misc field for SDM.}
|
||
|
spReserved: LONGINT; {reserved for future expansion}
|
||
|
spIOReserved: INTEGER; {Reserved field of Slot Resource Table}
|
||
|
spRefNum: INTEGER; {RefNum}
|
||
|
spCategory: INTEGER; {sType: Category}
|
||
|
spCType: INTEGER; {Type}
|
||
|
spDrvrSW: INTEGER; {DrvrSW}
|
||
|
spDrvrHW: INTEGER; {DrvrHW}
|
||
|
spTBMask: SignedByte; {type bit mask bits 0..3 mask words 0..3}
|
||
|
spSlot: SignedByte; {slot number}
|
||
|
spID: SignedByte; {structure ID}
|
||
|
spExtDev: SignedByte; {ID of the external device}
|
||
|
spHwDev: SignedByte; {Id of the hardware device.}
|
||
|
spByteLanes: SignedByte; {bytelanes from card ROM format block}
|
||
|
spFlags: SignedByte; {standard flags}
|
||
|
spKey: SignedByte; {Internal use only}
|
||
|
END;
|
||
|
|
||
|
SInfoRecPtr = ^SInfoRecord;
|
||
|
SInfoRecord = PACKED RECORD
|
||
|
siDirPtr: Ptr; {Pointer to directory}
|
||
|
siInitStatusA: INTEGER; {initialization E}
|
||
|
siInitStatusV: INTEGER; {status returned by vendor init code}
|
||
|
siState: SignedByte; {initialization state}
|
||
|
siCPUByteLanes: SignedByte; {0=[d0..d7] 1=[d8..d15]}
|
||
|
siTopOfROM: SignedByte; {Top of ROM= $FssFFFFx: x is TopOfROM}
|
||
|
siStatusFlags: SignedByte; {bit 0 - card is changed}
|
||
|
siTOConst: INTEGER; {Time Out C for BusErr}
|
||
|
siReserved: PACKED ARRAY [0..1] OF SignedByte; {reserved}
|
||
|
siROMAddr: Ptr; { addr of top of ROM }
|
||
|
siSlot: CHAR; { slot number }
|
||
|
siPadding: PACKED ARRAY [0..2] OF SignedByte; { reserved }
|
||
|
END;
|
||
|
|
||
|
SDMRecord = PACKED RECORD
|
||
|
sdBEVSave: ProcPtr; {Save old BusErr vector}
|
||
|
sdBusErrProc: ProcPtr; {Go here to determine if it is a BusErr}
|
||
|
sdErrorEntry: ProcPtr; {Go here if BusErrProc finds real BusErr}
|
||
|
sdReserved: LONGINT; {Reserved}
|
||
|
END;
|
||
|
|
||
|
FHeaderRecPtr = ^FHeaderRec;
|
||
|
FHeaderRec = PACKED RECORD
|
||
|
fhDirOffset: LONGINT; {offset to directory}
|
||
|
fhLength: LONGINT; {length of ROM}
|
||
|
fhCRC: LONGINT; {CRC}
|
||
|
fhROMRev: SignedByte; {revision of ROM}
|
||
|
fhFormat: SignedByte; {format - 2}
|
||
|
fhTstPat: LONGINT; {test pattern}
|
||
|
fhReserved: SignedByte; {reserved}
|
||
|
fhByteLanes: SignedByte; {ByteLanes}
|
||
|
END;
|
||
|
|
||
|
SEBlock = PACKED RECORD
|
||
|
seSlot: SignedByte; {Slot number.}
|
||
|
sesRsrcId: SignedByte; {sResource Id.}
|
||
|
seStatus: INTEGER; {Status of code executed by sExec.}
|
||
|
seFlags: SignedByte; {Flags}
|
||
|
seFiller0: SignedByte; {Filler, must be SignedByte to align on odd boundry}
|
||
|
seFiller1: SignedByte; {Filler}
|
||
|
seFiller2: SignedByte; {Filler}
|
||
|
seResult: LONGINT; {Result of sLoad.}
|
||
|
seIOFileName: LONGINT; {Pointer to IOFile name.}
|
||
|
seDevice: SignedByte; {Which device to read from.}
|
||
|
sePartition: SignedByte; {The partition.}
|
||
|
seOSType: SignedByte; {Type of OS.}
|
||
|
seReserved: SignedByte; {Reserved field.}
|
||
|
seRefNum: SignedByte; {RefNum of the driver.}
|
||
|
seNumDevices: SignedByte; { Number of devices to load.}
|
||
|
seBootState: SignedByte; {State of StartBoot code.}
|
||
|
END;
|
||
|
|
||
|
|
||
|
|
||
|
{ Principle }
|
||
|
FUNCTION SReadByte(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7000,$A06E,$3E80;
|
||
|
FUNCTION SReadWord(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7001,$A06E,$3E80;
|
||
|
FUNCTION SReadLong(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7002,$A06E,$3E80;
|
||
|
FUNCTION SGetCString(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7003,$A06E,$3E80;
|
||
|
FUNCTION SGetBlock(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7005,$A06E,$3E80;
|
||
|
FUNCTION SFindStruct(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7006,$A06E,$3E80;
|
||
|
FUNCTION SReadStruct(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7007,$A06E,$3E80;
|
||
|
|
||
|
|
||
|
{ Special }
|
||
|
FUNCTION SReadInfo(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7010,$A06E,$3E80;
|
||
|
FUNCTION SReadPRAMRec(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7011,$A06E,$3E80;
|
||
|
FUNCTION SPutPRAMRec(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7012,$A06E,$3E80;
|
||
|
FUNCTION SReadFHeader(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7013,$A06E,$3E80;
|
||
|
FUNCTION SNextSRsrc(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7014,$A06E,$3E80;
|
||
|
FUNCTION SNextTypeSRsrc(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7015,$A06E,$3E80;
|
||
|
FUNCTION SRsrcInfo(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7016,$A06E,$3E80;
|
||
|
FUNCTION SCkCardStat(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7018,$A06E,$3E80;
|
||
|
FUNCTION SReadDrvrName(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7019,$A06E,$3E80;
|
||
|
FUNCTION SFindDevBase(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$701B,$A06E,$3E80;
|
||
|
FUNCTION SFindBigDevBase(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$701C,$A06E,$3E80;
|
||
|
|
||
|
|
||
|
{ Advanced }
|
||
|
FUNCTION InitSDeclMgr(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7020,$A06E,$3E80;
|
||
|
FUNCTION SPrimaryInit(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7021,$A06E,$3E80;
|
||
|
FUNCTION SCardChanged(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7022,$A06E,$3E80;
|
||
|
FUNCTION SExec(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7023,$A06E,$3E80;
|
||
|
FUNCTION SOffsetData(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7024,$A06E,$3E80;
|
||
|
FUNCTION SInitPRAMRecs(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7025,$A06E,$3E80;
|
||
|
FUNCTION SReadPBSize(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7026,$A06E,$3E80;
|
||
|
FUNCTION SCalcStep(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7028,$A06E,$3E80;
|
||
|
FUNCTION SInitSRsrcTable(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7029,$A06E,$3E80;
|
||
|
FUNCTION SSearchSRT(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$702A,$A06E,$3E80;
|
||
|
FUNCTION SUpdateSRT(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$702B,$A06E,$3E80;
|
||
|
FUNCTION SCalcSPointer(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$702C,$A06E,$3E80;
|
||
|
FUNCTION SGetDriver(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$702D,$A06E,$3E80;
|
||
|
FUNCTION SPtrToSlot(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$702E,$A06E,$3E80;
|
||
|
FUNCTION SFindSInfoRecPtr(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$702F,$A06E,$3E80;
|
||
|
FUNCTION SFindSRsrcPtr(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7030,$A06E,$3E80;
|
||
|
FUNCTION SDeleteSRTRec(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7031,$A06E,$3E80;
|
||
|
|
||
|
FUNCTION OpenSlot(paramBlock: ParmBlkPtr;async: BOOLEAN): OSErr;
|
||
|
FUNCTION OpenSlotSync(paramBlock: ParmBlkPtr): OSErr;
|
||
|
INLINE $205F,$A200,$3E80;
|
||
|
FUNCTION OpenSlotAsync(paramBlock: ParmBlkPtr): OSErr;
|
||
|
INLINE $205F,$A600,$3E80;
|
||
|
|
||
|
|
||
|
{ Device Manager Slot Support }
|
||
|
FUNCTION SIntInstall(sIntQElemPtr: SQElemPtr;theSlot: INTEGER): OSErr;
|
||
|
INLINE $301F,$205F,$A075,$3E80;
|
||
|
FUNCTION SIntRemove(sIntQElemPtr: SQElemPtr;theSlot: INTEGER): OSErr;
|
||
|
INLINE $301F,$205F,$A076,$3E80;
|
||
|
|
||
|
FUNCTION SVersion(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7008,$A06E,$3E80;
|
||
|
FUNCTION SetSRsrcState(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$7009,$A06E,$3E80;
|
||
|
FUNCTION InsertSRTRec(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$700A,$A06E,$3E80;
|
||
|
FUNCTION SGetSRsrc(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$700B,$A06E,$3E80;
|
||
|
FUNCTION SGetTypeSRsrc(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$700C,$A06E,$3E80;
|
||
|
FUNCTION SGetSRsrcPtr(spBlkPtr: SpBlockPtr): OSErr;
|
||
|
INLINE $205F,$701D,$A06E,$3E80;
|
||
|
|
||
|
|
||
|
{$ENDC} { UsingSlots }
|
||
|
|
||
|
{$IFC NOT UsingIncludes}
|
||
|
END.
|
||
|
{$ENDC}
|
||
|
|