X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=interpreters%2Fgit%2Fgit.h;fp=interpreters%2Fgit%2Fgit.h;h=3a56a44d3ec55c7ef14c88d23c59b05e1e89feaa;hb=147a8cbf17f2b3379277bf7d37cda9866510f16c;hp=0000000000000000000000000000000000000000;hpb=7de488aa6a1709a4d5c59b5ff59862105c1748c5;p=rodin%2Fchimara.git diff --git a/interpreters/git/git.h b/interpreters/git/git.h new file mode 100644 index 0000000..3a56a44 --- /dev/null +++ b/interpreters/git/git.h @@ -0,0 +1,175 @@ +// Main header for git +// $Id: git.h,v 1.32 2004/12/22 12:40:07 iain Exp $ + +#ifndef GIT_H +#define GIT_H + +#include +#include +#include +#include + +#include "version.h" +#include "config.h" + +// Version number formatting + +#define GIT_VERSION_NUM (GIT_MAJOR << 16) \ + | (GIT_MINOR << 8) \ + | (GIT_PATCH) + +#define _str2(s) #s +#define _str(s) _str2(s) + +#if GIT_PATCH == 0 +#define GIT_VERSION_STR \ +_str(GIT_MAJOR) "." _str(GIT_MINOR) +#else +#define GIT_VERSION_STR \ +_str(GIT_MAJOR) "." _str(GIT_MINOR) "." _str(GIT_PATCH) +#endif + +// git.c + +extern void gitWithStream (strid_t stream, + git_uint32 cacheSize, + git_uint32 undoSize); + +extern void git (const git_uint8 * game, + git_uint32 gameSize, + git_uint32 cacheSize, + git_uint32 undoSize); + +extern void fatalError (const char *); + +// memory.c + +#include "memory.h" + +// gestalt.c + +enum IOMode +{ + IO_NULL = 0, + IO_FILTER = 1, + IO_GLK = 2, + IO_MAX +}; + +enum GestaltSelector +{ + GESTALT_SPEC_VERSION = 0, + GESTALT_TERP_VERSION = 1, + GESTALT_RESIZEMEM = 2, + GESTALT_UNDO = 3, + GESTALT_IO_SYSTEM = 4, + GESTALT_UNICODE = 5, + GESTALT_MEM_COPY = 6, + GESTALT_MALLOC = 7, + GESTALT_MALLOC_HEAP = 8, + GESTALT_ACCELERATION = 9, + GESTALT_ACCELFUNC = 10, + + // This special selector returns 1 if the cache control + // opcodes 'git_setcacheram' and 'git_prunecache' are available. + + GESTALT_GIT_CACHE_CONTROL = 0x7940 +}; + +extern git_uint32 gestalt (enum GestaltSelector sel, git_uint32 param); + +// opcodes.c + +extern void parseInstruction (git_uint32 * pc, int * done); + +// operand.c + +typedef enum { reg_L1, reg_L2, reg_L3, reg_L4, reg_L5, reg_L6, reg_L7 } LoadReg; +typedef enum { reg_S1, reg_S2 } StoreReg; +typedef enum { size32, size16, size8 } TransferSize; + +extern git_uint32 parseLoad (git_uint32 * pc, LoadReg reg, int mode, TransferSize, git_sint32 * constVal); +extern void parseStore (git_uint32 * pc, StoreReg reg, int mode, TransferSize); + +extern void parseCallStub (git_uint32 * pc, int mode); +extern void parseCatchStub (git_uint32 * pc, int mode); +extern void parseSaveStub (git_uint32 * pc, int mode); +extern void parseUndoStub (git_uint32 * pc, int mode); + +// compiler.c + +#include "compiler.h" + +// peephole.c + +extern void resetPeepholeOptimiser(); +extern void emitCode (Label); + +// terp.c + +#ifdef USE_DIRECT_THREADING + extern Opcode* gOpcodeTable; +# define labelToOpcode(label) (gOpcodeTable[label]) +#else +# define labelToOpcode(label) label +#endif + +extern git_sint32* gStackPointer; + +extern void startProgram (size_t cacheSize, enum IOMode ioMode); + +// glkop.c + +extern int git_init_dispatch(); +extern glui32 git_perform_glk(glui32 funcnum, glui32 numargs, glui32 *arglist); +extern strid_t git_find_stream_by_id(glui32 id); + +// git_search.c + +extern glui32 git_binary_search(glui32 key, glui32 keysize, + glui32 start, glui32 structsize, glui32 numstructs, + glui32 keyoffset, glui32 options); + +extern glui32 git_linked_search(glui32 key, glui32 keysize, + glui32 start, glui32 keyoffset, glui32 nextoffset, glui32 options); + +extern glui32 git_linear_search(glui32 key, glui32 keysize, + glui32 start, glui32 structsize, glui32 numstructs, + glui32 keyoffset, glui32 options); + +// savefile.c + +extern git_sint32 saveToFile (git_sint32* base, git_sint32 * sp, git_sint32 file); +extern git_sint32 restoreFromFile (git_sint32* base, git_sint32 file, + git_uint32 protectPos, git_uint32 protectSize); + +// saveundo.c + +extern void initUndo (git_uint32 size); +extern void resetUndo (); +extern void shutdownUndo (); + +extern int saveUndo (git_sint32* base, git_sint32* sp); +extern int restoreUndo (git_sint32* base, + git_uint32 protectPos, git_uint32 protectSize); + +// heap.c + +extern glui32 heap_get_start (); +extern glui32 heap_alloc (glui32 len); +extern void heap_free (glui32 addr); +extern int heap_is_active (); +extern void heap_clear (); +extern int heap_get_summary (glui32 *valcount, glui32 **summary); +extern int heap_apply_summary (glui32 valcount, glui32 *summary); + +// accel.c + +typedef glui32 (*acceleration_func)(glui32 argc, glui32 *argv); +extern void init_accel (); +extern acceleration_func accel_find_func (glui32 index); +extern acceleration_func accel_get_func (glui32 addr); +extern void accel_set_func (glui32 index, glui32 addr); +extern void accel_set_param (glui32 index, glui32 val); + +#endif // GIT_H