Subject: correction to TeX 2.92; Metafont 1.4 Date: 30 May 88 Message No: 005 To: TeX implementors and distributors From: Barbara Beeton Subject: small error in TeX 2.92; Metafont 1.4 An error was present in the listing of differences between TeX.WEB 2.92 and 2.9 as reported in message 4. The same error was present in the TeX.WEB file at SCORE, but has now been fixed. If you are working from the difference list provided in message 4, the following lines should be ignored: **** FILE TX:TEX-2-92.WEB.1, 31-621 (464580) @d check_byte_range(#)==begin if (#ec) then abort@+end @d current_character_being_worked_on==k+bc-fmem_ptr **** FILE TX:TEX-2-9.WEB.1, 31-621 (464024) @d check_byte_range(#)==begin if (#ec) then abort@+end @d current_character_being_worked_on==k+bc-fmem_ptr *************** Thanks to Nelson Beebe and Ken Yap for spotting this. The rest of this message will consist of the additions to MF84.BUG, a comparison of the MF.WEB files for version 1.4 and 1.3, and changes to the errata list since 23 Dec 87. ######################################################################## Additions to MF84.BUG 540. Typo suppresses an error detection (Chris Thompson, 2May88) @x module 963 if txy mod unity=0 then if tyy mod unity=0 then @y if txx mod unity=0 then if tyy mod unity=0 then @z 541. get_x_token can lose a scanned declared variable (Chris Thompson, 4May88) @x module 1011 if equiv(x)=null then new_root(x); @y @z @x module 1011 done:scan_declared_variable:=h; @y done: if eq_type(x)<>tag_token then clear_symbol(x,false); if equiv(x)=null then new_root(x); scan_declared_variable:=h; @z 542. (I sincerely hope that there won't be any more) ######################################################################## Differences between MF.WEB for 1.4 and for 1.3 ;COMPARISON OF PS:<1SCRATCH>MF.WEB.1 AND PS:MF.WEB.1 ;OPTIONS ARE /E /3 **** FILE PS:<1SCRATCH>MF.WEB.1, 1-15 (870) % Version 1.4 corrected scan_declared_variable timing (May 1988). % A few "harmless" optimizations have been made since then. % A reward of $20.48 will be paid to the first finder of any remaining bug. % (This amount will double again in 1989.) % Although considerable effort has been expended to make the METAFONT program **** FILE PS:MF.WEB.1, 1-15 (870) % A few "harmless" optimizations have been made since then. % A reward of $10.24 will be paid to the first finder of any remaining bug. % (This amount will double again in 1988.) % Although considerable effort has been expended to make the METAFONT program *************** **** FILE PS:<1SCRATCH>MF.WEB.1, 2-81 (7574) @d banner=='This is METAFONT, Version 1.4' {printed when \MF\ starts} @ Different \PASCAL s have slightly different conventions, and the present **** FILE PS:MF.WEB.1, 1-146 (7508) @d banner=='This is METAFONT, Version 1.3' {printed when \MF\ starts} @ Different \PASCAL s have slightly different conventions, and the present *************** **** FILE PS:<1SCRATCH>MF.WEB.1, 43-1162 (768090) if txx mod unity=0 then if tyy mod unity=0 then @; **** FILE PS:MF.WEB.1, 1-18695 (768065) if txy mod unity=0 then if tyy mod unity=0 then @; *************** **** FILE PS:<1SCRATCH>MF.WEB.1, 44-399 (798211) h:=get_avail; info(h):=x; t:=h;@/ **** FILE PS:MF.WEB.1, 1-19495 (798187) if equiv(x)=null then new_root(x); h:=get_avail; info(h):=x; t:=h;@/ *************** **** FILE PS:<1SCRATCH>MF.WEB.1, 44-407 (798526) done: if eq_type(x)<>tag_token then clear_symbol(x,false); if equiv(x)=null then new_root(x); scan_declared_variable:=h; end; **** FILE PS:MF.WEB.1, 1-19504 (798538) done:scan_declared_variable:=h; end; *************** ######################################################################## Extracts from ERRATA.TeX (differences as compared with previous version) ;COMPARISON OF TX:ERRATA.TEX.2 AND TX:ERRATA.TEX.3 ;OPTIONS ARE /3 **** FILE TX:ERRATA.TEX.2, 2-3 (1510) \bugonpage A159, line 22 (2/15/88) \ninepoint\noindent `|\nolimits|' if the normal |\displaylimits| convention has been overridden; a Rad\cutpar **** FILE TX:ERRATA.TEX.3, 2-2 (1508) *************** **** FILE TX:ERRATA.TEX.2, 2-15 (1845) \bugonpage A326, line 12 (12/12/87) \ninepoint\noindent its natural width. The |\hbox| version also invokes |\everymath|. \bugonpage A359, lines 35--38 (5/24/88) \ninepoint\noindent |\def\updownarrow{\delimiter"326C33F } \def\arrowvert{\delimiter"033C000 }|% \par\noindent |\def\Updownarrow{\delimiter"326D377 } \def\Arrowvert{\delimiter"033D000 } |% \par\noindent |\def\vert{\delimiter"026A30C } \def\Vert{\delimiter"026B30D } |% \par\noindent |\def\backslash{\delimiter"026E30F } \def\bracevert{\delimiter"033E000 }| \bugonpage A364, line 35 (5/24/88) \ninepoint\noindent |\def\fmtname{plain}\def\fmtversion{2.92} % identifies the current format| **** FILE TX:ERRATA.TEX.3, 2-8 (1690) \bugonpage A326, line 12 (9/20/87) \ninepoint\noindent its natural width. The |\hbox| version also invokes |\everymath|. *************** **** FILE TX:ERRATA.TEX.2, 2-59 (3566) \bugonpage A458, left column, line 19 (2/15/88) \eightpoint\indent |\|\| ( $\Vert$ ), {\it146--147}, {\it171}, $\underline{361}$, 435, 438. \bugonpage A462, left column, line 7 (10/9/87) \eightpoint\indent\qquad 152, 178, $\underline{360}$. \bugonpage A463, left column (4/17/88) \eightpoint\indent \hbox to0pt{\hss\lower1pt\hbox{*}}|\day|, 273, 349, {\it406}. **** FILE TX:ERRATA.TEX.3, 2-36 (2846) \bugonpage A462, left column, line 7 (10/9/87) \eightpoint\indent\qquad 152, 178, $\underline{360}$. *************** **** FILE TX:ERRATA.TEX.2, 2-81 (4195) \bugonpage A480, right column (2/15/88) \eightpoint\indent|\vdots| ( $\vdots$ ), {\it177}, $\underline{359}$. \bugonpage A481, right column (7/3/87) \eightpoint|\z@|, $\underline{347}$, 348.\par **** FILE TX:ERRATA.TEX.3, 2-48 (3201) \bugonpage A481, right column (7/3/87) |\z@|, $\underline{347}$, 348.\par *************** **** FILE TX:ERRATA.TEX.2, 3-6 (4592) \bugonpage B2, line 32 (4/30/88) \ninepoint\noindent\hskip10pt {\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% {\tt This\]is\]TeX,\]Version\]2.92\char'23}\quad **** FILE TX:ERRATA.TEX.3, 3-6 (3471) \bugonpage B2, line 32 (12/23/87) \ninepoint\noindent\hskip10pt {\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% {\tt This\]is\]TeX,\]Version\]2.9\char'23}\quad *************** **** FILE TX:ERRATA.TEX.2, 3-19 (4943) \bugonpage B108, new line after line 8 (5/24/88) \ninepoint\noindent\kern20pt $d$: \\{integer};\quad $\{\,$number of characters in incomplete current string$\,\}$ \bugonage B108, lines 31--33 (5/24/88) \ninepoint\noindent\kern10pt $\\{str\_room}(l)$; $d\gets\\{cur\_length};\par\noindent\kern10pt {\bf while} $\\{pool\_ptr}>\\{str\_start}[\\{str\_ptr}]$ {\bf do} \par\noindent\kern20pt {\bf begin} \\{decr}(\\{pool\_ptr}); $\\{str\_pool}[\\{pool\_ptr}+l]\gets\\{str\_pool}[\\{pool\_ptr}]$; \par\noindent\kern20pt {\bf end};\quad$\{\,$move current string up to make room for another$\,\}$ \par\noindent\kern10pt {\bf for} $k\gets j$ {\bf to} $j+l-1$ {\bf do} $\\{append\_char}(\\{buffer}[k])$; \par\noindent\kern10pt $\\{text}(p)\gets\\{make\_string}$; $\\{pool\_ptr}\gets\\{pool\_ptr}+d$; \bugonpage B115, line 12 (4/28/88) \ninepoint\noindent\hskip10pt $\\{group\_code}=0\to\\{max\_group\_code}$;\quad $\{\,$\\{save\_level} for a level boundary$\,\}$ \bugonpage B141, line 19 (4/28/88) \ninepoint\noindent \\{par\_token}: \\{halfword};\quad $\{\,$token representing `|\par|'$\,\}$ \bugonpage B150, line 24 (4/28/88) \tenpoint\noindent{\bf 358.\quad}% The present point in the program is reached only when the \\{expand} routine has inserted\cutpar \bugonpage B151, mini-index (4/28/88) \eightpoint\noindent Delete the entry for `\\{no\_expand}'; replace it by: \indent\\{expand}: {\bf procedure}, \S366. **** FILE TX:ERRATA.TEX.3, 3-19 (3822) *************** **** FILE TX:ERRATA.TEX.2, 3-91 (7266) \indent\\{eq\_define}: {\bf procedure}, \S227.\par $\\{relax}=0$, \S207.\par \bugonpage B162, lines 12--14 (4/30/88) \ninepoint\noindent\hskip10pt {\bf repeat} $\\{link}(\\{temp\_head})\gets\\{null}$;\par\noindent\hskip20pt {\bf if\/} $(\\{info}(r)>\\{match\_token}+127)\lor (\\{info}(r)<\\{match\_token})$ {\bf then} $s\gets\\{null}$\par\noindent\hskip20pt {\bf else begin} $\\{match\_chr}\gets\\{info}(r)-\\{match\_token}$; \ $s\gets\\{link}(r)$; \ $r\gets s$; \ $p\gets\\{temp\_head}$; \ $m\gets 0$; \bugonpage B181, line 31 (4/28/88) \ninepoint\noindent [Change `$x$ units per sp' to `$x$ sp per unit'! This change also should be made on line~1 of page B183 and line $-8$ of page B590.] \bugonpage B224, second-last line (4/28/87) \ninepoint\noindent \\{done}: {\bf if} \\{file\_opened} {\bf then} \\{b\_close}(\\{tfm\_file});\par \noindent\hskip10pt $\\{read\_font\_info}\gets g$; **** FILE TX:ERRATA.TEX.3, 3-44 (4674) \\{eq\_define}: {\bf procedure}, \S227.\par $\\{relax}=0$, \S207.\par *************** **** FILE TX:ERRATA.TEX.2, 3-204 (11136) \bugonpage B285, line 21 (4/28/88) \noindent\tenpoint is subsidiary to the \\{nucleus} field of some noad; the dot is replaced by `|_|' or `|^|' or `|/|' or `|\|' if $p$ is\cutpar **** FILE TX:ERRATA.TEX.3, 3-134 (7695) *************** **** FILE TX:ERRATA.TEX.2, 3-232 (12036) \bugonpage B387, line 2 (5/24/88) \tenpoint\noindent is quite short. In the following code we set \\{hc}$[\\{hn}+2]$ to the impossible value 128, in order to\cutpar \bugonpage B387, line 8 (5/24/88) \ninepoint\noindent\kern10pt $\\{hc}[0]\gets127$; $\\{hc}[\\{hn}+1]\gets127$; $\\{hc}[\\{hn}+2]\gets128$;\quad$\{\,$insert delimiters$\,\}$ \bugonpage B390, lines 17--18 (5/24/88) \ninepoint\noindent\kern10pt $\langle\,$Enter as many hyphenation exceptions as are listed, until coming to a right brace; then {\bf return\eightrm\kern.5em961}$\,\rangle$; \smallskip[The same change applies to lines 20--21, and to page~582.] \bugonpage B396, new line after line 34 (5/24/88) \ninepoint\noindent\kern10pt $\\{trie\_link}(\\{trie\_size})\gets0$; $\\{trie\_back}(0)\gets\\{trie\_size}$;\quad $\{\,$wrap around$\,\}$ **** FILE TX:ERRATA.TEX.3, 3-156 (8407) *************** **** FILE TX:ERRATA.TEX.2, 3-266 (13062) \bugonpage B397, lines 15--17 (5/24/88) \ninepoint\noindent\kern10pt {\bf begin} $c\gets\\{trie\_c}[p]$;\par\noindent\kern10pt {\bf if} $c<\\{trie\_min}$ {\bf then} $\\{trie\_min}\gets c$;\par\noindent\kern10pt {\bf if} $\\{trie\_min}=0$ {\bf then} $z\gets\\{trie\_link}(\\{trie\_size})$\par \noindent\kern10pt {\bf else} $z\gets\\{trie\_link}(\\{trie\_min}-1)$;\quad $\{\,$get the first conceivably good hole$\,\}$ \bugonpage B400, lines 3--4 (5/24/88) \ninepoint\noindent $\langle\,$Enter all of the patterns into a linked trie, until coming to a right brace{\eightrm\kern.5em961}$\,\rangle\equiv$ \smallskip[The same change applies to page B399, lines 29--30, and to page~582.] \bugonpage B402, line 10 (5/24/88) \ninepoint\noindent\kern10pt $r\gets\\{trie\_size}$;\quad $\{\,$finally, we will zero out the holes$\,\}$ **** FILE TX:ERRATA.TEX.3, 3-162 (8584) *************** **** FILE TX:ERRATA.TEX.2, 3-310 (14406) \bugonpage B552, left column (4/28/88) \eightpoint[Insert `358' into \\{expand}.] **** FILE TX:ERRATA.TEX.3, 3-181 (9073) *************** **** FILE TX:ERRATA.TEX.2, 3-320 (14633) \eightpoint[Delete the entry for \\{low\_mem\_max}.] \bugonpage B562, left column (4/28/88) \eightpoint[Remove `358' from \\{no\_expand}.] **** FILE TX:ERRATA.TEX.3, 3-187 (9212) [Delete the entry for \\{low\_mem\_max}.] *************** **** FILE TX:ERRATA.TEX.2, 3-335 (15000) \bugonpage B568, left column (4/28/88) \eightpoint[Move `269' from \\{save\_index} to \\{save\_level}.] **** FILE TX:ERRATA.TEX.3, 4-1 (9477) *************** **** FILE TX:ERRATA.TEX.2, 4-15 (15448) \bugonpage C164, line 10 (4/27/88) \ninepoint\indent \quad $y_{\$c}=\\{top}\,y_{\$l}$; \ $y_{\$d}=y_{\$r}$; \ $x_{\$c}=x_{\$l}-\\{left\_jut}$; \ $x_{\$d}=x_{\$r}+\\{right\_jut}$; \bugonpage C175, line 23 (1/11/88) \ninepoint\noindent expand into a sequence of tokens. \ (The language {\eightrm{SIMULA67}} demonstrated that it is\cutpar **** FILE TX:ERRATA.TEX.3, 4-15 (9816) *************** **** FILE TX:ERRATA.TEX.2, 4-33 (15982) \bugonpage C337, line 11 (4/28/88) \ninepoint An online ``menu'' of the available test routines will be typed at your terminal\cutpar \bugonpage C356, left column (1/11/88) \eightpoint SIMULA67 language, 175. \bugonpage C358, right column (2/15/88) \eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}% |yoffset|, 212, $\underline{220}$, 315, 324. **** FILE TX:ERRATA.TEX.3, 5-1 (9998) *************** ######################################################################## [ end of message 005 ] -------