Releases: fpjohnston/TECO-64
TECO-64 version 200.36.7
Mostly just minor changes.
Standardized and documented all non-command error messages.
Simplified and improved processing of command-line options.
Improved testing of command-line options.
Added etc/test_errors.pl script to check for orphan error codes.
Updated out-of-date documentation.
TECO-64 version 200.36.6
Fixed issues in build process which didn't create the obj/ directory if it didn't already exist.
Also, the distclean target now deletes the bin/, html/, and obj/ subdirectories.
This should clean up everything that was generated by make.
TECO-64 version 200.36.5
Added more tests for conditional commands.
Per Table 5-25 of the DEC Standard TECO manual, numeric arguments may be passed through (') commands.
Changes to accommodate resulted in the deletion of the e2.loop flag bit, as it was now unnecessary.
Updated documentation for E2 flag bits, which had become inaccurate.
Updated documentation for Linux setup and command-line options, which had also become inaccurate.
Added check to prevent the use of a comma as a delimiter for the @o command (since n@O uses a comma-separated list).
Cleaned up processing of --make and --mung options.
TECO-64 version 200.36.4
Fixed bug which caused an infinite loop when editing an empty file and then attempting to close it.
This was caused by a buffer handling optimization. A new test was added to prevent any future recurrence.
Fixed bug in command-line option processing which didn't check options.create before attempting EW command.
Increased the number of tests for command-line options. Also refactored test harness.
Most of these followed improvements to error messages resulting from invalid options.
As it turns out, getopt_long()
is not always clear or consistent about handling such situations.
TECO-64 version 200.36.3
Improved and fixed code for handling and translating command-line options.
Simplified and optimized code handling command tables and executing commands.
Added –make option, and made it and –mung option visible.
Added warning and error messages common to DEC TECO command-line options.
Added warning message for case where input and output files are the same.
Added more tests to etc/test_options.pl.
Added restriction checks for A and # commands.
Fixed several bugs, most of them minor.
TECO-64 version 200.36.2
This release primarily resolves a report in Issue #14 of search failures on OS X.
This was due to 8-bit characters inconsistently treated as alternately signed and unsigned.
The resolution involves the addition of the -funsigned-char
option for gcc.
My thanks for LdBeth for assistance in debugging this.
The undocumented FF
and CTRL/F
commands were refactored and modified.
This resulted in a fix for an assertion failure when using certain ^^x
commands.
TECO-64 version 200.36.1
Fixed a reported issue with the use of Unicode characters for echoed input and typed output.
- This was due to earlier added support for TECO-32’s handling of 8-bit characters.
- Resolution involved addition of new E3 flag bit.
- This bit is on by default for all non-VMS builds.
- Note that this fix does not apply to display mode, which uses ncurses for output.
Fixed bug with use of virtual columns by up and down keys.
- This had been fixed in commit ca8cc3, but somehow got broken afterward.
Fixed bug in Makefile which didn’t correctly detect changes to header files.
Buffer handling and display code was extensively refactored.
- This was mainly done to avoid excessive buffer accesses in display mode.
Refactored handling of O commands.
- O commands cannot now branch to tags prior to the start of the current loop.
- This restriction is the same as that imposed by Classic TECO.
- This is due to the need to avoid branches into the middle of loops.
- The number of test scripts for O commands was more than doubled.
Optimization options changed back to -O0 for gprof builds.
- This was necessary in order that all functions be visible when profiling.
TECO-64 version 200.36.0
Major overhaul for flow control commands (conditionals, loops, and GOTOs).
- This cleaned up a LOT of code, and removed several restrictions.
- Conditionals may now be nested to an indefinite depth.
- O commands are now allowed to jump into conditionals.
Also overhauled parsing of literal numbers, in order to imitate classic TECO.
- This now allows colons and at-signs to precede or be intermingled with digits.
- There may also be whitespace between digits.
- A new E2 flag has been added to require a "canonical" form for numbers.
- If set, digits must be strictly consecutive, with no intervening colons or at-signs.
Fixed numerous issues in test scripts and code resulting from enabling E2 restrictions.
- All E2 restrictions are enabled by default for debug and test builds.
- All test scripts run without error with E2 restrictions enabled.
- Use of double colon modifiers no longer implies single colon.
Fixed issue where single ESCape in macro could return a value to caller.
Renamed function and variable names to hopefully make things more readable.
Added comments for all conditional debug code, to explain what it does.
Improved build scripts for such things as checking changes to compiler options.
Improved and refactored directory structure.
Improved code optimization.
TECO-64 version 200.35.1
Most significant change involved processing command-line options:
"--display" uses TECO_VTEDIT if defined, else just enables display.
"--display=foo" uses 'foo' instead of TECO_VTEDIT.
"--nodisplay" disables display and resets TECO_VTEDIT.
"--nodisplay --display" ignores TECO_VTEDIT and executes "-1W"
Pretty much everything else was just cleaning up code.
TECO-64 version 200.35.0
The release includes optimizations to increase the speed of TECO-64 for CPU-intensive tasks, notably execution of the lib/pi.tec macro. This was done strictly as an exercise to demonstrate the ability to be as fast as TECO C, but it also resulted in discovery of some minor bugs, and also served to improve, simplify, and clarify the code used to parse expressions and execute commands.
A couple of display bugs were fixed, including one that corrected a fix in commit 6e4e43 that only worked some of the time, and another that caused issues with the cursor when up or down keys were intermixed with other commands that moved dot.
The Makefile was overhauled, mainly to simplify it, and to make better use of gnu make features. The output during a build now shows the actual commands being executed, rather than saying, for example, 'Making teco.o'. A number of new targets were added, mostly for debugging and testing purposes. Also, the lint target does not exist unless the FLINT environment variable is not defined (which should point to the directory for FlexeLint/PC-Lint).
Other changes:
?NAT error replaced with ?IIA for n@^Uq/text/ and n:@^Uq/text/ commands.
EM command now allows _m_ as well as _n_ numeric arguments. The _m_ argument may be used to specify the ASCII value of the character to look for in order to distinguish between GOTO labels and comments.
Deleted undocumented E1&32768 flag bit for debug builds.
Trace ('?') and EM commands can be disabled in order to improve speed.
Fixed bug which affected print-out for ES and EV commands.
Fixed bug in CTRL/U command that didn't allow for n@^Uq//.
Fixed G command to disallow local registers for G*, G_, and G+ commands.
Fixed bug in use of 2EM command.
Fixed bug in handling of "classic" EI commands which could cause segmentation faults.
Simplified code with use of new confirm() macro and confirm_cmd() function.
Restructured etc/ directory.