summaryrefslogtreecommitdiff
path: root/info/digests/tex-implementors/tex.dif
diff options
context:
space:
mode:
Diffstat (limited to 'info/digests/tex-implementors/tex.dif')
-rw-r--r--info/digests/tex-implementors/tex.dif801
1 files changed, 801 insertions, 0 deletions
diff --git a/info/digests/tex-implementors/tex.dif b/info/digests/tex-implementors/tex.dif
new file mode 100644
index 0000000000..fe3c882a07
--- /dev/null
+++ b/info/digests/tex-implementors/tex.dif
@@ -0,0 +1,801 @@
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 8 % TeX is a trademark of the American Mathematical Society.
+ 9 % METAFONT is a tradement of Addison-Wesley Publishing Company.
+ 11 % Version 0 was released in September 1982 after it passed a variety of tests.
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 8 % Version 0 was released in September 1982 after it passed a variety of tests.
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 19 % Version 2.1 corrects anomalies in discretionary breaks (January 1987).
+ 20 % Version 2.2 corrects "(Please type...)" with null \endlinechar (April 1987).
+ 21 % Version 2.3 avoids incomplete page in premature termination (August 1987).
+ 22 % Version 2.4 fixes \noaligned rules in indented displays (August 1987).
+ 23 % Version 2.5 saves cur_order when expanding tokens (September 1987).
+ 24 % Version 2.6 adds 10sp slop when shipping leaders (November 1987).
+ 25 % Version 2.7 improves rounding of negative-width characters (November 1987).
+ 27 % A reward of $40.96 will be paid to the first finder of any remaining bug.
+ 28 % (This amount will double again in 1988.)
+ 30 % Although considerable effort has been expended to make the TeX program
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 17 % A reward of $10.24 will be paid to the first finder of any remaining bug.
+ 18 % (This amount will double again in 1986.)
+ 20 % Although considerable effort has been expended to make the TeX program
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 48 \chardef\%=`\%
+ 50 \def\(#1){} % this is used to make section names sort themselves better
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 39 \def\(#1){} % this is used to make section names sort themselves better
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 166 @d banner=='This is TeX, Version 2.7' {printed when \TeX\ starts}
+ 168 @ Different \PASCAL s have slightly different conventions, and the present
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 155 @d banner=='This is TeX, Version 2.0' {printed when \TeX\ starts}
+ 157 @ Different \PASCAL s have slightly different conventions, and the present
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 437 if max_in_open>=128 then bad:=6;
+ 439 @ Labels are given symbolic names by the following definitions, so that
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 427 @ Labels are given symbolic names by the following definitions, so that
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 779 The `\\{name}' parameter, which is of type `{\bf packed array
+ 780 $[\langle\\{any}\rangle]$ of \\{char}}', stands for the name of
+ 781 the external file that is being opened for input or output.
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 767 The `\\{name}' parameter, which is of type `\ignorespaces|packed
+ 768 array[@t\<\\{any}>@>] of text_char|', stands for the name of
+ 769 the external file that is being opened for input or output.
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 873 file into available positions of the buffer array and returns the value
+ 874 |true|, unless the file has already been entirely read, in which case it
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 861 field into available positions of the buffer array and returns the value
+ 862 |true|, unless the file has already been entirely read, in which case it
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 1734 when |get_token| is being used to delete a token, and/or if some fatal error
+ 1735 occurs while \TeX\ is trying to fix a non-fatal one. But such recursion
+ 1736 @^recursion@>
+ 1737 is never more than two levels deep.
+ 1739 @<Error handling...@>=
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 1722 when |get_token| is being used to delete a token, or if some fatal error
+ 1723 occurs while \TeX\ is trying to fix a non-fatal one. But such recursion
+ 1724 @^recursion@>
+ 1725 is never more than one level deep.
+ 1727 @<Error handling...@>=
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 2524 done, i.e., if |hi_mem_min=lo_mem_max+1|, we have to quit.
+ 2526 @p function get_avail : pointer; {single-word node allocation}
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 2512 done, i.e., if |hi_mem_min=low_mem_max+1|, we have to quit.
+ 2514 @p function get_avail : pointer; {single-word node allocation}
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 2674 if r=p then if rlink(p)<>p then
+ 2675 @<Allocate entire node |p| and |goto found|@>;
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 2662 if r=p then if ((rlink(p)<>rover) or (llink(p)<>rover)) then
+ 2663 @<Allocate entire node |p| and |goto found|@>;
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 2777 entries: The first of these has |font=font_base|, and its |link| points
+ 2778 to the second;
+ 2779 the second identifies the font and the character dimensions.
+ 2780 The saving feature about oriental characters is that most of them have
+ 2781 the same box dimensions. The |character| field of the first |char_node|
+ 2782 is a ``\\{charext}'' that distinguishes between graphic symbols whose
+ 2783 dimensions are identical for typesetting purposes. (See the \MF\ manual.)
+ 2784 Such an extension of \TeX\ would not be difficult; further details are
+ 2785 left to the reader.
+ 2787 In order to make sure that the |character| code fits in a quarterword,
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 2765 entries: The first of these would identify the font and the character
+ 2766 dimensions, and it would also link to the second, where the full halfword
+ 2767 |info| field would address the desired character. Such an extension of
+ 2768 \TeX\ would not be difficult; further details are left to the reader.
+ 2769 The saving feature about oriental characters is that most of them have
+ 2770 the same box dimensions.
+ 2772 In order to make sure that the |character| code fits in a quarterword,
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 2837 The |subtype| field is set to |min_quarterword|, since that's the desired
+ 2838 |span_count| value if this |hlist_node| is changed to an |unset_node|.
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 2822 The |subtype| field is set to |min_quarterword|, since that' the desired
+ 2823 |span_count| value if this |hlist_node| is changed to an |unset_node|.
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 3213 harmless to let |lig_trick| and |garbage| share the same location of |mem|.
+ 3215 @d zero_glue==mem_bot {specification for \.{0pt plus 0pt minus 0pt}}
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 3198 harmless to let |lig_trick|, |garbage|, and |backup_head| share the same
+ 3199 location of |mem|.
+ 3201 @d zero_glue==mem_bot {specification for \.{0pt plus 0pt minus 0pt}}
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 3290 {previous |mem_end|, |lo_mem_max|, and |hi_mem_min|}
+ 3291 @t\hskip1em@>@!panicking:boolean; {do we want to check memory constantly?}
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 3276 {previous |mem_end|, |lo_mem_max|,and |hi_mem_min|}
+ 3277 @t\hskip1em@>@!panicking:boolean; {do we want to check memory constantly?}
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 3441 begin while p>mem_min do
+ 3442 begin if is_char_node(p) then
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 3427 begin while p>null do
+ 3428 begin if is_char_node(p) then
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 3577 @p procedure show_node_list(@!p:integer); {prints a node list symbolically}
+ 3578 label exit;
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 3563 @p procedure show_node_list(@!p:pointer); {prints a node list symbolically}
+ 3564 label exit;
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 3587 while p>mem_min do
+ 3588 begin print_ln; print_current_string; {display the nesting history}
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 3573 while p>null do
+ 3574 begin print_ln; print_current_string; {display the nesting history}
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 3961 @d relax=0 {do nothing ( \.{\\relax} )}
+ 3962 @d left_brace=1 {beginning of a group ( \.\{ )}
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 3947 @d relax=0 { do nothing ( \.{\\relax} )}
+ 3948 @d left_brace=1 {beginning of a group ( \.\{ )}
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 4091 than |max_command| so that their special nature is easily discernible.
+ 4092 The ``expandable'' commands come first.
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 4077 than |max_command| so that their special nature is easily discernable.
+ 4078 The ``expandable'' commands come first.
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 4396 In the first region we have 128 equivalents for ``active characters'' that
+ 4397 act as control sequences, followed by 128 equivalents for single-character
+ 4398 control sequences.
+ 4400 Then comes region~2, which corresponds to the hash table that we will
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 4382 In the first region we have 128 equivalents for single-character control
+ 4383 sequences, followed by 128 equivalents for ``active characters'' that
+ 4384 act as control sequences.
+ 4386 Then comes region~2, which corresponds to the hash table that we will
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 6404 when a subfile ends. This variable has six possible values:
+ 6406 \yskip\hang|normal|, means that a subfile can safely end here without incident.
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 6390 when a subfile ends. This variable has five possible values:
+ 6392 \yskip\hang|normal|, means that a subfile can safely end here without incident.
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 7326 begin if (end_line_char<0)or(end_line_char>127) then incr(limit);
+ 7327 if limit=start then {previous line was empty}
+ 7328 print_nl("(Please type a command or say `\end')");
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 7312 begin if limit=start then {previous line was empty}
+ 7313 print_nl("(Please type a command or say `\end')");
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 7457 @!cvl_backup,@!radix_backup,@!co_backup:small_number;
+ 7458 {to save |cur_val_level|, etc.}
+ 7459 @!backup_backup:pointer; {to save |link(backup_head)|}
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 7442 @!cvl_backup,@!radix_backup:small_number; {to save |cur_val_level| and |radix|}
+ 7443 @!backup_backup:pointer; {to save |link(backup_head)|}
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 7462 co_backup:=cur_order; backup_backup:=link(backup_head);
+ 7463 if cur_cmd<call then @<Expand a nonmacro@>
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 7446 backup_backup:=link(backup_head);
+ 7447 if cur_cmd<call then @<Expand a nonmacro@>
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 7467 cur_order:=co_backup; link(backup_head):=backup_backup;
+ 7468 end;
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 7451 link(backup_head):=backup_backup;
+ 7452 end;
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 7730 top of\/ \TeX's input stack, so that |get_next| will proceed to read it
+ 7731 next.
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 7714 top of the \TeX's input stack, so that |get_next| will proceed to read it
+ 7715 next.
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+ 9432 if\/ \.{\\or} or \.{\\else} or \.{\\fi} occurs before the current \.{\\if}
+ 9433 condition has been evaluated, \.{\\relax} will be inserted.
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+ 9416 if \.{\\or} or \.{\\else} or \.{\\fi} occurs before the current \.{\\if}
+ 9417 condition has been evaluated, \.{\\relax} will be inserted.
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+10225 is not explicitly repeated in \.{DVI} format.
+10227 \yskip\hang|header[0]| is a 32-bit check sum that \TeX\ will copy into
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+10209 is not explicitly repeated in \.{DVI} format. Extensions of \TeX\ for
+10210 oriental languages should be able to identify oriental fonts by means
+10211 of this additional header information.
+10212 @^oriental characters@>@^Chinese characters@>@^Japanese characters@>
+10214 \yskip\hang|header[0]| is a 32-bit check sum that \TeX\ will copy into
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+10575 ``at'' size~|s|. If |s|~is negative, it's the negative of a scale factor
+10576 to be applied to the design size; |s=-1000| is the normal case.
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+10562 ``at'' size~|s|. If |s|~is negative, its the negative of a scale factor
+10563 to be applied to the design size; |s=-1000| is the normal case.
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+10608 done: if file_opened then b_close(tfm_file);
+10609 read_font_info:=g;
+10610 end;
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+10595 done: b_close(tfm_file); read_font_info:=g;
+10596 end;
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+10787 quantity by the integer~|z|, which is known to be less than $2^{27}$.
+10788 If $|z|<2^{23}$, the individual multiplications $b\cdot z$,
+10789 $c\cdot z$, $d\cdot z$ cannot overflow; otherwise we will divide |z| by 2,
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+10773 quantity by the integer~|z|, which is known to be less than $2^{27}$. Let
+10774 $\alpha=16z$. If $|z|<2^{23}$, the individual multiplications $b\cdot z$,
+10775 $c\cdot z$, $d\cdot z$ cannot overflow; otherwise we will divide |z| by 2,
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+10794 if $a=0$, or the same quantity minus $\alpha=2^{4+e}z^\prime$ if $a=255$.
+10795 This calculation must be done exactly, in order to guarantee portability
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+10780 if $a=0$, or the same quantity minus $\alpha$ if $a=255$.
+10781 This calculation must be done exactly, in order to guarantee portability
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+10815 begin alpha:=16;
+10816 while z>=@'40000000 do
+10817 begin z:=z div 2; alpha:=alpha+alpha;
+10818 end;
+10819 beta:=256 div alpha; alpha:=alpha*z;
+10820 end
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+10801 begin alpha:=16*z; beta:=16;
+10802 while z>=@'40000000 do
+10803 begin z:=z div 2; beta:=beta div 2;
+10804 end;
+10805 end
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+10891 @.Missing font identifier@>
+10892 help2("I was looking for a control sequence whose")@/
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+10876 @.Undefined font code@>
+10877 help2("I was looking for a control sequence whose")@/
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+11513 doing_leaders:=false; dead_cycles:=0; cur_s:=-1;
+11515 @ The \.{DVI} bytes are output to a buffer instead of being written directly
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+11498 doing_leaders:=false; dead_cycles:=0;
+11500 @ The \.{DVI} bytes are output to a buffer instead of being written directly
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+11937 @!cur_s:integer; {current depth of output box nesting, initially $-1$}
+11939 @ @<Initialize variables as |ship_out| begins@>=
+11940 dvi_h:=0; dvi_v:=0; cur_h:=h_offset; dvi_f:=null_font;
+11941 ensure_dvi_open;
+11942 if total_pages=0 then
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+11922 @!cur_s:integer; {current depth of output box nesting}
+11924 @ @<Initialize variables as |ship_out| begins@>=
+11925 dvi_h:=0; dvi_v:=0; cur_h:=h_offset; dvi_f:=null_font;
+11926 cur_s:=-1; ensure_dvi_open;
+11927 if total_pages=0 then
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+12019 if c>=qi(128) then dvi_out(set1);
+12020 dvi_out(qo(c));@/
+12021 cur_h:=cur_h+char_width(f)(char_info(f)(c));
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+12004 if c<qi(128) then dvi_out(qo(c))
+12005 else begin dvi_out(set1); dvi_out(qo(c));
+12006 end;
+12007 cur_h:=cur_h+char_width(f)(char_info(f)(c));
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+12103 begin rule_wd:=rule_wd+10; {compensate for floating-point rounding}
+12104 edge:=cur_h+rule_wd; lx:=0;
+12105 @<Let |cur_h| be the position of the first box, and set |leader_wd+lx|
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+12089 begin edge:=cur_h+rule_wd; lx:=0;
+12090 @<Let |cur_h| be the position of the first box, and set |leader_wd+lx|
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+12110 cur_h:=edge-10; goto next_p;
+12111 end;
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+12095 cur_h:=edge; goto next_p;
+12096 end;
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+12124 by half of the excess space not occupied by the leaders; and in the
+12125 case of |x_leaders| (expanded leaders) we increase |cur_h|
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+12109 by half of the excess space not occupied by the leaders; and in the case of
+12110 case of |x_leaders| (expanded leaders) we increase |cur_h|
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+12262 begin rule_ht:=rule_ht+10; {compensate for floating-point rounding}
+12263 edge:=cur_v+rule_ht; lx:=0;
+12264 @<Let |cur_v| be the position of the first box, and set |leader_ht+lx|
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+12247 begin edge:=cur_v+rule_ht; lx:=0;
+12248 @<Let |cur_v| be the position of the first box, and set |leader_ht+lx|
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+12269 cur_v:=edge-10; goto next_p;
+12270 end;
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+12253 cur_v:=edge; goto next_p;
+12254 end;
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+12362 dvi_out(eop); incr(total_pages); cur_s:=-1;
+12363 done:
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+12346 dvi_out(eop); incr(total_pages);
+12347 done:
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+12374 @.Huge page...@>
+12375 help2("The page just created is more than 18 feet tall or")@/
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+12358 help2("The page just created is more than 18 feet tall or")@/
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+12381 @.The following...deleted@>
+12382 show_box(p);
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+12364 show_box(p);
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+12396 while cur_s>-1 do
+12397 begin if cur_s>0 then dvi_out(pop)
+12398 else begin dvi_out(eop); incr(total_pages);
+12399 end;
+12400 decr(cur_s);
+12401 end;
+12402 if total_pages=0 then print_nl("No pages of output.")
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+12378 if total_pages=0 then print_nl("No pages of output.")
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+12586 because it is a highly negative number.
+12588 @<Incorporate box dimensions into the dimensions of the hbox...@>=
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+12562 becase it is a highly negative number.
+12564 @<Incorporate box dimensions into the dimensions of the hbox...@>=
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+13218 the current string would be `\.{.\^.\_/}' if |p| points to the |ord_noad| for
+13219 |x| in the (ridiculous) formula
+13220 `\.{\$\\sqrt\{a\^\{\\mathinner\{b\_\{c\\over x+y\}\}\}\}\$}'.
+13222 @<Cases of |show_node_list| that arise...@>=
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+13194 the current string would be `\.{.(.[/}' if |p| points to the |ord_noad| for
+13195 |x| in the (ridiculous) formula `\.{\$\\sqrt\{a\^\{\{b\_\{c\\over x+y\}
+13196 \}\}\}\$}'.
+13198 @<Cases of |show_node_list| that arise...@>=
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+13668 their limits above and below. It takes a given box~|b| and
+13669 changes it so that the new box is centered in a box of width~|w|.
+13670 The centering is done by putting \.{\\hss} glue at the left and right
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+13644 their limits above and below. It takes a given hlist box |b| and
+13645 changes it so that the new box is centered in a box of width |w|.
+13646 The centering is done by putting \.{\\hss} glue at the left and right
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+15406 q:=link(head); s:=head;
+15407 while q<>null do
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+15382 q:=link(head);
+15383 while q<>null do
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+15413 s:=q; q:=link(q);
+15414 end
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+15389 q:=link(q);
+15390 end
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+15420 if o<>0 then
+15421 begin r:=link(q); link(q):=null; q:=hpack(q,natural);
+15422 shift_amount(q):=o; link(q):=r; link(s):=q;
+15423 end;
+15424 end
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+15396 end
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+15729 @!pass_number:halfword; {the number of passive nodes allocated on this pass}
+15731 @ The active list also contains ``delta'' nodes that help the algorithm
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+15701 @!pass_number:pointer; {the number of passive nodes allocated on this pass}
+15703 @ The active list also contains ``delta'' nodes that help the algorithm
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+15924 @!v:pointer; {points to a glue specification or a node ahead of |cur_p|}
+15925 @!t:integer; {node count, if |cur_p| is a discretionary node}
+15926 @!f:internal_font_number; {used in character width calculation}
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+15896 @!v:pointer; {points to a glue specification}
+15897 @!t:quarterword; {replacement count, if |cur_p| is a discretionary node}
+15898 @!f:internal_font_number; {used in character width calculation}
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+16048 s:=cur_p;
+16049 if break_type>unhyphenated then if cur_p<>null then
+16050 @<Compute the discretionary |break_width| values@>;
+16051 while s<>null do
+16052 begin if is_char_node(s) then goto done;
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+16020 if (break_type=unhyphenated)or(cur_p=null) then
+16021 begin s:=cur_p;
+16022 while s<>null do
+16023 begin if is_char_node(s) then goto done;
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+16062 done: end
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+16033 end
+16034 else @<Compute the discretionary |break_width| values@>;
+16035 done: end
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+16077 plus $l_1$, so the length from |cur_p| to |cur_p| should be $\gamma+l_0+l_1-l$,
+16078 minus the length of nodes that will be discarded after the discretionary break.
+16080 The value of $l_0$ need not be computed, since |line_break| will put
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+16050 plus $l_1$, so the length from |cur_p| to |cur_p| should be $\gamma+l_0+l_1-l$.
+16052 The value of $l_0$ need not be computed, since |line_break| will put
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+16087 begin t:=replace_count(cur_p); v:=cur_p; s:=post_break(cur_p);
+16088 while t>0 do
+16089 begin decr(t); v:=link(v);
+16090 @<Subtract the width of node |v| from |break_width|@>;
+16091 end;
+16092 while s<>null do
+16093 begin @<Add the width of node |s| to |break_width| and increase |t|,
+16094 unless it's discardable@>;
+16095 s:=link(s);
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+16059 begin t:=replace_count(cur_p); s:=cur_p;
+16060 while t>0 do
+16061 begin decr(t); s:=link(s);
+16062 @<Subtract the width of node |s| from |break_width|@>;
+16063 end;
+16064 s:=post_break(cur_p);
+16065 while s<>null do
+16066 begin @<Add the width of node |s| to |break_width|@>;
+16067 s:=link(s);
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+16098 if t=0 then s:=link(v); {more nodes may also be discardable after the break}
+16099 end
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+16070 end
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+16104 @<Subtract the width of node |v|...@>=
+16105 if is_char_node(v) then
+16106 begin f:=font(v);
+16107 break_width[1]:=break_width[1]-char_width(f)(char_info(f)(character(v)));
+16108 end
+16109 else case type(v) of
+16110 ligature_node: begin f:=font(lig_char(v));@/
+16111 break_width[1]:=@|break_width[1]-
+16112 char_width(f)(char_info(f)(character(lig_char(v))));
+16113 end;
+16114 hlist_node,vlist_node,rule_node,kern_node:
+16115 break_width[1]:=break_width[1]-width(v);
+16116 othercases confusion("disc1")
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+16075 @<Subtract the width of node |s|...@>=
+16076 if is_char_node(s) then
+16077 begin f:=font(s);
+16078 break_width[1]:=break_width[1]-char_width(f)(char_info(f)(character(s)));
+16079 end
+16080 else case type(s) of
+16081 ligature_node: begin f:=font(lig_char(s));@/
+16082 break_width[1]:=@|break_width[1]-
+16083 char_width(f)(char_info(f)(character(lig_char(s))));
+16084 end;
+16085 hlist_node,vlist_node,rule_node,kern_node:
+16086 break_width[1]:=break_width[1]-width(s);
+16087 othercases confusion("disc1")
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+16130 hlist_node,vlist_node,rule_node:break_width[1]:=break_width[1]+width(s);
+16131 kern_node: if (t=0)and(subtype(s)<>acc_kern) then t:=-1 {discardable}
+16132 else break_width[1]:=break_width[1]+width(s);
+16133 othercases confusion("disc2")
+16134 @:this can't happen disc2}{\quad disc2@>
+16135 endcases;
+16136 incr(t)
+16138 @ We use the fact that |type(active)<>delta_node|.
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+16101 hlist_node,vlist_node,rule_node,kern_node:
+16102 break_width[1]:=break_width[1]+width(s);
+16103 othercases confusion("disc2")
+16104 @:this can't happen disc2}{\quad disc2@>
+16105 endcases
+16107 @ We use the fact that |type(active)<>delta_node|.
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+16154 else begin q:=get_node(delta_node_size); link(q):=r; type(q):=delta_node;@/
+16155 subtype(q):=0; {the |subtype| is not used}
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+16123 else begin q:=get_node(delta_node_size); link(q):=r; type(q):=delta_node;
+16124 subtype(q):=0; {the |subtype| is not used}
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+16168 begin q:=get_node(delta_node_size); link(q):=r; type(q):=delta_node;@/
+16169 subtype(q):=0; {the |subtype| is not used}
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+16137 begin q:=get_node(delta_node_size); link(q):=r; type(q):=delta_node;
+16138 subtype(q):=0; {the |subtype| is not used}
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+16846 |disc_break:=true|@>
+16847 else if (type(q)=math_node)or(type(q)=kern_node) then width(q):=0;
+16848 end
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+16815 |disc_break:=true|@>;
+16816 if not is_char_node(q) then
+16817 if (type(q)=math_node)or(type(q)=kern_node) then width(q):=0;
+16818 end
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+17175 $\.a\,\.b\,\.-\,\.{c\!d}\,\.{e\!f}$ and $\.a\,\.{b\!c}\,\.{d\!e}\,\.f$.
+17176 Thus the insertion of a hyphen might cause effects to ripple arbitrarily
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+17145 $\.a\,\.{b\!c}\,\.{d\!e}\,\.f$ and $\.a\,\.b\,\.-\,\.{c\!d}\,\.{e\!f}$.
+17146 Thus the insertion of a hyphen might cause effects to ripple arbitrarily
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+17378 using an algorithm due to Frank~M. Liang.
+17379 @^Liang, Franklin Mark@>
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+17348 using an algorithm due to Frank M. Liang.
+17349 @^Liang, Franklin Mark@>
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+17901 |trie_max>z|, since |h=z-c|. It follows that location |trie_max| will
+17902 never be occupied in |trie|, and we will have |trie_max>=trie_link(z)|.
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+17871 |trie_max>z|, since |h=z+c|. It follows that location |trie_max| will
+17872 never be occupied in |trie|, and we will have |trie_max>=trie_link(z)|.
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+18667 @!b,@!c:integer; {badness and cost of current page}
+18668 @!pi:integer; {penalty to be added to the badness}
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+18637 @!b,c:integer; {badness and cost of current page}
+18638 @!pi:integer; {penalty to be added to the badness}
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+18959 @!prev_p:pointer; {predecessor of |p|}
+18960 @!n:min_quarterword..255; {insertion box number}
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+18929 @!prev_p:pointer; {precedessor of |p|}
+18930 @!n:min_quarterword..255; {insertion box number}
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+19465 width(p):=font_info[k].sc; {that's |space(f)|}
+19466 stretch(p):=font_info[k+1].sc; {and |space_stretch(f)|}
+19467 shrink(p):=font_info[k+2].sc; {and |space_shrink(f)|}
+19468 font_glue[f]:=p;
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+19435 width(p):=font_info[k].sc;
+19436 stretch(p):=font_info[k+1].sc;
+19437 shrink(p):=font_info[k+2].sc;
+19438 font_glue[f]:=p;
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+22014 count_def_code: define(p,assign_int,count_base+cur_val);
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+21984 char_def_code: define(p,char_given,cur_val);
+21985 math_char_def_code: define(p,math_given,cur_val);
+21986 count_def_code: define(p,assign_int,count_base+cur_val);
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+22659 ("Pretend that you're Hercule Poirot: Examine all clues,")@/
+22660 @^Poirot, Hercule@>
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+22631 ("Pretend that you're Hercule Poirot, examine all clues,")@/
+22632 @^Poirot, Hercule@>
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+23377 This program doesn't bother to close the input files that may still be open.
+23379 @<Last-minute...@>=
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+23349 @<Last-minute...@>=
+************
+************
+File DRB0:[BELL.WEB]TEX.WEB;2
+23633 @d write_stream(#) == info(#+1) {stream number (0 to 17)}
+23634 @d open_name(#) == link(#+1) {string number of file name to open}
+******
+File DRB0:[BELL.WEB]TEX.WEB;1
+23603 @d write_stream(#) == info(#+1) {stream number (0 to 16)}
+23604 @d open_name(#) == link(#+1) {string number of file name to open}
+************
+
+Number of difference sections found: 74
+Number of difference records found: 162
+
+DIFFERENCES /IGNORE=(SPACING,TRAILING_SPACES,BLANK_LINES)/WIDTH=132/MERGED=1/OUTPUT=DRB0:[BELL.WEB]TEX.DIF;1-
+ DRB0:[BELL.WEB]TEX.WEB;2-
+ DRB0:[BELL.WEB]TEX.WEB;1