gtc/ti68k/ide/gtdev-apphdr.h
2018-01-31 14:14:00 +00:00

123 lines
2.9 KiB
C

#define OO_APP_MAGIC (377180989U)
#define OO_HANDLE (0xFF000000u)
#define OO_SYSTEM_FRAME OO_HANDLE
#define MAKE_OO_HANDLE(h) ((h) | OO_HANDLE)
#define OO_GET_HANDLE(h) ((h) & ~OO_HANDLE)
#define IS_OO_HANDLE(h) ((h) > OO_HANDLE)
typedef enum {OO_RW=0, OO_RO=1,
OO_SEQ=0, OO_KEYED=2} OO_Flags;
typedef struct
{
ULONG key;
void *value;
} OO_Attr;
#define pFrame _pFrameX
typedef ULONG pFrame;
typedef int AppID;
typedef struct SFrameHdr
{
pFrame parent;
pFrame prototype;
OO_Flags flags;
ULONG first;
ULONG count;
} OO_Hdr;
typedef struct SFrame
{
OO_Hdr head;
union
{
void *value[65000];
OO_Attr pair[65000];
} attr;
} Frame;
typedef void (* const OO_MethodPtr)(void);
#define STRING_FRAME(name, parent, proto, first, count) \
const OO_Hdr name = \
{ \
(pFrame)parent, \
(pFrame)proto, \
OO_RO | OO_SEQ, \
first, \
count \
}; \
static const char * const name##Attr[count] = \
{
#define FRAME(name, parent, proto, first, count) \
const OO_Hdr name = \
{ \
(pFrame)parent, \
(pFrame)proto, \
OO_RO | OO_KEYED, \
first, \
count \
}; \
static const OO_Attr name##Attr[count] = \
{
#define ATTR(selector, val) {selector, (void *)(val)},
#define STRING_ATTR(sel, s) {OO_FIRST_STRING+(sel), s},
#define ENDFRAME };
#define MAX_APPLET_NAME_SIZE (8)
typedef struct SAppHdr
{
ULONG magic;
UCHAR name[MAX_APPLET_NAME_SIZE];
BYTE zeros[24];
USHORT flags;
ULONG dataLen;
ULONG codeOffset;
ULONG initDataOffset;
ULONG initDataLen;
ULONG optlen;
} AppHdr;
typedef enum {APPHDR_LOCALIZER=0x0001} APPHDR_FLAGS;
typedef void (* APP_EXT_FUNC)(void);
typedef struct SAppExtension
{
unsigned long name;
unsigned long help;
unsigned short index;
} APP_EXTENSION;
typedef struct SAppExtEntry
{
APP_EXT_FUNC extension;
unsigned short flags;
} APP_EXT_ENTRY;
enum {APP_EXT_PROGRAM=0x0000, APP_EXT_FUNCTION=0x0001};
typedef enum
{
ACB_BUILTIN =0x0001,
ACB_INSTALLED =0x0002,
ACB_LOCALIZER =0x0004,
ACB_LOCK =0x0008,
ACB_JT_VERSION=0x0010,
ACB_SELECTED =0x0020,
ACB_COLLAPSE =0x0800,
ACB_BG =0x1000,
ACB_COMPRESS =0x4000,
ACB_DELETE =0x8000
} ACB_Flags;
typedef struct SACB
{
USHORT flags;
AppID myID;
AppID next;
AppID prev;
ULONG publicstorage;
AppHdr const *appHeader;
BYTE const *certhdr;
pFrame appData;
} ACB;
#define MY_ACB(p) ((ACB*)((BYTE*)&(p)-OFFSETOF(ACB,appData)))
#define MY_APP_ID(p) (MY_ACB(p)->myID)
#define OO_FIRST_STRING 2048
#define OO_FIRST_APP_STRING 2048
#define OO_APPSTRING (OO_FIRST_STRING+OO_FIRST_APP_STRING)
#define OO_FIRST_APP_ATTR 0x10000
typedef enum {APP_NONE=0,
APP_INTERACTIVE=1,
APP_CON=2,
APP_ACCESS_SYSVARS=4,
APP_BACKGROUND=8}
APP_Flags;