| /* ------------------------------------------------------------------------- */ | |
| /* Header file for Inform: Infocom game ("Z-code") compiler */ | |
| /* (should be #included in the others) */ | |
| /* */ | |
| /* Inform 5 Revision 5.5 */ | |
| /* */ | |
| /* This header file and the others making up the Inform source code are */ | |
| /* copyright (c) Graham Nelson 1993, 1994, 1995 */ | |
| /* */ | |
| /* Manuals for this language are available from the if-archive at */ | |
| /* ftp.gmd.de. */ | |
| /* For notes on how this program may legally be used, see the Designer's */ | |
| /* Manual introduction. (Any recreational use is fine, and so is some */ | |
| /* commercial use.) There is also a Technical Manual which may be of */ | |
| /* interest to porters and hackers but probably not Inform programmers. */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Our machine for today is... */ | |
| /* */ | |
| /* [ Inform should compile (possibly with warnings) and work safely */ | |
| /* if you just: */ | |
| /* */ | |
| /* #define AMIGA - for the Commodore Amiga under SAS/C */ | |
| /* #define ARCHIMEDES - for the Acorn Archimedes under Norcroft C */ | |
| /* #define ATARIST - for the Atari ST */ | |
| /* #define LINUX - for Linux under gcc (essentially as Unix) */ | |
| /* #define MACINTOSH - for the Apple Mac under Think C or Codewarrior */ | |
| /* #define MAC_68K - for 68K Macs, under Think C or Codewarrior */ | |
| /* #define MAC_MPW - for MPW under Codewarrior (and maybe Think C) */ | |
| /* #define OS2 - for OS/2 32-bit mode under IBM's C Set++ */ | |
| /* #define PC - for 386+ IBM PCs, eg. Microsoft Visual C/C++ */ | |
| /* #define PC_QUICKC - for small IBM PCs under QuickC */ | |
| /* #define UNIX - for Unix under gcc (or big IBM PC under djgpp) */ | |
| /* #define VMS - for VAX or ALPHA under DEC C, but not VAX C */ | |
| /* */ | |
| /* See the notes below. Executables may already be available by ftp.] */ | |
| /* */ | |
| /* (If no machine is defined, then cautious #defines will be made.) */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* The other #definable options (some of them set by the above) are: */ | |
| /* */ | |
| /* USE_TEMPORARY_FILES - use scratch files for workspace, not memory */ | |
| /* PROMPT_INPUT - prompt input (don't use Unix-style command line) */ | |
| /* TIME_UNAVAILABLE - don't use ANSI time routines to work out today's */ | |
| /* date */ | |
| /* US_POINTERS - make some of the checksum routine pointers */ | |
| /* unsigned char *'s, not char *'s: this should be */ | |
| /* used if your compiler does un-ANSI things with */ | |
| /* casts between these types */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Hello, Porter! */ | |
| /* For notes on making a new port of Inform, see the Technical Manual. */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* ARCHIMEDES "port" (the original) */ | |
| /* ...incorporates three Archimedes-only #define'able options: */ | |
| /* */ | |
| /* ARC_PROFILING - do clumsy profiling */ | |
| /* ARC_THROWBACK - compile to be useful under the DDE as well as the */ | |
| /* command line, including throwback of errors into */ | |
| /* !SrcEdit (code donated by Robin Watts) */ | |
| /* GRAHAM - for Graham's machine only */ | |
| /* */ | |
| /* (link with ansilib only, not RISC_OSlib) */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* UNIX port (by Dilip Sequeira): A "vanilla" makefile for gcc is: */ | |
| /* */ | |
| /* OBJECTS = files.o asm.o inputs.o symbols.o zcode.o tables.o inform.o */ | |
| /* express.o */ | |
| /* CC = gcc */ | |
| /* CFLAGS = -O2 -finline-functions -fomit-frame-pointer */ | |
| /* */ | |
| /* inform: $(OBJECTS) */ | |
| /* $(CC) -o inform $(OBJECTS) */ | |
| /* */ | |
| /* $(OBJECTS): header.h Makefile */ | |
| /* */ | |
| /* (making an executable of size about 100K on a SparcStation II). */ | |
| /* The temporary files option is not on by default, but if it is used, */ | |
| /* file names are used which contain the process ID. */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* AMIGA port (by Christopher A. Wichura) */ | |
| /* */ | |
| /* (Because of the way this compiler handles unsigned char *'s the */ | |
| /* #define AMIGA option forces #define US_POINTERS.) */ | |
| /* */ | |
| /* "I am compiling with SAS/C v6.51. To support building a GST file */ | |
| /* (essentially a pre-compiled header file), I had to add the file */ | |
| /* amiheadermaker.c, which I have also included. Finally, I am also */ | |
| /* including a copy of the SCOPTIONS file." */ | |
| /* */ | |
| /* --- BEGIN smakefile --- */ | |
| /* # smake file for Inform, the Infocom compiler */ | |
| /* # created 1/24/94 by Christopher A. Wichura (caw@miroc.chi.il.us) */ | |
| /* */ | |
| /* PROGNAME = Inform */ | |
| /* */ | |
| /* CFLAGS = nostkchk strmerge parms=reg utillib optimize */ | |
| /* LFLAGS = smallcode smalldata stripdebug */ | |
| /* */ | |
| /* HDR = $(PROGNAME).gst */ | |
| /* */ | |
| /* OBJS = asm.o files.o inform.o inputs.o symbols.o tables.o zcode.o */ | |
| /* express.o */ | |
| /* LIBS = LIB:sc.lib LIB:debug.lib LIB:amiga.lib */ | |
| /* */ | |
| /* .c.o */ | |
| /* sc $(CFLAGS) gst=$(HDR) $* */ | |
| /* */ | |
| /* $(PROGNAME): $(OBJS) */ | |
| /* slink with lib:utillib.with <WITH < (withfile.lnk) */ | |
| /* FROM LIB:cres.o $(OBJS) */ | |
| /* TO $(PROGNAME) */ | |
| /* LIB $(LIBS) */ | |
| /* $(LFLAGS) */ | |
| /* MAP $(PROGNAME).map fhlsx plain */ | |
| /* < */ | |
| /* */ | |
| /* # clean target */ | |
| /* clean: */ | |
| /* delete \#?.o $(PROGNAME).gst $(PROGNAME).map */ | |
| /* */ | |
| /* # dependancies of various modules */ | |
| /* $(HDR): header.h */ | |
| /* sc $(CFLAGS) noobjname makegst=$(HDR) amiheadermaker.c */ | |
| /* */ | |
| /* asm.o: asm.c $(HDR) */ | |
| /* */ | |
| /* files.o: files.c $(HDR) */ | |
| /* */ | |
| /* inform.o: inform.c $(HDR) */ | |
| /* */ | |
| /* express.o: express.c $(HDR) */ | |
| /* */ | |
| /* inputs.o: inputs.c $(HDR) */ | |
| /* */ | |
| /* symbols.o: symbols.c $(HDR) */ | |
| /* */ | |
| /* tables.o: tables.c $(HDR) */ | |
| /* */ | |
| /* zcode.o: zcode.c $(HDR) */ | |
| /* */ | |
| /* --- END smakefile --- */ | |
| /* */ | |
| /* --- BEGIN amiheadermaker.c --- */ | |
| /* // file used to build the Amiga GST file. */ | |
| /* #include "header.h" */ | |
| /* */ | |
| /* --- END amiheadermaker.c --- */ | |
| /* */ | |
| /* --- BEGIN SCOPTIONS */ | |
| /* MemorySize=HUGE */ | |
| /* IncludeDir=SINCLUDE: */ | |
| /* OptimizerComplexity=15 */ | |
| /* OptimizerDepth=5 */ | |
| /* OptimizerRecurDepth=15 */ | |
| /* OptimizerSchedule */ | |
| /* OptimizerInLocal */ | |
| /* Verbose */ | |
| /* --- END SCOPTIONS */ | |
| /* */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Microsoft Visual C/C++ port (for the PC) (by Toby Nelson) */ | |
| /* */ | |
| /* "The following makefile is for the "Microsoft Visual C++ V1.00" */ | |
| /* development environment, of which the important bit is the "Microsoft */ | |
| /* C/C++ Optimizing Compiler Version 8.00". It may well work for previous */ | |
| /* versions of the compiler too. */ | |
| /* */ | |
| /* CFLAGS = /nologo /Ox /W0 /AL */ | |
| /* goal: inform.exe */ | |
| /* */ | |
| /* .obj: .c */ | |
| /* cl *.c */ | |
| /* */ | |
| /* inform.exe: asm.obj files.obj inform.obj inputs.obj symbols.obj \ */ | |
| /* tables.obj zcode.obj express.obj */ | |
| /* link /STACK:16384 asm files inform inputs symbols tables \ */ | |
| /* zcode express, inform.exe,,llibce.lib,, */ | |
| /* */ | |
| /* (NB: The compiler options used here are: */ | |
| /* */ | |
| /* /nologo = no copyright message, */ | |
| /* /Ox = optimize for speed, */ | |
| /* /W0 = turn off all compiler warnings, and */ | |
| /* /AL = compile for the large memory model.)" */ | |
| /* */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Quick C port (for the PC) (by Bob Newell): Makefile... */ | |
| /* */ | |
| /* CFLAGS = /DPC_QUICKC /AL /DJ */ | |
| /* CC = qcl */ | |
| /* */ | |
| /* inform.exe: asm.obj files.obj inform.obj inputs.obj symbols.obj \ */ | |
| /* tables.obj zcode.obj express.obj */ | |
| /* qlink /STACK:16384 asm.obj files.obj inform.obj inputs.obj \ */ | |
| /* symbols.obj tables.obj zcode.obj express.obj, inform.exe,, \ */ | |
| /* llibce.lib,, */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Atari ST port (by Charles Briscoe-Smith): Makefile... */ | |
| /* */ | |
| /* OBJS = files.o asm.o inputs.o symbols.o zcode.o tables.o inform.o */ | |
| /* express.o */ | |
| /* */ | |
| /* CC = gcc */ | |
| /* */ | |
| /* # I didn't use the optimisation flags, because of memory shortage. */ | |
| /* # If you have enough memory, try uncommenting the "CFLAGS=" line. */ | |
| /* */ | |
| /* #CFLAGS = -O2 -finline-functions -fomit-frame-pointer */ | |
| /* */ | |
| /* inform.ttp : $(OBJS) */ | |
| /* $(CC) $(CFLAGS) -o inform.ttp $(OBJS) */ | |
| /* */ | |
| /* $(OBJS): header.h */ | |
| /* */ | |
| /* This port contains a TOSFS option: if defined, then temporary files are */ | |
| /* named in DOS style, and if not then in Unix style (in any case, this */ | |
| /* only matters if USE_TEMPORARY_FILES is set). */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* OS/2 port (by John W. Kennedy): */ | |
| /* */ | |
| /* "The program compiles and runs correctly as-is... I found it convenient */ | |
| /* to create a dummy h.version file, to prevent problems with makemake. */ | |
| /* Since the file is not actually used, the contents don't matter... */ | |
| /* ...it can be assumed that later this year it [Inform] will port */ | |
| /* successfully to WorkPlace OS on the PowerPC, as well." */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Makefile for Linux (by Spedge, aka Dark Mage) */ | |
| /* */ | |
| /* CC = gcc */ | |
| /* CFLAGS = -Dlinux */ | |
| /* LDFLAGS = */ | |
| /* LIBS = */ | |
| /* */ | |
| /* PROG = inform */ | |
| /* SUBDIRS = data */ | |
| /* BINDIR = /usr/local/games/infocom */ | |
| /* DATADIR = /usr/local/games/infocom/data */ | |
| /* MANDIR = /usr/local/man/man1 */ | |
| /* INSTALL = install */ | |
| /* RM = rm */ | |
| /* CD = cd */ | |
| /* CP = cp */ | |
| /* */ | |
| /* INC = header.h */ | |
| /* OBJS = inform.o asm.o inputs.o files.o symbols.o tables.o zcode.o */ | |
| /* express.o */ | |
| /* */ | |
| /* all: $(PROG) */ | |
| /* */ | |
| /* inform : $(OBJS) */ | |
| /* $(CC) -o $(PROG) $(LDFLAGS) $(OBJS) $(LIBS) */ | |
| /* */ | |
| /* $(OBJS) : $(INC) */ | |
| /* */ | |
| /* install: $(PROG) */ | |
| /* $(INSTALL) $(PROG) $(BINDIR) */ | |
| /* @for d in $(SUBDIRS); do (cd $$d && $(MAKE) install) || exit; done */ | |
| /* */ | |
| /* install.man: */ | |
| /* $(CP) $(PROG).1 $(MANDIR) */ | |
| /* */ | |
| /* clean : */ | |
| /* $(RM) -f *.o $(PROG) */ | |
| /* */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Apple Macintosh port (by Robert Pelak): */ | |
| /* */ | |
| /* A working version of Inform can be produced using either THINK C */ | |
| /* or Codewarrior. Inform will need to use a console package (the */ | |
| /* THINK C console or Sioux are adequate) for input and output, but */ | |
| /* these are usually added automatically. In older versions of THINK */ | |
| /* C, FAR DATA needs to be selected before compilation. Also, I've */ | |
| /* experienced some difficulty with one set of pointers when working */ | |
| /* under THINK C; you can correct for this by issuing a */ | |
| /* */ | |
| /* #define MAC_68K */ | |
| /* */ | |
| /* just after #define MACINTOSH. */ | |
| /* */ | |
| /* (Defining the MAC_FACE option as well provides compatibility with */ | |
| /* Robert's Inform front-end - GN.) */ | |
| /* */ | |
| /* For support for the Macintosh Programmer's Workshop (added by Robert */ | |
| /* Stone), #define MAC_MPW. */ | |
| /* */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* VMS port (VAX or ALPHA, DEC C only) (by David Wagner): */ | |
| /* */ | |
| /* Compile all the .c files, and link. */ | |
| /* To run, define a foreign symbol: */ | |
| /* */ | |
| /* $ INFORM :== $disk:[directory]INFORM.EXE */ | |
| /* */ | |
| /* then, e.g., */ | |
| /* */ | |
| /* $ INFORM -dx shell */ | |
| /* */ | |
| /* (Enclose the options in quotes if some are in upper case) */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* */ | |
| /* The modification history and source code map have been moved to the */ | |
| /* Technical Manual. */ | |
| /* */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* By setting up the prefixes and extensions in the definitions below, you */ | |
| /* should be able to get something sensible for your filing system. */ | |
| /* In the last resort, the clumsy "z3", "z5" etc prefixes below are chosen */ | |
| /* to cause least offense to different filing systems. */ | |
| /* Note that if both Code_Prefix and Code_Extension are empty, then Inform */ | |
| /* may overwrite its source code with the object code... so don't allow */ | |
| /* this. */ | |
| /* (For Unix and PCs the extension is ".z3" or ".z5" rather than ".zip" */ | |
| /* to avoid looking like the file compression trailer...) */ | |
| /* */ | |
| /* ------------------------------------------------------------------------- */ | |
| extern int _fmapstore(char *); | |
| extern char Temp1_Name[], Temp2_Name[]; | |
| /* Added on advice of Brendon Wyber: */ | |
| extern char *Temp1_Name, *Temp2_Name; | |
| extern char Temp1_Name[], Temp2_Name[]; | |
| char Temp1_Name[50], Temp2_Name[50]; | |
| extern char *Transcript_Name; | |
| extern char *Debugging_Name; | |
| /* Default settings: */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Inclusions and some macro definitions... */ | |
| /* (At this point in earlier releases, there were many #define's for */ | |
| /* memory limits and sizes of arrays: see "files" for the new code.) */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Twisting the C compiler's arm to get a convenient 32-bit integer type */ | |
| /* Warning: chars are presumed unsigned in this code, which I think is */ | |
| /* ANSI std; but they were presumed signed by K&R, so confusion reigns. */ | |
| /* Anyway a compiler ought to be able to cast either way as needed. */ | |
| /* Subtracting pointers is in a macro here for convenience: if even 32 bit */ | |
| /* ints won't reliably hold pointers on your machine, rewrite properly */ | |
| /* using ptrdiff_t */ | |
| /* ------------------------------------------------------------------------- */ | |
| typedef signed char int32; | |
| typedef unsigned char uint32; | |
| typedef signed short int int32; | |
| typedef unsigned short int uint32; | |
| typedef signed int int32; | |
| typedef unsigned int uint32; | |
| typedef signed long int int32; | |
| typedef unsigned long int uint32; | |
| typedef int int32; | |
| typedef unsigned int uint32; | |
| void _huge * halloc(long, size_t); | |
| void hfree(void *); | |
| typedef unsigned char zip; | |
| typedef char zip; | |
| extern int BUFFER_LENGTH; | |
| extern int MAX_QTEXT_SIZE; | |
| extern int MAX_SYMBOLS; | |
| extern int MAX_BANK_SIZE; | |
| extern int SYMBOLS_CHUNK_SIZE; | |
| extern int BANK_CHUNK_SIZE; | |
| extern int HASH_TAB_SIZE; | |
| extern int MAX_OBJECTS; | |
| extern int MAX_ACTIONS; | |
| extern int MAX_ADJECTIVES; | |
| extern int MAX_DICT_ENTRIES; | |
| extern int MAX_STATIC_DATA; | |
| extern int MAX_TOKENS; | |
| extern int MAX_OLDEPTH; | |
| extern int MAX_ROUTINES; | |
| extern int MAX_GCONSTANTS; | |
| extern int MAX_PROP_TABLE_SIZE; | |
| extern int MAX_FORWARD_REFS; | |
| extern int STACK_SIZE; | |
| extern int STACK_LONG_SLOTS; | |
| extern int STACK_SHORT_LENGTH; | |
| extern int MAX_ABBREVS; | |
| extern int MAX_EXPRESSION_NODES; | |
| extern int MAX_VERBS; | |
| extern int MAX_VERBSPACE; | |
| extern int32 MAX_STATIC_STRINGS; | |
| extern int32 MAX_ZCODE_SIZE; | |
| extern int MAX_LOW_STRINGS; | |
| extern int32 MAX_TRANSCRIPT_SIZE; | |
| extern int MAX_CLASSES; | |
| extern int MAX_CLASS_TABLE_SIZE; | |
| /* ------------------------------------------------------------------------- */ | |
| /* If your compiler doesn't recognise \t, and you use ASCII, you could */ | |
| /* define T_C as (char) 9; failing that, it _must_ be defined as a space */ | |
| /* and is _not_ allowed to be 0 or any recognisable character. */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* This hideous line is here only for checking on my machine that Inform */ | |
| /* runs properly when int is 16-bit */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* #define int short int */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Structure definitions (there are a few others local to files) */ | |
| /* ------------------------------------------------------------------------- */ | |
| typedef struct sourcefile | |
| { FILE *handle; | |
| char filename[64]; | |
| int source_line; | |
| int sys_flag; | |
| int file_no; | |
| int32 chars_read; | |
| int32 line_start; | |
| } Sourcefile; | |
| typedef struct opcode | |
| { zip *name; | |
| int code; | |
| int32 offset; | |
| int type1, type2, no; | |
| } opcode; | |
| typedef struct operand_t | |
| { int32 value; int type; | |
| } operand_t; | |
| typedef struct verbl { | |
| unsigned char e[8]; | |
| } verbl; | |
| typedef struct verbt { | |
| int lines; | |
| verbl l[MAX_LINES_PER_VERB]; | |
| } verbt; | |
| typedef struct prop { | |
| unsigned char l, num, p[64]; | |
| } prop; | |
| typedef struct propt { | |
| char l; | |
| prop pp[32]; | |
| } propt; | |
| typedef struct fpropt { | |
| unsigned char atts[6]; | |
| char l; | |
| prop pp[32]; | |
| } fpropt; | |
| typedef struct objectt { | |
| unsigned char atts[6]; | |
| int parent, next, child; | |
| int propsize; | |
| } objectt; | |
| typedef struct dict_word { | |
| unsigned char b[6]; | |
| } dict_word; | |
| typedef struct dbgl_s | |
| { int b1, b2, b3; | |
| } dbgl; | |
| /* ------------------------------------------------------------------------- */ | |
| /* Opcode type definitions */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Inform code definitions */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Useful macros */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* ------------------------------------------------------------------------- */ | |
| /* Initialisation extern definitions */ | |
| /* ------------------------------------------------------------------------- */ | |
| extern void init_inform_vars(void); | |
| extern void init_express_vars(void); | |
| extern void init_zcode_vars(void); | |
| extern void zcode_free_arrays(void); | |
| extern void init_files_vars(void); | |
| extern void init_symbols_vars(void); | |
| extern void init_inputs_vars(void); | |
| extern void init_tables_vars(void); | |
| extern void init_asm_vars(void); | |
| /* ------------------------------------------------------------------------- */ | |
| /* Extern definitions for "inform" */ | |
| /* ------------------------------------------------------------------------- */ | |
| extern int *abbrev_values; | |
| extern int *abbrev_quality; | |
| extern int *abbrev_freqs; | |
| extern int abbrev_values[]; | |
| extern int abbrev_quality[]; | |
| extern int abbrev_freqs[]; | |
| extern int | |
| version_number, override_version, | |
| no_abbrevs, no_routines, no_symbols, | |
| no_errors, no_warnings, endofpass_flag, | |
| no_dummy_labels, | |
| pass_number, brace_sp, no_locals, | |
| process_filename_flag, actual_version; | |
| extern int32 scale_factor; | |
| extern int | |
| statistics_mode, offsets_mode, tracing_mode, | |
| ignoreswitches_mode, bothpasses_mode, hash_mode, | |
| percentages_mode, trace_mode, ltrace_mode, | |
| etrace_mode, listing_mode, concise_mode, | |
| nowarnings_mode, frequencies_mode, ignoring_mode, | |
| double_spaced, economy_mode, memout_mode, | |
| transcript_mode, optimise_mode, store_the_text, | |
| abbrev_mode, memory_map_mode, withdebug_mode, | |
| listobjects_mode, printprops_mode, debugging_file, | |
| obsolete_mode, extend_memory_map; | |
| extern int error_format; | |
| extern zip | |
| *zcode, *zcode_p, *utf_zcode_p, | |
| *symbols_p, *symbols_top, | |
| *strings, *strings_p, | |
| *low_strings, *low_strings_p, | |
| *dictionary, *dict_p, | |
| *output_p, *abbreviations_at; | |
| extern char *all_text, *all_text_p; | |
| extern char *buffer, *sub_buffer, *parse_buffer, *rewrite; | |
| extern char buffer[], sub_buffer[], parse_buffer[], rewrite[]; | |
| extern int32 Write_Code_At, Write_Strings_At; | |
| extern int32 | |
| code_offset, | |
| actions_offset, | |
| preactions_offset, | |
| dictionary_offset, | |
| adjectives_offset, | |
| variables_offset, | |
| strings_offset; | |
| extern int32 Out_Size; | |
| extern void make_lower_case(char *str); | |
| extern void make_upper_case(char *str); | |
| extern void free_remaining_arrays(void); | |
| extern void switches(char *, int); | |
| extern int call_for_br_flag; | |
| extern void compile_box_routine(void); | |
| extern int inform_main(char *, char *, char *, char *); | |
| extern jmp_buf mac_env; | |
| /* ------------------------------------------------------------------------- */ | |
| /* Extern definitions for Archimedes DDE throwback (see above) */ | |
| /* ------------------------------------------------------------------------- */ | |
| extern void throwback(int severity, char * error); | |
| extern void throwback_start(void); | |
| extern void throwback_end(void); | |
| extern int throwbackflag; | |
| /* ------------------------------------------------------------------------- */ | |
| /* Extern definitions for "express" */ | |
| /* ------------------------------------------------------------------------- */ | |
| extern int next_token, void_context, condition_context, | |
| assign_context, lines_compiled; | |
| extern char condition_label[]; | |
| extern int replace_sf(char *b); | |
| extern void express_allocate_arrays(void); | |
| extern void express_free_arrays(void); | |
| extern int expression(int fromword); | |
| extern void assignment(int from, int flag); | |
| /* ------------------------------------------------------------------------- */ | |
| /* Extern definitions for "zcode" */ | |
| /* ------------------------------------------------------------------------- */ | |
| extern int almade_flag; | |
| extern int32 total_chars_trans, total_bytes_trans, trans_length; | |
| extern const char *alphabet[]; | |
| extern int chars_lookup[]; | |
| extern int translate_to_ascii(char c); | |
| extern void make_lookup(void); | |
| extern void make_abbrevs_lookup(void); | |
| extern zip *translate_text(zip *p, char *s_text); | |
| extern opcode opcs(int32 i); | |
| extern void stockup_symbols(void); | |
| extern void optimise_abbreviations(void); | |
| /* ------------------------------------------------------------------------- */ | |
| /* Extern definitions for "files" */ | |
| /* ------------------------------------------------------------------------- */ | |
| extern int override_error_line, total_files_read, input_file; | |
| extern int32 malloced_bytes; | |
| extern char Code_Name[]; | |
| extern FILE *Temp1_fp, *Temp2_fp; | |
| extern int debug_pass; | |
| extern int total_sl_count; | |
| extern int include_path_set; | |
| extern char include_path[]; | |
| extern void *my_malloc(int32 size, char *whatfor); | |
| extern void *my_calloc(int32 size, int32 howmany, char *whatfor); | |
| extern void my_free(void *pointer, char *whatitwas); | |
| extern void fatalerror(char *s); | |
| extern void memoryerror(char *s, int32 size); | |
| extern void open_temporary_files(void); | |
| extern void check_temp_files(void); | |
| extern void remove_temp_files(void); | |
| extern void open_debug_file(void); | |
| extern void write_debug_byte(int i); | |
| extern void keep_chars_read(void); | |
| extern void write_chars_read(void); | |
| extern void make_debug_linenum(void); | |
| extern void keep_debug_linenum(void); | |
| extern void write_debug_linenum(void); | |
| extern void write_kept_linenum(void); | |
| extern void keep_routine_linenum(void); | |
| extern void write_routine_linenum(void); | |
| extern void keep_re_linenum(void); | |
| extern void write_re_linenum(void); | |
| extern void write_debug_address(int32 i); | |
| extern void write_present_linenum(void); | |
| extern void write_dbgl(dbgl x); | |
| extern void write_debug_string(char *s); | |
| extern void close_debug_file(void); | |
| extern void print_error_line(void); | |
| extern int file_end(int32 marker); | |
| extern int file_char(int32 marker); | |
| extern void add_to_checksum(void *address); | |
| extern int current_source_line(void); | |
| extern void load_sourcefile(char *story_name, int style); | |
| extern void close_all_source(void); | |
| extern void advance_line(void); | |
| extern void output_file(void); | |
| extern void declare_systemfile(void); | |
| extern int is_systemfile(void); | |
| extern void set_memory_sizes(int size_flag); | |
| extern void memory_command(char *command); | |
| extern char tname_pre[]; | |
| /* ------------------------------------------------------------------------- */ | |
| /* Extern definitions for "symbols" */ | |
| /* ------------------------------------------------------------------------- */ | |
| extern int routine_starts_line, used_local_variable[]; | |
| extern zip *local_varname[]; | |
| extern int32 svals[]; | |
| extern char stypes[]; | |
| extern signed char stypes[]; | |
| extern int32 *svals; | |
| extern char *stypes; | |
| extern signed char *stypes; | |
| extern void symbols_allocate_arrays(void); | |
| extern void symbols_free_arrays(void); | |
| extern void init_symbol_banks(void); | |
| extern void prim_new_symbol(char *p, int32 value, int type, int bank); | |
| extern void new_symbol(char *p, int32 value, int type); | |
| extern int prim_find_symbol(char *q, int bank); | |
| extern int find_symbol(char *q); | |
| extern int local_find_symbol(char *q); | |
| extern void new_symbol(char *p, int32 value, int type); | |
| extern void list_symbols(void); | |
| extern void lose_local_symbols(void); | |
| /* ------------------------------------------------------------------------- */ | |
| /* Extern definitions for "inputs" */ | |
| /* ------------------------------------------------------------------------- */ | |
| extern char *tokens; | |
| extern char *forerrors_buff; | |
| extern int forerrors_line; | |
| extern int total_source_line, internal_line; | |
| extern int32 marker_in_file; | |
| extern void inputs_allocate_arrays(void); | |
| extern void inputs_free_arrays(void); | |
| extern void input_begin_pass(void); | |
| extern void dequote_text(char *b1); | |
| extern void word(char *b1, int32 w); | |
| extern int word_token(int w); | |
| extern void textword(char *b1, int w); | |
| extern void no_such_label(char *lname); | |
| extern void warning(char *s); | |
| extern void warning_named(char *s1, char *s2); | |
| extern void obsolete_warning(char *s1); | |
| extern void error(char *s); | |
| extern void error_named(char *s1, char *s2); | |
| extern void stack_create(void); | |
| extern void stack_line(char *p); | |
| extern int get_next_line(void); | |
| extern void tokenise_line(void); | |
| extern void make_s_grid(void); | |
| /* ------------------------------------------------------------------------- */ | |
| /* Extern definitions for "tables" */ | |
| /* ------------------------------------------------------------------------- */ | |
| extern int no_attributes, no_properties, no_globals, max_no_objects, | |
| no_fake_actions; | |
| extern int dict_entries; | |
| extern int release_number, statusline_flag; | |
| extern int time_set; | |
| extern int resobj_flag; | |
| extern char time_given[]; | |
| extern int globals_size, properties_size; | |
| extern int32 prop_defaults[]; | |
| extern int prop_longflag[]; | |
| extern int prop_additive[]; | |
| extern char *properties_table; | |
| extern int doing_table_mode; | |
| extern void tables_allocate_arrays(void); | |
| extern void tables_free_arrays(void); | |
| extern void tables_begin_pass(void); | |
| extern int dictionary_find(char *dword, int scope); | |
| extern int dictionary_add(char *dword, int x, int y, int z); | |
| extern int find_action(int32 addr); | |
| extern void new_action(char *name, int code); | |
| extern void make_global(char *b, int array_flag); | |
| extern void assemble_table(char *b, int word_from); | |
| extern void check_globals(void); | |
| extern void make_object(char *b, int flag); | |
| extern void make_class(char *b); | |
| extern void resume_object(char *b, int j); | |
| extern void finish_object(void); | |
| extern void make_verb(char *b); | |
| extern void extend_verb(char *b); | |
| extern void list_object_tree(void); | |
| extern void list_verb_table(void); | |
| extern void show_dictionary(void); | |
| extern void construct_storyfile(void); | |
| /* ------------------------------------------------------------------------- */ | |
| /* Extern definitions for "asm" */ | |
| /* ------------------------------------------------------------------------- */ | |
| extern int no_stubbed; | |
| extern int in_routine_flag; | |
| extern int ignoring_routine; | |
| extern int a_from_one; | |
| extern int line_done_flag; | |
| extern int return_flag; | |
| extern void asm_allocate_arrays(void); | |
| extern void asm_free_arrays(void); | |
| extern int32 constant_value(char *b); | |
| extern void args_begin_pass(void); | |
| extern int assemble_opcode(char *b, int32 offset, int internal_code); | |
| extern void assemble_label(int32 offset, char *b); | |
| extern void assemble_directive(char *b, int32 offset, int32 code); | |
Xet Storage Details
- Size:
- 53.7 kB
- Xet hash:
- 8f940a274b69266ced6d81de9f4a915ef1273958fe069d7dcd573758cdeb4e0d
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.