X-Git-Url: https://jxself.org/git/?p=inform.git;a=blobdiff_plain;f=src%2Fheader.h;fp=src%2Fheader.h;h=5094c812f316eb086c983e6375d24ffdd7c1145f;hp=d92e0f54cc11b1295c0b3563857957260e9e98be;hb=ee3b3a0cb830792c0569230872a0af20eab8bb7b;hpb=8e63120c630c94c598d4e2d6ba823dac59bce8fa diff --git a/src/header.h b/src/header.h index d92e0f5..5094c81 100644 --- a/src/header.h +++ b/src/header.h @@ -1,7 +1,7 @@ /* ------------------------------------------------------------------------- */ /* Header file for Inform: Z-machine ("Infocom" format) compiler */ /* */ -/* Inform 6.40 */ +/* Inform 6.41 */ /* */ /* This header file and the others making up the Inform source code are */ /* copyright (c) Graham Nelson 1993 - 2022 */ @@ -34,10 +34,9 @@ /* ------------------------------------------------------------------------- */ /* For releases, set to the release date in the form "1st January 2000" */ -#define RELEASE_DATE "in development" -#define RELEASE_NUMBER 1640 +#define RELEASE_DATE "22nd July 2022" +#define RELEASE_NUMBER 1641 #define GLULX_RELEASE_NUMBER 38 -#define MODULE_VERSION_NUMBER 1 #define VNUMBER RELEASE_NUMBER /* N indicates an intermediate release for Inform 7 */ @@ -424,9 +423,6 @@ #ifndef GlulxCode_Extension #define GlulxCode_Extension ".ulx" #endif -#ifndef Module_Extension -#define Module_Extension ".m5" -#endif #ifndef ICL_Extension #define ICL_Extension ".icl" #endif @@ -442,7 +438,6 @@ #define V7Code_Extension "" #define V8Code_Extension "" #define GlulxCode_Extension "" -#define Module_Extension "" #define ICL_Extension "" #endif @@ -456,9 +451,6 @@ #ifndef Code_Directory #define Code_Directory "games" #endif -#ifndef Module_Directory -#define Module_Directory "modules" -#endif #ifndef ICL_Directory #define ICL_Directory "" #endif @@ -474,9 +466,6 @@ #ifndef Code_Directory #define Code_Directory "" #endif -#ifndef Module_Directory -#define Module_Directory "" -#endif #ifndef ICL_Directory #define ICL_Directory "" #endif @@ -820,7 +809,7 @@ typedef struct debug_location_beginning_s int32 orig_beg_char_number; } debug_location_beginning; -#define MAX_KEYWORD_GROUP_SIZE (119) +#define MAX_KEYWORD_GROUP_SIZE (159) typedef struct keyword_group_s { char *keywords[MAX_KEYWORD_GROUP_SIZE+1]; /* empty-string-terminated */ @@ -1008,6 +997,7 @@ typedef struct operator_s /* ------------------------------------------------------------------------- */ /* Internal numbers representing assemble-able Z-opcodes */ +/* (Must match opcodes_table_z[] and opcode_list_z[]) */ /* ------------------------------------------------------------------------- */ #define je_zc 0 @@ -1132,6 +1122,10 @@ typedef struct operator_s /* ------------------------------------------------------------------------- */ /* Internal numbers representing assemble-able Glulx opcodes */ +/* (Must match opcodes_table_g[] and opcode_list_g[]) */ +/* */ +/* This is not a complete list. It only needs to include opcodes that are */ +/* directly created by the compiler or listed in the operator tables. */ /* ------------------------------------------------------------------------- */ #define nop_gc 0 @@ -1221,35 +1215,6 @@ typedef struct operator_s #define mfree_gc 84 #define accelfunc_gc 85 #define accelparam_gc 86 -#define numtof_gc 87 -#define ftonumz_gc 88 -#define ftonumn_gc 89 -#define ceil_gc 90 -#define floor_gc 91 -#define fadd_gc 92 -#define fsub_gc 93 -#define fmul_gc 94 -#define fdiv_gc 95 -#define fmod_gc 96 -#define sqrt_gc 97 -#define exp_gc 98 -#define log_gc 99 -#define pow_gc 100 -#define sin_gc 101 -#define cos_gc 102 -#define tan_gc 103 -#define asin_gc 104 -#define acos_gc 105 -#define atan_gc 106 -#define atan2_gc 107 -#define jfeq_gc 108 -#define jfne_gc 109 -#define jflt_gc 110 -#define jfle_gc 111 -#define jfgt_gc 112 -#define jfge_gc 113 -#define jisnan_gc 114 -#define jisinf_gc 115 /* ------------------------------------------------------------------------- */ /* Index numbers into the keyword group "opcode_macros_g" (see "lexer.c") */ @@ -1257,6 +1222,8 @@ typedef struct operator_s #define pull_gm 0 #define push_gm 1 +#define dload_gm 2 +#define dstore_gm 3 #define SYMBOL_TT 0 /* value = index in symbol table */ @@ -1941,7 +1908,8 @@ typedef struct operator_s #define MAIN_MV 10 /* "Main" routine */ #define SYMBOL_MV 11 /* Forward ref to unassigned symbol */ -/* Additional marker values used in module backpatch areas: */ +/* Additional marker values used in module backpatch areas (most are + obsolete). */ /* (In Glulx, OBJECT_MV and VARIABLE_MV are used in backpatching, even without modules.) */ @@ -1955,24 +1923,16 @@ typedef struct operator_s #define LARGEST_BPATCH_MV 17 /* Larger marker values are never written to backpatch tables */ -/* Value indicating an imported symbol record: */ - -#define IMPORT_MV 32 - -/* Values indicating an exported symbol record: */ - -#define EXPORT_MV 33 /* Defined ordinarily */ -#define EXPORTSF_MV 34 /* Defined in a system file */ -#define EXPORTAC_MV 35 /* Action name */ +/* Values 32-35 were used only for module import/export. */ /* Values used only in branch backpatching: */ -/* ###-I've rearranged these, so that BRANCH_MV can be last; Glulx uses the - whole range from BRANCH_MV to BRANCHMAX_MV. */ +/* BRANCH_MV must be last; Glulx uses the whole range from BRANCH_MV + to BRANCHMAX_MV. */ #define LABEL_MV 36 /* Ditto: marks "jump" operands */ #define DELETED_MV 37 /* Ditto: marks bytes deleted from code */ #define BRANCH_MV 38 /* Used in "asm.c" for routine coding */ -#define BRANCHMAX_MV 58 /* In fact, the range BRANCH_MV to +#define BRANCHMAX_MV 102 /* In fact, the range BRANCH_MV to BRANCHMAX_MV all means the same thing. The position within the range means how far back from the label to go @@ -2045,7 +2005,6 @@ extern void init_expressp_vars(void); /* expressp: parse expressions */ extern void init_files_vars(void); /* files: handle files */ /* void init_vars(void); inform: decide what to do */ extern void init_lexer_vars(void); /* lexer: lexically analyse source */ -extern void init_linker_vars(void); /* linker: link in pre-compiled module */ extern void init_memory_vars(void); /* memory: manage memory settings */ extern void init_objects_vars(void); /* objects: cultivate object tree */ extern void init_states_vars(void); /* states: translate statements to code*/ @@ -2070,7 +2029,6 @@ extern void expressp_begin_pass(void); extern void files_begin_pass(void); /* void begin_pass(void); */ extern void lexer_begin_pass(void); -extern void linker_begin_pass(void); extern void memory_begin_pass(void); extern void objects_begin_pass(void); extern void states_begin_pass(void); @@ -2082,7 +2040,6 @@ extern void veneer_begin_pass(void); extern void verbs_begin_pass(void); extern void lexer_endpass(void); -extern void linker_endpass(void); extern void arrays_allocate_arrays(void); extern void asm_allocate_arrays(void); @@ -2095,7 +2052,6 @@ extern void expressp_allocate_arrays(void); extern void files_allocate_arrays(void); /* void allocate_arrays(void); */ extern void lexer_allocate_arrays(void); -extern void linker_allocate_arrays(void); extern void memory_allocate_arrays(void); extern void objects_allocate_arrays(void); extern void states_allocate_arrays(void); @@ -2117,7 +2073,6 @@ extern void expressp_free_arrays(void); extern void files_free_arrays(void); /* void free_arrays(void); */ extern void lexer_free_arrays(void); -extern void linker_free_arrays(void); extern void memory_free_arrays(void); extern void objects_free_arrays(void); extern void states_free_arrays(void); @@ -2146,8 +2101,9 @@ extern memory_list static_array_area_memlist; extern int32 *global_initial_value; extern arrayinfo *arrays; -extern void make_global(int array_flag, int name_only); +extern void make_global(void); extern void set_variable_value(int i, int32 v); +extern void make_array(void); extern void check_globals(void); extern int32 begin_table_array(void); extern int32 begin_word_array(void); @@ -2166,7 +2122,7 @@ extern int32 no_instructions; extern int sequence_point_follows; extern int uses_unicode_features, uses_memheap_features, uses_acceleration_features, uses_float_features, - uses_extundo_features; + uses_extundo_features, uses_double_features; extern debug_location statement_debug_location; extern int execution_never_reaches_here; extern variableinfo *variables; @@ -2291,6 +2247,8 @@ extern int32 zcode_backpatch_size, staticarray_backpatch_size, zmachine_backpatch_size; extern int backpatch_marker, backpatch_error_flag; +extern char *describe_mv(int mval); + extern int32 backpatch_value(int32 value); extern void backpatch_zmachine_image_z(void); extern void backpatch_zmachine_image_g(void); @@ -2344,8 +2302,7 @@ extern int parse_given_directive(int internal_flag); #define FORERRORS_SIZE (512) extern char *forerrors_buff; extern int forerrors_pointer; -extern int no_errors, no_warnings, no_suppressed_warnings, - no_link_errors, no_compiler_errors; +extern int no_errors, no_warnings, no_suppressed_warnings, no_compiler_errors; extern ErrorPosition ErrorReport; @@ -2370,8 +2327,6 @@ extern void symtype_warning(char *context, char *name, char *type, char *wanttyp extern void dbnu_warning(char *type, char *name, brief_location report_line); extern void uncalled_routine_warning(char *type, char *name, brief_location report_line); extern void obsolete_warning(char *s1); -extern void link_error(char *s); -extern void link_error_named(char *s1, char *s2); extern int compiler_error(char *s); extern int compiler_error_named(char *s1, char *s2); extern void print_sorry_message(void); @@ -2486,8 +2441,7 @@ extern int WORDSIZE, INDIV_PROP_START, OBJECT_BYTE_LENGTH, DICT_ENTRY_BYTE_LENGTH, DICT_ENTRY_FLAG_POS; extern int32 MAXINTWORD; -extern int asm_trace_level, expr_trace_level, - linker_trace_level, tokens_trace_level; +extern int asm_trace_level, expr_trace_level, tokens_trace_level; extern int concise_switch, @@ -2498,8 +2452,8 @@ extern int obsolete_switch, optabbrevs_trace_setting, transcript_switch, statistics_switch, optimise_switch, version_set_switch, nowarnings_switch, hash_switch, - memory_map_setting, module_switch, - define_DEBUG_switch, define_USE_MODULES_switch, define_INFIX_switch, + memory_map_setting, + define_DEBUG_switch, define_INFIX_switch, runtime_error_checking_switch, list_verbs_setting, list_dict_setting, list_objects_setting, list_symbols_setting; @@ -2510,7 +2464,7 @@ extern int glulx_mode, compression_switch; extern int32 requested_glulx_version; extern int error_format, store_the_text, asm_trace_setting, - expr_trace_setting, linker_trace_setting, tokens_trace_setting, + expr_trace_setting, tokens_trace_setting, bpatch_trace_setting, symdef_trace_setting, double_space_setting, trace_fns_setting, character_set_setting, character_set_unicode; @@ -2527,8 +2481,6 @@ extern void switches(char *, int); extern int translate_in_filename(int last_value, char *new_name, char *old_name, int same_directory_flag, int command_line_flag); extern void translate_out_filename(char *new_name, char *old_name); -extern int translate_link_filename(int last_value, - char *new_name, char *old_name); #ifdef ARCHIMEDES extern char *riscos_file_type(void); @@ -2587,23 +2539,6 @@ extern keyword_group directives, statements, segment_markers, misc_keywords, directive_keywords, trace_keywords, system_constants, opcode_macros; -/* ------------------------------------------------------------------------- */ -/* Extern definitions for "linker" */ -/* ------------------------------------------------------------------------- */ - -extern uchar *link_data_area; -extern int32 link_data_size; -extern char current_module_filename[]; - -extern char *describe_mv(int mval); -extern void write_link_marker(int zmachine_area, int32 offset, - assembly_operand op); -extern void flush_link_data(void); -extern void import_symbol(int32 symbol_number); -extern void export_symbol(int32 symbol_number); -extern void export_symbol_name(int32 i); -extern void link_module(char *filename); - /* ------------------------------------------------------------------------- */ /* Extern definitions for "memory" */ /* ------------------------------------------------------------------------- */