diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/knuth/errata/errorlog.tex')
-rw-r--r-- | Master/texmf-dist/source/generic/knuth/errata/errorlog.tex | 2946 |
1 files changed, 0 insertions, 2946 deletions
diff --git a/Master/texmf-dist/source/generic/knuth/errata/errorlog.tex b/Master/texmf-dist/source/generic/knuth/errata/errorlog.tex deleted file mode 100644 index dfb201b7377..00000000000 --- a/Master/texmf-dist/source/generic/knuth/errata/errorlog.tex +++ /dev/null @@ -1,2946 +0,0 @@ -% Appendix to the Errors of TeX paper (updated) -% Section numbers now adjusted to TeX 3.0 equivalents -% NB: tab marks are significant in this file, they signal continuation lines -%\magnification=\magstephalf -%\pageno=35 -\input logmac -* 10 Mar 1978 -L1. Rename a few external variables to make their first six letters unique. -D2. Initialize \\{escape_char} to $-1$, not 0 [it will be set to the - first character input]. @240 -L3. Fix bug: The test `$\\{id}<\O{200}$' was supposed to distinguish one-letter - identifiers from longer (packed) ones, but negative values of - \\{id} also pass this test. @356 -B4. Fix bug: I wrote `{\bf while} $\alpha\land(\beta\lor\gamma)$' when I meant - `{\bf while} $(\alpha\land\beta)\lor\gamma$'. @259 -R5. Initialize the input routines in |INITEX| [at this time a short, - separate program not under user control], in case errors occur. @1337 -E6. Don't initialize \\{mem} in |INITEX|, it wastes time. @164 -B7. Change `\\{new_line}' [which denotes a lexical scanning state] to - `\\{next_line}' [which denotes - \\{carriage_return} and \\{line_feed}] in print commands. -F8. Include additional test `$\\{mem}[p] \ne 0\; \land$' in \\{check_mem}. @168 -M9. Fix inconsistency between the \\{eq_level} conventions of \\{macro_def} and - \\{eq_define}. @277 -# About six hours of debugging time today. -# |INITEX| appears to work, - and the test routine got through \\{start_input}, - \\{chcode} [the \TeX78 command for assigning a \\{cat_code}], - \\{get_next}, and \\{back_input} the first time. -* 11 Mar 1978 -I10. Insert space before `|(|' on terminal when opening a new file. @537 -F11. Put `$p\gets \\{link}(p)$' into the loop of \\{show_token_list}, - so that it doesn't loop forever. @292 -L12. Shift the last item found by \\{scan_toks} into the \\{info} field. - [With |SAIL| all packing of fields was done by arithmetic operations, - not by the compiler.] @474 -B13\>12. Fix the previous bugfix: I shifted by the wrong amount. @474 -I14. Add a feature that prints a warning when the end of a file page occurs within - a macro definition or call. [System dependent.] @336 -# Unintended bugs in my test routine [a format intended eventually to typeset - {\sl The Art of Computer Programming\/}] helped check out the - error recovery mechanisms. - For example, I had `|\lft{#}|' instead of `|\lft{##}|' inside a macro, - and three cases of improper |{|~and~|}| nesting. -F15. Add the forgotten case `\\{set_font}:' to \\{eq_destroy}. @275 -C16. Change |\require| to |\input|. @376 -F17. Add code for the case $\\{cur_cmd}=0$ [later known as the case - `$\,t\ge\\{cs_token_flag}$'] when scanning a tokenlist. @357 -# That's the first ``big'' error I've spotted so far. -I18. Introduce a `|d|' option in the error routine, to facilitate debugging. @84 -L19. Assign a floating-point constant \\{ignore_depth} to \\{prev_depth}, - instead of assigning the integer constant \\{flag} - [since \\{prev_depth} is type \\{real} in \TeX78]. @215 -I20. Improve the readability and spacing of \\{show_node_list} output. @182,187 -F21. Set the variable $v$ before using the {\bf case} construction in - \\{show_node_list}, because there's one case where $v$ - didn't receive a value [as part of the field unpacking]. @182 -# About seven hours today. -* 12 Mar 1978 -# One hour to enter yesterday's corrections and recompile. -# At this point \TeX\ correctly located further unintended syntax errors - in |acphdr| [the test file]. -I22. Insert \\{debug_help} into \\{succumb}, giving a chance to look at memory - before the system dies. @93 -D23. Use \\{eq_destroy} wherever necessary in \\{unsave}. @283 -L24. Change `$t \gets (t-1)$ mod 8' to `$t \gets (t-1)$ land~7' in \\{id_name}, - since |SAIL| has $-1$~mod~$8 = -1$. [At this time, \\{id_name} is a - routine that unpacks control sequence names, according to a scheme - that will become obsolete after change \#422.] -S25. Remove the space that appears at end of paragraph. - (I hadn't anticipated that.) @816 -L26. Throw away unwanted \\{line_feed} after getting a \\{carriage_return} - in response to \\{in_chr_w} [a system routine for - input from the terminal]. @83 -B27. Delete spurious call to \\{flush_list} in \\{end_token_list}. @324 -# Why did I make such a silly mistake? -F28. Fix bug in \\{get_x_token}: I forgot to say `\\{macro_call}' (which is the - main point of that routine)! @380 -# While tracking that bug down, I found out incidentally that kerning is okay. -# Also \TeX\ correctly caught an error |0p| for |0pt|. -L29. Fix bug in \\{scan_spec} ({\bf while} instead of {\bf repeat}). @404 -M30. Make the table entries for |\hfill| and |\hskip| consistent with the - program conventions. @1058 -L31. Disable unforeseen coercion: When \\{scan_spec} put \\{hsize} on - \\{save_stack}, the value changed from \\{real} to \\{integer}. @645 -I32. Use `|*|' instead of `|-1.0|' for running dimensions - of rules in \\{show_node_list}. @176 -D33. Clear \\{mem}[\\{head}] to null in \\{push_nest} [in \TeX82, this - will be done by \\{get_avail}]. @216 -# A vrule link got clobbered because I forgot to do this. -I34. Translate ASCII control codes to special form when displaying them. @48,68 -# Ligatures work, but \\{show_node_list} showed them funny. -F35. Remember to clear parameters off \\{save_stack} in \\{package} routine. @1086 -# About eight hours today. -* 13 Mar 1978 -D36. Introduce a new variable \\{hang_first} [later the sign of \\{hang_after}]. @849 -E37\>36. Simplify the new code, realizing that if $\\{hang_indent}=0$ then - \\{hang_first} is irrelevant. @848 -# Time sharing is very slow today, so I'm mostly reading technical reports while - waiting\/ {\bf three hours} for compiler, editor, and loading routine. -# I'm not counting this as debugging time! -# (Came back in the evening.) -P38. Spruce up the comments in the \\{line_break} routine, which appears to be - almost working. @813 -D39. Rethink the setting of \\{best_line}; it's 1 too high in many cases. - [The final line of a paragraph was handled in a treacherous way.] @874 -D40. Compute proper initialization for - \\{prev_depth} when beginning an |\hbox| - with a paragraph inside. [This refers to a special `paragraph box' - construction, used when an hbox of specified size becomes overfull; - \TeX78 doesn't have the concept of internal vertical mode.] @1083 -D41. Also initialize \\{tail} in that case. @1083 -M42. Also put the result of line-breaking into the correct list. -T43. Fix a typo in the \\{free_node} routine (`\\{link}' not `\\{llink}'); - by strange chance it had been harmless until today. @130 -F44. Fix bug: \\{post_line_break} forgot to set \\{adjust_tail}. @889 -D45. Update \\{act_width} properly when looking for end of word while - line breaking. @866 -B46. Repair the ``tricky'' part of \\{get_node}: I used the \\{info} field - when I meant to say \\{llink}. @127 -# Now the |\corners| macro of |acphdr| works! [See |\setcornerrules| - in {\sl The \TeX book}, page 417.] -D47. Reset \\{contrib_tail} properly in \\{build_page}. @995 -T48. Fix typo (|-| for |+|) in computation of \\{page_total}. @1004 -S49. Change the page-breaking logic: \TeX\ reached \\{fire_up} with - $\\{best_page_break}=\\{null}$ in one case, - since the badness was too bad. @1005 -M50. Perform the operation \\{delete_token_ref}(\\{top_mark}) only when - $\\{top_mark}\ne0$. @1012 -F51. Make \\{scan_toks} omit the initial |{| of an |\output| routine. @473 -I52. Insert a comma to make memory usage statistics look better. @639 -# About seven good hours of debugging today. -# Tomorrow will be first-output day (I hope). -* 14 Mar 1978 -# (Came in evening after sleeping most of day, to get computer at better time.) -# (Some day we will have personal computers and will live more normally.) -# 8:30pm, began to enter corrections to yesterday's problems. -I53. Issue an error message for non-character in filename or in font name. @771 -I54. Display `|...|' for omitted stuff in \\{show_context} routine. @643 -L55. Watch out for the |SAIL| syntax `$\alpha+\beta\mathbin{\rm lsh}\gamma$'; - it doesn't shift $\alpha+\beta$ left (only $\beta$). @464 -# That error was very hard to track down; it created a spurious link field - and sent $\\{hash}[0]=\null$|\beta| to the scanner! -# I could have found this bug an hour sooner if I had looked at the correct - stack entries for \\{name} and \\{token_type}. -D56. Show the correct page number when tracing pages before output is shipped. @638 -F57. Remember to nullify a box after using it. @1079 -I58. Issue an error message if\/ |\box255| isn't consumed by the output routine. @1015 -# I'm having trouble with the |BAIL| debugger; - it makes an illegal memory reference and dies, - when single-stepping past the entry to recursive procedures - \\{hlist_out} and \\{vlist_out}. So I have to reload and be careful - to go thru these procedures at high speed. -P59. Fix bug in comment (memory parameter description said $\ge$ not $\le$). @11 -B60. Fix typo in definition of rule output (said $x,y$ not $\\{x0},\\{y0}$). - [This part of the code went away when |DVI| files were introduced.] -B61. Correct the embarrassing bug in shellsort, where I said `$\le\\{str}[k]$' - not `$\le t$'. - [The first \TeX\ had to sort all output by vertical position on page.] -M62. Make \\{start_input} set up \\{job_name} in the form needed by \\{shipout}; - it uses obsolete conventions. @532,537 -L63. Insert |(| and |)| into the |SAIL| macro definition of \\{new_string}. - [This macro was for pre-|DVI| output.] -M64. Unscramble the parameters of \\{out_rule}: - The declaration was $(\\{x0},\\{y0},\\{x1},\\{y1})$ - while the call was $(\\{x0},\\{x1},\\{y0},\\{y1})$. -# 4:30am, \TeX's first page is successfully output! -# (It was `|\titlepage\setcpage1\corners\eject\end|'.) -* 15 Mar 1978 -# 10:30pm. Today I'm instrumenting the line-breaking routine and putting it - through a bunch of tests. -# (The inserted instrumentation had bugs that won't be mentioned here.) -C65. Don't abort the job when \\{eq_destroy} redefines a - \TeX\ control sequence. @275 -# The first word of a paragraph won't be hyphenated \dots\ so be it! -T66. Fix the typo in \\{line_break} that spoils the test for - `letters in the same font'. @896 -# The effect of that typo was to suppress all hyphenation attempts. -B67\>25. Replace the space at paragraph end by fillglue, not by zero. @816 -L68. Pack the hyphen character properly into its node. @582 -T69. Fix a typo (`{\tentex\char'30}' for `|+|') - in the computation of \\{break_width}. @838 -M70. Change the |\end| maneuver; the present code doesn't end the job, - since I forgot that \\{back_input} uses \\{cur_tok}. @1054 -A71. Add a parameter to \\{try_break}, since the width is different at - a discretionary hyphen. [This problem will be solved differently in \TeX82, - when discretionaries become much more general.] @840 -F72. Bypass kern nodes in pre-hyphenation. @896 -F73. Supply code for the forgotten case `$<$ |"a"|' in pre-hyphenation. - [This case was later generalized to a test of \\{lc_code}.] @897 -B74. Change $\\{mem}[q]$ to $\\{prev_break}(q)$ in the - reverse-linking loop. @878 -# (Such blunders. Am I getting feeble-minded?) -A75. Introduce special logic for \\{eject_penalty}; I was wrong - to think that forced ejection was exactly like an - infinitely negative penalty. @851 -A76. Use $(1+b)^2-p^2$ when computing demerits with $p<0$. @859 -# 6:30am. The line-breaking algorithm appears to be working fine - and efficiently. - On small measures (about 20 characters per line), it gives overfull boxes - instead of spaced out ones. Surprising but satisfactory. -* 16 Mar 1978 -# 9pm. The plan for tonight is to test page breaking and more paragraphing. -G77. Insert `|\topskip|' glue at beginning of page. @1001 -I78. Add `|\pausing|' feature. @363 -M79. Fix discrepancy: In \\{make_accent} I called \\{vpackage} - with a pointer to the first list item, but \\{vpackage} itself assumes - that the parameter is a pointer to that pointer. [The - \\{vpackage} of \TeX82 will be different.] @668 -# I checked for other lapses like that. Result: 14 calls OK, 12 NG. -M80. Create a new temporary list head location, \\{hold_head}, since there's - a case where \\{vpackage} is improperly called with - parameter \\{temp_head}. [At this time \\{vpackage} uses \\{temp_head} - to make a list of all insertions found.] @1014 -# 11:30pm. The machine is tied up again. -F81. Write code to handle charnodes in vlists; I forgot that I'd decided - to allow them. [Later I prohibited them again!] @669 -F82. Combine the page lists before pruning off glue - in \\{fire_up}; otherwise the pruning doesn't go far enough. @1017 -B83\>25. Fix typo where line-breaking starts: `\\{fill_glue}' should be - `\\{new_glue}(\\{fill_glue})'. @816 -I84. Add |/q| to |xspool| command (cosmetic change). [This changes a system - command that causes \TeX\ output to be printed on the Xerox Graphics - Printer (XGP), the progenitor of future laser printers; - the |/q| option says that the queue of printing requests should be - displayed on the user's terminal.] @642 -E85. Don't write a form feed after the last page of output. @642 -# To fix this, I reorganized \\{ship_out}, and it became simpler. -T86. Correct a typo (`{\tentex\char'30}' for `|+|') in the \\{vlist_node} case - within \\{hlist_out}. [The output routines were quite different - at this time, because output went directly to the XGP.] @622 -I87. Change the message `|completed page|' to `|Completed for page|'. @638 -B88\>48. Fix yet another typo in the computation of \\{page_total}: My original - code said $\\{stretch}(p)$ instead of $\\{stretch}(q)$ (terrible). @1004 -P89. Document the dirty trick about \\{bot_mark}'s reference count. - [That trick is, fortunately, no longer useful.] @1016 -A90. Rethink the algorithm for contributing an insertion: The original code - tests for a page break after incrementing the totals but - before the \\{contrib_list} is updated. [\TeX78 handles insertions - in a hardwired manner that will be greatly generalized in \TeX82.] -F91. Fix \\{get_node} again: - After the variable memory overflows, control falls through to \\{found} - instead of going to the \\{overflow} call. @125 -# I spent several hours tracking down that data structure bug! -B92. Change \\{new_line} to \\{next_line} in yet another print command (see \#7). -A93\>75. Amend the line-breaking algorithm: - |\break| in paragraph doesn't work with really bad breaks. @851 -# A problem to be diagnosed tomorrow: Each time I run the test program, - the amount of memory in use grows by 13 cells not returned. -# Seven hours tonight. -* 17 Mar 1978 -G94. Introduce \\{dead_cycles} to keep |\end| active until \\{ship_out} - occurs. @1054 -E95. Don't call \\{line_break} with an empty list. @1096 -S96. Take proper account of the (infinite) fillglue when computing - the width of a paragraph line preceding a display. @1146 -M97. Add a new parameter to \\{hpack} so that \\{line_break} won't be called - at the wrong time. - [This is for the soon-to-be-obsolete feature described in \#40.] -L98. Give a warning message if there's an |\hfill| in the middle of a paragraph; - fillglue upsets the line breaker, - because floating-point calculations don't have sufficient accuracy. @868 -# I spent an hour looking for another bug in \TeX, but the following one was in \MF: - The \\{xgp_height} data in fonts had been supplied wrong. -# It took two hours to recompile 32 fonts with proto-\MF. -R99. Make \\{show_node_list} and \\{show_token_list} - more robust in the presence of software bugs. @182 -D100\>97. Do not remove nodes with \\{eject_penalty}, - when the new parameter to \\{hpack} is \\{true}. -E101\>97. Put a fast exit into \\{hpack}; e.g., at glue nodes, test `{\bf if} - \\{paragraphing} $\land$ $\langle$current width is large$\rangle$'. -# 2am. I have to go to bed ``early'' tonight. -* 18 Mar 1978 -# 3:30pm. (Saturday) -I102. Add a parameter to \\{check_mem} (to suppress display unless needed). @167 -G103. Introduce a user-settable parameter |\maxdepth|, and - pass it as a parameter to \\{vpackage}. @668 -# I realized the need for |\maxdepth| while fixing insertions (see \#90). -G104. Introduce a user-settable parameter for \\{line_break}: The constant - 2.0 in my original algorithm becomes |\jpar| - [later |\tolerance|], to be set like |\tracing|. @828 -D105. Reclaim the \\{eject_penalty} nodes removed during line-breaking. @879 -# (Those were the 13 extra nodes reported on Thursday.) -# The \\{init_align} procedure worked right the first time! -# Also \\{init_row}, \\{init_col}. But then\thinspace\dots -S106. Rethink the command codes: \\{endv} in a token list has too high a - code for the assumptions of \\{get_next}. @207 -A107. Add a \\{prev_cmd} variable for processing delimited macro parameters; - the original algorithm loses track of braces. - [The rules will change slightly in \TeX82, and - \\{rbrace_ptr} will take on a similar function.] @400 -S108. Make the \\{get_next} routine intercept |&| and |\cr| tokens. @342 -# I'd thought I could just put |&| and |\cr| into - \\{big_switch} [i.e., in the stomach of \TeX, not the eyes]; - that was a great big mistake. -R109. Make more error checks on \\{endv}; e.g., it must not occur in - a macro definition or call. @780 -S110\>108. No, rethink alignments again; the new program still fails! @768 -# For the first time I can glimpse the - hairiness of alignment in general (e.g., `|\halign{\u#\v&...|' - when |\u| and |\v| are defined to include |&|'s and possible - alignments themselves). -# I think there's a ``simple'' solution, by considering only whether - an alignment is currently active [in \S342]. -# 11:30pm. Went to bed. -* 19 Mar 1978 -# Woke up with ``better'' idea on how to handle |&| and |\cr|. -# (Namely, to consider a special kind of\/ |\def| whose parameters don't interrupt - on |&|'s and |\cr|'s.) -# But replaced this by a much better idea (to introduce \\{align_state}). -# 11pm. Began to use computer. Performed major surgery - (inserting \\{align_state} and updating the associated routines - and documentation). -D111. Pop the alignment stacks in \\{fin_align}. @800 -T112\>110. Fix a (newly inserted) typo in \\{show_context}. @314 -D113\>110. Set \\{align_state} false when a live |&| or |\cr| is found. - [Originally \\{align_state} was of type \\{boolean}.] @789 -I114. Insert |\cr| when `|}|' occurs prematurely in an alignment. @1132 -M115. Remember to record \\{glue_stretch} when packaging an unset node. @796 -# I had a mistake in |acphdr| definition of\/ |\quoteformat|; also extra spaces. -# My first test programs, used before today, were contrived to test macro - expansion, line-breaking, and page layout. -# Next I'm using a test program based on Volume 2. -C116. Make carriage-return, space, and tab equivalent for macro matching. @348 -F117. Omit the reference count node when displaying a mark. @176 -B118. Correct a silly slip: I wrote `\\{type_displacement}' instead of - `\\{value_displacement}' when packing data in a penalty node. @158 -M119. Don't go to \\{build_page} after seeing |\noindent|; \TeX\ isn't - ready for that. - [In the original program, this was an instance of a bad {\bf goto}.] @1091 -# I had undesired spaces coming thru the scanner in my macro definitions - of\/ |\tenpoint| [see {\sl The \TeX book}, page 414]. -# 4am. \TeX\ now knows enough to typeset page 1 of Volume 2! -# Also it did its first ``math formula'' (namely `|$X$|') without crucial error. -# (Except that the italic correction was missing for some reason.) -D120. Remember to decrement \\{cur_level} in \\{fin_align}. [The routines will - eventually become more general and use \\{unsave} here.] @800 -D121. Remember to increment \\{cur_level} in error corrections by - \\{handle_right_brace}. [A better procedure will be adopted later.] @1069 -T122. Fix a typo: (`|{|' instead of `|}|') in error message for $\\{mmode}+ - \\{math_shift}$. @1065 -R123\>99. Make \\{show_noad_list} more robust and more like the new - \\{show_node_list}. [The routines will be combined in \TeX82.] @690 -L124. Fix a typo in \\{char_box}: should say \\{font_info_real}. - [In \TeX78 a single array - is used for both \\{real} and \\{integer}; in \TeX82 things will be - \\{scaled}.] @554 -B125. Fix typos in the definitions of \\{default_rule_thickness} and - \\{big_op_spacing}; they shouldn't start at \\{mathex}(7). @701 -B126. Reverse the \\{before} and \\{after} conventions in math nodes. @1196 -# I had them backwards; this turned - hyphenation on just before math, and off just after it! -# Seven and a half hours debugging today. - Got through the test program a little more. - But \TeX\ blew up on `|$Y+1$|'; tomorrow I hope to find out why. -* 20 Mar 1978 -# 8pm. I decided to work next on a super-hairy formula. -C127. Change `|\ascii|' to `|\cc|' (character code). [This name will change again - later, to `|\char|'.] @265 -E128. Don't bother to store a penalty node at the beginning of |$$| when - the paragraph-so-far fits on a single line, since such a penalty - has already been stored. [These conventions will change later, and - the |\predisplaypenalty| will always be stored.] @1203 -S129. Avoid reference to \\{tail} in \\{build_page}, - if $\\{nest_ptr}>0$. @995 -B130. Correct a silly - slip in \\{math_comp} (the exact opposite of what I did in \#118). @1158 -B131. Rectify my mental lapse in \\{make_fraction}; I said \\{nucleus} instead of - \\{thickness}. @743 -F132. Mask off the math class when scanning delimiters. @1160 -C133. Allow an optional space after |\def{...}|. [This decision - will be retracted later.] @473 -# My test example is so complicated it causes the semantic stacks to overflow! -L134. Don't test for no pages output by looking at the channel status. @642 -T135. Fix typo in definition of\/ |\mathop| (\\{open_noad} not \\{op_noad}). @1156 -A136. Rewrite \\{fin_mlist}, because `|\left(...\above...\right)|' doesn't - parse correctly; the |\left| goes into the numerator, - the |\right| into the denominator. @1184 -B137. Correct the use of \\{depth_threshold} in \\{print_subsidiary_data}: - Simple fields get shown while others look empty. @692 -I138\>78. Return the carriage before showing the first line of a new file - when pausing. @538 -M139. Fix bug: The call \\{show_noad_list}(\\{mem}[|..|]) should be - \\{show_noad_list}(|..|), in the \\{incompleat_noad} case - of \\{show_activities}. @219 -# 3am. The whole messy formula has been parsed correctly into a tree. -# The easy part is done, now comes the harder part. -F140. Don't shift single characters down in \\{make_op}. @749 -D141. Make \\{clean_box} return a box (as its name implies), not an hlist. @720 -# Font info still isn't quite right, it has the wrong value of \\{quad}. -A142. Retain the italic correction when doing \\{rebox}; - can make $\\{glue_set}\ne0$ a flag for this. [A better - solution will be adopted later.] @715 -B143. Fix the bug that makes \\{rebox} bomb out: $\\{value}(p)$ should be - $\\{value}(\\{mem}[p])$. @715 -# 6am; ten hours today. \TeX\ didn't do |$\pi\over2$| correctly, but was close. -# I found that the \\{rebox} problem (\#142) went away when I fixed the - \\{clean_box} problem (\#141); but I - will leave the extra stuff about $\\{glue_set} \ne 0$ - in the program anyway, just for weird cases. -E144. Omit extra levels of boxing when possible in \\{clean_box}. @721 -# (To do this, I need to face the \\{rebox} problem anyway.) -* 21 Mar 1978 -# 10pm. The computer is rather heavily loaded tonight. -F145. Don't forget \\{thickness} when making a square-root sign (see \#131). - [The rule thickness will later be derived from the character height.] @737 -L146. Define $p$ local to the \\{make_fraction} routine. @743 -# Unwittingly using the global $p$ was a disaster. -I147. Don't show the amount of \\{glue_set} when it's zero. @186 -D148\>142. Make \\{glue_set} nonzero in the result of \\{var_delimiter}. @706 -F149. Fix bug: The \\{math_glue} function didn't return any result. @716 -T150. Fix typo in \\{char_box} ($c$ not $w$); this caused a subscripted~$P$ to come - out the same width as an unsubscripted~$P$. [Later changes in the rules - will move this computation to \S755.] @709 -P151\>144. Revise \\{clean_box} to do operations that are needed - often because of the \\{rebox} change. @720 -D152. Use the new \\{clean_box} to avoid a bug in |\sqrt{\raise...}|. @737 -Q153. Change the definition of\/ |\not| so that it's a relation - (which will butt against the following relation). [All math - symbols and Greek letters are defined in |INITEX| at this - time, not in a changeable format definition.] -I154. Give error message `{\tt Large delimiter must be - in mathex font}', instead of calling \\{confusion}, - since the error can occur. - [This particular error is impossible in \TeX82.] @706 -F155. Change the use of $p$ in \\{var_delimiter}; it isn't always set when I say - {\bf goto} \\{found}. @706 -# Another font problem now surfaced: The mathex meta-font didn't compute \TeX\ info - in a machine-independent way. - (It took two hours to correct this.) -D156. Don't forget to set $\\{type}(b)$ in all relevant cases of - \\{var_delimiter}. @708 -B157. Use the correct sign convention for \\{shift_amount} in \\{hpackage}. @653 -F158. Always kern by \\{delta} when there's no superscript. @755 -M159. Declare \\{space_table} to be $[0\,.\,.\,6,0\,.\,.\,6]$ - not $[0\,.\,.\,7,0\,.\,.\,7]$; otherwise its entries are - pre\-loaded into the wrong positions. [The \\{space_table} in \TeX78 is - $7\times7$; it will become $8\times8$ in \TeX82, - represented as a string called \\{math_spacing}.] @764 -C160. Use a negative value, not zero, to represent a null delimiter. - [Actually zero will come back again later.] @685 -C161\>127. Change |\cc| to |\char|. @265 -L162. Don't use tricky subtraction on packed data when changing $q$ to - an \\{ord_noad} in \\{mlist_to_hlist}; subtraction isn't always safe. @729 -B163. Fix two typos in the \\{space_table} (|*| for |0|). @764 -F164. Initialize \\{cur_size} everywhere (I forgot it in two places). @703 -A165. Reset \\{op_noad} before resetting \\{bin_noad}. @728 -F166. Treat $\\{display_style}+\\{cramped}$ the same as \\{display_style} - inside \\{make_op}. @749 -B167. Shift the character correctly in the non-|\displaystyle| case of - \\{make_op}. @749 -# Still another font problem: The italic corrections are wrong because - the corresponding array was declared \\{real} in proto-\MF\ (and - italic corrections were used in nonstandard way in |mathex|). -B168. Use \\{depth} instead of \\{height} in \\{var_delimiter}. - [Later, both were used.] @714 -Q169. Skew the accents according to the font \\{slant}. [Soon retracted.] @741 -# At this point I think nearly all the math routines have been exercised. -# Tomorrow they should work! -# Eight hours debugging today. -* 22 Mar 1978 -# (Wednesday, but actually Thursday: - I began at midnight because I was proofreading a paper.) -# I checked out the font access tables, slowly (i.e., all the |\mathcode| - and special-character name entries were catalogued). -Q170\>169. Do {\bf not\/} consider slants after all in the math accent - routine, since slanted math letters are put differently into fonts. @741 -B171. Don't use $q$ for two different things simultaneously - in \\{make_math_accent}. @738 -F172. Fix bug in \\{compact_list} (I forgot to advance the loop variable). - [This procedure became unnecessary in \TeX82.] -M173. Avoid conflict between \\{var_delimiter} and \\{mlist_to_hlist}, which - want to use \\{temp_head} simultaneously. @713 -T174. Fix bad typo in \\{overbar} routine ($b$ for $p$). @705 -# Finally \TeX\ got to \\{after_math} after dealing with that - hairy formula\thinspace\dots -T175. Fix another bad typo: $p$ for $b$ this time. @1199 -L176. Insert more parentheses (twice) because of `|lsh|' precedence - in |SAIL|. @1199 -M177\>36. Use the new hanging-indentation conventions when formatting displayed - equations. @1199 -Q178. Recompute penalties so that break is allowed after \\{punct_noad}s. @761 -F179. Center the large delimiters vertically. @749 -Q180. Round all rule sizes (up) before drawing them. @589 -Q181. Provide more space over $x$ in $\sqrt x$, and more space atop vincula. - @705,737 -Q182. Make large delimiters large enough to cover formula height - (important for subscripts, superscripts). @762 -I183. Insert |/ntn=33| on XGP prompt message so that complex math - won't blow the device driver. [See \#84.] -P184\>161. Update the comment about the meaning of\/ |\char|, since it - can be used in math mode. @208 -# Six hours today. -* 23 Mar 1978 -# 11pm, Maundy Thursday. -C185\>104. Make |\tracing| and |\jpar| follow block structure. @283 -# It took me two hours to enter yesterday's corrections, - because the changes were so numerous. -M186. Fix bad call on \\{begin_token_list} when marks are to be scanned. @396 -# Now the formula looks like it should, modulo problems in fonts. -Q187. Prevent an exponent from going below baseline + xheight/4. @758 -B188. Change \\{quad} to \\{math_quad} when finishing a display - (several places). @1199 -A189. Don't use \\{append_to_vlist} when putting an |\eqno| box on a separate - line, because the page shouldn't break at glue there. - [Later, the \\{append} will be used but preceded by an - infinite penalty.] @1205 -S190. Increase the input \\{stack_size}; \TeX\ may need to back up a lot. @11 -A191. Don't assume that $p$ always points to a glue node when - a page is broken. @1017 -A192. Use \\{epsilon} in \\{scan_spec} (I had used a different - small constant). [This was a kludge to avoid the extra - parameter later called \\{exactly} or \\{additional}.] @645 -R193. Introduce a new procedure \\{scan_positive_length}, to prevent - negative or zero lengths in \\{scan_rule_spec}. - [This restrictive rule will be ``overruled'' later.] @463 -B194. Fix ridiculous bug in the leaders routine of \\{vlist_out}: - I had the initialization {\sl inside\/} the loop! @635 -L195. Eliminate confusion between the two temp variables named $h$; - one is \\{real} and the other is \\{integer}. @629 -F196. Include forgotten case (\\{leader_node}) in \\{hlist_out}. - [Type \\{leader_node} will be absorbed - into \\{glue_node} in \TeX82.] @622 -F197. Don't forget to compute \\{x0} in variable horizontal rules. @624 -# Seven and a half hours today. -# \TeX\ seems to be ready to tackle my test file based on Volume 2. -S198. Calculate \\{y00} in horizontal rules as an integer number of pixels - from the baseline, so that the baseline doesn't jump. @589 -* 25 Mar 1978 -# 2am Saturday. (Might as well drop Friday.) -D199\>185. Make \\{def_code} consistent with the new |\tracing| conventions. - [Many tracing options are packed into a single - parameter called |\tracing|.] @1233 -R200\>185. Don't allow users to change nonexistent things like |\catcode1000|. @1232 -F201\>110. Reset \\{align_state} at beginning of \\{init_align}. @774 -F202. Don't forget \\{scan_left_brace} after |\noalign|. @785 -F203\>110. Set $\\{cur_cs}\gets 0$ in \\{get_next}, after |\cr| - causes a switch to the $\langle v_j\rangle$ template. @342 -# Ouch, that was a big bad bug, which took me three hours to find - (since I thought \TeX's low-level scanning mechanism was working). -# Note to myself: I\/ {\bf knew\/} it would be cleaner to define \\{get_next} - so that it sets \\{cur_cs} to zero every time it begins [i.e., - in \S341, where this change will in fact be made in \TeX82]. - But I had avoided this on grounds of efficiency in the inner loop. - Well, now I have earned this tiny bit of efficiency. -D204. Prohibit the first word of an unavailable node from becoming negative. - [The storage allocator of \TeX78 uses - a negative value to signify a node that is available, just as - `$\\{link}=\\{max_halfword}$' will signal availability in \TeX82.] @124 -# That was another bad one, it's not my night. -# At least I'm developing more subtle diagnostic techniques. -M205. Remember to un-negate the top \\{save_stack} entry - when \\{handle_right_brace} finishes an \\{insert_group}. - [This routine was completely revised in \TeX82.] @1100 -F206\>185. Initialize |\jpar| [i.e., |\tolerance|]. @240 -B207. Correct the display of insertion nodes by \\{show_node_list}. @188 -R208. Prevent \\{show_token_list} from generating really long strings - when in a loop. @292 -D209. Increase the reference count of \\{bot_mark} when - \\{vpackage} finds it. [This was later the job of \\{fire_up}.] @1016 -M210. Remember that the tokenlist for a mark ends with a |}|. @1101 -D211. Don't let \\{vpackage} lose the top insert. (It fails when - the very first item is a |\topinsert|.) @1014 -A212. And when that stupid code is corrected, make it handle - insertions first-in-first-out. @1018 -# Seven hours today. -* 26 Mar 1978 -# Easter Sunday, will work till sunrise. -I213. Add an `|i|' feature to the \\{error} recovery routine. @87 -I214. Include a prompt. @87 -C215. Ignore space after |\noalign{...}|. @1133 -# Otherwise, things are going well tonight; - I'm finding more bugs in my test program than in \TeX. -# The `|i|' feature is proving to be very helpful. -# I increased the size of \\{mem} - (now $\\{lo_mem_max}=3500$, $\\{mem_max}=10000$). -# In fact I just needed to increase it again - (now $\\{lo_mem_max}=4500$, $\\{mem_max}=11000$). -R216. Make |INITEX| output \\{mem_top} for consistency checking. @1307 -A217. Calculate the size of delimiters by considering the enclosed formula's - distance from the axis, not from the baseline. @762 -# I'm having trouble with a |SAIL| compiler bug; I must rearrange the program, - more or less at random, until it - compiles correctly. I hope the bug isn't more severe than it appears. -D218\>210. Don't put a new group on \\{save_stack} if a null mark is expanded. - [\TeX82 will remove the `|}|' from the mark text.] @386 -# I had to redo the typewriter-style font since its width tables were wrong. -# And I increased low-memory size again to 5500, then 6500. -# Finally the entire test program was \TeX ed. Happy Easter! Six hours today. -* 27 Mar 1978 -# Beginning at 2:30am. -A219. Move |\vcenter| processing to the first pass of \\{mlist_to_hlist}; - otherwise the height, depth, subscripts, etc., are way off. @733 -C220. Omit space after closing |$$|. @1200 -# Spacing is wrong in the formula $Y_1+\cdots+Y_k$; I have to rethink the use - of three dots. -G221. Make conditional thin space available to user as |\|{\tentex\char'34}. - [Later will retract this.] @226 -Q222. Introduce |\dispaskip| and |\dispbskip| [later called - |\abovedisplayshortskip| and |\belowdisplayshortskip|]. @226 -# Reminder: I need to test line-breaking with embedded math formulas. -I223. Make sure that $\\{interaction}\ne\\{error_stop_mode}$ - in the `|Whoa|' error [\\{fatal_error}]. @93 -B224. Fix a big mistake in the \\{style_node} routine (which points to a glue spec, - not to glue itself); somehow this didn't cause trouble yesterday. - [In \TeX78, style nodes double as placeholders for math glue - like thin spaces.] @732 -C225. Make |\fntfam| obey group structure. [\TeX78's |\fntfam| operation - is a combination of \TeX82's - |\textfont|, |\scriptfont|, and |\scriptscriptfont|.] @1234 -# At this point the test routine for Volume 2 works perfectly. -# But I will change the page width in order to check harder cases. -Q226\>178. Disable automatic line breaks after punctuation in math - (e.g., consider $f(x,y)$). @761 -S227. Represent italic corrections as boxes, not glue, so that they won't be broken. - [The |\kern| command doesn't exist yet.] @1113 -# Eight hours today. -B228. Fix a bug that just clobbered the memory: Call \\{free_avail}, not - \\{free_node}, in the \\{ins_node} case of \\{vpackage}. - [This logic will change completely in \TeX82.] @1019 -* 29 Mar 1978 -# (Wednesday) Again beginning at 2:30am. -Q229. Put still more space above and below fraction lines in displayed - formulas. @746 -G230\>189. Install an infinite penalty feature, which positively suppresses breaks; - use it in displayed formulas whose |\eqno| doesn't fit. @1205 -F231. Call \\{build_page} after finishing a display; and don't - go to the |\noindent| routine because of the next remark. @1200 -S232. Put |\parskip| glue just before a paragraph, not just after - (since it interferes with a penalty after). @1091 -# Although the test program gives correct output, it generates 46 locations - of variable-size memory and 280 of one-word memory that are not freed. -F233. Recycle the ulists and vlists in \\{fin_align}. @801 -M234\>25. Fix bug when deleting space at end of paragraph: - \\{delete_glue_ref}(\\{cur_node}) not - \\{delete_glue_ref}(\\{value}(\\{cur_node})). @816 -# There's also a more mysterious type of uncollected garbage, - a \\{fraction_noad} corresponding to - |$p\choose$|, an \\{incompleat_noad} not completed. -# Couldn't find that one, so I recompiled with \#233 and \#234 corrected. -# Now it gains just 10 locations of variable-size memory and 7 of the other kind. -I235. Extend \\{search_mem} to search \\{eqtb} also. @255 -D236\>143. Fix bug in \\{rebox} when $\\{list_ptr}(b)=0$. @715 -# The seven one-word nodes were generated by this bug; - \\{rebox}\kern-1pt\ put them onto a linked list starting with - $\\{mem}[0]$, growing at the far end! -D237. Remember to complete each \\{incompleat_noad}. @1184 -# This solved the other mystery. I had never noticed that my test output - was actually wrong: |$p\choose k$| came out as `$k$'. -# After these corrections, the test routine worked\thinspace\dots\ I feel - that \TeX\ is now pretty well debugged - (except perhaps for error recovery)---it's time to celebrate! -* 1 Apr 1978 -I238. Don't quit after file lookup fails. @530 -* 2 Apr 1978 -P239. Add \\{\TeX_font_area}, so that it's easier to change the - default library area associated with a device. @514 -* 3 Apr 1978 -L240. Insert parentheses again, to cope with the precedence of\/ |lsh| - when packing data. (See \#55 and \#176.) @1114 -# I had never tried $\\{hmode}+\\{discretionary}$ before! -M241. Remember that \\{back_error} requires \\{cur_tok} to be set. - (Problem can arise during error recovery on parameter |#|$n$ - with $n$ out of range.) @476 -* 4 Apr 1978 -I242. Add a deletion feature to the \\{error} routine. @88 -* 5 Apr 1978 -Q243. Reset \\{space_factor} after |\/| [this was later rescinded] - and after math in text. @1196 -* 10 Apr 1978 -G244\>104. Replace |\jpar| and |\tracing| by a new primitive |\chpar| for parameters. - It allows a user to change those quantities as well as the penalties for - hyphens, relations, binary ops, widows. @209 -* 14 May 1978 -# Beginning to typeset a real book (Volume 2, second edition), not just a test. -Q245. Make math in text end with spacing as if it were - followed by punctuation. [This rule will soon be rescinded.] @760 -F246. Insert |\times| into the hash table; I left it out by mistake. - [It will eventually move into |plain.tex|.] -C247. Change the names of Scandinavian accents from |\o|, |\oslash|, - |\Oslash| to |\a|, |\o|, |\O|. [This will also move to |plain|.] -* 17 May 1978 -B248. Fix a silly bug that hasn't been tweaked until today: - `|\halign to size|' [obsolete in \TeX82] used \\{vsize} - instead of \\{hsize}. @645 -* 19 May 1978 -G249. Add a |\topbaseline| feature [later called |\topskip|]. @1001 -Q250\>245. Subtract the math spacing change of May 14. @760 -A251. Skip past blanks in the \\{scan_math} procedure. [This blank-skipping - will eventually go into \\{scan_left_brace}.] @403 -I252. Introduce a \\{missing_brace} routine [later generalized] to improve - error recovery in $\\{mmode}+\\{math_shift}$, when the top - of \\{save_stack} isn't a \\{math_shift_group}. @1065 -Q253. Adjust the math spacing between closing parentheses and - Ord, Op, Open, Punct. @764 -Q254. Make the underline go further under. @735 -S255\>96. Compute the proper natural width when a displayed equation follows - a paragraph whose fillglue has been deleted by \\{line_break}. @1146 -* 20 May 1978 -A256. Fix the spurious value of \\{prev_depth} inside alignments. @775 -S257. Consider (and defeat) the following scenario: - The u and v lists are built in \\{init_align} using \\{temp_head}; - then while scanning `|\tabskip 2pt\rt{...}|' the macro |\rt| is expanded, - clobbering \\{temp_head}. @779 -# That bug was more subtle than usual. -Q258. Add the parameter \\{num3}, so that the positioning of\/ |\atop| - can be different from that for fractions. @700 -Q259. Add new parameters \\{delim1} and \\{delim2}, so that - |\comb| can use fixed size delimiters, not computed as with |\left|. @748 -* 22 May 1978 -C260\>221. Change |\|{\tentex\char'34} to |\|{\tentex\char'35} and introduce - |\|{\tentex\char'34} as the negative of\/ |\|{\tentex\char'35}. - [Later obsolete.] @226 -L261. Fix the display of negative penalty nodes; \\{show_node_list} is confused - when a negative value has been packed into the middle of a word. @194 -# Memory overflow just occurred with $\\{lo_mem_max}=7500$ and $\\{mem_max}=16384$. - So I have to go to 15-bit pointers. (A problem on 32-bit machines?) -* 23 May 1978 -Q262. Add a new parameter \\{big_op_spacing5}, for - extra space above and below limits of big displayed operators. @751 -F263. Initialize \\{incompleat_noad} in |$$\halign{...}$$|. @775 -# That was another heretofore-untested operation. How much of the code - has not yet been exercised? -F264\>238. Close the file when doing lookup-failure recovery. @27 -I265. Improve the error recovery for `|Extra &|'. @792 -R266. The top piece must be calculated mod 128 in \\{var_delimiter}, - to guarantee a valid subscript range. [Obsolete in \TeX82.] @546 -B267\>252. Fix a blunder in new \\{missing_brace} code. @1065 -B268\>262. Fix a blunder in new code for limits on display operators. @751 -* 26 May 1978 -Q269. Don't insert a new penalty after an explicit penalty in math mode. @767 -# The hash table overflowed; I ought to make it much bigger. -R270\>110. Avoid possible bad memory references in alignment - when there is erroneous input after |\cr|. [Instead of - \\{extra_info}, the value of \\{cur_align} in \TeX78 is negated, - because we need only distinguish |\cr| from |&|.] @789 -S271. Make the dimension parameters like |\hsize| all global, so that they can - be set in the |\output| routine. @279 -# This led to major simplifications, also to major surgery. -# [But it was a kludgy decision, overruled in \TeX82.] -D272\>94. Don't forget to set the type of the new null box in the |\end| routine. @1054 -* 27 May 1978 -# The data overflowed memory again, both low and high, doing Section 3.3.2. -R273\>184. Mask off extra bits of\/ |\char| in math mode, - to avoid bad memory references. @1151 -B274. Zero out the negative |\medmuskip| in script styles. @732 -* 29 May 1978 -S275. Be prepared to handle an undefined control sequence during \\{get_x_token}. - (Can fix this by brute force, using \\{get_token} instead of \\{get_next}.) - @380 -D276. Correct the superscript shift when a single character is raised. @758 -R277\>184. Mask off all but 7 bits in |\char| routine, - to avoid space-factor index out of range. @435 -# More memory capacity overflows. -E278\>22. Fix \TeX's overflow stop so that I don't have to wait for loading of the - |BAIL| debug routines. [System dependent.] @93 -F279. Remember to adjust the page number - when a file page ends in mid-macro. [System dependent.] @306 -* 5 Jun 1978 -R280. Make sure that the arguments of positioning commands don't overflow - their field size. @610 -I281. Report the excess amount when giving an overfull box warning. @666,677 -* 7 Jun 1978 -Q282. Use $\ge$ instead of $>$ as termination criterion in \\{var_delimiter}. @714 -R283. Disallow |\eject| in math mode. [In \TeX78, |\eject| is - distinct from |\break|; in horizontal mode it includes - \TeX82's `|\vadjust{\break}|'.] @1102 -Q284. Don't put too much clearance above |\sqrt| in text style. @737 -* 9 Jun 1978 -G285\>110. Make \\{align_state} an integer variable, not \\{boolean}, - so that |\eqalign| can be within another |\eqalign|. @309 -C286. A |\mark| should expand its input. @1101 -* 10 Jun 1978 -E287. Provide for preloading of fonts. @1320 -L288. Close the output file before switching to edit the input file with - the `|e|' option. @84 -E289. Return adjustments found by \\{hpack} to free storage if - they're not used. [Later, \\{hpack} will detach them only - when they're used.] @655 -Q290. Strive for consistency between \\{make_under} and \\{make_over}. - @735 -* 18 Jun 1978 -B291\>236. Fix a serious error in \\{rebox} - (`$b$' instead of `$\\{list_ptr}(b)$'). @715 -# Strange that such a bug would now surface for the first time! -C292. Remove |\deg| from |INITEX|, since macros suffice. -Q293. Add an extra hyphenation penalty for two hyphenated lines in a row. @859 -* 19 Jun 1978 -S294. Introduce the `\\{no_new_control_sequence}' switch. Among other things, - this will prevent an undefined control sequence following \\{scan_math} - from clobbering the save stack. @259 -* 20 Jun 1978 -L295. Change the badness test - `$\\{glue}\le0.0$' to `$\\{glue}\le0.0001$'. [\TeX82 will avoid such - problems by calculating badness without floating point arithmetic.] @99 -R296. Force \\{badness} to be at most $10^{19}$. @108 -I297. Add \\{end_template} for better error recovery in alignments. @375 -E298\>287. Make |INITEX| more like the real \TeX; my simple scheme for - font preloading was no good because it left thousands of `dead' - words in memory. @8 -E299. Economize disk space by using internal arrays in load - modules that aren't being reinitialized. [System dependent.] -E300. Move the declaration of \\{mem} to the semantics module, so that the - object code will be more efficient. [System dependent. The code of - \TeX78 was divided into separately compiled modules for syntax, - semantics, output, extensions, and general organization.] -* 21 Jun 1978 -# Today I'm working on the user manual. -C301. Disallow |\input| except in vertical mode. [I will change this in - \TeX82, treating |\input| as a case of expansion.] @378 -I302. Add error recovery for \\{endv} and \\{par_end} occurring in math mode. - @1047 -G303. Generalize |\ifT| to |\if T|. @506 -* 22 Jun 1978 -F304. Preload the |\bullet| [later done by |plain.tex|]. -D305\>256. Get the correct \\{prev_depth} at the beginning of an alignment. @775 -C306. Change |\eject| so that it ejects only once. @1000 -* 14 Jul 1978 -I307. Look in standard area if a file isn't found in the user's area. @537 -I308. Echo all online inputs in the transcript file. @71 -* 19 Jul 1978 -Q309. Equalize spacing when only one of numerator/denominator is big. @745 -Q310. Prevent subscript from getting too high above baseline. @757 -R311. Avoid infinite loop when stack overflows: \\{push_input} should say - `{\bf if} $\\{input_ptr}\ge\\{stack_size}\;\land\;\\{interaction}= - \\{error_stop_mode}$'. @321 -* 22 Jul 1978 -C312. Make |\quad| meaningful outside math mode. (All fonts must - be generated again!) @558 -I313. Show the nesting level at the end of \\{show_activities}. - [But I decided not to do this in \TeX82.] @218 -C314. Put in |\>| [namely, |\mskip\medmuskip|; - \TeX78 already has |\|{\tentex\char'35}, for conditional |\thinmuskip|, - as well as the negative amounts |\<|,~|\|{\tentex\char'34}]. - Change the name of vector accent from |\>| to |\b|. [Math spacing - operators will become much more general in \TeX82.] @716 -* 25 Jul 1978 -Q315\>94. Give the correct |\hsize| and |\vsize| to the null boxes created - at |\end|. @1054 -A316\>94. And don't ``append'' them. [Later this was changed, so - that it would work better with generalized output routines.] @1054 -I317\>297. Remove the control sequence |\endv|, - since error recovery is now better. @375 -I318. Define another mode of tracing: It says `|OK|' and stops after - |\showlists|. @1298 -Q319\>244. Give better defaults to parameters. [Later done by |plain.tex|.] @209 -I320. Allow more bits in the packed representation of\/ |\showboxdepth|. @238 -I321. Scan past delimiters and/or dimensions when recovering from - ambiguous fractions. @1183 -R322. Reduce accent numbers modulo 128 or 512, depending on the - mode. @1165 -I323. Include a warning, `|(\end occurred on level ...)|'. @1335 -* 28 Jul 1978 -# (I'm writing Chapter 27 of the manual: `Recovery From Errors'.) -I324. Improve the error message in \\{scan_digit}. [This procedure will change - its name to \\{scan_eight_bit_int}, when the number of registers - increases from 10 to~256.] @433 -I325. Don't report overfull boxes if they're less than .1~point - over. @666,677 -I326. Give the user extra chances to define the font, if \\{read_font_info} - is unsuccessful. @560 -I327. Change default recovery for bad parameter number from |#1| to |##|, since - |#1| won't always work and since |##| is probably intended. @479 -I328. Omit the |"Negative?"| message on things like \\{scan_char_num}. @435 -I329. Improve error recovery when a large delimiter isn't in family~3. - [Obsolete.] -I330. Give a more appropriate error message when the input is `|$\right|'. @1192 -# Currently \TeX\ says `|Missing $|'! -I331. Call \\{back_input} before the error message in \\{back_error}, - not afterwards. @327 -* 1 Aug 1978 -I332. Give an appropriate warning when there's no input file and the user - types `|e|'. @84 -L333. Increase the system pushdownlist size so that the manual will compile. - [Procedures \\{hlist_out} and \\{vlist_out} can recurse deeply.] -# Yesterday I distributed 45 preliminary copies of the manual; today I - took out the ``debugging hooks'' and put \TeX\ up as a system program. -* 2 Aug 1978 -# I'm typing Volume 2 again (currently in Section 4.2.2). Culture shock! -G334. Introduce a |\ragged| parameter, to indicate a degree of raggedness. - [Previously, ragged-right setting was performed when the - |\tolerance|/100 was odd! Eventually a better approach, - with |\rightskip| and such things, will be discovered.] @886 -Q335. Omit the `widow penalty' in one-line paragraphs. @890 -* 5 Aug 1978 -G336. Generalize |\pageno| to |\count|\<digit>. @236 -D337\>285. Update \\{align_state} when recovering from `|Missing {|' and - `|Extra }|' errors. @1069,1127 -I338. Show ``runaway'' tokens, making it easier to pinpoint an error. @306 -* 22 Aug 1978 -G339. Add |\predisplaypenalty|. @1203 -I340. Clarify error messages; they should indicate when something has been - inserted, etc. @1064 -* 23 Aug 1978 -I341\>114. Substitute `|Extra }|' for the losing `|Missing \cr|' error message. @1069 -I342\>213. Go past online insertions in \\{show_context}. @311 -Q343. Exact no penalty for breaking one line before a display. @1145 -I344\>338. Check for runaways at end of file. @362 -I345. Give error message when a macro argument begins with |}|. @395 -* 24 Aug 1978 -L346\>213. Remove extra line-feed in \\{show_context} after printing insertions. - [System dependent.] @318 -* 25 Aug 1978 -Q347. Leave no glue at top of page, even after |\eject|. @997 -* 27 Aug 1978 -P348. Adopt Guy Steele's new version of the \TeX\ source files. [He has - recently made a copy and modified it by introducing - compile-time switches for MIT conventions as an alternative to SUAI. - This is the first time that \TeX\ is being ported to another site; - additional switches for PARC, TENEX, TOPS10, and TOPS20 will be - added later, using the Steele style.] -* 1 Sep 1978 -Q349. Don't pass over leader nodes in the \\{try_break} background - computation. [At this time, leaders have not yet been - unified with glue.] @837 -Q350\>82. Prune away all penalties at the top of a page. @997 -* 4 Sep 1978 -I351\>338. Include `|\|' in error message about a runaway argument. @306 -* 8 Sep 1978 -# I just remade all the fonts, with increased ligature field size. -B352\>350. Insert a necessary {\bf goto} statement in the first branch of - the new penalty routine within \\{build_page}. @997 -* 30 Sep 1978 -M353\>338. Make the token list for runaway arguments meaningful outside - of \\{macro_call}. (I just had a runaway argument ending with - `|\lcm|', which turned out to be the - control sequence in hashtable location 0.) @371 -R354. Avoid infinite loop when recovering from |$$| in - restricted horizontal mode. @1138 -L355. Fix two hyphenation bugs related to |-ages|, |-ers|. - [A completely new algorithm for hyphenation will go into \TeX82.] -Q356. Add |-est| to hyphenation routine; - also disable |puz-zled| and |rat-tled|, etc. -* 4 Oct 1978 -G357. Add new primitive |\vtop|. @1087 -Q358. Treat implicit kerns properly after discretionary hyphens have been - inserted. @914 -* 4 Nov 1978 -Q359. Forget the half quad originally required at left and right when - centering displayed equations without equation numbers. @1202 -* 11 Nov 1978 -R360. Don't let the postamble come out empty. [This could occur if no fonts were - selected.] @642 -* 15 Nov 1978 -C361. Allow optional space after digit in \\{scan_int} routine. @444 -* 17 Nov 1978 -R362. Make the \\{check_mem} procedure slightly more robust. @167 -* 20 Nov 1978 -C363. Make the |\par| in a |\def| match the |\par| that comes automatically with - a blank line. (Suggested by Terry Winograd.) @351 -G364. Add new parameter |\mathsurround| for spacing before and after - math in text. @1196 -G365. Extend |\advance| to allow increase by other than unity. [At this - time it applies only to the ten |\count| registers, and it is - called |\advcount|.] @1238 -* 25 Nov 1978 -G366. Add a new primitive: |\unskip|. @1105 -G367. Add new primitives |\uppercase| and |\lowercase|. @1288 -* 28 Nov 1978 -M368\>338. Don't let |\mark| and \\{macro_call} interfere with each other's - \\{scanner_status}. @306 -M369. Omit extra |}| after \\{show_node_list} shows a |\mark|, - since the right brace is already there. (See \#210.) @176 -G370. Add a new primitive suggested by Terry Winograd: |\xdef|. @1218 -* 29 Nov 1978 -S371. Delete a space following |\else{...}| also in the - false case. [\TeX78 uses braces, not |\fi|, for conditionals.] -D372\>320. Make |\tracing| set |\showboxbreadth| as advertised. @198 -F373. Account properly for kerns in width calculations of \\{line_break}. - @866 -Q374\>364. Delete a \\{math_node} at the beginning of a line. @148 -A375\>339. Guarantee that |\predisplaypenalty=10000| will suppress page breaking - before a display. @1005 -* 6 Dec 1978 -L376. Change the file opening statement to allow lines up to 150 characters long. - [System dependent.] -* 16 Jan 1979 -F377\>365. Initialize \\{negative} properly in the |\advance| routine - with a |\count| as argument. @440 -* 20 Jan 1979 -R378. Try to keep complex, buggy preambles of alignments from - crashing the program. @789 -* 17 Feb 1979 -I379\>376. Give more detailed information when warning about a - long line being broken. [System dependent; - the buffer size in \TeX78 is very limited.] -L380. Declare $p$ local to \\{try_break}, for the ``rare'' case code. - [My original program included the following comment: - ``This case can arise only in weird circumstances due to - changing line lengths, and the code may in fact never be executed.'' - Later Michael Plass will discover that variable line lengths require an - entirely different algorithm, using \\{last_special_line}.] - @847 -F381\>334. Don't omit the raggedness correction when the - last line of paragraph has to shrink. [Obsolete in \TeX82.] -* 22 Feb 1979 -F382\>363. Don't forget to return from \\{get_x_token} after finding |\par|. @351 -Q383. Add a new parameter: |\lineskiplimit|. @679 -C384. Change the syntactic sugar: - `|\hbox par|' replaces `|\hjust to ...{overfull}|'. [This vastly improves on - the old idea (see \#40), but there still is no internal vertical mode.] -C385. Introduce new names |\hbox| and |\vbox| for |\hjust| and |\vjust|. @1071 -G386. Add a new condition: |\ifpos|. [It will later be - generalized to |\ifnum| and |\ifdim|.] @513 -G387. Add |vu| and |\varunit|. [\TeX82 will eventually allow arbitrary - internal dimensions as units of measure.] @453 -G388\>312. Add an |em| unit. @455 -C389. Legalize |\hbox spread |\<negative dimension> [since \\{scan_spec} - no longer uses the sign as a flag]. @645 -* 10 Mar 1979 -C390\>370. Make \\{scan_toks} expand |\count| during |\xdef|. [This will - change later when |\the| and |\number| are introduced.] @367 -* 23 Mar 1979 -Q391. Put only 100000\thinspace pt stretch at the end of a paragraph instead of - 10000000000\thinspace pt. - [In \TeX78, ``infinite'' glue is actually finite but large; in the - language of \TeX82 we would say that |\parfillskip|, which is - not yet user-settable, is being changed to be like |\hfil| instead of - like |\hfill|.] @816 -Q392. Treat the last line of a paragraph more consistently with - the other lines (e.g., when |\hfil| appears in mid-paragraph), by - effectively inserting \\{inf_penalty} at the end. @816 -* 31 Mar 1979 -S393. Ensure that penalty nodes aren't wiped out, in weird cases where - breaks occur at penalties that normally disappear. @879 -* 27 Apr 1979 -A394. Correct the page number count when files begin with an empty page. - [System dependent.] -G395. Allow the \\{math_code} table to be changeable via |\chcode|. - [In \TeX82, |\chcode| will split into |\mathcode| and |\catcode|.] @1232 -I396\>332. Don't accept `|e|' after an error message if not - inputting from a file. @84 -* 29 May 1979 -F397. Don't call \\{end_file_reading} if you haven't already invoked - \\{begin_file_reading}; this could happen when trying to - recover from an error in \\{start_input}.@537 -* 7 Jun 1979 -A398\>306. Be sure to eject two pages, - when |\eject| comes just at the time another break is preferable - (e.g., when the page has just become too full). @1005 -* 27 Jun 1979 -I399\>354. Don't say `|You can't do that in math mode|' when the user - says `|$$|' in restricted horizontal mode! @1138 -* 30 Jun 1979 -G400. Add |wd|, |dp|, |ht| dimension units. @455 -I401\>307. Don't try the system area for file names whose area is explicitly - indicated. @537 -* 1 Jul 1979 -G402. Allow letters as (ASCII) numbers [without the |`| marker introduced - later]. @442 -* 2 Jul 1979 -F403. Fix a |\gdef| bug: If the control sequence was never defined before - [this later became the \\{restore_zero} option], - don't remove it at group end. @282 -* 16 Jul 1979 -I404\>320. Update \\{show_noad_list} to be like \\{show_node_list}. - [The two routines, originally separate, will be merged in \TeX82.] @238 -* 18 Jul 1979 -G405. Extend capacity from 32 fonts to 64 fonts if desired. @134 -Q406. Add new \\{extra_space} parameter to all text fonts (requested - by Frances Yao). @558 -F407. Make each \\{node_noad} print properly in \\{show_noad_list}. @183 -Q408. Make |\jpar| allow any break if it is 1000000 or more. - [In \TeX82, a |\tolerance| of 10000 or more allows any break.] @851 -* 23 Jul 1979 -E409. Introduce new primitives |\hfil|, |\vfil|, |\hfilneg|, |\vfilneg|. @1058 -G410. Add |\ifmmode|. @501 -G411. Add |\firstmark|. @1012,1016 -C412. Allow break at leaders (horizontal mode only). @149 -* 25 Jul 1979 -I413\>213. Revise \\{error} so that online insertions work properly - after end-of-file errors. @336 -B414\>411. Change `{\bf if} $\\{first_mark}\ne0$' to - `{\bf if} $\\{first_mark}\ge0$' [because $-1$ - is used to indicate `not yet given a value']. @1012 -* 28 Jul 1979 -C415\>370. Stop |\xdef| from expanding control sequences after |\def|'s. - [This decision will be rescinded later, after several more years of - experience with macro expansion will suggest better ways to cure - the problem.] @366 -I416. Change symbolic printout for control symbols. [System dependent.] @49 -L417\>308. Avoid linefeeds in the transcript file. [System dependent.] -C418\>370. Expand |\topmark|, etc., in |\xdef|. @366 -* 4 Aug 1979 -B419\>413. Fix an error introduced recently: |\par| was suddenly - omitted at end of page. [System dependent.] -* 11 Aug 1979 -P420. Change error messages that use |SAIL| characters not in - standard ASCII. @360 -* 28 Aug 1979 -D421\>411. Move the command `$\\{first_mark}\gets-1$' from \\{vpackage} - to \\{fire_up}. @1012 -S422\>403. Correct a serious |\gdef| bug: - Control sequences don't obey a last-in-first-out - discipline, so \TeX\ loses things from the hash table when deleting a - control sequence. @259 -# To fix this, I either need to restrict \TeX\ (so that - |\gdef| can be used inside a group only for control sequences already - defined on the outer level) or need to change the hash table algorithm. - Although all applications of \TeX\ known to me will agree to the - former restriction, I've chosen the latter alternative, because it gives me - a chance to improve the language: Control sequences - of arbitrary length will now be recognized. -D423. Make sure that \\{unsave} cannot call \\{eq_destroy} - with a value from the upper part of \\{eqtb}. @282 -# I noticed this long-standing bug while fixing \#422. It had very - low probability of causing damage (e.g., it required a certain field - of a floating-point number to have a certain value), but it would have - been devastating on the day it first showed up! -* 29 Aug 1979 -F424. Call \\{eq_destroy} when a control sequence is |\gdef|'ed - after being |\def|'ed. @283 -F425\>418. Treat the first token consistently - when |\topmark| and its cousins are expanded in \\{scan_toks}. @477 -# Now I've checked things pretty carefully and I think \TeX\ is ``fully debugged.'' -* 25 Jan 1980 -I426\>338. Display runaway alignment preambles. @306 -G427. Introduce active characters (one-stroke control sequences). - [I don't yet go - all the way: The meanings of `|x|' and `|\x|' have to be identical.] @344 -* 7 Feb 1980 -F428\>314. Fix a glaring omission: Op space |\>| was - never implemented in math mode! @716 -* 25 Feb 1980 -G429. Add a new dimension `|ex|' (for units of xheight). @455 -* 3 Mar 1980 -C430\>427. Allow the control sequence |\:| to be redefined - [it was the `select font' operator]; - this allows the character |:| to be active. [Obsolete.] -* 23 Mar 1980 -# An extend-\TeX-for-the-eighties party: -G431. Add a new |\copy| feature. @204 -G432. Add a new |\unbox| feature. @1110 -G433. Add a new |\open| feature [later |\openout|]. @1351 -G434. Add a new |\send| feature [later |\write|]. @1352 -G435. Add a new |\leqno| feature, requested by MDS. @1204 -G436. Add a new |\ifdimen| feature [later |\ifdim|]. @513 -C437. Make |\|\<space> in vertical mode begin a paragraph. @1090 -G438. Add a new |\font| feature [replacing the silly previous convention that - a font must be defined when it is first selected]. @1256 -G439. Add new |\parval| and |\codeval| features [later - |\the|\thinspace\<whatever>\thinspace]. @413 -C440\>427. Don't let active characters gobble the following space. @344 -G441\>208. Add a new parameter to govern amount of token list dumped. [Obsolete.] @295 -G442. Add a new |\linebreak| feature [later replaced by |\break|]. @831 -* 25 Mar 1980 -# (Still working on the above, also thought of more.) -G443. Add a new |\mskip| feature. @716 -G444. Add a new |\newname| feature (soon changed to |\let|). @1221 -G445\>430. Allow any control sequence to be redefined. @275 -I446. Send the output to the user's current file area, even when - input comes from elsewhere. @532 -* 27 Mar 1980 -Q447. Compute the xheight for accents in math mode from - family~1, not family~3. [Obsolete.] -* 28 Mar 1980 -Q448. Increase minimum clearance between subscript and superscript. @759 -* 29 Mar 1980 -Q449\>222. When a display follows a display, the second should have the - `shortskip' glue. @1146 -* 4 Apr 1980 -A450\>445. Look at current token meanings when trying to recognize - |\tabskip| in alignment preambles. @782 -* 23 Apr 1980 -I451. Estimate the length of printed output, for the new - priority feature on our XGP device driver. [System dependent.] -C452\>434. Break long |\send| lines - into pieces so that the file can be read in again. [System dependent.] -* 19 May 1980 -Q453\>182. Don't make |\left| and |\right| delimiters too large; they - need to be only 90\% of the enclosed size. [This eventually - became |\delimiterfactor|.] @762 -* 21 May 1980 -G454. Add a new |\pagebreak| feature [later |\vadjust{\break}|]. @655 -* 13 Jun 1980 -# Today I'm beginning to overhaul the line-breaking routine, - and I'll also install miscellaneous goodies. -G455. Allow a radical sign to be in different font positions. @737 -E456. Clear empty tokenlists off input stacks to allow deeper recursions - (suggested by Jim Boyce's macros for chess positions). @325 -G457. Make |\spaceskip| and |\parfillskip| changeable. @1228 -G458. Add a new parameter |\rfudge| (per request of Zippel) [later |\mag|]. @288 -G459. Add a new parameter |\loose| [later |\looseness|]; - now parameters are allowed to take negative values. @875 -E460. Remove the variable \\{just_par}. [Obsolete; it was the \\{real} equivalent - of an \\{integer}]. -* 14 Jun 1980 -Q461. Install new line-breaking routines, including |\parshape|. - (These major changes are introduced as Michael Plass - and I write our article.) @813 -G462. Add a new parameter |\exhyf| [later |\exhyphenpenalty|]. @869 -* 16 Jun 1980 -S463\>444. Change conventions in \\{eqtb} so that glue is distinguishable - from other equivalents. @275 -A464\>444. Don't expand |\b| in |\xdef{\d\b{...}}| after |\let\d=\def|. - [Obsolete.] -D465\>444. Avoid creating dead storage when doing \\{unsave} in certain regions. @275 -* 17 Jun 1980 -C466. Allow negative dimensions in rules. @138 -* 19 Jun 1980 -B467\>463. Make the new test for glue at the outer level of \\{show_eqtb}. @252 -* 27 Jun 1980 -Q468\>453. Don't let |\left| and |\right| become too small for big matrices. - [This eventually became |\delimitershortfall|.] @762 -* 3 Aug 1980 -Q469. Don't move extra-wide, numbered equations flush left unless - they begin with glue. @1202 -* 15 Sep 1980 -M470\>461. Say `$\ge\\{fz}$' instead of `$>\\{fz}$' in the pre-hyphenation - routine; I'd forgotten my definition of \\{fz} [a variable used to test - for a sequence of lowercase letters in the same font]. @897 -R471\>395. Check the range of the index in |\chcode| before saving the old value. - @1232 -* 18 Sep 1980 -D472\>457. Don't forget to increase the reference count to |\parfillskip|, - or it will mysteriously vanish. @816 -* 19 Sep 1980 -C473\>412. Make leaders break like glue in both horizontal and vertical modes. - @149 -Q474\>364. Make |\mathsurround| break properly at left and right end of lines. - @879 -* 13 Oct 1980 -I475\>461. Remove spurious overfull boxes generated when the looseness criterion - fails. [Obsolete.] -A476\>461. Redesign the iteration for looseness; breakpoints were not chosen - optimally. @875 -E477\>461. Avoid storing a lot of breakpoints when they are dominated by - others. @836 -B478\>366. Don't say `\\{cur_node}' when you mean `\\{mem}[\\{cur_node}]'. @1105 -Q479\>461. Prefer the oldest break to the youngest break - when two break nodes have the same total demerits. @836 -L480\>461. Don't make badness too big for floating-point calculations, - when forced to make an overfull box. [Obsolete.] -* 10 Dec 1980 -R481. Make it impossible to get unmatched `|}|' in a delimited macro - argument. @392 -G482. Add new |\topsep| and |\botsep| features. [These are \TeX78's - way to put space at the edge of inserts, - replaced in \TeX82 by the |\skip| register corresponding - to an |\insert| class.] @1009 -* 6 Jan 1981 -P483. Install new routines for reading the font metrics, using Ramshaw's - |TFM| files instead of\/ |TFX| files. @539 -I484. Abort after reporting 100 errors, if not pausing on errors. @82 -G485. Add new |\spacefactor| and |\specskip| and |\skip| primitives. - [At this time we write `|\specskip3=10pt|' and `|\skip3|' for what - will become `|\skip3=10pt|' and `|\hskip\skip3|' in \TeX82.] @1060 -G486\>366. |\unskip| is now allowed in internal vertical mode. @1105 -* 26 Jan 1981 -B487\>482. Don't say `\\{mem}[$q$]' when you mean `$q$'. (See \#143 and \#478.) @1009 -* 27 Feb 1981 -I488\>417. Put some linefeeds back into the transcript file, in order - to prevent overprinting in listings. [System dependent.] -G489. Add a new |\dpenalty| feature [later |\postdisplaypenalty|]. @1205 -G490. Add the dimension |cc| for European users. @458 -C491. Make \\{scan_keyword} match uppercase letters as alternatives - to lowercase ones (suggested by Barbara Beeton's experiments - with |\uppercase|). @407 -I492. Add nonstop mode so that overnight batch processing is possible. @73 -* 2 Mar 1981 -S493\>422. Fix a still more serious |\gdef| bug: The generality - of\/ |\gdef| almost makes it a crime to - forget {\sl any\/} control sequence names, ever! (The previous bug was - only the tip of an iceberg.) @259 -I494. Issue warning message at the end of a file page if nesting level isn't zero. - [System dependent.] -* 5 Mar 1981 -I495. Keep track of maximum memory usage, for statistical - reporting. [Obsolete.] @125 -Q496\>350. Prune away glue and penalties at top of page after marks, sends, - inserts. @1000 -G497. Allow |\mark| in horizontal mode. [Later it will - be |\vadjust{\mark...}|.] @655 -C498. Allow optional space before a required left brace, e.g., |\if AA {...}|. - [See \#251.] @403 -I499. Issue an incomplete |\if| error, to help catch a bad |\if|. @336 -* 17 Mar 1981 -I500\>494. Omit the warning message at end of a file page unless - the nesting level has changed on that page. [System dependent.] -Q501\>310. Fix the spacing when there is a very tall subscript with - a superscript. @759 -* 20 Mar 1981 -S502\>371. Make space-eating after |\else| fully consistent between the - true and false cases. [Obsolete.] -* 24 Mar 1981 -B503\>496. Change \\{glue_spec_size} to \\{ins_spec_size} - in \\{vpackage} [where insertions are done]. [Obsolete.] -* 5 Apr 1981 -B504\>501. Fix a typo (`|+|' instead of `|-|') in the new subscript code; - this shifted certain subscripts down instead of up. @759 -* 18 Apr 1981 -G505. Make leaders with rules of specified size act like variable rules. - @626,635 -* 29 Apr 1981 -A506\>461. Don't consider $\\{badness}>\\{threshold}$ at a line |\break| - except in an emergency. @854 -* 13 Jul 1981 -C507\>402. Allow other characters as numbers. @442 -R508\>294. Avoid dead storage if a \\{no_new_control_sequence} error occurs. - [Obsolete.] @259 -G509. Add a new |\ifx| feature. @507 -G510. Add new features |\xleaders| and |\cleaders|. @626,635 -* 14 Jul 1981 -S511\>507. Amend the new code for constants; - the `|.|' in `|.5|' is thought to mean \O{056}! @442 -L512\>507. And fix an egregious blunder in that code: New commands at the - end of a procedure are ignored when earlier statements - exit via {\bf return}. @442 -* 4 Aug 1981 -P513. Accept alphabetic codes for all online error recovery options, - instead of insisting on control codes like line feed or form feed. - [The original error-recovery codes were suggested by the - conventions of the |SAIL| compiler.] @84 -G514. Add a new |\thebox| feature [later |\lastbox|]. @1079 -* 7 Aug 1981 -G515. Add |fil|, |fill|, and |filll| as units for glue stretching - or shrinking. @454 -I516. Suppress the overfull box error when shrinkage amount is negative. @664 -* 9 Aug 1981 -Q517. Let unset boxes inherit the size of their parent in alignments. @810 -* 12 Apr 1982 -F518. Make |INITEX| dump out the \\{font_dsize} array needed by - the new |DVI| output module. @1322 -* 1 May 1982 -S519\>151. Fix \\{clean_box} so that \\{mlist_to_hlist} cannot make - $\\{link}(q)=0$ and $\\{type}(q)=\\{glue_node}$. @720 -# [That was the historic final change to \TeX78. All subsequent entries - in this log refer to \TeX82.] -* 15 Jul 1982 -# Finished draft of test program and began debugging about 1430 - [2:30\thinspace pm]. Taking my time. -BX1. Change \\{eqtb}[\\{cur_font}] to \\{eqtb}[\\{cur_font_loc}]. @232 -# Not logging changes to the exposition. -# Compile time is about 2 minutes CPU, times 5 for time-sharing; - add another half minute for linking and loading. -# Hash table and \\{get_next} seem to be working, with no changes needed! -# Time out 1630--1815 for Jill's birthday party. -LX2. Insert {\bf begin} \dots~{\bf end} around \\{dump_int} macro. @1305 -IX3. Print two blank spaces before date in \\{open_log_file}. @536 -AX4. Update $x$ and \\{var_used} outside the {\bf for} loop. @1311 -BX5. Change {\bf if} $=$ to {\bf if} $\ne$ as loop exit condition. @1315,1316 -# The |TRIP| test should preload more fonts. -LX6. Insert {\bf begin} \dots~{\bf end} around statistics output. @1334 -FX7. Must \\{get_x_token} when scanning a number. @445 -IX8. Interactive \\{debug_help} needs to print a newline. @1338 -FX9. Include \\{ignore_spaces} and \\{math_accent} in \\{print_cmd_char} cases. @266 -IX10. Don't call \\{confusion} when \\{print_cmd_char} sees unknown code. @298 -# Compiler bug causes stack overflow. Retiring for the night at 2145. -* 16 Jul 1982 -# Starting at 0700; DRF has fixed the compiler. -RX11. Allow arbitrary integer parameters in diagnostic print routines. @237,699 -TX12. Say \\{cur_tok}, not \\{cur_val}, when you mean \\{cur_tok}. @440 -FX13. Make |\pause| effective also on first line of a file. @538 -FX14. Show context after online deletion. @88 -IX15. Bypass reference count when \\{debug_help} shows a token list. @1339 -BX16. Change `{\bf case} $p$' to `{\bf case} \\{type}($p$)'. @1000 -FX17. Fix timing of \\{print_ln} when scrolling help messages. @90 -PX18. Make \\{other_char} the default category for ASCII control codes too. @232 -AX19. Use special scanning method for font number in \\{new_font}. @1257 -# Eating lunch, 1020--1035, while the machine slowly recompiles everything. -FX20. Don't forget to increase $k$ in the {\bf while} loop. @355 -DX21. Adjust \\{limit} properly after line changed when pausing. @363 -FX22. Remember to return a value in \\{new_spec} and \\{new_penalty}. @151,158 -# Now stepping through \\{line_break} in simple case. -AX23. Don't prune unwanted nodes if $\\{cur_p}=\\{null}$. @877 -FX24. Print a closing parenthesis when displaying glue nodes. @189 -SX25. Use \\{last}, not \\{limit}, in \\{term_input}; else error prompt causes - trouble when $\\{state}=\\{token_list}$. @71,87 -DX26. Set $\\{first}\gets\\{limit}+1$ after \\{init_terminal}. @331 -DX27. Make sure \\{set_trick_count} is always performed. @317 -* 17 Jul 1982 -IX28. Add new diagnostic feature |\tracingcommands|. @299,1031 -# Debugging of system-dependent code not shown in this log. -# Tangling \TeX\ now takes 1.75 minutes; about 75K bytes, 108K tokens. -# Redundant semicolon sends Pascal compiler into infinite loop! -FX29. Initialize $\\{passive}\gets\\{null}$. @864 -AX30. Fix pseudoprinting when the line is empty. @318 -EX31. Merge adjacent free areas of dynamic memory before dumping. @131 -FX32. Print the word |mode| in \\{print_mode}. @211 -IX33. Improve message and help in case of weird error. @415 -GX34. Allow optional space after |\def| and similar constructions. @473 -MX35. Declare \\{alpha} to be integer in \\{read_font_info}. @560 -AX36. Fix timing of \\{back_input} in \\{scan_dimen}. @448 -IX37. Back up after missing number error. @446 -IX38. Show the `|at|' size that is considered improper. @1259 -IX39. Streamline the dialog in \\{debug_help}. @1338 -MX40. Take output of \\{the_toks} from the advertised place. @467,1297 -TX41. Say \\{trie_fix}($q$), not \\{trie_fix}($p$). @959 -SX42. Decrease low limit of \\{error_count} to $-1$. @76 -* 18 Jul 1982 -FX43. Clear initial reference count of macro definitions. @473 -AX44. Fix timing of \\{back_input} in \\{scan_glue}. @461 -BX45. Use \\{cur_val_level}, not \\{cur_val}, when checking levels. @461 -BX46. Multiply |fil| units by $2^{16}$ for correct scaling. @454 -BX47. Don't confuse \\{glue_base} with \\{skip_base}. @1237 -AX48. Fix \\{print_scaled} so that 0.01 doesn't come out |0.1|. @103 -IX49\>X28. Show mode changes when tracing commands. @299 -LX50. Don't say {\bf if} $(n=0)\lor(\,\ldots\;\hbox{\bf div}\;n)$ in Pascal. @105 -BX51. Don't confuse \\{box_flag} with \\{box_code}. @1075 -SX52. Reset \\{offset} on \\{print_ln} even in \\{no_print} mode. @57 -SX53. Fix restarting of interrupts after \\{big_switch}. @1031 -LX54. Don't loop {\bf for} $k\gets a$ {\bf to} $b-1$ when $b=0$ if $k$ is - declared nonnegative. -IX55. Put `|=|' sign into the \\{format_ident}. @1328 -SX56. Allow $r$ to be any integer in \\{get_node}. @125 -IX57. Don't put the output of \\{print_file_name} in quotes. @518 -IX58. Say `|dumped|' after dumping. @1311 -EX59. Eliminate unnecessary initialization code. @1332 -LX60. Get the file reading started right when beginning to undump. @1308 -IX61. Give forlorn message if format file can't be loaded. @1303 -FX62. Assign value to \\{cur_val} after glue arithmetic. @1239,1240 -* 19 Jul 1982 -LX63. Don't say {\bf if} $p>\\{max}\lor\\{free}[p]$ in Pascal. @169 -AX64. Fix memory-undump logic; loops are out of phase with input. @1312 -BX65. Undump \\{hyph_word}[$j$], not \\{hyph_word}[$k$]. @1325 -# At last |trip.fmt| loads without bombing out. -PX66. Remove assignment of array to array, not allowed by IBM Pascal - (Susan Plass). @167 -PX67. Simplify an expression that's too big for IBM Pascal (Susan Plass). @1009 -AX68. Go to \\{contribute}, not \\{done}, after insertions. @1000 -IX69. Decrease \\{depth_threshold} if there's not enough string space. @198 -IX70. Show rules as `{\tt\char`\|}' in short displays. @175 -IX71. Don't show null glue in short displays. @175 -SX72. Set $\\{job_name}\gets0$ as part of output initialization. @528 -SX73. Don't complain of infinite shrinkage on |0pt minus 0fil|. @825,976,1009 -IX74. Use different prompt at beginning when accepting a file name. @37 -FX75. Reset \\{last_glue} on nonglue nodes. @996 -BX76. Remember to call \\{error} after printing |OK|. @1293 -LX77. Insert {\bf begin} \dots{ \bf end} around program text of section. @1025 -FX78. Define the |\shipout| primitive. @1071,1073 -AX79. Introduce \\{write_loc} analogous to \\{par_loc}. @1344,1371 -FX80. Dump and undump \\{par_loc} and \\{write_loc}. @1313,1314 -FX81. Allow \\{the} in \\{scan_the} [later \\{scan_something_internal}]. @413 -EX82. Interchange command codes $\\{the}:=:\\{number}$ [later \\{convert}]. @210 -BX83. Don't confuse \\{breadth} with \\{depth}. @236 -IX84. Add string printing feature to \\{debug_help}. @1339 -FX85. Set $\\{state}\gets\\{mid_line}$ in \\{begin_file_reading}. @328 -# Time out 2105--2200 to pick up Jenny from driving lesson. -LX86. Keep $c\le127$ when deleting 99 tokens. @88 -SX87. Don't check for \\{str_room} error when $\\{selector}=\\{new_string}$. @1328 -* 21 Jul 1982 -IX88. Gather more statistics: String usage, font info, hyphen exceptions, stacks. @1334 -DX89\>X79. Initialize \\{write_loc} from \\{cur_val}, not from \\{cs_ptr}. @1344 -FX90. Remember to pack file name for |\open|. @1374 -SX91\>X34. Defuse |\outer| test before scanning optional space after `|}|'. @473 -SX92. Don't allow \\{prepare_mag} to cause errors after \\{jump_out}. @84 -# The first page of |DVI| output is {\sl perfect\/}! Pause to play piano. -BX93. Don't confuse \\{dimen_base} with \\{scaled_base}. @1237 -DX94. Initialize $\\{link}(\\{page_head})\gets\\{null}$ when beginning a page. @991 -SX95. Correct \\{cur_height} more often, since \\{max_depth} might be negative. @972,973 -AX96. Calculate page dimensions properly after vertical kerns. @973 -SX97. Install new \\{page_contents} logic to handle interaction between - insertions and |\topskip|. @987,1008 -SX98. Allow \\{top_skip} glue to be a valid breakpoint. @1001 -FX99. Don't forget to count \\{dyn_used} in inner loop [erroneous analysis - retracted later]. @1034 -FX100. Set $p\gets q$ after migration step. @655 -FX101. Clear \\{prev_graf} to zero at start of paragraph. @1091 -LX102. Put parens into negated \\{leader_flag} macro. @1078 -# Time out 1720--1920 for John's birthday dinner. -DX103. Scale \\{best_height} when adjusting \\{page_goal}. @1010 -AX104. Simplify logic of split insertions; three states become two. @981,1019,1020 -MX105. Don't omit first character when showing a macro argument. @400 -RX106. Prevent clobberage if macros have too many parameters. @390 -* 22 Jul 1982 -IX107. Tell how many |DVI| bytes were output. @642 -IX108\>X88. Adjust for singular or plural statistics. @1320,1334 -SX109\>X98. Consider \\{page_head} a glue node, to inhibit unwanted break. @988 -DX110. Introduce \\{new_skip_param} to keep reference counts updated. @679,969,1001 -DX111. Record the correct size of new insertion after it's split. @1010 -DX112. Use \\{free_node}, not \\{flush_node_list}, when recycling insertion - nodes. @1022 -SX113. Make online insertions work after \\{get_next} is interrupted. @87,324,343 -BX114. Print newline on interruption stop. @98 -SX115\>X34. Put space before \\{end_write_token}. @1371 -BX116. Don't confuse \\{glue_order} with \\{stretch_order}. @838 -TX117. Set $\\{max_dimen}\gets\hbox{\it'7777777777\/}$, not {\it'777777777}. @421 -MX118. Make |\global\textfont| legal. @1211 -BX119. Fetch |\the\textfont| with \\{equiv}, not \\{fam_font}. @415 -BX120. Call $\\{new_ligature}(f,l,\ldots)$ not $(f,c,\ldots)$. @1035 -RX121. Make \\{show_box} work on random garbage. @174,177 -DX122. Count reference to \\{zero_glue} from \\{cond_math_glue}. @1171 -* 23 Jul 1982 -RX123. Allow $\\{avail}=\\{null}$ when undumping. @1312 -BX124\>X110. Set $\\{width}(\\{glue_ptr}(p))$, not $\\{width}(p)$. @679 -AX125. Put \\{begin_file_reading} inside the \\{start_input} loop. @537 -BX126\>X116. Don't confuse \\{glue_stretch} with \\{stretch_order} [the previous - fix went only half\-way]. @838 -BX127. Negate $x$ when calculating badness of shrinkage. @667,678 -LX128\>X121. Remove dangling {\bf else} that parses wrong. @174 -IX129\>X28. Print newline before |{|, not after |}|, when tracing commands. @299 -IX130. Remove colon from overfull box messages. @663,675 -DX131\>X97. Compute \\{page_goal} properly when the first box arrives after - inserts. @1001 -BX132. Don't confuse \\{page_size} [now \\{page_goal}] with \\{best_size}. @1017 -AX133. Put heldover insertions at front of contribution list. @1023 -SX134\>X88. Output stats before closing |DVI| file, since the latter - decreases \\{font_ptr}. @1333 -TX135. Don't call a |\vbox| an |\hbox|. @674 -TX136. Fix misplaced {\bf end} caused by editing error. @675 -* 24 Jul 1982 -DX137. Don't \\{eq_destroy} any paragraph shape when \\{par_shape} is null. @275 -IX138. Omit blank before |\message| at the beginning of a line. @1280 -AX139\>X104. Don't try to split an insertion when \\{best_node} isn't the - split one. @1021 -LX140. Correct another case of `{\bf if} $x\land y$' misunderstood by Pascal. - @1021 -IX141. Provide diagnostic info about insertions via |\showlists|. @986 -IX142. Add `|inside a group|' to clarify a warning message. @1335 -IX143. Report \\{prev_depth} on a separate line in |\showlists|. @219 -SX144. Back up input to avoid unexpected clobberage of \\{cur_tok}. @1090 -# Wow what a bug: \\{new_graf} calls \\{build_page}, which invokes the - output routine, after which `\/{\bf goto} \\{reswitch}' is a {\sl disaster}. -DX145. Add insertion glue to \\{page_so_far} instead of subtracting it from - the goal. @1009 -IX146. Put extra blank line before overfull box warning. @660 -CX147. Define break at kern consistently between horizontal and vertical lists. @973,1000 -DX148. Renumber so that math nodes are nondiscardable. @147 -TX149. Correct the \\{char_kern} macro: |#|, not $f$. @557 -FX150. Decrease $l$ after reconstituting discretionary break. @916 -EX151. Simplify the hyphen routine, knowing that $\\{link}(s)=\\{null}$. @918 -FX152. Initialize $r\gets q$ in discretionary destruction routine. @883 -* 25 Jul 1982 -AX153. Don't add interline penalty after last line of paragraph. @890 -IX154. Adjust spacing in diagnostic messages. @245 -DX155. Avoid simultaneous use of \\{temp_head} by \\{prune_page_top} and the - page builder. @1017 -FX156. Clear the \\{post_break} field of simple discretionaries. @916 -AX157. Split \\{offset} into independent variables \\{term_offset}, - \\{file_offset}. @54,57,58 -# Am freezing current program as version $-0.25$; a week of TUG lectures - begins tomorrow. -* 5 Aug 1982 -IX158. The `|.err|' file should be `|.log|' instead. @534 -GX159. Allow |\special| strings to contain more than 256 bytes. @585,1368 -MX160\>X99. Undo ``correction'' to a non-bug. @1034 -IX161. Suggest |\&| in help message for unexpected |&|. @1128 -GX162. Make `|E|' a standard option for exiting. @84 -GX163. Restore the use of dead cycles \`a la \TeX78. @1024,1054 -# The previous six changes were suggested during discussions with \TeX82 class. -SX164. Fix global variable conflict between \\{open_log_file} and \\{new_font}. @1257 -CX165. Allow optional `|=|' when assign to font parameter. @1253 -FX166. Set \\{cur_val} after increasing the number of font parameters. @580 -DX167. Set \\{hash_brace} when matching `|{|'. @476 -IX168\>X88. Clarify meaning of statistics printed. @1334 -GX169. Change |DVI| format to include design size. @602,1260 -DX170. Introduce \\{def_ref} for \\{runaway} messages. @306 -MX171. Restore \\{cur_cs} before calling \\{scan_toks}. @1226 -AX172\>X157. Update \\{print_nl} to dual offset conventions. @62 -AX173\>X163. Move endgame logic inside \\{main_control}, because the output - routine becomes active. @1054 -* 6 Aug 1982 -CX174. Allow |INITEX| to load format files. @1337 -EX175. Conserve input stack space by deleting finished token lists. @325 -IX176\>X74. Print the opening `|**|' in the transcript file. @534 -# Now ready to try breaking new ground in |TRIP|. -SX177. Preserve \\{align_state} from tokens deleted online. @88 -DX178. Set $t$ in all branches of \\{scan_toks}. @473 -SX179. Change `$\\{cur_cmd}\le\\{right_brace}$' to `$\\{cur_tok}\le - \\{right_brace_limit}$'; otherwise |\relax| gets through. @477 -CX180. Allow optional |=| when setting |\spacefactor|; disallow zero. @1243 -BX181. Change \\{vpackage}(\\{head}) to \\{vpackage}(\\{link}(\\{head})). @796 -# Shades of 1978! -LX182. Insert missing {\bf begin} \dots{ \bf end}. @798 -* 7 Aug 1982 -LX183. Keep \\{trie_max} declared in non-|INITEX| [later rescinded]. @950 -DX184. Watch out for empty token list when copying. @466 -DX185. Free unused reference count slot when defining |\everypar|. @1226 -GX186\>X163. Introduce |\maxdeadcycles|. @1012 -# I believe the \\{line_break} routine has passed its test perfectly. -SX187. Don't put discretionary after |-| inside a discretionary. @1039 -CX188. Change `|\minus|' to `|\minusthe|' [this feature retracted later]. @413 -BX189. Change \\{cur_p} to $r$ (three places). @875 -AX190. Increase range of \\{hc} to \\{halfword}; otherwise end-of-word mark - might match a vacant entry in the trie. @892 -FX191. Initialize $b$ in \\{shift_case} routine. @1288 -EX192. Don't back up if a space follows a decimal fraction. @452 -BX193. Don't confuse \\{glue_base} with \\{dimen_base}. @1145 -LX194. Guard against anomalous floating-point values in glue display. @186 -* 8 Aug 1982 -SX195. Avoid infinite loop when |\outer| leads to runaways. @339 -# I worked on that problem about two hours before fixing it. -IX196. Move final \\{debug_help} to \\{succumb}, except in batch mode. @93 -RX197. Insert kern after spanned box, to defeat access to floating point. @808 -* 9 Aug 1982 -CX198. Include |\leftskip| and |\rightskip| in displayed equations [rescinded - later]. @1199 -IX199. Trace line-break computations if $\\{tracing_stats}>2$. @846,856 -DX200. Keep \\{prev_p} up to date when passing a string. @867 -# Now stepping through math stuff; a lot is working. -DX201. Set $\\{link}(p)\gets z$ when making a fraction. @747 -CX202. Don't reset space factor when beginning |\valign|. @775 -IX203. Don't show glue setting if $\\{glue_sign}=\\{normal}$. @186 -DX204. Clear \\{glue_stretch} and \\{glue_shrink} when creating an unset box. @801 -BX205. Do \\{vpack} in hmode and vice versa when aligning. @804 -AX206. Remove fallacious call to \\{confusion} after alignment in display. @1206 -AX207. Don't test $\\{mode}=\\{vmode}$ in display, test $\\{nest_ptr}=1$. @1145 -FX208. Show an \\{inner_noad} as well as the other types. @690,696 -DX209. Renumber \\{mu_glue} and \\{cond_math_glue} so that the glue display logic - works. @149 -BX210. Don't confuse \\{cur_size} with \\{cur_style}. @703 -FX211. Advance $p\gets q$ during second pass over mlist. @761 -IX212. Add helpful hint about |\tracingonline=1|. @1293 -TX213. Delete spurious statement left from sloppy editing. @710 -DX214. Change the subtype when \\{mskip} becomes \\{hskip}. @732 -FX215. Don't forget to use the remainder when computing math glue. @716 -IX216\>X199. Improve paragraph diagnostics using \\{short_display}. @857 -IX217\>X199. Introduce \\{artificial_badness} for better diagnostics. @854,856 -* 11 Aug 1982 -AX218. Introduce \\{char_box} subroutine so that \\{var_delimiter} adds italic - correction. @709 -SX219. Save font and char in local variables of \\{make_math_accent}, since - it can be recursive. @738 -FX220. Call \\{error} after decrying an invalid character. @346 -* 12 Aug 1982 -IX221\>X199. Install new format for showing break nodes. @846 -# I have been testing \\{line_break} and I think it's working fine. -BX222. Change $q$ to $p$, in order to catch empty alignments. @812,1206 -SX223. Disallow third part of discretionary in math mode. @1120 -DX224. Don't change \\{tail} if discretionary third part is empty. @1120 -IX225. Say |nonscript|, not |non_script|. @189 -SX226. Inhibit math if |\scriptfont3| is improper. @1195 -IX227\>X199. Introduce {\tt\@}|firstpass| and {\tt\@}|secondpass| comments. @863 -TX228. Change $p$ to $r$ when you mean $r$. @1204 -IX229\>X108. Say |page|, not |pages|, if there's only |1|. @642 -IX230. Insert space before |[]| on truncated |\showlists|. @182 -* 28 Aug 1982 -# Back from vacation after having looked at hardcopy listing of |TRIP| test. -GX231. Allow |dm| as a unit [later |.5dm1| will be |.5\dimen1|]. @455 -IX232\>X108. Singularize |prevgraf 1 lines|. @219 -IX233. Omit trailing zero count registers when showing completed page numbers. @638 -LX234. Avoid clobbering $a$ by introducing a new local variable $t$. @986 -DX235\>X216. Fix diagnostic printing of discretionaries. @858 -IX236. Don't show unset stretch/shrink that's zero. @185 -CX237\>X198. Make |\halign| in displays consistent with other displays. (Namely, - ignore |\leftskip| and |\rightskip| in nonaligned displays; - respect the paragraph shape in aligned displays.) @800,1199 -IX238. Parenthesize `|If you're confused ...|'. @403 -IX239. Say `|\fraction|', not `|\xabovex|'. @697 -FX240. Remember to {\bf return} when you should. @1153 -PX241. Use absolute value to make sure {\bf div} is unambiguous. @737 -BX242\>X218. Don't confuse depth with height. @709 -BX243. Use $\\{delta}-\\{height}$, not $\\{height}-\\{delta}$. @736 -BX244. Increase \\{shift_down} to increase the clearance. @745 -IX245. Don't back up after improper use of |\the|. @428 -IX246. Don't give |0pt| as the default result when looking for \\{tok_val}. @428 -FX247. Initialize \\{second_indent} in the easy case. @848 -FX248. Package the equation number. @1204 -QX249. Don't resort to $v\gets\\{max_dimen}$ when glue doesn't stretch or - shrink. @1148 -IX250. Insert newline before showing current |\botmark|. -FX251. Call \\{error} after giving error message. @784 -AX252. Change implementation of |\number|; it should \\{scan_int}, not - something internal. @471 -PX253. Introduce symbolic constants like \\{format_area_length}. @524 -PX254. Change \\{quit} to \\{jump_out}, since some compilers treat \\{quit} - as a reserved word. @81 -LX255. Add more parentheses to get proper parsing. @1260 -IX256. Say |please| in order to be friendly (or at least polite). @360 -BX257. Don't confuse \\{cur_vcmd} with \\{cur_chr}. @508 -IX258. Use |&| instead of |!| to specify a preloaded format. @1337 -TX259\>X177. Correct |s3| to |s4|. @88 -GX260. Introduce new primitive |\mathchardef|, to save space and time. @1224 -CX261. Use the |[]| convention for noads as well as nodes. @692 -TX262. Correct spelling in call to \\{primitive}: |\xatopx| should be |\xoverx| - [later renamed, thank goodness]. @1178 -* 30 Aug 1982 -RX263. Don't fetch \\{link}(\\{null}) in malformed list. @175 -SX264. Initialize \\{align_state} at a better time so that \\{align_peek} - doesn't see |&| or |\span|. @785,791 -SX265. Outlaw preamble interfering with $\\{align_state}=0$. @789 -CX266. Add level of grouping to alignment to tabskip locality. @774 -FX267. Check \\{align_state} when scanning $\langle u_j\rangle$. @783 -AX268. Move `\\{unsave}; \\{new_save_level}' from \\{main_control} into - \\{fin_col}. @791,1131 -SX269\>X180. Remember \\{cur_chr} when you're looking for optional `|=|'. @1243 -TX270. Change $q$ to $r$ [in code now obsolete]. @804 -IX271. Disable interrupts during \\{back_error} so that help messages aren't - clobbered. @327 -SX272. Introduce \\{slow_print} for printing control sequences. @60 -IX273. Initialize \\{del_code}(|"."|$)\gets0$ for error recovery. @240 -SX274. Call \\{end_file_reading} before calling \\{check_outer_validity}. @362 -IX275. Don't delete an extra `|}|' when |\par| will help find a runaway. @395 -* 31 Aug 1982 -BX276. Don't confuse \\{thin_muskip} with \\{thin_muskip_code}. @413 -FX277\>X266. Recover from error if new \\{align_group} ends abnormally. @1132 -IX278. Recover from error if |\par| occurs when $\\{align_state}<0$. @1094 -CX279. Make |\hskip\the\thinmuskip| and |\mskip\the\baselineskip| erroneous. @413 -GX280. Add |\muskip| and |\setmuskip| analogs to |skip| and |\setskip|. @413,1228 -EX281. Don't output |pop| right after |push|. @601 -# The |TRIP| test looks right; now to test for wasted memory. -# When memory should be empty I find $\\{dyn_used}=18$, $\\{var_used}=267$. -* 1 Sep 1982 -# Made special |MEMTEX| program, designed to track all memory allocation. -DX282. Delete reference to \\{last_glue} when a page is packaged. @1017 -IX283. Include \\{save_stack} in the \\{search_mem} debugging routine. @285 -CX284. Disallow |\vfill| in restricted horizontal mode. @1095 -# Most of the memory locations I thought were wasted were actually in good use. -# Total 192 hours (approx) debugging time so far since July 15. -* 2 Sep 1982 -# Now looking at all zero counts in profile and extending |TRIP|. -EX285. Simplify the creation of |vtop| boxes. @1087 -CX286. Set $\\{space_factor}\gets1000$ after |\hbox|. @1076 -PX287. Introduce preamble into |DVI| format. @617 -SX288. Give special \\{chr_code} to |\relax|. @265 -IX289. Don't show `|(null)|' when token list is null, just show nothing. @295 -EX290. Delete the procedure \\{write_name_string}, which is never used. -CX291. Rename |\xabovex| to |\abovewithdelims|; do the same for - |\xatopx| and |\xoverx|. @1178 -QX292. Improve \\{clean_box} so that it recognizes cleanliness better. @720 -IX293. Report a |Missing delimiter| more meaningfully. @1161 -RX294. Give \\{endv_token} a \\{chr} code of 128 so that it will end a file name. @289 -RX295. Test present of math fonts {\sl after\/} parsing an mlist, not - before. @1138,1195 -IX296. Omit `|recent contributions|' and/or `|current page|' when they are - empty. @218,986 -IX297. Display what \TeX\ has deleted after improper discretionary list - has arisen. @1121 -IX298. Show what math character was undefined. @723 -IX299. Improve the |Incompatible magnification| error; break it into two lines. @288 -DX300. Put new cases into \\{flush_node_list}, to recycle mlist noads. @698 -* 6 Sep 1982 -FX301\>X300. Insert a necessary `{\bf goto} \\{done}' in that new material. @698 -# It took two hours to diagnose that {\bf goto} problem. -TX302\>X295. Change `|2|' to `|3|' in help message for extension fonts. @1195 -IX303. Add a special note if material is being held over for the next output. @986 -RX304. Divide before multiplying in \\{make_left_right}, to avoid overflow. @762 -IX305. Introduce the \\{box_error} routine. @992 -FX306. Clear \\{arith_error} after overflow has been reported. @460 -BX307\>X249. Don't confuse \\{stretch} with \\{glue_stretch}. @1148 -DX308. Set $\\{glue_sign}\gets\\{normal}$ when packaging with glue ratio - zero. @558,664 -AX309. Test for overflow before attaching the sign. @448 -# That all worked! Now trying |min_quarterword| negative. -LX310. Take absolute value before applying {\bf mod} in \\{new_trie_op}. @944 -LX311. Say $\\{qi}(c)$, not $c$, when testing |TFM| flags [now obsolete]. @573 -LX312. Initialize \\{token_ref_count}(\\{def_ref}) to \\{null}, not zero. @473 -LX313. Change the type of \\{vsplit} parameter $n$ from \\{quarterword} to - \\{eight_bits}. @977 -LX314. Initialize \\{null-delimiter} different form \\{null_character}. @685 -LX315. Insert \\{qi} twice in \\{scan_delimiter}. @1160 -FX316. Insert \\{qi} in \\{scan_math}. @1151 -FX317. Insert \\{qo} in \\{fetch}. @722,723 -FX318. Insert \\{qi} in \\{set_math_char}. @1155 -FX319. Insert \\{qi} in \\{math_ac}. @1165 -FX320. Insert \\{qo} in \\{mlist_to_hlist}. @755 -IX321. Use brackets around 8-bit characters in \\{print_ASCII}. @68 -IX322. Include \\{hyph_list} in the \\{search_mem} debugging routine. @933 -# Now compiling non-|INITEX| to try an industrial-strength version. -LX323. Add {\bf return} to \\{final_cleanup}, because some Pascal compilers - insist that each label be used. @1335 -DX324. Compute \\{par_token} when undumping. @1314 -* 11 Sep 1982 -IX325. Emit newline before file name, if near end of line. @537 -CX326. Define |\ifx| for arbitrary tokens. @507 -* 12 Sep 1982 -IX327. Don't ask users to type |x| twice before exiting. @84 -GX328. Install new features |\openin|, |\read|, |\ifeof|, |\closein|; rename - existing |\open|, |\send|, |\close| to be |\openout|, |\write|, - |\closeout|. @209,313,1275 -GX329. Install new feature |\expandafter|. @368 -PX330. Change the default file area from `|<TeX>|' to `|TeXinputs:|'. @574 -* 13 Sep 1982 -GX331. Install new feature |\string|. @472 -AX332. Remove spurious space printed by \\{sprint_cs}. @263 -# All tests passed now! But when I played with the system I found another bug - (undetected by |TRIP|): -FX333. Set $r\gets s$ after matching macro parameter tokens. @397 -* 16 Sep 1982 -IX334\>X199. Introduce serial numbers in line-break records, improving - readability and independence. @846 -IX335. Don't abort when \\{file_name_size} is exceeded. @519 -* 17 Sep 1982 -IX336. Remove unwanted period from font capacity message. @567 -* 18 Sep 1982 -GX337\>X329. Make |\expandafter| more powerful by moving it from semantics - to syntax [i.e., from stomach to mouth]. @368 -* 19 Sep 1982 -IX338. Improve error recovery for `|Missing number|'. @415 -* 22 Sep 1982 -QX339. Suppress italic correction between letters in math mode except in math - fonts. @752 -* 24 Sep 1982 -PX340. Define $\\{null}=\\{mem_bot}$, not \\{min_halfword}, because there's - a reference to \\{link}(\\{null}) in \\{try_break}. @115 -DX341. Initialize $\\{str_start}[0]\gets0$. @47 -IX342. Avoid blank space at beginning of line. @638 -DX343. Set type of new box in math mode to \\{ord_noad}, not \\{inner_noad}. @1076 -* 28 Sep 1982 -# Here are the first changes made to the preliminary listing of \TeX82 that was - published by the \TeX\ project earlier this month. -F520. Insert the missing cases \\{letter} and \\{other_char} after - \\{x_token} looks ahead. @1038 -C521. Change `|\pause|' to `|\pausing|'. @236 -D522. Reset \\{overfull_rule} when determining tabskip glue. @804 -A523. Fix the logic for scanning |\ifcase| [in obsolete syntax---everything - is still done with braces since `|\fi|' doesn't exist yet]. @509 -* 30 Sep 1982 -I524. Change |"0.0"| to |"?.?"| (suggested by DRF). @186 -* 2 Oct 1982 -Q525. Use conditional thin spacing next to `Inner' noads. @764 -Q526. Make thick spaces conditional. @766 -* 4 Oct 1982 -P527. Increase \\{trie_size} from 7000 to 8000, because of Frank Liang's improved - (but longer) hyphenation patterns. @11 -* 6 Oct 1982 -F528\>X330. Change the string lengths to match the new \\{\TeX_format_default}. @520 -# Version 0 of \TeX\ is being released today! -* 8 Oct 1982 -B529. Fix a blunder: I decreased $h$ mod a quarterword when it should have - been decreased mod \\{trie_op_hash_size} (HWT). @944 -* 9 Oct 1982 -P530\>X258. Fix a typo (`|!|' not `|&|') in the |WEB| documentation. @524 -F531. Remember to call \\{initialize} if a different format was preloaded - (Max D{\'\i}az). @1337 -# Version 0.1 incorporates the above changes. -* 12 Oct 1982 -G532. Add the `|\immediate|' feature, by popular request. @1375 -# Version 0.2 incorporates this (somewhat extensive) change. -* 13 Oct 1982 -P533. Introduce new |WEB| macros so that \\{glue_ratio} is more easily changed. @109 -# I began writing {\sl The \TeX book\/} today: edited the old preface and - searched in the library for quotations. -* 14 Oct 1982 -B534. Change the type of \\{hd} to \\{eight_bits}; it's - not a \\{quarterword} (HWT). @649 -S535\>X281. Revise the optimization of\/ |DVI| commands: It's not always safe to eliminate - \\{pop} when the preceding byte is \\{push}, since |DVI| commands - have variable length! (Embarrassing oversight caught by DRF.) @601 -* 15 Oct 1982 -C536. Test `$\\{prev_depth}>\\{ignore_depth}$', not `$\ne$'. @679 -# Version 0.3 incorporates the above changes. -* 16 Oct 1982 -P537. Omit definition of \\{align_size}; it's never used (Bill Scherlis). @11 -I538. Inhibit error messages when packaging box 255. @1017 -* 21 Oct 1982 -A539\>X145. Subtract $\\{width}(q)$ from \\{page_goal}, don't add it to - $\\{page_so_far}[1]$. @1009 -# Version 0.4 incorporates the above changes. -* 22 Oct 1982 -P540. Increase the amount of lower (variable-size) memory from 12000 to 13000, - since the \TeX\ program listing now needs about 11500. [At this time - there still is a fixed boundary between upper and lower memory.] @12 -G541. Add a new parameter |\boxmaxdepth|. @1086 -# Version 0.5 incorporates the above changes. -* 26 Oct 1982 -B542. Fix an off-by-one error caught by Gabi Kuper and HWT. - (I forgot `${}+1$'). @1317 -B543. Fix the spacing of displayed control sequences: \\{print_cs} should base its - decision on $\\{cat_code}(p-\\{single_base})$, not $\\{cat_code}(p)$. @262 -# The |TRIP| test detected this bug, but I didn't notice. -* 27 Oct 1982 -S544. Set \\{math_type} before saying $\\{fetch}(\\{nucleus}(q))$, since - fetching can have a side effect. @752 -* 28 Oct 1982 -G545. Install a major change: Fonts now have identifiers instead of code letters. - Eliminate the `|\:|' primitive, and give corresponding new - features to `|\the|'. @209 -# Actually I began making these changes on October 26, but I needed two days - to debug them and to put Humpty Dumpty together again. -# At this time I'm also drafting macros for typesetting {\sl The \TeX book}. -# The above changes have been incorporated into Version 0.6. -* 30 Oct 1982 -# After years of searching, I've finally found a definitive definition of - the printer's point; and (unfortunately) my previous conjecture was - wrong. The truth is that $\rm83\,pc=35\,cm$, exactly; - so I am changing \TeX\ to conform. -C546. Revise unit definitions for the `real' printer's point. @458,617 -# Version 0.7 incorporates the above. -* 1 Nov 1982 -# Oops! Retract error \#546, and retract \TeX\ Version 0.7; - the source of my information about points was flaky after all. - My original suppositions were correct, - as confirmed by NBS Circular 570. -* 4 Nov 1982 -C547. Revise the definition of |dd|, conforming to the definitive value - shown me by Chuck Bigelow. @458 -R548\>545. Introduce ``frozen'' copies of - font identifiers, to be returned by |\the\font|, so that font - manipulation is more robust. @1257 -* 5 Nov 1982 -D549. Reset \\{looseness} and paragraph shape when beginning a |\vbox|. @1083 -* 6 Nov 1982 -D550. De-update \\{align_state} when braces are in constants. @442 -I551\>X294. Improve error recovery for bad alignments. @1127 -# Today I wrapped up Chapters 4 and 5. -* 8 Nov 1982 -G552. Give more power to |\let|: the right-hand side needn't be a control - sequence. @1221 -I553. Amend \\{show_context} to say - `$(\\{base_ptr}=\\{input_ptr})\lor{}$'; otherwise undefined control - sequences can be invisible in unusual cases (John Hobby). @312 -A554. Compute demerits more suitably by adding a penalty squared, instead of - adding penalties before squaring. @859 -# Previously a slightly loose hyphenated line followed by a decent line - was considered worse than a decent hyphenated line followed by - a quite loose line. -* 10 Nov 1982 -E555. Save a bit of buffer space by declaring \\{pool_file} only in - |INITEX|. @50 -* 11 Nov 1982 -I556. Introduce a new context indicator to clarify \TeX's scanning state: - A special type - called \\{backed_up} is distinguished from other kinds of \\{inserted} - lists; it is called `recently read' or `to be read again', while - others are called `inserted'. @314 -I557. Append a comment, `|treated as zero|', to the missing-number message. @446 -I558. Ignore the settings of\/ |\hfuzz| or |\vfuzz| if\/ |\hbadness| or |\vbadness| - is less than 100. @666,677 -* 13 Nov 1982 -# Major surgery on the program is planned for today, because of new ideas - suggested by correspondence with MDS and other macro writers. -G559. Introduce a new |\tokens| register; this will be useful and easy to add, - since \TeX\ already can handle |\everypar| and |\output|. @1227 -C560\>X34. Change \\{get_x_token} to \\{get_token} when scanning an optional - space; then a construction like - |\def\foo{...}\foo| won't complain that |\foo| is undefined. @443 -# This change was retracted when it was being debugged, because it could - cause \\{endv} to abort the job. Then it was re-established again - when I found that \\{endv} needed to be more robust anyway. - [But it was eventually rescinded again.] -G561. Make |\span| mean `expand' in a preamble. @782 -E562. Use three separate {\bf if\/} tests instead of - `$\land$' in the inner loop of \\{get_next}, to gain efficiency. @342 -R563. Introduce \\{get_r_token} so that assignments have uniform error - messages and so that frozen equivalents cannot be changed. @1215 -# I gave a few variables more mnemonic names as I made these changes. -C564. Move conditional statements from the semantics (`stomach') part of - \TeX\ to the syntax (`mouth') part, by introducing `|\fi|'. - Also introduce |\csname| and |\endcsname|. @372,489\hbox{--}500 -# This makes macros much more predictable and logical, but it is by far - the most drastic change ever made to \TeX. The program began to come - back to life only after three days of solid hacking. -# Several other things were cleaned up as part of this change - because it is now more natural to handle them differently. - For example, a null control sequence has now become more logical. -# The result of all this is called Version 0.8. -* 18 Nov 1982 -# Today I resumed writing Chapter 8. Tomorrow I'm $\,2^{14}$ days old! -* 21 Nov 1982 -F565. Declare $c$ as a local variable for hyphenation (DRF). @912 -E566. Omit the ``first pass'' and try hyphenations immediately, - if\/ |\pretolerance| is negative (suggested by DRF). @863 -R567. Don't ship out incredibly huge pages; they might foul up - |DVI| files. @641 -* 2 Dec 1982 -G568. Add new features |\everymath| and |\everydisplay|. @1139,1145 -G569. Add a new feature |\futurelet|. @1221 -# The changes above have been incorporated into Version 0.9 of \TeX. -* 7 Dec 1982 -G570. Add a new |\endinput| primitive (suggested by FY). @362,378 -* 8 Dec 1982 -I571. Try \\{off_save}, if\/ |\par| occurs in restricted horizontal mode. - (This avoids embarrassment if \TeX\ says `type a command or - say |\end|', then when you type |\end| it says you can't!) - [However, I soon retracted this change.] @1094 -* 21 Dec 1982 -A572. Redefine |\relax| so that its \\{chr} field exceeds 127. (This facilitates - the test for end in \\{scan_file_name}.) @265 -F573\>566. Call \\{begin_diagnostic} when omitting - the first pass of line breaking. @863 -A574. Fix the logic of glue scanning: In |\hskip-1pt plus2pt| the minus should - apply only to the |1pt|. @461 -* 23 Dec 1982 -I575. Renumber the decimal codes in paragraph statistics for loose and tight - lines; they were ordered backwards. @817 -C576. Treat a paragraph that ends with leaders like a paragraph that - ends with glue. @816 -C577. Allow commas as alternates to radix points, for Europeans. @438 -C578. Change |\hangindent| to a normal dimension parameter. [It had been - a combination of\/ |\hangindent| and |\hangafter|, with special - syntax.] @247 -G579. Make |\prevgraf| accessible to users. @422,1244 -G580. Split |\clubpenalty| off from |\widowpenalty|. @890 -# I'm typing Chapter 14 while making these changes. -* 24 Dec 1982 -S581. Use \\{back_input} instead of {\bf goto} \\{reswitch} when - inserting |\par|, because |\par| may have changed. @1095 -* 25 Dec 1982 -# It's 10pm after a very Merry Christmas! -I582\>X328. Don't prompt for a new file name if\/ |\openin| doesn't find a file. @1275 -G583. Add a new |\jobname| primitive. @472 -I584. Give the user a way to delete the dollar sign, when \TeX\ decides - to insert one. @1047 -C585. Allow optional equals after |\parshape|, and implement |\the\parshape|. - @423,1248 -* 26 Dec 1982 -I586. Add an \\{if_line_field} to the condition stack entries, - so that more informative error messages can be given. @489 -D587\>549. Introduce a \\{normal_paragraph} procedure, since initialization is needed - also within |\insert|, |\vadjust|, |\valign|, |\output|. @1070 -* 27 Dec 1982 -G588. Give users access to |\pagetotal| and |\pagegoal|. (Analogous to - \#679 and \#585, but simpler.) @1245 -I589\>X199. Introduce |\tracingpages|, allowing users to see - page-optimization calculations. Also split |\tracingparagraphs| off from - |\tracingstats|. @987,1005,1011 -# The changes above have been incorporated into Version 0.91 of \TeX. -* 31 Dec 1982 -P590. Break the \\{build_page} procedure into two parts, by extracting - the section now called \\{fire_up}. [This is necessary because - some Pascal compilers, notably for IBM mainframes, cannot - deal with large procedures.] @1012 -S591\>564. Make |\ifodd1\else| legal by introducing \\{if_code}. @489 -Q592. Improve alignments when columns don't occur: Don't append null boxes - for columns missing before |\cr|, and zero out the tabskip - glue after nonpresent columns. @802 -I593. Make the error message about overfull alignment more intelligible. - @801,804 -# The changes above have been incorporated into Version 0.92 of \TeX82, - which was the last version of 1982, - completed at 11:59pm on December 31. -* 3 Jan 1983 -# Today I'm beginning to write Chapter 15, and - planning the |\output| routine of |plain.tex|. -C594\>X186. Change the logic of \\{its_all_over}; use \\{max_dead_cycles} - here too, instead of the fixed constant~100. @1054 -F595\>X34. Don't forget to \\{pop_nest} when an insert is empty. Also disallow - optional space after |\insert|$\,n\,$|{...}|. @1100 -* 4 Jan 1983 -C596\>541. Use the |\boxmaxdepth| that's declared inside a |\vbox| when packaging it. - @1086 -C597. Rename |\groupbegin| and |\groupend| as |\begingroup| and - |\endgroup|. @265 -G598\>594. Make |\deadcycles| accessible to users. @1246 -Q599. Base the split insertions on natural height plus depth, not - on \\{delta}. @1010 -# The changes above have been incorporated into Version 0.93. -* 6 Jan 1983 -D600. Add \\{push_math} to handle a case where I forgot - to clear \\{incompleat_noad}. (This long-standing bug was - unearthed today by Phyllis Winkler.) @1136 -G601\>588. Add |\pageshrink|, etc., too. @1245 -G602. Introduce new parameters |\floatingpenalty|, |\insertpenalties|. Also - adopt a new internal representation of insertion nodes, - so that |\floatingpenalty|, |\splittopskip| and |\splitmaxdepth| - can be stored with each insertion. @140,1008 -* 7 Jan 1983 -Q603. Improve the rules for entering \\{new_line}, in particular - when the end-of-line character is active. @343 -* 9 Jan 1983 -Q604. Distinguish between implicit and explicit kerns. @155,896 -C605. Change the name |\ignorespace| to |\ignorespaces|. @265 -C606\>560. Don't omit a blank space after |\def|, |\message|, |\mark|, etc.; - the previous hodge-podge of rules is impossible to learn. @473 -# The above changes appear in Version 0.94. -* 12 Jan 1983 -# Beginning to write the chapters on math today. -G607. Add a new feature: active characters in math mode. @1151 -* 15 Jan 1983 -A608. Fix a surprise bug: `|$1-$|' treated the |-| as binary. @729 -D609. Initialize \\{space_factor} inside discretionaries. @1117 -* 16 Jan 1983 -F610. Fix an incredibly embarrassing bug: I forgot to update \\{spotless} in the - \\{error} routine! -# While fixing this, I decided to change - \\{spotless} to a more general \\{history} variable, as suggested - by IBMers who want a return code. @76,82,1335 -I611. Replace two calls of \\{confusion} by attempts at error recovery, in places - where `|This can't happen|' could actually happen. @1027,1372 -* 18 Jan 1983 -R612. Introduce the \\{normalize_selector} routine - to protect against startup anomalies - when the transcript file isn't open. Also make \\{open_log_file} - terminate in some cases. @92,535 -R613\>591. Insert |\relax|, not a blank space, to cure infinite - loop like |\ifeof\fi| (LL). @510 -G614. Change the old |\limitswitch| to |\limits|, |\nolimits|, and - |\displaylimits|. Incidentally, this fixes a bug in the former - positioning of integral signs. @682,749 -C615. Give a |\char| in math mode its inherited |\mathcode|. @1151 -Q616\>525. Make underline, overline, radical, vcenter, accent noads and |{...}| - all revert to type Ord instead of type Inner. Introduce a new primitive - |\mathinner|. (This fixes the spacing, which - got worse in some ways after change \#525.) @761 -# I'm working on Appendix G today. -* 19 Jan 1983 -G617. Introduce a |\mathchoice| primitive. @1174 -C618. Move |\input| from the stomach to the mouth. @378 -C619\>X260. Introduce |\chardef|, analogous to |\mathchardef|. @1038,1224 -G620. Change |\unbox| to |\unhbox| and |\unvbox|; also add |\unhcopy|. @1110 -C621. Consider |\spacefactor|, |\pagetotal|, etc., as part of - \\{prefixed_command}, even though they are always global. @1211 -* 20 Jan 1983 -C622. Switch modes when |\hrule| occurs in horizontal mode or |\vrule| - in vertical. @1090,1094 -G623. Add a new |\globaldefs| feature. @1211 -* 21 Jan 1983 -E624. Optimize the code, in places where it's important (based on - frequency counts of \TeX\ usage - accumulated during the past week): Introduce \\{fast_get_avail} - and \\{fast_store_new_token}; reduce procedure-call overhead - in \\{begin_token_list}, \\{end_token_list}, \\{back_input}, - \\{flush_node_list}; change some tests from `{\bf if} $a\land b$' to - `{\bf if}~$a$ {\bf then if}~$b$'. @122,371 -* 22 Jan 1983 -E625. Save space in math lists: Don't insert penalties within restricted - horizontal mode; simplify trivial boxes. @721,1196 -S626. Fix a surprising oversight in the \\{rebox} routine: - Ensure that $b$ isn't a vbox. @715 -C627\>545. Make |\nullfont| a primitive, so that \\{cur_font} always - has a value. (This is a dramatic improvement over \TeX78, where a - missing font was a fatal error called `|Whoa|'!) @552 -* 24 Jan 1983 -I628\>586. List all incomplete |\if|'s when the job ends. @1335 -* 29 Jan 1983 -C629\>552. Change initialization of \\{align_state} so that |\halign\bgroup| - works. @777 -* 30 Jan 1983 -D630\>625. Be sure to test `\\{is_char_node}($q$)' when checking for a trivial - box. @721 -# By extraordinary coincidence, this bug was caught when somebody - used font number~11 ($=\\{kern_node}$) in the second character - of a list of length~2! -I631\>X168. Improve format for stats at end of run, as suggested by DRF. @1334 -# The changes above have been incorporated into Version 0.95. -C632. Don't ignore the space after a control symbol (except `|\ |'). @354 -P633. Remove all trailing spaces at the right of input lines, - so that there's perfect compatibility with IBM systems that - extend short lines with spaces. @31 -* 3 Feb 1983 -I634. Assume that a \\{math_accent} was intended, after giving an error - message in the case $\\{mmode}+\\{accent}$. @1165 -G635. Add new primitives |\iftrue| and |\iffalse|. @488 -* 6 Feb 1983 -A636\>X304. Improve the accuracy of fixed-point arithmetic when - calculating sizes for |\left| and |\right|. (I had started by - dividing \\{delimiter_factor}, not \\{delta1}, by 500.) @762 -* 12 Feb 1983 -C637. Change the name |\delimiterlimit| to |\delimitershortfall|. @248 -C638. Make |\abovewithdelims..| equivalent to |\above|; change the - order of operands so that delimiters precede the dimension. @1182 -C639\>607. Remove the kludgy math codes introduced earlier; - make |\fam| a normal integer parameter and allow |\mathcode| - to equal $2^{15}$. @1233 -R640. Don't let |\spacefactor| become more than $2^{15}$. @1233,1243 -# I finished drafting Chapter 17 today. -* 14 Feb 1983 -I641\>639. Replace octal output (\\{print_octal}) by hexadecimal (\\{print_hex}) - so that math codes are clearer. @67 -F642\>619. Don't forget \\{char_given} in the \\{math_accent} routine. @1124 -* 17 Feb 1983 -C643\>622. Switch modes when |\halign| occurs in horizontal mode, or |\valign| - in vertical mode. @1090,1094 -* 18 Feb 1983 -I644. Add a new feature |\tracingrestores|. This requires a new procedure called - \\{show_eqtb}, whose code can be - interspersed with the \\{eqtb} definitions. @252 -* 25 Feb 1983 -I645\>622. Suggest using |\leaders| when the user tries a horizontal rule - in restricted horizontal mode. @1095 -* 27 Feb 1983 -I646. Specify the range of source lines, when giving warning messages - for underfull or overfull boxes in alignments. @662,675 -# Why did it take me all day to type the middle part of Chapter 18? -* 4 Mar 1983 -G647. Introduce a new feature |\xcr| (suggested by LL). [Changed later to - `|\crcr|'.] @785 -I648\>631. Subtract out \TeX's own string requirements from the stats. @1334 -* 6 Mar 1983 -G649. Add new features |\everyhbox| and |\everyvbox|. @1083,1167 -* 9 Mar 1983 -R650\>X295. Avoid accessing \\{math_quad} when the symbol fonts aren't known - to be present. @1199 -P651\>533. Introduce \\{float} and \\{unfloat} macros to aid portability (HWT). @109 -C652. Introduce new names |\abovedisplayskip| and |\belowdisplayskip| for - the old |\dispskip|; also |\abovedisplayshortskip| and - |\belowdisplayshortskip| for the old |\dispaskip| and |\dispbskip|. @226 -* 10 Mar 1983 -C653. Unbundle |\romannumeral| from |\number| (suggested by FY). @468 -* 12 Mar 1983 -C654. Ignore leading spaces in \\{scan_keyword}. @407 -* 14 Mar 1983 -E655\>631. Use \\{write} and \\{write_ln} directly when printing stats. @1334 -* 16 Mar 1983 -Q656\>602. Refine the page-break cost function (introducing `\\{deplorable}', - which is not quite `\\{awful_bad}'), after suggestion by LL. @974,1005 -# The changes above have been incorporated into Version 0.96. -* 18 Mar 1983 -G657. Add a new feature |\everyjob| suggested by FY. @1030 -* 19 Mar 1983 -I658. Don't treat left braces specially when showing macros. @294 -C659. Ignore blanks that would otherwise become undelimited arguments. @393 -* 21 Mar 1983 -F660\>X280. Make |\lastskip| handle \\{mu_glue} as well as ordinary glue. @424 -C661\>561. Expand only one level in a preamble |\span|. @782 -* 22 Mar 1983 -C662. Let a single |#| suffice in |\tokens|, |\message|, etc. (The previous rule, - in which |##| was always required as in macros, was a loser especially - in |\write| where you had to say |####|!) @477 -C663\>X328. Require the keyword `|to|' in |\read|. (This will avoid the common error - of an incomplete constant when no space appears - before the |\cs|.) Also allow terminal - I/O as a default when a stream number is out of range. @482,1225,1370 -* 26 Mar 1983 -C664. Replace |\ifeven|\<countnumber> by |\ifodd|\<number>, for better - consistency of language. @504 -S665\>564. Introduce the \\{change_if_limit}, to overcome a big surprise - bug relating to |\if\if aabc\fi|. @497 -# Such examples show that \\{cur_if} might not be current, - in my original implementation. -* 28 Mar 1983 -G666\>X326. Tolerate non-characters as arguments to |\if| and |\ifcat|. @506 -C667. Change `|absent|' to `|void|', a better word. @487 -C668. Clear the \\{shift_amount} in |\lastbox|, since I don't - want to figure out what it means in all cases. @1081 -* 29 Mar 1983 -I669. Wake up the terminal before giving an error message. (This - means a special \\{print_err} procedure is introduced.) - (Suggested by DRF.) @34,73 -* 1 Apr 1983 -# Today I finished Chapter 21 (boxes) and began to draft Chapter 22 (alignments). -G670. Allow periodic preambles in alignments. @793 -C671. Make |\leaders| line up according to the smallest - enclosing box. @627,636 -Q672. Allow hyphenation after whatsits (e.g., after items for an index). @896 -* 2 Apr 1983 -Q673. Call \\{build_page} when |\par| occurs in vertical mode. @1094 -C674. Clear \\{aux} in \\{init_row}, for tidyness. @786 -* 4 Apr 1983 -C675. Let digits switch families in math mode. @232 -* 7 Apr 1983 -Q676\>602. Refine the test for not splitting an insertion. @1008 -* 8 Apr 1983 -C677\>647. Rename |\xcr| as |\crcr|, at LL's request. @780 -* 9 Apr 1983 -# Took a day off and had a chance to help print a sample page on - a 150-year-old letterpress in Murphys, California. -* 11 Apr 1983 -I678. Recover more sensibly after a runaway preamble. @339 -* 12 Apr 1983 -C679\>X328. Make |\read| span several input lines, if necessary to get - balanced braces. @482 -* 14 Apr 1983 -S680. Fix a subtle bug found by JS: \S882 can make $q$ a \\{char_node}, - so we need to test `{\bf if} $\lnot\\{is_char_node}(q)$'. - [Actually I discovered much later that the real bug was - to omit `{\bf else}' at this point.] @881 -* 15 Apr 1983 -C681. Make |\uppercase| and |\lowercase| apply to all characters, regardless - of category. @1289 -# 7:30am. After working all night, I completed a draft of the manual thru - Chapter 22, for distribution to volunteer readers. -# 5pm. The changes above have been incorporated into Version 0.97. -* 17 Apr 1983 -R682. Change `\\{small_number}' to `$0\,.\,.\,65$' in the - hyphenation routine (DRF). @901 -I683. Flush patterns in the input when the user tries |\patterns| - outside of\/ |INITEX| (suggested by DRF). @1252 -# Tomorrow I fly to England, where I'll lecture and write a paper about - `Literate Programming' [{\sl Comp.~J. \bf27} (1984), 97--111]. -* 14 May 1983 -I684\>663. Improve the behavior of\/ |\read| from terminal - (suggested by Todd Allen at Yale). - [I'd forgotten to implement the extended stream numbers in \#663. - Also, the prompt is now omitted if $n<0$.] @484 -* 18 May 1983 -I685. Restrict |\write| $n$ to the transcript file only, if $n<0$. @1350 -C686\>X188. Unify the syntax for registers and internal quantities. (Remove - primitives called `|\insthe|' and `|\minusthe|'; rename - \\{scan_the} to \\{scan_something_internal}, and change its - interface accordingly; clean up command codes generally.) @209,413 -G687. Introduce new parameters |\hoffset|, |\voffset|. @617 -* 24 May 1983 -G688. Introduce a new parameter |\everycr| (suggested by MDS). @774,799 -# Many macro writers and preliminary-manual readers have been requesting - new features; I'll try to keep the language as concise and consistent - as possible. -* 25 May 1983 -G689. Introduce |\countdef|, |\dimendef|, etc.\ (suggested by DRF long ago, - easy now in view of \#686). @1224 -G690. Introduce |\advance|, |\multiply|, |\divide| (suggested by FY). @1240 -G691. Introduce |\hyphenchar|; this requires a new command - \\{assign_font_int}, plus minor changes to about 15 modules. @915 -G692. Introduce |\skewchar| (easy because of \#691). @741 -G693. Introduce |\noexpand|. (I had difficulty thinking of how to - implement this one!) @358,369 -G694. Introduce |\meaning|. @296 -G695\>X231. Remove `|dm|' and `|vu|'; allow the more general `|.5\hsize|'. @455 -C696. Change `|\texinfo| $f$ $n$' to `|\fontdimen| $n$ $f$'. @578 -* 27 May 1983 -G697. Add a new feature |\afterassignment| (suggested by ARK). @1269 -C698\>619. Adjust the timing so that commands like `|\chardef\xx=5\xx|' - behave sensibly. @1224 -* 28 May 1983 -C699. Ignore `|\relax|' as if it were a space, in math mode and in a few other - places where |\relax| would otherwise be erroneous. @404 -Q700. Improve |\mathaccent| spacing with respect to subscripts - and superscripts (suggested by HWT). @742 -* 30 May 1983 -C701\>598. Terminate a job only when $\\{dead_cycles}=0$. @1054 -# The changes above constitute Version 0.98. -* 3 Jun 1983 -# I finished the draft of Chapter 23 (output routines) today. -G702. Allow |\mark| and |\insert| and |\vadjust| in restricted - horizontal mode, and also in math mode. (This is a comparatively - big change, triggered by the fact that |\mark| in a display - presently causes \TeX\ to crash with `|This can't happen|'!) - The global variable \\{adjust_tail} is introduced. @796,888,1085 -* 6 Jun 1983 -G703\>695. Replace (and generalize) the previous uses of\/ |ht|, |wd|, and |dp| - in dimensions by introducing the new control sequences - |\ht|, |\wd|, and |\dp|. @1247 -I704. Display sub-parts of noads with the symbols |^| and |_| instead of - |(| and~|[|. @696 -C705\>694. Allow |A..F| in hex constants to be \\{other_char} as well as - \\{letter}. @445 -* 7 Jun 1983 -E706\>654. Remove an instance of \<Scan optional space>, since it's now - redundant. @457 -C707. Legalize |\mkern\thinmuskip| and |\mkern5\thinmuskip|. @456 -C708. Clean up the treatment of optional spaces in numerical specifications. @455 -# A construction like |2.5\space\space\dimen0| was previously - valid after `|plus|' or `|minus|' only! -# I'm obviously working on Chapter~24 today. -C709\>545. Allow `|\font|' as a \<font identifier> for the current font. @577 -C710\>623. Don't make |\gdef| global when $\\{global_defs}<0$. @1218 -E711. Produce \\{zero_glue} as the outcome of - |\advance\spaceskip by-\spaceskip|. @1229 -I712. Make |\show| do something appropriate for every possible token. @1294 -G713\>559. Replace the (single) |\tokens| parameter by an array of - 256 token registers. @230 -C714. Allow |\indent| in math mode; also make |\valign| in math mode produce the - `|Missing|~|$|' error. @1046,1093 -E715. Remove redundant code: There's no need to check \\{cur_group} - or call \\{off_save} when starting alignments or equation numbers - in displays. @1130,1142 -* 8 Jun 1983 -C716. Disallow |\openout-1| and |\closeout-1|. @1350 -C717. Disallow |\lastbox| in math mode. @1080 -* 9 Jun 1983 -I718. Call \\{back_error}, not \\{error}, when |\leaders| aren't followed by - proper glue. @1078 -D719. Initialize for a possible paragraph, after |\noalign| - in a |\valign|. @785 -* 10 Jun 1983 -C720\>708. Expand the optional space after an ASCII constant. @442 -* 12 Jun 1983 -C721. Set $\\{space_factor}\gets1000$ after a rule or a - constructed accent. @1056,1123 -* 14 Jun 1983 -D722. Correct a serious blunder: Set $\\{disc_width}\gets0$ before testing - if $s$ is null (caught by JS). @869 -# This is a real bug that existed since the beginning! - It showed up on page~37 of the - Version~0 |TRIP| manual, but I didn't notice the problem. -C723\>708. Make optional spaces after \<dimen> like those after \<number>. @448 -C724\>568. Insert \\{every_display} before calling \\{build_page}. @1145 -I725\>648. Report \TeX's capacity on overflow errors in a way that's - fully consistent with other statistical reports. @42 -* 17 Jun 1983 -C726. Make all |\tracing| decisions on the basis of $\ge$ versus $<$, - not $\ne$ versus~$=$. @581 -# Today I finished the draft of Chapter 27 (the last chapter)! -# The changes above were released as Version 0.99 on June 19, 1983. -* 20 Jun 1983 -C727. Set |\catcode`\%=14| in |INITEX|. @232 -C728\>587. Call \\{normal_paragraph} when |\par| occurs in vertical mode. @1094 -# Once again I'm retiring about 8am and awaking about 4pm. -* 21 Jun 1983 -C729\>558. Don't append an overfull rule solely because of\/ |\hbadness|. @666 -R730. Don't allow the glue-ratio of shrinking to be less than~$-1$. @810,811 -* 22 Jun 1983 -B731\>653. Declare the parameter to \\{print_roman_int} to be of type \\{integer}, - instead of \\{nonnegative_integer} (found by Debby Clark). @69 -C732\>690. Make the keyword `|by|' optional (suggested by LL). @1236 -* 24 Jun 1983 -I733. Say `|preloaded|' when announcing \\{format_ident}. @1328 -* 25 Jun 1983 -R734. Add extra boxes and - glue to the output of alignment. [This thwarts possible attempts - at trickery by which system-dependent glue set values - computed by |\span| could have gotten into \TeX's registers by - things like |\valign| and |\vsplit|. It also has the advantage - of perfect accuracy in alignment of vertical rules.] @809 -C735. Make leaders affect the height or width of the enclosing boxes. @656,671 -# Today I'm mainly installing a much-improved format for change files - in |WEB| programs (suggested by DRF). -* 28 Jun 1983 -C736. Permit |\unskip| in vertical mode when we know that it does nothing. @1106 -* 1 Jul 1983 -E737\>700. Avoid redundant boxes when things like `|{\bf A}|' occur in math. @1186 -G738. Add a `|scaled|' feature to |\font| input. @1258 -D739\>700. Remember to correct \\{delta} when an accented box changes. @742 -* 2 Jul 1983 -R740.Introduce \\{bypass_eoln}, to remove anomalous behavior on input files - of length~1. (Suggested by DRF after the problem was discovered by LL). @31 -* 4 Jul 1983 -G741. Allow codes like |^^b| as well as |^^B|. @352,355 -G742. Introduce new parameters |\escapechar|, |\endlinechar|, |\defaulthyphenchar|, - and |\defaultskewchar|, to make \TeX\ less dependent on the - character set. (This affects many modules, since a lot of - error messages must be broken up so that they use \\{print_esc}.) -* 7 Jul 1983 -P743. Use a system-dependent function \\{erstat} when opening or closing - files (suggested by DRF). @27 -* 11 Jul 1983 -# The computer is back up after more than 50 hours down time - (due to air conditioning failure). -I744. Show total glue in the output of\/ |\tracingpages|. @985 -R745. Guard against insertion into an hbox. @993 -C746. Legalize the assignment \<tokenvar>=\<tokenvar>. @1227 -I747. Introduce a new parameter |\errhelp|. @1283 -F748\>623. Don't forget to check \\{global_defs} when |\tabskip| is changed. @782 -* 12 Jul 1983 -C749. Allow an |\outer| macro to appear after |\string|, |\noexpand|, - and |\meaning| (Todd Allen). @369,471 -C750. Make `|\the|' an expandable control sequence (i.e., move it - from the stomach to the throat); this cleans up - several annoying glitches. @367 -C751\>620. Allow |\unhbox| and |\unhcopy| in math mode if the box is void. @1110 -* 13 Jul 1983 -# I lectured for four hours at the TUG meeting today after very little sleep! -* 16 Jul 1983 -# The following were suggested by TUG meeting discussions. -L752. Round the value of \\{default_rule} more properly: It should be 26215. @463 -Q753\>700. Fix |\mathaccent| again; it's still not right! - The final height should be the maximum of - the height of accented letter without superscript and - the height of unaccented letter with superscript. @742 -G754. Add a new feature |\newlinechar|. @59 -G755. Allow boxes and rules in discretionaries (suggested by somebody - from Hewlett-Packard). @1121 -I756\>X28. Show all token expansions, not just macros, - when |\tracingcommands|. @367 -C757. Allow |\char| in a |\hyphenation| list. @935 -G758. Introduce a new feature |\aftergroup|; it can be implemented with - \\{save_stack}. @326 -C759. Run the running dimensions to alignment boundaries (suggested - by ARK). @806 -* 17 Jul 1983 -R760. Zero out \\{hyf} values at the edges, so that - weird pattern data cannot lead to Pascal range checks. @965 -R761\>X190. Decrease the |hc| codes for hyphenation, so that code~127 cannot - possibly be matched. @937,962 -C762\>672. Allow whatsits after hyphenatable words. @899 -C763\>604. Represent an italic correction as an explicit kern. @1113 -* 18 Jul 1983 -C764. Allow lowercase letters in file names. @519 -I765. Change the message `|No output file|' to: `|No pages of output|'. @642 -I766. Confirm that a quiet mode is being entered, when error - interaction ends with |Q|, |R|, or |S| (suggested by ARK). @86 -# Version 0.999 was finally installed today; a new program listing has - been printed. -# From now on, I plan to keep all section numbers unchanged. -# I'm done writing Appendix~H; beginning to revise Chapter~20. -* 25 Jul 1983 -C767\>663. Allow space after `|to|' in the |\read| command (FY). @1215 -# To bed at 1pm today. -* 27 Jul 1983 -S768\>665. Stack the current type of\/ |\if|; this precaution is necessary - in general (FY). @498 -# To bed at 2pm today. -* 29 Jul 1983 -E769. Avoid putting a control sequence in the hash table - when it occurs after |\ifx|. (Requested by Math Reviews people.) @507 -# Finished a version of {\sl The \TeX book\/} lacking only Appendices - D, E, and~I, for distribution to interested readers. -# To bed at 10:30pm, planning to arise regularly at 6am for a change. -* 31 Jul 1983 -I770\>766. Call \\{update_terminal} when going quiet (HWT). @86 -* 1 Aug 1983 -C771. Don't put an empty line at the end of an |\input| file! (This simplifies - the rules and the program, and also gets around a bug that occurred - at the end of files with $\\{end_line_char}<0$.) @362 -# The changes above went into Version 0.9999, which was widely distributed. -* 16 Aug 1983 -B772\>665. Rectify a ridiculous gaffe: I initialized $q$ every time the loop - of \\{change_if_limit} was performed! (Found by FY.) @497 -I773\>648. Distinguish `|string|' from `|strings|' when reporting statistics. @1334 -A774. Introduce \\{lx}, to correct a bug in |\xleader| computations - (found by FY). @627 -* 20 Aug 1983 -F775. Don't forget to apply |\/| to ligatures. @1113 -# Today I began to read all previous issues of {\sl TUGboat}, in preparation for - Appendix~D. -* 27 Aug 1983 -I776. Add debugging hack number~16, to help catch subtle data structure bugs. @1339 -E777. Remove redundant setting and resetting of \\{name_in_progress}. @531 -S778\>618. Suppress |\input| during a font size spec; otherwise - \\{cur_name} is clobbered (found by MDS). @1258 -G779. Introduce new conditionals |\ifhbox| and |\ifvbox|. @505 -* 29 Aug 1983 -D780\>750. Test for an empty list, if emptiness will mess up the data structure. - (Found by Todd Allen.) @478 -E781\>624. Use \\{fast_store_new_token} in another place for efficiency. @466 -I782. Say `|has only|' instead of `|has|'. @579 -# These changes yield Version 0.99999, used only at Stanford. -* 30 Aug 1983 -C783. Make funny blank spaces showable. @298 -* 31 Aug 1983 -C784\>754. Make |\newlinechar| affect \\{print_char}, not just \\{print}. @58 -* 4 Sep 1983 -G785. Add new features |\lastkern|, |\lastpenalty|, |\unkern|, |\unpenalty|. - @424,996,1105 -# OK, Appendix D is finished!! -# The above changes have been installed in Version 0.999999. -* 17 Sep 1983 -P786\>548. Don't bother making duplicate font identifiers; that - was overkill, not really needed. @1258 -# Will this be the historic last change to \TeX? -* 18 Sep 1983 -I787. Correct a minor inconsistency, `|display|' not `|displayed|'. @211 -* 20 Sep 1983 -C788\>604. Treat the kerns inserted for accents as explicit kerns. @1125 -* 26 Sep 1983 -I789. Change `|log|' to `|transcript|' in several messages. @535,1335 -# The index was finished today; I mailed the entire {\sl \TeX book\/} to - Massachusetts for final proofreading before publication. -* 1 Oct 1983 -D790. Prevent uninitialized trie positions in case of overflow - (found by Bernd Schulze). @944 -* 7 Oct 1983 -# Henceforth our weekly `\TeX\ lunch' meetings will be called `\MF\ lunch'. -# DRF begins to produce {\sl The \TeX book\/} on our APS phototypesetter. -* 14 Oct 1983 -P791\>633. Ignore spaces at the ends of lines also in |TEX.POOL| (found - by DRF). @52 -D792\>610. Initialize the \\{history} variable at \\{start_here} (DRF). @1332 -* 18 Oct 1983 -I793. Extend \\{runaway} to catch runaway text (suggested by FY). @306 -D794. Reset \\{cur_cs} after \\{back_input}, not after scanning the - `|=|' (found by FY). @1226 -* 24 Oct 1983 -I795\>638. Change the error recovery for bad delimiters, in accordance with - the changed syntax. (Found by Barry Smith.) @1183 -* 9 Nov 1983 -E796. Optimize the code a bit more, based on empirical frequency data gathered - during September and October: In \S45, use the fact that the - result is almost always true. In \S380, delete `{\bf while} - \\{true} {\bf do}' since many compilers implement that badly. - Rewrite \S852 to avoid calling \\{badness} in the most common case. - @45,380,852 -* 3 Dec 1983 -F797. Don't forget to call |error| after the message has been - given (noticed by Gabi Kuper). @500 -# Version 1.0 released today incorporates all of the above. -* 9 Dec 1983 -# Dinner party with 36 guests to celebrate \TeX's coming of age. -* 2 Feb 1984 -S798\>786. Reinstall |\font| precautions that I thought were unnecessary. - I overlooked many problematic possibilities, like - `|{\font\a=x| |\global\a}| |\the\font|' - and `|\font\a=x| |\font\b=x| |\let\b=\undefined| |\the\a|', etc. - (Found by Mike Urban.) The new remedy involves removal of the - \\{font_ident} array and putting the identifiers into a frozen - part of the hash table; so there's a sprinkling of corrections - in lots of modules. But basically the change is quite conservative, - so it shouldn't spawn any new bugs (it says here). @222,267,1257 -* 9 Feb 1984 -S799. Remove the possibility of double interrupt, in a scenario - found by Clint Cuzzo. @1031 -* 12 Feb 1984 -Q800. Improve spacing in a formula like |$(A,<)$|. @764 -* 13 Feb 1984 -A801. Avoid a bad {\bf goto}, as diagnosed by Clint Cuzzo and George O'Connor. - (Must not go directly to \\{switch}.) @346 -E802. Conserve string pool space by not storing file name in two - guises (suggested by DRF). @537 -* 26 Feb 1984 -I803. Make scaled output look cleaner by printing fewer decimals whenever - this involves no loss of accuracy. (Suggested by \MF\ development.) @103 -* 2 Mar 1984 -R804. Maintain 17-digit accuracy, not 16; now - constants like `|.00000762939453126pt|' will round correctly. @452 -* 16 Mar 1984 -R805. Plug a loophole that permitted recursion in \\{get_next}, by disallowing - deletions in \\{check_outer_validity}. @336 -* 24 Mar 1984 -I806. Open the terminal before trying to wake it up, when the program starts bad. - @1332 -* 27 Mar 1984 -R807. Check that $k<63$, to avoid the - |\patterns{xxx...xxxdxxxdxxx}| anomaly found by Jacques D\'esarm\'enien. @962 -* 11 Apr 1984 -F808. Supply code for the missing case \\{adjust_node} in \\{copy_node_list}. @206 -# Yoicks, how could serious bugs like that have escaped detection? -* 11 Jun 1984 -D809\>627. Initialize \\{char_base}, etc., for \\{null_font}. - (Found by Nick Briggs.) @552 -R810. Clear the \\{buffer} array initially (Briggs). @331 -* 21 Jun 1984 -C811. Look ahead for ligature or kern after a |\chardef|'d item - (D\'esarm\'enien). @1038 -* 4 Jul 1984 -R812. Make the quarterword constraint explicit with a - new `\\{bad}' case (19). @111 -* 7 Jul 1984 -E813. Optimize \\{firm_up_the_line} slightly, - to be consistent with the \MF\ program. @363 -* 8 Jul 1984 -I814. Give additional diagnostics when |\tracingmacros>1|. @323 -# The changes above were incorporated in Version 1.1, released July 9, 1984. -* 27 Jul 1984 -I815. Say `|see| |the| |transcript| |file|' after handling offline |\show| - commands. (Suggested by \MF.) @1298 -* 20 Oct 1984 -I816. Allow `|0|' in response to error prompts. @84 -# Those two changes led to Version 1.2. -* 25 Nov 1984 -R817. Don't forget to check for \\{null} before looking at subfields - of a node. (This was ``dirty Pascal,'' with two quarterword 0's - read as a halfword.) @846 -R818. Ditto in another place! @939 -E819. Remove the fixed-at-compile-time - partition between lower and upper memory. @116,125,162 -# This major change in memory management - completes Version 1.3, which was published in preliminary - looseleaf form as `\TeX: The Program'. -* 20 Dec 1984 -R820. Keep the \\{node_size} field from overflowing if the lower part of memory - is too large. @125 -# That was another bug in existence from the beginning! -* 5 Jan 1985 -I821. Improve the missing-format-file error (DRF). @524 -* 7 Jan 1985 -I822. Update the terminal right away so that the welcoming message will - appear as soon as possible (DRF). @61 -* 23 Jan 1985 -I823. Convey more uncertainty in the - help message at times of \\{confusion}. @95 -I824\>610. Improve the \\{history} logic in the \\{warning_issued} case. @245 -* 18 Feb 1985 -P825\>810. Stick to standard Pascal: Don't - use \\{first} in a {\bf for} loop. [Some procedures ``threaten'' it - globally, according to British Standard 6192, section 6.8.3.9.] - (Pointed out by CET.) @331 -* 11 Apr 1985 -S826. Prevent nonexistent characters from being output by - unusual combinations of ligatures and hyphenation. @915 -* 15 Apr 1985 -L827\>819. Compute memory usage correctly in |INITEX|; the previous number - was wrong because of a |WEB| text macro without parentheses (DRF). @164 -* 16 Apr 1985 -E828. Speed up \\{flush_list} by not calling \\{free_avail} (DRF). @123 -* 17 Apr 1985 -A829\>788. Introduce a special kind of kern for accent positioning; - it must not disappear after a line break. @837,879,1125 -* 18 Apr 1985 -R830\>755. Prevent |\lastbox| and |\unkern| from removing discretionary replacements. - @1081,1105 -# That completes Version 1.4. -* 26 Apr 1985 -C831. Don't try \\{\TeX_area} if a nonstandard file area has been specified - (DRF). @537 -# That was \#401 in \TeX78; I never learn! -* 30 Apr 1985 -C832\>754. Eliminate the limitation on |\write| length; the reason for it - has disappeared (Nancy Tuma). @1370 -* 8 May 1985 -D833\>819. Allocate two words for the head of the \\{active} list (CET). @162 -* 11 May 1985 -I834. Change \\{wterm} to \\{wterm_ln} after a bad beginning (Bill Gropp). @1332 -E835\>806. Don't open the terminal twice (CET). @1332 -* 22 May 1985 -R836. Test for \\{batch_mode} after trying to open the transcript file, - not before (DRF). @92 -R837. Be prepared for string pool overflow while reading the command line! - (This bug was first found in \MF, when it could occur more easily.) @525 -* 7 Aug 1985 -A838. Fix a bug in |\edef\foo{\iffalse\fi\the\toks0}|: \TeX\ should stay in the - loop when expanding non-|\the|. (Found by Dan Brotsky.) @478 -# The above changes were incorporated in Version 1.5. -* 27 Nov 1985 -C839\>764. Make `|plain|' a lowercase name, for consistency with the manual. @521 -I840\>669. Wake up the terminal for |\show| commands. @1294,1297 -# The above changes were incorporated in Version 2.0, which was published - as Volume~B of the {\sl Computers \& Typesetting\/} series. -* 15 Dec 1986 -I841. Punctuate the Poirot help message more carefully. @1283 -* 28 Jan 1987 -R842. Make sure that \\{max_in_open} doesn't exceed 127 (DRF). @14 -D843\>680. Don't allow a |\kern| to be clobbered at the end of a pre-break list - when a discretionary break is taken. (A missing `{\bf else}' was the - source of the error, diagnosed incorrectly before.) @881 -D844. Take account of discarded nodes when computing the background width - after a discretionary. @840 -# That was the first really serious bug detected for more than 17 months! I found it - while experimenting with right-to-left extensions. -# Version 2.1 was released on January 26, 1987. -* 5 Feb 1987 -E845. Remove cases in \\{shorthand_def} that cannot occur (found by Pat Monardo). @1224 -* 14 Apr 1987 -R846. Improve robustness of data structure display - when debugging (Ronaldo Am\'a). @174,182 -* 21 Apr 1987 -E847. Make the storage allocation algorithm more elegant and efficient. @127 -* 22 Apr 1987 -A848\>742. Calculate the empty-line condition properly when \\{end_line_char} is - absent. @360 -# The previous three changes were found while I was teaching a class based - on Volume~B; they led to Version 2.2. -* 28 Apr 1987 -E849. Avoid closing a file when \TeX\ knows that it isn't open (JS). @560 -* 3 Aug 1987 -S850. Clean up unfinished output if it's necessary to - \\{jump_out} (Klaus Guntermann). @642 -# That makes Version 2.3; subsequent version numbers won't be logged here. -* 19 Aug 1987 -A851. Indent rules properly in cases like\hfil\break - |\hangindent=1pt$$\halign{...\cr\noalign{\hrule}}$$|. @806 -* 20 Aug 1987 -S852. Introduce \\{co_backup} because of cases like - |\hskip 0pt plus 1fil\ifdim| (Alan Guth). @366 -* 9 Nov 1987 -S853. Change the calculation for number of leader boxes, so that - it won't be too sensitive to roundoff error near exact multiples - (M. F. Bridgland). @626 -* 17 Nov 1987 -A854. Replace my stupid algorithm - for fixed-point multiplication of negatives (WGS). @572 -* 12 Dec 1987 -B855. Fix a typo in the initialization of hyphenation tables (PB). @952 -# That error was almost completely harmless, thus undetectable, - except if some |\lccode| is~1 and no |\patterns| are given. -* 23 Dec 1987 -S856\>564. Be more cautious when ``relaxing'' a previously undefined |\csname|; - you might be inside a group (CET). @372 -* 20 Apr 1988 -S857. Make sure \\{temp_head} is well-formed whenever it can be - printed in a ``runaway'' message: Consider constructions like - |\outer\def\a0{}\a\a| (Silvio Levy). @391 -* 24 Apr 1988 -S858\>618. Avoid conflicting use of the string pool in constructions like - |\def\\#1{}\input a\\\z| (Robert Messer). @260 -* 10 May 1988 -R859. Amend the |\patterns| data structure when $\\{trie_min}=0$ - (PB). @951,953 -* 25 May 1988 -R860. Guarantee that \\{trie_pointer} cannot be out of range. @923 -S861\>618. Avoid additional bugs like \#858 in constructions - like |\input a\romannumeral1|, etc. @464,465,470 -R862\>618. Prevent similar string pool confusion that could occur - during the processing of |**\input\romannumeral6|. @525 -* 19 Jun 1988 -S863\>819. Prevent a negative dividend from rounding upward, - causing a loop (CET). @126 -E864\>819. Adopt a smoother allocation strategy when - memory is nearly gone (CET). @126 -* 20 Jun 1988 -D865\>852. Initialize \\{cur_order}, now that it's being backed up - (Tsunetoshi Hayashi). @439 -* 6 Nov 1988 -S866\>612. Disable \\{fatal_error} in \\{prompt_input}, so that - \\{open_log_file} can use it safely (Tim Morgan). @71 -S867\>836. Force terminal output whenever \\{open_log_file} fails. @535 -* 14 Dec 1988 -P868\>866. Restore \\{fatal_error} in \\{prompt_input}, but don't - let it be unsafe for \\{open_log_file}. @92,534 -* 23 Jan 1989 -D869. Give $q$ a legal value when recovering from ``infinite shrinkage'' - error. @976,1004 -* 17 Feb 1989 -D870\>758. Avoid spurious error message for |\aftergroup\relax\dump| by avoiding - inaccessible |\aftergroup| tokens (FM and Rainer Sch\"opf). @280 -* 20 Mar 1989 -R871. Don't refer to \\{link}(\\{null}) even when it ``can't happen'' - (PB). @791 -* 7 Jun 1989 -S872. Avoid confusion from |$$\begingroup\halign{#\cr}$$| (FM). @1130 -* 20 Jun 1989 -S873. Put fraction digits into dynamic memory, not the global \\{dig} array, - because of constructions like |.5\ifdim.6| (FM). @452 -* 17 Jul 1989 -S874. Prevent embarrassing attempts to report errors before the string - mechanism has been fully initialized, for example when the - command line exceeds the buffer size (WGS). @31 -* 16 Aug 1989 -M875. Allow integer products to be 31 bits long (FM). @105 -* 31 Aug 1989 -C876\>441. Increase the number of tokens shown by \\{token_show} - (J. Lavagnino). @295 -S877. Avoid confusion from |$$\begingroup\eqno$$| (FM). @1140 -# The recent TUG meeting turned out to be an extend-\TeX-for-the-nineties - party! I agreed that some extensions for non-English languages - ought to be made while I still knew how to do them. (In other words, - I broke my firm commitment to keeping \TeX\ completely stable; - but in this case nobody objected.) The following eleven changes - were coded during the month of September. -* 30 Sep 1989 -G878. Install major change allowing general 8-bit code input. @38,352 -G879. Install major change allowing multiple hyphenation tables - (M. Ferguson). @923 -G880. Introduce new parameters |\lefthyphenmin| and |\righthyphenmin|. @923 -G881. Introduce major new ligature capabilities including implicit - boundary characters. @908,1037 -G882. Install new |\inputlineno| feature suggested by MDS. @424 -G883. Install new |\holdinginserts| feature suggested by FM. @1014 -G884. Install new |\badness| feature. @424,664 -G885. Install new |\emergencystretch| feature. @863 -G886. Install new |\errorcontextlines| feature suggested by FM. @311 -S887. Recover from anomaly when hyphenation |char_warning| clobbers - |old_setting|. @863 -P888. Make it easier to change the format extension (Don Hosek). @520,1328 -* 16 Oct 1989 -R889. Avoid range check in null font with |bc=256| (PB). @565 -* 22 Nov 1989 -S890\>856. Prevent \\{save_stack} conflicts in - |{\hbox\expandafter{\csname\endcsname}}| and\kern-3pt\break - similar constructions (WGS). @645,1117 -S891\>858. System-dependent parts of file names must be addressed relatively, - not absolutely (FM and Rainer Sch\"opf). @516,517 -* 3 Dec 1989 -G892\>880. Allow different hyphenmins in the same paragraph (M. Ferguson). @1376 -S893. Distinguish |\par| from characters on |\if| tests. (MVL). @334 -S894\>378. Alignments need to be more robust against malicious - attacks (MVL). @782 -C895. Don't let kerns in discretionaries disappear at breaks (MVL). @869 -Q896\>881. Make the new hyphenation reconstruction procedure less cautious, - so that it doesn't lose hyphens found by the old method. @914 -* 11 Dec 1989 -D897\>879. Make an undumped trie dumpable again (PB). @1325 -* 18 Dec 1989 -G898\>588. Allow access to page totals in |\output| routines - (FM and Chris Rowley). @421 -* 22 Jan 1990 -R899\>611. Recognize more cases of unbalanced |\output| (CET). @1026 -* 29 Jan 1990 -S900\>758. Make |\aftergroup| work properly after |\eqno| (Michael Downes). - @1194 -* 1 Feb 1990 -S901\>878. Fix one more case of \\{end_line_char_inactive} (WGS). @360 -* 22 Feb 1990 -R902. Don't lose the last active node when total demerits are very high (FM). - @836,854 -* 13 Mar 1990 -D903. Doublecheck math fonts after making equation number (MVL). @1194 -D904. Don't forget to rule out charnodes before testing \\{type} (MVL). - @805,1202 -* 23 Mar 1990 -F905\>881. Don't change the font of punctuation preceding a hyphenated word - (Scott C. Allendorf). @903 -I906. Balance the parentheses shown on the terminal during normal runs. @1335 -E907. Optimize |\ifx\p\q| after |\let\p=\q| (MVL). @508 -S908. Treat migration properly in displays (MVL). @1199,1205 -# We're now up to Version 3.0; I sincerely hope all bugs have been found. -* 11 May 1990 -F909\>881. Initialize |\nullfont| ligature parameters (Lance Carnes). @552 -* 22 July 1990 -S910\>579. Treat |\prevgraf| as zero within |\write| (Bogus\l aw Jackowski). - @422 -* 26 July 1990 -S911. Report `|l.1|' when first line of file overflows buffer - (George Russell). @538 -* 5 December 1990 -S912\>878. Translate unprintable characters in font identifiers (WGS). @63 -* 28 December 1990 -R913. Avoid range check when there are 65536 or more pages (Eberhard Mattes). - @642 -* 20 September 1991 -I914\>878. Improve error message for |\mathchar| out of range. @436 -S915\>878. Retain unprintable internal strings in 8-bit form (FM). @59 -S916\>881. Retain right punctuation context for ligature reconstruction - (problem found by Brian Hamilton Kelly). @903 -* 10 January 1992 -S917\>881. Also avoid producing a double kern at boundary (CET). @897 -S918. Disallow |\setbox| where it doesn't work (Robert Hunt). @1241,1270 -S919. Robustify |\mskip| and |\mkern| in presence of negative quad (WGS). - @716,717 -S920\>679. Defend against `|}{|' in |\read| (Michael Downes). @483 -E921\>798. Save string memory if font occurs repeatedly (Bogus\l aw Jackowski). - @1260 -S922\>784. Don't let |\newlinechar| interrupt unprintable expansion (Bernd - Raichle). @59,60 -* 7 February 1992 -D923\>881. Restore |cur_l| properly when boundary character doesn't exist - (Mattes and Raichle). @1036 -* 17 July 1992 -C924\>892. Use current language at beginning of horizontal mode (Rainer - Sch\"opf and CET). @1091,1200 -* 17 December 1992 -R925\>879. Avoid (harmless) range errors (Philip Taylor and CET). @934,960 -* 25 February 1993 -C926\>881. Protect kerns inserted by boundary characters (William Baxter). - @837,866 -S927\>917. Don't let boundary kern disappear after hyphenation. @897 -* 26 June 1993 -R928\>668. Avoid potential future bug (Peter Breitenlohner). @628,637 -* 17 December 1993 -S929\>881. Boundary character representation shouldn't depend on the font - memory size (Berthold Horn). @549,1323 -* 10 March 1994 -R930. Huge font parameter number may exceed array bound (CET). @549 -* 4 September 1994 -F931\>926. Math kerns are explicit (Walter Carlip). @717 -R932. Avoid overflow on huge real-to-integer conversion. @625,634 -* 19 March 1995 -R933. Avoid spurious reference counts in format files (PB). @1335 -* 23 November 1998 -R934. Make sure that \TeX\ is certifiably Y2K-safe. @1328 -* 12 July 1999 -A935\>255. |\xleaders| often drops the final box (Hiroshi Nakashima). @627,636 -* 30 August 2001 -R936. Don't allow a million unbalanced braces followed by |\cr| - outside of any alignment (Ralf Roth). @789 -R937. Don't allow end-template except at end of template (Roth). @325,1131 -* 30 September 2002 -Q938. Improve rounding of glue during output (M. F. Bridgland). @625,634 -* 18 March 2008 -F939. Forgot to goto the proper error recovery (DRF). @395 -E940. Avoid a case of dirty Pascal and speed up inner loop. @1035 -R941. Forget reference to \\{last_glue} in format file (DRF). @1335 -R942. Glue reference not updated after overflow error (DRF). @1236 -B943. Muglue in |\leaders| had wrong units; now disallowed (DRF). @1078 -E944. Speedup of ligatures and kerns at end of a word (DRF). @1039 -R945. Another sanity check of TFM files for security (DRF). @565 -I946. Give better size data for unmagnified insertions. @986 -* 6 January 2014 -C947. Space after |\csname\endcsname| to match other spaces. (Oleg Bulatov) @262 -* 15 January 2021 -I948. Don't pause on errors when tracing paragraphs (Udo Wermuth). @826 -S949. Don't try to interact when in |\batchmode| (Xiaosa Zhang). @83 -S950. Don't try to edit when no file is active (Xiaosa Zhang). @84 -R951. Take date and time sometimes from system, not user (Udo Wermuth). @241,536 -B952. Don't allow implicit left brace after |#| (Udo Wermuth). @476 -R953. After nine parameters, must delete offending tokens (Bruno Le Floch). @476 -D954. Garbage visible in buffer after file ends prematurely (DRF). @486 -R955. Force nonexistent characters to have null specs (DRF). @722 -C956. Don't mark fraction noads as temporarily Inner (DRF). @761 -Q957. Reset |\newlinechar| before logging the stats (Udo Wermuth). @1333,1335 -\relax -\bye - -Up to a point it is better to let the snags [bugs] be there -than to spend such time in design that there are none -(how many decades would this course take?). --- A M Turing - Proposals for Development in the Mathematics Division - of an Automatic Computing Engine (ACE) - Report E882, Executive Committee, National Physical Laboratory (NPL) - 1945; reprinted in April 1972 as NPL report Com Sci 57 - page 18 - quoted by Carpenter and Doran in The Computer Journal 20 (1977), 273. - -DRF David Fuchs -HWT Howard Trickey -FY Frank Yellin -LL Leslie Lamport -JS Jim Sterken -ARK Arthur Keller -CET Chris Thompson -FM Frank Mittelbach (added subsequent to publication of paper) -PB Peter Breitenlohner (ditto) -WGS Wayne G. Sullivan (ditto) -MVL Marc van Leeuwen (ditto) -MDS Michael D. Spivak (ditto) |