diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /info/digests/tex-implementors/texmfwebplain.update |
Initial commit
Diffstat (limited to 'info/digests/tex-implementors/texmfwebplain.update')
-rw-r--r-- | info/digests/tex-implementors/texmfwebplain.update | 316 |
1 files changed, 316 insertions, 0 deletions
diff --git a/info/digests/tex-implementors/texmfwebplain.update b/info/digests/tex-implementors/texmfwebplain.update new file mode 100644 index 0000000000..7b78c70807 --- /dev/null +++ b/info/digests/tex-implementors/texmfwebplain.update @@ -0,0 +1,316 @@ +Below are upates to TeX.WEB, MF.WEB, and PLAIN.TeX. + +Differences between TeX.WEB for 2.92 and for 2.9 + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 1-28 (1880) +% Version 2.91 fixes \outer\def\a0{}\a\a bug (April 1988). +% Version 2.92 fixes \patterns, also file names with complex macros (May 1988). + +% A reward of $81.92 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 TeX program +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 1-29 (1882) + +% A reward of $40.96 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 TeX program +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 2-93 (9207) +@d banner=='This is TeX, Version 2.92' {printed when \TeX\ starts} + +@ Different \PASCAL s have slightly different conventions, and the present +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 2-93 (9066) +@d banner=='This is TeX, Version 2.9' {printed when \TeX\ starts} + +@ Different \PASCAL s have slightly different conventions, and the present +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 19-61 (240552) +@!d:integer; {number of characters already in current string} +@!p:pointer; {index in |hash| array} +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 19-61 (240410) +@!p:pointer; {index in |hash| array} +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 19-88 (241492) +str_room(l); d:=cur_length; +while pool_ptr>str_start[str_ptr] do + begin decr(pool_ptr); str_pool[pool_ptr+l]:=str_pool[pool_ptr]; + end; {move current string up to make room for another} +for k:=j to j+l-1 do append_char(buffer[k]); +text(p):=make_string; pool_ptr:=pool_ptr+d; +@!stat incr(cs_count);@+tats@;@/ +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 19-87 (241287) +str_room(l); +for k:=j to j+l-1 do append_char(buffer[k]); +text(p):=make_string; +@!stat incr(cs_count);@+tats@;@/ +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 20-77 (255280) +@!group_code=0..max_group_code; {|save_level| for a level boundary} + +@ The global variable |cur_group| keeps track of what sort of group we are +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 20-77 (254875) +@!group_code=0..max_group_code; {|save_index| for a level boundary} + +@ The global variable |cur_group| keeps track of what sort of group we are +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 25-31 (308968) +@!par_token:halfword; {token representing `\.{\\par}'} + +@ @<Put each...@>= +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 25-31 (308563) +@!par_token:halfword; {token representing '\.{\\par}'} + +@ @<Put each...@>= +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 25-372 (322487) +@ The present point in the program is reached only when the |expand| +routine has inserted a special marker into the input. In this special +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 25-372 (322082) +@ The present point in the program is reached only when the |no_expand| +routine has inserted a special marker into the input. In this special +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 26-375 (343630) +repeat link(temp_head):=null; +if (info(r)>match_token+127)or(info(r)<match_token) then s:=null +else begin match_chr:=info(r)-match_token; s:=link(r); r:=s; + p:=temp_head; m:=0; + end; +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 26-375 (343228) +repeat if (info(r)>match_token+127)or(info(r)<match_token) then s:=null +else begin match_chr:=info(r)-match_token; s:=link(r); r:=s; + p:=temp_head; link(p):=null; m:=0; + end; +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 27-675 (378115) + are |x| sp per unit; |goto attach_sign| if the units are internal@>; +@<Scan an optional space@>; +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 27-675 (377704) + are |x| units per sp; |goto attach_sign| if the units are internal@>; +@<Scan an optional space@>; +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 28-13 (388583) +@p function str_toks(@!b:pool_pointer):pointer; + {changes the string |str_pool[b..pool_ptr]| to a token list} +var p:pointer; {tail of the token list} +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 28-13 (388173) +@p function str_toks:pointer; {changes the current string to a token list} +var p:pointer; {tail of the token list} +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 28-20 (388915) +p:=temp_head; link(p):=null; k:=b; +while k<pool_ptr do +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 28-19 (388468) +p:=temp_head; link(p):=null; k:=str_start[str_ptr]; +while k<pool_ptr do +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 28-28 (389103) +pool_ptr:=b; str_toks:=p; +end; +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 28-27 (388673) +pool_ptr:=str_start[str_ptr]; str_toks:=p; +end; +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 28-40 (389611) +@!b:pool_pointer; {base of temporary string} +begin get_x_token; scan_something_internal(tok_val,false); +if cur_val_level>=ident_val then @<Copy the token list@> +else begin old_setting:=selector; selector:=new_string; b:=pool_ptr; + case cur_val_level of +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 28-39 (389198) +begin get_x_token; scan_something_internal(tok_val,false); +if cur_val_level>=ident_val then @<Copy the token list@> +else begin old_setting:=selector; selector:=new_string; + case cur_val_level of +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 28-53 (390161) + selector:=old_setting; the_toks:=str_toks(b); + end; +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 28-51 (389689) + selector:=old_setting; the_toks:=str_toks; + end; +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 28-117 (392508) +@!b:pool_pointer; {base of temporary string} +begin c:=cur_chr; @<Scan the argument for command |c|@>; +old_setting:=selector; selector:=new_string; b:=pool_ptr; +@<Print the result of command |c|@>; +selector:=old_setting; link(garbage):=str_toks(b); ins_list(link(temp_head)); +end; +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 28-115 (392033) +begin c:=cur_chr; @<Scan the argument for command |c|@>; +old_setting:=selector; selector:=new_string; +@<Print the result of command |c|@>; +selector:=old_setting; link(garbage):=str_toks; ins_list(link(temp_head)); +end; +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 30-262 (427879) +begin if (pool_ptr+name_length>pool_size)or(str_ptr=max_strings)or + (cur_length>0) then + make_name_string:="?" +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 30-262 (427342) +begin if (pool_ptr+name_length>pool_size)or(str_ptr=max_strings) then + make_name_string:="?" +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 35-281 (573403) +`\.\_' or `\.\~' or `\./' or `\.\\' if |p| is descended from the |subscr| +or |supscr| or |denominator| or |numerator| fields of noads. For example, +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 35-281 (572846) +`\.[' or `\.(' or `\./' or `\.\\' if |p| is descended from the |subscr| +or |supscr| or |denominator| or |numerator| fields of noads. For example, +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 43-68 (756339) +to the impossible value 128, in order to guarantee that |hc[hn+3]| will +never be fetched. +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 43-68 (755780) +to the impossible value 256, in order to guarantee that |hc[hn+3]| will +never be fetched. +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 43-75 (756649) +hc[0]:=127; hc[hn+1]:=127; hc[hn+2]:=128; {insert delimiters} +for j:=0 to hn-2 do +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 43-75 (756090) +hc[0]:=127; hc[hn+1]:=127; hc[hn+2]:=256; {insert delimiters} +for j:=0 to hn-2 do +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 43-196 (761319) +until coming to a right brace; then |return|@>; +exit:end; +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 43-196 (760760) +until coming to a right brace; then skip an optional space and |return|@>; +exit:end; +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 44-201 (773038) +trie_link(trie_size):=0; trie_back(0):=trie_size; {wrap around} +for p:=1 to 128 do +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 44-201 (772506) +for p:=1 to 128 do +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 44-233 (774482) +begin c:=trie_c[p]; +if c<trie_min then trie_min:=c; +if trie_min=0 then z:=trie_link(trie_size) +else z:=trie_link(trie_min-1); {get the first conceivably good hole} +loop@+ begin if z<c then goto not_found; +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 44-232 (773885) +begin c:=trie_c[p]; {we have |c>0|} +if c<trie_min then trie_min:=c; +z:=trie_link(trie_min-1); {get the first conceivably good hole} +loop@+ begin if z<c then goto not_found; +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 44-345 (779179) + brace@>; +trie_root:=compress_trie(trie_root); {compress the trie} +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 44-343 (778549) + brace; then skip an optional space@>; +trie_root:=compress_trie(trie_root); {compress the trie} +*************** + +**** FILE TX:<TEX82.NEW>TEX-2-92.WEB.1, 44-443 (782387) +r:=trie_size; {finally, we will zero out the holes} +h.rh:=0; h.b0:=min_quarterword; h.b1:=0; {|trie_link:=0|, +**** FILE TX:<TEX82.NEW>TEX-2-9.WEB.1, 44-441 (781786) +r:=0; {finally, we will zero out the holes} +h.rh:=0; h.b0:=min_quarterword; h.b1:=0; {|trie_link:=0|, +*************** + + +######################################################################## + +Differences between new and previous Plain.TeX + +**** FILE PS:<TEX.INPUTS>PLAIN.TEX.2, 6-244 (33253) +\def\arrowvert{\delimiter"33C000 } % arrow without arrowheads +\def\Arrowvert{\delimiter"33D000 } % double arrow without arrowheads +\def\bracevert{\delimiter"33E000 } % the vertical bar that extends braces +**** FILE PS:<TEX.INPUTS>PLAIN.TEX.1, 1-951 (33258) +\def\arrowvert{\delimiter"33C } % arrow without arrowheads +\def\Arrowvert{\delimiter"33D } % double arrow without arrowheads +\def\bracevert{\delimiter"33E } % the vertical bar that extends braces +*************** + +**** FILE PS:<TEX.INPUTS>PLAIN.TEX.2, 8-22 (44482) +\def\fmtname{plain}\def\fmtversion{2.92} % identifies the current format +**** FILE PS:<TEX.INPUTS>PLAIN.TEX.1, 1-1220 (44480) +\def\fmtname{plain}\def\fmtversion{2.3} % identifies the current format +*************** + +######################################################################## + +Differences between MF.WEB for 1.4 and for 1.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:<TEX.MF>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:<TEX.MF>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 + @<Scale the edges, shift them, and |return|@>; +**** FILE PS:<TEX.MF>MF.WEB.1, 1-18695 (768065) + if txy mod unity=0 then if tyy mod unity=0 then + @<Scale the edges, shift them, and |return|@>; +*************** + +**** FILE PS:<1SCRATCH>MF.WEB.1, 44-399 (798211) +h:=get_avail; info(h):=x; t:=h;@/ +**** FILE PS:<TEX.MF>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:<TEX.MF>MF.WEB.1, 1-19504 (798538) +done:scan_declared_variable:=h; +end; +*************** + |