summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/knuth/errata/errorlog.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/generic/knuth/errata/errorlog.tex')
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/errorlog.tex2946
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)