summaryrefslogtreecommitdiff
path: root/info/digests/tex-implementors/tex.dif
blob: fe3c882a0715f94254661794401710532240344c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
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