************ 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