summaryrefslogtreecommitdiff
path: root/info/digests/tex-implementors/mf.dif
blob: 4258fe0f16595c7c0f94d3e3dceff6e386a3b8d9 (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
************
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