X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=src%2Finform.c;h=9b30ad3b8ff0d3610fa74c63dddeed3fff3d1b56;hb=c881aa3386c00d7021ffabf2f66275d6c110c1c1;hp=b3396a3662c9097ca2057ad79463646dcb8c34eb;hpb=46cb3ffad9e3ed318a9109ff96421882f6642b2b;p=inform.git diff --git a/src/inform.c b/src/inform.c index b3396a3..9b30ad3 100644 --- a/src/inform.c +++ b/src/inform.c @@ -2,9 +2,8 @@ /* "inform" : The top level of Inform: switches, pathnames, filenaming */ /* conventions, ICL (Inform Command Line) files, main */ /* */ -/* Copyright (c) Graham Nelson 1993 - 2020 */ -/* */ -/* This file is part of Inform. */ +/* Part of Inform 6.35 */ +/* copyright (c) Graham Nelson 1993 - 2021 */ /* */ /* Inform is free software: you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ @@ -17,7 +16,7 @@ /* GNU General Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License */ -/* along with Inform. If not, see https://gnu.org/licenses/ */ +/* along with Inform. If not, see https://gnu.org/licenses/ * /* */ /* ------------------------------------------------------------------------- */ @@ -220,6 +219,34 @@ static void select_target(int targ) DICT_ENTRY_FLAG_POS = (4+DICT_WORD_BYTES); } } + + if (!targ) { + /* Z-machine */ + /* The Z-machine's 96 abbreviations are used for these two purposes. + Make sure they are set consistently. If exactly one has been + set non-default, set the other to match. */ + if (MAX_DYNAMIC_STRINGS == 32 && MAX_ABBREVS != 64) { + MAX_DYNAMIC_STRINGS = 96 - MAX_ABBREVS; + } + if (MAX_ABBREVS == 64 && MAX_DYNAMIC_STRINGS != 32) { + MAX_ABBREVS = 96 - MAX_DYNAMIC_STRINGS; + } + if (MAX_ABBREVS + MAX_DYNAMIC_STRINGS != 96 + || MAX_ABBREVS < 0 + || MAX_DYNAMIC_STRINGS < 0) { + warning("MAX_ABBREVS plus MAX_DYNAMIC_STRINGS must be 96 in Z-code; resetting both"); + MAX_DYNAMIC_STRINGS = 32; + MAX_ABBREVS = 64; + } + } + else { + if (MAX_DYNAMIC_STRINGS > 100) { + MAX_DYNAMIC_STRINGS = 100; + warning("MAX_DYNAMIC_STRINGS cannot exceed 100; resetting to 100"); + /* This is because they are specified in text literals like "@00", + with two digits. */ + } + } } /* ------------------------------------------------------------------------- */ @@ -1239,7 +1266,7 @@ static void cli_print_help(int help_level) printf( "\nThis program is a compiler of Infocom format (also called \"Z-machine\")\n\ story files, as well as \"Glulx\" story files:\n\ -Copyright (c) Graham Nelson 1993 - 2020.\n\n"); +Copyright (c) Graham Nelson 1993 - 2021.\n\n"); /* For people typing just "inform", a summary only: */ @@ -1293,7 +1320,7 @@ One or more words can be supplied as \"commands\". These may be:\n\n\ --config filename (setup file)\n\n"); #ifndef PROMPT_INPUT - printf("For example: \"inform -dexs $huge curses\".\n\n"); + printf("For example: \"inform -dexs $huge curses\".\n"); #endif return; @@ -1918,8 +1945,9 @@ static void read_command_line(int argc, char **argv) for (i=1, cli_files_specified=0; i