/* * * (c) 2004,2005 Laurent Vivier * */ #ifndef __MACOS_SLOTMANAGER_H__ #define __MACOS_SLOTMANAGER_H__ #include enum { sRsrcType = 1, /* Type of sResource */ sRsrcName = 2, /* Name of sResource */ sRsrcIcon = 3, /* Icon */ sRsrcDrvrDir = 4, /* Driver Directory */ sRsrcLoadDir = 5, /* Load directory */ sRsrcBootRec = 6, /* sBoot record */ sRsrcFlags = 7, /* sResourceFlags */ sRsrcHWDevId = 8, /* Hardware Device ID */ }; struct SpBlock { long spResult; char* spsPointer; long spSize; long spOffsetData; char* spIOFileName; char* spsExecPBlk; long spParamData; long spMisc; long spReserved; short spIOReserved; short spRefNum; short spCategory; short spCType; short spDrvrSW; short spDrvrHW; int8_t spTBMask; int8_t spSlot; int8_t spID; int8_t spExtDev; int8_t spHwDev; int8_t spByteLanes; int8_t spFlags; int8_t spKey; } __attribute__((packed)) ; typedef struct SpBlock SpBlock; typedef SpBlock * SpBlockPtr; enum { /* flags for spParamData */ fall = 0, foneslot = 1, fnext = 2, }; static inline OSErr SGetCString(SpBlockPtr spBlkPtr) { register OSErr ret asm("%%d0"); asm("move.l %1, %%a0\n" SlotManager(_SGetCString) : "=g" (ret) : "g" (spBlkPtr) : UNPRESERVED_REGS); return ret; } static inline OSErr SGetTypeSRsrc(SpBlockPtr spBlkPtr) { register OSErr ret asm("%%d0"); asm("move.l %1, %%a0\n" SlotManager(_SGetTypeSRsrc) : "=g" (ret) : "g" (spBlkPtr) : UNPRESERVED_REGS); return ret; } static inline OSErr SRsrcInfo(SpBlockPtr spBlkPtr) { register OSErr ret asm("%%d0"); asm("move.l %1, %%a0\n" SlotManager(_SRsrcInfo) : "=g" (ret) : "g" (spBlkPtr) : UNPRESERVED_REGS); return ret; } #endif /* __MACOS_SLOTMANAGER_H__ */