mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2025-01-06 14:30:37 +00:00
4325cdcc78
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.
135 lines
2.8 KiB
C
135 lines
2.8 KiB
C
/************************************************************
|
|
|
|
Created: Friday, August 2, 1991 at 3:45 PM
|
|
RTLib.h
|
|
C Interface to the Macintosh Libraries
|
|
|
|
|
|
Copyright Apple Computer, Inc. 1990-1991
|
|
All rights reserved
|
|
This file is used in these builds: ROM System
|
|
|
|
|
|
Change History (most recent first):
|
|
|
|
<2> 8/8/91 JL Updated copyright. Standardizing the file to meet ANSI and DSG
|
|
standards.
|
|
|
|
To Do:
|
|
************************************************************/
|
|
|
|
#ifndef __RTLib__
|
|
#define __RTLib__
|
|
|
|
#ifndef __TYPES__
|
|
#include <Types.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Error Codes */
|
|
|
|
enum { eRTNoErr=0, eRTBadVersion=2, eRTInvalidOp=4, eRTInvalidJTPtr=6 };
|
|
|
|
|
|
/* Action Codes */
|
|
|
|
enum { kRTSysErr=0, kRTRetry=1, kRTContinue=2 };
|
|
|
|
|
|
/* Runtime Operations */
|
|
|
|
enum { kRTGetVersion=10, kRTGetVersionA5=11,
|
|
kRTGetJTAddress=12, kRTGetJTAddressA5=13,
|
|
kRTSetPreLoad=14, kRTSetPreLoadA5=15,
|
|
kRTSetSegLoadErr=16, kRTSetSegLoadErrA5=17,
|
|
kRTSetPostLoad=18, kRTSetPostLoadA5=19,
|
|
kRTSetPreUnload=20, kRTSetPreUnloadA5=21,
|
|
kRTPreLaunch=22, kRTPostLaunch=23
|
|
};
|
|
|
|
|
|
/* Version and Jump Table Entry Address Parameters */
|
|
|
|
struct RTGetVersionParam {
|
|
unsigned short fVersion;
|
|
};
|
|
|
|
typedef struct RTGetVersionParam RTGetVersionParam;
|
|
|
|
|
|
struct RTGetJTAddrParam {
|
|
void* fJTAddr;
|
|
void* fCodeAddr;
|
|
};
|
|
|
|
typedef struct RTGetJTAddrParam RTGetJTAddrParam;
|
|
|
|
|
|
/* RTState Definition */
|
|
|
|
struct RTState {
|
|
unsigned short fVersion; /* run-time version */
|
|
void* fSP; /* SP: &-of user return address */
|
|
void* fJTAddr; /* PC: &-of called jump table entry */
|
|
long fRegisters[15]; /* registers D0-D7 and A0-A6 when */
|
|
/* _LoadSeg was called */
|
|
short fSegNo; /* segment number */
|
|
ResType fSegType; /* segment type (normally 'CODE') */
|
|
long fSegSize; /* segment size */
|
|
Boolean fSegInCore; /* true if segment is in memory */
|
|
Boolean fReserved1; /* (reserved for future use) */
|
|
OSErr fOSErr; /* error number */
|
|
long fReserved2; /* (reserved for future use) */
|
|
};
|
|
|
|
typedef struct RTState RTState;
|
|
|
|
|
|
/* Version Definitions */
|
|
|
|
#define kVersion32bit 0xFFFF
|
|
#define kVersion16bit 0x0000
|
|
|
|
|
|
/* User Handler Definition */
|
|
|
|
typedef pascal short (*SegLoadHdlrPtr) (RTState* state);
|
|
|
|
|
|
/* Segment Loader Hook Parameters */
|
|
|
|
struct RTSetSegLoadParam {
|
|
SegLoadHdlrPtr fUserHdlr;
|
|
SegLoadHdlrPtr fOldUserHdlr;
|
|
};
|
|
|
|
typedef struct RTSetSegLoadParam RTSetSegLoadParam;
|
|
|
|
|
|
/* Runtime Parameter Block */
|
|
|
|
struct RTPB {
|
|
short fOperation;
|
|
void* fA5;
|
|
union {
|
|
RTGetVersionParam fVersionParam;
|
|
RTGetJTAddrParam fJTAddrParam;
|
|
RTSetSegLoadParam fSegLoadParam;
|
|
} fRTParam;
|
|
};
|
|
|
|
typedef struct RTPB RTPB;
|
|
|
|
pascal OSErr Runtime (RTPB* runtime_parms);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __RTLib__ */
|
|
|