2012-09-07 01.08.03 Duane L. King, esq. alloc_table.c - New file. I2 space allocation opcode pointers. alloc_opcodes.c - New file. I2 space allocation opcode bodies. debug_table.c - New file. I2 debugger opcode pointers. debug_opcodes.c - New file. I2 debugger opcode bodies. gen_table.c - New file. I2 code generation opcode pointers. gen_opcodes.c - New file. I2 code generation opcode bodies. goldenI2_results.txt - New file. ierror_codes.h - Add MISSING_CLOSING_QUOTE, MISSING_FUNCTION_END MISSING_LOCAL_FUNCTION_END and CODE_ALLOCATION_TOO_SMALL. ilib.c - Add isdigit(). ilib.h - Add isdigit(). imain.c - Add the "exit" macro as an alternative for the "quit" macro. interp.c - Add quote_length function for using while compiling during allocation and generation. Conditionally include alloc_table.c and alloc_opcodes.c when building the I2 compiler. Include gen_table.c, gen_opcodes.c, run_opcodes.c, run_table.c, print_table.c and print_opcodes.c when building the I2 compiler. Add local variables for code generation. Initialize the allocation and generation variables to eliminate compiler warning messages. Add support for the I2 debugger. Add System Constant 41 (DEBUG_LEVEL, 0=OFF; 1-9=various debug levels or modes.) Conditionally include ctype.h. Revise interp_reset() to turn off debugging. For I2 add debug support for global and local function calls. interpio.c - Add I2-only error messages for MISSING_CLOSING_QUOTE, MISSING_FUNCTION_END, MISSING_LOCAL_FUNCTION_END and CODE_ALLOCATION_TOO_SMALL. Revise error handling for UNRECOGNIZED_SUB_OP and MISSING_CLOSING_QUOTE. interp_opcodes.c - Expand the definitions of Interp_define_function and Interp_define_lfunc to initiate compilation for the I2 build. Add the HARD-NOP ('n') opcode because I2 will optimize away the other NOP opcodes (whitespace.) Rewrite error handling for UNRECOGNIZED_SUB_OP. Remove all printf() calls. Add support for DEBUG-MODE ("D") in interp and I2. For I2 update function calls "F", "f", "mF", and "mf" to switch to the debug instruction set if System Constant 41 (DEBUG_LEVEL) is non-zero. For I2 update MEMORY-MACRO to force the use of the interp instuction set. interp_table.c - Add support for the HARD-NOP('n') opcode. main.c - For the I2 build, make the prompt "I2> ". Makefile - Incorporate alloc_table.c, alloc_opcodes.c, gen_table, gen_opcodes.c, print_table.c, print_opcodes.c, run_table.c, and run_opcodes.c into the tarball. Add dummy and ".PHONY" rules for improved behavior and performance. Remove dependencies that caused files to compile twice. Pass "-DI2" to main.c to facilitate prompt selection. Pass "-DI2" to interpio.c to enable I2 error messages. print_table.c - New file. I2 function body printing opcode pointers. print_opcodes.c - New file. I2 function body printing opcode bodies. README - Add alloc_table.c, alloc_opcodes.c, gen_table.c, gen_opcodes.c, print_table.c, print_opcodes.c, run_table.c, and run_opcodes.c to the list of files. run_table.c - New file. I2 compiled-opcode pointers. run_opcodes.c - New file. I2 compiled-opcode bodies. test.int - Add test for HARD-NOP ('n') at step 26.05. Add test for DEBUG-MODE ('D') at step 26.06. testI2.int - Adjust whitespace for printed function definitions now that most NOPs (whitespace) is removed during compilation. This affects tests 10.02, 10.07, 11.06, 19.02, 19.04, 20.06, 21.05, 22.01, 22.03, and 22.05. Add test for HARD-NOP ('n') at step 26.05. Add test for DEBUG-MODE ('D') at step 26.06. testI2_debug.int - New file. Tests for I2 debug opcodes. TODO - Cleanup the todo file. DOC/I2_status.txt - New file. This is an implementation progress report for the I2 compiler. DOC/interp_image_format.doc - Correct a typo (CGFR.) DOC/Introducing_I2.doc - New file. Introduces the ideas behind the compiler and explains the new features of the Alpha Phase I.c version. DOC/new_interp.doc - Add HARD-NOP ('n'). Add system constant 41 (DEBUG_LEVEL.) Add DEBUG-MODE ('D'). Add the "exit" macro. DOC/SAMPLE_SCRIPTS/defmac.int - add "exit" macro, an alternative for "quit" DOC/SAMPLE_SCRIPTS/kdump.int - update for system constant 41. DOC/SAMPLE_SCRIPTS/kdump2.int - update for system constant 41. DOC/SOURCEFORGE/interp_commands.txt - Add HARD-NOP ('n'). Add system constant 41 (DEBUG_LEVEL.) Add DEBUG-MODE ('D'). Add the "exit" macro. 2011-08-27 01.08.02 Duane L. King, esq. interp.c - Add the "I2" build type to System Constant 29 (TYPE_OF_BUILD.) interp.h - FRSP_ITEMS is 3 for all builds except "I2", when it is 4. interp_opcodes.c - Update Stop_interpreting, Interp_do_function, Interp_do_lfunc, Interp_do_memory_macro, Interp_do_global_macro, and Interp_do_local_macro to manage a 4-item function return stack frame. The new item is the opcode context pointer and is first frame entry pushed and the last frame entry popped. Makefile - Pass the new "I2" symbol as needed during compilation and add rules to create and test the I2 version. testI2.int - Update test steps 20.06 and 21.05 to account for the change in the size of the function return stack frame. DOC/building_interp.doc - Update for the "I2" build parameter. DOC/new_interp.doc - Update for System Constant 29 and reformatting. DOC/SAMPLE_SCRIPTS/kdump.int - Update for System Constant 29. DOC/SAMPLE_SCRIPTS/kdump2.int - Update for System Constant 29. DOC/SOURCEFORGE/interp_commands.txt - Update for System Constant 29. 2011-06-25 01.08.01 Duane L. King, esq. interp.c - Move the command vector table initialization to interp_table.c. Move the interp-mode opcode bodies to interp_opcodes.c. Update the control block initialization. interp_table.c - New file. Convert the command vector table to a constant array populated by an initializer. interp_opcodes.c - New file. Contains the interp-mode opcode bodies. Makefile - Add interp_table.c and interp_opcodes.c to the file list. README - Add interp_table.c and interp_opcodes.c to the file list. DOC/INTERNALS_DOCUMENTS/Interp_Internals.doc - Remove one sentence at the end of "2. Inner Interpreter." 2011-05-25 01.08.00 Duane L. King, esq. DOC/API_DOCUMENTS/iif.3 - A new API document for the Interp Image Format. DOC/building_interp.doc - Update for ENFORCE_ADDRESS_ALIGNMENT and IIF_MAX_LENGTH. DOC/INTERNALS_DOCUMENTS/Interp_Internals.doc - Add the three IIF opcodes in section 2.7. DOC/interp_image_format.doc - new document describing the format for distributing interp programs. Made a correction to the description of the End-of-Data record. Changed the record type to 0xA0. Increased the upper limit on the length field to 65535. DOC/new_interp.doc - Update for IIF opcodes, error messages, CLI changes and examples. DOC/SAMPLE_SCRIPTS/argtest.int - Corrected a stack leak. DOC/SAMPLE_SCRIPTS/kdump.int - Rewritten for clarity. DOC/SAMPLE_SCRIPTS/kdump2.int - Rewritten for clarity. DOC/SAMPLE_SCRIPTS/test_iif.int - A new file that tests the processing of IIF records by three new opcodes in the inner interpreter. Update the usage to match the example command lines. DOC/SOURCEFORGE/interp_commands.txt - update CLI usage with "-b" option and add the three IIF opcodes. ierror_codes.h - Add IIF_LENGTH_TOO_SMALL and IIF_LENGTH_TOO_LARGE. iif.c - New file. Implements the Interp Image Format. iif_get_length() must return unsigned long int. Add iif_record_type() and iif_is_eodr(). iif.h - New file. Implements the Interp Image Format. iif_get_length() must return unsigned long int. Add iif_record_type() and iif_is_eodr(). imain.c - Remove the definition of BIGBUF_SIZE. imain.h - Move the definition of BIGBUF_SIZE from imain.c to here because it is also needed in main.c for IIF processing. interp.c - Convert ENFORCE_ADDRESS_ALIGNMENT from a run-time to a build- time option. The commands affected are: @, !, h@, h!, MR, MW, hR, and hW. Add opcodes that support the interp image format: 0xA1 - Global Function Record 0xB1 - Local Function Record 0xA0 - End-of-Data Record Update the START_M and NEXT_M macros to prevent unintended index sign extension on accesses of the command vector table. Update the type of the value returned from iif_get_length(). interpio.c - Convert ENFORCE_ADDRESS_ALIGNMENT from a run-time to a build- time option. The commands affected are QUOTE (") and M-QUOTE (M"). Add error messages for IIF_LENGTH_TOO_SMALL and IIF_LENGTH_TOO_LARGE to handle_error(). main.c - Add load_iif_file(). Add the "-b" CLI option for loading IIF files. Makefile - Add ENFORCE_ADDRESS_ALIGNMENT to INNER_OPTIONS. Add INNER_OPTIONS to the interpio.o rule. Add IIF_OPTIONS. Add iif.c, iif.h, and iif.o. Add iif.h as a dependency for interp.o. Add "cleanapidocs" and rewrote "apidocs" to allow developers to build only the documents that changed, without losing the ability to build them all. See the Makefile comments. Add a rule that builds the new API document for IIF. README - Add iif.c and iif.h. test.int - Skip the address alignment tests when ENFORCE_ADDRESS_ALIGNMENT is FALSE. This allows the test script to run more predictably for different builds. Add a note pointing to DOC/SAMPLE_SCRIPTS/test_iif.int for testing the opcodes that provide IIF support. wiff.int - A new file that creates an IIF file containing the currently loaded global and local functions. Change the End-of-Data record type to 0xA0. 2011-02-28 01.07.03 Duane L. King, esq. DOC/new_interp.doc - Fix errors in chapters 5 and 6. DOC/building_interp.doc - new document describing the parameters that control the build. 2011-02-17 01.07.02 Duane L. King, esq. test.int - Cleanup, correct, and expand test coverage: 1) Notate every step and remote the resulting redundant comment 2) Update the list of commands not tested by this script 3) Add standard macro tests to steps 7, 12, 16, and 17 4) Add a test to verify that the data stack is empty at the end of steps 7, 12, 21, 22, and 26 5) Add missing tests for "SC", "Ir", "Il", "?", and ":" at steps 7, 21, and 22 6) Correct the test numbers for steps 10, 14, 19, and 20 7) Add missing function redefinition tests at steps 11 and 22 8) Add missing System Constant tests to Step 20 9) Add step 27 to test the print iterator with QUOTE (") 10) Add step 28 to test the print iterator with M-QUOTE (M") 11) Remove the print iterator address tests from step 101 12) Beginning with step 101, remove the unnecessary step notation because it is very confusing 13) Add tests at steps 107 and 121 14) Renumber the tests in steps 101-120 and 122-126 15) Reorder the tests for steps 105 and 110 to the order mentioned in the documentation for error codes 5 and 10 16) Add step 127 for error code 27 (ITERATOR_NOT_SET) 17) Add step 128 for error code 28 (INVALID_WHEN_DECREMENTING) 2011-01-23 01.07.01 Duane L. King, esq. DOC/new_interp.doc - Improve the documentation of the default macros. DOC/SOURCEFORGE/interp_commands.txt - Improve documentation of the macros. 2011-01-07 01.07.00 Duane L. King, esq. ierror_codes.h - Add two new error codes: 27 - ITERATOR_NOT_SET 28 - INVALID_WHEN_DECREMENTING Both errors support the new print iterator additions to QUOTE (") and M-QUOTE (M"). interp.c - Add three System Constants for print iterator support: 38 - PRINT_ITERATOR_ADDRESS (NULL=not initialized.) This value show you where in memory the next QUOTE (") or M-QUOTE (M") operator will print from with the new "@" metacharacter. 39 - PRINT_ITERATOR_MODE (default=1) This value shows you whether the print iterator address auto-increments or auto-decrements to advance to the next location. When one (1), the print iterator address with auto-increment after printing the contents. When zero (0), the print iterator address will auto-decrement after printing the contents. All other values are reserved for future use. 40 - PRINT_ITERATOR_FIRST_ONE (default=TRUE/~0) Only used in auto-decrement mode: FALSE/0=decrement before printing, and TRUE/~0=print without the pre-decrement. "!A" and "!d" set this to TRUE/~0. Then after the execution of the first following "@" meta-character, it is set to FALSE/0 to enable the pre-decrement for all following "@" meta-characters up to the next "!A" or "!i". Add macro definitions for TRUE, FALSE, AUTOINCR, and AUTODECR in support of boolean (TRUE/FALSE) system constants and for the print iterator operating modes. Update the comments for M-QUOTE (M") at Interp_Memory_Print. Update the comments for QUOTE (") at Interp_print_string. Update the comments for SYSTEM-CONSTANT (K) at Interp_system_constant. interpio.c - Correct typos in comments. Add macro definitions for TRUE, FALSE, AUTOINCR, and AUTODECR in support of boolean (TRUE/FALSE) system constants and for the print iterator operating modes. Add function prototypes for private functions: mem_num2str() set_number_base_and_field_width() mem_set_number_base_and_field_width() Add mem_num2str() for new the QUOTE (") and M-QUOTE (M") meta-character "@", and all of its modifiers. Add mem_send_number() for print iterator support. Add support for the new "C" modifier for the "#" meta- character in set_number_base_and_field_width(). Add mem_set_number_base_and_field_width() for print iterator support. Add two new error messages for the print iterator in handle_error(). interpio.h - Add a function prototype for mem_send_number(). Makefile - update version to "01.07.00" test.int - Update test 20.16 (size of system constants data area.) Escape the new QUOTE (") and M-QUOTE "@" and "!" meta- characters in 101.11, 101.12, 101.24, 101.25, 101.31, 101.32, 101.62, and 112.02. Add off-nominal tests for the new QUOTE (") and M-QUOTE (M") meta-character/modifier combinations: "#C", "!A", "@a", and and "@A" as steps 101.75 thru 101.80. DOC/new_interp.doc - document the changes and additions in QUOTE ("), M-QUOTE (M"), and SYSTEM-CONSTANT (K). DOC/API_DOCUMENTS - Update interpio.3 for the print iterator. DOC/SAMPLE_SCRIPTS - Add and update scripts to use the print iterator: argtest.int, dump.int, example17.int, example18.int, kdump.int, kdump2.int, mprint.int, and mprint2.int. DOC/SOURCEFORGE/interp_commands.txt - document the changes/additions in QUOTE ("), M-QUOTE (M"), and SYSTEM-CONSTANT (K). 2010-07-05 01.05.03 Duane L. King, esq. AUTHOR - Update email address. idefine.c - Update to GPLv3. Reduce library usage for embedded builds. Add a type cast to comply with the updated header. idefine.h - Update to GPLv3. ierror_codes.h - Update to GPLv3. ilib.c - New file. Reduce library usage for embedded builds. ilib.h - New file. Reduce library usage for embedded builds. ilowlevelio.c - Update to GPLv3. ilowlevelio.h - Update to GPLv3. imain.c - Update to GPLv3. Reduce library usage for embedded builds. imain.h - Update to GPLv3. imem.c - Update to GPLv3. imem.h - Update to GPLv3. interp.c - Update to GPLv3. Made the following commands interactive-only: Xd, Xg, dG, dL, dg, dl, and v. interp.h - Update to GPLv3. Reduce library usage for embedded builds. interpio.c - Update to GPLv3. Reduce library usage for embedded builds. Add type casts to comply with the updated header. interpio.h - Update to GPLv3. iportio.c - Update to GPLv3. iportio.h - Update to GPLv3. isin.c - Update to GPLv3. Reduce library usage for embedded builds. istack.c - Update to GPLv3. istack.h - Update to GPLv3. itypes.h - Update to GPLv3. main.c - Update to GPLv3. Makefile - Update to GPLv3. Reduce library usage for embedded builds. README - Update to GPLv3. Add two new files: ilib.c, and ilib.h. test.int - Update to GPLv3. 2009-10-12 01.05.00 Duane L. King, esq. idefine.c- Fix a capitalization typo in assign_macro(). Generalize one error message in getdef(), and add the function assign_macro() to implement the "#assign" outer interpreter directive. See feature #2824584. idefine.h- Add a function prototype for assign_macro(). See feature #2824584. ierror_codes.h - Redefine error code #7 as NON_ALIGNED_ACCESS. This is the error returned when an attempt is made to access memory using an address that is incompatible with the size of the data being accessed. Addresses for accessing 16-bit data must be multiples of 2, and addresses for accessing 32-bit data must be multiples of 4. See bug #2868551. ilowlevelio.c - Add conditional compilation for functions that have well defined or default functionality for embedded builds. Add more comments and rearrange the order of the functions to make it easier for porters to find what needs to be changed when porting interp to embedded targets. See bug #2851914. Remove redirected_input(). See bug #2839880. ilowlevelio.h - Remove the function prototype for redirected_input(). See bug #2839880. imain.c - Remove the call to redirected_input() from imain() and replace it with another flag passed in. See bug #2839880. Add support for the "#assign" outer interpreter directive. See feature #2824584. imain.h - Add the redirect_flag to the imain() function prototype. See bug #2839880. interp.c - Add System Constant 37, ENFORCE_ADDRESS_ALIGNMENT. Its default setting is TRUE (~0). When enabled (true) the address used to access 16-bit or 32-bit data will be validated according to the alignment rules (see ierror_codes.h above.) Add the logic that will enforce address alignment whenever System Constant 37 is TRUE. This affects STORE ("!"), FETCH (@), MEM-READ ("MR"), MEM-WRITE ("MW"), HALFWORD-STORE ("h!"), HALFWORD-FETCH ("h@"), HALFWORD-READ ("hR"), and HALFWORD-WRITE ("hW"). See bug #2868551. interpio.c - Add an error message for non-aligned memory accesses. See bug #2868551. isin.c - Remove support for prompt suppression when the input is redirected. See bug #2839880. main.c - Put redirected_input() here, call it from main(), and pass the result as an additional flag to imain(). See bug #2839880. Makefile - Update the compilation rule for ilowlevel.o to pass in the NOFLAGS and NOCLI symbols. Add blank lines to separate the various man pages in the "apidocs" rule. See bug #2851914. DOC/API_DOCUMENTS/idefine.3 - Document the assign_macro() function. See feature #2824584. DOC/API_DOCUMENTS/ilowlevelio.3 - Remove redirected_input(). See bug #2839880. DOC/API_DOCUMENTS/imain.3 - Add the redirect_flag to imain(). See bug #2839880. DOC/interp_new.doc - Document the "#assign" outer interpreter directive. Add new error messages in Appendix B, and rewrite others. See feature #2824584. Add System Constant 37, ENFORCE_ADDRESS_ALIGNMENT. Revise error message #7 in Appendix B. See bug #2868551. DOC/SOURCEFORGE/interp_commands.txt - Document the "#assign" outer interpreter directive. See feature #2824584. DOC/SAMPLE_SCRIPTS/kdump.int - Add System Constant 37, ENFORCE_ADDRESS_ ALIGNMENT. See bug #2868551. DOC/SOURCEFORGE/interp_commands.txt - Add System Constant 37, ENFORCE_ ADDRESS_ALIGNMENT. See bug #2868551. Document the "#assign outer interpreter directive. See feature #284584. 2009-07-13 01.04.00 Duane L. King, esq. imain.c - Add "#restore" outer interpreter directive to restore (add) the default macro definitions without deleting other definitions. See bug #2813043. Add iexecute_cmd(). It expands macros and executes the result. See feature #2818776. imain.h - Add a function prototype for iexecute_cmd. See feature #2818776. interp.c - Add the missing comments to Interp_system_constant (SYSTEM- CONSTANT) that were left out when feature #2528364 was implemented. See bug #2811130. main.c - Revise the "-c" command to strip inline comments, expand macros and execute the result. Update show_usage(). See feature #2818776. Makefile - Force "make" and "make interp" to remove obj/interp.o and build it -without- the "-DSIN" symbol. This resolves the problem of "make sin interp" or other out-of-order build sequences building interp with the sin version of obj/interp.o. See bug #2806170. Update the version number to 01.04.00. DOC/API_DOCUMENTS/imain.3 - Document the addition of iexecute_cmd. See feature #2818776. DOC/API_DOCUMENTS/interp.1 - Revise the usage text to match the changes to show_usage in main.c. See feature #2818776. DOC/interp_new.doc - Document the "#restore" outer interpreter directive. See bug #2813043. In Appendix C, revise the usage text to match the changes to show_usage in main.c. See feature #2818776. DOC/SAMPLE_SCRIPTS/debug.int - Add #SILENCE and #PROMPT directives to make this a better example. See bug #2816452. DOC/SAMPLE_SCRIPTS/defmacs.int - Add a script that can be used to restore the default macro definitions. This could be useful during a complex CLI command involving multiple script files. See bug #2813043. DOC/SAMPLE_SCRIPTS/dump.int - Add a new version of the dump script that reads and dumps memory byte-by-byte. This version is endian-independent; It gives the same result on big-endian and little-endian machines. See bug #2814888. DOC/SOURCEFORGE/interp_commands.txt - Document the "#restore" outer interpreter directive. See bug #2813043. Revise the usage text to match the changes to show_usage in main.c. See feature #2818776. 2009-04-19 01.03.00 Duane L. King, esq. interp.c - Update comments for QUOTE and M-QUOTE to include the "Dn" output modifier (formatted decimal.) See feature #2704614. interpio.c - Update the Copyright notice. Add the "Dn" output modifier to send_string() and also to memory_string(). In num2str(), update decimal number output to alway use the width variable. For unformatted decimal output, width is 1. Formatted decimal output width will be in the range 1-10. See feature #2704614. Factor common code from send_string and memory_string into set_number_base_and_field_width() and usec2h_m_s_usec(). This is a maintenance change see bug #2750851. Update send_string() and memory_string() to return error status if stack is empty instead of trying to continue and either terminating abnormally (core dump) or printing garbage. The formatting options affected were "#s", "#c", and "#T". See bug #2750857. test.int - Add tests <01.06> through <01.16> for the remaining output format options: #W, #H, #B, and #D0-#D9. Add tests <101.65> thru <101.74> to test stack underflow for the output format operators that take an argument from the stack. See bug #2766672. Makefile - Update the version number to 01.03.00. DOC/ - Updated new_interp.doc, and SOURCEFORGE/interp_commands.txt with the new formatted decimal output option "Dn". See feature #2704614. Updated SAMPLE_SCRIPTS/kdump.int to use "Dn", the new formatted decimal output option. See feature #2704614. Add the description of the new formatted decimal output option to API_DOCUMENTS/interpio.3. 2009-03-18 01.02.00 Duane L. King, esq. imain.c - Added #quit directive to cancel the affect of the #CONTINUE directive. This new directive causes interp to stop running after an error occurrs while reading from redirected input. See bug #2577178. Set default sizes for the input buffer size (INBUF_SIZE) and the execution buffer size (BIGBUF_SIZE.) See feature #2528364. Enforce coding style. imain.h - Remove the definitions of INBUF_SIZE and BIGBUF_SIZE. See feature #2528364. interp.c - Figure the correct build type and set TYPE_OF_BUILD. Set default values for the data stack size (DATA_STACK_DEPTH), loop control stack size (LCSP_STACK_DEPTH), function return stack depth (FRSP_STACK_DEPTH), global/local variable pool size (VARIABLE_POOL_DEPTH), input buffer size (INBUF_SIZE) and the execution buffer size (BIGBUF_SIZE). See feature #2528364. Move constants from interp.h to here because they are actually private values not used anywhere else. Increase MAX_CONST to 37, and add system constants: 29 - TYPE_OF_BUILD (0=OS, 1=NOFLAGS, 2=NOCLI, 3=SIN) 30 - DATA_STACK_DEPTH 31 - LCSP_STACK_DEPTH 32 - FRSP_STACK_DEPTH 33 - VARIABLE_POOL_DEPTH 34 - NO_PRIVATE_DATA (for functions) 35 - INBUF_SIZE 36 - BIGBUF_SIZE See feature #2577160. When NO_PRIVATE_DATA is defined, global functions do not have private local variables and they do not have private local functions. When NO_PRIVATE_DATA is defined, local functions do no have private local variables. See feature #2528364. interp.h - Remove the definitions of DATA_STACK_DEPTH, LCSP_STACK_DEPTH, FRSP_STACK_DEPTH, VARIABLE_POOL_DEPTH, and several "private" definitions. See feature #2528364. isin.c - Set default values for INBUF_SIZE and BIGBUF_SIZE. See feature #2528364. Enforce coding style. main.c - Add the "-q" command line option to cause interp to stop running after an error occurrs while reading from redirected input. Update usage display. See bug #2577178. If a run-time error occurs while reading and executing input from a file via the "-f" option, the input must be drained before switching back to standard input. See bug #2624491. Makefile - Add documentation and symbol definitions for DATA_STACK_DEPTH, LCSP_STACK_DEPTH, FRSP_STACK_DEPTH, VARIABLE_POOL_DEPTH, NO_PRIVATE_DATA, INBUF_SIZE, and BIGBUF_SIZE. See feature #2528364. When sin is built, interp.c must be recompiled with the addition of "-DSIN" in order to set TYPE_OF_BUILD properly. See feature #2577160. Remove all ".svn" directories from the copy of the documentation directory tree before making the tarball. See bug #2686077. test.int - Revise the "stack full" tests (<111.00>- <111.14>) to use "30K" instead of a hard-coded value for the size of the data stack. DOC/ - Updated new_interp.doc, SOURCEFORGE/interp_commands.txt, and API_DOCUMENTS/interp.1 with the new outer-interpreter directive, "#quit" the new "-q" command line option, and the eight new system constants. See bug #2577178 and feature #2577150. Updated SAMPLE_SCRIPTS/debug.int for improved portability by calculating the function return stack frame size (in words) instead of using a hard-coded 3. See bug #2686095. Updated SAMPLE_SCRIPTS/kdump.int to display the eight new system constants (29-36.) See bug #2686087. 2008-06-21 01.01.00 Duane L. King, esq. DOC/ - Corrected the input and output/error message buffer sizes in the Interpreter_State_Variables diagram (all versions.) Reformatted interp(1) to conform to manpage expectations. Moved pre-1.0 changes and notes to PRE-1.0-CHANGES and PRE-1.0-NOTES, respectively. Updated INTERNALS_DOCUMENTS/Interp_Internals.doc (and the PDF and XML versions) to reflect the code changes to interp.c. Updated new_interp.doc and SOURCEFORGE/interp_commands.txt with the new outer-interpreter directive, "#USAGE." Added macro_usage_info() to API_DOCUMENTS/idefine.3. idefine.c- Make four parameters adjustable that control the memory usage of the macroprocessor: BUFSIZE, MAXPTR, MAXDEF, and MAXTBL. See comments at the top of this file. Add the function macro_usage_info() which displays the four adjustable parameters along with other helpful information. Reduce the default value of MAXDEF from 161 to 71. If this is a problem, edit Makefile and change it there. imain.c - Added #USAGE directive to display the macro usage information. interp.c - Replace cp->sp and cp->frsp with local register variables named datap and funcp respectively. This improves generated code on some architectures. Rewrite the function call logic to eliminate two stack checks, and three stack adjustments, in Interp_do_function, Interp_do_lfunc, Interp_do_global_macro, Interp_do_local_macro, and Interp_do_memory_macro. This improves readability, maintainability, and execution efficiency. Rewrite Stop_interpreting and remove two stack checks. Assume the local function table is sparcely populated or empty, and optimize the loop that releases that storage. Rewrote Interp_version to use put_char() and put_line() for an improved porting experience. Makefile - Add MACRO_OPTIONS symbol for changing the 4 memory control parameters for the macroprocessor. See Makefile Comments. 2008-05-18 01.00.00 Duane L. King, esq. DOC/ - Created a new documentation subdirectory: INTERNALS_DOCUMENTS, and in it, created Interp_Internals.doc, Interp_Internals.pdf, and Interp_Internals.xml. Three new illustrations were created. interp.c - In Interp_return_caller_context, change the stack check to require at least one full return frame. This prevents a possible out-of-bounds stack access. README - Updated the file list with a missing file: imain.h. TODO - Scratch off another one (implementation guide.) All older changes were moved to PRE-1.0-CHANGES.