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
|
************
File DRB0:[BELL.WEB]MF.WEB;2
7 % TeX is a trademark of the American Mathematical Society.
8 % METAFONT is a tradement of Addison-Wesley Publishing Company.
10 % Version 0 was completed on July 28, 1984.
11 % Version 1 was completed on January 4, 1986; it corresponds to "Volume D".
12 % Version 1.1 trivially corrected the punctuation in one message (June 1986).
13 % Version 1.2 corrected an arithmetic overflow problem (July 1986).
14 % Version 1.3 improved rounding when elliptical pens are made (November 1986).
15 % A few "harmless" optimizations have been made since then.
17 % A reward of $10.24 will be paid to the first finder of any remaining bug.
18 % (This amount will double again in 1988.)
20 % Although considerable effort has been expended to make the METAFONT program
******
File DRB0:[BELL.WEB]MF.WEB;1
7 % Version 0 was completed on July 28, 1984.
8 % Version 1 was completed on January 4, 1986; it corresponds to "Volume D".
10 % A reward of $5.12 will be paid to the first finder of any remaining bug.
11 % (This amount will double in 1987.)
13 % Although considerable effort has been expended to make the METAFONT program
************
************
File DRB0:[BELL.WEB]MF.WEB;2
42 \chardef\%=`\%
43 \let\swap=\leftrightarrow
******
File DRB0:[BELL.WEB]MF.WEB;1
35 \let\swap=\leftrightarrow
************
************
File DRB0:[BELL.WEB]MF.WEB;2
146 @d banner=='This is METAFONT, Version 1.3' {printed when \MF\ starts}
148 @ Different \PASCAL s have slightly different conventions, and the present
******
File DRB0:[BELL.WEB]MF.WEB;1
138 @d banner=='This is METAFONT, Version 1.0' {printed when \MF\ starts}
140 @ Different \PASCAL s have slightly different conventions, and the present
************
************
File DRB0:[BELL.WEB]MF.WEB;2
1019 @!str_ptr : str_number; {number of the current string being created}
1020 @!init_pool_ptr : pool_pointer; {the starting value of |pool_ptr|}
******
File DRB0:[BELL.WEB]MF.WEB;1
1011 @!str_ptr : str_number; {start of the current string being created}
1012 @!init_pool_ptr : pool_pointer; {the starting value of |pool_ptr|}
************
************
File DRB0:[BELL.WEB]MF.WEB;2
1617 when |get_next| is being used to delete a token, and/or if some fatal error
1618 occurs while \MF\ is trying to fix a non-fatal one. But such recursion
1619 @^recursion@>
1620 is never more than two levels deep.
1622 @<Error handling...@>=
******
File DRB0:[BELL.WEB]MF.WEB;1
1609 when |get_next| is being used to delete a token, or if some fatal error
1610 occurs while \MF\ is trying to fix a non-fatal one. But such recursion
1611 @^recursion@>
1612 is never more than one level deep.
1614 @<Error handling...@>=
************
************
File DRB0:[BELL.WEB]MF.WEB;2
3177 @ The |mem| array is divided into two regions that are allocated separately,
******
File DRB0:[BELL.WEB]MF.WEB;1
3169 @<Glob...@>=
3170 @!temp_ptr:pointer; {a pointer variable for occasional emergency use}
3172 @ The |mem| array is divided into two regions that are allocated separately,
************
************
File DRB0:[BELL.WEB]MF.WEB;2
3314 @p function get_node(@!s:integer):pointer; {variable-size node allocation}
3315 label found,exit,restart;
******
File DRB0:[BELL.WEB]MF.WEB;1
3309 @p function get_node(@!s:integer):pointer; {variable-size node liberation}
3310 label found,exit,restart;
************
************
File DRB0:[BELL.WEB]MF.WEB;2
3368 if r=p then if rlink(p)<>p then
3369 @<Allocate entire node |p| and |goto found|@>;
******
File DRB0:[BELL.WEB]MF.WEB;1
3363 if r=p then if ((rlink(p)<>rover) or (llink(p)<>rover)) then
3364 @<Allocate entire node |p| and |goto found|@>;
************
************
File DRB0:[BELL.WEB]MF.WEB;2
4250 or syntactic significance, except in a few instances defined here.
4251 There's also |max_class|, which can be used as a basis for additional
******
File DRB0:[BELL.WEB]MF.WEB;1
4245 or syntactic significance, expect in a few instances defined here.
4246 There's also |max_class|, which can be used as a basis for additional
************
************
File DRB0:[BELL.WEB]MF.WEB;2
6061 @!s,@!t:pointer; {registers for list traversal}
6062 @!delx,@!dely:scaled; {directions where |open| meets |explicit|}
******
File DRB0:[BELL.WEB]MF.WEB;1
6056 @!r,@!s,@!t:pointer; {registers for list traversal}
6057 @!delx,@!dely:scaled; {directions where |open| meets |explicit|}
************
************
File DRB0:[BELL.WEB]MF.WEB;2
6164 @<Other local variables for |solve_choices|@>@;
******
File DRB0:[BELL.WEB]MF.WEB;1
6159 @!sine,@!cosine:fraction; {trig functions of various angles}
6160 @<Other local variables for |solve_choices|@>@;
************
************
File DRB0:[BELL.WEB]MF.WEB;2
6759 (The constant .14 is actually $(7-\sqrt{28}\,)/12$; the worst case
6760 occurs for polynomials like $B(0,28-4\sqrt{28},14-5\sqrt{28},42;t)$.)
6762 @ OK, now that a long theoretical preamble has justified the
******
File DRB0:[BELL.WEB]MF.WEB;1
6755 (The constant .14 is actually $(7-\sqrt{28}/12$; the worst case
6756 occurs for polynomials like $B(0,28-4\sqrt{28},14-5\sqrt{28},42)$.)
6758 @ OK, now that a long theoretical preamble has justified the
************
************
File DRB0:[BELL.WEB]MF.WEB;2
8304 The following code maintains the invariant relations
8305 $0\L|x0|<\max(|x1|,|x1|+|x2|)$,
8306 $\vert|x1|\vert<2^{30}$, $\vert|x2|\vert<2^{30}$;
******
File DRB0:[BELL.WEB]MF.WEB;1
8300 The following code maintains the invariant relations |0<=x0<max(x1,x1+x2)|,
8301 $\vert|x1|\vert<2^{30}$, $\vert|x2|\vert<2^{30}$;
************
************
File DRB0:[BELL.WEB]MF.WEB;2
10380 while max_coef<fraction_half do
10381 begin double(max_coef);
******
File DRB0:[BELL.WEB]MF.WEB;1
10375 while max_coef<fraction_one do
10376 begin double(max_coef);
************
************
File DRB0:[BELL.WEB]MF.WEB;2
10404 var @!ww:pointer; {for list manipulation}
10405 @!du,@!dv:scaled; {for slope calculation}
******
File DRB0:[BELL.WEB]MF.WEB;1
10399 var @!q,@!ww:pointer; {for list manipulation}
10400 @!du,@!dv:scaled; {for slope calculation}
************
************
File DRB0:[BELL.WEB]MF.WEB;2
10411 begin right_type(p):=k;
10412 if rising then
******
File DRB0:[BELL.WEB]MF.WEB;1
10406 begin q:=link(p); right_type(p):=k;
10407 if rising then
************
************
File DRB0:[BELL.WEB]MF.WEB;2
11228 alpha:=abs(u); beta:=abs(v);
11229 if alpha<beta then
11230 begin alpha:=abs(v); beta:=abs(u);
11231 end; {now $\alpha=\max(\vert u\vert,\vert v\vert)$,
11232 $\beta=\min(\vert u\vert,\vert v\vert)$}
11233 if internal[fillin]<>0 then
11234 d:=d-take_fraction(internal[fillin],make_fraction(beta+beta,delta));
11235 d:=take_fraction((d+4) div 8,delta); alpha:=alpha div half_unit;
11236 if d<alpha then d:=alpha
******
File DRB0:[BELL.WEB]MF.WEB;1
11223 d:=take_fraction(d,delta);
11224 alpha:=abs(u); beta:=abs(v);
11225 if alpha<beta then
11226 begin delta:=alpha; alpha:=beta; beta:=delta;
11227 end; {now $\alpha=\max(\vert u\vert,\vert v\vert)$,
11228 $\beta=\min(\vert u\vert,\vert v\vert)$}
11229 if internal[fillin]<>0 then d:=d-take_fraction(internal[fillin],beta+beta);
11230 d:=(d+4) div 8; alpha:=alpha div half_unit;
11231 if d<alpha then d:=alpha
************
************
File DRB0:[BELL.WEB]MF.WEB;2
12126 weight in |cur_edges| will be shown as |black| in the window; all other
12127 pixels will be shown as |white|.
******
File DRB0:[BELL.WEB]MF.WEB;1
12121 weight in |cur_edges|will be shown as |black| in the window; all other
12122 pixels will be shown as |white|.
************
************
File DRB0:[BELL.WEB]MF.WEB;2
13545 begin p:=cur_tok;
******
File DRB0:[BELL.WEB]MF.WEB;1
13540 @!s:0..param_size; {value of |param_start| on the current level}
13541 begin p:=cur_tok;
************
************
File DRB0:[BELL.WEB]MF.WEB;2
16989 var @!p:pointer; {for list manipulation}
16990 @!c,@!d:halfword; {operation codes or modifiers}
******
File DRB0:[BELL.WEB]MF.WEB;1
16985 var @!p,@!q,@!r:pointer; {for list manipulation}
16986 @!c,@!d:halfword; {operation codes or modifiers}
************
************
File DRB0:[BELL.WEB]MF.WEB;2
19051 @!q:pointer; {successor of |p|}
19052 begin p:=cur_exp;@/
19053 if left_type(p)=endpoint then n:=-unity@+else n:=0;
******
File DRB0:[BELL.WEB]MF.WEB;1
19047 @!vv:scaled; {initial value of |v|}
19048 @!q:pointer; {successor of |p|}
19049 begin vv:=v; p:=cur_exp;@/
19050 if left_type(p)=endpoint then n:=-unity@+else n:=0;
************
************
File DRB0:[BELL.WEB]MF.WEB;2
20107 @!w:integer; {tentative weight}
******
File DRB0:[BELL.WEB]MF.WEB;1
20104 @!t:small_number; {variant of |with_option|}
20105 @!w:integer; {tentative weight}
************
************
File DRB0:[BELL.WEB]MF.WEB;2
20449 ("Pretend that you're Miss Marple: Examine all clues,")@/
20450 @^Marple, Jane@>
******
File DRB0:[BELL.WEB]MF.WEB;1
20447 ("Pretend that you're Miss Marple, examine all clues,")@/
20448 @^Marple, Jane@>
************
************
File DRB0:[BELL.WEB]MF.WEB;2
20535 last gives the ``face byte.''
20537 \yskip\hang|header[0]| is a 32-bit check sum that \MF\ will copy into
******
File DRB0:[BELL.WEB]MF.WEB;1
20533 last gives the ``face byte.'' Extensions of \TeX\ for oriental languages
20534 should be able to identify oriental fonts by means of this additional
20535 header information.
20536 @^oriental characters@>@^Chinese characters@>@^Japanese characters@>
20538 \yskip\hang|header[0]| is a 32-bit check sum that \MF\ will copy into
************
************
File DRB0:[BELL.WEB]MF.WEB;2
21284 print_nl("Font metrics written on "); print(metric_file_name); print_char(".");
21285 @.Font metrics written...@>
******
File DRB0:[BELL.WEB]MF.WEB;1
21285 print_nl("Font metrics written on "); print(metric_file_name);
21286 @.Font metrics written...@>
************
************
File DRB0:[BELL.WEB]MF.WEB;2
22487 This program doesn't bother to close the input files that may still be open.
22489 @<Last-minute...@>=
******
File DRB0:[BELL.WEB]MF.WEB;1
22488 @<Last-minute...@>=
************
************
File DRB0:[BELL.WEB]MF.WEB;2
22527 internal[fontmaking]:=0; {avoid loop in case of fatal error}
22528 @<Finish the \.{TFM} file@>;
******
File DRB0:[BELL.WEB]MF.WEB;1
22526 @<Finish the \.{TFM} file@>;
************
Number of difference sections found: 27
Number of difference records found: 54
DIFFERENCES /IGNORE=(SPACING,TRAILING_SPACES,BLANK_LINES)/WIDTH=132/MERGED=1/OUTPUT=DRB0:[BELL.WEB]MF.DIF;1-
DRB0:[BELL.WEB]MF.WEB;2-
DRB0:[BELL.WEB]MF.WEB;1
|