SExec
SExec Load and execute an sExec code block
#include <Slots.h> Slot Manager
OSErr SExec( spBlkPtr);
SpBlockPtr spBlkPtr ; address of 56-byte Slot Parameter Block
structure
returns Error Code; 0=no error
SExec loads an sExec code block from the sResource list pointed to by
spsPointer and identified by spID to the current heap zone, checks its
revision level, checks its CRC filed, and executes the code. Status is returned in
seStatus. Used only by the Operating System.
spBlkPtr is the address of a 56-byte Slot Parameter Block structure.
The relevant fields are as follows:
Out-In Name Type Size Offset Description
Æ spsPointer Ptr 4 4 Structure pointer
Æ sp sExecPBlk Ptr 4 20 Pointer to sExec parameter block
Æ spID char 1 50 Structure ID
Other affected parameters are:
spResult long 4 0 FUNCTION result
Returns: an operating system Error Code. It will be one of:
noErr (0) No error
smEmptySlot (-300) No card in slot.
smCRCFail (-301) CRC check failed.
smFormatErr (-302) FHeader format is not Apple's
smRevisionErr (-303) The revision of the card's declaration ROM is wrong.
smNoDir (-304) Directory offset is NIL
smNosInfoArray (-306) The SDM could not allocate memory for the sInfo
array.
smResrvErr (-307) A reserved field of the declaration ROM was used.
smUnExBusErr (-308) An unexpected bus error occurred.
smBLFieldBad (-309) A valid ByteLanes field was not found.
smDisposePErr (-312) An error occurred during execution of DisposPointer.
smNoBoardSRsrc (-313) There is no board sResource.
smGetPRErr (-314) Error during execution of sGetPRAMRec.
smNoBoardId (-315) There is no board ID.
smInitStatVErr (-316) The InitStatus_V field was negative after Primary or
Secondary Init.
smInitTblVErr (-317) Error while trying to initialize the sResource Table.
smNoJmpTbl (-318) Slot Manager jump table could not be created
smBadBoardId (-319) Board ID was wrong; reinit the PRAM record

Notes: The sp sExecPblk field is presumed to hold a pointer to an sExecBlock
( described in the Card Firmware chapter of Designing Cards and Drivers for
Macintosh II and Macintosh SE), and is passed to the sExec block code in
register A0.