boot3/Interfaces/CIncludes/Slots.h
Elliot Nunn 5b0f0cc134 Bring in CubeE sources
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included.

The Tools directory, containing mostly junk, is also excluded.
2017-12-26 10:02:57 +08:00

327 lines
11 KiB
C

/************************************************************
Created: Saturday, July 27, 1991 at 6:43 PM
Slots.h
C Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1986-1991
All rights reserved
Change History (most recent first):
<11> 3/23/92 JSM OSEvents.h is obsolete, use Events.h instead.
<10> 7/31/91 JL Updated Copyright.
<9> 2/4/91 JL changed aSync parameter names to async.
<8> 1/27/91 LN Checked in Database generate file from DSG. changed
OpenSlotASync to OpenSlotAsync to be consistent with others.
<7> 1/23/91 stb BBM: change spParamData in SpBlock type from Ptr to a LONGINT;
fix selectors 8,9,A,B,C,1D.
<6> 12/14/90 dba <JDR> define inlines for some calls that were missing them
<5> 11/7/90 JL Changed all #defines to anonymous enums
<4> 10/21/90 gbm (with dba) Made compatible with 3.2 C compiler (and incompatible
with previous compilers).
<4> 10/10/90 JAL New style #Pragma Parameters for MPW 3.2 C
<3> 4/16/90 djw Add new slot manager definitions
To Do:
************************************************************/
#ifndef __SLOTS__
#define __SLOTS__
#ifndef __TYPES__
#include <Types.h>
#endif
#ifndef __EVENTS__
#include <Events.h>
#endif
#ifndef __OSUTILS__
#include <OSUtils.h>
#endif
#ifndef __FILES__
#include <Files.h>
#endif
enum {
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 */
};
struct SlotIntQElement {
Ptr sqLink; /*ptr to next element*/
short sqType; /*queue type ID for validity*/
short sqPrio; /*priority*/
ProcPtr sqAddr; /*interrupt service routine*/
long sqParm; /*optional A1 parameter*/
};
typedef struct SlotIntQElement SlotIntQElement;
typedef SlotIntQElement *SQElemPtr;
struct SpBlock {
long spResult; /*FUNCTION Result*/
Ptr spsPointer; /*structure pointer*/
long spSize; /*size of structure*/
long spOffsetData; /*offset/data field used by sOffsetData*/
Ptr spIOFileName; /*ptr to IOFile name for sDisDrvrName*/
Ptr spsExecPBlk; /*pointer to sExec parameter block.*/
long spParamData; /*misc parameter data (formerly spStackPtr).*/
long spMisc; /*misc field for SDM.*/
long spReserved; /*reserved for future expansion*/
short spIOReserved; /*Reserved field of Slot Resource Table*/
short spRefNum; /*RefNum*/
short spCategory; /*sType: Category*/
short spCType; /*Type*/
short spDrvrSW; /*DrvrSW*/
short spDrvrHW; /*DrvrHW*/
char spTBMask; /*type bit mask bits 0..3 mask words 0..3*/
char spSlot; /*slot number*/
char spID; /*structure ID*/
char spExtDev; /*ID of the external device*/
char spHwDev; /*Id of the hardware device.*/
char spByteLanes; /*bytelanes from card ROM format block*/
char spFlags; /*standard flags*/
char spKey; /*Internal use only*/
};
typedef struct SpBlock SpBlock;
typedef SpBlock *SpBlockPtr;
struct SInfoRecord {
Ptr siDirPtr; /*Pointer to directory*/
short siInitStatusA; /*initialization E*/
short siInitStatusV; /*status returned by vendor init code*/
char siState; /*initialization state*/
char siCPUByteLanes; /*0=[d0..d7] 1=[d8..d15]*/
char siTopOfROM; /*Top of ROM= $FssFFFFx: x is TopOfROM*/
char siStatusFlags; /*bit 0 - card is changed*/
short siTOConst; /*Time Out C for BusErr*/
char siReserved[2]; /*reserved*/
Ptr siROMAddr; /* addr of top of ROM */
char siSlot; /* slot number */
char siPadding[3]; /* reserved */
};
typedef struct SInfoRecord SInfoRecord;
typedef SInfoRecord *SInfoRecPtr;
struct SDMRecord {
ProcPtr sdBEVSave; /*Save old BusErr vector*/
ProcPtr sdBusErrProc; /*Go here to determine if it is a BusErr*/
ProcPtr sdErrorEntry; /*Go here if BusErrProc finds real BusErr*/
long sdReserved; /*Reserved*/
};
typedef struct SDMRecord SDMRecord;
struct FHeaderRec {
long fhDirOffset; /*offset to directory*/
long fhLength; /*length of ROM*/
long fhCRC; /*CRC*/
char fhROMRev; /*revision of ROM*/
char fhFormat; /*format - 2*/
long fhTstPat; /*test pattern*/
char fhReserved; /*reserved*/
char fhByteLanes; /*ByteLanes*/
};
typedef struct FHeaderRec FHeaderRec;
typedef FHeaderRec *FHeaderRecPtr;
struct SEBlock {
unsigned char seSlot; /*Slot number.*/
unsigned char sesRsrcId; /*sResource Id.*/
short seStatus; /*Status of code executed by sExec.*/
unsigned char seFlags; /*Flags*/
unsigned char seFiller0; /*Filler, must be SignedByte to align on odd boundry*/
unsigned char seFiller1; /*Filler*/
unsigned char seFiller2; /*Filler*/
long seResult; /*Result of sLoad.*/
long seIOFileName; /*Pointer to IOFile name.*/
unsigned char seDevice; /*Which device to read from.*/
unsigned char sePartition; /*The partition.*/
unsigned char seOSType; /*Type of OS.*/
unsigned char seReserved; /*Reserved field.*/
unsigned char seRefNum; /*RefNum of the driver.*/
unsigned char seNumDevices; /* Number of devices to load.*/
unsigned char seBootState; /*State of StartBoot code.*/
};
typedef struct SEBlock SEBlock;
#ifdef __cplusplus
extern "C" {
#endif
/* Principle */
#pragma parameter __D0 SReadByte(__A0)
pascal OSErr SReadByte(SpBlockPtr spBlkPtr)
= {0x7000,0xA06E};
#pragma parameter __D0 SReadWord(__A0)
pascal OSErr SReadWord(SpBlockPtr spBlkPtr)
= {0x7001,0xA06E};
#pragma parameter __D0 SReadLong(__A0)
pascal OSErr SReadLong(SpBlockPtr spBlkPtr)
= {0x7002,0xA06E};
#pragma parameter __D0 SGetCString(__A0)
pascal OSErr SGetCString(SpBlockPtr spBlkPtr)
= {0x7003,0xA06E};
#pragma parameter __D0 SGetBlock(__A0)
pascal OSErr SGetBlock(SpBlockPtr spBlkPtr)
= {0x7005,0xA06E};
#pragma parameter __D0 SFindStruct(__A0)
pascal OSErr SFindStruct(SpBlockPtr spBlkPtr)
= {0x7006,0xA06E};
#pragma parameter __D0 SReadStruct(__A0)
pascal OSErr SReadStruct(SpBlockPtr spBlkPtr)
= {0x7007,0xA06E};
/* Special */
#pragma parameter __D0 SReadInfo(__A0)
pascal OSErr SReadInfo(SpBlockPtr spBlkPtr)
= {0x7010,0xA06E};
#pragma parameter __D0 SReadPRAMRec(__A0)
pascal OSErr SReadPRAMRec(SpBlockPtr spBlkPtr)
= {0x7011,0xA06E};
#pragma parameter __D0 SPutPRAMRec(__A0)
pascal OSErr SPutPRAMRec(SpBlockPtr spBlkPtr)
= {0x7012,0xA06E};
#pragma parameter __D0 SReadFHeader(__A0)
pascal OSErr SReadFHeader(SpBlockPtr spBlkPtr)
= {0x7013,0xA06E};
#pragma parameter __D0 SNextSRsrc(__A0)
pascal OSErr SNextSRsrc(SpBlockPtr spBlkPtr)
= {0x7014,0xA06E};
#pragma parameter __D0 SNextTypeSRsrc(__A0)
pascal OSErr SNextTypeSRsrc(SpBlockPtr spBlkPtr)
= {0x7015,0xA06E};
#pragma parameter __D0 SRsrcInfo(__A0)
pascal OSErr SRsrcInfo(SpBlockPtr spBlkPtr)
= {0x7016,0xA06E};
#pragma parameter __D0 SCkCardStat(__A0)
pascal OSErr SCkCardStat(SpBlockPtr spBlkPtr)
= {0x7018,0xA06E};
#pragma parameter __D0 SReadDrvrName(__A0)
pascal OSErr SReadDrvrName(SpBlockPtr spBlkPtr)
= {0x7019,0xA06E};
#pragma parameter __D0 SFindDevBase(__A0)
pascal OSErr SFindDevBase(SpBlockPtr spBlkPtr)
= {0x701B,0xA06E};
#pragma parameter __D0 SFindBigDevBase(__A0)
pascal OSErr SFindBigDevBase(SpBlockPtr spBlkPtr)
= {0x701C,0xA06E};
/* Advanced */
#pragma parameter __D0 InitSDeclMgr(__A0)
pascal OSErr InitSDeclMgr(SpBlockPtr spBlkPtr)
= {0x7020,0xA06E};
#pragma parameter __D0 SPrimaryInit(__A0)
pascal OSErr SPrimaryInit(SpBlockPtr spBlkPtr)
= {0x7021,0xA06E};
#pragma parameter __D0 SCardChanged(__A0)
pascal OSErr SCardChanged(SpBlockPtr spBlkPtr)
= {0x7022,0xA06E};
#pragma parameter __D0 SExec(__A0)
pascal OSErr SExec(SpBlockPtr spBlkPtr)
= {0x7023,0xA06E};
#pragma parameter __D0 SOffsetData(__A0)
pascal OSErr SOffsetData(SpBlockPtr spBlkPtr)
= {0x7024,0xA06E};
#pragma parameter __D0 SInitPRAMRecs(__A0)
pascal OSErr SInitPRAMRecs(SpBlockPtr spBlkPtr)
= {0x7025,0xA06E};
#pragma parameter __D0 SReadPBSize(__A0)
pascal OSErr SReadPBSize(SpBlockPtr spBlkPtr)
= {0x7026,0xA06E};
#pragma parameter __D0 SCalcStep(__A0)
pascal OSErr SCalcStep(SpBlockPtr spBlkPtr)
= {0x7028,0xA06E};
#pragma parameter __D0 SInitSRsrcTable(__A0)
pascal OSErr SInitSRsrcTable(SpBlockPtr spBlkPtr)
= {0x7029,0xA06E};
#pragma parameter __D0 SSearchSRT(__A0)
pascal OSErr SSearchSRT(SpBlockPtr spBlkPtr)
= {0x702A,0xA06E};
#pragma parameter __D0 SUpdateSRT(__A0)
pascal OSErr SUpdateSRT(SpBlockPtr spBlkPtr)
= {0x702B,0xA06E};
#pragma parameter __D0 SCalcSPointer(__A0)
pascal OSErr SCalcSPointer(SpBlockPtr spBlkPtr)
= {0x702C,0xA06E};
#pragma parameter __D0 SGetDriver(__A0)
pascal OSErr SGetDriver(SpBlockPtr spBlkPtr)
= {0x702D,0xA06E};
#pragma parameter __D0 SPtrToSlot(__A0)
pascal OSErr SPtrToSlot(SpBlockPtr spBlkPtr)
= {0x702E,0xA06E};
#pragma parameter __D0 SFindSInfoRecPtr(__A0)
pascal OSErr SFindSInfoRecPtr(SpBlockPtr spBlkPtr)
= {0x702F,0xA06E};
#pragma parameter __D0 SFindSRsrcPtr(__A0)
pascal OSErr SFindSRsrcPtr(SpBlockPtr spBlkPtr)
= {0x7030,0xA06E};
#pragma parameter __D0 SDeleteSRTRec(__A0)
pascal OSErr SDeleteSRTRec(SpBlockPtr spBlkPtr)
= {0x7031,0xA06E};
pascal OSErr OpenSlot(ParmBlkPtr paramBlock,Boolean async);
#pragma parameter __D0 OpenSlotSync(__A0)
pascal OSErr OpenSlotSync(ParmBlkPtr paramBlock)
= 0xA200;
#pragma parameter __D0 OpenSlotAsync(__A0)
pascal OSErr OpenSlotAsync(ParmBlkPtr paramBlock)
= 0xA600;
/* Device Manager Slot Support */
#pragma parameter __D0 SIntInstall(__A0,__D0)
pascal OSErr SIntInstall(SQElemPtr sIntQElemPtr,short theSlot)
= 0xA075;
#pragma parameter __D0 SIntRemove(__A0,__D0)
pascal OSErr SIntRemove(SQElemPtr sIntQElemPtr,short theSlot)
= 0xA076;
#pragma parameter __D0 SVersion(__A0)
pascal OSErr SVersion(SpBlockPtr spBlkPtr)
= {0x7008,0xA06E};
#pragma parameter __D0 SetSRsrcState(__A0)
pascal OSErr SetSRsrcState(SpBlockPtr spBlkPtr)
= {0x7009,0xA06E};
#pragma parameter __D0 InsertSRTRec(__A0)
pascal OSErr InsertSRTRec(SpBlockPtr spBlkPtr)
= {0x700A,0xA06E};
#pragma parameter __D0 SGetSRsrc(__A0)
pascal OSErr SGetSRsrc(SpBlockPtr spBlkPtr)
= {0x700B,0xA06E};
#pragma parameter __D0 SGetTypeSRsrc(__A0)
pascal OSErr SGetTypeSRsrc(SpBlockPtr spBlkPtr)
= {0x700C,0xA06E};
#pragma parameter __D0 SGetSRsrcPtr(__A0)
pascal OSErr SGetSRsrcPtr(SpBlockPtr spBlkPtr)
= {0x701D,0xA06E};
#ifdef __cplusplus
}
#endif
#endif