{4:}{9:}{$C-,A+,D-}{[$C+,D+]}{:9}program JSTEX;label{6:}1,9998,9999; {:6}const{11:}mem_max=8000000;mem_min=0;buf_size=300000;error_line=79; half_error_line=50;max_print_line=79;stack_size=5000;max_in_open=15; font_max=256;font_mem_size=800000;param_size=10000;nest_size=500; max_strings=500000;string_vacancies=90000;pool_size=6250000; save_size=200000;trie_size=1000000;trie_op_size=35111; dvi_buf_size=16384;file_name_size=80; pool_name='tex.pool '; {:11}type{18:}ASCII_code=0..255;{:18}{25:}eight_bits=0..255; alpha_file=packed file of char;byte_file=packed file of eight_bits; {:25}{38:}pool_pointer=0..pool_size;str_number=0..max_strings; packed_ASCII_code=0..255;{:38}{101:}scaled=integer; nonnegative_integer=0..2147483647;small_number=0..63; {:101}{109:}glue_ratio=real;{:109}{113:}quarterword=0..65535; halfword=0..536870911;two_choices=1..2;four_choices=1..4; two_halves=packed record rh:halfword; case two_choices of 1:(lh:halfword);2:(b0:quarterword;b1:quarterword); end;four_quarters=packed record b0:quarterword;b1:quarterword; b2:quarterword;b3:quarterword;end; memory_word=record case four_choices of 1:(int:integer); 2:(gr:glue_ratio);3:(hh:two_halves);4:(qqqq:four_quarters);end; word_file=file of memory_word;{:113}{150:}glue_ord=0..3; {:150}{212:}list_state_record=record mode_field:-203..203; head_field,tail_field:halfword;eTeX_aux_field:halfword; pg_field,ml_field:integer;aux_field:memory_word;end; {:212}{269:}group_code=0..16; {:269}{300:}in_state_record=record state_field,index_field:quarterword; start_field,loc_field,limit_field,name_field:halfword;end; {:300}{549:}internal_font_number=0..font_max; font_index=0..font_mem_size;{:549}{595:}dvi_index=0..dvi_buf_size; {:595}{921:}trie_pointer=0..trie_size;{:921}{926:}hyph_pointer=0..8191; {:926}{1410:}save_pointer=0..save_size;{:1410}var{13:}bad:integer; {:13}{20:}xord:array[char]of ASCII_code;xchr:array[ASCII_code]of char; {:20}{26:}name_of_file:packed array[1..file_name_size]of char; name_length:0..file_name_size; {:26}{30:}buffer:array[0..buf_size]of ASCII_code;first:0..buf_size; last:0..buf_size;max_buf_stack:0..buf_size;{:30}{32:}term_in:alpha_file; term_out:alpha_file; {:32}{39:}str_pool:packed array[pool_pointer]of packed_ASCII_code; str_start:array[str_number]of pool_pointer;pool_ptr:pool_pointer; str_ptr:str_number;init_pool_ptr:pool_pointer;init_str_ptr:str_number; {:39}{50:}pool_file:alpha_file;{:50}{54:}log_file:alpha_file; selector:0..21;dig:array[0..22]of 0..15;tally:integer; term_offset:0..max_print_line;file_offset:0..max_print_line; trick_buf:array[0..error_line]of ASCII_code;trick_count:integer; first_count:integer;{:54}{73:}interaction:0..3; {:73}{76:}deletions_allowed:boolean;set_box_allowed:boolean; history:0..3;error_count:-1..100; {:76}{79:}help_line:array[0..5]of str_number;help_ptr:0..6; use_err_help:boolean;{:79}{96:}interrupt:integer; OK_to_interrupt:boolean;{:96}{104:}arith_error:boolean;remainder:scaled; {:104}{115:}temp_ptr:halfword; {:115}{116:}mem:array[mem_min..mem_max]of memory_word; lo_mem_max:halfword;hi_mem_min:halfword; {:116}{117:}var_used,dyn_used:integer;{:117}{118:}avail:halfword; mem_end:halfword;{:118}{124:}rover:halfword; {:124}{165:}{free:packed array[mem_min..mem_max]of boolean; was_free:packed array[mem_min..mem_max]of boolean; was_mem_end,was_lo_max,was_hi_min:halfword;panicking:boolean;} {:165}{173:}font_in_short_display:integer; {:173}{181:}depth_threshold:integer;breadth_max:integer; {:181}{213:}nest:array[0..nest_size]of list_state_record; nest_ptr:0..nest_size;max_nest_stack:0..nest_size; cur_list:list_state_record;shown_mode:-203..203; {:213}{246:}old_setting:0..21; sys_time,sys_day,sys_month,sys_year:integer; {:246}{253:}eqtb:array[1..604021]of memory_word; xeq_level:array[603168..604021]of quarterword; {:253}{256:}hash:array[514..600780]of two_halves;hash_used:halfword; no_new_control_sequence:boolean;cs_count:integer; {:256}{271:}save_stack:array[0..save_size]of memory_word; save_ptr:0..save_size;max_save_stack:0..save_size;cur_level:quarterword; cur_group:group_code;cur_boundary:0..save_size; {:271}{286:}mag_set:integer;{:286}{297:}cur_cmd:eight_bits; cur_chr:halfword;cur_cs:halfword;cur_tok:halfword; {:297}{301:}input_stack:array[0..stack_size]of in_state_record; input_ptr:0..stack_size;max_in_stack:0..stack_size; cur_input:in_state_record;{:301}{304:}in_open:0..max_in_open; open_parens:0..max_in_open; input_file:array[1..max_in_open]of alpha_file;line:integer; line_stack:array[1..max_in_open]of integer; {:304}{305:}scanner_status:0..5;warning_index:halfword;def_ref:halfword; {:305}{308:}param_stack:array[0..param_size]of halfword; param_ptr:0..param_size;max_param_stack:integer; {:308}{309:}align_state:integer;{:309}{310:}base_ptr:0..stack_size; {:310}{333:}par_loc:halfword;par_token:halfword; {:333}{361:}force_eof:boolean; {:361}{382:}cur_mark:array[0..4]of halfword; {:382}{387:}long_state:111..114; {:387}{388:}pstack:array[0..8]of halfword;{:388}{410:}cur_val:integer; cur_val_level:0..5;{:410}{438:}radix:small_number; {:438}{447:}cur_order:glue_ord; {:447}{481:}read_file:array[0..15]of alpha_file; read_open:array[0..16]of 0..2;{:481}{490:}cond_ptr:halfword; if_limit:0..4;cur_if:small_number;if_line:integer; {:490}{494:}skip_line:integer;{:494}{513:}cur_name:str_number; cur_area:str_number;cur_ext:str_number; {:513}{514:}area_delimiter:pool_pointer;ext_delimiter:pool_pointer; {:514}{521:}TEX_format_default:packed array[1..20]of char; {:521}{528:}name_in_progress:boolean;job_name:str_number; log_opened:boolean;{:528}{533:}dvi_file:byte_file; output_file_name:str_number;log_name:str_number; {:533}{540:}tfm_file:byte_file; {:540}{550:}font_info:array[font_index]of memory_word; fmem_ptr:font_index;font_ptr:internal_font_number; font_check:array[internal_font_number]of four_quarters; font_size:array[internal_font_number]of scaled; font_dsize:array[internal_font_number]of scaled; font_params:array[internal_font_number]of font_index; font_name:array[internal_font_number]of str_number; font_area:array[internal_font_number]of str_number; font_bc:array[internal_font_number]of eight_bits; font_ec:array[internal_font_number]of eight_bits; font_glue:array[internal_font_number]of halfword; font_used:array[internal_font_number]of boolean; hyphen_char:array[internal_font_number]of integer; skew_char:array[internal_font_number]of integer; bchar_label:array[internal_font_number]of font_index; font_bchar:array[internal_font_number]of 0..256; font_false_bchar:array[internal_font_number]of 0..256; {:550}{551:}char_base:array[internal_font_number]of integer; width_base:array[internal_font_number]of integer; height_base:array[internal_font_number]of integer; depth_base:array[internal_font_number]of integer; italic_base:array[internal_font_number]of integer; lig_kern_base:array[internal_font_number]of integer; kern_base:array[internal_font_number]of integer; exten_base:array[internal_font_number]of integer; param_base:array[internal_font_number]of integer; {:551}{556:}null_character:four_quarters; {:556}{593:}total_pages:integer;max_v:scaled;max_h:scaled; max_push:integer;last_bop:integer;dead_cycles:integer; doing_leaders:boolean;c,f:quarterword;rule_ht,rule_dp,rule_wd:scaled; g:halfword;lq,lr:integer; {:593}{596:}dvi_buf:array[dvi_index]of eight_bits;half_buf:dvi_index; dvi_limit:dvi_index;dvi_ptr:dvi_index;dvi_offset:integer; dvi_gone:integer;{:596}{606:}down_ptr,right_ptr:halfword; {:606}{617:}dvi_h,dvi_v:scaled;cur_h,cur_v:scaled; dvi_f:internal_font_number;cur_s:integer; {:617}{647:}total_stretch,total_shrink:array[glue_ord]of scaled; last_badness:integer;{:647}{648:}adjust_tail:halfword; {:648}{662:}pack_begin_line:integer;{:662}{685:}empty_field:two_halves; null_delimiter:four_quarters;{:685}{720:}cur_mlist:halfword; cur_style:small_number;cur_size:small_number;cur_mu:scaled; mlist_penalties:boolean;{:720}{725:}cur_f:internal_font_number; cur_c:quarterword;cur_i:four_quarters;{:725}{765:}magic_offset:integer; {:765}{771:}cur_align:halfword;cur_span:halfword;cur_loop:halfword; align_ptr:halfword;cur_head,cur_tail:halfword; {:771}{815:}just_box:halfword;{:815}{822:}passive:halfword; printed_node:halfword;pass_number:halfword; {:822}{824:}active_width:array[1..6]of scaled; cur_active_width:array[1..6]of scaled;background:array[1..6]of scaled; break_width:array[1..6]of scaled; {:824}{826:}no_shrink_error_yet:boolean;{:826}{829:}cur_p:halfword; second_pass:boolean;final_pass:boolean;threshold:integer; {:829}{834:}minimal_demerits:array[0..3]of integer; minimum_demerits:integer;best_place:array[0..3]of halfword; best_pl_line:array[0..3]of halfword;{:834}{840:}disc_width:scaled; {:840}{848:}easy_line:halfword;last_special_line:halfword; first_width:scaled;second_width:scaled;first_indent:scaled; second_indent:scaled;{:848}{873:}best_bet:halfword; fewest_demerits:integer;best_line:halfword;actual_looseness:integer; line_diff:integer;{:873}{893:}hc:array[0..65]of 0..256;hn:0..64; ha,hb:halfword;hf:internal_font_number;hu:array[0..63]of 0..256; hyf_char:integer;cur_lang,init_cur_lang:ASCII_code; l_hyf,r_hyf,init_l_hyf,init_r_hyf:integer;hyf_bchar:halfword; {:893}{901:}hyf:array[0..64]of 0..9;init_list:halfword;init_lig:boolean; init_lft:boolean;{:901}{906:}hyphen_passed:small_number; {:906}{908:}cur_l,cur_r:halfword;cur_q:halfword;lig_stack:halfword; ligature_present:boolean;lft_hit,rt_hit:boolean; {:908}{922:}trie:array[trie_pointer]of two_halves; hyf_distance:array[1..trie_op_size]of small_number; hyf_num:array[1..trie_op_size]of small_number; hyf_next:array[1..trie_op_size]of quarterword; op_start:array[ASCII_code]of 0..trie_op_size; {:922}{927:}hyph_word:array[hyph_pointer]of str_number; hyph_list:array[hyph_pointer]of halfword;hyph_count:hyph_pointer; {:927}{944:}trie_op_hash:array[-trie_op_size..trie_op_size]of 0.. trie_op_size;trie_used:array[ASCII_code]of quarterword; trie_op_lang:array[1..trie_op_size]of ASCII_code; trie_op_val:array[1..trie_op_size]of quarterword; trie_op_ptr:0..trie_op_size; {:944}{948:}trie_c:packed array[trie_pointer]of packed_ASCII_code; trie_o:packed array[trie_pointer]of quarterword; trie_l:packed array[trie_pointer]of trie_pointer; trie_r:packed array[trie_pointer]of trie_pointer;trie_ptr:trie_pointer; trie_hash:packed array[trie_pointer]of trie_pointer; {:948}{951:}trie_taken:packed array[1..trie_size]of boolean; trie_min:array[ASCII_code]of trie_pointer;trie_max:trie_pointer; trie_not_ready:boolean;{:951}{972:}best_height_plus_depth:scaled; {:972}{981:}page_tail:halfword;page_contents:0..2;page_max_depth:scaled; best_page_break:halfword;least_page_cost:integer;best_size:scaled; {:981}{983:}page_so_far:array[0..7]of scaled;last_glue:halfword; last_penalty:integer;last_kern:scaled;last_node_type:integer; insert_penalties:integer;{:983}{990:}output_active:boolean; {:990}{1033:}main_f:internal_font_number;main_i:four_quarters; main_j:four_quarters;main_k:font_index;main_p:halfword;main_s:integer; bchar:halfword;false_bchar:halfword;cancel_boundary:boolean; ins_disc:boolean;{:1033}{1075:}cur_box:halfword; {:1075}{1267:}after_token:halfword;{:1267}{1282:}long_help_seen:boolean; {:1282}{1300:}format_ident:str_number;{:1300}{1306:}fmt_file:word_file; {:1306}{1332:}ready_already:integer; {:1332}{1343:}write_file:array[0..15]of alpha_file; write_open:array[0..17]of boolean;{:1343}{1346:}write_loc:halfword; {:1346}{1384:}eTeX_mode:0..1; {:1384}{1392:}eof_seen:array[1..max_in_open]of boolean; {:1392}{1437:}LR_ptr:halfword;LR_problems:integer;cur_dir:small_number; {:1437}{1486:}pseudo_files:halfword; {:1486}{1509:}grp_stack:array[0..max_in_open]of save_pointer; if_stack:array[0..max_in_open]of halfword; {:1509}{1550:}max_reg_num:halfword;max_reg_help_line:str_number; {:1550}{1552:}sa_root:array[0..6]of halfword;cur_ptr:halfword; sa_null:memory_word;{:1552}{1571:}sa_chain:halfword; sa_level:quarterword;{:1571}{1578:}last_line_fill:halfword; do_last_line_fit:boolean;active_node_size:small_number; fill_width:array[0..2]of scaled;best_pl_short:array[0..3]of scaled; best_pl_glue:array[0..3]of scaled;{:1578}{1594:}hyph_start:trie_pointer; hyph_index:trie_pointer;{:1594}{1595:}disc_ptr:array[1..3]of halfword; {:1595}procedure initialize;var{19:}i:integer;{:19}{163:}k:integer; {:163}{928:}z:hyph_pointer;{:928}begin{8:}{21:}xchr[32]:=' '; xchr[33]:='!';xchr[34]:='"';xchr[35]:='#';xchr[36]:='$';xchr[37]:='%'; xchr[38]:='&';xchr[39]:='''';xchr[40]:='(';xchr[41]:=')';xchr[42]:='*'; xchr[43]:='+';xchr[44]:=',';xchr[45]:='-';xchr[46]:='.';xchr[47]:='/'; xchr[48]:='0';xchr[49]:='1';xchr[50]:='2';xchr[51]:='3';xchr[52]:='4'; xchr[53]:='5';xchr[54]:='6';xchr[55]:='7';xchr[56]:='8';xchr[57]:='9'; xchr[58]:=':';xchr[59]:=';';xchr[60]:='<';xchr[61]:='=';xchr[62]:='>'; xchr[63]:='?';xchr[64]:='@';xchr[65]:='A';xchr[66]:='B';xchr[67]:='C'; xchr[68]:='D';xchr[69]:='E';xchr[70]:='F';xchr[71]:='G';xchr[72]:='H'; xchr[73]:='I';xchr[74]:='J';xchr[75]:='K';xchr[76]:='L';xchr[77]:='M'; xchr[78]:='N';xchr[79]:='O';xchr[80]:='P';xchr[81]:='Q';xchr[82]:='R'; xchr[83]:='S';xchr[84]:='T';xchr[85]:='U';xchr[86]:='V';xchr[87]:='W'; xchr[88]:='X';xchr[89]:='Y';xchr[90]:='Z';xchr[91]:='[';xchr[92]:='\'; xchr[93]:=']';xchr[94]:='^';xchr[95]:='_';xchr[96]:='`';xchr[97]:='a'; xchr[98]:='b';xchr[99]:='c';xchr[100]:='d';xchr[101]:='e'; xchr[102]:='f';xchr[103]:='g';xchr[104]:='h';xchr[105]:='i'; xchr[106]:='j';xchr[107]:='k';xchr[108]:='l';xchr[109]:='m'; xchr[110]:='n';xchr[111]:='o';xchr[112]:='p';xchr[113]:='q'; xchr[114]:='r';xchr[115]:='s';xchr[116]:='t';xchr[117]:='u'; xchr[118]:='v';xchr[119]:='w';xchr[120]:='x';xchr[121]:='y'; xchr[122]:='z';xchr[123]:='{';xchr[124]:='|';xchr[125]:='}'; xchr[126]:='~';{:21}{23:}for i:=0 to 31 do xchr[i]:=i; for i:=127 to 255 do xchr[i]:=i; {:23}{24:}for i:=0 to 255 do xord[chr(i)]:=127; for i:=128 to 255 do xord[xchr[i]]:=i; for i:=0 to 126 do xord[xchr[i]]:=i;{:24}{74:}interaction:=3; {:74}{77:}deletions_allowed:=true;set_box_allowed:=true;error_count:=0; {:77}{80:}help_ptr:=0;use_err_help:=false;{:80}{97:}interrupt:=0; OK_to_interrupt:=true;{:97}{166:}{was_mem_end:=mem_min; was_lo_max:=mem_min;was_hi_min:=mem_max;panicking:=false;} {:166}{215:}nest_ptr:=0;max_nest_stack:=0;cur_list.mode_field:=1; cur_list.head_field:=7999999;cur_list.tail_field:=7999999; cur_list.eTeX_aux_field:=0;cur_list.aux_field.int:=-65536000; cur_list.ml_field:=0;cur_list.pg_field:=0;shown_mode:=0; {992:}page_contents:=0;page_tail:=7999998;mem[7999998].hh.rh:=0; last_glue:=536870911;last_penalty:=0;last_kern:=0;last_node_type:=-1; page_so_far[7]:=0;page_max_depth:=0{:992}; {:215}{254:}for k:=603168 to 604021 do xeq_level[k]:=1; {:254}{257:}no_new_control_sequence:=true;hash[514].lh:=0; hash[514].rh:=0;for k:=515 to 600780 do hash[k]:=hash[514]; {:257}{272:}save_ptr:=0;cur_level:=1;cur_group:=0;cur_boundary:=0; max_save_stack:=0;{:272}{287:}mag_set:=0;{:287}{383:}cur_mark[0]:=0; cur_mark[1]:=0;cur_mark[2]:=0;cur_mark[3]:=0;cur_mark[4]:=0; {:383}{439:}cur_val:=0;cur_val_level:=0;radix:=0;cur_order:=0; {:439}{482:}for k:=0 to 16 do read_open[k]:=2;{:482}{491:}cond_ptr:=0; if_limit:=0;cur_if:=0;if_line:=0; {:491}{522:}TEX_format_default:='TeXformats:plain.fmt'; {:522}{552:}for k:=0 to font_max do font_used[k]:=false; {:552}{557:}null_character.b0:=0;null_character.b1:=0; null_character.b2:=0;null_character.b3:=0;{:557}{594:}total_pages:=0; max_v:=0;max_h:=0;max_push:=0;last_bop:=-1;doing_leaders:=false; dead_cycles:=0;cur_s:=-1;{:594}{597:}half_buf:=dvi_buf_size div 2; dvi_limit:=dvi_buf_size;dvi_ptr:=0;dvi_offset:=0;dvi_gone:=0; {:597}{607:}down_ptr:=0;right_ptr:=0;{:607}{649:}adjust_tail:=0; last_badness:=0;{:649}{663:}pack_begin_line:=0; {:663}{686:}empty_field.rh:=0;empty_field.lh:=0;null_delimiter.b0:=0; null_delimiter.b1:=0;null_delimiter.b2:=0;null_delimiter.b3:=0; {:686}{772:}align_ptr:=0;cur_align:=0;cur_span:=0;cur_loop:=0; cur_head:=0;cur_tail:=0; {:772}{929:}for z:=0 to 8191 do begin hyph_word[z]:=0;hyph_list[z]:=0; end;hyph_count:=0;{:929}{991:}output_active:=false;insert_penalties:=0; {:991}{1034:}ligature_present:=false;cancel_boundary:=false; lft_hit:=false;rt_hit:=false;ins_disc:=false; {:1034}{1268:}after_token:=0;{:1268}{1283:}long_help_seen:=false; {:1283}{1301:}format_ident:=0; {:1301}{1344:}for k:=0 to 17 do write_open[k]:=false; {:1344}{1438:}LR_ptr:=0;LR_problems:=0;cur_dir:=0; {:1438}{1487:}pseudo_files:=0;{:1487}{1553:}sa_root[6]:=0; sa_null.hh.lh:=0;sa_null.hh.rh:=0;{:1553}{1572:}sa_chain:=0;sa_level:=0; {:1572}{1596:}disc_ptr[2]:=0;disc_ptr[3]:=0; {:1596}{164:}for k:=1 to 19 do mem[k].int:=0;k:=0; while k<=19 do begin mem[k].hh.rh:=1;mem[k].hh.b0:=0;mem[k].hh.b1:=0; k:=k+4;end;mem[6].int:=65536;mem[4].hh.b0:=1;mem[10].int:=65536; mem[8].hh.b0:=2;mem[14].int:=65536;mem[12].hh.b0:=1;mem[15].int:=65536; mem[12].hh.b1:=1;mem[18].int:=-65536;mem[16].hh.b0:=1;rover:=20; mem[rover].hh.rh:=536870911;mem[rover].hh.lh:=1000; mem[rover+1].hh.lh:=rover;mem[rover+1].hh.rh:=rover; lo_mem_max:=rover+1000;mem[lo_mem_max].hh.rh:=0; mem[lo_mem_max].hh.lh:=0; for k:=7999987 to 8000000 do mem[k]:=mem[lo_mem_max]; {791:}mem[7999990].hh.lh:=604614;{:791}{798:}mem[7999991].hh.rh:=65536; mem[7999991].hh.lh:=0;{:798}{821:}mem[7999993].hh.b0:=1; mem[7999994].hh.lh:=536870911;mem[7999993].hh.b1:=0; {:821}{982:}mem[8000000].hh.b1:=255;mem[8000000].hh.b0:=1; mem[8000000].hh.rh:=8000000;{:982}{989:}mem[7999998].hh.b0:=10; mem[7999998].hh.b1:=0;{:989};avail:=0;mem_end:=8000000; hi_mem_min:=7999987;var_used:=20;dyn_used:=14; {:164}{222:}eqtb[600781].hh.b0:=101;eqtb[600781].hh.rh:=0; eqtb[600781].hh.b1:=0;for k:=1 to 600780 do eqtb[k]:=eqtb[600781]; {:222}{228:}eqtb[600782].hh.rh:=0;eqtb[600782].hh.b1:=1; eqtb[600782].hh.b0:=117; for k:=600783 to 601311 do eqtb[k]:=eqtb[600782]; mem[0].hh.rh:=mem[0].hh.rh+530;{:228}{232:}eqtb[601312].hh.rh:=0; eqtb[601312].hh.b0:=118;eqtb[601312].hh.b1:=1; for k:=601579 to 601582 do eqtb[k]:=eqtb[601312]; for k:=601313 to 601578 do eqtb[k]:=eqtb[600781];eqtb[601583].hh.rh:=0; eqtb[601583].hh.b0:=119;eqtb[601583].hh.b1:=1; for k:=601584 to 601838 do eqtb[k]:=eqtb[601583];eqtb[601839].hh.rh:=0; eqtb[601839].hh.b0:=120;eqtb[601839].hh.b1:=1; for k:=601840 to 601887 do eqtb[k]:=eqtb[601839];eqtb[601888].hh.rh:=0; eqtb[601888].hh.b0:=120;eqtb[601888].hh.b1:=1; for k:=601889 to 603167 do eqtb[k]:=eqtb[601888]; for k:=0 to 255 do begin eqtb[601888+k].hh.rh:=12; eqtb[602912+k].hh.rh:=k+0;eqtb[602656+k].hh.rh:=1000;end; eqtb[601901].hh.rh:=5;eqtb[601920].hh.rh:=10;eqtb[601980].hh.rh:=0; eqtb[601925].hh.rh:=14;eqtb[602015].hh.rh:=15;eqtb[601888].hh.rh:=9; for k:=48 to 57 do eqtb[602912+k].hh.rh:=k+28672; for k:=65 to 90 do begin eqtb[601888+k].hh.rh:=11; eqtb[601888+k+32].hh.rh:=11;eqtb[602912+k].hh.rh:=k+28928; eqtb[602912+k+32].hh.rh:=k+28960;eqtb[602144+k].hh.rh:=k+32; eqtb[602144+k+32].hh.rh:=k+32;eqtb[602400+k].hh.rh:=k; eqtb[602400+k+32].hh.rh:=k;eqtb[602656+k].hh.rh:=999;end; {:232}{240:}for k:=603168 to 603488 do eqtb[k].int:=0; eqtb[603185].int:=1000;eqtb[603169].int:=10000;eqtb[603209].int:=1; eqtb[603208].int:=25;eqtb[603213].int:=92;eqtb[603216].int:=13; for k:=0 to 255 do eqtb[603489+k].int:=-1;eqtb[603535].int:=0; {:240}{250:}for k:=603745 to 604021 do eqtb[k].int:=0; {:250}{258:}hash_used:=600514;cs_count:=0;eqtb[600523].hh.b0:=116; hash[600523].rh:=506;{:258}{553:}font_ptr:=0;fmem_ptr:=7; font_name[0]:=826;font_area[0]:=340;hyphen_char[0]:=45;skew_char[0]:=-1; bchar_label[0]:=0;font_bchar[0]:=256;font_false_bchar[0]:=256; font_bc[0]:=1;font_ec[0]:=0;font_size[0]:=0;font_dsize[0]:=0; char_base[0]:=0;width_base[0]:=0;height_base[0]:=0;depth_base[0]:=0; italic_base[0]:=0;lig_kern_base[0]:=0;kern_base[0]:=0;exten_base[0]:=0; font_glue[0]:=0;font_params[0]:=7;param_base[0]:=-1; for k:=0 to 6 do font_info[k].int:=0; {:553}{947:}for k:=-trie_op_size to trie_op_size do trie_op_hash[k]:=0; for k:=0 to 255 do trie_used[k]:=0;trie_op_ptr:=0; {:947}{952:}trie_not_ready:=true;trie_l[0]:=0;trie_c[0]:=0;trie_ptr:=0; {:952}{1217:}hash[600514].rh:=1220;{:1217}{1302:}format_ident:=1284; {:1302}{1370:}hash[600522].rh:=1323;eqtb[600522].hh.b1:=1; eqtb[600522].hh.b0:=113;eqtb[600522].hh.rh:=0; {:1370}{1385:}eTeX_mode:=0;{1548:}max_reg_num:=255; max_reg_help_line:=698; {:1548}{:1385}{1554:}for i:=0 to 5 do sa_root[i]:=0; {:1554}{1590:}trie_r[0]:=0;hyph_start:=0;{:1590}{:8}end; {57:}procedure print_ln; begin case selector of 19:begin write_ln(term_out);write_ln(log_file); term_offset:=0;file_offset:=0;end;18:begin write_ln(log_file); file_offset:=0;end;17:begin write_ln(term_out);term_offset:=0;end; 16,20,21:;others:write_ln(write_file[selector])end;end; {:57}{58:}procedure print_char(s:ASCII_code);label 10; begin if{244:}s=eqtb[603217].int{:244}then if selector<20 then begin print_ln;goto 10;end;case selector of 19:begin write(term_out,xchr[s]); write(log_file,xchr[s]);term_offset:=term_offset+1; file_offset:=file_offset+1; if term_offset=max_print_line then begin write_ln(term_out); term_offset:=0;end; if file_offset=max_print_line then begin write_ln(log_file); file_offset:=0;end;end;18:begin write(log_file,xchr[s]); file_offset:=file_offset+1;if file_offset=max_print_line then print_ln; end;17:begin write(term_out,xchr[s]);term_offset:=term_offset+1; if term_offset=max_print_line then print_ln;end;16:; 20:if tally=str_ptr then s:=261 else if s<256 then if s<0 then s:=261 else begin if selector>20 then begin print_char(s);goto 10;end; if({244:}s=eqtb[603217].int{:244})then if selector<20 then begin print_ln;goto 10;end;nl:=eqtb[603217].int;eqtb[603217].int:=-1; j:=str_start[s];while j=str_ptr)or(s<256)then print(s)else begin j:=str_start[s]; while j0)and(odd(selector)))or((file_offset>0)and( selector>=18))then print_ln;print(s);end; {:62}{63:}procedure print_esc(s:str_number);var c:integer; begin{243:}c:=eqtb[603213].int{:243}; if c>=0 then if c<256 then print(c);slow_print(s);end; {:63}{64:}procedure print_the_digs(k:eight_bits); begin while k>0 do begin k:=k-1; if dig[k]<10 then print_char(48+dig[k])else print_char(55+dig[k]);end; end;{:64}{65:}procedure print_int(n:integer);var k:0..23;m:integer; begin k:=0;if n<0 then begin print_char(45); if n>-100000000 then n:=-n else begin m:=-1-n;n:=m div 10; m:=(m mod 10)+1;k:=1;if m<10 then dig[0]:=m else begin dig[0]:=0;n:=n+1; end;end;end;repeat dig[k]:=n mod 10;n:=n div 10;k:=k+1;until n=0; print_the_digs(k);end;{:65}{262:}procedure print_cs(p:integer); begin if p<514 then if p>=257 then if p=513 then begin print_esc(508); print_esc(509);print_char(32);end else begin print_esc(p-257); if eqtb[601888+p-257].hh.rh=11 then print_char(32); end else if p<1 then print_esc(510)else print(p-1)else if p>=600781 then print_esc(510)else if(hash[p].rh<0)or(hash[p].rh>=str_ptr)then print_esc (511)else begin print_esc(hash[p].rh);print_char(32);end;end; {:262}{263:}procedure sprint_cs(p:halfword); begin if p<514 then if p<257 then print(p-1)else if p<513 then print_esc (p-257)else begin print_esc(508);print_esc(509); end else print_esc(hash[p].rh);end; {:263}{519:}procedure print_file_name(n,a,e:integer); begin slow_print(a);slow_print(n);slow_print(e);end; {:519}{700:}procedure print_size(s:integer); begin if s=0 then print_esc(416)else if s=16 then print_esc(417)else print_esc(418);end; {:700}{1356:}procedure print_write_whatsit(s:str_number;p:halfword); begin print_esc(s); if mem[p+1].hh.lh<16 then print_int(mem[p+1].hh.lh)else if mem[p+1].hh. lh=16 then print_char(42)else print_char(45);end; {:1356}{1558:}procedure print_sa_num(q:halfword);var n:halfword; begin if mem[q].hh.b0<32 then n:=mem[q+1].hh.rh else begin n:=mem[q].hh. b0 mod 16;q:=mem[q].hh.rh;n:=n+16*mem[q].hh.b0;q:=mem[q].hh.rh; n:=n+256*(mem[q].hh.b0+16*mem[mem[q].hh.rh].hh.b0);end;print_int(n);end; {:1558}{78:}procedure normalize_selector;forward;procedure get_token; forward;procedure term_input;forward;procedure show_context;forward; procedure begin_file_reading;forward;procedure open_log_file;forward; procedure close_files_and_terminate;forward; procedure clear_for_error_prompt;forward;procedure give_err_help; forward;{procedure debug_help;forward;}{:78}{81:}procedure jump_out; begin close_files_and_terminate;break(term_out);ready_already:=0; uexit(0);end;{:81}{82:}procedure error;label 22,10;var c:ASCII_code; s1,s2,s3,s4:integer;begin if history<2 then history:=2;print_char(46); show_context; if interaction=3 then{83:}while true do begin 22:if interaction<>3 then goto 10;clear_for_error_prompt;begin;print(266);term_input;end; if last=first then goto 10;c:=buffer[first];if c>=97 then c:=c-32; {84:}case c of 48,49,50,51,52,53,54,55,56,57:if deletions_allowed then {88:}begin s1:=cur_tok;s2:=cur_cmd;s3:=cur_chr;s4:=align_state; align_state:=1000000;OK_to_interrupt:=false; if(last>first+1)and(buffer[first+1]>=48)and(buffer[first+1]<=57)then c:= c*10+buffer[first+1]-48*11 else c:=c-48;while c>0 do begin get_token; c:=c-1;end;cur_tok:=s1;cur_cmd:=s2;cur_chr:=s3;align_state:=s4; OK_to_interrupt:=true;begin help_ptr:=2;help_line[1]:=281; help_line[0]:=282;end;show_context;goto 22;end{:88}; {68:begin debug_help;goto 22;end;} 69:if base_ptr>0 then if input_stack[base_ptr].name_field>=256 then begin print_nl(267);slow_print(input_stack[base_ptr].name_field); print(268);print_int(line);interaction:=2;jump_out;end; 72:{89:}begin if use_err_help then begin give_err_help; use_err_help:=false;end else begin if help_ptr=0 then begin help_ptr:=2; help_line[1]:=283;help_line[0]:=284;end;repeat help_ptr:=help_ptr-1; print(help_line[help_ptr]);print_ln;until help_ptr=0;end; begin help_ptr:=4;help_line[3]:=285;help_line[2]:=284;help_line[1]:=286; help_line[0]:=287;end;goto 22;end{:89};73:{87:}begin begin_file_reading; if last>first+1 then begin cur_input.loc_field:=first+1; buffer[first]:=32;end else begin begin;print(280);term_input;end; cur_input.loc_field:=first;end;first:=last; cur_input.limit_field:=last-1;goto 10;end{:87}; 81,82,83:{86:}begin error_count:=0;interaction:=0+c-81;print(275); case c of 81:begin print_esc(276);selector:=selector-1;end; 82:print_esc(277);83:print_esc(278);end;print(279);print_ln; break(term_out);goto 10;end{:86};88:begin interaction:=2;jump_out;end; others:end;{85:}begin print(269);print_nl(270);print_nl(271); if base_ptr>0 then if input_stack[base_ptr].name_field>=256 then print( 272);if deletions_allowed then print_nl(273);print_nl(274); end{:85}{:84};end{:83};error_count:=error_count+1; if error_count=100 then begin print_nl(265);history:=3;jump_out;end; {90:}if interaction>0 then selector:=selector-1; if use_err_help then begin print_ln;give_err_help; end else while help_ptr>0 do begin help_ptr:=help_ptr-1; print_nl(help_line[help_ptr]);end;print_ln; if interaction>0 then selector:=selector+1;print_ln{:90};10:end; {:82}{93:}procedure fatal_error(s:str_number);begin normalize_selector; begin if interaction=3 then;print_nl(264);print(289);end; begin help_ptr:=1;help_line[0]:=s;end; begin if interaction=3 then interaction:=2;if log_opened then error; {if interaction>0 then debug_help;}history:=3;jump_out;end;end; {:93}{94:}procedure overflow(s:str_number;n:integer); begin normalize_selector;begin if interaction=3 then;print_nl(264); print(290);end;print(s);print_char(61);print_int(n);print_char(93); begin help_ptr:=2;help_line[1]:=291;help_line[0]:=292;end; begin if interaction=3 then interaction:=2;if log_opened then error; {if interaction>0 then debug_help;}history:=3;jump_out;end;end; {:94}{95:}procedure confusion(s:str_number);begin normalize_selector; if history<2 then begin begin if interaction=3 then;print_nl(264); print(293);end;print(s);print_char(41);begin help_ptr:=1; help_line[0]:=294;end;end else begin begin if interaction=3 then; print_nl(264);print(295);end;begin help_ptr:=2;help_line[1]:=296; help_line[0]:=297;end;end;begin if interaction=3 then interaction:=2; if log_opened then error;{if interaction>0 then debug_help;}history:=3; jump_out;end;end; {:95}{:4}{27:}function a_open_in(var f:alpha_file):boolean; begin reset(f,name_of_file,'/O');a_open_in:=erstat(f)=0;end; function a_open_out(var f:alpha_file):boolean; begin rewrite(f,name_of_file,'/O');a_open_out:=erstat(f)=0;end; function b_open_in(var f:byte_file):boolean; begin reset(f,name_of_file,'/O');b_open_in:=erstat(f)=0;end; function b_open_out(var f:byte_file):boolean; begin rewrite(f,name_of_file,'/O');b_open_out:=erstat(f)=0;end; function w_open_in(var f:word_file):boolean; begin reset(f,name_of_file,'/O');w_open_in:=erstat(f)=0;end; function w_open_out(var f:word_file):boolean; begin rewrite(f,name_of_file,'/O');w_open_out:=erstat(f)=0;end; {:27}{28:}procedure a_close(var f:alpha_file);begin close(f);end; procedure b_close(var f:byte_file);begin close(f);end; procedure w_close(var f:word_file);begin close(f);end; {:28}{31:}function input_ln(var f:alpha_file; bypass_eoln:boolean):boolean; begin input_ln:=inputln_actual(f,bypass_eoln,buffer,first,last, max_buf_stack,buf_size);end;{:31}{37:}function init_terminal:boolean; label 10;begin reset(term_in,'TTY:','/O/I');while true do begin; write(term_out,'**');break(term_out); if not input_ln(term_in,true)then begin write_ln(term_out); write(term_out,'! End of file on the terminal... why?'); init_terminal:=false;goto 10;end;cur_input.loc_field:=first; while(cur_input.loc_fieldbuffer[k]then begin result:=false;goto 45;end;j:=j+1;k:=k+1;end;result:=true; 45:str_eq_buf:=result;end; {:45}{46:}function str_eq_str(s,t:str_number):boolean;label 45; var j,k:pool_pointer;result:boolean;begin result:=false; if(str_start[s+1]-str_start[s])<>(str_start[t+1]-str_start[t])then goto 45;j:=str_start[s];k:=str_start[t]; while jstr_pool[k]then goto 45; j:=j+1;k:=k+1;end;result:=true;45:str_eq_str:=result;end; {:46}{47:}function get_strings_started:boolean;label 30,10; var k,l:0..255;m,n:char;g:str_number;a:integer;c:boolean; begin pool_ptr:=0;str_ptr:=0;str_start[0]:=0; {48:}for k:=0 to 255 do begin if({49:}(k<32)or(k>126){:49})then begin begin str_pool[pool_ptr]:=94;pool_ptr:=pool_ptr+1;end; begin str_pool[pool_ptr]:=94;pool_ptr:=pool_ptr+1;end; if k<64 then begin str_pool[pool_ptr]:=k+64;pool_ptr:=pool_ptr+1; end else if k<128 then begin str_pool[pool_ptr]:=k-64; pool_ptr:=pool_ptr+1;end else begin l:=k div 16; if l<10 then begin str_pool[pool_ptr]:=l+48;pool_ptr:=pool_ptr+1; end else begin str_pool[pool_ptr]:=l+87;pool_ptr:=pool_ptr+1;end; l:=k mod 16;if l<10 then begin str_pool[pool_ptr]:=l+48; pool_ptr:=pool_ptr+1;end else begin str_pool[pool_ptr]:=l+87; pool_ptr:=pool_ptr+1;end;end;end else begin str_pool[pool_ptr]:=k; pool_ptr:=pool_ptr+1;end;g:=make_string;end{:48}; {51:}name_of_file:=pool_name;if a_open_in(pool_file)then begin c:=false; repeat{52:}begin if eof(pool_file)then begin; write_ln(term_out,'! TEX.POOL has no check sum.');a_close(pool_file); get_strings_started:=false;goto 10;end;read(pool_file,m,n); if m='*'then{53:}begin a:=0;k:=1; while true do begin if(xord[n]<48)or(xord[n]>57)then begin; write_ln(term_out,'! TEX.POOL check sum doesn''t have nine digits.'); a_close(pool_file);get_strings_started:=false;goto 10;end; a:=10*a+xord[n]-48;if k=9 then goto 30;k:=k+1;read(pool_file,n);end; 30:if a<>79945660 then begin; write_ln(term_out,'! TEX.POOL doesn''t match; TANGLE me again.'); a_close(pool_file);get_strings_started:=false;goto 10;end;c:=true; end{:53}else begin if(xord[m]<48)or(xord[m]>57)or(xord[n]<48)or(xord[n]> 57)then begin; write_ln(term_out,'! TEX.POOL line doesn''t begin with two digits.'); a_close(pool_file);get_strings_started:=false;goto 10;end; l:=xord[m]*10+xord[n]-48*11; if pool_ptr+l+string_vacancies>pool_size then begin; write_ln(term_out,'! You have to increase POOLSIZE.'); a_close(pool_file);get_strings_started:=false;goto 10;end; for k:=1 to l do begin if eoln(pool_file)then m:=' 'else read(pool_file, m);begin str_pool[pool_ptr]:=xord[m];pool_ptr:=pool_ptr+1;end;end; read_ln(pool_file);g:=make_string;end;end{:52};until c; a_close(pool_file);get_strings_started:=true;end else begin; write_ln(term_out,'! I can''t read TEX.POOL.');a_close(pool_file); get_strings_started:=false;goto 10;end{:51};10:end; {:47}{66:}procedure print_two(n:integer);begin n:=abs(n)mod 100; print_char(48+(n div 10));print_char(48+(n mod 10));end; {:66}{67:}procedure print_hex(n:integer);var k:0..22;begin k:=0; print_char(34);repeat dig[k]:=n mod 16;n:=n div 16;k:=k+1;until n=0; print_the_digs(k);end;{:67}{69:}procedure print_roman_int(n:integer); label 10;var j,k:pool_pointer;u,v:nonnegative_integer; begin j:=str_start[262];v:=1000; while true do begin while n>=v do begin print_char(str_pool[j]);n:=n-v; end;if n<=0 then goto 10;k:=j+2;u:=v div(str_pool[k-1]-48); if str_pool[k-1]=50 then begin k:=k+2;u:=u div(str_pool[k-1]-48);end; if n+u>=v then begin print_char(str_pool[k]);n:=n+u; end else begin j:=j+2;v:=v div(str_pool[j-1]-48);end;end;10:end; {:69}{70:}procedure print_current_string;var j:pool_pointer; begin j:=str_start[str_ptr]; while jfirst then for k:=first to last-1 do print(buffer[k]);print_ln; selector:=selector+1;end;{:71}{91:}procedure int_error(n:integer); begin print(288);print_int(n);print_char(41);error;end; {:91}{92:}procedure normalize_selector; begin if log_opened then selector:=19 else selector:=17; if job_name=0 then open_log_file; if interaction=0 then selector:=selector-1;end; {:92}{98:}procedure pause_for_instructions; begin if OK_to_interrupt then begin interaction:=3; if(selector=18)or(selector=16)then selector:=selector+1; begin if interaction=3 then;print_nl(264);print(298);end; begin help_ptr:=3;help_line[2]:=299;help_line[1]:=300;help_line[0]:=301; end;deletions_allowed:=false;error;deletions_allowed:=true;interrupt:=0; end;end;{:98}{100:}function half(x:integer):integer; begin if odd(x)then half:=(x+1)div 2 else half:=x div 2;end; {:100}{102:}function round_decimals(k:small_number):scaled; var a:integer;begin a:=0;while k>0 do begin k:=k-1; a:=(a+dig[k]*131072)div 10;end;round_decimals:=(a+1)div 2;end; {:102}{103:}procedure print_scaled(s:scaled);var delta:scaled; begin if s<0 then begin print_char(45);s:=-s;end;print_int(s div 65536); print_char(46);s:=10*(s mod 65536)+5;delta:=10; repeat if delta>65536 then s:=s-17232;print_char(48+(s div 65536)); s:=10*(s mod 65536);delta:=delta*10;until s<=delta;end; {:103}{105:}function mult_and_add(n:integer; x,y,max_answer:scaled):scaled;begin if n<0 then begin x:=-x;n:=-n;end; if n=0 then mult_and_add:=y else if((x<=(max_answer-y)div n)and(-x<=( max_answer+y)div n))then mult_and_add:=n*x+y else begin arith_error:= true;mult_and_add:=0;end;end;{:105}{106:}function x_over_n(x:scaled; n:integer):scaled;var negative:boolean;begin negative:=false; if n=0 then begin arith_error:=true;x_over_n:=0;remainder:=x; end else begin if n<0 then begin x:=-x;n:=-n;negative:=true;end; if x>=0 then begin x_over_n:=x div n;remainder:=x mod n; end else begin x_over_n:=-((-x)div n);remainder:=-((-x)mod n);end;end; if negative then remainder:=-remainder;end; {:106}{107:}function xn_over_d(x:scaled;n,d:integer):scaled; var positive:boolean;t,u,v:nonnegative_integer; begin if x>=0 then positive:=true else begin x:=-x;positive:=false;end; t:=(x mod 32768)*n;u:=(x div 32768)*n+(t div 32768); v:=(u mod d)*32768+(t mod 32768); if u div d>=32768 then arith_error:=true else u:=32768*(u div d)+(v div d);if positive then begin xn_over_d:=u;remainder:=v mod d; end else begin xn_over_d:=-u;remainder:=-(v mod d);end;end; {:107}{108:}function badness(t,s:scaled):halfword;var r:integer; begin if t=0 then badness:=0 else if s<=0 then badness:=10000 else begin if t<=7230584 then r:=(t*297)div s else if s>=1663497 then r:=t div(s div 297)else r:=t; if r>1290 then badness:=10000 else badness:=(r*r*r+131072)div 262144; end;end;{:108}{114:}{procedure print_word(w:memory_word); begin print_int(w.int);print_char(32);print_scaled(w.int); print_char(32);print_scaled(round(65536*w.gr));print_ln; print_int(w.hh.lh);print_char(61);print_int(w.hh.b0);print_char(58); print_int(w.hh.b1);print_char(59);print_int(w.hh.rh);print_char(32); print_int(w.qqqq.b0);print_char(58);print_int(w.qqqq.b1);print_char(58); print_int(w.qqqq.b2);print_char(58);print_int(w.qqqq.b3);end;} {:114}{119:}{292:}procedure show_token_list(p,q:integer;l:integer); label 10;var m,c:integer;match_chr:ASCII_code;n:ASCII_code; begin match_chr:=35;n:=48;tally:=0; while(p<>0)and(tallymem_end)then begin print_esc(311);goto 10; end; if mem[p].hh.lh>=4095 then print_cs(mem[p].hh.lh-4095)else begin m:=mem[ p].hh.lh div 256;c:=mem[p].hh.lh mod 256; if mem[p].hh.lh<0 then print_esc(563)else{294:}case m of 1,2,3,4,7,8,10, 11,12:print(c);6:begin print(c);print(c);end;5:begin print(match_chr); if c<=9 then print_char(c+48)else begin print_char(33);goto 10;end;end; 13:begin match_chr:=c;print(c);n:=n+1;print_char(n); if n>57 then goto 10;end;14:if c=0 then print(564); others:print_esc(563)end{:294};end{:293};p:=mem[p].hh.rh;end; if p<>0 then print_esc(412);10:end;{:292}{306:}procedure runaway; var p:halfword;begin if scanner_status>1 then begin print_nl(578); case scanner_status of 2:begin print(579);p:=def_ref;end; 3:begin print(580);p:=7999997;end;4:begin print(581);p:=7999996;end; 5:begin print(582);p:=def_ref;end;end;print_char(63);print_ln; show_token_list(mem[p].hh.rh,0,error_line-10);end;end; {:306}{:119}{120:}function get_avail:halfword;var p:halfword; begin p:=avail; if p<>0 then avail:=mem[avail].hh.rh else if mem_end0 then begin r:=p;repeat q:=r;r:=mem[r].hh.rh; {dyn_used:=dyn_used-1;}until r=0;mem[q].hh.rh:=avail;avail:=p;end;end; {:123}{125:}function get_node(s:integer):halfword;label 40,10,20; var p:halfword;q:halfword;r:integer;t:integer;begin 20:p:=rover; repeat{127:}q:=p+mem[p].hh.lh; while(mem[q].hh.rh=536870911)do begin t:=mem[q+1].hh.rh; if q=rover then rover:=t;mem[t+1].hh.lh:=mem[q+1].hh.lh; mem[mem[q+1].hh.lh+1].hh.rh:=t;q:=q+mem[q].hh.lh;end;r:=q-s; if r>p+1 then{128:}begin mem[p].hh.lh:=r-p;rover:=p;goto 40;end{:128}; if r=p then if mem[p+1].hh.rh<>p then{129:}begin rover:=mem[p+1].hh.rh; t:=mem[p+1].hh.lh;mem[rover+1].hh.lh:=t;mem[t+1].hh.rh:=rover;goto 40; end{:129};mem[p].hh.lh:=q-p{:127};p:=mem[p+1].hh.rh;until p=rover; if s=1073741824 then begin get_node:=536870911;goto 10;end; if lo_mem_max+2=1998 then t:=lo_mem_max+1000 else t:= lo_mem_max+1+(hi_mem_min-lo_mem_max)div 2;p:=mem[rover+1].hh.lh; q:=lo_mem_max;mem[p+1].hh.rh:=q;mem[rover+1].hh.lh:=q; if t>536870911 then t:=536870911;mem[q+1].hh.rh:=rover; mem[q+1].hh.lh:=p;mem[q].hh.rh:=536870911;mem[q].hh.lh:=t-lo_mem_max; lo_mem_max:=t;mem[lo_mem_max].hh.rh:=0;mem[lo_mem_max].hh.lh:=0; rover:=q;goto 20;end{:126};overflow(302,mem_max+1-mem_min); 40:mem[r].hh.rh:=0;{var_used:=var_used+s;}get_node:=r;10:end; {:125}{130:}procedure free_node(p:halfword;s:halfword);var q:halfword; begin mem[p].hh.lh:=s;mem[p].hh.rh:=536870911;q:=mem[rover+1].hh.lh; mem[p+1].hh.lh:=q;mem[p+1].hh.rh:=rover;mem[rover+1].hh.lh:=p; mem[q+1].hh.rh:=p;{var_used:=var_used-s;}end; {:130}{131:}procedure sort_avail;var p,q,r:halfword;old_rover:halfword; begin p:=get_node(1073741824);p:=mem[rover+1].hh.rh; mem[rover+1].hh.rh:=536870911;old_rover:=rover; while p<>old_rover do{132:}if p536870911 do begin mem[mem[p+1].hh.rh+1].hh.lh:=p; p:=mem[p+1].hh.rh;end;mem[p+1].hh.rh:=rover;mem[rover+1].hh.lh:=p;end; {:131}{136:}function new_null_box:halfword;var p:halfword; begin p:=get_node(7);mem[p].hh.b0:=0;mem[p].hh.b1:=0;mem[p+1].int:=0; mem[p+2].int:=0;mem[p+3].int:=0;mem[p+4].int:=0;mem[p+5].hh.rh:=0; mem[p+5].hh.b0:=0;mem[p+5].hh.b1:=0;mem[p+6].gr:=0.0;new_null_box:=p; end;{:136}{139:}function new_rule:halfword;var p:halfword; begin p:=get_node(4);mem[p].hh.b0:=2;mem[p].hh.b1:=0; mem[p+1].int:=-1073741824;mem[p+2].int:=-1073741824; mem[p+3].int:=-1073741824;new_rule:=p;end; {:139}{144:}function new_ligature(f,c:quarterword;q:halfword):halfword; var p:halfword;begin p:=get_node(2);mem[p].hh.b0:=6;mem[p+1].hh.b0:=f; mem[p+1].hh.b1:=c;mem[p+1].hh.rh:=q;mem[p].hh.b1:=0;new_ligature:=p;end; function new_lig_item(c:quarterword):halfword;var p:halfword; begin p:=get_node(2);mem[p].hh.b1:=c;mem[p+1].hh.rh:=0;new_lig_item:=p; end;{:144}{145:}function new_disc:halfword;var p:halfword; begin p:=get_node(2);mem[p].hh.b0:=7;mem[p].hh.b1:=0;mem[p+1].hh.lh:=0; mem[p+1].hh.rh:=0;new_disc:=p;end; {:145}{147:}function new_math(w:scaled;s:small_number):halfword; var p:halfword;begin p:=get_node(2);mem[p].hh.b0:=9;mem[p].hh.b1:=s; mem[p+1].int:=w;new_math:=p;end; {:147}{151:}function new_spec(p:halfword):halfword;var q:halfword; begin q:=get_node(4);mem[q]:=mem[p];mem[q].hh.rh:=0; mem[q+1].int:=mem[p+1].int;mem[q+2].int:=mem[p+2].int; mem[q+3].int:=mem[p+3].int;new_spec:=q;end; {:151}{152:}function new_param_glue(n:small_number):halfword; var p:halfword;q:halfword;begin p:=get_node(2);mem[p].hh.b0:=10; mem[p].hh.b1:=n+1;mem[p+1].hh.rh:=0;q:={224:}eqtb[600782+n].hh.rh{:224}; mem[p+1].hh.lh:=q;mem[q].hh.rh:=mem[q].hh.rh+1;new_param_glue:=p;end; {:152}{153:}function new_glue(q:halfword):halfword;var p:halfword; begin p:=get_node(2);mem[p].hh.b0:=10;mem[p].hh.b1:=0;mem[p+1].hh.rh:=0; mem[p+1].hh.lh:=q;mem[q].hh.rh:=mem[q].hh.rh+1;new_glue:=p;end; {:153}{154:}function new_skip_param(n:small_number):halfword; var p:halfword; begin temp_ptr:=new_spec({224:}eqtb[600782+n].hh.rh{:224}); p:=new_glue(temp_ptr);mem[temp_ptr].hh.rh:=0;mem[p].hh.b1:=n+1; new_skip_param:=p;end;{:154}{156:}function new_kern(w:scaled):halfword; var p:halfword;begin p:=get_node(2);mem[p].hh.b0:=11;mem[p].hh.b1:=0; mem[p+1].int:=w;new_kern:=p;end; {:156}{158:}function new_penalty(m:integer):halfword;var p:halfword; begin p:=get_node(2);mem[p].hh.b0:=12;mem[p].hh.b1:=0;mem[p+1].int:=m; new_penalty:=p;end;{:158}{167:}{procedure check_mem(print_locs:boolean); label 31,32;var p,q:halfword;clobbered:boolean; begin for p:=mem_min to lo_mem_max do free[p]:=false; for p:=hi_mem_min to mem_end do free[p]:=false;[168:]p:=avail;q:=0; clobbered:=false; while p<>0 do begin if(p>mem_end)or(p=lo_mem_max)or(p=lo_mem_max)or(mem[p+1].hh.rhlo_mem_max)or(mem[mem[p+1].hh.rh+1].hh.lh<>p)then clobbered:=true; if clobbered then begin print_nl(304);print_int(q);goto 32;end; for q:=p to p+mem[p].hh.lh-1 do begin if free[q]then begin print_nl(305) ;print_int(q);goto 32;end;free[q]:=true;end;q:=p;p:=mem[p+1].hh.rh; until p=rover;32:[:169];[170:]p:=mem_min; while p<=lo_mem_max do begin if(mem[p].hh.rh=536870911)then begin print_nl(306);print_int(p);end; while(p<=lo_mem_max)and not free[p]do p:=p+1; while(p<=lo_mem_max)and free[p]do p:=p+1;end[:170]; if print_locs then[171:]begin print_nl(307); for p:=mem_min to lo_mem_max do if not free[p]and((p>was_lo_max)or was_free[p])then begin print_char(32);print_int(p);end; for p:=hi_mem_min to mem_end do if not free[p]and((p was_mem_end)or was_free[p])then begin print_char(32);print_int(p);end; end[:171];for p:=mem_min to lo_mem_max do was_free[p]:=free[p]; for p:=hi_mem_min to mem_end do was_free[p]:=free[p]; was_mem_end:=mem_end;was_lo_max:=lo_mem_max;was_hi_min:=hi_mem_min;end;} {:167}{172:}{procedure search_mem(p:halfword);var q:integer; begin for q:=mem_min to lo_mem_max do begin if mem[q].hh.rh=p then begin print_nl(308);print_int(q);print_char(41);end; if mem[q].hh.lh=p then begin print_nl(309);print_int(q);print_char(41); end;end; for q:=hi_mem_min to mem_end do begin if mem[q].hh.rh=p then begin print_nl(308);print_int(q);print_char(41);end; if mem[q].hh.lh=p then begin print_nl(309);print_int(q);print_char(41); end;end; [255:]for q:=1 to 601838 do begin if eqtb[q].hh.rh=p then begin print_nl (505);print_int(q);print_char(41);end;end[:255]; [285:]if save_ptr>0 then for q:=0 to save_ptr-1 do begin if save_stack[q ].hh.rh=p then begin print_nl(555);print_int(q);print_char(41);end; end[:285]; [934:]for q:=0 to 8191 do begin if hyph_list[q]=p then begin print_nl( 966);print_int(q);print_char(41);end;end[:934];end;} {:172}{174:}procedure short_display(p:integer);var n:integer; begin while p>mem_min do begin if(p>=hi_mem_min)then begin if p<=mem_end then begin if mem[p].hh.b0<>font_in_short_display then begin if(mem[p]. hh.b0<0)or(mem[p].hh.b0>font_max)then print_char(42)else{267:}print_esc( hash[600524+mem[p].hh.b0].rh){:267};print_char(32); font_in_short_display:=mem[p].hh.b0;end;print(mem[p].hh.b1-0);end; end else{175:}case mem[p].hh.b0 of 0,1,3,8,4,5,13:print(310); 2:print_char(124);10:if mem[p+1].hh.lh<>0 then print_char(32); 9:if mem[p].hh.b1>=4 then print(310)else print_char(36); 6:short_display(mem[p+1].hh.rh);7:begin short_display(mem[p+1].hh.lh); short_display(mem[p+1].hh.rh);n:=mem[p].hh.b1; while n>0 do begin if mem[p].hh.rh<>0 then p:=mem[p].hh.rh;n:=n-1;end; end;others:end{:175};p:=mem[p].hh.rh;end;end; {:174}{176:}procedure print_font_and_char(p:integer); begin if p>mem_end then print_esc(311)else begin if(mem[p].hh.b0<0)or( mem[p].hh.b0>font_max)then print_char(42)else{267:}print_esc(hash[ 600524+mem[p].hh.b0].rh){:267};print_char(32);print(mem[p].hh.b1-0);end; end;procedure print_mark(p:integer);begin print_char(123); if(pmem_end)then print_esc(311)else show_token_list(mem [p].hh.rh,0,max_print_line-10);print_char(125);end; procedure print_rule_dimen(d:scaled); begin if(d=-1073741824)then print_char(42)else print_scaled(d);end; {:176}{177:}procedure print_glue(d:scaled;order:integer;s:str_number); begin print_scaled(d); if(order<0)or(order>3)then print(312)else if order>0 then begin print( 313);while order>1 do begin print_char(108);order:=order-1;end; end else if s<>0 then print(s);end; {:177}{178:}procedure print_spec(p:integer;s:str_number); begin if(p=lo_mem_max)then print_char(42)else begin print_scaled(mem[p+1].int);if s<>0 then print(s); if mem[p+2].int<>0 then begin print(314); print_glue(mem[p+2].int,mem[p].hh.b0,s);end; if mem[p+3].int<>0 then begin print(315); print_glue(mem[p+3].int,mem[p].hh.b1,s);end;end;end; {:178}{179:}{692:}procedure print_fam_and_char(p:halfword); begin print_esc(468);print_int(mem[p].hh.b0);print_char(32); print(mem[p].hh.b1-0);end;procedure print_delimiter(p:halfword); var a:integer;begin a:=mem[p].qqqq.b0*256+mem[p].qqqq.b1-0; a:=a*4096+mem[p].qqqq.b2*256+mem[p].qqqq.b3-0; if a<0 then print_int(a)else print_hex(a);end; {:692}{693:}procedure show_info;forward; procedure print_subsidiary_data(p:halfword;c:ASCII_code); begin if(pool_ptr-str_start[str_ptr])>=depth_threshold then begin if mem [p].hh.rh<>0 then print(316);end else begin begin str_pool[pool_ptr]:=c; pool_ptr:=pool_ptr+1;end;temp_ptr:=p; case mem[p].hh.rh of 1:begin print_ln;print_current_string; print_fam_and_char(p);end;2:show_info; 3:if mem[p].hh.lh=0 then begin print_ln;print_current_string;print(885); end else show_info;others:end;pool_ptr:=pool_ptr-1;end;end; {:693}{695:}procedure print_style(c:integer); begin case c div 2 of 0:print_esc(886);1:print_esc(887); 2:print_esc(888);3:print_esc(889);others:print(890)end;end; {:695}{225:}procedure print_skip_param(n:integer); begin case n of 0:print_esc(380);1:print_esc(381);2:print_esc(382); 3:print_esc(383);4:print_esc(384);5:print_esc(385);6:print_esc(386); 7:print_esc(387);8:print_esc(388);9:print_esc(389);10:print_esc(390); 11:print_esc(391);12:print_esc(392);13:print_esc(393);14:print_esc(394); 15:print_esc(395);16:print_esc(396);17:print_esc(397); others:print(398)end;end; {:225}{:179}{182:}procedure show_node_list(p:integer);label 10; var n:integer;g:real; begin if(pool_ptr-str_start[str_ptr])>depth_threshold then begin if p>0 then print(316);goto 10;end;n:=0;while p>mem_min do begin print_ln; print_current_string;if p>mem_end then begin print(317);goto 10;end; n:=n+1;if n>breadth_max then begin print(318);goto 10;end; {183:}if(p>=hi_mem_min)then print_font_and_char(p)else case mem[p].hh.b0 of 0,1,13:{184:}begin if mem[p].hh.b0=0 then print_esc(104)else if mem[p ].hh.b0=1 then print_esc(118)else print_esc(320);print(321); print_scaled(mem[p+3].int);print_char(43);print_scaled(mem[p+2].int); print(322);print_scaled(mem[p+1].int); if mem[p].hh.b0=13 then{185:}begin if mem[p].hh.b1<>0 then begin print( 288);print_int(mem[p].hh.b1+1);print(324);end; if mem[p+6].int<>0 then begin print(325); print_glue(mem[p+6].int,mem[p+5].hh.b1,0);end; if mem[p+4].int<>0 then begin print(326); print_glue(mem[p+4].int,mem[p+5].hh.b0,0);end; end{:185}else begin{186:}g:=mem[p+6].gr; if(g<>0.0)and(mem[p+5].hh.b0<>0)then begin print(327); if mem[p+5].hh.b0=2 then print(328); if abs(mem[p+6].int)<1048576 then print(329)else if abs(g)>20000.0 then begin if g>0.0 then print_char(62)else print(330); print_glue(20000*65536,mem[p+5].hh.b1,0); end else print_glue(round(65536*g),mem[p+5].hh.b1,0);end{:186}; if mem[p+4].int<>0 then begin print(323);print_scaled(mem[p+4].int);end; if(eTeX_mode=1)then{1436:}if(mem[p].hh.b0=0)and((mem[p].hh.b1-0)=2)then print(1386){:1436};end;begin begin str_pool[pool_ptr]:=46; pool_ptr:=pool_ptr+1;end;show_node_list(mem[p+5].hh.rh); pool_ptr:=pool_ptr-1;end;end{:184};2:{187:}begin print_esc(331); print_rule_dimen(mem[p+3].int);print_char(43); print_rule_dimen(mem[p+2].int);print(322); print_rule_dimen(mem[p+1].int);end{:187};3:{188:}begin print_esc(332); print_int(mem[p].hh.b1-0);print(333);print_scaled(mem[p+3].int); print(334);print_spec(mem[p+4].hh.rh,0);print_char(44); print_scaled(mem[p+2].int);print(335);print_int(mem[p+1].int); begin begin str_pool[pool_ptr]:=46;pool_ptr:=pool_ptr+1;end; show_node_list(mem[p+4].hh.lh);pool_ptr:=pool_ptr-1;end;end{:188}; 8:{1357:}case mem[p].hh.b1 of 0:begin print_write_whatsit(1312,p); print_char(61); print_file_name(mem[p+1].hh.rh,mem[p+2].hh.lh,mem[p+2].hh.rh);end; 1:begin print_write_whatsit(604,p);print_mark(mem[p+1].hh.rh);end; 2:print_write_whatsit(1313,p);3:begin print_esc(1314); print_mark(mem[p+1].hh.rh);end;4:begin print_esc(1316); print_int(mem[p+1].hh.rh);print(1319);print_int(mem[p+1].hh.b0); print_char(44);print_int(mem[p+1].hh.b1);print_char(41);end; others:print(1320)end{:1357}; 10:{189:}if mem[p].hh.b1>=100 then{190:}begin print_esc(340); if mem[p].hh.b1=101 then print_char(99)else if mem[p].hh.b1=102 then print_char(120);print(341);print_spec(mem[p+1].hh.lh,0); begin begin str_pool[pool_ptr]:=46;pool_ptr:=pool_ptr+1;end; show_node_list(mem[p+1].hh.rh);pool_ptr:=pool_ptr-1;end; end{:190}else begin print_esc(336); if mem[p].hh.b1<>0 then begin print_char(40); if mem[p].hh.b1<98 then print_skip_param(mem[p].hh.b1-1)else if mem[p]. hh.b1=98 then print_esc(337)else print_esc(338);print_char(41);end; if mem[p].hh.b1<>98 then begin print_char(32); if mem[p].hh.b1<98 then print_spec(mem[p+1].hh.lh,0)else print_spec(mem[ p+1].hh.lh,339);end;end{:189}; 11:{191:}if mem[p].hh.b1<>99 then begin print_esc(342); if mem[p].hh.b1<>0 then print_char(32);print_scaled(mem[p+1].int); if mem[p].hh.b1=2 then print(343);end else begin print_esc(344); print_scaled(mem[p+1].int);print(339);end{:191}; 9:{192:}if mem[p].hh.b1>1 then begin if odd(mem[p].hh.b1)then print_esc( 345)else print_esc(346); if mem[p].hh.b1>8 then print_char(82)else if mem[p].hh.b1>4 then print_char(76)else print_char(77);end else begin print_esc(347); if mem[p].hh.b1=0 then print(348)else print(349); if mem[p+1].int<>0 then begin print(350);print_scaled(mem[p+1].int);end; end{:192};6:{193:}begin print_font_and_char(p+1);print(351); if mem[p].hh.b1>1 then print_char(124); font_in_short_display:=mem[p+1].hh.b0;short_display(mem[p+1].hh.rh); if odd(mem[p].hh.b1)then print_char(124);print_char(41);end{:193}; 12:{194:}begin print_esc(352);print_int(mem[p+1].int);end{:194}; 7:{195:}begin print_esc(353);if mem[p].hh.b1>0 then begin print(354); print_int(mem[p].hh.b1);end;begin begin str_pool[pool_ptr]:=46; pool_ptr:=pool_ptr+1;end;show_node_list(mem[p+1].hh.lh); pool_ptr:=pool_ptr-1;end;begin str_pool[pool_ptr]:=124; pool_ptr:=pool_ptr+1;end;show_node_list(mem[p+1].hh.rh); pool_ptr:=pool_ptr-1;end{:195};4:{196:}begin print_esc(355); if mem[p+1].hh.lh<>0 then begin print_char(115); print_int(mem[p+1].hh.lh);end;print_mark(mem[p+1].hh.rh);end{:196}; 5:{197:}begin print_esc(356);begin begin str_pool[pool_ptr]:=46; pool_ptr:=pool_ptr+1;end;show_node_list(mem[p+1].int); pool_ptr:=pool_ptr-1;end;end{:197};{691:}14:print_style(mem[p].hh.b1); 15:{696:}begin print_esc(529);begin str_pool[pool_ptr]:=68; pool_ptr:=pool_ptr+1;end;show_node_list(mem[p+1].hh.lh); pool_ptr:=pool_ptr-1;begin str_pool[pool_ptr]:=84;pool_ptr:=pool_ptr+1; end;show_node_list(mem[p+1].hh.rh);pool_ptr:=pool_ptr-1; begin str_pool[pool_ptr]:=83;pool_ptr:=pool_ptr+1;end; show_node_list(mem[p+2].hh.lh);pool_ptr:=pool_ptr-1; begin str_pool[pool_ptr]:=115;pool_ptr:=pool_ptr+1;end; show_node_list(mem[p+2].hh.rh);pool_ptr:=pool_ptr-1;end{:696}; 16,17,18,19,20,21,22,23,24,27,26,29,28,30,31:{697:}begin case mem[p].hh. b0 of 16:print_esc(891);17:print_esc(892);18:print_esc(893); 19:print_esc(894);20:print_esc(895);21:print_esc(896);22:print_esc(897); 23:print_esc(898);27:print_esc(899);26:print_esc(900);29:print_esc(544); 24:begin print_esc(538);print_delimiter(p+4);end; 28:begin print_esc(512);print_fam_and_char(p+4);end; 30:begin print_esc(901);print_delimiter(p+1);end; 31:begin if mem[p].hh.b1=0 then print_esc(902)else print_esc(903); print_delimiter(p+1);end;end; if mem[p].hh.b0<30 then begin if mem[p].hh.b1<>0 then if mem[p].hh.b1=1 then print_esc(904)else print_esc(905);print_subsidiary_data(p+1,46); end;print_subsidiary_data(p+2,94);print_subsidiary_data(p+3,95); end{:697};25:{698:}begin print_esc(906); if mem[p+1].int=1073741824 then print(907)else print_scaled(mem[p+1].int ); if(mem[p+4].qqqq.b0<>0)or(mem[p+4].qqqq.b1<>0)or(mem[p+4].qqqq.b2<>0)or( mem[p+4].qqqq.b3<>0)then begin print(908);print_delimiter(p+4);end; if(mem[p+5].qqqq.b0<>0)or(mem[p+5].qqqq.b1<>0)or(mem[p+5].qqqq.b2<>0)or( mem[p+5].qqqq.b3<>0)then begin print(909);print_delimiter(p+5);end; print_subsidiary_data(p+2,92);print_subsidiary_data(p+3,47);end{:698}; {:691}others:print(319)end{:183};p:=mem[p].hh.rh;end;10:end; {:182}{198:}procedure show_box(p:halfword); begin{236:}depth_threshold:=eqtb[603193].int; breadth_max:=eqtb[603192].int{:236}; if breadth_max<=0 then breadth_max:=5; if pool_ptr+depth_threshold>=pool_size then depth_threshold:=pool_size- pool_ptr-1;show_node_list(p);print_ln;end; {:198}{200:}procedure delete_token_ref(p:halfword); begin if mem[p].hh.lh=0 then flush_list(p)else mem[p].hh.lh:=mem[p].hh. lh-1;end;{:200}{201:}procedure delete_glue_ref(p:halfword); begin if mem[p].hh.rh=0 then free_node(p,4)else mem[p].hh.rh:=mem[p].hh. rh-1;end;{:201}{202:}procedure flush_node_list(p:halfword);label 30; var q:halfword;begin while p<>0 do begin q:=mem[p].hh.rh; if(p>=hi_mem_min)then begin mem[p].hh.rh:=avail;avail:=p; {dyn_used:=dyn_used-1;} end else begin case mem[p].hh.b0 of 0,1,13:begin flush_node_list(mem[p+5 ].hh.rh);free_node(p,7);goto 30;end;2:begin free_node(p,4);goto 30;end; 3:begin flush_node_list(mem[p+4].hh.lh);delete_glue_ref(mem[p+4].hh.rh); free_node(p,5);goto 30;end; 8:{1359:}begin case mem[p].hh.b1 of 0:free_node(p,3); 1,3:begin delete_token_ref(mem[p+1].hh.rh);free_node(p,2);goto 30;end; 2,4:free_node(p,2);others:confusion(1322)end;goto 30;end{:1359}; 10:begin begin if mem[mem[p+1].hh.lh].hh.rh=0 then free_node(mem[p+1].hh .lh,4)else mem[mem[p+1].hh.lh].hh.rh:=mem[mem[p+1].hh.lh].hh.rh-1;end; if mem[p+1].hh.rh<>0 then flush_node_list(mem[p+1].hh.rh);end;11,9,12:; 6:flush_node_list(mem[p+1].hh.rh);4:delete_token_ref(mem[p+1].hh.rh); 7:begin flush_node_list(mem[p+1].hh.lh);flush_node_list(mem[p+1].hh.rh); end;5:flush_node_list(mem[p+1].int);{699:}14:begin free_node(p,3); goto 30;end;15:begin flush_node_list(mem[p+1].hh.lh); flush_node_list(mem[p+1].hh.rh);flush_node_list(mem[p+2].hh.lh); flush_node_list(mem[p+2].hh.rh);free_node(p,3);goto 30;end; 16,17,18,19,20,21,22,23,24,27,26,29,28:begin if mem[p+1].hh.rh>=2 then flush_node_list(mem[p+1].hh.lh); if mem[p+2].hh.rh>=2 then flush_node_list(mem[p+2].hh.lh); if mem[p+3].hh.rh>=2 then flush_node_list(mem[p+3].hh.lh); if mem[p].hh.b0=24 then free_node(p,5)else if mem[p].hh.b0=28 then free_node(p,5)else free_node(p,4);goto 30;end; 30,31:begin free_node(p,4);goto 30;end; 25:begin flush_node_list(mem[p+2].hh.lh); flush_node_list(mem[p+3].hh.lh);free_node(p,6);goto 30;end; {:699}others:confusion(357)end;free_node(p,2);30:end;p:=q;end;end; {:202}{204:}function copy_node_list(p:halfword):halfword;var h:halfword; q:halfword;r:halfword;words:0..5;begin h:=get_avail;q:=h; while p<>0 do begin{205:}words:=1; if(p>=hi_mem_min)then r:=get_avail else{206:}case mem[p].hh.b0 of 0,1,13 :begin r:=get_node(7);mem[r+6]:=mem[p+6];mem[r+5]:=mem[p+5]; mem[r+5].hh.rh:=copy_node_list(mem[p+5].hh.rh);words:=5;end; 2:begin r:=get_node(4);words:=4;end;3:begin r:=get_node(5); mem[r+4]:=mem[p+4]; mem[mem[p+4].hh.rh].hh.rh:=mem[mem[p+4].hh.rh].hh.rh+1; mem[r+4].hh.lh:=copy_node_list(mem[p+4].hh.lh);words:=4;end; 8:{1358:}case mem[p].hh.b1 of 0:begin r:=get_node(3);words:=3;end; 1,3:begin r:=get_node(2); mem[mem[p+1].hh.rh].hh.lh:=mem[mem[p+1].hh.rh].hh.lh+1;words:=2;end; 2,4:begin r:=get_node(2);words:=2;end;others:confusion(1321)end{:1358}; 10:begin r:=get_node(2); mem[mem[p+1].hh.lh].hh.rh:=mem[mem[p+1].hh.lh].hh.rh+1; mem[r+1].hh.lh:=mem[p+1].hh.lh; mem[r+1].hh.rh:=copy_node_list(mem[p+1].hh.rh);end; 11,9,12:begin r:=get_node(2);words:=2;end;6:begin r:=get_node(2); mem[r+1]:=mem[p+1];mem[r+1].hh.rh:=copy_node_list(mem[p+1].hh.rh);end; 7:begin r:=get_node(2);mem[r+1].hh.lh:=copy_node_list(mem[p+1].hh.lh); mem[r+1].hh.rh:=copy_node_list(mem[p+1].hh.rh);end; 4:begin r:=get_node(2); mem[mem[p+1].hh.rh].hh.lh:=mem[mem[p+1].hh.rh].hh.lh+1;words:=2;end; 5:begin r:=get_node(2);mem[r+1].int:=copy_node_list(mem[p+1].int);end; others:confusion(358)end{:206};while words>0 do begin words:=words-1; mem[r+words]:=mem[p+words];end{:205};mem[q].hh.rh:=r;q:=r; p:=mem[p].hh.rh;end;mem[q].hh.rh:=0;q:=mem[h].hh.rh; begin mem[h].hh.rh:=avail;avail:=h;{dyn_used:=dyn_used-1;}end; copy_node_list:=q;end;{:204}{211:}procedure print_mode(m:integer); begin if m>0 then case m div(101)of 0:print(359);1:print(360); 2:print(361); end else if m=0 then print(362)else case(-m)div(101)of 0:print(363); 1:print(364);2:print(347);end;print(365);end; {:211}{216:}procedure push_nest; begin if nest_ptr>max_nest_stack then begin max_nest_stack:=nest_ptr; if nest_ptr=nest_size then overflow(366,nest_size);end; nest[nest_ptr]:=cur_list;nest_ptr:=nest_ptr+1; cur_list.head_field:=get_avail;cur_list.tail_field:=cur_list.head_field; cur_list.pg_field:=0;cur_list.ml_field:=line;cur_list.eTeX_aux_field:=0; end;{:216}{217:}procedure pop_nest; begin begin mem[cur_list.head_field].hh.rh:=avail; avail:=cur_list.head_field;{dyn_used:=dyn_used-1;}end; nest_ptr:=nest_ptr-1;cur_list:=nest[nest_ptr];end; {:217}{218:}procedure print_totals;forward;procedure show_activities; var p:0..nest_size;m:-203..203;a:memory_word;q,r:halfword;t:integer; begin nest[nest_ptr]:=cur_list;print_nl(340);print_ln; for p:=nest_ptr downto 0 do begin m:=nest[p].mode_field; a:=nest[p].aux_field;print_nl(367);print_mode(m);print(368); print_int(abs(nest[p].ml_field)); if m=102 then if nest[p].pg_field<>8585216 then begin print(369); print_int(nest[p].pg_field mod 65536);print(370); print_int(nest[p].pg_field div 4194304);print_char(44); print_int((nest[p].pg_field div 65536)mod 64);print_char(41);end; if nest[p].ml_field<0 then print(371); if p=0 then begin{987:}if 7999998<>page_tail then begin print_nl(1006); if output_active then print(1007);show_box(mem[7999998].hh.rh); if page_contents>0 then begin print_nl(1008);print_totals; print_nl(1009);print_scaled(page_so_far[0]);r:=mem[8000000].hh.rh; while r<>8000000 do begin print_ln;print_esc(332);t:=mem[r].hh.b1-0; print_int(t);print(1010); if eqtb[603233+t].int=1000 then t:=mem[r+3].int else t:=x_over_n(mem[r+3 ].int,1000)*eqtb[603233+t].int;print_scaled(t); if mem[r].hh.b0=1 then begin q:=7999998;t:=0;repeat q:=mem[q].hh.rh; if(mem[q].hh.b0=3)and(mem[q].hh.b1=mem[r].hh.b1)then t:=t+1; until q=mem[r+1].hh.lh;print(1011);print_int(t);print(1012);end; r:=mem[r].hh.rh;end;end;end{:987}; if mem[7999999].hh.rh<>0 then print_nl(372);end; show_box(mem[nest[p].head_field].hh.rh); {219:}case abs(m)div(101)of 0:begin print_nl(373); if a.int<=-65536000 then print(374)else print_scaled(a.int); if nest[p].pg_field<>0 then begin print(375); print_int(nest[p].pg_field);print(376); if nest[p].pg_field<>1 then print_char(115);end;end; 1:begin print_nl(377);print_int(a.hh.lh); if m>0 then if a.hh.rh>0 then begin print(378);print_int(a.hh.rh);end; end;2:if a.int<>0 then begin print(379);show_box(a.int);end;end{:219}; end;end;{:218}{237:}procedure print_param(n:integer); begin case n of 0:print_esc(424);1:print_esc(425);2:print_esc(426); 3:print_esc(427);4:print_esc(428);5:print_esc(429);6:print_esc(430); 7:print_esc(431);8:print_esc(432);9:print_esc(433);10:print_esc(434); 11:print_esc(435);12:print_esc(436);13:print_esc(437);14:print_esc(438); 15:print_esc(439);16:print_esc(440);17:print_esc(441);18:print_esc(442); 19:print_esc(443);20:print_esc(444);21:print_esc(445);22:print_esc(446); 23:print_esc(447);24:print_esc(448);25:print_esc(449);26:print_esc(450); 27:print_esc(451);28:print_esc(452);29:print_esc(453);30:print_esc(454); 31:print_esc(455);32:print_esc(456);33:print_esc(457);34:print_esc(458); 35:print_esc(459);36:print_esc(460);37:print_esc(461);38:print_esc(462); 39:print_esc(463);40:print_esc(464);41:print_esc(465);42:print_esc(466); 43:print_esc(467);44:print_esc(468);45:print_esc(469);46:print_esc(470); 47:print_esc(471);48:print_esc(472);49:print_esc(473);50:print_esc(474); 51:print_esc(475);52:print_esc(476);53:print_esc(477);54:print_esc(478); {1391:}55:print_esc(1334);56:print_esc(1335);57:print_esc(1336); 58:print_esc(1337);59:print_esc(1338);60:print_esc(1339); 61:print_esc(1340);62:print_esc(1341);63:print_esc(1342); {:1391}{1432:}64:print_esc(1381);{:1432}others:print(479)end;end; {:237}{241:}procedure fix_date_and_time; begin eqtb[603188].int:=currentminutes;eqtb[603189].int:=currentday; eqtb[603190].int:=currentmonth;eqtb[603191].int:=currentyear; sys_time:=eqtb[603188].int;sys_day:=eqtb[603189].int; sys_month:=eqtb[603190].int;sys_year:=eqtb[603191].int;end; {:241}{245:}procedure begin_diagnostic;begin old_setting:=selector; if(eqtb[603197].int<=0)and(selector=19)then begin selector:=selector-1; if history=0 then history:=1;end;end; procedure end_diagnostic(blank_line:boolean);begin print_nl(340); if blank_line then print_ln;selector:=old_setting;end; {:245}{247:}procedure print_length_param(n:integer); begin case n of 0:print_esc(482);1:print_esc(483);2:print_esc(484); 3:print_esc(485);4:print_esc(486);5:print_esc(487);6:print_esc(488); 7:print_esc(489);8:print_esc(490);9:print_esc(491);10:print_esc(492); 11:print_esc(493);12:print_esc(494);13:print_esc(495);14:print_esc(496); 15:print_esc(497);16:print_esc(498);17:print_esc(499);18:print_esc(500); 19:print_esc(501);20:print_esc(502);others:print(503)end;end; {:247}{252:}{298:}procedure print_cmd_chr(cmd:quarterword; chr_code:halfword);var n:integer;begin case cmd of 1:begin print(565); print(chr_code);end;2:begin print(566);print(chr_code);end; 3:begin print(567);print(chr_code);end;6:begin print(568); print(chr_code);end;7:begin print(569);print(chr_code);end; 8:begin print(570);print(chr_code);end;9:print(571);10:begin print(572); print(chr_code);end;11:begin print(573);print(chr_code);end; 12:begin print(574);print(chr_code);end; {227:}75,76:if chr_code<600800 then print_skip_param(chr_code-600782) else if chr_code<601056 then begin print_esc(399); print_int(chr_code-600800);end else begin print_esc(400); print_int(chr_code-601056);end; {:227}{231:}72:if chr_code>=601323 then begin print_esc(411); print_int(chr_code-601323); end else case chr_code of 601313:print_esc(402);601314:print_esc(403); 601315:print_esc(404);601316:print_esc(405);601317:print_esc(406); 601318:print_esc(407);601319:print_esc(408);601320:print_esc(409); {1390:}601322:print_esc(1333);{:1390}others:print_esc(410)end; {:231}{239:}73:if chr_code<603233 then print_param(chr_code-603168)else begin print_esc(480);print_int(chr_code-603233);end; {:239}{249:}74:if chr_code<603766 then print_length_param(chr_code -603745)else begin print_esc(504);print_int(chr_code-603766);end; {:249}{266:}45:print_esc(512);90:print_esc(513);40:print_esc(514); 41:print_esc(515);77:print_esc(523);61:print_esc(516);42:print_esc(536); 16:print_esc(517);107:print_esc(508);88:print_esc(522); 15:print_esc(518);92:print_esc(519);67:print_esc(509);62:print_esc(520); 64:print_esc(32); 102:if chr_code=0 then print_esc(521){1499:}else print_esc(798){:1499}; 32:print_esc(524);36:print_esc(525);39:print_esc(526);37:print_esc(332); 44:print_esc(47);18:begin print_esc(355); if chr_code>0 then print_char(115);end;46:print_esc(527); 17:print_esc(528);54:print_esc(529);91:print_esc(530);34:print_esc(531); 65:print_esc(532);103:print_esc(533);55:print_esc(337); 63:print_esc(534);66:print_esc(538); 96:if chr_code=0 then print_esc(539){1496:}else print_esc(1397){:1496}; 0:print_esc(540);98:print_esc(541);80:print_esc(537); 84:case chr_code of 601312:print_esc(535);{1601:}601579:print_esc(1430); 601580:print_esc(1431);601581:print_esc(1432);601582:print_esc(1433); {:1601}end; 109:if chr_code=0 then print_esc(542){1419:}else if chr_code=1 then print_esc(1371)else print_esc(1372){:1419}; 71:{1569:}begin print_esc(411); if chr_code<>0 then print_sa_num(chr_code);end{:1569};38:print_esc(356); 33:if chr_code=0 then print_esc(543){1434:}else case chr_code of 6: print_esc(1382);7:print_esc(1383);10:print_esc(1384); others:print_esc(1385)end{:1434};56:print_esc(544);35:print_esc(545); {:266}{335:}13:print_esc(607); {:335}{377:}104:if chr_code=0 then print_esc(639){1484:}else if chr_code =2 then print_esc(1394)else if chr_code=3 then print_esc(1395){:1484} else print_esc(640); {:377}{385:}110:begin case(chr_code mod 5)of 1:print_esc(642); 2:print_esc(643);3:print_esc(644);4:print_esc(645); others:print_esc(641)end;if chr_code>=5 then print_char(115);end; {:385}{412:}89:{1568:}begin if(chr_code<0)or(chr_code>19)then cmd:=(mem[ chr_code].hh.b0 div 16)else begin cmd:=chr_code-0;chr_code:=0;end; if cmd=0 then print_esc(480)else if cmd=1 then print_esc(504)else if cmd =2 then print_esc(399)else print_esc(400); if chr_code<>0 then print_sa_num(chr_code);end{:1568}; {:412}{417:}79:if chr_code=1 then print_esc(679)else print_esc(678); 82:if chr_code=0 then print_esc(680){1425:}else if chr_code=2 then print_esc(1377){:1425}else print_esc(681); 83:if chr_code=1 then print_esc(682)else if chr_code=3 then print_esc( 683)else print_esc(684);70:case chr_code of 0:print_esc(685); 1:print_esc(686);2:print_esc(687);4:print_esc(688); {1382:}3:print_esc(1330);6:print_esc(1331); {:1382}{1396:}7:print_esc(1356);8:print_esc(1357); {:1396}{1399:}9:print_esc(1358);10:print_esc(1359);11:print_esc(1360); {:1399}{1402:}15:print_esc(1361);16:print_esc(1362);17:print_esc(1363); 18:print_esc(1364);{:1402}{1405:}19:print_esc(1365);20:print_esc(1366); 21:print_esc(1367);{:1405}{1515:}26:print_esc(1406);27:print_esc(1407); 28:print_esc(1408);29:print_esc(1409);{:1515}{1538:}12:print_esc(1413); 13:print_esc(1414);22:print_esc(1415);23:print_esc(1416); {:1538}{1542:}24:print_esc(1417);25:print_esc(1418); {:1542}{1616:}14:print_esc(1434);{:1616}others:print_esc(689)end; {:417}{469:}108:case chr_code of 0:print_esc(745);1:print_esc(746); 2:print_esc(747);3:print_esc(748);4:print_esc(749);5:print_esc(751); 9:print_esc(752);6:print_esc(753);11:print_esc(754);7:print_esc(755); 8:print_esc(756);10:print_esc(757);12:print_esc(758);14:print_esc(759); 13:print_esc(760);others:print_esc(750)end; {:469}{489:}105:begin if chr_code>=32 then print_esc(798); case chr_code mod 32 of 1:print_esc(782);2:print_esc(783); 3:print_esc(784);4:print_esc(785);5:print_esc(786);6:print_esc(787); 7:print_esc(788);8:print_esc(789);9:print_esc(790);10:print_esc(791); 11:print_esc(792);12:print_esc(793);13:print_esc(794);14:print_esc(795); 15:print_esc(796);16:print_esc(797);{1500:}17:print_esc(1398); 18:print_esc(1399);19:print_esc(1400);{:1500}others:print_esc(781)end; end; {:489}{493:}106:if chr_code=2 then print_esc(799)else if chr_code=4 then print_esc(800)else print_esc(801); {:493}{782:}4:if chr_code=256 then print_esc(924)else begin print(928); print(chr_code);end; 5:if chr_code=257 then print_esc(925)else print_esc(926); {:782}{985:}81:case chr_code of 0:print_esc(996);1:print_esc(997); 2:print_esc(998);3:print_esc(999);4:print_esc(1000);5:print_esc(1001); 6:print_esc(1002);others:print_esc(1003)end; {:985}{1054:}14:if chr_code=1 then print_esc(1051)else print_esc(345); {:1054}{1060:}26:case chr_code of 4:print_esc(1052);0:print_esc(1053); 1:print_esc(1054);2:print_esc(1055);others:print_esc(1056)end; 27:case chr_code of 4:print_esc(1057);0:print_esc(1058); 1:print_esc(1059);2:print_esc(1060);others:print_esc(1061)end; 28:print_esc(338);29:print_esc(342);30:print_esc(344); {:1060}{1073:}21:if chr_code=1 then print_esc(1079)else print_esc(1080); 22:if chr_code=1 then print_esc(1081)else print_esc(1082); 20:case chr_code of 0:print_esc(413);1:print_esc(1083); 2:print_esc(1084);3:print_esc(991);4:print_esc(1085);5:print_esc(993); others:print_esc(1086)end; 31:if chr_code=100 then print_esc(1088)else if chr_code=101 then print_esc(1089)else if chr_code=102 then print_esc(1090)else print_esc( 1087); {:1073}{1090:}43:if chr_code=0 then print_esc(1107)else print_esc(1106); {:1090}{1109:}25:if chr_code=10 then print_esc(1118)else if chr_code=11 then print_esc(1117)else print_esc(1116); 23:if chr_code=1 then print_esc(1120)else print_esc(1119); 24:if chr_code=1 then print_esc(1122){1598:}else if chr_code=2 then print_esc(1428)else if chr_code=3 then print_esc(1429){:1598}else print_esc(1121); {:1109}{1116:}47:if chr_code=1 then print_esc(45)else print_esc(353); {:1116}{1144:}48:if chr_code=1 then print_esc(1154)else print_esc(1153); {:1144}{1158:}50:case chr_code of 16:print_esc(891);17:print_esc(892); 18:print_esc(893);19:print_esc(894);20:print_esc(895);21:print_esc(896); 22:print_esc(897);23:print_esc(898);26:print_esc(900); others:print_esc(899)end; 51:if chr_code=1 then print_esc(904)else if chr_code=2 then print_esc( 905)else print_esc(1155);{:1158}{1171:}53:print_style(chr_code); {:1171}{1180:}52:case chr_code of 1:print_esc(1174);2:print_esc(1175); 3:print_esc(1176);4:print_esc(1177);5:print_esc(1178); others:print_esc(1173)end; {:1180}{1190:}49:if chr_code=30 then print_esc(901){1430:}else if chr_code=1 then print_esc(903){:1430}else print_esc(902); {:1190}{1210:}93:if chr_code=1 then print_esc(1198)else if chr_code=2 then print_esc(1199){1507:}else if chr_code=8 then print_esc(1212) {:1507}else print_esc(1200); 97:if chr_code=0 then print_esc(1201)else if chr_code=1 then print_esc( 1202)else if chr_code=2 then print_esc(1203)else print_esc(1204); {:1210}{1221:}94:if chr_code<>0 then print_esc(1222)else print_esc(1221) ;{:1221}{1224:}95:case chr_code of 0:print_esc(1223);1:print_esc(1224); 2:print_esc(1225);3:print_esc(1226);4:print_esc(1227);5:print_esc(1228); others:print_esc(1229)end;68:begin print_esc(517);print_hex(chr_code); end;69:begin print_esc(528);print_hex(chr_code);end; {:1224}{1232:}85:if chr_code=601888 then print_esc(419)else if chr_code= 602912 then print_esc(423)else if chr_code=602144 then print_esc(420) else if chr_code=602400 then print_esc(421)else if chr_code=602656 then print_esc(422)else print_esc(481);86:print_size(chr_code-601840); {:1232}{1252:}99:if chr_code=1 then print_esc(979)else print_esc(967); {:1252}{1256:}78:if chr_code=0 then print_esc(1246)else print_esc(1247); {:1256}{1262:}87:begin print(1255);slow_print(font_name[chr_code]); if font_size[chr_code]<>font_dsize[chr_code]then begin print(764); print_scaled(font_size[chr_code]);print(401);end;end; {:1262}{1264:}100:case chr_code of 0:print_esc(276);1:print_esc(277); 2:print_esc(278);others:print_esc(1256)end; {:1264}{1274:}60:if chr_code=0 then print_esc(1258)else print_esc(1257); {:1274}{1279:}58:if chr_code=0 then print_esc(1259)else print_esc(1260); {:1279}{1288:}57:if chr_code=602144 then print_esc(1266)else print_esc( 1267);{:1288}{1293:}19:case chr_code of 1:print_esc(1269); 2:print_esc(1270);3:print_esc(1271);{1408:}4:print_esc(1368); {:1408}{1417:}5:print_esc(1370);{:1417}{1422:}6:print_esc(1373); {:1422}others:print_esc(1268)end;{:1293}{1296:}101:print(1278); 111,112,113,114:begin n:=cmd-111; if mem[mem[chr_code].hh.rh].hh.lh=3585 then n:=n+4; if odd(n div 4)then print_esc(1212);if odd(n)then print_esc(1198); if odd(n div 2)then print_esc(1199);if n>0 then print_char(32); print(1279);end;115:print_esc(1280); {:1296}{1347:}59:case chr_code of 0:print_esc(1312);1:print_esc(604); 2:print_esc(1313);3:print_esc(1314);4:print_esc(1315);5:print_esc(1316); others:print(1317)end;{:1347}others:print(575)end;end; {:298}{procedure show_eqtb(n:halfword); begin if n<1 then print_char(63)else if n<600782 then[223:]begin sprint_cs(n);print_char(61);print_cmd_chr(eqtb[n].hh.b0,eqtb[n].hh.rh); if eqtb[n].hh.b0>=111 then begin print_char(58); show_token_list(mem[eqtb[n].hh.rh].hh.rh,0,32);end; end[:223]else if n<601312 then[229:]if n<600800 then begin print_skip_param(n-600782);print_char(61); if n<600797 then print_spec(eqtb[n].hh.rh,401)else print_spec(eqtb[n].hh .rh,339);end else if n<601056 then begin print_esc(399); print_int(n-600800);print_char(61);print_spec(eqtb[n].hh.rh,401); end else begin print_esc(400);print_int(n-601056);print_char(61); print_spec(eqtb[n].hh.rh,339); end[:229]else if n<603168 then[233:]if(n=601312)or((n>=601579)and(n< 601583))then begin print_cmd_chr(84,n);print_char(61); if eqtb[n].hh.rh=0 then print_char(48)else if n>601312 then begin print_int(mem[eqtb[n].hh.rh+1].int);print_char(32); print_int(mem[eqtb[n].hh.rh+2].int); if mem[eqtb[n].hh.rh+1].int>1 then print_esc(412); end else print_int(mem[eqtb[601312].hh.rh].hh.lh); end else if n<601323 then begin print_cmd_chr(72,n);print_char(61); if eqtb[n].hh.rh<>0 then show_token_list(mem[eqtb[n].hh.rh].hh.rh,0,32); end else if n<601583 then begin print_esc(411);print_int(n-601323); print_char(61); if eqtb[n].hh.rh<>0 then show_token_list(mem[eqtb[n].hh.rh].hh.rh,0,32); end else if n<601839 then begin print_esc(413);print_int(n-601583); print_char(61); if eqtb[n].hh.rh=0 then print(414)else begin depth_threshold:=0; breadth_max:=1;show_node_list(eqtb[n].hh.rh);end; end else if n<601888 then[234:]begin if n=601839 then print(415)else if n<601856 then begin print_esc(416);print_int(n-601840); end else if n<601872 then begin print_esc(417);print_int(n-601856); end else begin print_esc(418);print_int(n-601872);end;print_char(61); print_esc(hash[600524+eqtb[n].hh.rh].rh); end[:234]else[235:]if n<602912 then begin if n<602144 then begin print_esc(419);print_int(n-601888); end else if n<602400 then begin print_esc(420);print_int(n-602144); end else if n<602656 then begin print_esc(421);print_int(n-602400); end else begin print_esc(422);print_int(n-602656);end;print_char(61); print_int(eqtb[n].hh.rh);end else begin print_esc(423); print_int(n-602912);print_char(61);print_int(eqtb[n].hh.rh-0); end[:235][:233]else if n<603745 then[242:]begin if n<603233 then print_param(n-603168)else if n<603489 then begin print_esc(480); print_int(n-603233);end else begin print_esc(481);print_int(n-603489); end;print_char(61);print_int(eqtb[n].int); end[:242]else if n<=604021 then[251:]begin if n<603766 then print_length_param(n-603745)else begin print_esc(504); print_int(n-603766);end;print_char(61);print_scaled(eqtb[n].int); print(401);end[:251]else print_char(63);end;} {:252}{259:}function id_lookup(j,l:integer):halfword;label 40; var h:integer;d:integer;p:halfword;k:halfword;begin{261:}h:=buffer[j]; for k:=j+1 to j+l-1 do begin h:=h+h+buffer[k]; while h>=1777 do h:=h-1777;end{:261};p:=h+514; while true do begin if hash[p].rh>0 then if(str_start[hash[p].rh+1]- str_start[hash[p].rh])=l then if str_eq_buf(hash[p].rh,j)then goto 40; if hash[p].lh=0 then begin if no_new_control_sequence then p:=600781 else{260:}begin if hash[p].rh>0 then begin repeat if(hash_used=514)then overflow(507,600000);hash_used:=hash_used-1;until hash[hash_used].rh=0; hash[p].lh:=hash_used;p:=hash_used;end; begin if pool_ptr+l>pool_size then overflow(259,pool_size-init_pool_ptr) ;end;d:=(pool_ptr-str_start[str_ptr]); while pool_ptr>str_start[str_ptr]do begin pool_ptr:=pool_ptr-1; str_pool[pool_ptr+l]:=str_pool[pool_ptr];end; for k:=j to j+l-1 do begin str_pool[pool_ptr]:=buffer[k]; pool_ptr:=pool_ptr+1;end;hash[p].rh:=make_string;pool_ptr:=pool_ptr+d; {cs_count:=cs_count+1;}end{:260};goto 40;end;p:=hash[p].lh;end; 40:id_lookup:=p;end;{:259}{264:}procedure primitive(s:str_number; c:quarterword;o:halfword);var k:pool_pointer;j:0..buf_size; l:small_number; begin if s<256 then cur_val:=s+257 else begin k:=str_start[s]; l:=str_start[s+1]-k;if first+l>buf_size+1 then overflow(258,buf_size); for j:=0 to l-1 do buffer[first+j]:=str_pool[k+j]; cur_val:=id_lookup(first,l);begin str_ptr:=str_ptr-1; pool_ptr:=str_start[str_ptr];end;hash[cur_val].rh:=s;end; eqtb[cur_val].hh.b1:=1;eqtb[cur_val].hh.b0:=c;eqtb[cur_val].hh.rh:=o; end;{:264}{268:}{284:}{procedure restore_trace(p:halfword;s:str_number); begin begin_diagnostic;print_char(123);print(s);print_char(32); show_eqtb(p);print_char(125);end_diagnostic(false);end;} {:284}{1393:}procedure print_group(e:boolean);label 10; begin case cur_group of 0:begin print(1343);goto 10;end; 1,14:begin if cur_group=14 then print(1344);print(1345);end; 2,3:begin if cur_group=3 then print(1346);print(1086);end;4:print(993); 5:print(1085);6,7:begin if cur_group=7 then print(1347);print(1348);end; 8:print(402);10:print(1349);11:print(332);12:print(544); 9,13,15,16:begin print(347); if cur_group=13 then print(1350)else if cur_group=15 then print(1351) else if cur_group=16 then print(1352);end;end;print(1353); print_int(cur_level-0);print_char(41); if save_stack[save_ptr-1].int<>0 then begin if e then print(368)else print(268);print_int(save_stack[save_ptr-1].int);end;10:end; {:1393}{1394:}{procedure group_trace(e:boolean);begin begin_diagnostic; print_char(123);if e then print(1354)else print(1355);print_group(e); print_char(125);end_diagnostic(false);end;} {:1394}{1492:}function pseudo_input:boolean;var p:halfword;sz:integer; w:four_quarters;r:halfword;begin last:=first;p:=mem[pseudo_files].hh.lh; if p=0 then pseudo_input:=false else begin mem[pseudo_files].hh.lh:=mem[ p].hh.rh;sz:=mem[p].hh.lh-0; if 4*sz-3>=buf_size-last then{35:}if format_ident=0 then begin write_ln( term_out,'Buffer size exceeded!');uexit(0); end else begin cur_input.loc_field:=first;cur_input.limit_field:=last-1; overflow(258,buf_size);end{:35};last:=first; for r:=p+1 to p+sz-1 do begin w:=mem[r].qqqq;buffer[last]:=w.b0; buffer[last+1]:=w.b1;buffer[last+2]:=w.b2;buffer[last+3]:=w.b3; last:=last+4;end;if last>=max_buf_stack then max_buf_stack:=last+1; while(last>first)and(buffer[last-1]=32)do last:=last-1;free_node(p,sz); pseudo_input:=true;end;end;{:1492}{1493:}procedure pseudo_close; var p,q:halfword;begin p:=mem[pseudo_files].hh.rh; q:=mem[pseudo_files].hh.lh;begin mem[pseudo_files].hh.rh:=avail; avail:=pseudo_files;{dyn_used:=dyn_used-1;}end;pseudo_files:=p; while q<>0 do begin p:=q;q:=mem[p].hh.rh;free_node(p,mem[p].hh.lh-0); end;end;{:1493}{1510:}procedure group_warning;var i:0..max_in_open; w:boolean;begin base_ptr:=input_ptr;input_stack[base_ptr]:=cur_input; i:=in_open;w:=false; while(grp_stack[i]=cur_boundary)and(i>0)do begin{1511:}if eqtb[603227]. int>0 then begin while(input_stack[base_ptr].state_field=0)or( input_stack[base_ptr].index_field>i)do base_ptr:=base_ptr-1; if input_stack[base_ptr].name_field>17 then w:=true;end{:1511}; grp_stack[i]:=save_stack[save_ptr].hh.rh;i:=i-1;end; if w then begin print_nl(1402);print_group(true);print(1403);print_ln; if eqtb[603227].int>1 then show_context;if history=0 then history:=1; end;end;{:1510}{1512:}procedure if_warning;var i:0..max_in_open; w:boolean;begin base_ptr:=input_ptr;input_stack[base_ptr]:=cur_input; i:=in_open;w:=false; while if_stack[i]=cond_ptr do begin{1511:}if eqtb[603227].int>0 then begin while(input_stack[base_ptr].state_field=0)or(input_stack[base_ptr] .index_field>i)do base_ptr:=base_ptr-1; if input_stack[base_ptr].name_field>17 then w:=true;end{:1511}; if_stack[i]:=mem[cond_ptr].hh.rh;i:=i-1;end; if w then begin print_nl(1402);print_cmd_chr(105,cur_if); if if_line<>0 then begin print(1374);print_int(if_line);end;print(1403); print_ln;if eqtb[603227].int>1 then show_context; if history=0 then history:=1;end;end; {:1512}{1513:}procedure file_warning;var p:halfword;l:quarterword; c:quarterword;i:integer;begin p:=save_ptr;l:=cur_level;c:=cur_group; save_ptr:=cur_boundary; while grp_stack[in_open]<>save_ptr do begin cur_level:=cur_level-1; print_nl(1404);print_group(true);print(1405); cur_group:=save_stack[save_ptr].hh.b1; save_ptr:=save_stack[save_ptr].hh.rh end;save_ptr:=p;cur_level:=l; cur_group:=c;p:=cond_ptr;l:=if_limit;c:=cur_if;i:=if_line; while if_stack[in_open]<>cond_ptr do begin print_nl(1404); print_cmd_chr(105,cur_if);if if_limit=2 then print_esc(801); if if_line<>0 then begin print(1374);print_int(if_line);end;print(1405); if_line:=mem[cond_ptr+1].int;cur_if:=mem[cond_ptr].hh.b1; if_limit:=mem[cond_ptr].hh.b0;cond_ptr:=mem[cond_ptr].hh.rh;end; cond_ptr:=p;if_limit:=l;cur_if:=c;if_line:=i;print_ln; if eqtb[603227].int>1 then show_context;if history=0 then history:=1; end;{:1513}{1557:}procedure delete_sa_ref(q:halfword);label 10; var p:halfword;i:small_number;s:small_number; begin mem[q+1].hh.lh:=mem[q+1].hh.lh-1; if mem[q+1].hh.lh<>0 then goto 10; if mem[q].hh.b0<32 then if mem[q+2].int=0 then s:=3 else goto 10 else begin if mem[q].hh.b0<64 then if mem[q+1].hh.rh=0 then delete_glue_ref(0 )else goto 10 else if mem[q+1].hh.rh<>0 then goto 10;s:=2;end; repeat i:=mem[q].hh.b0 mod 16;p:=q;q:=mem[p].hh.rh;free_node(p,s); if q=0 then begin sa_root[i]:=0;goto 10;end; begin if odd(i)then mem[q+(i div 2)+1].hh.rh:=0 else mem[q+(i div 2)+1]. hh.lh:=0;mem[q].hh.b1:=mem[q].hh.b1-1;end;s:=9;until mem[q].hh.b1>0; 10:end;{:1557}{1559:}{procedure show_sa(p:halfword;s:str_number); var t:small_number;begin begin_diagnostic;print_char(123);print(s); print_char(32); if p=0 then print_char(63)else begin t:=(mem[p].hh.b0 div 16); if t<4 then print_cmd_chr(89,p)else if t=4 then begin print_esc(413); print_sa_num(p); end else if t=5 then print_cmd_chr(71,p)else print_char(63); print_char(61); if t=0 then print_int(mem[p+2].int)else if t=1 then begin print_scaled( mem[p+2].int);print(401);end else begin p:=mem[p+1].hh.rh; if t=2 then print_spec(p,401)else if t=3 then print_spec(p,339)else if t =4 then if p=0 then print(414)else begin depth_threshold:=0; breadth_max:=1;show_node_list(p); end else if t=5 then begin if p<>0 then show_token_list(mem[p].hh.rh,0, 32);end else print_char(63);end;end;print_char(125); end_diagnostic(false);end;}{:1559}{1573:}procedure sa_save(p:halfword); var q:halfword;i:quarterword; begin if cur_level<>sa_level then begin if save_ptr>max_save_stack then begin max_save_stack:=save_ptr; if max_save_stack>save_size-7 then overflow(546,save_size);end; save_stack[save_ptr].hh.b0:=4;save_stack[save_ptr].hh.b1:=sa_level; save_stack[save_ptr].hh.rh:=sa_chain;save_ptr:=save_ptr+1;sa_chain:=0; sa_level:=cur_level;end;i:=mem[p].hh.b0; if i<32 then begin if mem[p+2].int=0 then begin q:=get_node(2);i:=96; end else begin q:=get_node(3);mem[q+2].int:=mem[p+2].int;end; mem[q+1].hh.rh:=0;end else begin q:=get_node(2); mem[q+1].hh.rh:=mem[p+1].hh.rh;end;mem[q+1].hh.lh:=p;mem[q].hh.b0:=i; mem[q].hh.b1:=mem[p].hh.b1;mem[q].hh.rh:=sa_chain;sa_chain:=q; mem[p+1].hh.lh:=mem[p+1].hh.lh+1;end; {:1573}{1574:}procedure sa_destroy(p:halfword); begin if mem[p].hh.b0<64 then delete_glue_ref(mem[p+1].hh.rh)else if mem [p+1].hh.rh<>0 then if mem[p].hh.b0<80 then flush_node_list(mem[p+1].hh. rh)else delete_token_ref(mem[p+1].hh.rh);end; {:1574}{1575:}procedure sa_def(p:halfword;e:halfword); begin mem[p+1].hh.lh:=mem[p+1].hh.lh+1; if mem[p+1].hh.rh=e then begin{if eqtb[603223].int>0 then show_sa(p,548) ;}sa_destroy(p); end else begin{if eqtb[603223].int>0 then show_sa(p,549);} if mem[p].hh.b1=cur_level then sa_destroy(p)else sa_save(p); mem[p].hh.b1:=cur_level;mem[p+1].hh.rh:=e; {if eqtb[603223].int>0 then show_sa(p,550);}end;delete_sa_ref(p);end; procedure sa_w_def(p:halfword;w:integer); begin mem[p+1].hh.lh:=mem[p+1].hh.lh+1; if mem[p+2].int=w then begin{if eqtb[603223].int>0 then show_sa(p,548);} end else begin{if eqtb[603223].int>0 then show_sa(p,549);} if mem[p].hh.b1<>cur_level then sa_save(p);mem[p].hh.b1:=cur_level; mem[p+2].int:=w;{if eqtb[603223].int>0 then show_sa(p,550);}end; delete_sa_ref(p);end;{:1575}{1576:}procedure gsa_def(p:halfword; e:halfword);begin mem[p+1].hh.lh:=mem[p+1].hh.lh+1; {if eqtb[603223].int>0 then show_sa(p,551);}sa_destroy(p); mem[p].hh.b1:=1;mem[p+1].hh.rh:=e; {if eqtb[603223].int>0 then show_sa(p,550);}delete_sa_ref(p);end; procedure gsa_w_def(p:halfword;w:integer); begin mem[p+1].hh.lh:=mem[p+1].hh.lh+1; {if eqtb[603223].int>0 then show_sa(p,551);}mem[p].hh.b1:=1; mem[p+2].int:=w;{if eqtb[603223].int>0 then show_sa(p,550);} delete_sa_ref(p);end;{:1576}{1577:}procedure sa_restore;var p:halfword; begin repeat p:=mem[sa_chain+1].hh.lh; if mem[p].hh.b1=1 then begin if mem[p].hh.b0>=32 then sa_destroy( sa_chain);{if eqtb[603205].int>0 then show_sa(p,553);} end else begin if mem[p].hh.b0<32 then if mem[sa_chain].hh.b0<32 then mem[p+2].int:=mem[sa_chain+2].int else mem[p+2].int:=0 else begin sa_destroy(p);mem[p+1].hh.rh:=mem[sa_chain+1].hh.rh;end; mem[p].hh.b1:=mem[sa_chain].hh.b1; {if eqtb[603205].int>0 then show_sa(p,554);}end;delete_sa_ref(p); p:=sa_chain;sa_chain:=mem[p].hh.rh; if mem[p].hh.b0<32 then free_node(p,3)else free_node(p,2); until sa_chain=0;end; {:1577}{:268}{274:}procedure new_save_level(c:group_code); begin if save_ptr>max_save_stack then begin max_save_stack:=save_ptr; if max_save_stack>save_size-7 then overflow(546,save_size);end; if(eTeX_mode=1)then begin save_stack[save_ptr+0].int:=line; save_ptr:=save_ptr+1;end;save_stack[save_ptr].hh.b0:=3; save_stack[save_ptr].hh.b1:=cur_group; save_stack[save_ptr].hh.rh:=cur_boundary; if cur_level=65535 then overflow(547,65535);cur_boundary:=save_ptr; cur_group:=c;{if eqtb[603224].int>0 then group_trace(false);} cur_level:=cur_level+1;save_ptr:=save_ptr+1;end; {:274}{275:}procedure eq_destroy(w:memory_word);var q:halfword; begin case w.hh.b0 of 111,112,113,114:delete_token_ref(w.hh.rh); 117:delete_glue_ref(w.hh.rh);118:begin q:=w.hh.rh; if q<>0 then free_node(q,mem[q].hh.lh+mem[q].hh.lh+1);end; 119:flush_node_list(w.hh.rh); {1570:}71,89:if(w.hh.rh<0)or(w.hh.rh>19)then delete_sa_ref(w.hh.rh); {:1570}others:end;end;{:275}{276:}procedure eq_save(p:halfword; l:quarterword); begin if save_ptr>max_save_stack then begin max_save_stack:=save_ptr; if max_save_stack>save_size-7 then overflow(546,save_size);end; if l=0 then save_stack[save_ptr].hh.b0:=1 else begin save_stack[save_ptr ]:=eqtb[p];save_ptr:=save_ptr+1;save_stack[save_ptr].hh.b0:=0;end; save_stack[save_ptr].hh.b1:=l;save_stack[save_ptr].hh.rh:=p; save_ptr:=save_ptr+1;end;{:276}{277:}procedure eq_define(p:halfword; t:quarterword;e:halfword);label 10; begin if(eTeX_mode=1)and(eqtb[p].hh.b0=t)and(eqtb[p].hh.rh=e)then begin{ if eqtb[603223].int>0 then restore_trace(p,548);}eq_destroy(eqtb[p]); goto 10;end;{if eqtb[603223].int>0 then restore_trace(p,549);} if eqtb[p].hh.b1=cur_level then eq_destroy(eqtb[p])else if cur_level>1 then eq_save(p,eqtb[p].hh.b1);eqtb[p].hh.b1:=cur_level;eqtb[p].hh.b0:=t; eqtb[p].hh.rh:=e;{if eqtb[603223].int>0 then restore_trace(p,550);} 10:end;{:277}{278:}procedure eq_word_define(p:halfword;w:integer); label 10; begin if(eTeX_mode=1)and(eqtb[p].int=w)then begin{if eqtb[603223].int>0 then restore_trace(p,548);}goto 10;end; {if eqtb[603223].int>0 then restore_trace(p,549);} if xeq_level[p]<>cur_level then begin eq_save(p,xeq_level[p]); xeq_level[p]:=cur_level;end;eqtb[p].int:=w; {if eqtb[603223].int>0 then restore_trace(p,550);}10:end; {:278}{279:}procedure geq_define(p:halfword;t:quarterword;e:halfword); begin{if eqtb[603223].int>0 then restore_trace(p,551);} begin eq_destroy(eqtb[p]);eqtb[p].hh.b1:=1;eqtb[p].hh.b0:=t; eqtb[p].hh.rh:=e;end;{if eqtb[603223].int>0 then restore_trace(p,550);} end;procedure geq_word_define(p:halfword;w:integer); begin{if eqtb[603223].int>0 then restore_trace(p,551);} begin eqtb[p].int:=w;xeq_level[p]:=1;end; {if eqtb[603223].int>0 then restore_trace(p,550);}end; {:279}{280:}procedure save_for_after(t:halfword); begin if cur_level>1 then begin if save_ptr>max_save_stack then begin max_save_stack:=save_ptr; if max_save_stack>save_size-7 then overflow(546,save_size);end; save_stack[save_ptr].hh.b0:=2;save_stack[save_ptr].hh.b1:=0; save_stack[save_ptr].hh.rh:=t;save_ptr:=save_ptr+1;end;end; {:280}{281:}procedure back_input;forward;procedure unsave;label 30; var p:halfword;l:quarterword;t:halfword;a:boolean;begin a:=false; if cur_level>1 then begin cur_level:=cur_level-1; {282:}while true do begin save_ptr:=save_ptr-1; if save_stack[save_ptr].hh.b0=3 then goto 30; p:=save_stack[save_ptr].hh.rh; if save_stack[save_ptr].hh.b0=2 then{326:}begin t:=cur_tok;cur_tok:=p; if a then begin p:=get_avail;mem[p].hh.lh:=cur_tok; mem[p].hh.rh:=cur_input.loc_field;cur_input.loc_field:=p; cur_input.start_field:=p; if cur_tok<768 then if cur_tok<512 then align_state:=align_state-1 else align_state:=align_state+1;end else begin back_input;a:=(eTeX_mode=1); end;cur_tok:=t; end{:326}else if save_stack[save_ptr].hh.b0=4 then begin sa_restore; sa_chain:=p;sa_level:=save_stack[save_ptr].hh.b1; end else begin if save_stack[save_ptr].hh.b0=0 then begin l:=save_stack[ save_ptr].hh.b1;save_ptr:=save_ptr-1; end else save_stack[save_ptr]:=eqtb[600781]; {283:}if p<603168 then if eqtb[p].hh.b1=1 then begin eq_destroy( save_stack[save_ptr]);{if eqtb[603205].int>0 then restore_trace(p,553);} end else begin eq_destroy(eqtb[p]);eqtb[p]:=save_stack[save_ptr]; {if eqtb[603205].int>0 then restore_trace(p,554);} end else if xeq_level[p]<>1 then begin eqtb[p]:=save_stack[save_ptr]; xeq_level[p]:=l;{if eqtb[603205].int>0 then restore_trace(p,554);} end else begin{if eqtb[603205].int>0 then restore_trace(p,553);} end{:283};end;end;30:{if eqtb[603224].int>0 then group_trace(true);} if grp_stack[in_open]=cur_boundary then group_warning; cur_group:=save_stack[save_ptr].hh.b1; cur_boundary:=save_stack[save_ptr].hh.rh; if(eTeX_mode=1)then save_ptr:=save_ptr-1{:282};end else confusion(552); end;{:281}{288:}procedure prepare_mag; begin if(mag_set>0)and(eqtb[603185].int<>mag_set)then begin begin if interaction=3 then;print_nl(264);print(556);end; print_int(eqtb[603185].int);print(557);print_nl(558);begin help_ptr:=2; help_line[1]:=559;help_line[0]:=560;end;int_error(mag_set); geq_word_define(603185,mag_set);end; if(eqtb[603185].int<=0)or(eqtb[603185].int>32768)then begin begin if interaction=3 then;print_nl(264);print(561);end;begin help_ptr:=1; help_line[0]:=562;end;int_error(eqtb[603185].int); geq_word_define(603185,1000);end;mag_set:=eqtb[603185].int;end; {:288}{295:}procedure token_show(p:halfword); begin if p<>0 then show_token_list(mem[p].hh.rh,0,10000000);end; {:295}{296:}procedure print_meaning; begin print_cmd_chr(cur_cmd,cur_chr); if cur_cmd>=111 then begin print_char(58);print_ln;token_show(cur_chr); end else if(cur_cmd=110)and(cur_chr<5)then begin print_char(58); print_ln;token_show(cur_mark[cur_chr]);end;end; {:296}{299:}procedure show_cur_cmd_chr;var n:integer;l:integer; p:halfword;begin begin_diagnostic;print_nl(123); if cur_list.mode_field<>shown_mode then begin print_mode(cur_list. mode_field);print(576);shown_mode:=cur_list.mode_field;end; print_cmd_chr(cur_cmd,cur_chr); if eqtb[603225].int>0 then if cur_cmd>=105 then if cur_cmd<=106 then begin print(576);if cur_cmd=106 then begin print_cmd_chr(105,cur_if); print_char(32);n:=0;l:=if_line;end else begin n:=1;l:=line;end; p:=cond_ptr;while p<>0 do begin n:=n+1;p:=mem[p].hh.rh;end;print(577); print_int(n);print_char(41);if l<>0 then begin print(1374);print_int(l); end;end;print_char(125);end_diagnostic(false);end; {:299}{311:}procedure show_context;label 30;var old_setting:0..21; nn:integer;bottom_line:boolean;{315:}i:0..buf_size;j:0..buf_size; l:0..half_error_line;m:integer;n:0..error_line;p:integer;q:integer; {:315}begin base_ptr:=input_ptr;input_stack[base_ptr]:=cur_input;nn:=-1; bottom_line:=false;while true do begin cur_input:=input_stack[base_ptr]; if(cur_input.state_field<>0)then if(cur_input.name_field>19)or(base_ptr= 0)then bottom_line:=true; if(base_ptr=input_ptr)or bottom_line or(nn0)or(cur_input. index_field<>3)or(cur_input.loc_field<>0)then begin tally:=0; old_setting:=selector; if cur_input.state_field<>0 then begin{313:}if cur_input.name_field<=17 then if(cur_input.name_field=0)then if base_ptr=0 then print_nl(583)else print_nl(584)else begin print_nl(585); if cur_input.name_field=17 then print_char(42)else print_int(cur_input. name_field-1);print_char(62);end else begin print_nl(586); if cur_input.index_field=in_open then print_int(line)else print_int( line_stack[cur_input.index_field+1]);end;print_char(32){:313}; {318:}begin l:=tally;tally:=0;selector:=20;trick_count:=1000000;end; if buffer[cur_input.limit_field]=eqtb[603216].int then j:=cur_input. limit_field else j:=cur_input.limit_field+1; if j>0 then for i:=cur_input.start_field to j-1 do begin if i=cur_input. loc_field then begin first_count:=tally; trick_count:=tally+1+error_line-half_error_line; if trick_counterror_line then print(279){:317};nn:=nn+1;end; end{:312}else if nn=eqtb[603222].int then begin print_nl(279);nn:=nn+1; end;if bottom_line then goto 30;base_ptr:=base_ptr-1;end; 30:cur_input:=input_stack[input_ptr];end; {:311}{323:}procedure begin_token_list(p:halfword;t:quarterword); begin begin if input_ptr>max_in_stack then begin max_in_stack:=input_ptr ;if input_ptr=stack_size then overflow(603,stack_size);end; input_stack[input_ptr]:=cur_input;input_ptr:=input_ptr+1;end; cur_input.state_field:=0;cur_input.start_field:=p; cur_input.index_field:=t; if t>=5 then begin mem[p].hh.lh:=mem[p].hh.lh+1; if t=5 then cur_input.limit_field:=param_ptr else begin cur_input. loc_field:=mem[p].hh.rh; if eqtb[603198].int>1 then begin begin_diagnostic;print_nl(340); case t of 14:print_esc(355);16:print_esc(604); others:print_cmd_chr(72,t+601307)end;print(564);token_show(p); end_diagnostic(false);end;end;end else cur_input.loc_field:=p;end; {:323}{324:}procedure end_token_list; begin if cur_input.index_field>=3 then begin if cur_input.index_field<=4 then flush_list(cur_input.start_field)else begin delete_token_ref( cur_input.start_field); if cur_input.index_field=5 then while param_ptr>cur_input.limit_field do begin param_ptr:=param_ptr-1;flush_list(param_stack[param_ptr]);end;end; end else if cur_input.index_field=1 then if align_state>500000 then align_state:=0 else fatal_error(605);begin input_ptr:=input_ptr-1; cur_input:=input_stack[input_ptr];end; begin if interrupt<>0 then pause_for_instructions;end;end; {:324}{325:}procedure back_input;var p:halfword; begin while(cur_input.state_field=0)and(cur_input.loc_field=0)and( cur_input.index_field<>2)do end_token_list;p:=get_avail; mem[p].hh.lh:=cur_tok; if cur_tok<768 then if cur_tok<512 then align_state:=align_state-1 else align_state:=align_state+1; begin if input_ptr>max_in_stack then begin max_in_stack:=input_ptr; if input_ptr=stack_size then overflow(603,stack_size);end; input_stack[input_ptr]:=cur_input;input_ptr:=input_ptr+1;end; cur_input.state_field:=0;cur_input.start_field:=p; cur_input.index_field:=3;cur_input.loc_field:=p;end; {:325}{327:}procedure back_error;begin OK_to_interrupt:=false; back_input;OK_to_interrupt:=true;error;end;procedure ins_error; begin OK_to_interrupt:=false;back_input;cur_input.index_field:=4; OK_to_interrupt:=true;error;end; {:327}{328:}procedure begin_file_reading; begin if in_open=max_in_open then overflow(606,max_in_open); if first=buf_size then overflow(258,buf_size);in_open:=in_open+1; begin if input_ptr>max_in_stack then begin max_in_stack:=input_ptr; if input_ptr=stack_size then overflow(603,stack_size);end; input_stack[input_ptr]:=cur_input;input_ptr:=input_ptr+1;end; cur_input.index_field:=in_open;eof_seen[cur_input.index_field]:=false; grp_stack[cur_input.index_field]:=cur_boundary; if_stack[cur_input.index_field]:=cond_ptr; line_stack[cur_input.index_field]:=line;cur_input.start_field:=first; cur_input.state_field:=1;cur_input.name_field:=0;end; {:328}{329:}procedure end_file_reading; begin first:=cur_input.start_field; line:=line_stack[cur_input.index_field]; if(cur_input.name_field=18)or(cur_input.name_field=19)then pseudo_close else if cur_input.name_field>17 then a_close(input_file[cur_input. index_field]);begin input_ptr:=input_ptr-1; cur_input:=input_stack[input_ptr];end;in_open:=in_open-1;end; {:329}{330:}procedure clear_for_error_prompt; begin while(cur_input.state_field<>0)and(cur_input.name_field=0)and( input_ptr>0)and(cur_input.loc_field>cur_input.limit_field)do end_file_reading;print_ln;break_in(term_in,true);end; {:330}{336:}procedure check_outer_validity;var p:halfword;q:halfword; begin if scanner_status<>0 then begin deletions_allowed:=false; {337:}if cur_cs<>0 then begin if(cur_input.state_field=0)or(cur_input. name_field<1)or(cur_input.name_field>17)then begin p:=get_avail; mem[p].hh.lh:=4095+cur_cs;begin_token_list(p,3);end;cur_cmd:=10; cur_chr:=32;end{:337};if scanner_status>1 then{338:}begin runaway; if cur_cs=0 then begin if interaction=3 then;print_nl(264);print(614); end else begin cur_cs:=0;begin if interaction=3 then;print_nl(264); print(615);end;end;print(616);{339:}p:=get_avail; case scanner_status of 2:begin print(579);mem[p].hh.lh:=637;end; 3:begin print(622);mem[p].hh.lh:=par_token;long_state:=113;end; 4:begin print(581);mem[p].hh.lh:=637;q:=p;p:=get_avail;mem[p].hh.rh:=q; mem[p].hh.lh:=604610;align_state:=-1000000;end;5:begin print(582); mem[p].hh.lh:=637;end;end;begin_token_list(p,4){:339};print(617); sprint_cs(warning_index);begin help_ptr:=4;help_line[3]:=618; help_line[2]:=619;help_line[1]:=620;help_line[0]:=621;end;error; end{:338}else begin begin if interaction=3 then;print_nl(264); print(608);end;print_cmd_chr(105,cur_if);print(609); print_int(skip_line);begin help_ptr:=3;help_line[2]:=610; help_line[1]:=611;help_line[0]:=612;end; if cur_cs<>0 then cur_cs:=0 else help_line[2]:=613;cur_tok:=604613; ins_error;end;deletions_allowed:=true;end;end; {:336}{340:}procedure firm_up_the_line;forward; {:340}{341:}procedure get_next;label 20,25,21,26,40,10; var k:0..buf_size;t:halfword;cat:0..15;c,cc:ASCII_code;d:2..3; begin 20:cur_cs:=0; if cur_input.state_field<>0 then{343:}begin 25:if cur_input.loc_field<= cur_input.limit_field then begin cur_chr:=buffer[cur_input.loc_field]; cur_input.loc_field:=cur_input.loc_field+1; 21:cur_cmd:=eqtb[601888+cur_chr].hh.rh; {344:}case cur_input.state_field+cur_cmd of{345:}10,26,42,27,43{:345}: goto 25; 1,17,33:{354:}begin if cur_input.loc_field>cur_input.limit_field then cur_cs:=513 else begin 26:k:=cur_input.loc_field;cur_chr:=buffer[k]; cat:=eqtb[601888+cur_chr].hh.rh;k:=k+1; if cat=11 then cur_input.state_field:=17 else if cat=10 then cur_input. state_field:=17 else cur_input.state_field:=1; if(cat=11)and(k<=cur_input.limit_field)then{356:}begin repeat cur_chr:= buffer[k];cat:=eqtb[601888+cur_chr].hh.rh;k:=k+1; until(cat<>11)or(k>cur_input.limit_field); {355:}begin if buffer[k]=cur_chr then if cat=7 then if k=48)and(c<=57))or((c>=97)and(c<=102)))then if k+2<=cur_input. limit_field then begin cc:=buffer[k+2]; if(((cc>=48)and(cc<=57))or((cc>=97)and(cc<=102)))then d:=d+1;end; if d>2 then begin if c<=57 then cur_chr:=c-48 else cur_chr:=c-87; if cc<=57 then cur_chr:=16*cur_chr+cc-48 else cur_chr:=16*cur_chr+cc-87; buffer[k-1]:=cur_chr; end else if c<64 then buffer[k-1]:=c+64 else buffer[k-1]:=c-64; cur_input.limit_field:=cur_input.limit_field-d;first:=first-d; while k<=cur_input.limit_field do begin buffer[k]:=buffer[k+d];k:=k+1; end;goto 26;end;end;end{:355};if cat<>11 then k:=k-1; if k>cur_input.loc_field+1 then begin cur_cs:=id_lookup(cur_input. loc_field,k-cur_input.loc_field);cur_input.loc_field:=k;goto 40;end; end{:356}else{355:}begin if buffer[k]=cur_chr then if cat=7 then if k< cur_input.limit_field then begin c:=buffer[k+1]; if c<128 then begin d:=2; if(((c>=48)and(c<=57))or((c>=97)and(c<=102)))then if k+2<=cur_input. limit_field then begin cc:=buffer[k+2]; if(((cc>=48)and(cc<=57))or((cc>=97)and(cc<=102)))then d:=d+1;end; if d>2 then begin if c<=57 then cur_chr:=c-48 else cur_chr:=c-87; if cc<=57 then cur_chr:=16*cur_chr+cc-48 else cur_chr:=16*cur_chr+cc-87; buffer[k-1]:=cur_chr; end else if c<64 then buffer[k-1]:=c+64 else buffer[k-1]:=c-64; cur_input.limit_field:=cur_input.limit_field-d;first:=first-d; while k<=cur_input.limit_field do begin buffer[k]:=buffer[k+d];k:=k+1; end;goto 26;end;end;end{:355};cur_cs:=257+buffer[cur_input.loc_field]; cur_input.loc_field:=cur_input.loc_field+1;end; 40:cur_cmd:=eqtb[cur_cs].hh.b0;cur_chr:=eqtb[cur_cs].hh.rh; if cur_cmd>=113 then check_outer_validity;end{:354}; 14,30,46:{353:}begin cur_cs:=cur_chr+1;cur_cmd:=eqtb[cur_cs].hh.b0; cur_chr:=eqtb[cur_cs].hh.rh;cur_input.state_field:=1; if cur_cmd>=113 then check_outer_validity;end{:353}; 8,24,40:{352:}begin if cur_chr=buffer[cur_input.loc_field]then if cur_input.loc_field=48)and(c<=57))or((c>=97)and(c<=102)))then if cur_input.loc_field <=cur_input.limit_field then begin cc:=buffer[cur_input.loc_field]; if(((cc>=48)and(cc<=57))or((cc>=97)and(cc<=102)))then begin cur_input. loc_field:=cur_input.loc_field+1; if c<=57 then cur_chr:=c-48 else cur_chr:=c-87; if cc<=57 then cur_chr:=16*cur_chr+cc-48 else cur_chr:=16*cur_chr+cc-87; goto 21;end;end;if c<64 then cur_chr:=c+64 else cur_chr:=c-64;goto 21; end;end;cur_input.state_field:=1;end{:352}; 16,32,48:{346:}begin begin if interaction=3 then;print_nl(264); print(623);end;begin help_ptr:=2;help_line[1]:=624;help_line[0]:=625; end;deletions_allowed:=false;error;deletions_allowed:=true;goto 20; end{:346};{347:}11:{349:}begin cur_input.state_field:=17;cur_chr:=32; end{:349};6:{348:}begin cur_input.loc_field:=cur_input.limit_field+1; cur_cmd:=10;cur_chr:=32;end{:348}; 22,15,31,47:{350:}begin cur_input.loc_field:=cur_input.limit_field+1; goto 25;end{:350}; 38:{351:}begin cur_input.loc_field:=cur_input.limit_field+1; cur_cs:=par_loc;cur_cmd:=eqtb[cur_cs].hh.b0;cur_chr:=eqtb[cur_cs].hh.rh; if cur_cmd>=113 then check_outer_validity;end{:351}; 2:align_state:=align_state+1;18,34:begin cur_input.state_field:=1; align_state:=align_state+1;end;3:align_state:=align_state-1; 19,35:begin cur_input.state_field:=1;align_state:=align_state-1;end; 20,21,23,25,28,29,36,37,39,41,44,45:cur_input.state_field:=1; {:347}others:end{:344};end else begin cur_input.state_field:=33; {360:}if cur_input.name_field>17 then{362:}begin line:=line+1; first:=cur_input.start_field; if not force_eof then if cur_input.name_field<=19 then begin if pseudo_input then firm_up_the_line else if(eqtb[601322].hh.rh<>0)and not eof_seen[cur_input.index_field]then begin cur_input.limit_field:=first-1 ;eof_seen[cur_input.index_field]:=true; begin_token_list(eqtb[601322].hh.rh,15);goto 20; end else force_eof:=true; end else begin if input_ln(input_file[cur_input.index_field],true)then firm_up_the_line else if(eqtb[601322].hh.rh<>0)and not eof_seen[ cur_input.index_field]then begin cur_input.limit_field:=first-1; eof_seen[cur_input.index_field]:=true; begin_token_list(eqtb[601322].hh.rh,15);goto 20; end else force_eof:=true;end; if force_eof then begin if eqtb[603227].int>0 then if(grp_stack[in_open] <>cur_boundary)or(if_stack[in_open]<>cond_ptr)then file_warning; if cur_input.name_field>=19 then begin print_char(41); open_parens:=open_parens-1;break(term_out);end;force_eof:=false; end_file_reading;check_outer_validity;goto 20;end; if(eqtb[603216].int<0)or(eqtb[603216].int>255)then cur_input.limit_field :=cur_input.limit_field-1 else buffer[cur_input.limit_field]:=eqtb[ 603216].int;first:=cur_input.limit_field+1; cur_input.loc_field:=cur_input.start_field; end{:362}else begin if not(cur_input.name_field=0)then begin cur_cmd:=0; cur_chr:=0;goto 10;end;if input_ptr>0 then begin end_file_reading; goto 20;end;if selector<18 then open_log_file; if interaction>1 then begin if(eqtb[603216].int<0)or(eqtb[603216].int> 255)then cur_input.limit_field:=cur_input.limit_field+1; if cur_input.limit_field=cur_input.start_field then print_nl(626); print_ln;first:=cur_input.start_field;begin;print(42);term_input;end; cur_input.limit_field:=last; if(eqtb[603216].int<0)or(eqtb[603216].int>255)then cur_input.limit_field :=cur_input.limit_field-1 else buffer[cur_input.limit_field]:=eqtb[ 603216].int;first:=cur_input.limit_field+1; cur_input.loc_field:=cur_input.start_field;end else fatal_error(627); end{:360};begin if interrupt<>0 then pause_for_instructions;end;goto 25; end; end{:343}else{357:}if cur_input.loc_field<>0 then begin t:=mem[cur_input .loc_field].hh.lh;cur_input.loc_field:=mem[cur_input.loc_field].hh.rh; if t>=4095 then begin cur_cs:=t-4095;cur_cmd:=eqtb[cur_cs].hh.b0; cur_chr:=eqtb[cur_cs].hh.rh; if cur_cmd>=113 then if cur_cmd=116 then{358:}begin cur_cs:=mem[ cur_input.loc_field].hh.lh-4095;cur_input.loc_field:=0; cur_cmd:=eqtb[cur_cs].hh.b0;cur_chr:=eqtb[cur_cs].hh.rh; if cur_cmd>100 then begin cur_cmd:=0;cur_chr:=257;end; end{:358}else check_outer_validity;end else begin cur_cmd:=t div 256; cur_chr:=t mod 256;case cur_cmd of 1:align_state:=align_state+1; 2:align_state:=align_state-1; 5:{359:}begin begin_token_list(param_stack[cur_input.limit_field+cur_chr -1],0);goto 20;end{:359};others:end;end;end else begin end_token_list; goto 20;end{:357}; {342:}if cur_cmd<=5 then if cur_cmd>=4 then if align_state=0 then{790:} begin if(scanner_status=4)or(cur_align=0)then fatal_error(605); cur_cmd:=mem[cur_align+5].hh.lh;mem[cur_align+5].hh.lh:=cur_chr; if cur_cmd=63 then begin_token_list(7999990,2)else begin_token_list(mem[ cur_align+2].int,2);align_state:=1000000;goto 20;end{:790}{:342};10:end; {:341}{363:}procedure firm_up_the_line;var k:0..buf_size; begin cur_input.limit_field:=last; if eqtb[603196].int>0 then if interaction>1 then begin;print_ln; if cur_input.start_fieldfirst then begin for k:=first to last-1 do buffer[k+cur_input. start_field-first]:=buffer[k]; cur_input.limit_field:=cur_input.start_field+last-first;end;end;end; {:363}{365:}procedure get_token;begin no_new_control_sequence:=false; get_next;no_new_control_sequence:=true; if cur_cs=0 then cur_tok:=(cur_cmd*256)+cur_chr else cur_tok:=4095+ cur_cs;end;{:365}{366:}{389:}procedure macro_call;label 10,22,30,31,40; var r:halfword;p:halfword;q:halfword;s:halfword;t:halfword;u,v:halfword; rbrace_ptr:halfword;n:small_number;unbalance:halfword;m:halfword; ref_count:halfword;save_scanner_status:small_number; save_warning_index:halfword;match_chr:ASCII_code; begin save_scanner_status:=scanner_status; save_warning_index:=warning_index;warning_index:=cur_cs; ref_count:=cur_chr;r:=mem[ref_count].hh.rh;n:=0; if eqtb[603198].int>0 then{401:}begin begin_diagnostic;print_ln; print_cs(warning_index);token_show(ref_count);end_diagnostic(false); end{:401};if mem[r].hh.lh=3585 then r:=mem[r].hh.rh; if mem[r].hh.lh<>3584 then{391:}begin scanner_status:=3;unbalance:=0; long_state:=eqtb[cur_cs].hh.b0; if long_state>=113 then long_state:=long_state-2; repeat mem[7999997].hh.rh:=0; if(mem[r].hh.lh>3583)or(mem[r].hh.lh<3328)then s:=0 else begin match_chr :=mem[r].hh.lh-3328;s:=mem[r].hh.rh;r:=s;p:=7999997;m:=0;end; {392:}22:get_token; if cur_tok=mem[r].hh.lh then{394:}begin r:=mem[r].hh.rh; if(mem[r].hh.lh>=3328)and(mem[r].hh.lh<=3584)then begin if cur_tok<512 then align_state:=align_state-1;goto 40;end else goto 22;end{:394}; {397:}if s<>r then if s=0 then{398:}begin begin if interaction=3 then; print_nl(264);print(660);end;sprint_cs(warning_index);print(661); begin help_ptr:=4;help_line[3]:=662;help_line[2]:=663;help_line[1]:=664; help_line[0]:=665;end;error;goto 10;end{:398}else begin t:=s; repeat begin q:=get_avail;mem[p].hh.rh:=q;mem[q].hh.lh:=mem[t].hh.lh; p:=q;end;m:=m+1;u:=mem[t].hh.rh;v:=s; while true do begin if u=r then if cur_tok<>mem[v].hh.lh then goto 30 else begin r:=mem[v].hh.rh;goto 22;end; if mem[u].hh.lh<>mem[v].hh.lh then goto 30;u:=mem[u].hh.rh; v:=mem[v].hh.rh;end;30:t:=mem[t].hh.rh;until t=r;r:=s;end{:397}; if cur_tok=par_token then if long_state<>112 then{396:}begin if long_state=111 then begin runaway;begin if interaction=3 then; print_nl(264);print(655);end;sprint_cs(warning_index);print(656); begin help_ptr:=3;help_line[2]:=657;help_line[1]:=658;help_line[0]:=659; end;back_error;end;pstack[n]:=mem[7999997].hh.rh; align_state:=align_state-unbalance; for m:=0 to n do flush_list(pstack[m]);goto 10;end{:396}; if cur_tok<768 then if cur_tok<512 then{399:}begin unbalance:=1; while true do begin begin begin q:=avail; if q=0 then q:=get_avail else begin avail:=mem[q].hh.rh;mem[q].hh.rh:=0; {dyn_used:=dyn_used+1;}end;end;mem[p].hh.rh:=q;mem[q].hh.lh:=cur_tok; p:=q;end;get_token; if cur_tok=par_token then if long_state<>112 then{396:}begin if long_state=111 then begin runaway;begin if interaction=3 then; print_nl(264);print(655);end;sprint_cs(warning_index);print(656); begin help_ptr:=3;help_line[2]:=657;help_line[1]:=658;help_line[0]:=659; end;back_error;end;pstack[n]:=mem[7999997].hh.rh; align_state:=align_state-unbalance; for m:=0 to n do flush_list(pstack[m]);goto 10;end{:396}; if cur_tok<768 then if cur_tok<512 then unbalance:=unbalance+1 else begin unbalance:=unbalance-1;if unbalance=0 then goto 31;end;end; 31:rbrace_ptr:=p;begin q:=get_avail;mem[p].hh.rh:=q; mem[q].hh.lh:=cur_tok;p:=q;end;end{:399}else{395:}begin back_input; begin if interaction=3 then;print_nl(264);print(647);end; sprint_cs(warning_index);print(648);begin help_ptr:=6;help_line[5]:=649; help_line[4]:=650;help_line[3]:=651;help_line[2]:=652;help_line[1]:=653; help_line[0]:=654;end;align_state:=align_state+1;long_state:=111; cur_tok:=par_token;ins_error;goto 22; end{:395}else{393:}begin if cur_tok=2592 then if mem[r].hh.lh<=3584 then if mem[r].hh.lh>=3328 then goto 22;begin q:=get_avail;mem[p].hh.rh:=q; mem[q].hh.lh:=cur_tok;p:=q;end;end{:393};m:=m+1; if mem[r].hh.lh>3584 then goto 22;if mem[r].hh.lh<3328 then goto 22; 40:if s<>0 then{400:}begin if(m=1)and(mem[p].hh.lh<768)then begin mem[ rbrace_ptr].hh.rh:=0;begin mem[p].hh.rh:=avail;avail:=p; {dyn_used:=dyn_used-1;}end;p:=mem[7999997].hh.rh; pstack[n]:=mem[p].hh.rh;begin mem[p].hh.rh:=avail;avail:=p; {dyn_used:=dyn_used-1;}end;end else pstack[n]:=mem[7999997].hh.rh; n:=n+1;if eqtb[603198].int>0 then begin begin_diagnostic; print_nl(match_chr);print_int(n);print(666); show_token_list(pstack[n-1],0,1000);end_diagnostic(false);end; end{:400}{:392};until mem[r].hh.lh=3584;end{:391}; {390:}while(cur_input.state_field=0)and(cur_input.loc_field=0)and( cur_input.index_field<>2)do end_token_list; begin_token_list(ref_count,5);cur_input.name_field:=warning_index; cur_input.loc_field:=mem[r].hh.rh; if n>0 then begin if param_ptr+n>max_param_stack then begin max_param_stack:=param_ptr+n; if max_param_stack>param_size then overflow(646,param_size);end; for m:=0 to n-1 do param_stack[param_ptr+m]:=pstack[m]; param_ptr:=param_ptr+n;end{:390};10:scanner_status:=save_scanner_status; warning_index:=save_warning_index;end; {:389}{379:}procedure insert_relax;begin cur_tok:=4095+cur_cs; back_input;cur_tok:=604616;back_input;cur_input.index_field:=4;end; {:379}{1488:}procedure pseudo_start;forward;procedure directjs_start; forward;{:1488}{1546:}procedure scan_register_num;forward; {:1546}{1551:}procedure new_index(i:quarterword;q:halfword); var k:small_number;begin cur_ptr:=get_node(9);mem[cur_ptr].hh.b0:=i; mem[cur_ptr].hh.b1:=0;mem[cur_ptr].hh.rh:=q; for k:=1 to 8 do mem[cur_ptr+k]:=sa_null;end; {:1551}{1555:}procedure find_sa_element(t:small_number;n:halfword; w:boolean);label 45,46,47,48,49,10;var q:halfword;i:small_number; begin cur_ptr:=sa_root[t]; begin if cur_ptr=0 then if w then goto 45 else goto 10;end;q:=cur_ptr; i:=n div 4096; if odd(i)then cur_ptr:=mem[q+(i div 2)+1].hh.rh else cur_ptr:=mem[q+(i div 2)+1].hh.lh;begin if cur_ptr=0 then if w then goto 46 else goto 10; end;q:=cur_ptr;i:=(n div 256)mod 16; if odd(i)then cur_ptr:=mem[q+(i div 2)+1].hh.rh else cur_ptr:=mem[q+(i div 2)+1].hh.lh;begin if cur_ptr=0 then if w then goto 47 else goto 10; end;q:=cur_ptr;i:=(n div 16)mod 16; if odd(i)then cur_ptr:=mem[q+(i div 2)+1].hh.rh else cur_ptr:=mem[q+(i div 2)+1].hh.lh;begin if cur_ptr=0 then if w then goto 48 else goto 10; end;q:=cur_ptr;i:=n mod 16; if odd(i)then cur_ptr:=mem[q+(i div 2)+1].hh.rh else cur_ptr:=mem[q+(i div 2)+1].hh.lh;if(cur_ptr=0)and w then goto 49;goto 10; 45:new_index(t,0);sa_root[t]:=cur_ptr;q:=cur_ptr;i:=n div 4096; 46:new_index(i,q); begin if odd(i)then mem[q+(i div 2)+1].hh.rh:=cur_ptr else mem[q+(i div 2)+1].hh.lh:=cur_ptr;mem[q].hh.b1:=mem[q].hh.b1+1;end;q:=cur_ptr; i:=(n div 256)mod 16;47:new_index(i,q); begin if odd(i)then mem[q+(i div 2)+1].hh.rh:=cur_ptr else mem[q+(i div 2)+1].hh.lh:=cur_ptr;mem[q].hh.b1:=mem[q].hh.b1+1;end;q:=cur_ptr; i:=(n div 16)mod 16;48:new_index(i,q); begin if odd(i)then mem[q+(i div 2)+1].hh.rh:=cur_ptr else mem[q+(i div 2)+1].hh.lh:=cur_ptr;mem[q].hh.b1:=mem[q].hh.b1+1;end;q:=cur_ptr; i:=n mod 16;49:{1556:}if t=6 then begin cur_ptr:=get_node(4); mem[cur_ptr+1]:=sa_null;mem[cur_ptr+2]:=sa_null;mem[cur_ptr+3]:=sa_null; end else begin if t<=1 then begin cur_ptr:=get_node(3); mem[cur_ptr+2].int:=0;mem[cur_ptr+1].hh.rh:=n; end else begin cur_ptr:=get_node(2); if t<=3 then begin mem[cur_ptr+1].hh.rh:=0;mem[0].hh.rh:=mem[0].hh.rh+1; end else mem[cur_ptr+1].hh.rh:=0;end;mem[cur_ptr+1].hh.lh:=0;end; mem[cur_ptr].hh.b0:=16*t+i;mem[cur_ptr].hh.b1:=1{:1556}; mem[cur_ptr].hh.rh:=q; begin if odd(i)then mem[q+(i div 2)+1].hh.rh:=cur_ptr else mem[q+(i div 2)+1].hh.lh:=cur_ptr;mem[q].hh.b1:=mem[q].hh.b1+1;end;10:end; {:1555}procedure pass_text;forward;procedure start_input;forward; procedure conditional;forward;procedure get_x_token;forward; procedure conv_toks;forward;procedure do_filesize;forward; procedure pack_file_name(n,a,e:str_number);forward; procedure compare_strings;forward;procedure scan_pdf_ext_toks;forward; procedure ins_the_toks;forward;procedure expand;label 21;var t:halfword; p,q,r:halfword;j:0..buf_size;cv_backup:integer; cvl_backup,radix_backup,co_backup:small_number;backup_backup:halfword; save_scanner_status:small_number;begin cv_backup:=cur_val; cvl_backup:=cur_val_level;radix_backup:=radix;co_backup:=cur_order; backup_backup:=mem[7999987].hh.rh; 21:if cur_cmd<111 then{367:}begin if eqtb[603204].int>1 then show_cur_cmd_chr;case cur_cmd of 110:{386:}begin t:=cur_chr mod 5; if cur_chr>=5 then scan_register_num else cur_val:=0; if cur_val=0 then cur_ptr:=cur_mark[t]else{1560:}begin find_sa_element(6 ,cur_val,false); if cur_ptr<>0 then if odd(t)then cur_ptr:=mem[cur_ptr+(t div 2)+1].hh.rh else cur_ptr:=mem[cur_ptr+(t div 2)+1].hh.lh;end{:1560}; if cur_ptr<>0 then begin_token_list(cur_ptr,14);end{:386}; 102:if cur_chr=0 then{368:}begin get_token;t:=cur_tok;get_token; if cur_cmd>100 then expand else back_input;cur_tok:=t;back_input; end{:368}else{1501:}begin get_token; if(cur_cmd=105)and(cur_chr<>16)then begin cur_chr:=cur_chr+32;goto 21; end;begin if interaction=3 then;print_nl(264);print(695);end; print_esc(798);print(1401);print_cmd_chr(cur_cmd,cur_chr); print_char(39);begin help_ptr:=1;help_line[0]:=625;end;back_error; end{:1501};103:{369:}begin save_scanner_status:=scanner_status; scanner_status:=0;get_token;scanner_status:=save_scanner_status; t:=cur_tok;back_input;if t>=4095 then begin p:=get_avail; mem[p].hh.lh:=604618;mem[p].hh.rh:=cur_input.loc_field; cur_input.start_field:=p;cur_input.loc_field:=p;end;end{:369}; 107:{372:}begin r:=get_avail;p:=r;repeat get_x_token; if cur_cs=0 then begin q:=get_avail;mem[p].hh.rh:=q; mem[q].hh.lh:=cur_tok;p:=q;end;until cur_cs<>0; if cur_cmd<>67 then{373:}begin begin if interaction=3 then; print_nl(264);print(635);end;print_esc(509);print(636); begin help_ptr:=2;help_line[1]:=637;help_line[0]:=638;end;back_error; end{:373};{374:}j:=first;p:=mem[r].hh.rh; while p<>0 do begin if j>=max_buf_stack then begin max_buf_stack:=j+1; if max_buf_stack=buf_size then overflow(258,buf_size);end; buffer[j]:=mem[p].hh.lh mod 256;j:=j+1;p:=mem[p].hh.rh;end; if j>first+1 then begin no_new_control_sequence:=false; cur_cs:=id_lookup(first,j-first);no_new_control_sequence:=true; end else if j=first then cur_cs:=513 else cur_cs:=257+buffer[first] {:374};flush_list(r); if eqtb[cur_cs].hh.b0=101 then begin eq_define(cur_cs,0,256);end; cur_tok:=cur_cs+4095;back_input;end{:372};108:conv_toks; 109:ins_the_toks;105:conditional; 106:{511:}begin if eqtb[603225].int>0 then if eqtb[603204].int<=1 then show_cur_cmd_chr; if cur_chr>if_limit then if if_limit=1 then insert_relax else begin begin if interaction=3 then;print_nl(264);print(802);end; print_cmd_chr(106,cur_chr);begin help_ptr:=1;help_line[0]:=803;end; error;end else begin while cur_chr<>2 do pass_text; {497:}begin if if_stack[in_open]=cond_ptr then if_warning;p:=cond_ptr; if_line:=mem[p+1].int;cur_if:=mem[p].hh.b1;if_limit:=mem[p].hh.b0; cond_ptr:=mem[p].hh.rh;free_node(p,2);end{:497};end;end{:511}; 104:{378:}if cur_chr=1 then force_eof:=true{1485:}else if cur_chr=2 then pseudo_start else if cur_chr=3 then directjs_start{:1485}else if name_in_progress then insert_relax else start_input{:378}; others:{370:}begin begin if interaction=3 then;print_nl(264);print(629); end;begin help_ptr:=5;help_line[4]:=630;help_line[3]:=631; help_line[2]:=632;help_line[1]:=633;help_line[0]:=634;end;error; end{:370}end; end{:367}else if cur_cmd<115 then macro_call else{375:}begin cur_tok:= 604615;back_input;end{:375};cur_val:=cv_backup; cur_val_level:=cvl_backup;radix:=radix_backup;cur_order:=co_backup; mem[7999987].hh.rh:=backup_backup;end;{:366}{380:}procedure get_x_token; label 20,30;begin 20:get_next;if cur_cmd<=100 then goto 30; if cur_cmd>=111 then if cur_cmd<115 then macro_call else begin cur_cs:= 600520;cur_cmd:=9;goto 30;end else expand;goto 20; 30:if cur_cs=0 then cur_tok:=(cur_cmd*256)+cur_chr else cur_tok:=4095+ cur_cs;end;{:380}{381:}procedure x_token; begin while cur_cmd>100 do begin expand;get_next;end; if cur_cs=0 then cur_tok:=(cur_cmd*256)+cur_chr else cur_tok:=4095+ cur_cs;end;{:381}{403:}procedure scan_left_brace; begin{404:}repeat get_x_token;until(cur_cmd<>10)and(cur_cmd<>0){:404}; if cur_cmd<>1 then begin begin if interaction=3 then;print_nl(264); print(667);end;begin help_ptr:=4;help_line[3]:=668;help_line[2]:=669; help_line[1]:=670;help_line[0]:=671;end;back_error;cur_tok:=379; cur_cmd:=1;cur_chr:=123;align_state:=align_state+1;end;end; {:403}{405:}procedure scan_optional_equals; begin{406:}repeat get_x_token;until cur_cmd<>10{:406}; if cur_tok<>3133 then back_input;end; {:405}{407:}function scan_keyword(s:str_number):boolean;label 10; var p:halfword;q:halfword;k:pool_pointer;begin p:=7999987; mem[p].hh.rh:=0;k:=str_start[s]; while k10)or(p<>7999987)then begin back_input; if p<>7999987 then begin_token_list(mem[7999987].hh.rh,3); scan_keyword:=false;goto 10;end;end;flush_list(mem[7999987].hh.rh); scan_keyword:=true;10:end;{:407}{408:}procedure mu_error; begin begin if interaction=3 then;print_nl(264);print(672);end; begin help_ptr:=1;help_line[0]:=673;end;error;end; {:408}{409:}procedure scan_int;forward; {433:}procedure scan_eight_bit_int;begin scan_int; if(cur_val<0)or(cur_val>255)then begin begin if interaction=3 then; print_nl(264);print(697);end;begin help_ptr:=2;help_line[1]:=698; help_line[0]:=699;end;int_error(cur_val);cur_val:=0;end;end; {:433}{434:}procedure scan_char_num;begin scan_int; if(cur_val<0)or(cur_val>255)then begin begin if interaction=3 then; print_nl(264);print(700);end;begin help_ptr:=2;help_line[1]:=701; help_line[0]:=699;end;int_error(cur_val);cur_val:=0;end;end; {:434}{435:}procedure scan_four_bit_int;begin scan_int; if(cur_val<0)or(cur_val>15)then begin begin if interaction=3 then; print_nl(264);print(702);end;begin help_ptr:=2;help_line[1]:=703; help_line[0]:=699;end;int_error(cur_val);cur_val:=0;end;end; {:435}{436:}procedure scan_fifteen_bit_int;begin scan_int; if(cur_val<0)or(cur_val>32767)then begin begin if interaction=3 then; print_nl(264);print(704);end;begin help_ptr:=2;help_line[1]:=705; help_line[0]:=699;end;int_error(cur_val);cur_val:=0;end;end; {:436}{437:}procedure scan_twenty_seven_bit_int;begin scan_int; if(cur_val<0)or(cur_val>134217727)then begin begin if interaction=3 then ;print_nl(264);print(706);end;begin help_ptr:=2;help_line[1]:=707; help_line[0]:=699;end;int_error(cur_val);cur_val:=0;end;end; {:437}{1547:}procedure scan_register_num;begin scan_int; if(cur_val<0)or(cur_val>max_reg_num)then begin begin if interaction=3 then;print_nl(264);print(697);end;begin help_ptr:=2; help_line[1]:=max_reg_help_line;help_line[0]:=699;end; int_error(cur_val);cur_val:=0;end;end; {:1547}{1414:}procedure scan_general_text;forward; {:1414}{1508:}procedure get_x_or_protected;label 10; begin while true do begin get_token;if cur_cmd<=100 then goto 10; if(cur_cmd>=111)and(cur_cmd<115)then if mem[mem[cur_chr].hh.rh].hh.lh= 3585 then goto 10;expand;end;10:end;{:1508}{1517:}procedure scan_expr; forward;{:1517}{1522:}procedure scan_normal_glue;forward; procedure scan_mu_glue;forward;{:1522}{578:}procedure scan_font_ident; var f:internal_font_number;m:halfword;begin{406:}repeat get_x_token; until cur_cmd<>10{:406}; if cur_cmd=88 then f:=eqtb[601839].hh.rh else if cur_cmd=87 then f:= cur_chr else if cur_cmd=86 then begin m:=cur_chr;scan_four_bit_int; f:=eqtb[m+cur_val].hh.rh;end else begin begin if interaction=3 then; print_nl(264);print(842);end;begin help_ptr:=2;help_line[1]:=843; help_line[0]:=844;end;back_error;f:=0;end;cur_val:=f;end; {:578}{579:}procedure find_font_dimen(writing:boolean); var f:internal_font_number;n:integer;begin scan_int;n:=cur_val; scan_font_ident;f:=cur_val; if n<=0 then cur_val:=fmem_ptr else begin if writing and(n<=4)and(n>=2) and(font_glue[f]<>0)then begin delete_glue_ref(font_glue[f]); font_glue[f]:=0;end; if n>font_params[f]then if f5 then begin begin if interaction=3 then; print_nl(264);print(674);end;begin help_ptr:=3;help_line[2]:=675; help_line[1]:=676;help_line[0]:=677;end;back_error;begin cur_val:=0; cur_val_level:=1;end; end else if cur_cmd<=72 then begin if cur_cmd<72 then if m=0 then begin scan_register_num; if cur_val<256 then cur_val:=eqtb[601323+cur_val].hh.rh else begin find_sa_element(5,cur_val,false); if cur_ptr=0 then cur_val:=0 else cur_val:=mem[cur_ptr+1].hh.rh;end; end else cur_val:=mem[m+1].hh.rh else cur_val:=eqtb[m].hh.rh; cur_val_level:=5;end else begin back_input;scan_font_ident; begin cur_val:=600524+cur_val;cur_val_level:=4;end;end{:415}; 73:begin cur_val:=eqtb[m].int;cur_val_level:=0;end; 74:begin cur_val:=eqtb[m].int;cur_val_level:=1;end; 75:begin cur_val:=eqtb[m].hh.rh;cur_val_level:=2;end; 76:begin cur_val:=eqtb[m].hh.rh;cur_val_level:=3;end; 79:{418:}if abs(cur_list.mode_field)<>m then begin begin if interaction= 3 then;print_nl(264);print(690);end;print_cmd_chr(79,m); begin help_ptr:=4;help_line[3]:=691;help_line[2]:=692;help_line[1]:=693; help_line[0]:=694;end;error;if level<>5 then begin cur_val:=0; cur_val_level:=1;end else begin cur_val:=0;cur_val_level:=0;end; end else if m=1 then begin cur_val:=cur_list.aux_field.int; cur_val_level:=1;end else begin cur_val:=cur_list.aux_field.hh.lh; cur_val_level:=0;end{:418}; 80:{422:}if cur_list.mode_field=0 then begin cur_val:=0; cur_val_level:=0;end else begin nest[nest_ptr]:=cur_list;p:=nest_ptr; while abs(nest[p].mode_field)<>1 do p:=p-1; begin cur_val:=nest[p].pg_field;cur_val_level:=0;end;end{:422}; 82:{419:}begin if m=0 then cur_val:=dead_cycles{1426:}else if m=2 then cur_val:=interaction{:1426}else cur_val:=insert_penalties; cur_val_level:=0;end{:419}; 81:{421:}begin if(page_contents=0)and(not output_active)then if m=0 then cur_val:=1073741823 else cur_val:=0 else cur_val:=page_so_far[m]; cur_val_level:=1;end{:421}; 84:{423:}begin if m>601312 then{1602:}begin scan_int; if(eqtb[m].hh.rh=0)or(cur_val<0)then cur_val:=0 else begin if cur_val> mem[eqtb[m].hh.rh+1].int then cur_val:=mem[eqtb[m].hh.rh+1].int; cur_val:=mem[eqtb[m].hh.rh+cur_val+1].int;end; end{:1602}else if eqtb[601312].hh.rh=0 then cur_val:=0 else cur_val:=mem [eqtb[601312].hh.rh].hh.lh;cur_val_level:=0;end{:423}; 83:{420:}begin scan_register_num; if cur_val<256 then q:=eqtb[601583+cur_val].hh.rh else begin find_sa_element(4,cur_val,false); if cur_ptr=0 then q:=0 else q:=mem[cur_ptr+1].hh.rh;end; if q=0 then cur_val:=0 else cur_val:=mem[q+m].int;cur_val_level:=1; end{:420};68,69:begin cur_val:=cur_chr;cur_val_level:=0;end; 77:{425:}begin find_font_dimen(false);font_info[fmem_ptr].int:=0; begin cur_val:=font_info[cur_val].int;cur_val_level:=1;end;end{:425}; 78:{426:}begin scan_font_ident; if m=0 then begin cur_val:=hyphen_char[cur_val];cur_val_level:=0; end else begin cur_val:=skew_char[cur_val];cur_val_level:=0;end; end{:426}; 89:{427:}begin if(m<0)or(m>19)then begin cur_val_level:=(mem[m].hh.b0 div 16); if cur_val_level<2 then cur_val:=mem[m+2].int else cur_val:=mem[m+1].hh. rh;end else begin scan_register_num;cur_val_level:=m-0; if cur_val>255 then begin find_sa_element(cur_val_level,cur_val,false); if cur_ptr=0 then if cur_val_level<2 then cur_val:=0 else cur_val:=0 else if cur_val_level<2 then cur_val:=mem[cur_ptr+2].int else cur_val:= mem[cur_ptr+1].hh.rh; end else case cur_val_level of 0:cur_val:=eqtb[603233+cur_val].int; 1:cur_val:=eqtb[603766+cur_val].int; 2:cur_val:=eqtb[600800+cur_val].hh.rh; 3:cur_val:=eqtb[601056+cur_val].hh.rh;end;end;end{:427}; 70:{424:}if m>=4 then if m>=24 then{1516:}begin if m<25 then begin case m of{1543:}24:scan_mu_glue;{:1543}end;cur_val_level:=2; end else if m<26 then begin case m of{1544:}25:scan_normal_glue; {:1544}end;cur_val_level:=3;end else begin cur_val_level:=m-26; scan_expr;end; while cur_val_level>level do begin if cur_val_level=2 then begin m:= cur_val;cur_val:=mem[m+1].int;delete_glue_ref(m); end else if cur_val_level=3 then mu_error; cur_val_level:=cur_val_level-1;end; if negative then if cur_val_level>=2 then begin m:=cur_val; cur_val:=new_spec(m);delete_glue_ref(m); {431:}begin mem[cur_val+1].int:=-mem[cur_val+1].int; mem[cur_val+2].int:=-mem[cur_val+2].int; mem[cur_val+3].int:=-mem[cur_val+3].int;end{:431}; end else cur_val:=-cur_val;goto 10; end{:1516}else if m>=15 then begin case m of{1403:}15,16,17,18:begin scan_font_ident;q:=cur_val;scan_char_num; if(font_bc[q]<=cur_val)and(font_ec[q]>=cur_val)then begin i:=font_info[ char_base[q]+cur_val+0].qqqq; case m of 15:cur_val:=font_info[width_base[q]+i.b0].int; 16:cur_val:=font_info[height_base[q]+(i.b1-0)div 16].int; 17:cur_val:=font_info[depth_base[q]+(i.b1-0)mod 16].int; 18:cur_val:=font_info[italic_base[q]+(i.b2-0)div 4].int;end; end else cur_val:=0;end;{:1403}{1406:}19,20,21:begin q:=cur_chr-19; scan_int; if(eqtb[601312].hh.rh=0)or(cur_val<=0)then cur_val:=0 else begin if q=2 then begin q:=cur_val mod 2;cur_val:=(cur_val+q)div 2;end; if cur_val>mem[eqtb[601312].hh.rh].hh.lh then cur_val:=mem[eqtb[601312]. hh.rh].hh.lh;cur_val:=mem[eqtb[601312].hh.rh+2*cur_val-q].int;end; cur_val_level:=1;end;{:1406}{1540:}22,23:begin scan_normal_glue; q:=cur_val; if m=22 then cur_val:=mem[q+2].int else cur_val:=mem[q+3].int; delete_glue_ref(q);end;{:1540}end;cur_val_level:=1; end else begin case m of 4:cur_val:=line;5:cur_val:=last_badness; {1383:}6:cur_val:=2;{:1383}{1397:}7:cur_val:=cur_level-1; 8:cur_val:=cur_group;{:1397}{1400:}9:begin q:=cond_ptr;cur_val:=0; while q<>0 do begin cur_val:=cur_val+1;q:=mem[q].hh.rh;end;end; 10:if cond_ptr=0 then cur_val:=0 else if cur_if<32 then cur_val:=cur_if +1 else cur_val:=-(cur_if-31); 11:if(if_limit=4)or(if_limit=3)then cur_val:=1 else if if_limit=2 then cur_val:=-1 else cur_val:=0;{:1400}{1539:}12,13:begin scan_normal_glue; q:=cur_val; if m=12 then cur_val:=mem[q].hh.b0 else cur_val:=mem[q].hh.b1; delete_glue_ref(q);end;{:1539}{1617:}14:cur_val:=1;{:1617}end; cur_val_level:=0; end else begin if cur_chr=2 then cur_val:=0 else cur_val:=0; tx:=cur_list.tail_field; if not(tx>=hi_mem_min)then if(mem[tx].hh.b0=9)and(mem[tx].hh.b1=3)then begin r:=cur_list.head_field;repeat q:=r;r:=mem[q].hh.rh;until r=tx; tx:=q;end;if cur_chr=3 then begin cur_val_level:=0; if(tx=cur_list.head_field)or(cur_list.mode_field=0)then cur_val:=-1; end else cur_val_level:=cur_chr; if not(tx>=hi_mem_min)and(cur_list.mode_field<>0)then case cur_chr of 0: if mem[tx].hh.b0=12 then cur_val:=mem[tx+1].int; 1:if mem[tx].hh.b0=11 then cur_val:=mem[tx+1].int; 2:if mem[tx].hh.b0=10 then begin cur_val:=mem[tx+1].hh.lh; if mem[tx].hh.b1=99 then cur_val_level:=3;end; 3:if mem[tx].hh.b0<=13 then cur_val:=mem[tx].hh.b0+1 else cur_val:=15; end else if(cur_list.mode_field=1)and(tx=cur_list.head_field)then case cur_chr of 0:cur_val:=last_penalty;1:cur_val:=last_kern; 2:if last_glue<>536870911 then cur_val:=last_glue; 3:cur_val:=last_node_type;end;end{:424}; others:{428:}begin begin if interaction=3 then;print_nl(264);print(695); end;print_cmd_chr(cur_cmd,cur_chr);print(696);print_esc(542); begin help_ptr:=1;help_line[0]:=694;end;error; if level<>5 then begin cur_val:=0;cur_val_level:=1; end else begin cur_val:=0;cur_val_level:=0;end;end{:428}end; while cur_val_level>level do{429:}begin if cur_val_level=2 then cur_val :=mem[cur_val+1].int else if cur_val_level=3 then mu_error; cur_val_level:=cur_val_level-1;end{:429}; {430:}if negative then if cur_val_level>=2 then begin cur_val:=new_spec( cur_val);{431:}begin mem[cur_val+1].int:=-mem[cur_val+1].int; mem[cur_val+2].int:=-mem[cur_val+2].int; mem[cur_val+3].int:=-mem[cur_val+3].int;end{:431}; end else cur_val:=-cur_val else if(cur_val_level>=2)and(cur_val_level<=3 )then mem[cur_val].hh.rh:=mem[cur_val].hh.rh+1{:430};10:end; {:413}{440:}procedure scan_int;label 30;var negative:boolean;m:integer; d:small_number;vacuous:boolean;OK_so_far:boolean;begin radix:=0; OK_so_far:=true;{441:}negative:=false;repeat{406:}repeat get_x_token; until cur_cmd<>10{:406}; if cur_tok=3117 then begin negative:=not negative;cur_tok:=3115;end; until cur_tok<>3115{:441};if cur_tok=3168 then{442:}begin get_token; if cur_tok<4095 then begin cur_val:=cur_chr; if cur_cmd<=2 then if cur_cmd=2 then align_state:=align_state+1 else align_state:=align_state-1; end else if cur_tok<4352 then cur_val:=cur_tok-4096 else cur_val:= cur_tok-4352;if cur_val>255 then begin begin if interaction=3 then; print_nl(264);print(708);end;begin help_ptr:=2;help_line[1]:=709; help_line[0]:=710;end;cur_val:=48;back_error; end else{443:}begin get_x_token;if cur_cmd<>10 then back_input; end{:443};end{:442}else if(cur_cmd>=68)and(cur_cmd<=89)then scan_something_internal(0,false)else{444:}begin radix:=10;m:=214748364; if cur_tok=3111 then begin radix:=8;m:=268435456;get_x_token; end else if cur_tok=3106 then begin radix:=16;m:=134217728;get_x_token; end;vacuous:=true;cur_val:=0; {445:}while true do begin if(cur_tok<3120+radix)and(cur_tok>=3120)and( cur_tok<=3129)then d:=cur_tok-3120 else if radix=16 then if(cur_tok<= 2886)and(cur_tok>=2881)then d:=cur_tok-2871 else if(cur_tok<=3142)and( cur_tok>=3137)then d:=cur_tok-3127 else goto 30 else goto 30; vacuous:=false; if(cur_val>=m)and((cur_val>m)or(d>7)or(radix<>10))then begin if OK_so_far then begin begin if interaction=3 then;print_nl(264); print(711);end;begin help_ptr:=2;help_line[1]:=712;help_line[0]:=713; end;error;cur_val:=2147483647;OK_so_far:=false;end; end else cur_val:=cur_val*radix+d;get_x_token;end;30:{:445}; if vacuous then{446:}begin begin if interaction=3 then;print_nl(264); print(674);end;begin help_ptr:=3;help_line[2]:=675;help_line[1]:=676; help_line[0]:=677;end;back_error; end{:446}else if cur_cmd<>10 then back_input;end{:444}; if negative then cur_val:=-cur_val;end; {:440}{448:}procedure scan_dimen(mu,inf,shortcut:boolean); label 30,31,32,40,45,88,89;var negative:boolean;f:integer; {450:}num,denom:1..65536;k,kk:small_number;p,q:halfword;v:scaled; save_cur_val:integer;{:450}begin f:=0;arith_error:=false;cur_order:=0; negative:=false;if not shortcut then begin{441:}negative:=false; repeat{406:}repeat get_x_token;until cur_cmd<>10{:406}; if cur_tok=3117 then begin negative:=not negative;cur_tok:=3115;end; until cur_tok<>3115{:441}; if(cur_cmd>=68)and(cur_cmd<=89)then{449:}if mu then begin scan_something_internal(3,false); {451:}if cur_val_level>=2 then begin v:=mem[cur_val+1].int; delete_glue_ref(cur_val);cur_val:=v;end{:451}; if cur_val_level=3 then goto 89;if cur_val_level<>0 then mu_error; end else begin scan_something_internal(1,false); if cur_val_level=1 then goto 89;end{:449}else begin back_input; if cur_tok=3116 then cur_tok:=3118; if cur_tok<>3118 then scan_int else begin radix:=10;cur_val:=0;end; if cur_tok=3116 then cur_tok:=3118; if(radix=10)and(cur_tok=3118)then{452:}begin k:=0;p:=0;get_token; while true do begin get_x_token; if(cur_tok>3129)or(cur_tok<3120)then goto 31; if k<17 then begin q:=get_avail;mem[q].hh.rh:=p; mem[q].hh.lh:=cur_tok-3120;p:=q;k:=k+1;end;end; 31:for kk:=k downto 1 do begin dig[kk-1]:=mem[p].hh.lh;q:=p; p:=mem[p].hh.rh;begin mem[q].hh.rh:=avail;avail:=q; {dyn_used:=dyn_used-1;}end;end;f:=round_decimals(k); if cur_cmd<>10 then back_input;end{:452};end;end; if cur_val<0 then begin negative:=not negative;cur_val:=-cur_val;end; {453:}if inf then{454:}if scan_keyword(313)then begin cur_order:=1; while scan_keyword(108)do begin if cur_order=3 then begin begin if interaction=3 then;print_nl(264);print(715);end;print(716); begin help_ptr:=1;help_line[0]:=717;end;error; end else cur_order:=cur_order+1;end;goto 88;end{:454}; {455:}save_cur_val:=cur_val;{406:}repeat get_x_token; until cur_cmd<>10{:406}; if(cur_cmd<68)or(cur_cmd>89)then back_input else begin if mu then begin scan_something_internal(3,false); {451:}if cur_val_level>=2 then begin v:=mem[cur_val+1].int; delete_glue_ref(cur_val);cur_val:=v;end{:451}; if cur_val_level<>3 then mu_error; end else scan_something_internal(1,false);v:=cur_val;goto 40;end; if mu then goto 45; if scan_keyword(718)then v:=({559:}font_info[6+param_base[eqtb[601839]. hh.rh]].int{:559})else if scan_keyword(719)then v:=({560:}font_info[5+ param_base[eqtb[601839].hh.rh]].int{:560})else goto 45; {443:}begin get_x_token;if cur_cmd<>10 then back_input;end{:443}; 40:cur_val:=mult_and_add(save_cur_val,v,xn_over_d(v,f,65536),1073741823) ;goto 89;45:{:455}; if mu then{456:}if scan_keyword(339)then goto 88 else begin begin if interaction=3 then;print_nl(264);print(715);end;print(720); begin help_ptr:=4;help_line[3]:=721;help_line[2]:=722;help_line[1]:=723; help_line[0]:=724;end;error;goto 88;end{:456}; if scan_keyword(714)then{457:}begin prepare_mag; if eqtb[603185].int<>1000 then begin cur_val:=xn_over_d(cur_val,1000, eqtb[603185].int);f:=(1000*f+65536*remainder)div eqtb[603185].int; cur_val:=cur_val+(f div 65536);f:=f mod 65536;end;end{:457}; if scan_keyword(401)then goto 88; {458:}if scan_keyword(725)then begin num:=7227;denom:=100; end else if scan_keyword(726)then begin num:=12;denom:=1; end else if scan_keyword(727)then begin num:=7227;denom:=254; end else if scan_keyword(728)then begin num:=7227;denom:=2540; end else if scan_keyword(729)then begin num:=7227;denom:=7200; end else if scan_keyword(730)then begin num:=1238;denom:=1157; end else if scan_keyword(731)then begin num:=14856;denom:=1157; end else if scan_keyword(732)then goto 30 else{459:}begin begin if interaction=3 then;print_nl(264);print(715);end;print(733); begin help_ptr:=6;help_line[5]:=734;help_line[4]:=735;help_line[3]:=736; help_line[2]:=722;help_line[1]:=723;help_line[0]:=724;end;error;goto 32; end{:459};cur_val:=xn_over_d(cur_val,num,denom); f:=(num*f+65536*remainder)div denom;cur_val:=cur_val+(f div 65536); f:=f mod 65536;32:{:458}; 88:if cur_val>=16384 then arith_error:=true else cur_val:=cur_val*65536+ f;30:{:453};{443:}begin get_x_token;if cur_cmd<>10 then back_input; end{:443}; 89:if arith_error or(abs(cur_val)>=1073741824)then{460:}begin begin if interaction=3 then;print_nl(264);print(737);end;begin help_ptr:=2; help_line[1]:=738;help_line[0]:=739;end;error;cur_val:=1073741823; arith_error:=false;end{:460};if negative then cur_val:=-cur_val;end; {:448}{461:}procedure scan_glue(level:small_number);label 10; var negative:boolean;q:halfword;mu:boolean;begin mu:=(level=3); {441:}negative:=false;repeat{406:}repeat get_x_token; until cur_cmd<>10{:406}; if cur_tok=3117 then begin negative:=not negative;cur_tok:=3115;end; until cur_tok<>3115{:441}; if(cur_cmd>=68)and(cur_cmd<=89)then begin scan_something_internal(level, negative); if cur_val_level>=2 then begin if cur_val_level<>level then mu_error; goto 10;end; if cur_val_level=0 then scan_dimen(mu,false,true)else if level=3 then mu_error;end else begin back_input;scan_dimen(mu,false,false); if negative then cur_val:=-cur_val;end;{462:}q:=new_spec(0); mem[q+1].int:=cur_val; if scan_keyword(740)then begin scan_dimen(mu,true,false); mem[q+2].int:=cur_val;mem[q].hh.b0:=cur_order;end; if scan_keyword(741)then begin scan_dimen(mu,true,false); mem[q+3].int:=cur_val;mem[q].hh.b1:=cur_order;end;cur_val:=q{:462}; 10:end;{1518:}{1529:}function add_or_sub(x,y,max_answer:integer; negative:boolean):integer;var a:integer;begin if negative then y:=-y; if x>=0 then if y<=max_answer-x then a:=x+y else begin arith_error:=true ;a:=0; end else if y>=-max_answer-x then a:=x+y else begin arith_error:=true; a:=0;end;add_or_sub:=a;end; {:1529}{1533:}function quotient(n,d:integer):integer; var negative:boolean;a:integer; begin if d=0 then begin arith_error:=true;a:=0; end else begin if d>0 then negative:=false else begin d:=-d; negative:=true;end;if n<0 then begin n:=-n;negative:=not negative;end; a:=n div d;n:=n-a*d;d:=n-d;if d+n>=0 then a:=a+1;if negative then a:=-a; end;quotient:=a;end; {:1533}{1535:}function fract(x,n,d,max_answer:integer):integer; label 40,41,88,30;var negative:boolean;a:integer;f:integer;h:integer; r:integer;t:integer;begin if d=0 then goto 88;a:=0; if d>0 then negative:=false else begin d:=-d;negative:=true;end; if x<0 then begin x:=-x;negative:=not negative; end else if x=0 then goto 30;if n<0 then begin n:=-n; negative:=not negative;end;t:=n div d; if t>max_answer div x then goto 88;a:=t*x;n:=n-t*d;if n=0 then goto 40; t:=x div d;if t>(max_answer-a)div n then goto 88;a:=a+t*n;x:=x-t*d; if x=0 then goto 40;if x=0 then begin r:=r-d;f:=f+1;end;end;n:=n div 2;if n=0 then goto 41; if x(max_answer-a)then goto 88;a:=a+f; 40:if negative then a:=-a;goto 30;88:begin arith_error:=true;a:=0;end; 30:fract:=a;end;{:1535}procedure scan_expr;label 20,22,40; var a,b:boolean;l:small_number;r:small_number;s:small_number; o:small_number;e:integer;t:integer;f:integer;n:integer;p:halfword; q:halfword;begin l:=cur_val_level;a:=arith_error;b:=false;p:=0; {1519:}20:r:=0;e:=0;s:=0;t:=0;n:=0;22:if s=0 then o:=l else o:=0; {1521:}{406:}repeat get_x_token;until cur_cmd<>10{:406}; if cur_tok=3112 then{1524:}begin q:=get_node(4);mem[q].hh.rh:=p; mem[q].hh.b0:=l;mem[q].hh.b1:=4*s+r;mem[q+1].int:=e;mem[q+2].int:=t; mem[q+3].int:=n;p:=q;l:=o;goto 20;end{:1524};back_input; if o=0 then scan_int else if o=1 then scan_dimen(false,false,false)else if o=2 then scan_normal_glue else scan_mu_glue;f:=cur_val{:1521}; 40:{1520:}{406:}repeat get_x_token;until cur_cmd<>10{:406}; if cur_tok=3115 then o:=1 else if cur_tok=3117 then o:=2 else if cur_tok =3114 then o:=3 else if cur_tok=3119 then o:=4 else begin o:=0; if p=0 then begin if cur_cmd<>0 then back_input; end else if cur_tok<>3113 then begin begin if interaction=3 then; print_nl(264);print(1411);end;begin help_ptr:=1;help_line[0]:=1412;end; back_error;end;end{:1520};arith_error:=b; {1526:}if(l=0)or(s>2)then begin if(f>2147483647)or(f<-2147483647)then begin arith_error:=true;f:=0;end; end else if l=1 then begin if abs(f)>1073741823 then begin arith_error:= true;f:=0;end; end else begin if(abs(mem[f+1].int)>1073741823)or(abs(mem[f+2].int)> 1073741823)or(abs(mem[f+3].int)>1073741823)then begin arith_error:=true; delete_glue_ref(f);f:=new_spec(0);end;end{:1526}; case s of{1527:}0:if(l>=2)and(o<>0)then begin t:=new_spec(f); delete_glue_ref(f);if mem[t+2].int=0 then mem[t].hh.b0:=0; if mem[t+3].int=0 then mem[t].hh.b1:=0;end else t:=f; {:1527}{1531:}3:if o=4 then begin n:=f;o:=5; end else if l=0 then t:=mult_and_add(t,f,0,2147483647)else if l=1 then t :=mult_and_add(t,f,0,1073741823)else begin mem[t+1].int:=mult_and_add( mem[t+1].int,f,0,1073741823); mem[t+2].int:=mult_and_add(mem[t+2].int,f,0,1073741823); mem[t+3].int:=mult_and_add(mem[t+3].int,f,0,1073741823);end; {:1531}{1532:}4:if l<2 then t:=quotient(t,f)else begin mem[t+1].int:= quotient(mem[t+1].int,f);mem[t+2].int:=quotient(mem[t+2].int,f); mem[t+3].int:=quotient(mem[t+3].int,f);end; {:1532}{1534:}5:if l=0 then t:=fract(t,n,f,2147483647)else if l=1 then t :=fract(t,n,f,1073741823)else begin mem[t+1].int:=fract(mem[t+1].int,n,f ,1073741823);mem[t+2].int:=fract(mem[t+2].int,n,f,1073741823); mem[t+3].int:=fract(mem[t+3].int,n,f,1073741823);end;{:1534}end; if o>2 then s:=o else{1528:}begin s:=0; if r=0 then e:=t else if l=0 then e:=add_or_sub(e,t,2147483647,r=2)else if l=1 then e:=add_or_sub(e,t,1073741823,r=2)else{1530:}begin mem[e+1]. int:=add_or_sub(mem[e+1].int,mem[t+1].int,1073741823,r=2); if mem[e].hh.b0=mem[t].hh.b0 then mem[e+2].int:=add_or_sub(mem[e+2].int, mem[t+2].int,1073741823,r=2)else if(mem[e].hh.b00)then begin mem[e+2].int:=mem[t+2].int; mem[e].hh.b0:=mem[t].hh.b0;end; if mem[e].hh.b1=mem[t].hh.b1 then mem[e+3].int:=add_or_sub(mem[e+3].int, mem[t+3].int,1073741823,r=2)else if(mem[e].hh.b10)then begin mem[e+3].int:=mem[t+3].int; mem[e].hh.b1:=mem[t].hh.b1;end;delete_glue_ref(t); if mem[e+2].int=0 then mem[e].hh.b0:=0; if mem[e+3].int=0 then mem[e].hh.b1:=0;end{:1530};r:=o;end{:1528}; b:=arith_error;if o<>0 then goto 22;if p<>0 then{1525:}begin f:=e;q:=p; e:=mem[q+1].int;t:=mem[q+2].int;n:=mem[q+3].int;s:=mem[q].hh.b1 div 4; r:=mem[q].hh.b1 mod 4;l:=mem[q].hh.b0;p:=mem[q].hh.rh;free_node(q,4); goto 40;end{:1525}{:1519};if b then begin begin if interaction=3 then; print_nl(264);print(1236);end;begin help_ptr:=2;help_line[1]:=1410; help_line[0]:=1238;end;error;if l>=2 then begin delete_glue_ref(e);e:=0; mem[e].hh.rh:=mem[e].hh.rh+1;end else e:=0;end;arith_error:=a; cur_val:=e;cur_val_level:=l;end; {:1518}{1523:}procedure scan_normal_glue;begin scan_glue(2);end; procedure scan_mu_glue;begin scan_glue(3);end; {:1523}{:461}{463:}function scan_rule_spec:halfword;label 21; var q:halfword;begin q:=new_rule; if cur_cmd=35 then mem[q+1].int:=26214 else begin mem[q+3].int:=26214; mem[q+2].int:=0;end; 21:if scan_keyword(742)then begin scan_dimen(false,false,false); mem[q+1].int:=cur_val;goto 21;end; if scan_keyword(743)then begin scan_dimen(false,false,false); mem[q+3].int:=cur_val;goto 21;end; if scan_keyword(744)then begin scan_dimen(false,false,false); mem[q+2].int:=cur_val;goto 21;end;scan_rule_spec:=q;end; {:463}{464:}{1415:}procedure scan_general_text;label 40;var s:0..5; w:halfword;d:halfword;p:halfword;q:halfword;unbalance:halfword; begin s:=scanner_status;w:=warning_index;d:=def_ref;scanner_status:=5; warning_index:=cur_cs;def_ref:=get_avail;mem[def_ref].hh.lh:=0; p:=def_ref;scan_left_brace;unbalance:=1;while true do begin get_token; if cur_tok<768 then if cur_cmd<2 then unbalance:=unbalance+1 else begin unbalance:=unbalance-1;if unbalance=0 then goto 40;end; begin q:=get_avail;mem[p].hh.rh:=q;mem[q].hh.lh:=cur_tok;p:=q;end;end; 40:q:=mem[def_ref].hh.rh;begin mem[def_ref].hh.rh:=avail;avail:=def_ref; {dyn_used:=dyn_used-1;}end;if q=0 then cur_val:=7999997 else cur_val:=p; mem[7999997].hh.rh:=q;scanner_status:=s;warning_index:=w;def_ref:=d;end; {:1415}{1489:}procedure pseudo_start;var old_setting:0..21;s:str_number; l,m:pool_pointer;p,q,r:halfword;w:four_quarters;nl,sz:integer; begin scan_general_text;old_setting:=selector;selector:=21; token_show(7999997);selector:=old_setting; flush_list(mem[7999997].hh.rh); begin if pool_ptr+1>pool_size then overflow(259,pool_size-init_pool_ptr) ;end;s:=make_string;{1490:}str_pool[pool_ptr]:=32;l:=str_start[s]; nl:=eqtb[603217].int;p:=get_avail;q:=p;while lnl)do l:=l+1;sz:=(l-m+7)div 4; if sz=1 then sz:=2;r:=get_node(sz);mem[q].hh.rh:=r;q:=r; mem[q].hh.lh:=sz+0;while sz>2 do begin sz:=sz-1;r:=r+1; w.b0:=str_pool[m]+0;w.b1:=str_pool[m+1]+0;w.b2:=str_pool[m+2]+0; w.b3:=str_pool[m+3]+0;mem[r].qqqq:=w;m:=m+4;end;w.b0:=32;w.b1:=32; w.b2:=32;w.b3:=32;if l>m then begin w.b0:=str_pool[m]+0; if l>m+1 then begin w.b1:=str_pool[m+1]+0; if l>m+2 then begin w.b2:=str_pool[m+2]+0; if l>m+3 then w.b3:=str_pool[m+3]+0;end;end;end;mem[r+1].qqqq:=w; if str_pool[l]=nl then l:=l+1;end;mem[p].hh.lh:=mem[p].hh.rh; mem[p].hh.rh:=pseudo_files;pseudo_files:=p{:1490}; begin str_ptr:=str_ptr-1;pool_ptr:=str_start[str_ptr];end; {1491:}begin_file_reading;line:=0; cur_input.limit_field:=cur_input.start_field; cur_input.loc_field:=cur_input.limit_field+1; if eqtb[603226].int>0 then begin if term_offset>max_print_line-3 then print_ln else if(term_offset>0)or(file_offset>0)then print_char(32); cur_input.name_field:=19;print(1396);open_parens:=open_parens+1; break(term_out);end else cur_input.name_field:=18{:1491};end; {:1489}function str_toks_cat(b:pool_pointer;cat:small_number):halfword; var p:halfword;q:halfword;t:halfword;k:pool_pointer; begin begin if pool_ptr+1>pool_size then overflow(259,pool_size- init_pool_ptr);end;p:=7999997;mem[p].hh.rh:=0;k:=b; while k=4 then{466:}begin p:=7999997;mem[p].hh.rh:=0; if cur_val_level=4 then begin q:=get_avail;mem[p].hh.rh:=q; mem[q].hh.lh:=4095+cur_val;p:=q; end else if cur_val<>0 then begin r:=mem[cur_val].hh.rh; while r<>0 do begin begin begin q:=avail; if q=0 then q:=get_avail else begin avail:=mem[q].hh.rh;mem[q].hh.rh:=0; {dyn_used:=dyn_used+1;}end;end;mem[p].hh.rh:=q; mem[q].hh.lh:=mem[r].hh.lh;p:=q;end;r:=mem[r].hh.rh;end;end;the_toks:=p; end{:466}else begin old_setting:=selector;selector:=21;b:=pool_ptr; case cur_val_level of 0:print_int(cur_val); 1:begin print_scaled(cur_val);print(401);end; 2:begin print_spec(cur_val,401);delete_glue_ref(cur_val);end; 3:begin print_spec(cur_val,339);delete_glue_ref(cur_val);end;end; selector:=old_setting;the_toks:=str_toks(b);end;10:end; {:465}{467:}procedure ins_the_toks;begin mem[7999988].hh.rh:=the_toks; begin_token_list(mem[7999997].hh.rh,4);end; {:467}{470:}procedure conv_toks;var old_setting:0..21;c:0..15; u:str_number;s:str_number;saved_chr:halfword; save_warning_index,save_def_ref:halfword;cat:small_number; save_scanner_status:small_number;b:pool_pointer;begin c:=cur_chr;cat:=0; {471:}case c of 0,1:scan_int; 2,3:begin save_scanner_status:=scanner_status;scanner_status:=0; get_token;scanner_status:=save_scanner_status;end;4:scan_font_ident;5:; 9:begin save_scanner_status:=scanner_status; save_warning_index:=warning_index;save_def_ref:=def_ref; if str_start[str_ptr]0 then str_ptr:=str_ptr-1;end; 6:begin save_scanner_status:=scanner_status; save_warning_index:=warning_index;save_def_ref:=def_ref; if str_start[str_ptr]0 then str_ptr:=str_ptr-1;end; 11:cur_val:=0;7:scan_int;8:begin scan_int;saved_chr:=cur_val;scan_int; if(cur_val<1)or(cur_val>13)or(cur_val=5)or(cur_val=9)then begin begin if interaction=3 then;print_nl(264);print(761);end;print_int(cur_val); print(762);begin help_ptr:=1;help_line[0]:=763;end;error;cat:=12; end else cat:=cur_val;cur_val:=saved_chr;end;10:scan_int; 12:begin save_scanner_status:=scanner_status; save_warning_index:=warning_index;save_def_ref:=def_ref; if str_start[str_ptr]0 then str_ptr:=str_ptr-1;end;14:snapshot(0);13:; 15:if job_name=0 then open_log_file;end{:471};old_setting:=selector; selector:=21;b:=pool_ptr;{472:}case c of 0:print_int(cur_val); 1:print_roman_int(cur_val); 2:if cur_cs<>0 then sprint_cs(cur_cs)else print_char(cur_chr); 3:print_meaning;4:begin print(font_name[cur_val]); if font_size[cur_val]<>font_dsize[cur_val]then begin print(764); print_scaled(font_size[cur_val]);print(401);end;end;5:print(257); 9:print_int(cur_val);6:print_int(cur_val);11:print_int(cur_val); 7,8:print_char(cur_val);10:print_int(cur_val);14:;13:print(256); 15:print(job_name);end{:472};selector:=old_setting; mem[7999988].hh.rh:=str_toks_cat(b,cat); begin_token_list(mem[7999997].hh.rh,4);end; {:470}{473:}function scan_toks(macro_def,xpand:boolean):halfword; label 40,22,30,31,32;var t:halfword;s:halfword;p:halfword;q:halfword; unbalance:halfword;hash_brace:halfword; begin if macro_def then scanner_status:=2 else scanner_status:=5; warning_index:=cur_cs;def_ref:=get_avail;mem[def_ref].hh.lh:=0; p:=def_ref;hash_brace:=0;t:=3120; if macro_def then{475:}begin while true do begin 22:get_token; if cur_tok<768 then goto 31; if cur_cmd=6 then{477:}begin s:=3328+cur_chr;get_token; if cur_tok<512 then begin hash_brace:=cur_tok;begin q:=get_avail; mem[p].hh.rh:=q;mem[q].hh.lh:=cur_tok;p:=q;end;begin q:=get_avail; mem[p].hh.rh:=q;mem[q].hh.lh:=3584;p:=q;end;goto 30;end; if t=3129 then begin begin if interaction=3 then;print_nl(264); print(768);end;begin help_ptr:=2;help_line[1]:=769;help_line[0]:=770; end;error;goto 22;end else begin t:=t+1; if cur_tok<>t then begin begin if interaction=3 then;print_nl(264); print(771);end;begin help_ptr:=2;help_line[1]:=772;help_line[0]:=773; end;back_error;end;cur_tok:=s;end;end{:477};begin q:=get_avail; mem[p].hh.rh:=q;mem[q].hh.lh:=cur_tok;p:=q;end;end; 31:begin q:=get_avail;mem[p].hh.rh:=q;mem[q].hh.lh:=3584;p:=q;end; if cur_cmd=2 then{476:}begin begin if interaction=3 then;print_nl(264); print(667);end;align_state:=align_state+1;begin help_ptr:=2; help_line[1]:=766;help_line[0]:=767;end;error;goto 40;end{:476}; 30:end{:475}else scan_left_brace;{478:}unbalance:=1; while true do begin if xpand then{479:}begin while true do begin get_next; if cur_cmd>=111 then if mem[mem[cur_chr].hh.rh].hh.lh=3585 then begin cur_cmd:=0;cur_chr:=257;end;if cur_cmd<=100 then goto 32; if cur_cmd<>109 then expand else begin q:=the_toks; if mem[7999997].hh.rh<>0 then begin mem[p].hh.rh:=mem[7999997].hh.rh; p:=q;end;end;end;32:x_token end{:479}else get_token; if cur_tok<768 then if cur_cmd<2 then unbalance:=unbalance+1 else begin unbalance:=unbalance-1;if unbalance=0 then goto 40; end else if cur_cmd=6 then if macro_def then{480:}begin s:=cur_tok; if xpand then get_x_token else get_token; if cur_cmd<>6 then if(cur_tok<=3120)or(cur_tok>t)then begin begin if interaction=3 then;print_nl(264);print(774);end; sprint_cs(warning_index);begin help_ptr:=3;help_line[2]:=775; help_line[1]:=776;help_line[0]:=777;end;back_error;cur_tok:=s; end else cur_tok:=1232+cur_chr;end{:480};begin q:=get_avail; mem[p].hh.rh:=q;mem[q].hh.lh:=cur_tok;p:=q;end;end{:478}; 40:scanner_status:=0;if hash_brace<>0 then begin q:=get_avail; mem[p].hh.rh:=q;mem[q].hh.lh:=hash_brace;p:=q;end;scan_toks:=p;end; {:473}{474:}procedure flush_str(s:str_number); begin if(s=str_ptr-1)then begin str_ptr:=str_ptr-1; pool_ptr:=str_start[str_ptr];end;end; function tokens_to_string(p:halfword):str_number; begin if selector=21 then begin begin help_ptr:=1;help_line[0]:=765;end; error;end;old_setting:=selector;selector:=21; show_token_list(mem[p].hh.rh,0,pool_size-pool_ptr); selector:=old_setting;tokens_to_string:=make_string;end; {:474}{483:}procedure read_toks(n:integer;r:halfword;j:halfword); label 30;var p:halfword;q:halfword;s:integer;m:small_number; begin scanner_status:=2;warning_index:=r;def_ref:=get_avail; mem[def_ref].hh.lh:=0;p:=def_ref;begin q:=get_avail;mem[p].hh.rh:=q; mem[q].hh.lh:=3584;p:=q;end;if(n<0)or(n>15)then m:=16 else m:=n; s:=align_state;align_state:=1000000;repeat{484:}begin_file_reading; cur_input.name_field:=m+1; if read_open[m]=2 then{485:}if interaction>1 then if n<0 then begin; print(340);term_input;end else begin;print_ln;sprint_cs(r);begin; print(61);term_input;end;n:=-1; end else fatal_error(778){:485}else if read_open[m]=1 then{486:}if input_ln(read_file[m],false)then read_open[m]:=0 else begin a_close( read_file[m]);read_open[m]:=2; end{:486}else{487:}begin if not input_ln(read_file[m],true)then begin a_close(read_file[m]);read_open[m]:=2; if align_state<>1000000 then begin runaway;begin if interaction=3 then; print_nl(264);print(779);end;print_esc(539);begin help_ptr:=1; help_line[0]:=780;end;align_state:=1000000;cur_input.limit_field:=0; error;end;end;end{:487};cur_input.limit_field:=last; if(eqtb[603216].int<0)or(eqtb[603216].int>255)then cur_input.limit_field :=cur_input.limit_field-1 else buffer[cur_input.limit_field]:=eqtb[ 603216].int;first:=cur_input.limit_field+1; cur_input.loc_field:=cur_input.start_field;cur_input.state_field:=33; {1497:}if j=1 then begin while cur_input.loc_field<=cur_input. limit_field do begin cur_chr:=buffer[cur_input.loc_field]; cur_input.loc_field:=cur_input.loc_field+1; if cur_chr=32 then cur_tok:=2592 else cur_tok:=cur_chr+3072; begin q:=get_avail;mem[p].hh.rh:=q;mem[q].hh.lh:=cur_tok;p:=q;end;end; goto 30;end{:1497};while true do begin get_token; if cur_tok=0 then goto 30; if align_state<1000000 then begin repeat get_token;until cur_tok=0; align_state:=1000000;goto 30;end;begin q:=get_avail;mem[p].hh.rh:=q; mem[q].hh.lh:=cur_tok;p:=q;end;end;30:end_file_reading{:484}; until align_state=1000000;cur_val:=def_ref;scanner_status:=0; align_state:=s;end;{:483}{495:}procedure pass_text;label 30; var l:integer;save_scanner_status:small_number; begin save_scanner_status:=scanner_status;scanner_status:=1;l:=0; skip_line:=line;while true do begin get_next; if cur_cmd=106 then begin if l=0 then goto 30;if cur_chr=2 then l:=l-1; end else if cur_cmd=105 then l:=l+1;end; 30:scanner_status:=save_scanner_status; if eqtb[603225].int>0 then show_cur_cmd_chr;end; {:495}{498:}procedure change_if_limit(l:small_number;p:halfword); label 10;var q:halfword; begin if p=cond_ptr then if_limit:=l else begin q:=cond_ptr; while true do begin if q=0 then confusion(781); if mem[q].hh.rh=p then begin mem[q].hh.b0:=l;goto 10;end; q:=mem[q].hh.rh;end;end;10:end;{:498}{499:}procedure conditional; label 10,50;var b:boolean;r:60..62;m,n:integer;p,q:halfword; save_scanner_status:small_number;save_cond_ptr:halfword; this_if:small_number;is_unless:boolean; begin if eqtb[603225].int>0 then if eqtb[603204].int<=1 then show_cur_cmd_chr;{496:}begin p:=get_node(2);mem[p].hh.rh:=cond_ptr; mem[p].hh.b0:=if_limit;mem[p].hh.b1:=cur_if;mem[p+1].int:=if_line; cond_ptr:=p;cur_if:=cur_chr;if_limit:=1;if_line:=line;end{:496}; save_cond_ptr:=cond_ptr;is_unless:=(cur_chr>=32); this_if:=cur_chr mod 32; {502:}case this_if of 0,1:{507:}begin begin get_x_token; if cur_cmd=0 then if cur_chr=257 then begin cur_cmd:=13; cur_chr:=cur_tok-4096;end;end; if(cur_cmd>13)or(cur_chr>255)then begin m:=0;n:=256; end else begin m:=cur_cmd;n:=cur_chr;end;begin get_x_token; if cur_cmd=0 then if cur_chr=257 then begin cur_cmd:=13; cur_chr:=cur_tok-4096;end;end; if(cur_cmd>13)or(cur_chr>255)then begin cur_cmd:=0;cur_chr:=256;end; if this_if=0 then b:=(n=cur_chr)else b:=(m=cur_cmd);end{:507}; 2,3:{504:}begin if this_if=2 then scan_int else scan_dimen(false,false, false);n:=cur_val;{406:}repeat get_x_token;until cur_cmd<>10{:406}; if(cur_tok>=3132)and(cur_tok<=3134)then r:=cur_tok-3072 else begin begin if interaction=3 then;print_nl(264);print(806);end; print_cmd_chr(105,this_if);begin help_ptr:=1;help_line[0]:=807;end; back_error;r:=61;end; if this_if=2 then scan_int else scan_dimen(false,false,false); case r of 60:b:=(ncur_val);end; end{:504};4:{505:}begin scan_int;b:=odd(cur_val);end{:505}; 5:b:=(abs(cur_list.mode_field)=1);6:b:=(abs(cur_list.mode_field)=102); 7:b:=(abs(cur_list.mode_field)=203);8:b:=(cur_list.mode_field<0); 9,10,11:{506:}begin scan_register_num; if cur_val<256 then p:=eqtb[601583+cur_val].hh.rh else begin find_sa_element(4,cur_val,false); if cur_ptr=0 then p:=0 else p:=mem[cur_ptr+1].hh.rh;end; if this_if=9 then b:=(p=0)else if p=0 then b:=false else if this_if=10 then b:=(mem[p].hh.b0=0)else b:=(mem[p].hh.b0=1);end{:506}; 12:{508:}begin save_scanner_status:=scanner_status;scanner_status:=0; get_next;n:=cur_cs;p:=cur_cmd;q:=cur_chr;get_next; if cur_cmd<>p then b:=false else if cur_cmd<111 then b:=(cur_chr=q)else {509:}begin p:=mem[cur_chr].hh.rh;q:=mem[eqtb[n].hh.rh].hh.rh; if p=q then b:=true else begin while(p<>0)and(q<>0)do if mem[p].hh.lh<> mem[q].hh.lh then p:=0 else begin p:=mem[p].hh.rh;q:=mem[q].hh.rh;end; b:=((p=0)and(q=0));end;end{:509};scanner_status:=save_scanner_status; end{:508};13:begin scan_four_bit_int;b:=(read_open[cur_val]=2);end; 14:b:=true;15:b:=false; {1502:}17:begin save_scanner_status:=scanner_status;scanner_status:=0; get_next;b:=(cur_cmd<>101);scanner_status:=save_scanner_status;end; {:1502}{1503:}18:begin n:=get_avail;p:=n;repeat get_x_token; if cur_cs=0 then begin q:=get_avail;mem[p].hh.rh:=q; mem[q].hh.lh:=cur_tok;p:=q;end;until cur_cs<>0; if cur_cmd<>67 then{373:}begin begin if interaction=3 then; print_nl(264);print(635);end;print_esc(509);print(636); begin help_ptr:=2;help_line[1]:=637;help_line[0]:=638;end;back_error; end{:373};{1504:}m:=first;p:=mem[n].hh.rh; while p<>0 do begin if m>=max_buf_stack then begin max_buf_stack:=m+1; if max_buf_stack=buf_size then overflow(258,buf_size);end; buffer[m]:=mem[p].hh.lh mod 256;m:=m+1;p:=mem[p].hh.rh;end; if m>first+1 then cur_cs:=id_lookup(first,m-first)else if m=first then cur_cs:=513 else cur_cs:=257+buffer[first]{:1504};flush_list(n); b:=(eqtb[cur_cs].hh.b0<>101);end;{:1503}{1505:}19:begin scan_font_ident; n:=cur_val;scan_char_num; if(font_bc[n]<=cur_val)and(font_ec[n]>=cur_val)then b:=(font_info[ char_base[n]+cur_val+0].qqqq.b0>0)else b:=false;end; {:1505}16:{510:}begin scan_int;n:=cur_val; if eqtb[603204].int>1 then begin begin_diagnostic;print(808); print_int(n);print_char(125);end_diagnostic(false);end; while n<>0 do begin pass_text; if cond_ptr=save_cond_ptr then if cur_chr=4 then n:=n-1 else goto 50 else if cur_chr=2 then{497:}begin if if_stack[in_open]=cond_ptr then if_warning;p:=cond_ptr;if_line:=mem[p+1].int;cur_if:=mem[p].hh.b1; if_limit:=mem[p].hh.b0;cond_ptr:=mem[p].hh.rh;free_node(p,2);end{:497}; end;change_if_limit(4,save_cond_ptr);goto 10;end{:510};end{:502}; if is_unless then b:=not b; if eqtb[603204].int>1 then{503:}begin begin_diagnostic; if b then print(804)else print(805);end_diagnostic(false);end{:503}; if b then begin change_if_limit(3,save_cond_ptr);goto 10;end; {501:}while true do begin pass_text; if cond_ptr=save_cond_ptr then begin if cur_chr<>4 then goto 50; begin if interaction=3 then;print_nl(264);print(802);end;print_esc(800); begin help_ptr:=1;help_line[0]:=803;end;error; end else if cur_chr=2 then{497:}begin if if_stack[in_open]=cond_ptr then if_warning;p:=cond_ptr;if_line:=mem[p+1].int;cur_if:=mem[p].hh.b1; if_limit:=mem[p].hh.b0;cond_ptr:=mem[p].hh.rh;free_node(p,2);end{:497}; end{:501}; 50:if cur_chr=2 then{497:}begin if if_stack[in_open]=cond_ptr then if_warning;p:=cond_ptr;if_line:=mem[p+1].int;cur_if:=mem[p].hh.b1; if_limit:=mem[p].hh.b0;cond_ptr:=mem[p].hh.rh;free_node(p,2); end{:497}else if_limit:=2;10:end;{:499}{516:}procedure begin_name; begin area_delimiter:=0;ext_delimiter:=0;end; {:516}{517:}function more_name(c:ASCII_code):boolean; begin if c=32 then more_name:=false else begin begin if pool_ptr+1> pool_size then overflow(259,pool_size-init_pool_ptr);end; begin str_pool[pool_ptr]:=c;pool_ptr:=pool_ptr+1;end; if(c=62)or(c=58)then begin area_delimiter:=(pool_ptr-str_start[str_ptr]) ;ext_delimiter:=0; end else if(c=46)and(ext_delimiter=0)then ext_delimiter:=(pool_ptr- str_start[str_ptr]);more_name:=true;end;end; {:517}{518:}procedure end_name; begin if str_ptr+3>max_strings then overflow(260,max_strings- init_str_ptr); if area_delimiter=0 then cur_area:=340 else begin cur_area:=str_ptr; str_start[str_ptr+1]:=str_start[str_ptr]+area_delimiter; str_ptr:=str_ptr+1;end;if ext_delimiter=0 then begin cur_ext:=340; cur_name:=make_string;end else begin cur_name:=str_ptr; str_start[str_ptr+1]:=str_start[str_ptr]+ext_delimiter-area_delimiter-1; str_ptr:=str_ptr+1;cur_ext:=make_string;end;end; {:518}{520:}procedure pack_file_name(n,a,e:str_number);var k:integer; c:ASCII_code;j:pool_pointer;begin k:=0; for j:=str_start[a]to str_start[a+1]-1 do begin c:=str_pool[j];k:=k+1; if k<=file_name_size then name_of_file[k]:=xchr[c];end; for j:=str_start[n]to str_start[n+1]-1 do begin c:=str_pool[j];k:=k+1; if k<=file_name_size then name_of_file[k]:=xchr[c];end; for j:=str_start[e]to str_start[e+1]-1 do begin c:=str_pool[j];k:=k+1; if k<=file_name_size then name_of_file[k]:=xchr[c];end; if k<=file_name_size then name_length:=k else name_length:= file_name_size; for k:=name_length+1 to file_name_size do name_of_file[k]:=' ';end; {:520}{524:}procedure pack_buffered_name(n:small_number;a,b:integer); var k:integer;c:ASCII_code;j:integer; begin if n+b-a+5>file_name_size then b:=a+file_name_size-n-5;k:=0; for j:=1 to n do begin c:=xord[TEX_format_default[j]];k:=k+1; if k<=file_name_size then name_of_file[k]:=xchr[c];end; for j:=a to b do begin c:=buffer[j];k:=k+1; if k<=file_name_size then name_of_file[k]:=xchr[c];end; for j:=17 to 20 do begin c:=xord[TEX_format_default[j]];k:=k+1; if k<=file_name_size then name_of_file[k]:=xchr[c];end; if k<=file_name_size then name_length:=k else name_length:= file_name_size; for k:=name_length+1 to file_name_size do name_of_file[k]:=' ';end; {:524}{526:}function make_name_string:str_number; var k:1..file_name_size; begin if(pool_ptr+name_length>pool_size)or(str_ptr=max_strings)or(( pool_ptr-str_start[str_ptr])>0)then make_name_string:=63 else begin for k:=1 to name_length do begin str_pool[pool_ptr]:=xord[name_of_file[k]]; pool_ptr:=pool_ptr+1;end;make_name_string:=make_string;end;end; function a_make_name_string(var f:alpha_file):str_number; begin a_make_name_string:=make_name_string;end; function b_make_name_string(var f:byte_file):str_number; begin b_make_name_string:=make_name_string;end; function w_make_name_string(var f:word_file):str_number; begin w_make_name_string:=make_name_string;end; {:526}{527:}procedure scan_file_name;label 30; begin name_in_progress:=true;begin_name;{406:}repeat get_x_token; until cur_cmd<>10{:406}; while true do begin if(cur_cmd>12)or(cur_chr>255)then begin back_input; goto 30;end;if not more_name(cur_chr)then goto 30;get_x_token;end; 30:end_name;name_in_progress:=false;end; {:527}{530:}procedure pack_job_name(s:str_number);begin cur_area:=340; cur_ext:=s;cur_name:=job_name;pack_file_name(cur_name,cur_area,cur_ext); end;{:530}{531:}procedure prompt_file_name(s,e:str_number);label 30; var k:0..buf_size;begin if interaction=2 then; if s=812 then begin if interaction=3 then;print_nl(264);print(813); end else begin if interaction=3 then;print_nl(264);print(814);end; print_file_name(cur_name,cur_area,cur_ext);print(815); if e=816 then show_context;print_nl(817);print(s); if interaction<2 then fatal_error(818);break_in(term_in,true);begin; print(576);term_input;end;{532:}begin begin_name;k:=first; while(buffer[k]=32)and(kmax_print_line-2 then print_ln else if(term_offset>0)or( file_offset>0)then print_char(32);print_char(40); open_parens:=open_parens+1;slow_print(cur_input.name_field); break(term_out);cur_input.state_field:=33; if cur_input.name_field=str_ptr-1 then begin begin str_ptr:=str_ptr-1; pool_ptr:=str_start[str_ptr];end;cur_input.name_field:=cur_name;end; {539:}begin line:=1; if input_ln(input_file[cur_input.index_field],false)then; firm_up_the_line; if(eqtb[603216].int<0)or(eqtb[603216].int>255)then cur_input.limit_field :=cur_input.limit_field-1 else buffer[cur_input.limit_field]:=eqtb[ 603216].int;first:=cur_input.limit_field+1; cur_input.loc_field:=cur_input.start_field;end{:539};end; {:538}{561:}function read_font_info(u:halfword;nom,aire:str_number; s:scaled):internal_font_number;label 30,11,45;var k:font_index; file_opened:boolean;lf,lh,bc,ec,nw,nh,nd,ni,nl,nk,ne,np:halfword; f:internal_font_number;g:internal_font_number;a,b,c,d:eight_bits; qw:four_quarters;sw:scaled;bch_label:integer;bchar:0..256;z:scaled; alpha:integer;beta:1..16;begin g:=0;{563:}{564:}file_opened:=false; if aire=340 then pack_file_name(nom,810,836)else pack_file_name(nom,aire ,836);if not b_open_in(tfm_file)then goto 11;file_opened:=true{:564}; {566:}begin begin lf:=tfm_file^;if lf>127 then goto 11;get(tfm_file); lf:=lf*256+tfm_file^;end;get(tfm_file);begin lh:=tfm_file^; if lh>127 then goto 11;get(tfm_file);lh:=lh*256+tfm_file^;end; get(tfm_file);begin bc:=tfm_file^;if bc>127 then goto 11;get(tfm_file); bc:=bc*256+tfm_file^;end;get(tfm_file);begin ec:=tfm_file^; if ec>127 then goto 11;get(tfm_file);ec:=ec*256+tfm_file^;end; if(bc>ec+1)or(ec>255)then goto 11;if bc>255 then begin bc:=1;ec:=0;end; get(tfm_file);begin nw:=tfm_file^;if nw>127 then goto 11;get(tfm_file); nw:=nw*256+tfm_file^;end;get(tfm_file);begin nh:=tfm_file^; if nh>127 then goto 11;get(tfm_file);nh:=nh*256+tfm_file^;end; get(tfm_file);begin nd:=tfm_file^;if nd>127 then goto 11;get(tfm_file); nd:=nd*256+tfm_file^;end;get(tfm_file);begin ni:=tfm_file^; if ni>127 then goto 11;get(tfm_file);ni:=ni*256+tfm_file^;end; get(tfm_file);begin nl:=tfm_file^;if nl>127 then goto 11;get(tfm_file); nl:=nl*256+tfm_file^;end;get(tfm_file);begin nk:=tfm_file^; if nk>127 then goto 11;get(tfm_file);nk:=nk*256+tfm_file^;end; get(tfm_file);begin ne:=tfm_file^;if ne>127 then goto 11;get(tfm_file); ne:=ne*256+tfm_file^;end;get(tfm_file);begin np:=tfm_file^; if np>127 then goto 11;get(tfm_file);np:=np*256+tfm_file^;end; if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then goto 11; if(nw=0)or(nh=0)or(nd=0)or(ni=0)then goto 11;end{:566}; {567:}lf:=lf-6-lh;if np<7 then lf:=lf+7-np; if(font_ptr=font_max)or(fmem_ptr+lf>font_mem_size)then{568:}begin begin if interaction=3 then;print_nl(264);print(827);end;sprint_cs(u); print_char(61);print_file_name(nom,aire,340); if s>=0 then begin print(764);print_scaled(s);print(401); end else if s<>-1000 then begin print(828);print_int(-s);end;print(837); begin help_ptr:=4;help_line[3]:=838;help_line[2]:=839;help_line[1]:=840; help_line[0]:=841;end;error;goto 30;end{:568};f:=font_ptr+1; char_base[f]:=fmem_ptr-bc;width_base[f]:=char_base[f]+ec+1; height_base[f]:=width_base[f]+nw;depth_base[f]:=height_base[f]+nh; italic_base[f]:=depth_base[f]+nd;lig_kern_base[f]:=italic_base[f]+ni; kern_base[f]:=lig_kern_base[f]+nl-256*(128); exten_base[f]:=kern_base[f]+256*(128)+nk; param_base[f]:=exten_base[f]+ne{:567};{569:}begin if lh<2 then goto 11; begin get(tfm_file);a:=tfm_file^;qw.b0:=a+0;get(tfm_file);b:=tfm_file^; qw.b1:=b+0;get(tfm_file);c:=tfm_file^;qw.b2:=c+0;get(tfm_file); d:=tfm_file^;qw.b3:=d+0;font_check[f]:=qw;end;get(tfm_file); begin z:=tfm_file^;if z>127 then goto 11;get(tfm_file); z:=z*256+tfm_file^;end;get(tfm_file);z:=z*256+tfm_file^;get(tfm_file); z:=(z*16)+(tfm_file^div 16);if z<65536 then goto 11; while lh>2 do begin get(tfm_file);get(tfm_file);get(tfm_file); get(tfm_file);lh:=lh-1;end;font_dsize[f]:=z; if s<>-1000 then if s>=0 then z:=s else z:=xn_over_d(z,-s,1000); font_size[f]:=z;end{:569}; {570:}for k:=fmem_ptr to width_base[f]-1 do begin begin get(tfm_file); a:=tfm_file^;qw.b0:=a+0;get(tfm_file);b:=tfm_file^;qw.b1:=b+0; get(tfm_file);c:=tfm_file^;qw.b2:=c+0;get(tfm_file);d:=tfm_file^; qw.b3:=d+0;font_info[k].qqqq:=qw;end; if(a>=nw)or(b div 16>=nh)or(b mod 16>=nd)or(c div 4>=ni)then goto 11; case c mod 4 of 1:if d>=nl then goto 11;3:if d>=ne then goto 11; 2:{571:}begin begin if(dec)then goto 11 end; while d2 then goto 45;d:=qw.b3-0;end; if d=k+bc-fmem_ptr then goto 11;45:end{:571};others:end;end{:570}; {572:}begin{573:}begin alpha:=16;while z>=8388608 do begin z:=z div 2; alpha:=alpha+alpha;end;beta:=256 div alpha;alpha:=alpha*z;end{:573}; for k:=width_base[f]to lig_kern_base[f]-1 do begin get(tfm_file); a:=tfm_file^;get(tfm_file);b:=tfm_file^;get(tfm_file);c:=tfm_file^; get(tfm_file);d:=tfm_file^; sw:=(((((d*z)div 256)+(c*z))div 256)+(b*z))div beta; if a=0 then font_info[k].int:=sw else if a=255 then font_info[k].int:=sw -alpha else goto 11;end;if font_info[width_base[f]].int<>0 then goto 11; if font_info[height_base[f]].int<>0 then goto 11; if font_info[depth_base[f]].int<>0 then goto 11; if font_info[italic_base[f]].int<>0 then goto 11;end{:572}; {574:}bch_label:=32767;bchar:=256; if nl>0 then begin for k:=lig_kern_base[f]to kern_base[f]+256*(128)-1 do begin begin get(tfm_file);a:=tfm_file^;qw.b0:=a+0;get(tfm_file); b:=tfm_file^;qw.b1:=b+0;get(tfm_file);c:=tfm_file^;qw.b2:=c+0; get(tfm_file);d:=tfm_file^;qw.b3:=d+0;font_info[k].qqqq:=qw;end; if a>128 then begin if 256*c+d>=nl then goto 11; if a=255 then if k=lig_kern_base[f]then bchar:=b; end else begin if b<>bchar then begin begin if(bec)then goto 11 end;qw:=font_info[char_base[f]+b].qqqq;if not(qw.b0>0)then goto 11;end; if c<128 then begin begin if(dec)then goto 11 end; qw:=font_info[char_base[f]+d].qqqq;if not(qw.b0>0)then goto 11; end else if 256*(c-128)+d>=nk then goto 11; if a<128 then if k-lig_kern_base[f]+a+1>=nl then goto 11;end;end; if a=255 then bch_label:=256*c+d;end; for k:=kern_base[f]+256*(128)to exten_base[f]-1 do begin get(tfm_file); a:=tfm_file^;get(tfm_file);b:=tfm_file^;get(tfm_file);c:=tfm_file^; get(tfm_file);d:=tfm_file^; sw:=(((((d*z)div 256)+(c*z))div 256)+(b*z))div beta; if a=0 then font_info[k].int:=sw else if a=255 then font_info[k].int:=sw -alpha else goto 11;end;{:574}; {575:}for k:=exten_base[f]to param_base[f]-1 do begin begin get(tfm_file );a:=tfm_file^;qw.b0:=a+0;get(tfm_file);b:=tfm_file^;qw.b1:=b+0; get(tfm_file);c:=tfm_file^;qw.b2:=c+0;get(tfm_file);d:=tfm_file^; qw.b3:=d+0;font_info[k].qqqq:=qw;end; if a<>0 then begin begin if(aec)then goto 11 end; qw:=font_info[char_base[f]+a].qqqq;if not(qw.b0>0)then goto 11;end; if b<>0 then begin begin if(bec)then goto 11 end; qw:=font_info[char_base[f]+b].qqqq;if not(qw.b0>0)then goto 11;end; if c<>0 then begin begin if(cec)then goto 11 end; qw:=font_info[char_base[f]+c].qqqq;if not(qw.b0>0)then goto 11;end; begin begin if(dec)then goto 11 end; qw:=font_info[char_base[f]+d].qqqq;if not(qw.b0>0)then goto 11;end; end{:575};{576:}begin for k:=1 to np do if k=1 then begin get(tfm_file); sw:=tfm_file^;if sw>127 then sw:=sw-256;get(tfm_file); sw:=sw*256+tfm_file^;get(tfm_file);sw:=sw*256+tfm_file^;get(tfm_file); font_info[param_base[f]].int:=(sw*16)+(tfm_file^div 16); end else begin get(tfm_file);a:=tfm_file^;get(tfm_file);b:=tfm_file^; get(tfm_file);c:=tfm_file^;get(tfm_file);d:=tfm_file^; sw:=(((((d*z)div 256)+(c*z))div 256)+(b*z))div beta; if a=0 then font_info[param_base[f]+k-1].int:=sw else if a=255 then font_info[param_base[f]+k-1].int:=sw-alpha else goto 11;end; if eof(tfm_file)then goto 11; for k:=np+1 to 7 do font_info[param_base[f]+k-1].int:=0;end{:576}; {577:}if np>=7 then font_params[f]:=np else font_params[f]:=7; hyphen_char[f]:=eqtb[603214].int;skew_char[f]:=eqtb[603215].int; if bch_label=bc then begin qw:=font_info[char_base[f]+ bchar].qqqq;if(qw.b0>0)then font_false_bchar[f]:=256;end; font_name[f]:=nom;font_area[f]:=aire;font_bc[f]:=bc;font_ec[f]:=ec; font_glue[f]:=0;char_base[f]:=char_base[f]-0; width_base[f]:=width_base[f]-0;lig_kern_base[f]:=lig_kern_base[f]-0; kern_base[f]:=kern_base[f]-0;exten_base[f]:=exten_base[f]-0; param_base[f]:=param_base[f]-1;fmem_ptr:=fmem_ptr+lf;font_ptr:=f;g:=f; goto 30{:577}{:563};11:{562:}begin if interaction=3 then;print_nl(264); print(827);end;sprint_cs(u);print_char(61); print_file_name(nom,aire,340);if s>=0 then begin print(764); print_scaled(s);print(401);end else if s<>-1000 then begin print(828); print_int(-s);end;if file_opened then print(829)else print(830); begin help_ptr:=5;help_line[4]:=831;help_line[3]:=832;help_line[2]:=833; help_line[1]:=834;help_line[0]:=835;end;error{:562}; 30:if file_opened then b_close(tfm_file);read_font_info:=g;end; {:561}{582:}procedure char_warning(f:internal_font_number;c:eight_bits); var old_setting:integer; begin if eqtb[603203].int>0 then begin old_setting:=eqtb[603197].int; if(eTeX_mode=1)and(eqtb[603203].int>1)then eqtb[603197].int:=1; begin begin_diagnostic;print_nl(850);print(c);print(851); slow_print(font_name[f]);print_char(33);end_diagnostic(false);end; eqtb[603197].int:=old_setting;end;end; {:582}{583:}function new_character(f:internal_font_number; c:eight_bits):halfword;label 10;var p:halfword; begin if font_bc[f]<=c then if font_ec[f]>=c then if(font_info[char_base [f]+c+0].qqqq.b0>0)then begin p:=get_avail;mem[p].hh.b0:=f; mem[p].hh.b1:=c+0;new_character:=p;goto 10;end;char_warning(f,c); new_character:=0;10:end;{:583}{598:}procedure write_dvi(a,b:dvi_index); var k:dvi_index;begin for k:=a to b do write(dvi_file,dvi_buf[k]);end; {:598}{599:}procedure dvi_swap; begin if dvi_limit=dvi_buf_size then begin write_dvi(0,half_buf-1); dvi_limit:=half_buf;dvi_offset:=dvi_offset+dvi_buf_size;dvi_ptr:=0; end else begin write_dvi(half_buf,dvi_buf_size-1); dvi_limit:=dvi_buf_size;end;dvi_gone:=dvi_gone+half_buf;end; {:599}{601:}procedure dvi_four(x:integer); begin if x>=0 then begin dvi_buf[dvi_ptr]:=x div 16777216; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap; end else begin x:=x+1073741824;x:=x+1073741824; begin dvi_buf[dvi_ptr]:=(x div 16777216)+128;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;end;x:=x mod 16777216; begin dvi_buf[dvi_ptr]:=x div 65536;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;x:=x mod 65536; begin dvi_buf[dvi_ptr]:=x div 256;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; begin dvi_buf[dvi_ptr]:=x mod 256;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;end; {:601}{602:}procedure dvi_pop(l:integer); begin if(l=dvi_offset+dvi_ptr)and(dvi_ptr>0)then dvi_ptr:=dvi_ptr-1 else begin dvi_buf[dvi_ptr]:=142;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;end; {:602}{603:}procedure dvi_font_def(f:internal_font_number); var k:pool_pointer;begin begin dvi_buf[dvi_ptr]:=243;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;begin dvi_buf[dvi_ptr]:=f-1; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; begin dvi_buf[dvi_ptr]:=font_check[f].b0-0;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; begin dvi_buf[dvi_ptr]:=font_check[f].b1-0;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; begin dvi_buf[dvi_ptr]:=font_check[f].b2-0;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; begin dvi_buf[dvi_ptr]:=font_check[f].b3-0;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;dvi_four(font_size[f]); dvi_four(font_dsize[f]); begin dvi_buf[dvi_ptr]:=(str_start[font_area[f]+1]-str_start[font_area[f ]]);dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; begin dvi_buf[dvi_ptr]:=(str_start[font_name[f]+1]-str_start[font_name[f ]]);dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; {604:}for k:=str_start[font_area[f]]to str_start[font_area[f]+1]-1 do begin dvi_buf[dvi_ptr]:=str_pool[k];dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; for k:=str_start[font_name[f]]to str_start[font_name[f]+1]-1 do begin dvi_buf[dvi_ptr]:=str_pool[k];dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end{:604};end; {:603}{608:}procedure movement(w:scaled;o:eight_bits); label 10,40,45,2,1;var mstate:small_number;p,q:halfword;k:integer; begin q:=get_node(3);mem[q+1].int:=w;mem[q+2].int:=dvi_offset+dvi_ptr; if o=157 then begin mem[q].hh.rh:=down_ptr;down_ptr:=q; end else begin mem[q].hh.rh:=right_ptr;right_ptr:=q;end; {612:}p:=mem[q].hh.rh;mstate:=0; while p<>0 do begin if mem[p+1].int=w then{613:}case mstate+mem[p].hh.lh of 3,4,15,16:if mem[p+2].int=8388608 then begin begin dvi_buf[dvi_ptr]:=o+3; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end;dvi_four(w); goto 10;end;if abs(w)>=32768 then begin begin dvi_buf[dvi_ptr]:=o+2; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; if w<0 then w:=w+16777216;begin dvi_buf[dvi_ptr]:=w div 65536; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; w:=w mod 65536;goto 2;end; if abs(w)>=128 then begin begin dvi_buf[dvi_ptr]:=o+1; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; if w<0 then w:=w+65536;goto 2;end;begin dvi_buf[dvi_ptr]:=o; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; if w<0 then w:=w+256;goto 1;2:begin dvi_buf[dvi_ptr]:=w div 256; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; 1:begin dvi_buf[dvi_ptr]:=w mod 256;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;goto 10{:611}; 40:{610:}mem[q].hh.lh:=mem[p].hh.lh; if mem[q].hh.lh=1 then begin begin dvi_buf[dvi_ptr]:=o+4; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; while mem[q].hh.rh<>p do begin q:=mem[q].hh.rh; case mem[q].hh.lh of 3:mem[q].hh.lh:=5;4:mem[q].hh.lh:=6;others:end;end; end else begin begin dvi_buf[dvi_ptr]:=o+9;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; while mem[q].hh.rh<>p do begin q:=mem[q].hh.rh; case mem[q].hh.lh of 3:mem[q].hh.lh:=4;5:mem[q].hh.lh:=6;others:end;end; end{:610};10:end;{:608}{616:}procedure prune_movements(l:integer); label 30,10;var p:halfword; begin while down_ptr<>0 do begin if mem[down_ptr+2].int0 do begin if mem[right_ptr+2].intdvi_h then begin movement(cur_h-dvi_h,143);dvi_h:=cur_h; end;if cur_v<>dvi_v then begin movement(cur_v-dvi_v,157);dvi_v:=cur_v; end;old_setting:=selector;selector:=21; show_token_list(mem[mem[p+1].hh.rh].hh.rh,0,pool_size-pool_ptr); selector:=old_setting; begin if pool_ptr+1>pool_size then overflow(259,pool_size-init_pool_ptr) ;end; if(pool_ptr-str_start[str_ptr])<256 then begin begin dvi_buf[dvi_ptr]:= 239;dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; begin dvi_buf[dvi_ptr]:=(pool_ptr-str_start[str_ptr]); dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; end else begin begin dvi_buf[dvi_ptr]:=242;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; dvi_four((pool_ptr-str_start[str_ptr]));end; for k:=str_start[str_ptr]to pool_ptr-1 do begin dvi_buf[dvi_ptr]:= str_pool[k];dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; pool_ptr:=str_start[str_ptr];end; {:1369}{1371:}procedure write_out(p:halfword);var old_setting:0..21; old_mode:integer;j:small_number;q,r:halfword;begin{1372:}q:=get_avail; mem[q].hh.lh:=637;r:=get_avail;mem[q].hh.rh:=r;mem[r].hh.lh:=604617; begin_token_list(q,4);begin_token_list(mem[p+1].hh.rh,16);q:=get_avail; mem[q].hh.lh:=379;begin_token_list(q,4);old_mode:=cur_list.mode_field; cur_list.mode_field:=0;cur_cs:=write_loc;q:=scan_toks(false,true); get_token; if cur_tok<>604617 then{1373:}begin begin if interaction=3 then; print_nl(264);print(1324);end;begin help_ptr:=2;help_line[1]:=1325; help_line[0]:=1038;end;error;repeat get_token;until cur_tok=604617; end{:1373};cur_list.mode_field:=old_mode;end_token_list{:1372}; old_setting:=selector;j:=mem[p+1].hh.lh; if write_open[j]then selector:=j else begin if(j=17)and(selector=19)then selector:=18;print_nl(340);end;token_show(def_ref);print_ln; flush_list(def_ref);selector:=old_setting;end; {:1371}{1374:}procedure out_what(p:halfword);var j:small_number; begin case mem[p].hh.b1 of 0,1,2:{1375:}if not doing_leaders then begin j:=mem[p+1].hh.lh; if mem[p].hh.b1=1 then write_out(p)else begin if write_open[j]then a_close(write_file[j]); if mem[p].hh.b1=2 then write_open[j]:=false else if j<16 then begin cur_name:=mem[p+1].hh.rh;cur_area:=mem[p+2].hh.lh; cur_ext:=mem[p+2].hh.rh;if cur_ext=340 then cur_ext:=816; pack_file_name(cur_name,cur_area,cur_ext); while not a_open_out(write_file[j])do prompt_file_name(1327,816); write_open[j]:=true; if log_opened and(eTeX_mode=1)then begin old_setting:=selector; if(eqtb[603197].int<=0)then selector:=18 else selector:=19; print_nl(1328);print_int(j);print(1329); print_file_name(cur_name,cur_area,cur_ext);print(815);print_nl(340); print_ln;selector:=old_setting;end;end;end;end{:1375};3:special_out(p); 4:;others:confusion(1326)end;end; {:1374}{1451:}function new_edge(s:small_number;w:scaled):halfword; var p:halfword;begin p:=get_node(3);mem[p].hh.b0:=14;mem[p].hh.b1:=s; mem[p+1].int:=w;mem[p+2].int:=0;new_edge:=p;end; {:1451}{1455:}function reverse(this_box,t:halfword;var cur_g:scaled; var cur_glue:real):halfword;label 21,15,30;var l:halfword;p:halfword; q:halfword;g_order:glue_ord;g_sign:0..2;glue_temp:real;m,n:halfword; begin g_order:=mem[this_box+5].hh.b1;g_sign:=mem[this_box+5].hh.b0;l:=t; p:=temp_ptr;m:=0;n:=0; while true do begin while p<>0 do{1460:}21:if(p>=hi_mem_min)then repeat f:=mem[p].hh.b0;c:=mem[p].hh.b1; cur_h:=cur_h+font_info[width_base[f]+font_info[char_base[f]+c].qqqq.b0]. int;q:=mem[p].hh.rh;mem[p].hh.rh:=l;l:=p;p:=q; until not(p>=hi_mem_min)else{1461:}begin q:=mem[p].hh.rh; case mem[p].hh.b0 of 0,1,2,11:rule_wd:=mem[p+1].int; {1462:}10:begin g:=mem[p+1].hh.lh;rule_wd:=mem[g+1].int-cur_g; if g_sign<>0 then begin if g_sign=1 then begin if mem[g].hh.b0=g_order then begin cur_glue:=cur_glue+mem[g+2].int; glue_temp:=mem[this_box+6].gr*cur_glue; if glue_temp>1000000000.0 then glue_temp:=1000000000.0 else if glue_temp <-1000000000.0 then glue_temp:=-1000000000.0;cur_g:=round(glue_temp); end; end else if mem[g].hh.b1=g_order then begin cur_glue:=cur_glue-mem[g+3]. int;glue_temp:=mem[this_box+6].gr*cur_glue; if glue_temp>1000000000.0 then glue_temp:=1000000000.0 else if glue_temp <-1000000000.0 then glue_temp:=-1000000000.0;cur_g:=round(glue_temp); end;end;rule_wd:=rule_wd+cur_g; {1431:}if(((g_sign=1)and(mem[g].hh.b0=g_order))or((g_sign=2)and(mem[g]. hh.b1=g_order)))then begin begin if mem[g].hh.rh=0 then free_node(g,4) else mem[g].hh.rh:=mem[g].hh.rh-1;end; if mem[p].hh.b1<100 then begin mem[p].hh.b0:=11;mem[p+1].int:=rule_wd; end else begin g:=get_node(4);mem[g].hh.b0:=4;mem[g].hh.b1:=4; mem[g+1].int:=rule_wd;mem[g+2].int:=0;mem[g+3].int:=0;mem[p+1].hh.lh:=g; end;end{:1431};end; {:1462}{1463:}6:begin flush_node_list(mem[p+1].hh.rh);temp_ptr:=p; p:=get_avail;mem[p]:=mem[temp_ptr+1];mem[p].hh.rh:=q; free_node(temp_ptr,2);goto 21;end; {:1463}{1464:}9:begin rule_wd:=mem[p+1].int; if odd(mem[p].hh.b1)then if mem[LR_ptr].hh.lh<>(4*(mem[p].hh.b1 div 4)+3 )then begin mem[p].hh.b0:=11;LR_problems:=LR_problems+1; end else begin begin temp_ptr:=LR_ptr;LR_ptr:=mem[temp_ptr].hh.rh; begin mem[temp_ptr].hh.rh:=avail;avail:=temp_ptr;{dyn_used:=dyn_used-1;} end;end;if n>0 then begin n:=n-1;mem[p].hh.b1:=mem[p].hh.b1-1; end else begin mem[p].hh.b0:=11; if m>0 then m:=m-1 else{1465:}begin free_node(p,2);mem[t].hh.rh:=q; mem[t+1].int:=rule_wd;mem[t+2].int:=-cur_h-rule_wd;goto 30;end{:1465}; end;end else begin begin temp_ptr:=get_avail; mem[temp_ptr].hh.lh:=(4*(mem[p].hh.b1 div 4)+3); mem[temp_ptr].hh.rh:=LR_ptr;LR_ptr:=temp_ptr;end; if(n>0)or((mem[p].hh.b1 div 8)<>cur_dir)then begin n:=n+1; mem[p].hh.b1:=mem[p].hh.b1+1;end else begin mem[p].hh.b0:=11;m:=m+1;end; end;end;{:1464}14:confusion(1391);others:goto 15 end; cur_h:=cur_h+rule_wd;15:mem[p].hh.rh:=l; if mem[p].hh.b0=11 then if(rule_wd=0)or(l=0)then begin free_node(p,2); p:=l;end;l:=p;p:=q;end{:1461}{:1460}; if(t=0)and(m=0)and(n=0)then goto 30;p:=new_math(0,mem[LR_ptr].hh.lh); LR_problems:=LR_problems+10000;end;30:reverse:=l;end; {:1455}{1456:}{[1457:]function new_segment(s:small_number; f:halfword):halfword;var p:halfword;begin p:=get_node(3); mem[p].hh.b0:=14;mem[p].hh.b1:=s;mem[p+1].int:=0;mem[p+2].hh.lh:=f; mem[p+2].hh.rh:=f;new_segment:=p;end; [:1457][1459:]function has_whatsit(p:halfword):boolean;label 10; begin p:=mem[p+5].hh.rh;has_whatsit:=true; while p<>0 do begin if not(p>=hi_mem_min)then case mem[p].hh.b0 of 0,1: if has_whatsit(p)then goto 10;8:goto 10;others:end;p:=mem[p].hh.rh;end; has_whatsit:=false;10:end;[:1459]function reverse(this_box,t:halfword; var cur_g:scaled;var cur_glue:real):halfword;label 21,15,30; var l:halfword;p:halfword;q:halfword;g_order:glue_ord;g_sign:0..2; glue_temp:real;m,n:halfword;begin g_order:=mem[this_box+5].hh.b1; g_sign:=mem[this_box+5].hh.b0;[1458:]begin end[:1458];l:=t;p:=temp_ptr; m:=0;n:=0; while true do begin while p<>0 do[1460:]21:if(p>=hi_mem_min)then repeat f:=mem[p].hh.b0;c:=mem[p].hh.b1; cur_h:=cur_h+font_info[width_base[f]+font_info[char_base[f]+c].qqqq.b0]. int;q:=mem[p].hh.rh;mem[p].hh.rh:=l;l:=p;p:=q; until not(p>=hi_mem_min)else[1461:]begin q:=mem[p].hh.rh; case mem[p].hh.b0 of 0,1,2,11:rule_wd:=mem[p+1].int; [1462:]10:begin g:=mem[p+1].hh.lh;rule_wd:=mem[g+1].int-cur_g; if g_sign<>0 then begin if g_sign=1 then begin if mem[g].hh.b0=g_order then begin cur_glue:=cur_glue+mem[g+2].int; glue_temp:=mem[this_box+6].gr*cur_glue; if glue_temp>1000000000.0 then glue_temp:=1000000000.0 else if glue_temp <-1000000000.0 then glue_temp:=-1000000000.0;cur_g:=round(glue_temp); end; end else if mem[g].hh.b1=g_order then begin cur_glue:=cur_glue-mem[g+3]. int;glue_temp:=mem[this_box+6].gr*cur_glue; if glue_temp>1000000000.0 then glue_temp:=1000000000.0 else if glue_temp <-1000000000.0 then glue_temp:=-1000000000.0;cur_g:=round(glue_temp); end;end;rule_wd:=rule_wd+cur_g; [1431:]if(((g_sign=1)and(mem[g].hh.b0=g_order))or((g_sign=2)and(mem[g]. hh.b1=g_order)))then begin begin if mem[g].hh.rh=0 then free_node(g,4) else mem[g].hh.rh:=mem[g].hh.rh-1;end; if mem[p].hh.b1<100 then begin mem[p].hh.b0:=11;mem[p+1].int:=rule_wd; end else begin g:=get_node(4);mem[g].hh.b0:=4;mem[g].hh.b1:=4; mem[g+1].int:=rule_wd;mem[g+2].int:=0;mem[g+3].int:=0;mem[p+1].hh.lh:=g; end;end[:1431];end; [:1462][1463:]6:begin flush_node_list(mem[p+1].hh.rh);temp_ptr:=p; p:=get_avail;mem[p]:=mem[temp_ptr+1];mem[p].hh.rh:=q; free_node(temp_ptr,2);goto 21;end; [:1463][1464:]9:begin rule_wd:=mem[p+1].int; if odd(mem[p].hh.b1)then if mem[LR_ptr].hh.lh<>(4*(mem[p].hh.b1 div 4)+3 )then begin mem[p].hh.b0:=11;LR_problems:=LR_problems+1; end else begin begin temp_ptr:=LR_ptr;LR_ptr:=mem[temp_ptr].hh.rh; begin mem[temp_ptr].hh.rh:=avail;avail:=temp_ptr;[dyn_used:=dyn_used-1; ]end;end;if n>0 then begin n:=n-1;mem[p].hh.b1:=mem[p].hh.b1-1; end else begin mem[p].hh.b0:=11; if m>0 then m:=m-1 else[1465:]begin free_node(p,2);mem[t].hh.rh:=q; mem[t+1].int:=rule_wd;mem[t+2].int:=-cur_h-rule_wd;goto 30;end[:1465]; end;end else begin begin temp_ptr:=get_avail; mem[temp_ptr].hh.lh:=(4*(mem[p].hh.b1 div 4)+3); mem[temp_ptr].hh.rh:=LR_ptr;LR_ptr:=temp_ptr;end; if(n>0)or((mem[p].hh.b1 div 8)<>cur_dir)then begin n:=n+1; mem[p].hh.b1:=mem[p].hh.b1+1;end else begin mem[p].hh.b0:=11;m:=m+1;end; end;end;[:1464]14:confusion(1391);others:goto 15 end; cur_h:=cur_h+rule_wd;15:mem[p].hh.rh:=l; if mem[p].hh.b0=11 then if(rule_wd=0)or(l=0)then begin free_node(p,2); p:=l;end;l:=p;p:=q;end[:1461][:1460]; if(t=0)and(m=0)and(n=0)then goto 30;p:=new_math(0,mem[LR_ptr].hh.lh); LR_problems:=LR_problems+10000;end;30:reverse:=l;end;} {:1456}procedure hlist_out;label 21,13,14,15;var base_line:scaled; left_edge:scaled;save_h,save_v:scaled;this_box:halfword; g_order:glue_ord;g_sign:0..2;p:halfword;save_loc:integer; leader_box:halfword;leader_wd:scaled;lx:scaled; outer_doing_leaders:boolean;edge:scaled;prev_p:halfword;glue_temp:real; cur_glue:real;cur_g:scaled;begin cur_g:=0;cur_glue:=0.0; this_box:=temp_ptr;g_order:=mem[this_box+5].hh.b1; g_sign:=mem[this_box+5].hh.b0;p:=mem[this_box+5].hh.rh;cur_s:=cur_s+1; if cur_s>0 then begin dvi_buf[dvi_ptr]:=141;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; if cur_s>max_push then max_push:=cur_s;save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v;prev_p:=this_box+5; {1446:}if(eTeX_mode=1)then begin{1442:}begin temp_ptr:=get_avail; mem[temp_ptr].hh.lh:=0;mem[temp_ptr].hh.rh:=LR_ptr;LR_ptr:=temp_ptr; end{:1442}; if(mem[this_box].hh.b1-0)=2 then if cur_dir=1 then begin cur_dir:=0; cur_h:=cur_h-mem[this_box+1].int;end else mem[this_box].hh.b1:=0; if(cur_dir=1)and((mem[this_box].hh.b1-0)<>1)then{1453:}begin save_h:= cur_h;temp_ptr:=p;p:=new_kern(0);mem[prev_p].hh.rh:=p;cur_h:=0; mem[p].hh.rh:=reverse(this_box,0,cur_g,cur_glue);mem[p+1].int:=-cur_h; cur_h:=save_h;mem[this_box].hh.b1:=1;end{:1453};end{:1446}; left_edge:=cur_h; while p<>0 do{621:}21:if(p>=hi_mem_min)then begin if cur_h<>dvi_h then begin movement(cur_h-dvi_h,143);dvi_h:=cur_h;end; if cur_v<>dvi_v then begin movement(cur_v-dvi_v,157);dvi_v:=cur_v;end; repeat f:=mem[p].hh.b0;c:=mem[p].hh.b1; if f<>dvi_f then{622:}begin if not font_used[f]then begin dvi_font_def(f );font_used[f]:=true;end;if f<=64 then begin dvi_buf[dvi_ptr]:=f+170; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap; end else begin begin dvi_buf[dvi_ptr]:=235;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;begin dvi_buf[dvi_ptr]:=f-1; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end;end;dvi_f:=f; end{:622};if c>=128 then begin dvi_buf[dvi_ptr]:=128;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;begin dvi_buf[dvi_ptr]:=c-0; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; cur_h:=cur_h+font_info[width_base[f]+font_info[char_base[f]+c].qqqq.b0]. int;prev_p:=mem[prev_p].hh.rh;p:=mem[p].hh.rh;until not(p>=hi_mem_min); dvi_h:=cur_h; end else{623:}begin case mem[p].hh.b0 of 0,1:{624:}if mem[p+5].hh.rh=0 then cur_h:=cur_h+mem[p+1].int else begin save_h:=dvi_h;save_v:=dvi_v; cur_v:=base_line+mem[p+4].int;temp_ptr:=p;edge:=cur_h+mem[p+1].int; if cur_dir=1 then cur_h:=edge; if mem[p].hh.b0=1 then vlist_out else hlist_out;dvi_h:=save_h; dvi_v:=save_v;cur_h:=edge;cur_v:=base_line;end{:624}; 2:begin rule_ht:=mem[p+3].int;rule_dp:=mem[p+2].int; rule_wd:=mem[p+1].int;goto 14;end;8:{1368:}out_what(p){:1368}; 10:{626:}begin g:=mem[p+1].hh.lh;rule_wd:=mem[g+1].int-cur_g; if g_sign<>0 then begin if g_sign=1 then begin if mem[g].hh.b0=g_order then begin cur_glue:=cur_glue+mem[g+2].int; glue_temp:=mem[this_box+6].gr*cur_glue; if glue_temp>1000000000.0 then glue_temp:=1000000000.0 else if glue_temp <-1000000000.0 then glue_temp:=-1000000000.0;cur_g:=round(glue_temp); end; end else if mem[g].hh.b1=g_order then begin cur_glue:=cur_glue-mem[g+3]. int;glue_temp:=mem[this_box+6].gr*cur_glue; if glue_temp>1000000000.0 then glue_temp:=1000000000.0 else if glue_temp <-1000000000.0 then glue_temp:=-1000000000.0;cur_g:=round(glue_temp); end;end;rule_wd:=rule_wd+cur_g; if(eTeX_mode=1)then{1431:}if(((g_sign=1)and(mem[g].hh.b0=g_order))or(( g_sign=2)and(mem[g].hh.b1=g_order)))then begin begin if mem[g].hh.rh=0 then free_node(g,4)else mem[g].hh.rh:=mem[g].hh.rh-1;end; if mem[p].hh.b1<100 then begin mem[p].hh.b0:=11;mem[p+1].int:=rule_wd; end else begin g:=get_node(4);mem[g].hh.b0:=4;mem[g].hh.b1:=4; mem[g+1].int:=rule_wd;mem[g+2].int:=0;mem[g+3].int:=0;mem[p+1].hh.lh:=g; end;end{:1431}; if mem[p].hh.b1>=100 then{627:}begin leader_box:=mem[p+1].hh.rh; if mem[leader_box].hh.b0=2 then begin rule_ht:=mem[leader_box+3].int; rule_dp:=mem[leader_box+2].int;goto 14;end; leader_wd:=mem[leader_box+1].int; if(leader_wd>0)and(rule_wd>0)then begin rule_wd:=rule_wd+10; if cur_dir=1 then cur_h:=cur_h-10;edge:=cur_h+rule_wd;lx:=0; {628:}if mem[p].hh.b1=100 then begin save_h:=cur_h; cur_h:=left_edge+leader_wd*((cur_h-left_edge)div leader_wd); if cur_hdvi_v then begin movement(cur_v-dvi_v,157); dvi_v:=cur_v;end;save_v:=dvi_v; if cur_h<>dvi_h then begin movement(cur_h-dvi_h,143);dvi_h:=cur_h;end; save_h:=dvi_h;temp_ptr:=leader_box; if cur_dir=1 then cur_h:=cur_h+leader_wd; outer_doing_leaders:=doing_leaders;doing_leaders:=true; if mem[leader_box].hh.b0=1 then vlist_out else hlist_out; doing_leaders:=outer_doing_leaders;dvi_v:=save_v;dvi_h:=save_h; cur_v:=base_line;cur_h:=save_h+leader_wd+lx;end{:629}; if cur_dir=1 then cur_h:=edge else cur_h:=edge-10;goto 15;end;end{:627}; goto 13;end{:626};11:cur_h:=cur_h+mem[p+1].int; 9:{1448:}begin if(eTeX_mode=1)then{1449:}begin if odd(mem[p].hh.b1)then if mem[LR_ptr].hh.lh=(4*(mem[p].hh.b1 div 4)+3)then begin temp_ptr:= LR_ptr;LR_ptr:=mem[temp_ptr].hh.rh;begin mem[temp_ptr].hh.rh:=avail; avail:=temp_ptr;{dyn_used:=dyn_used-1;}end; end else begin if mem[p].hh.b1>4 then LR_problems:=LR_problems+1; end else begin begin temp_ptr:=get_avail; mem[temp_ptr].hh.lh:=(4*(mem[p].hh.b1 div 4)+3); mem[temp_ptr].hh.rh:=LR_ptr;LR_ptr:=temp_ptr;end; if(mem[p].hh.b1 div 8)<>cur_dir then{1454:}begin save_h:=cur_h; temp_ptr:=mem[p].hh.rh;rule_wd:=mem[p+1].int;free_node(p,2); cur_dir:=1-cur_dir;p:=new_edge(cur_dir,rule_wd);mem[prev_p].hh.rh:=p; cur_h:=cur_h-left_edge+rule_wd; mem[p].hh.rh:=reverse(this_box,new_edge(1-cur_dir,0),cur_g,cur_glue); mem[p+2].int:=cur_h;cur_dir:=1-cur_dir;cur_h:=save_h;goto 21;end{:1454}; end;mem[p].hh.b0:=11;end{:1449};cur_h:=cur_h+mem[p+1].int;end{:1448}; 6:{653:}begin mem[7999988]:=mem[p+1];mem[7999988].hh.rh:=mem[p].hh.rh; p:=7999988;goto 21;end{:653};{1452:}14:begin cur_h:=cur_h+mem[p+1].int; left_edge:=cur_h+mem[p+2].int;cur_dir:=mem[p].hh.b1;end; {:1452}others:end;goto 15; 14:{625:}if(rule_ht=-1073741824)then rule_ht:=mem[this_box+3].int; if(rule_dp=-1073741824)then rule_dp:=mem[this_box+2].int; rule_ht:=rule_ht+rule_dp; if(rule_ht>0)and(rule_wd>0)then begin if cur_h<>dvi_h then begin movement(cur_h-dvi_h,143);dvi_h:=cur_h;end;cur_v:=base_line+rule_dp; if cur_v<>dvi_v then begin movement(cur_v-dvi_v,157);dvi_v:=cur_v;end; begin dvi_buf[dvi_ptr]:=132;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;dvi_four(rule_ht); dvi_four(rule_wd);cur_v:=base_line;dvi_h:=dvi_h+rule_wd;end{:625}; 13:cur_h:=cur_h+rule_wd;15:prev_p:=p;p:=mem[p].hh.rh;end{:623}{:621}; {1447:}if(eTeX_mode=1)then begin{1450:}begin while mem[LR_ptr].hh.lh<>0 do begin if mem[LR_ptr].hh.lh>4 then LR_problems:=LR_problems+10000; begin temp_ptr:=LR_ptr;LR_ptr:=mem[temp_ptr].hh.rh; begin mem[temp_ptr].hh.rh:=avail;avail:=temp_ptr;{dyn_used:=dyn_used-1;} end;end;end;begin temp_ptr:=LR_ptr;LR_ptr:=mem[temp_ptr].hh.rh; begin mem[temp_ptr].hh.rh:=avail;avail:=temp_ptr;{dyn_used:=dyn_used-1;} end;end;end{:1450};if(mem[this_box].hh.b1-0)=2 then cur_dir:=1; end{:1447};prune_movements(save_loc);if cur_s>0 then dvi_pop(save_loc); cur_s:=cur_s-1;end;{:620}{630:}procedure vlist_out;label 13,14,15; var left_edge:scaled;top_edge:scaled;save_h,save_v:scaled; this_box:halfword;g_order:glue_ord;g_sign:0..2;p:halfword; save_loc:integer;leader_box:halfword;leader_ht:scaled;lx:scaled; outer_doing_leaders:boolean;edge:scaled;glue_temp:real;cur_glue:real; cur_g:scaled;begin cur_g:=0;cur_glue:=0.0;this_box:=temp_ptr; g_order:=mem[this_box+5].hh.b1;g_sign:=mem[this_box+5].hh.b0; p:=mem[this_box+5].hh.rh;cur_s:=cur_s+1; if cur_s>0 then begin dvi_buf[dvi_ptr]:=141;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; if cur_s>max_push then max_push:=cur_s;save_loc:=dvi_offset+dvi_ptr; left_edge:=cur_h;cur_v:=cur_v-mem[this_box+3].int;top_edge:=cur_v; while p<>0 do{631:}begin if(p>=hi_mem_min)then confusion(853)else{632:} begin case mem[p].hh.b0 of 0,1:{633:}if mem[p+5].hh.rh=0 then cur_v:= cur_v+mem[p+3].int+mem[p+2].int else begin cur_v:=cur_v+mem[p+3].int; if cur_v<>dvi_v then begin movement(cur_v-dvi_v,157);dvi_v:=cur_v;end; save_h:=dvi_h;save_v:=dvi_v; if cur_dir=1 then cur_h:=left_edge-mem[p+4].int else cur_h:=left_edge+ mem[p+4].int;temp_ptr:=p; if mem[p].hh.b0=1 then vlist_out else hlist_out;dvi_h:=save_h; dvi_v:=save_v;cur_v:=save_v+mem[p+2].int;cur_h:=left_edge;end{:633}; 2:begin rule_ht:=mem[p+3].int;rule_dp:=mem[p+2].int; rule_wd:=mem[p+1].int;goto 14;end;8:{1367:}out_what(p){:1367}; 10:{635:}begin g:=mem[p+1].hh.lh;rule_ht:=mem[g+1].int-cur_g; if g_sign<>0 then begin if g_sign=1 then begin if mem[g].hh.b0=g_order then begin cur_glue:=cur_glue+mem[g+2].int; glue_temp:=mem[this_box+6].gr*cur_glue; if glue_temp>1000000000.0 then glue_temp:=1000000000.0 else if glue_temp <-1000000000.0 then glue_temp:=-1000000000.0;cur_g:=round(glue_temp); end; end else if mem[g].hh.b1=g_order then begin cur_glue:=cur_glue-mem[g+3]. int;glue_temp:=mem[this_box+6].gr*cur_glue; if glue_temp>1000000000.0 then glue_temp:=1000000000.0 else if glue_temp <-1000000000.0 then glue_temp:=-1000000000.0;cur_g:=round(glue_temp); end;end;rule_ht:=rule_ht+cur_g; if mem[p].hh.b1>=100 then{636:}begin leader_box:=mem[p+1].hh.rh; if mem[leader_box].hh.b0=2 then begin rule_wd:=mem[leader_box+1].int; rule_dp:=0;goto 14;end; leader_ht:=mem[leader_box+3].int+mem[leader_box+2].int; if(leader_ht>0)and(rule_ht>0)then begin rule_ht:=rule_ht+10; edge:=cur_v+rule_ht;lx:=0; {637:}if mem[p].hh.b1=100 then begin save_v:=cur_v; cur_v:=top_edge+leader_ht*((cur_v-top_edge)div leader_ht); if cur_vdvi_h then begin movement(cur_h-dvi_h,143);dvi_h:=cur_h; end;save_h:=dvi_h;cur_v:=cur_v+mem[leader_box+3].int; if cur_v<>dvi_v then begin movement(cur_v-dvi_v,157);dvi_v:=cur_v;end; save_v:=dvi_v;temp_ptr:=leader_box;outer_doing_leaders:=doing_leaders; doing_leaders:=true; if mem[leader_box].hh.b0=1 then vlist_out else hlist_out; doing_leaders:=outer_doing_leaders;dvi_v:=save_v;dvi_h:=save_h; cur_h:=left_edge;cur_v:=save_v-mem[leader_box+3].int+leader_ht+lx; end{:638};cur_v:=edge-10;goto 15;end;end{:636};goto 13;end{:635}; 11:cur_v:=cur_v+mem[p+1].int;others:end;goto 15; 14:{634:}if(rule_wd=-1073741824)then rule_wd:=mem[this_box+1].int; rule_ht:=rule_ht+rule_dp;cur_v:=cur_v+rule_ht; if(rule_ht>0)and(rule_wd>0)then begin if cur_dir=1 then cur_h:=cur_h- rule_wd;if cur_h<>dvi_h then begin movement(cur_h-dvi_h,143); dvi_h:=cur_h;end;if cur_v<>dvi_v then begin movement(cur_v-dvi_v,157); dvi_v:=cur_v;end;begin dvi_buf[dvi_ptr]:=137;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;dvi_four(rule_ht); dvi_four(rule_wd);cur_h:=left_edge;end;goto 15{:634}; 13:cur_v:=cur_v+rule_ht;end{:632};15:p:=mem[p].hh.rh;end{:631}; prune_movements(save_loc);if cur_s>0 then dvi_pop(save_loc); cur_s:=cur_s-1;end;{:630}{639:}procedure ship_out(p:halfword);label 30; var page_loc:integer;j,k:0..9;s:pool_pointer;old_setting:0..21; begin if eqtb[603202].int>0 then begin print_nl(340);print_ln; print(854);end; if term_offset>max_print_line-9 then print_ln else if(term_offset>0)or( file_offset>0)then print_char(32);print_char(91);j:=9; while(eqtb[603233+j].int=0)and(j>0)do j:=j-1; for k:=0 to j do begin print_int(eqtb[603233+k].int); if k0 then begin print_char(93);begin_diagnostic; show_box(p);end_diagnostic(true);end; {641:}{642:}if(mem[p+3].int>1073741823)or(mem[p+2].int>1073741823)or(mem [p+3].int+mem[p+2].int+eqtb[603764].int>1073741823)or(mem[p+1].int+eqtb[ 603763].int>1073741823)then begin begin if interaction=3 then; print_nl(264);print(858);end;begin help_ptr:=2;help_line[1]:=859; help_line[0]:=860;end;error; if eqtb[603202].int<=0 then begin begin_diagnostic;print_nl(861); show_box(p);end_diagnostic(true);end;goto 30;end; if mem[p+3].int+mem[p+2].int+eqtb[603764].int>max_v then max_v:=mem[p+3] .int+mem[p+2].int+eqtb[603764].int; if mem[p+1].int+eqtb[603763].int>max_h then max_h:=mem[p+1].int+eqtb[ 603763].int{:642};{618:}dvi_h:=0;dvi_v:=0;cur_h:=eqtb[603763].int; dvi_f:=0; if output_file_name=0 then begin if job_name=0 then open_log_file; pack_job_name(819); while not b_open_out(dvi_file)do prompt_file_name(820,819); output_file_name:=b_make_name_string(dvi_file);end; if total_pages=0 then begin begin dvi_buf[dvi_ptr]:=247; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; begin dvi_buf[dvi_ptr]:=2;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;dvi_four(25400000); dvi_four(473628672);prepare_mag;dvi_four(eqtb[603185].int); old_setting:=selector;selector:=21;print(852); print_int(eqtb[603191].int);print_char(46);print_two(eqtb[603190].int); print_char(46);print_two(eqtb[603189].int);print_char(58); print_two(eqtb[603188].int div 60);print_two(eqtb[603188].int mod 60); selector:=old_setting; begin dvi_buf[dvi_ptr]:=(pool_ptr-str_start[str_ptr]); dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; for s:=str_start[str_ptr]to pool_ptr-1 do begin dvi_buf[dvi_ptr]:= str_pool[s];dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; pool_ptr:=str_start[str_ptr];end{:618};page_loc:=dvi_offset+dvi_ptr; begin dvi_buf[dvi_ptr]:=139;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; for k:=0 to 9 do dvi_four(eqtb[603233+k].int);dvi_four(last_bop); last_bop:=page_loc;cur_v:=mem[p+3].int+eqtb[603764].int;temp_ptr:=p; if mem[p].hh.b0=1 then vlist_out else hlist_out; begin dvi_buf[dvi_ptr]:=140;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;total_pages:=total_pages+1; cur_s:=-1;30:{:641}; if(eTeX_mode=1)then{1466:}begin if LR_problems>0 then begin{1445:}begin print_ln;print_nl(1388);print_int(LR_problems div 10000);print(1389); print_int(LR_problems mod 10000);print(1390);LR_problems:=0;end{:1445}; print_char(41);print_ln;end; if(LR_ptr<>0)or(cur_dir<>0)then confusion(1392);end{:1466}; if eqtb[603202].int<=0 then print_char(93);dead_cycles:=0; break(term_out);{640:}{if eqtb[603199].int>1 then begin print_nl(855); print_int(var_used);print_char(38);print_int(dyn_used);print_char(59); end;}flush_node_list(p);{if eqtb[603199].int>1 then begin print(856); print_int(var_used);print_char(38);print_int(dyn_used);print(857); print_int(hi_mem_min-lo_mem_max-1);print_ln;end;}{:640};end; {:639}{646:}procedure scan_spec(c:group_code;three_codes:boolean); label 40;var s:integer;spec_code:0..1; begin if three_codes then s:=save_stack[save_ptr+0].int; if scan_keyword(867)then spec_code:=0 else if scan_keyword(868)then spec_code:=1 else begin spec_code:=1;cur_val:=0;goto 40;end; scan_dimen(false,false,false); 40:if three_codes then begin save_stack[save_ptr+0].int:=s; save_ptr:=save_ptr+1;end;save_stack[save_ptr+0].int:=spec_code; save_stack[save_ptr+1].int:=cur_val;save_ptr:=save_ptr+2; new_save_level(c);scan_left_brace;end; {:646}{650:}function hpack(p:halfword;w:scaled;m:small_number):halfword; label 21,50,10;var r:halfword;q:halfword;h,d,x:scaled;s:scaled; g:halfword;o:glue_ord;f:internal_font_number;i:four_quarters; hd:eight_bits;begin last_badness:=0;r:=get_node(7);mem[r].hh.b0:=0; mem[r].hh.b1:=0;mem[r+4].int:=0;q:=r+5;mem[q].hh.rh:=p;h:=0;{651:}d:=0; x:=0;total_stretch[0]:=0;total_shrink[0]:=0;total_stretch[1]:=0; total_shrink[1]:=0;total_stretch[2]:=0;total_shrink[2]:=0; total_stretch[3]:=0;total_shrink[3]:=0{:651}; if(eqtb[603232].int>0)then{1442:}begin temp_ptr:=get_avail; mem[temp_ptr].hh.lh:=0;mem[temp_ptr].hh.rh:=LR_ptr;LR_ptr:=temp_ptr; end{:1442}; while p<>0 do{652:}begin 21:while(p>=hi_mem_min)do{655:}begin f:=mem[p]. hh.b0;i:=font_info[char_base[f]+mem[p].hh.b1].qqqq;hd:=i.b1-0; x:=x+font_info[width_base[f]+i.b0].int; s:=font_info[height_base[f]+(hd)div 16].int;if s>h then h:=s; s:=font_info[depth_base[f]+(hd)mod 16].int;if s>d then d:=s; p:=mem[p].hh.rh;end{:655}; if p<>0 then begin case mem[p].hh.b0 of 0,1,2,13:{654:}begin x:=x+mem[p +1].int;if mem[p].hh.b0>=2 then s:=0 else s:=mem[p+4].int; if mem[p+3].int-s>h then h:=mem[p+3].int-s; if mem[p+2].int+s>d then d:=mem[p+2].int+s;end{:654}; 3,4,5:if adjust_tail<>0 then{656:}begin while mem[q].hh.rh<>p do q:=mem[ q].hh.rh; if mem[p].hh.b0=5 then begin mem[adjust_tail].hh.rh:=mem[p+1].int; while mem[adjust_tail].hh.rh<>0 do adjust_tail:=mem[adjust_tail].hh.rh; p:=mem[p].hh.rh;free_node(mem[q].hh.rh,2); end else begin mem[adjust_tail].hh.rh:=p;adjust_tail:=p;p:=mem[p].hh.rh; end;mem[q].hh.rh:=p;p:=q;end{:656};8:{1361:}{:1361}; 10:{657:}begin g:=mem[p+1].hh.lh;x:=x+mem[g+1].int;o:=mem[g].hh.b0; total_stretch[o]:=total_stretch[o]+mem[g+2].int;o:=mem[g].hh.b1; total_shrink[o]:=total_shrink[o]+mem[g+3].int; if mem[p].hh.b1>=100 then begin g:=mem[p+1].hh.rh; if mem[g+3].int>h then h:=mem[g+3].int; if mem[g+2].int>d then d:=mem[g+2].int;end;end{:657}; 11:x:=x+mem[p+1].int;9:begin x:=x+mem[p+1].int; if(eqtb[603232].int>0)then{1443:}if odd(mem[p].hh.b1)then if mem[LR_ptr] .hh.lh=(4*(mem[p].hh.b1 div 4)+3)then begin temp_ptr:=LR_ptr; LR_ptr:=mem[temp_ptr].hh.rh;begin mem[temp_ptr].hh.rh:=avail; avail:=temp_ptr;{dyn_used:=dyn_used-1;}end; end else begin LR_problems:=LR_problems+1;mem[p].hh.b0:=11; mem[p].hh.b1:=1;end else begin temp_ptr:=get_avail; mem[temp_ptr].hh.lh:=(4*(mem[p].hh.b1 div 4)+3); mem[temp_ptr].hh.rh:=LR_ptr;LR_ptr:=temp_ptr;end{:1443};end; 6:{653:}begin mem[7999988]:=mem[p+1];mem[7999988].hh.rh:=mem[p].hh.rh; p:=7999988;goto 21;end{:653};others:end;p:=mem[p].hh.rh;end;end{:652}; if adjust_tail<>0 then mem[adjust_tail].hh.rh:=0;mem[r+3].int:=h; mem[r+2].int:=d;{658:}if m=1 then w:=x+w;mem[r+1].int:=w;x:=w-x; if x=0 then begin mem[r+5].hh.b0:=0;mem[r+5].hh.b1:=0;mem[r+6].gr:=0.0; goto 10; end else if x>0 then{659:}begin{660:}if total_stretch[3]<>0 then o:=3 else if total_stretch[2]<>0 then o:=2 else if total_stretch[1]<>0 then o :=1 else o:=0{:660};mem[r+5].hh.b1:=o;mem[r+5].hh.b0:=1; if total_stretch[o]<>0 then mem[r+6].gr:=x/total_stretch[o]else begin mem[r+5].hh.b0:=0;mem[r+6].gr:=0.0;end; if o=0 then if mem[r+5].hh.rh<>0 then{661:}begin last_badness:=badness(x ,total_stretch[0]);if last_badness>eqtb[603194].int then begin print_ln; if last_badness>100 then print_nl(869)else print_nl(870);print(871); print_int(last_badness);goto 50;end;end{:661};goto 10; end{:659}else{665:}begin{666:}if total_shrink[3]<>0 then o:=3 else if total_shrink[2]<>0 then o:=2 else if total_shrink[1]<>0 then o:=1 else o :=0{:666};mem[r+5].hh.b1:=o;mem[r+5].hh.b0:=2; if total_shrink[o]<>0 then mem[r+6].gr:=(-x)/total_shrink[o]else begin mem[r+5].hh.b0:=0;mem[r+6].gr:=0.0;end; if(total_shrink[o]<-x)and(o=0)and(mem[r+5].hh.rh<>0)then begin last_badness:=1000000;mem[r+6].gr:=1.0; {667:}if(-x-total_shrink[0]>eqtb[603753].int)or(eqtb[603194].int<100) then begin if(eqtb[603761].int>0)and(-x-total_shrink[0]>eqtb[603753].int )then begin while mem[q].hh.rh<>0 do q:=mem[q].hh.rh; mem[q].hh.rh:=new_rule;mem[mem[q].hh.rh+1].int:=eqtb[603761].int;end; print_ln;print_nl(877);print_scaled(-x-total_shrink[0]);print(878); goto 50;end{:667}; end else if o=0 then if mem[r+5].hh.rh<>0 then{668:}begin last_badness:= badness(-x,total_shrink[0]); if last_badness>eqtb[603194].int then begin print_ln;print_nl(879); print_int(last_badness);goto 50;end;end{:668};goto 10;end{:665}{:658}; 50:{664:}if output_active then print(872)else begin if pack_begin_line<> 0 then begin if pack_begin_line>0 then print(873)else print(874); print_int(abs(pack_begin_line));print(875);end else print(876); print_int(line);end;print_ln;font_in_short_display:=0; short_display(mem[r+5].hh.rh);print_ln;begin_diagnostic;show_box(r); end_diagnostic(true){:664}; 10:if(eqtb[603232].int>0)then{1444:}begin if mem[LR_ptr].hh.lh<>0 then begin while mem[q].hh.rh<>0 do q:=mem[q].hh.rh;repeat temp_ptr:=q; q:=new_math(0,mem[LR_ptr].hh.lh);mem[temp_ptr].hh.rh:=q; LR_problems:=LR_problems+10000;begin temp_ptr:=LR_ptr; LR_ptr:=mem[temp_ptr].hh.rh;begin mem[temp_ptr].hh.rh:=avail; avail:=temp_ptr;{dyn_used:=dyn_used-1;}end;end; until mem[LR_ptr].hh.lh=0;end; if LR_problems>0 then begin{1445:}begin print_ln;print_nl(1388); print_int(LR_problems div 10000);print(1389); print_int(LR_problems mod 10000);print(1390);LR_problems:=0;end{:1445}; goto 50;end;begin temp_ptr:=LR_ptr;LR_ptr:=mem[temp_ptr].hh.rh; begin mem[temp_ptr].hh.rh:=avail;avail:=temp_ptr;{dyn_used:=dyn_used-1;} end;end;if LR_ptr<>0 then confusion(1387);end{:1444};hpack:=r;end; {:650}{669:}function vpackage(p:halfword;h:scaled;m:small_number; l:scaled):halfword;label 50,10;var r:halfword;w,d,x:scaled;s:scaled; g:halfword;o:glue_ord;begin last_badness:=0;r:=get_node(7); mem[r].hh.b0:=1;mem[r].hh.b1:=0;mem[r+4].int:=0;mem[r+5].hh.rh:=p;w:=0; {651:}d:=0;x:=0;total_stretch[0]:=0;total_shrink[0]:=0; total_stretch[1]:=0;total_shrink[1]:=0;total_stretch[2]:=0; total_shrink[2]:=0;total_stretch[3]:=0;total_shrink[3]:=0{:651}; while p<>0 do{670:}begin if(p>=hi_mem_min)then confusion(880)else case mem[p].hh.b0 of 0,1,2,13:{671:}begin x:=x+d+mem[p+3].int; d:=mem[p+2].int;if mem[p].hh.b0>=2 then s:=0 else s:=mem[p+4].int; if mem[p+1].int+s>w then w:=mem[p+1].int+s;end{:671};8:{1360:}{:1360}; 10:{672:}begin x:=x+d;d:=0;g:=mem[p+1].hh.lh;x:=x+mem[g+1].int; o:=mem[g].hh.b0;total_stretch[o]:=total_stretch[o]+mem[g+2].int; o:=mem[g].hh.b1;total_shrink[o]:=total_shrink[o]+mem[g+3].int; if mem[p].hh.b1>=100 then begin g:=mem[p+1].hh.rh; if mem[g+1].int>w then w:=mem[g+1].int;end;end{:672}; 11:begin x:=x+d+mem[p+1].int;d:=0;end;others:end;p:=mem[p].hh.rh; end{:670};mem[r+1].int:=w;if d>l then begin x:=x+d-l;mem[r+2].int:=l; end else mem[r+2].int:=d;{673:}if m=1 then h:=x+h;mem[r+3].int:=h; x:=h-x;if x=0 then begin mem[r+5].hh.b0:=0;mem[r+5].hh.b1:=0; mem[r+6].gr:=0.0;goto 10; end else if x>0 then{674:}begin{660:}if total_stretch[3]<>0 then o:=3 else if total_stretch[2]<>0 then o:=2 else if total_stretch[1]<>0 then o :=1 else o:=0{:660};mem[r+5].hh.b1:=o;mem[r+5].hh.b0:=1; if total_stretch[o]<>0 then mem[r+6].gr:=x/total_stretch[o]else begin mem[r+5].hh.b0:=0;mem[r+6].gr:=0.0;end; if o=0 then if mem[r+5].hh.rh<>0 then{675:}begin last_badness:=badness(x ,total_stretch[0]);if last_badness>eqtb[603195].int then begin print_ln; if last_badness>100 then print_nl(869)else print_nl(870);print(881); print_int(last_badness);goto 50;end;end{:675};goto 10; end{:674}else{677:}begin{666:}if total_shrink[3]<>0 then o:=3 else if total_shrink[2]<>0 then o:=2 else if total_shrink[1]<>0 then o:=1 else o :=0{:666};mem[r+5].hh.b1:=o;mem[r+5].hh.b0:=2; if total_shrink[o]<>0 then mem[r+6].gr:=(-x)/total_shrink[o]else begin mem[r+5].hh.b0:=0;mem[r+6].gr:=0.0;end; if(total_shrink[o]<-x)and(o=0)and(mem[r+5].hh.rh<>0)then begin last_badness:=1000000;mem[r+6].gr:=1.0; {678:}if(-x-total_shrink[0]>eqtb[603754].int)or(eqtb[603195].int<100) then begin print_ln;print_nl(882);print_scaled(-x-total_shrink[0]); print(883);goto 50;end{:678}; end else if o=0 then if mem[r+5].hh.rh<>0 then{679:}begin last_badness:= badness(-x,total_shrink[0]); if last_badness>eqtb[603195].int then begin print_ln;print_nl(884); print_int(last_badness);goto 50;end;end{:679};goto 10;end{:677}{:673}; 50:{676:}if output_active then print(872)else begin if pack_begin_line<> 0 then begin print(874);print_int(abs(pack_begin_line));print(875); end else print(876);print_int(line);print_ln;end;begin_diagnostic; show_box(r);end_diagnostic(true){:676};10:vpackage:=r;end; {:669}{680:}procedure append_to_vlist(b:halfword);var d:scaled; p:halfword; begin if cur_list.aux_field.int>-65536000 then begin d:=mem[eqtb[600783] .hh.rh+1].int-cur_list.aux_field.int-mem[b+3].int; if d0)or(x<>0)then begin z:=z+s+16; repeat z:=z-16;g:=eqtb[601840+z].hh.rh;if g<>0 then{709:}begin y:=x; if(y-0>=font_bc[g])and(y-0<=font_ec[g])then begin 22:q:=font_info[ char_base[g]+y].qqqq; if(q.b0>0)then begin if((q.b2-0)mod 4)=3 then begin f:=g;c:=y;goto 40; end;hd:=q.b1-0; u:=font_info[height_base[g]+(hd)div 16].int+font_info[depth_base[g]+(hd) mod 16].int;if u>w then begin f:=g;c:=y;w:=u;if u>=v then goto 40;end; if((q.b2-0)mod 4)=2 then begin y:=q.b3;goto 22;end;end;end;end{:709}; until z<16;end{:708};if large_attempt then goto 40;large_attempt:=true; z:=mem[d].qqqq.b2;x:=mem[d].qqqq.b3;end; 40:if f<>0 then{711:}if((q.b2-0)mod 4)=3 then{714:}begin b:=new_null_box ;mem[b].hh.b0:=1;r:=font_info[exten_base[f]+q.b3].qqqq;{715:}c:=r.b3; u:=height_plus_depth(f,c);w:=0;q:=font_info[char_base[f]+c].qqqq; mem[b+1].int:=font_info[width_base[f]+q.b0].int+font_info[italic_base[f] +(q.b2-0)div 4].int;c:=r.b2;if c<>0 then w:=w+height_plus_depth(f,c); c:=r.b1;if c<>0 then w:=w+height_plus_depth(f,c);c:=r.b0; if c<>0 then w:=w+height_plus_depth(f,c);n:=0; if u>0 then while w0 then w:=w+u; end{:715};c:=r.b2;if c<>0 then stack_into_box(b,f,c);c:=r.b3; for m:=1 to n do stack_into_box(b,f,c);c:=r.b1; if c<>0 then begin stack_into_box(b,f,c);c:=r.b3; for m:=1 to n do stack_into_box(b,f,c);end;c:=r.b0; if c<>0 then stack_into_box(b,f,c);mem[b+2].int:=w-mem[b+3].int; end{:714}else b:=char_box(f,c){:711}else begin b:=new_null_box; mem[b+1].int:=eqtb[603756].int;end; mem[b+4].int:=half(mem[b+3].int-mem[b+2].int)-font_info[22+param_base[ eqtb[601842+s].hh.rh]].int;var_delimiter:=b;end; {:707}{716:}function rebox(b:halfword;w:scaled):halfword;var p:halfword; f:internal_font_number;v:scaled; begin if(mem[b+1].int<>w)and(mem[b+5].hh.rh<>0)then begin if mem[b].hh. b0=1 then b:=hpack(b,0,1);p:=mem[b+5].hh.rh; if((p>=hi_mem_min))and(mem[p].hh.rh=0)then begin f:=mem[p].hh.b0; v:=font_info[width_base[f]+font_info[char_base[f]+mem[p].hh.b1].qqqq.b0] .int;if v<>mem[b+1].int then mem[p].hh.rh:=new_kern(mem[b+1].int-v);end; free_node(b,7);b:=new_glue(12);mem[b].hh.rh:=p; while mem[p].hh.rh<>0 do p:=mem[p].hh.rh;mem[p].hh.rh:=new_glue(12); rebox:=hpack(b,w,0);end else begin mem[b+1].int:=w;rebox:=b;end;end; {:716}{717:}function math_glue(g:halfword;m:scaled):halfword; var p:halfword;n:integer;f:scaled;begin n:=x_over_n(m,65536); f:=remainder;if f<0 then begin n:=n-1;f:=f+65536;end;p:=get_node(4); mem[p+1].int:=mult_and_add(n,mem[g+1].int,xn_over_d(mem[g+1].int,f,65536 ),1073741823);mem[p].hh.b0:=mem[g].hh.b0; if mem[p].hh.b0=0 then mem[p+2].int:=mult_and_add(n,mem[g+2].int, xn_over_d(mem[g+2].int,f,65536),1073741823)else mem[p+2].int:=mem[g+2]. int;mem[p].hh.b1:=mem[g].hh.b1; if mem[p].hh.b1=0 then mem[p+3].int:=mult_and_add(n,mem[g+3].int, xn_over_d(mem[g+3].int,f,65536),1073741823)else mem[p+3].int:=mem[g+3]. int;math_glue:=p;end;{:717}{718:}procedure math_kern(p:halfword; m:scaled);var n:integer;f:scaled; begin if mem[p].hh.b1=99 then begin n:=x_over_n(m,65536);f:=remainder; if f<0 then begin n:=n-1;f:=f+65536;end; mem[p+1].int:=mult_and_add(n,mem[p+1].int,xn_over_d(mem[p+1].int,f,65536 ),1073741823);mem[p].hh.b1:=1;end;end;{:718}{719:}procedure flush_math; begin flush_node_list(mem[cur_list.head_field].hh.rh); flush_node_list(cur_list.aux_field.int); mem[cur_list.head_field].hh.rh:=0; cur_list.tail_field:=cur_list.head_field;cur_list.aux_field.int:=0;end; {:719}{721:}procedure mlist_to_hlist;forward; function clean_box(p:halfword;s:small_number):halfword;label 40; var q:halfword;save_style:small_number;x:halfword;r:halfword; begin case mem[p].hh.rh of 1:begin cur_mlist:=new_noad; mem[cur_mlist+1]:=mem[p];end;2:begin q:=mem[p].hh.lh;goto 40;end; 3:cur_mlist:=mem[p].hh.lh;others:begin q:=new_null_box;goto 40;end end; save_style:=cur_style;cur_style:=s;mlist_penalties:=false; mlist_to_hlist;q:=mem[7999997].hh.rh;cur_style:=save_style; {704:}begin if cur_style<4 then cur_size:=0 else cur_size:=16*(( cur_style-2)div 2); cur_mu:=x_over_n(font_info[6+param_base[eqtb[601842+cur_size].hh.rh]]. int,18);end{:704}; 40:if(q>=hi_mem_min)or(q=0)then x:=hpack(q,0,1)else if(mem[q].hh.rh=0) and(mem[q].hh.b0<=1)and(mem[q+4].int=0)then x:=q else x:=hpack(q,0,1); {722:}q:=mem[x+5].hh.rh;if(q>=hi_mem_min)then begin r:=mem[q].hh.rh; if r<>0 then if mem[r].hh.rh=0 then if not(r>=hi_mem_min)then if mem[r]. hh.b0=11 then begin free_node(r,2);mem[q].hh.rh:=0;end;end{:722}; clean_box:=x;end;{:721}{723:}procedure fetch(a:halfword); begin cur_c:=mem[a].hh.b1; cur_f:=eqtb[601840+mem[a].hh.b0+cur_size].hh.rh; if cur_f=0 then{724:}begin begin if interaction=3 then;print_nl(264); print(340);end;print_size(cur_size);print_char(32); print_int(mem[a].hh.b0);print(910);print(cur_c-0);print_char(41); begin help_ptr:=4;help_line[3]:=911;help_line[2]:=912;help_line[1]:=913; help_line[0]:=914;end;error;cur_i:=null_character;mem[a].hh.rh:=0; end{:724}else begin if(cur_c-0>=font_bc[cur_f])and(cur_c-0<=font_ec[ cur_f])then cur_i:=font_info[char_base[cur_f]+cur_c].qqqq else cur_i:= null_character; if not((cur_i.b0>0))then begin char_warning(cur_f,cur_c-0); mem[a].hh.rh:=0;cur_i:=null_character;end;end;end; {:723}{727:}{735:}procedure make_over(q:halfword); begin mem[q+1].hh.lh:=overbar(clean_box(q+1,2*(cur_style div 2)+1),3* font_info[8+param_base[eqtb[601843+cur_size].hh.rh]].int,font_info[8+ param_base[eqtb[601843+cur_size].hh.rh]].int);mem[q+1].hh.rh:=2;end; {:735}{736:}procedure make_under(q:halfword);var p,x,y:halfword; delta:scaled;begin x:=clean_box(q+1,cur_style); p:=new_kern(3*font_info[8+param_base[eqtb[601843+cur_size].hh.rh]].int); mem[x].hh.rh:=p; mem[p].hh.rh:=fraction_rule(font_info[8+param_base[eqtb[601843+cur_size] .hh.rh]].int);y:=vpackage(x,0,1,1073741823); delta:=mem[y+3].int+mem[y+2].int+font_info[8+param_base[eqtb[601843+ cur_size].hh.rh]].int;mem[y+3].int:=mem[x+3].int; mem[y+2].int:=delta-mem[y+3].int;mem[q+1].hh.lh:=y;mem[q+1].hh.rh:=2; end;{:736}{737:}procedure make_vcenter(q:halfword);var v:halfword; delta:scaled;begin v:=mem[q+1].hh.lh; if mem[v].hh.b0<>1 then confusion(544);delta:=mem[v+3].int+mem[v+2].int; mem[v+3].int:=font_info[22+param_base[eqtb[601842+cur_size].hh.rh]].int+ half(delta);mem[v+2].int:=delta-mem[v+3].int;end; {:737}{738:}procedure make_radical(q:halfword);var x,y:halfword; delta,clr:scaled;begin x:=clean_box(q+1,2*(cur_style div 2)+1); if cur_style<2 then clr:=font_info[8+param_base[eqtb[601843+cur_size].hh .rh]].int+(abs(font_info[5+param_base[eqtb[601842+cur_size].hh.rh]].int) div 4)else begin clr:=font_info[8+param_base[eqtb[601843+cur_size].hh.rh ]].int;clr:=clr+(abs(clr)div 4);end; y:=var_delimiter(q+4,cur_size,mem[x+3].int+mem[x+2].int+clr+font_info[8+ param_base[eqtb[601843+cur_size].hh.rh]].int); delta:=mem[y+2].int-(mem[x+3].int+mem[x+2].int+clr); if delta>0 then clr:=clr+half(delta);mem[y+4].int:=-(mem[x+3].int+clr); mem[y].hh.rh:=overbar(x,clr,mem[y+3].int);mem[q+1].hh.lh:=hpack(y,0,1); mem[q+1].hh.rh:=2;end; {:738}{739:}procedure make_math_accent(q:halfword);label 30,31; var p,x,y:halfword;a:integer;c:quarterword;f:internal_font_number; i:four_quarters;s:scaled;h:scaled;delta:scaled;w:scaled; begin fetch(q+4);if(cur_i.b0>0)then begin i:=cur_i;c:=cur_c;f:=cur_f; {742:}s:=0;if mem[q+1].hh.rh=1 then begin fetch(q+1); if((cur_i.b2-0)mod 4)=1 then begin a:=lig_kern_base[cur_f]+cur_i.b3; cur_i:=font_info[a].qqqq; if cur_i.b0>128 then begin a:=lig_kern_base[cur_f]+256*cur_i.b2+cur_i.b3 +32768-256*(128);cur_i:=font_info[a].qqqq;end; while true do begin if cur_i.b1-0=skew_char[cur_f]then begin if cur_i.b2 >=128 then if cur_i.b0<=128 then s:=font_info[kern_base[cur_f]+256*cur_i .b2+cur_i.b3].int;goto 31;end;if cur_i.b0>=128 then goto 31; a:=a+cur_i.b0+1;cur_i:=font_info[a].qqqq;end;end;end;31:{:742}; x:=clean_box(q+1,2*(cur_style div 2)+1);w:=mem[x+1].int;h:=mem[x+3].int; {741:}while true do begin if((i.b2-0)mod 4)<>2 then goto 30;y:=i.b3; i:=font_info[char_base[f]+y].qqqq;if not(i.b0>0)then goto 30; if font_info[width_base[f]+i.b0].int>w then goto 30;c:=y;end;30:{:741}; if h0)or(mem[q+3].hh.rh<>0)then if mem[q+1].hh.rh=1 then {743:}begin flush_node_list(x);x:=new_noad;mem[x+1]:=mem[q+1]; mem[x+2]:=mem[q+2];mem[x+3]:=mem[q+3];mem[q+2].hh:=empty_field; mem[q+3].hh:=empty_field;mem[q+1].hh.rh:=3;mem[q+1].hh.lh:=x; x:=clean_box(q+1,cur_style);delta:=delta+mem[x+3].int-h;h:=mem[x+3].int; end{:743};y:=char_box(f,c);mem[y+4].int:=s+half(w-mem[y+1].int); mem[y+1].int:=0;p:=new_kern(-delta);mem[p].hh.rh:=x;mem[y].hh.rh:=p; y:=vpackage(y,0,1,1073741823);mem[y+1].int:=mem[x+1].int; if mem[y+3].int0 then shift_up:=font_info[9+param_base[eqtb[601842+ cur_size].hh.rh]].int else shift_up:=font_info[10+param_base[eqtb[ 601842+cur_size].hh.rh]].int;end{:745}; if mem[q+1].int=0 then{746:}begin if cur_style<2 then clr:=7*font_info[ 8+param_base[eqtb[601843+cur_size].hh.rh]].int else clr:=3*font_info[8+ param_base[eqtb[601843+cur_size].hh.rh]].int; delta:=half(clr-((shift_up-mem[x+2].int)-(mem[z+3].int-shift_down))); if delta>0 then begin shift_up:=shift_up+delta; shift_down:=shift_down+delta;end; end{:746}else{747:}begin if cur_style<2 then clr:=3*mem[q+1].int else clr:=mem[q+1].int;delta:=half(mem[q+1].int); delta1:=clr-((shift_up-mem[x+2].int)-(font_info[22+param_base[eqtb[ 601842+cur_size].hh.rh]].int+delta)); delta2:=clr-((font_info[22+param_base[eqtb[601842+cur_size].hh.rh]].int- delta)-(mem[z+3].int-shift_down)); if delta1>0 then shift_up:=shift_up+delta1; if delta2>0 then shift_down:=shift_down+delta2;end{:747}; {748:}v:=new_null_box;mem[v].hh.b0:=1; mem[v+3].int:=shift_up+mem[x+3].int; mem[v+2].int:=mem[z+2].int+shift_down;mem[v+1].int:=mem[x+1].int; if mem[q+1].int=0 then begin p:=new_kern((shift_up-mem[x+2].int)-(mem[z +3].int-shift_down));mem[p].hh.rh:=z; end else begin y:=fraction_rule(mem[q+1].int); p:=new_kern((font_info[22+param_base[eqtb[601842+cur_size].hh.rh]].int- delta)-(mem[z+3].int-shift_down));mem[y].hh.rh:=p;mem[p].hh.rh:=z; p:=new_kern((shift_up-mem[x+2].int)-(font_info[22+param_base[eqtb[ 601842+cur_size].hh.rh]].int+delta));mem[p].hh.rh:=y;end; mem[x].hh.rh:=p;mem[v+5].hh.rh:=x{:748}; {749:}if cur_style<2 then delta:=font_info[20+param_base[eqtb[601842+ cur_size].hh.rh]].int else delta:=font_info[21+param_base[eqtb[601842+ cur_size].hh.rh]].int;x:=var_delimiter(q+4,cur_size,delta); mem[x].hh.rh:=v;z:=var_delimiter(q+5,cur_size,delta);mem[v].hh.rh:=z; mem[q+1].int:=hpack(x,0,1){:749};end; {:744}{750:}function make_op(q:halfword):scaled;var delta:scaled; p,v,x,y,z:halfword;c:quarterword;i:four_quarters; shift_up,shift_down:scaled; begin if(mem[q].hh.b1=0)and(cur_style<2)then mem[q].hh.b1:=1; if mem[q+1].hh.rh=1 then begin fetch(q+1); if(cur_style<2)and(((cur_i.b2-0)mod 4)=2)then begin c:=cur_i.b3; i:=font_info[char_base[cur_f]+c].qqqq;if(i.b0>0)then begin cur_c:=c; cur_i:=i;mem[q+1].hh.b1:=c;end;end; delta:=font_info[italic_base[cur_f]+(cur_i.b2-0)div 4].int; x:=clean_box(q+1,cur_style); if(mem[q+3].hh.rh<>0)and(mem[q].hh.b1<>1)then mem[x+1].int:=mem[x+1].int -delta; mem[x+4].int:=half(mem[x+3].int-mem[x+2].int)-font_info[22+param_base[ eqtb[601842+cur_size].hh.rh]].int;mem[q+1].hh.rh:=2;mem[q+1].hh.lh:=x; end else delta:=0; if mem[q].hh.b1=1 then{751:}begin x:=clean_box(q+2,2*(cur_style div 4) +4+(cur_style mod 2));y:=clean_box(q+1,cur_style); z:=clean_box(q+3,2*(cur_style div 4)+5);v:=new_null_box;mem[v].hh.b0:=1; mem[v+1].int:=mem[y+1].int; if mem[x+1].int>mem[v+1].int then mem[v+1].int:=mem[x+1].int; if mem[z+1].int>mem[v+1].int then mem[v+1].int:=mem[z+1].int; x:=rebox(x,mem[v+1].int);y:=rebox(y,mem[v+1].int); z:=rebox(z,mem[v+1].int);mem[x+4].int:=half(delta); mem[z+4].int:=-mem[x+4].int;mem[v+3].int:=mem[y+3].int; mem[v+2].int:=mem[y+2].int; {752:}if mem[q+2].hh.rh=0 then begin free_node(x,7);mem[v+5].hh.rh:=y; end else begin shift_up:=font_info[11+param_base[eqtb[601843+cur_size]. hh.rh]].int-mem[x+2].int; if shift_up0 then if(mem[p].hh.b0>=16)and(mem[p].hh.b0<=22)then if mem[p+1]. hh.rh=1 then if mem[p+1].hh.b0=mem[q+1].hh.b0 then begin mem[q+1].hh.rh :=4;fetch(q+1); if((cur_i.b2-0)mod 4)=1 then begin a:=lig_kern_base[cur_f]+cur_i.b3; cur_c:=mem[p+1].hh.b1;cur_i:=font_info[a].qqqq; if cur_i.b0>128 then begin a:=lig_kern_base[cur_f]+256*cur_i.b2+cur_i.b3 +32768-256*(128);cur_i:=font_info[a].qqqq;end; while true do begin{754:}if cur_i.b1=cur_c then if cur_i.b0<=128 then if cur_i.b2>=128 then begin p:=new_kern(font_info[kern_base[cur_f]+256* cur_i.b2+cur_i.b3].int);mem[p].hh.rh:=mem[q].hh.rh;mem[q].hh.rh:=p; goto 10; end else begin begin if interrupt<>0 then pause_for_instructions;end; case cur_i.b2 of 1,5:mem[q+1].hh.b1:=cur_i.b3; 2,6:mem[p+1].hh.b1:=cur_i.b3;3,7,11:begin r:=new_noad; mem[r+1].hh.b1:=cur_i.b3;mem[r+1].hh.b0:=mem[q+1].hh.b0;mem[q].hh.rh:=r; mem[r].hh.rh:=p; if cur_i.b2<11 then mem[r+1].hh.rh:=1 else mem[r+1].hh.rh:=4;end; others:begin mem[q].hh.rh:=mem[p].hh.rh;mem[q+1].hh.b1:=cur_i.b3; mem[q+3]:=mem[p+3];mem[q+2]:=mem[p+2];free_node(p,4);end end; if cur_i.b2>3 then goto 10;mem[q+1].hh.rh:=1;goto 20;end{:754}; if cur_i.b0>=128 then goto 10;a:=a+cur_i.b0+1;cur_i:=font_info[a].qqqq; end;end;end;end;10:end;{:753}{757:}procedure make_scripts(q:halfword; delta:scaled);var p,x,y,z:halfword;shift_up,shift_down,clr:scaled; t:small_number;begin p:=mem[q+1].int; if(p>=hi_mem_min)then begin shift_up:=0;shift_down:=0; end else begin z:=hpack(p,0,1);if cur_style<4 then t:=16 else t:=32; shift_up:=mem[z+3].int-font_info[18+param_base[eqtb[601842+t].hh.rh]]. int; shift_down:=mem[z+2].int+font_info[19+param_base[eqtb[601842+t].hh.rh]]. int;free_node(z,7);end; if mem[q+2].hh.rh=0 then{758:}begin x:=clean_box(q+3,2*(cur_style div 4) +5);mem[x+1].int:=mem[x+1].int+eqtb[603757].int; if shift_down0 then begin shift_down:=shift_down+clr; clr:=(abs(font_info[5+param_base[eqtb[601842+cur_size].hh.rh]].int*4)div 5)-(shift_up-mem[x+2].int);if clr>0 then begin shift_up:=shift_up+clr; shift_down:=shift_down-clr;end;end;mem[x+4].int:=delta; p:=new_kern((shift_up-mem[x+2].int)-(mem[y+3].int-shift_down)); mem[x].hh.rh:=p;mem[p].hh.rh:=y;x:=vpackage(x,0,1,1073741823); mem[x+4].int:=shift_down;end{:760};end; if mem[q+1].int=0 then mem[q+1].int:=x else begin p:=mem[q+1].int; while mem[p].hh.rh<>0 do p:=mem[p].hh.rh;mem[p].hh.rh:=x;end;end; {:757}{763:}function make_left_right(q:halfword;style:small_number; max_d,max_h:scaled):small_number;var delta,delta1,delta2:scaled; begin cur_style:=style; {704:}begin if cur_style<4 then cur_size:=0 else cur_size:=16*(( cur_style-2)div 2); cur_mu:=x_over_n(font_info[6+param_base[eqtb[601842+cur_size].hh.rh]]. int,18);end{:704}; delta2:=max_d+font_info[22+param_base[eqtb[601842+cur_size].hh.rh]].int; delta1:=max_h+max_d-delta2;if delta2>delta1 then delta1:=delta2; delta:=(delta1 div 500)*eqtb[603186].int; delta2:=delta1+delta1-eqtb[603755].int; if delta0 do{728:}begin{729:}21:delta:=0; case mem[q].hh.b0 of 18:case r_type of 18,17,19,20,22,30:begin mem[q].hh .b0:=16;goto 21;end;others:end; 19,21,22,31:begin{730:}if r_type=18 then mem[r].hh.b0:=16{:730}; if mem[q].hh.b0=31 then goto 80;end;{734:}30:goto 80; 25:begin make_fraction(q);goto 82;end;17:begin delta:=make_op(q); if mem[q].hh.b1=1 then goto 82;end;16:make_ord(q);20,23:; 24:make_radical(q);27:make_over(q);26:make_under(q); 28:make_math_accent(q);29:make_vcenter(q); {:734}{731:}14:begin cur_style:=mem[q].hh.b1; {704:}begin if cur_style<4 then cur_size:=0 else cur_size:=16*(( cur_style-2)div 2); cur_mu:=x_over_n(font_info[6+param_base[eqtb[601842+cur_size].hh.rh]]. int,18);end{:704};goto 81;end; 15:{732:}begin case cur_style div 2 of 0:begin p:=mem[q+1].hh.lh; mem[q+1].hh.lh:=0;end;1:begin p:=mem[q+1].hh.rh;mem[q+1].hh.rh:=0;end; 2:begin p:=mem[q+2].hh.lh;mem[q+2].hh.lh:=0;end; 3:begin p:=mem[q+2].hh.rh;mem[q+2].hh.rh:=0;end;end; flush_node_list(mem[q+1].hh.lh);flush_node_list(mem[q+1].hh.rh); flush_node_list(mem[q+2].hh.lh);flush_node_list(mem[q+2].hh.rh); mem[q].hh.b0:=14;mem[q].hh.b1:=cur_style;mem[q+1].int:=0; mem[q+2].int:=0;if p<>0 then begin z:=mem[q].hh.rh;mem[q].hh.rh:=p; while mem[p].hh.rh<>0 do p:=mem[p].hh.rh;mem[p].hh.rh:=z;end;goto 81; end{:732};3,4,5,8,12,7:goto 81; 2:begin if mem[q+3].int>max_h then max_h:=mem[q+3].int; if mem[q+2].int>max_d then max_d:=mem[q+2].int;goto 81;end; 10:begin{733:}if mem[q].hh.b1=99 then begin x:=mem[q+1].hh.lh; y:=math_glue(x,cur_mu);delete_glue_ref(x);mem[q+1].hh.lh:=y; mem[q].hh.b1:=0; end else if(cur_size<>0)and(mem[q].hh.b1=98)then begin p:=mem[q].hh.rh; if p<>0 then if(mem[p].hh.b0=10)or(mem[p].hh.b0=11)then begin mem[q].hh. rh:=mem[p].hh.rh;mem[p].hh.rh:=0;flush_node_list(p);end;end{:733}; goto 81;end;11:begin math_kern(q,cur_mu);goto 81;end; {:731}others:confusion(915)end; {755:}case mem[q+1].hh.rh of 1,4:{756:}begin fetch(q+1); if(cur_i.b0>0)then begin delta:=font_info[italic_base[cur_f]+(cur_i.b2-0 )div 4].int;p:=new_character(cur_f,cur_c-0); if(mem[q+1].hh.rh=4)and(font_info[2+param_base[cur_f]].int<>0)then delta :=0; if(mem[q+3].hh.rh=0)and(delta<>0)then begin mem[p].hh.rh:=new_kern(delta );delta:=0;end;end else p:=0;end{:756};0:p:=0;2:p:=mem[q+1].hh.lh; 3:begin cur_mlist:=mem[q+1].hh.lh;save_style:=cur_style; mlist_penalties:=false;mlist_to_hlist;cur_style:=save_style; {704:}begin if cur_style<4 then cur_size:=0 else cur_size:=16*(( cur_style-2)div 2); cur_mu:=x_over_n(font_info[6+param_base[eqtb[601842+cur_size].hh.rh]]. int,18);end{:704};p:=hpack(mem[7999997].hh.rh,0,1);end; others:confusion(916)end;mem[q+1].int:=p; if(mem[q+3].hh.rh=0)and(mem[q+2].hh.rh=0)then goto 82; make_scripts(q,delta){:755}{:729};82:z:=hpack(mem[q+1].int,0,1); if mem[z+3].int>max_h then max_h:=mem[z+3].int; if mem[z+2].int>max_d then max_d:=mem[z+2].int;free_node(z,7);80:r:=q; r_type:=mem[r].hh.b0;if r_type=31 then begin r_type:=30; cur_style:=style; {704:}begin if cur_style<4 then cur_size:=0 else cur_size:=16*(( cur_style-2)div 2); cur_mu:=x_over_n(font_info[6+param_base[eqtb[601842+cur_size].hh.rh]]. int,18);end{:704};end;81:q:=mem[q].hh.rh;end{:728}; {730:}if r_type=18 then mem[r].hh.b0:=16{:730};{761:}p:=7999997; mem[p].hh.rh:=0;q:=mlist;r_type:=0;cur_style:=style; {704:}begin if cur_style<4 then cur_size:=0 else cur_size:=16*(( cur_style-2)div 2); cur_mu:=x_over_n(font_info[6+param_base[eqtb[601842+cur_size].hh.rh]]. int,18);end{:704};while q<>0 do begin{762:}t:=16;s:=4;pen:=10000; case mem[q].hh.b0 of 17,20,21,22,23:t:=mem[q].hh.b0;18:begin t:=18; pen:=eqtb[603177].int;end;19:begin t:=19;pen:=eqtb[603178].int;end; 16,29,27,26:;24:s:=5;28:s:=5;25:s:=6; 30,31:t:=make_left_right(q,style,max_d,max_h); 14:{764:}begin cur_style:=mem[q].hh.b1;s:=3; {704:}begin if cur_style<4 then cur_size:=0 else cur_size:=16*(( cur_style-2)div 2); cur_mu:=x_over_n(font_info[6+param_base[eqtb[601842+cur_size].hh.rh]]. int,18);end{:704};goto 83;end{:764}; 8,12,2,7,5,3,4,10,11:begin mem[p].hh.rh:=q;p:=q;q:=mem[q].hh.rh; mem[p].hh.rh:=0;goto 30;end;others:confusion(917)end{:762}; {767:}if r_type>0 then begin case str_pool[r_type*8+t+magic_offset]of 48 :x:=0;49:if cur_style<4 then x:=15 else x:=0;50:x:=15; 51:if cur_style<4 then x:=16 else x:=0; 52:if cur_style<4 then x:=17 else x:=0;others:confusion(919)end; if x<>0 then begin y:=math_glue(eqtb[600782+x].hh.rh,cur_mu); z:=new_glue(y);mem[y].hh.rh:=0;mem[p].hh.rh:=z;p:=z;mem[z].hh.b1:=x+1; end;end{:767}; {768:}if mem[q+1].int<>0 then begin mem[p].hh.rh:=mem[q+1].int; repeat p:=mem[p].hh.rh;until mem[p].hh.rh=0;end; if penalties then if mem[q].hh.rh<>0 then if pen<10000 then begin r_type :=mem[mem[q].hh.rh].hh.b0; if r_type<>12 then if r_type<>19 then begin z:=new_penalty(pen); mem[p].hh.rh:=z;p:=z;end;end{:768};if mem[q].hh.b0=31 then t:=20; r_type:=t;83:r:=q;q:=mem[q].hh.rh;free_node(r,s);30:end{:761};end; {:727}{773:}procedure push_alignment;var p:halfword; begin p:=get_node(5);mem[p].hh.rh:=align_ptr;mem[p].hh.lh:=cur_align; mem[p+1].hh.lh:=mem[7999992].hh.rh;mem[p+1].hh.rh:=cur_span; mem[p+2].int:=cur_loop;mem[p+3].int:=align_state; mem[p+4].hh.lh:=cur_head;mem[p+4].hh.rh:=cur_tail;align_ptr:=p; cur_head:=get_avail;end;procedure pop_alignment;var p:halfword; begin begin mem[cur_head].hh.rh:=avail;avail:=cur_head; {dyn_used:=dyn_used-1;}end;p:=align_ptr;cur_tail:=mem[p+4].hh.rh; cur_head:=mem[p+4].hh.lh;align_state:=mem[p+3].int; cur_loop:=mem[p+2].int;cur_span:=mem[p+1].hh.rh; mem[7999992].hh.rh:=mem[p+1].hh.lh;cur_align:=mem[p].hh.lh; align_ptr:=mem[p].hh.rh;free_node(p,5);end; {:773}{775:}{783:}procedure get_preamble_token;label 20; begin 20:get_token;while(cur_chr=256)and(cur_cmd=4)do begin get_token; if cur_cmd>100 then begin expand;get_token;end;end; if cur_cmd=9 then fatal_error(605); if(cur_cmd=75)and(cur_chr=600793)then begin scan_optional_equals; scan_glue(2); if eqtb[603211].int>0 then geq_define(600793,117,cur_val)else eq_define( 600793,117,cur_val);goto 20;end;end;{:783}procedure align_peek;forward; procedure normal_paragraph;forward;procedure init_align; label 30,31,32,22;var save_cs_ptr:halfword;p:halfword; begin save_cs_ptr:=cur_cs;push_alignment;align_state:=-1000000; {777:}if(cur_list.mode_field=203)and((cur_list.tail_field<>cur_list. head_field)or(cur_list.aux_field.int<>0))then begin begin if interaction =3 then;print_nl(264);print(690);end;print_esc(524);print(920); begin help_ptr:=3;help_line[2]:=921;help_line[1]:=922;help_line[0]:=923; end;error;flush_math;end{:777};push_nest; {776:}if cur_list.mode_field=203 then begin cur_list.mode_field:=-1; cur_list.aux_field.int:=nest[nest_ptr-2].aux_field.int; end else if cur_list.mode_field>0 then cur_list.mode_field:=-cur_list. mode_field{:776};scan_spec(6,false);{778:}mem[7999992].hh.rh:=0; cur_align:=7999992;cur_loop:=0;scanner_status:=4; warning_index:=save_cs_ptr;align_state:=-1000000; while true do begin{779:}mem[cur_align].hh.rh:=new_param_glue(11); cur_align:=mem[cur_align].hh.rh{:779};if cur_cmd=5 then goto 30; {780:}{784:}p:=7999996;mem[p].hh.rh:=0; while true do begin get_preamble_token;if cur_cmd=6 then goto 31; if(cur_cmd<=5)and(cur_cmd>=4)and(align_state=-1000000)then if(p=7999996) and(cur_loop=0)and(cur_cmd=4)then cur_loop:=cur_align else begin begin if interaction=3 then;print_nl(264);print(929);end;begin help_ptr:=3; help_line[2]:=930;help_line[1]:=931;help_line[0]:=932;end;back_error; goto 31; end else if(cur_cmd<>10)or(p<>7999996)then begin mem[p].hh.rh:=get_avail ;p:=mem[p].hh.rh;mem[p].hh.lh:=cur_tok;end;end;31:{:784}; mem[cur_align].hh.rh:=new_null_box;cur_align:=mem[cur_align].hh.rh; mem[cur_align].hh.lh:=7999991;mem[cur_align+1].int:=-1073741824; mem[cur_align+3].int:=mem[7999996].hh.rh;{785:}p:=7999996; mem[p].hh.rh:=0;while true do begin 22:get_preamble_token; if(cur_cmd<=5)and(cur_cmd>=4)and(align_state=-1000000)then goto 32; if cur_cmd=6 then begin begin if interaction=3 then;print_nl(264); print(933);end;begin help_ptr:=3;help_line[2]:=930;help_line[1]:=931; help_line[0]:=934;end;error;goto 22;end;mem[p].hh.rh:=get_avail; p:=mem[p].hh.rh;mem[p].hh.lh:=cur_tok;end;32:mem[p].hh.rh:=get_avail; p:=mem[p].hh.rh;mem[p].hh.lh:=604614{:785}; mem[cur_align+2].int:=mem[7999996].hh.rh{:780};end; 30:scanner_status:=0{:778};new_save_level(6); if eqtb[601320].hh.rh<>0 then begin_token_list(eqtb[601320].hh.rh,13); align_peek;end;{:775}{787:}{788:}procedure init_span(p:halfword); begin push_nest; if cur_list.mode_field=-102 then cur_list.aux_field.hh.lh:=1000 else begin cur_list.aux_field.int:=-65536000;normal_paragraph;end; cur_span:=p;end;{:788}procedure init_row;begin push_nest; cur_list.mode_field:=(-103)-cur_list.mode_field; if cur_list.mode_field=-102 then cur_list.aux_field.hh.lh:=0 else cur_list.aux_field.int:=0; begin mem[cur_list.tail_field].hh.rh:=new_glue(mem[mem[7999992].hh.rh+1] .hh.lh);cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.b1:=12; cur_align:=mem[mem[7999992].hh.rh].hh.rh;cur_tail:=cur_head; init_span(cur_align);end;{:787}{789:}procedure init_col; begin mem[cur_align+5].hh.lh:=cur_cmd; if cur_cmd=63 then align_state:=0 else begin back_input; begin_token_list(mem[cur_align+3].int,1);end;end; {:789}{792:}function fin_col:boolean;label 10;var p:halfword; q,r:halfword;s:halfword;u:halfword;w:scaled;o:glue_ord;n:halfword; begin if cur_align=0 then confusion(935);q:=mem[cur_align].hh.rh; if q=0 then confusion(935);if align_state<500000 then fatal_error(605); p:=mem[q].hh.rh; {793:}if(p=0)and(mem[cur_align+5].hh.lh<257)then if cur_loop<>0 then {794:}begin mem[q].hh.rh:=new_null_box;p:=mem[q].hh.rh; mem[p].hh.lh:=7999991;mem[p+1].int:=-1073741824; cur_loop:=mem[cur_loop].hh.rh;{795:}q:=7999996;r:=mem[cur_loop+3].int; while r<>0 do begin mem[q].hh.rh:=get_avail;q:=mem[q].hh.rh; mem[q].hh.lh:=mem[r].hh.lh;r:=mem[r].hh.rh;end;mem[q].hh.rh:=0; mem[p+3].int:=mem[7999996].hh.rh;q:=7999996;r:=mem[cur_loop+2].int; while r<>0 do begin mem[q].hh.rh:=get_avail;q:=mem[q].hh.rh; mem[q].hh.lh:=mem[r].hh.lh;r:=mem[r].hh.rh;end;mem[q].hh.rh:=0; mem[p+2].int:=mem[7999996].hh.rh{:795};cur_loop:=mem[cur_loop].hh.rh; mem[p].hh.rh:=new_glue(mem[cur_loop+1].hh.lh); mem[mem[p].hh.rh].hh.b1:=12; end{:794}else begin begin if interaction=3 then;print_nl(264); print(936);end;print_esc(925);begin help_ptr:=3;help_line[2]:=937; help_line[1]:=938;help_line[0]:=939;end;mem[cur_align+5].hh.lh:=257; error;end{:793};if mem[cur_align+5].hh.lh<>256 then begin unsave; new_save_level(6); {797:}begin if cur_list.mode_field=-102 then begin adjust_tail:=cur_tail ;u:=hpack(mem[cur_list.head_field].hh.rh,0,1);w:=mem[u+1].int; cur_tail:=adjust_tail;adjust_tail:=0; end else begin u:=vpackage(mem[cur_list.head_field].hh.rh,0,1,0); w:=mem[u+3].int;end;n:=0; if cur_span<>cur_align then{799:}begin q:=cur_span;repeat n:=n+1; q:=mem[mem[q].hh.rh].hh.rh;until q=cur_align; if n>65535 then confusion(940);q:=cur_span; while mem[mem[q].hh.lh].hh.rhn then begin s:=get_node(2); mem[s].hh.lh:=mem[q].hh.lh;mem[s].hh.rh:=n;mem[q].hh.lh:=s; mem[s+1].int:=w; end else if mem[mem[q].hh.lh+1].intmem[cur_align+1].int then mem[cur_align+1].int:=w; mem[u].hh.b0:=13;mem[u].hh.b1:=n; {660:}if total_stretch[3]<>0 then o:=3 else if total_stretch[2]<>0 then o:=2 else if total_stretch[1]<>0 then o:=1 else o:=0{:660}; mem[u+5].hh.b1:=o;mem[u+6].int:=total_stretch[o]; {666:}if total_shrink[3]<>0 then o:=3 else if total_shrink[2]<>0 then o :=2 else if total_shrink[1]<>0 then o:=1 else o:=0{:666}; mem[u+5].hh.b0:=o;mem[u+4].int:=total_shrink[o];pop_nest; mem[cur_list.tail_field].hh.rh:=u;cur_list.tail_field:=u;end{:797}; {796:}begin mem[cur_list.tail_field].hh.rh:=new_glue(mem[mem[cur_align]. hh.rh+1].hh.lh);cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.b1:=12{:796}; if mem[cur_align+5].hh.lh>=257 then begin fin_col:=true;goto 10;end; init_span(p);end;align_state:=1000000;repeat get_x_or_protected; until cur_cmd<>10;cur_align:=p;init_col;fin_col:=false;10:end; {:792}{800:}procedure fin_row;var p:halfword; begin if cur_list.mode_field=-102 then begin p:=hpack(mem[cur_list. head_field].hh.rh,0,1);pop_nest;append_to_vlist(p); if cur_head<>cur_tail then begin mem[cur_list.tail_field].hh.rh:=mem[ cur_head].hh.rh;cur_list.tail_field:=cur_tail;end; end else begin p:=vpackage(mem[cur_list.head_field].hh.rh,0,1,1073741823 );pop_nest;mem[cur_list.tail_field].hh.rh:=p;cur_list.tail_field:=p; cur_list.aux_field.hh.lh:=1000;end;mem[p].hh.b0:=13;mem[p+6].int:=0; if eqtb[601320].hh.rh<>0 then begin_token_list(eqtb[601320].hh.rh,13); align_peek;end;{:800}{801:}procedure do_assignments;forward; procedure resume_after_display;forward;procedure build_page;forward; procedure fin_align;var p,q,r,s,u,v:halfword;t,w:scaled;o:scaled; n:halfword;rule_save:scaled;aux_save:memory_word; begin if cur_group<>6 then confusion(941);unsave; if cur_group<>6 then confusion(942);unsave; if nest[nest_ptr-1].mode_field=203 then o:=eqtb[603760].int else o:=0; {802:}q:=mem[mem[7999992].hh.rh].hh.rh;repeat flush_list(mem[q+3].int); flush_list(mem[q+2].int);p:=mem[mem[q].hh.rh].hh.rh; if mem[q+1].int=-1073741824 then{803:}begin mem[q+1].int:=0; r:=mem[q].hh.rh;s:=mem[r+1].hh.lh; if s<>0 then begin mem[0].hh.rh:=mem[0].hh.rh+1;delete_glue_ref(s); mem[r+1].hh.lh:=0;end;end{:803}; if mem[q].hh.lh<>7999991 then{804:}begin t:=mem[q+1].int+mem[mem[mem[q]. hh.rh+1].hh.lh+1].int;r:=mem[q].hh.lh;s:=7999991;mem[s].hh.lh:=p;n:=1; repeat mem[r+1].int:=mem[r+1].int-t;u:=mem[r].hh.lh; while mem[r].hh.rh>n do begin s:=mem[s].hh.lh; n:=mem[mem[s].hh.lh].hh.rh+1;end; if mem[r].hh.rhmem[mem[s].hh.lh+1].int then mem[mem[s]. hh.lh+1].int:=mem[r+1].int;free_node(r,2);end;r:=u;until r=7999991; end{:804};mem[q].hh.b0:=13;mem[q].hh.b1:=0;mem[q+3].int:=0; mem[q+2].int:=0;mem[q+5].hh.b1:=0;mem[q+5].hh.b0:=0;mem[q+6].int:=0; mem[q+4].int:=0;q:=p;until q=0{:802};{805:}save_ptr:=save_ptr-2; pack_begin_line:=-cur_list.ml_field; if cur_list.mode_field=-1 then begin rule_save:=eqtb[603761].int; eqtb[603761].int:=0; p:=hpack(mem[7999992].hh.rh,save_stack[save_ptr+1].int,save_stack[ save_ptr+0].int);eqtb[603761].int:=rule_save; end else begin q:=mem[mem[7999992].hh.rh].hh.rh; repeat mem[q+3].int:=mem[q+1].int;mem[q+1].int:=0; q:=mem[mem[q].hh.rh].hh.rh;until q=0; p:=vpackage(mem[7999992].hh.rh,save_stack[save_ptr+1].int,save_stack[ save_ptr+0].int,1073741823);q:=mem[mem[7999992].hh.rh].hh.rh; repeat mem[q+1].int:=mem[q+3].int;mem[q+3].int:=0; q:=mem[mem[q].hh.rh].hh.rh;until q=0;end;pack_begin_line:=0{:805}; {806:}q:=mem[cur_list.head_field].hh.rh;s:=cur_list.head_field; while q<>0 do begin if not(q>=hi_mem_min)then if mem[q].hh.b0=13 then {808:}begin if cur_list.mode_field=-1 then begin mem[q].hh.b0:=0; mem[q+1].int:=mem[p+1].int; if nest[nest_ptr-1].mode_field=203 then mem[q].hh.b1:=2; end else begin mem[q].hh.b0:=1;mem[q+3].int:=mem[p+3].int;end; mem[q+5].hh.b1:=mem[p+5].hh.b1;mem[q+5].hh.b0:=mem[p+5].hh.b0; mem[q+6].gr:=mem[p+6].gr;mem[q+4].int:=o;r:=mem[mem[q+5].hh.rh].hh.rh; s:=mem[mem[p+5].hh.rh].hh.rh;repeat{809:}n:=mem[r].hh.b1; t:=mem[s+1].int;w:=t;u:=7999996;mem[r].hh.b1:=0; while n>0 do begin n:=n-1;{810:}s:=mem[s].hh.rh;v:=mem[s+1].hh.lh; mem[u].hh.rh:=new_glue(v);u:=mem[u].hh.rh;mem[u].hh.b1:=12; t:=t+mem[v+1].int; if mem[p+5].hh.b0=1 then begin if mem[v].hh.b0=mem[p+5].hh.b1 then t:=t+ round(mem[p+6].gr*mem[v+2].int); end else if mem[p+5].hh.b0=2 then begin if mem[v].hh.b1=mem[p+5].hh.b1 then t:=t-round(mem[p+6].gr*mem[v+3].int);end;s:=mem[s].hh.rh; mem[u].hh.rh:=new_null_box;u:=mem[u].hh.rh;t:=t+mem[s+1].int; if cur_list.mode_field=-1 then mem[u+1].int:=mem[s+1].int else begin mem [u].hh.b0:=1;mem[u+3].int:=mem[s+1].int;end{:810};end; if cur_list.mode_field=-1 then{811:}begin mem[r+3].int:=mem[q+3].int; mem[r+2].int:=mem[q+2].int; if t=mem[r+1].int then begin mem[r+5].hh.b0:=0;mem[r+5].hh.b1:=0; mem[r+6].gr:=0.0; end else if t>mem[r+1].int then begin mem[r+5].hh.b0:=1; if mem[r+6].int=0 then mem[r+6].gr:=0.0 else mem[r+6].gr:=(t-mem[r+1]. int)/mem[r+6].int;end else begin mem[r+5].hh.b1:=mem[r+5].hh.b0; mem[r+5].hh.b0:=2; if mem[r+4].int=0 then mem[r+6].gr:=0.0 else if(mem[r+5].hh.b1=0)and(mem [r+1].int-t>mem[r+4].int)then mem[r+6].gr:=1.0 else mem[r+6].gr:=(mem[r +1].int-t)/mem[r+4].int;end;mem[r+1].int:=w;mem[r].hh.b0:=0; end{:811}else{812:}begin mem[r+1].int:=mem[q+1].int; if t=mem[r+3].int then begin mem[r+5].hh.b0:=0;mem[r+5].hh.b1:=0; mem[r+6].gr:=0.0; end else if t>mem[r+3].int then begin mem[r+5].hh.b0:=1; if mem[r+6].int=0 then mem[r+6].gr:=0.0 else mem[r+6].gr:=(t-mem[r+3]. int)/mem[r+6].int;end else begin mem[r+5].hh.b1:=mem[r+5].hh.b0; mem[r+5].hh.b0:=2; if mem[r+4].int=0 then mem[r+6].gr:=0.0 else if(mem[r+5].hh.b1=0)and(mem [r+3].int-t>mem[r+4].int)then mem[r+6].gr:=1.0 else mem[r+6].gr:=(mem[r +3].int-t)/mem[r+4].int;end;mem[r+3].int:=w;mem[r].hh.b0:=1;end{:812}; mem[r+4].int:=0;if u<>7999996 then begin mem[u].hh.rh:=mem[r].hh.rh; mem[r].hh.rh:=mem[7999996].hh.rh;r:=u;end{:809}; r:=mem[mem[r].hh.rh].hh.rh;s:=mem[mem[s].hh.rh].hh.rh;until r=0; end{:808}else if mem[q].hh.b0=2 then{807:}begin if(mem[q+1].int= -1073741824)then mem[q+1].int:=mem[p+1].int; if(mem[q+3].int=-1073741824)then mem[q+3].int:=mem[p+3].int; if(mem[q+2].int=-1073741824)then mem[q+2].int:=mem[p+2].int; if o<>0 then begin r:=mem[q].hh.rh;mem[q].hh.rh:=0;q:=hpack(q,0,1); mem[q+4].int:=o;mem[q].hh.rh:=r;mem[s].hh.rh:=q;end;end{:807};s:=q; q:=mem[q].hh.rh;end{:806};flush_node_list(p);pop_alignment; {813:}aux_save:=cur_list.aux_field;p:=mem[cur_list.head_field].hh.rh; q:=cur_list.tail_field;pop_nest; if cur_list.mode_field=203 then{1207:}begin do_assignments; if cur_cmd<>3 then{1208:}begin begin if interaction=3 then; print_nl(264);print(1197);end;begin help_ptr:=2;help_line[1]:=921; help_line[0]:=922;end;back_error;end{:1208}else{1198:}begin get_x_token; if cur_cmd<>3 then begin begin if interaction=3 then;print_nl(264); print(1193);end;begin help_ptr:=2;help_line[1]:=1194;help_line[0]:=1195; end;back_error;end;end{:1198};flush_node_list(cur_list.eTeX_aux_field); pop_nest; begin mem[cur_list.tail_field].hh.rh:=new_penalty(eqtb[603179].int); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; begin mem[cur_list.tail_field].hh.rh:=new_param_glue(3); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.rh:=p;if p<>0 then cur_list.tail_field:=q; begin mem[cur_list.tail_field].hh.rh:=new_penalty(eqtb[603180].int); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; begin mem[cur_list.tail_field].hh.rh:=new_param_glue(4); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; cur_list.aux_field.int:=aux_save.int;resume_after_display; end{:1207}else begin cur_list.aux_field:=aux_save; mem[cur_list.tail_field].hh.rh:=p;if p<>0 then cur_list.tail_field:=q; if cur_list.mode_field=1 then build_page;end{:813};end; {786:}procedure align_peek;label 20;begin 20:align_state:=1000000; repeat get_x_or_protected;until cur_cmd<>10; if cur_cmd=34 then begin scan_left_brace;new_save_level(7); if cur_list.mode_field=-1 then normal_paragraph; end else if cur_cmd=2 then fin_align else if(cur_cmd=5)and(cur_chr=258) then goto 20 else begin init_row;init_col;end;end; {:786}{:801}{816:}{827:}function finite_shrink(p:halfword):halfword; var q:halfword; begin if no_shrink_error_yet then begin no_shrink_error_yet:=false; {if eqtb[603200].int>0 then end_diagnostic(true);} begin if interaction=3 then;print_nl(264);print(943);end; begin help_ptr:=5;help_line[4]:=944;help_line[3]:=945;help_line[2]:=946; help_line[1]:=947;help_line[0]:=948;end;error; {if eqtb[603200].int>0 then begin_diagnostic;}end;q:=new_spec(p); mem[q].hh.b1:=0;delete_glue_ref(p);finite_shrink:=q;end; {:827}{830:}procedure try_break(pi:integer;break_type:small_number); label 10,30,31,22,60,40,45;var r:halfword;prev_r:halfword; old_l:halfword;no_break_yet:boolean;{831:}prev_prev_r:halfword; s:halfword;q:halfword;v:halfword;t:integer;f:internal_font_number; l:halfword;node_r_stays_active:boolean;line_width:scaled;fit_class:0..3; b:halfword;d:integer;artificial_demerits:boolean;save_link:halfword; shortfall:scaled;{:831}{1580:}g:scaled; {:1580}begin{832:}if abs(pi)>=10000 then if pi>0 then goto 10 else pi:= -10000{:832};no_break_yet:=true;prev_r:=7999993;old_l:=0; cur_active_width[1]:=active_width[1]; cur_active_width[2]:=active_width[2]; cur_active_width[3]:=active_width[3]; cur_active_width[4]:=active_width[4]; cur_active_width[5]:=active_width[5]; cur_active_width[6]:=active_width[6]; while true do begin 22:r:=mem[prev_r].hh.rh; {833:}if mem[r].hh.b0=2 then begin cur_active_width[1]:=cur_active_width [1]+mem[r+1].int;cur_active_width[2]:=cur_active_width[2]+mem[r+2].int; cur_active_width[3]:=cur_active_width[3]+mem[r+3].int; cur_active_width[4]:=cur_active_width[4]+mem[r+4].int; cur_active_width[5]:=cur_active_width[5]+mem[r+5].int; cur_active_width[6]:=cur_active_width[6]+mem[r+6].int; prev_prev_r:=prev_r;prev_r:=r;goto 22;end{:833}; {836:}begin l:=mem[r+1].hh.lh; if l>old_l then begin if(minimum_demerits<1073741823)and((old_l<> easy_line)or(r=7999993))then{837:}begin if no_break_yet then{838:}begin no_break_yet:=false;break_width[1]:=background[1]; break_width[2]:=background[2];break_width[3]:=background[3]; break_width[4]:=background[4];break_width[5]:=background[5]; break_width[6]:=background[6];s:=cur_p; if break_type>0 then if cur_p<>0 then{841:}begin t:=mem[cur_p].hh.b1; v:=cur_p;s:=mem[cur_p+1].hh.rh;while t>0 do begin t:=t-1; v:=mem[v].hh.rh;{842:}if(v>=hi_mem_min)then begin f:=mem[v].hh.b0; break_width[1]:=break_width[1]-font_info[width_base[f]+font_info[ char_base[f]+mem[v].hh.b1].qqqq.b0].int; end else case mem[v].hh.b0 of 6:begin f:=mem[v+1].hh.b0; break_width[1]:=break_width[1]-font_info[width_base[f]+font_info[ char_base[f]+mem[v+1].hh.b1].qqqq.b0].int;end; 0,1,2,11:break_width[1]:=break_width[1]-mem[v+1].int; others:confusion(949)end{:842};end; while s<>0 do begin{843:}if(s>=hi_mem_min)then begin f:=mem[s].hh.b0; break_width[1]:=break_width[1]+font_info[width_base[f]+font_info[ char_base[f]+mem[s].hh.b1].qqqq.b0].int; end else case mem[s].hh.b0 of 6:begin f:=mem[s+1].hh.b0; break_width[1]:=break_width[1]+font_info[width_base[f]+font_info[ char_base[f]+mem[s+1].hh.b1].qqqq.b0].int;end; 0,1,2,11:break_width[1]:=break_width[1]+mem[s+1].int; others:confusion(950)end{:843};s:=mem[s].hh.rh;end; break_width[1]:=break_width[1]+disc_width; if mem[cur_p+1].hh.rh=0 then s:=mem[v].hh.rh;end{:841}; while s<>0 do begin if(s>=hi_mem_min)then goto 30; case mem[s].hh.b0 of 10:{839:}begin v:=mem[s+1].hh.lh; break_width[1]:=break_width[1]-mem[v+1].int; break_width[2+mem[v].hh.b0]:=break_width[2+mem[v].hh.b0]-mem[v+2].int; break_width[6]:=break_width[6]-mem[v+3].int;end{:839};12:; 9:break_width[1]:=break_width[1]-mem[s+1].int; 11:if mem[s].hh.b1<>1 then goto 30 else break_width[1]:=break_width[1]- mem[s+1].int;others:goto 30 end;s:=mem[s].hh.rh;end;30:end{:838}; {844:}if mem[prev_r].hh.b0=2 then begin mem[prev_r+1].int:=mem[prev_r+1] .int-cur_active_width[1]+break_width[1]; mem[prev_r+2].int:=mem[prev_r+2].int-cur_active_width[2]+break_width[2]; mem[prev_r+3].int:=mem[prev_r+3].int-cur_active_width[3]+break_width[3]; mem[prev_r+4].int:=mem[prev_r+4].int-cur_active_width[4]+break_width[4]; mem[prev_r+5].int:=mem[prev_r+5].int-cur_active_width[5]+break_width[5]; mem[prev_r+6].int:=mem[prev_r+6].int-cur_active_width[6]+break_width[6]; end else if prev_r=7999993 then begin active_width[1]:=break_width[1]; active_width[2]:=break_width[2];active_width[3]:=break_width[3]; active_width[4]:=break_width[4];active_width[5]:=break_width[5]; active_width[6]:=break_width[6];end else begin q:=get_node(7); mem[q].hh.rh:=r;mem[q].hh.b0:=2;mem[q].hh.b1:=0; mem[q+1].int:=break_width[1]-cur_active_width[1]; mem[q+2].int:=break_width[2]-cur_active_width[2]; mem[q+3].int:=break_width[3]-cur_active_width[3]; mem[q+4].int:=break_width[4]-cur_active_width[4]; mem[q+5].int:=break_width[5]-cur_active_width[5]; mem[q+6].int:=break_width[6]-cur_active_width[6];mem[prev_r].hh.rh:=q; prev_prev_r:=prev_r;prev_r:=q;end{:844}; if abs(eqtb[603184].int)>=1073741823-minimum_demerits then minimum_demerits:=1073741822 else minimum_demerits:=minimum_demerits+abs (eqtb[603184].int); for fit_class:=0 to 3 do begin if minimal_demerits[fit_class]<= minimum_demerits then{846:}begin q:=get_node(2);mem[q].hh.rh:=passive; passive:=q;mem[q+1].hh.rh:=cur_p;{pass_number:=pass_number+1; mem[q].hh.lh:=pass_number;}mem[q+1].hh.lh:=best_place[fit_class]; q:=get_node(active_node_size);mem[q+1].hh.rh:=passive; mem[q+1].hh.lh:=best_pl_line[fit_class]+1;mem[q].hh.b1:=fit_class; mem[q].hh.b0:=break_type;mem[q+2].int:=minimal_demerits[fit_class]; if do_last_line_fit then{1587:}begin mem[q+3].int:=best_pl_short[ fit_class];mem[q+4].int:=best_pl_glue[fit_class];end{:1587}; mem[q].hh.rh:=r;mem[prev_r].hh.rh:=q;prev_r:=q; {if eqtb[603200].int>0 then[847:]begin print_nl(951); print_int(mem[passive].hh.lh);print(952);print_int(mem[q+1].hh.lh-1); print_char(46);print_int(fit_class);if break_type=1 then print_char(45); print(953);print_int(mem[q+2].int); if do_last_line_fit then[1588:]begin print(1426); print_scaled(mem[q+3].int);if cur_p=0 then print(1427)else print(1022); print_scaled(mem[q+4].int);end[:1588];print(954); if mem[passive+1].hh.lh=0 then print_char(48)else print_int(mem[mem[ passive+1].hh.lh].hh.lh);end[:847];}end{:846}; minimal_demerits[fit_class]:=1073741823;end; minimum_demerits:=1073741823; {845:}if r<>7999993 then begin q:=get_node(7);mem[q].hh.rh:=r; mem[q].hh.b0:=2;mem[q].hh.b1:=0; mem[q+1].int:=cur_active_width[1]-break_width[1]; mem[q+2].int:=cur_active_width[2]-break_width[2]; mem[q+3].int:=cur_active_width[3]-break_width[3]; mem[q+4].int:=cur_active_width[4]-break_width[4]; mem[q+5].int:=cur_active_width[5]-break_width[5]; mem[q+6].int:=cur_active_width[6]-break_width[6];mem[prev_r].hh.rh:=q; prev_prev_r:=prev_r;prev_r:=q;end{:845};end{:837}; if r=7999993 then goto 10; {851:}if l>easy_line then begin line_width:=second_width; old_l:=536870910;end else begin old_l:=l; if l>last_special_line then line_width:=second_width else if eqtb[601312 ].hh.rh=0 then line_width:=first_width else line_width:=mem[eqtb[601312] .hh.rh+2*l].int;end{:851};end;end{:836}; {852:}begin artificial_demerits:=false; shortfall:=line_width-cur_active_width[1]; if shortfall>0 then{853:}if(cur_active_width[3]<>0)or(cur_active_width[4 ]<>0)or(cur_active_width[5]<>0)then begin if do_last_line_fit then begin if cur_p=0 then{1582:}begin if(mem[r+3].int=0)or(mem[r+4].int<=0)then goto 45; if(cur_active_width[3]<>fill_width[0])or(cur_active_width[4]<>fill_width [1])or(cur_active_width[5]<>fill_width[2])then goto 45; if mem[r+3].int>0 then g:=cur_active_width[2]else g:=cur_active_width[6] ;if g<=0 then goto 45;arith_error:=false; g:=fract(g,mem[r+3].int,mem[r+4].int,1073741823); if eqtb[603229].int<1000 then g:=fract(g,eqtb[603229].int,1000, 1073741823); if arith_error then if mem[r+3].int>0 then g:=1073741823 else g:= -1073741823;if g>0 then{1583:}begin if g>shortfall then g:=shortfall; if g>7230584 then if cur_active_width[2]<1663497 then begin b:=10000; fit_class:=0;goto 40;end;b:=badness(g,cur_active_width[2]); if b>12 then if b>99 then fit_class:=0 else fit_class:=1 else fit_class :=2;goto 40; end{:1583}else if g<0 then{1584:}begin if-g>cur_active_width[6]then g:=- cur_active_width[6];b:=badness(-g,cur_active_width[6]); if b>12 then fit_class:=3 else fit_class:=2;goto 40;end{:1584}; 45:end{:1582};shortfall:=0;end;b:=0;fit_class:=2; end else begin if shortfall>7230584 then if cur_active_width[2]<1663497 then begin b:=10000;fit_class:=0;goto 31;end; b:=badness(shortfall,cur_active_width[2]); if b>12 then if b>99 then fit_class:=0 else fit_class:=1 else fit_class :=2;31:end{:853}else{854:}begin if-shortfall>cur_active_width[6]then b:= 10001 else b:=badness(-shortfall,cur_active_width[6]); if b>12 then fit_class:=3 else fit_class:=2;end{:854}; if do_last_line_fit then{1585:}begin if cur_p=0 then shortfall:=0; if shortfall>0 then g:=cur_active_width[2]else if shortfall<0 then g:= cur_active_width[6]else g:=0;end{:1585}; 40:if(b>10000)or(pi=-10000)then{855:}begin if final_pass and( minimum_demerits=1073741823)and(mem[r].hh.rh=7999993)and(prev_r=7999993) then artificial_demerits:=true else if b>threshold then goto 60; node_r_stays_active:=false;end{:855}else begin prev_r:=r; if b>threshold then goto 22;node_r_stays_active:=true;end; {856:}if artificial_demerits then d:=0 else{860:}begin d:=eqtb[603170]. int+b;if abs(d)>=10000 then d:=100000000 else d:=d*d; if pi<>0 then if pi>0 then d:=d+pi*pi else if pi>-10000 then d:=d-pi*pi; if(break_type=1)and(mem[r].hh.b0=1)then if cur_p<>0 then d:=d+eqtb[ 603182].int else d:=d+eqtb[603183].int; if abs(fit_class-mem[r].hh.b1)>1 then d:=d+eqtb[603184].int;end{:860}; {if eqtb[603200].int>0 then[857:]begin if printed_node<>cur_p then[858:] begin print_nl(340); if cur_p=0 then short_display(mem[printed_node].hh.rh)else begin save_link:=mem[cur_p].hh.rh;mem[cur_p].hh.rh:=0;print_nl(340); short_display(mem[printed_node].hh.rh);mem[cur_p].hh.rh:=save_link;end; printed_node:=cur_p;end[:858];print_nl(64); if cur_p=0 then print_esc(607)else if mem[cur_p].hh.b0<>10 then begin if mem[cur_p].hh.b0=12 then print_esc(536)else if mem[cur_p].hh.b0=7 then print_esc(353)else if mem[cur_p].hh.b0=11 then print_esc(342)else print_esc(347);end;print(955); if mem[r+1].hh.rh=0 then print_char(48)else print_int(mem[mem[r+1].hh.rh ].hh.lh);print(956);if b>10000 then print_char(42)else print_int(b); print(957);print_int(pi);print(958); if artificial_demerits then print_char(42)else print_int(d);end[:857];} d:=d+mem[r+2].int; if d<=minimal_demerits[fit_class]then begin minimal_demerits[fit_class] :=d;best_place[fit_class]:=mem[r+1].hh.rh;best_pl_line[fit_class]:=l; if do_last_line_fit then{1586:}begin best_pl_short[fit_class]:=shortfall ;best_pl_glue[fit_class]:=g;end{:1586}; if d0 then if mem[cur_p].hh. b0=7 then begin t:=mem[cur_p].hh.b1;while t>0 do begin t:=t-1; printed_node:=mem[printed_node].hh.rh;end;end[:859]}end; {:830}{878:}procedure post_line_break(d:boolean);label 30,31; var q,r,s:halfword;disc_break:boolean;post_disc_break:boolean; cur_width:scaled;cur_indent:scaled;t:quarterword;pen:integer; cur_line:halfword;LR_ptr:halfword;begin LR_ptr:=cur_list.eTeX_aux_field; {879:}q:=mem[best_bet+1].hh.rh;cur_p:=0;repeat r:=q;q:=mem[q+1].hh.lh; mem[r+1].hh.lh:=cur_p;cur_p:=r;until q=0{:879}; cur_line:=cur_list.pg_field+1; repeat{881:}if(eqtb[603232].int>0)then{1439:}begin q:=mem[7999997].hh.rh ;if LR_ptr<>0 then begin temp_ptr:=LR_ptr;r:=q; repeat s:=new_math(0,(mem[temp_ptr].hh.lh-1));mem[s].hh.rh:=r;r:=s; temp_ptr:=mem[temp_ptr].hh.rh;until temp_ptr=0;mem[7999997].hh.rh:=r; end; while q<>mem[cur_p+1].hh.rh do begin if not(q>=hi_mem_min)then if mem[q] .hh.b0=9 then{1440:}if odd(mem[q].hh.b1)then begin if LR_ptr<>0 then if mem[LR_ptr].hh.lh=(4*(mem[q].hh.b1 div 4)+3)then begin temp_ptr:=LR_ptr; LR_ptr:=mem[temp_ptr].hh.rh;begin mem[temp_ptr].hh.rh:=avail; avail:=temp_ptr;{dyn_used:=dyn_used-1;}end;end; end else begin temp_ptr:=get_avail; mem[temp_ptr].hh.lh:=(4*(mem[q].hh.b1 div 4)+3); mem[temp_ptr].hh.rh:=LR_ptr;LR_ptr:=temp_ptr;end{:1440};q:=mem[q].hh.rh; end;end{:1439};{882:}q:=mem[cur_p+1].hh.rh;disc_break:=false; post_disc_break:=false; if q<>0 then if mem[q].hh.b0=10 then begin delete_glue_ref(mem[q+1].hh. lh);mem[q+1].hh.lh:=eqtb[600790].hh.rh;mem[q].hh.b1:=9; mem[eqtb[600790].hh.rh].hh.rh:=mem[eqtb[600790].hh.rh].hh.rh+1;goto 30; end else begin if mem[q].hh.b0=7 then{883:}begin t:=mem[q].hh.b1; {884:}if t=0 then r:=mem[q].hh.rh else begin r:=q; while t>1 do begin r:=mem[r].hh.rh;t:=t-1;end;s:=mem[r].hh.rh; r:=mem[s].hh.rh;mem[s].hh.rh:=0;flush_node_list(mem[q].hh.rh); mem[q].hh.b1:=0;end{:884}; if mem[q+1].hh.rh<>0 then{885:}begin s:=mem[q+1].hh.rh; while mem[s].hh.rh<>0 do s:=mem[s].hh.rh;mem[s].hh.rh:=r; r:=mem[q+1].hh.rh;mem[q+1].hh.rh:=0;post_disc_break:=true;end{:885}; if mem[q+1].hh.lh<>0 then{886:}begin s:=mem[q+1].hh.lh;mem[q].hh.rh:=s; while mem[s].hh.rh<>0 do s:=mem[s].hh.rh;mem[q+1].hh.lh:=0;q:=s; end{:886};mem[q].hh.rh:=r;disc_break:=true; end{:883}else if mem[q].hh.b0=11 then mem[q+1].int:=0 else if mem[q].hh. b0=9 then begin mem[q+1].int:=0; if(eqtb[603232].int>0)then{1440:}if odd(mem[q].hh.b1)then begin if LR_ptr<>0 then if mem[LR_ptr].hh.lh=(4*(mem[q].hh.b1 div 4)+3)then begin temp_ptr:=LR_ptr;LR_ptr:=mem[temp_ptr].hh.rh; begin mem[temp_ptr].hh.rh:=avail;avail:=temp_ptr;{dyn_used:=dyn_used-1;} end;end;end else begin temp_ptr:=get_avail; mem[temp_ptr].hh.lh:=(4*(mem[q].hh.b1 div 4)+3); mem[temp_ptr].hh.rh:=LR_ptr;LR_ptr:=temp_ptr;end{:1440};end; end else begin q:=7999997;while mem[q].hh.rh<>0 do q:=mem[q].hh.rh;end; {887:}r:=new_param_glue(8);mem[r].hh.rh:=mem[q].hh.rh;mem[q].hh.rh:=r; q:=r{:887};30:{:882}; if(eqtb[603232].int>0)then{1441:}if LR_ptr<>0 then begin s:=7999997; r:=mem[s].hh.rh;while r<>q do begin s:=r;r:=mem[s].hh.rh;end;r:=LR_ptr; while r<>0 do begin temp_ptr:=new_math(0,mem[r].hh.lh); mem[s].hh.rh:=temp_ptr;s:=temp_ptr;r:=mem[r].hh.rh;end;mem[s].hh.rh:=q; end{:1441};{888:}r:=mem[q].hh.rh;mem[q].hh.rh:=0;q:=mem[7999997].hh.rh; mem[7999997].hh.rh:=r; if eqtb[600789].hh.rh<>0 then begin r:=new_param_glue(7); mem[r].hh.rh:=q;q:=r;end{:888}; {890:}if cur_line>last_special_line then begin cur_width:=second_width; cur_indent:=second_indent; end else if eqtb[601312].hh.rh=0 then begin cur_width:=first_width; cur_indent:=first_indent; end else begin cur_width:=mem[eqtb[601312].hh.rh+2*cur_line].int; cur_indent:=mem[eqtb[601312].hh.rh+2*cur_line-1].int;end; adjust_tail:=7999995;just_box:=hpack(q,cur_width,0); mem[just_box+4].int:=cur_indent{:890};{889:}append_to_vlist(just_box); if 7999995<>adjust_tail then begin mem[cur_list.tail_field].hh.rh:=mem[ 7999995].hh.rh;cur_list.tail_field:=adjust_tail;end; adjust_tail:=0{:889}; {891:}if cur_line+1<>best_line then begin q:=eqtb[601579].hh.rh; if q<>0 then begin r:=cur_line;if r>mem[q+1].int then r:=mem[q+1].int; pen:=mem[q+r+1].int;end else pen:=eqtb[603181].int; q:=eqtb[601580].hh.rh;if q<>0 then begin r:=cur_line-cur_list.pg_field; if r>mem[q+1].int then r:=mem[q+1].int;pen:=pen+mem[q+r+1].int; end else if cur_line=cur_list.pg_field+1 then pen:=pen+eqtb[603173].int; if d then q:=eqtb[601582].hh.rh else q:=eqtb[601581].hh.rh; if q<>0 then begin r:=best_line-cur_line-1; if r>mem[q+1].int then r:=mem[q+1].int;pen:=pen+mem[q+r+1].int; end else if cur_line+2=best_line then if d then pen:=pen+eqtb[603175]. int else pen:=pen+eqtb[603174].int; if disc_break then pen:=pen+eqtb[603176].int; if pen<>0 then begin r:=new_penalty(pen); mem[cur_list.tail_field].hh.rh:=r;cur_list.tail_field:=r;end; end{:891}{:881};cur_line:=cur_line+1;cur_p:=mem[cur_p+1].hh.lh; if cur_p<>0 then if not post_disc_break then{880:}begin r:=7999997; while true do begin q:=mem[r].hh.rh; if q=mem[cur_p+1].hh.rh then goto 31;if(q>=hi_mem_min)then goto 31; if(mem[q].hh.b0<9)then goto 31; if mem[q].hh.b0=11 then if mem[q].hh.b1<>1 then goto 31;r:=q; if mem[q].hh.b0=9 then if(eqtb[603232].int>0)then{1440:}if odd(mem[q].hh .b1)then begin if LR_ptr<>0 then if mem[LR_ptr].hh.lh=(4*(mem[q].hh.b1 div 4)+3)then begin temp_ptr:=LR_ptr;LR_ptr:=mem[temp_ptr].hh.rh; begin mem[temp_ptr].hh.rh:=avail;avail:=temp_ptr;{dyn_used:=dyn_used-1;} end;end;end else begin temp_ptr:=get_avail; mem[temp_ptr].hh.lh:=(4*(mem[q].hh.b1 div 4)+3); mem[temp_ptr].hh.rh:=LR_ptr;LR_ptr:=temp_ptr;end{:1440};end; 31:if r<>7999997 then begin mem[r].hh.rh:=0; flush_node_list(mem[7999997].hh.rh);mem[7999997].hh.rh:=q;end;end{:880}; until cur_p=0; if(cur_line<>best_line)or(mem[7999997].hh.rh<>0)then confusion(965); cur_list.pg_field:=best_line-1;cur_list.eTeX_aux_field:=LR_ptr;end; {:878}{896:}{907:}function reconstitute(j,n:small_number; bchar,hchar:halfword):small_number;label 22,30;var p:halfword; t:halfword;q:four_quarters;cur_rh:halfword;test_char:halfword;w:scaled; k:font_index;begin hyphen_passed:=0;t:=7999996;w:=0; mem[7999996].hh.rh:=0;{909:}cur_l:=hu[j]+0;cur_q:=t; if j=0 then begin ligature_present:=init_lig;p:=init_list; if ligature_present then lft_hit:=init_lft; while p>0 do begin begin mem[t].hh.rh:=get_avail;t:=mem[t].hh.rh; mem[t].hh.b0:=hf;mem[t].hh.b1:=mem[p].hh.b1;end;p:=mem[p].hh.rh;end; end else if cur_l<256 then begin mem[t].hh.rh:=get_avail; t:=mem[t].hh.rh;mem[t].hh.b0:=hf;mem[t].hh.b1:=cur_l;end;lig_stack:=0; begin if j1 then goto 30;k:=lig_kern_base[hf]+q.b3; q:=font_info[k].qqqq; if q.b0>128 then begin k:=lig_kern_base[hf]+256*q.b2+q.b3+32768-256*(128 );q:=font_info[k].qqqq;end;end; if cur_rh<256 then test_char:=cur_rh else test_char:=cur_r; while true do begin if q.b1=test_char then if q.b0<=128 then if cur_rh< 256 then begin hyphen_passed:=j;hchar:=256;cur_rh:=256;goto 22; end else begin if hchar<256 then if odd(hyf[j])then begin hyphen_passed :=j;hchar:=256;end; if q.b2<128 then{912:}begin if cur_l=256 then lft_hit:=true; if j=n then if lig_stack=0 then rt_hit:=true; begin if interrupt<>0 then pause_for_instructions;end; case q.b2 of 1,5:begin cur_l:=q.b3;ligature_present:=true;end; 2,6:begin cur_r:=q.b3; if lig_stack>0 then mem[lig_stack].hh.b1:=cur_r else begin lig_stack:= new_lig_item(cur_r);if j=n then bchar:=256 else begin p:=get_avail; mem[lig_stack+1].hh.rh:=p;mem[p].hh.b1:=hu[j+1]+0;mem[p].hh.b0:=hf;end; end;end;3:begin cur_r:=q.b3;p:=lig_stack;lig_stack:=new_lig_item(cur_r); mem[lig_stack].hh.rh:=p;end; 7,11:begin if ligature_present then begin p:=new_ligature(hf,cur_l,mem[ cur_q].hh.rh);if lft_hit then begin mem[p].hh.b1:=2;lft_hit:=false;end; if false then if lig_stack=0 then begin mem[p].hh.b1:=mem[p].hh.b1+1; rt_hit:=false;end;mem[cur_q].hh.rh:=p;t:=p;ligature_present:=false;end; cur_q:=t;cur_l:=q.b3;ligature_present:=true;end; others:begin cur_l:=q.b3;ligature_present:=true; if lig_stack>0 then begin if mem[lig_stack+1].hh.rh>0 then begin mem[t]. hh.rh:=mem[lig_stack+1].hh.rh;t:=mem[t].hh.rh;j:=j+1;end;p:=lig_stack; lig_stack:=mem[p].hh.rh;free_node(p,2); if lig_stack=0 then begin if j4 then if q.b2<>7 then goto 30;goto 22;end{:912}; w:=font_info[kern_base[hf]+256*q.b2+q.b3].int;goto 30;end; if q.b0>=128 then if cur_rh=256 then goto 30 else begin cur_rh:=256; goto 22;end;k:=k+q.b0+1;q:=font_info[k].qqqq;end;30:{:910}; {911:}if ligature_present then begin p:=new_ligature(hf,cur_l,mem[cur_q] .hh.rh);if lft_hit then begin mem[p].hh.b1:=2;lft_hit:=false;end; if rt_hit then if lig_stack=0 then begin mem[p].hh.b1:=mem[p].hh.b1+1; rt_hit:=false;end;mem[cur_q].hh.rh:=p;t:=p;ligature_present:=false;end; if w<>0 then begin mem[t].hh.rh:=new_kern(w);t:=mem[t].hh.rh;w:=0;end; if lig_stack>0 then begin cur_q:=t;cur_l:=mem[lig_stack].hh.b1; ligature_present:=true; begin if mem[lig_stack+1].hh.rh>0 then begin mem[t].hh.rh:=mem[lig_stack +1].hh.rh;t:=mem[t].hh.rh;j:=j+1;end;p:=lig_stack; lig_stack:=mem[p].hh.rh;free_node(p,2); if lig_stack=0 then begin if jhc[j]then goto 30;j:=j+1;u:=u+1;until j>hn; {933:}s:=hyph_list[h];while s<>0 do begin hyf[mem[s].hh.lh]:=1; s:=mem[s].hh.rh;end{:933};hn:=hn-1;goto 40;end;30:{:932}; if h>0 then h:=h-1 else h:=8191;end;45:hn:=hn-1{:931}; if trie[cur_lang+1].b1<>cur_lang+0 then goto 10;hc[0]:=0;hc[hn+1]:=0; hc[hn+2]:=256; for j:=0 to hn-r_hyf+1 do begin z:=trie[cur_lang+1].rh+hc[j];l:=j; while hc[l]=trie[z].b1-0 do begin if trie[z].b0<>0 then{925:}begin v:= trie[z].b0;repeat v:=v+op_start[cur_lang];i:=l-hyf_distance[v]; if hyf_num[v]>hyf[i]then hyf[i]:=hyf_num[v];v:=hyf_next[v];until v=0; end{:925};l:=l+1;z:=trie[z].rh+hc[l];end;end; 40:for j:=0 to l_hyf-1 do hyf[j]:=0; for j:=0 to r_hyf-1 do hyf[hn-j]:=0{:924}; {903:}for j:=l_hyf to hn-r_hyf do if odd(hyf[j])then goto 41;goto 10; 41:{:903};{904:}q:=mem[hb].hh.rh;mem[hb].hh.rh:=0;r:=mem[ha].hh.rh; mem[ha].hh.rh:=0;bchar:=hyf_bchar; if(ha>=hi_mem_min)then if mem[ha].hh.b0<>hf then goto 42 else begin init_list:=ha;init_lig:=false;hu[0]:=mem[ha].hh.b1-0; end else if mem[ha].hh.b0=6 then if mem[ha+1].hh.b0<>hf then goto 42 else begin init_list:=mem[ha+1].hh.rh;init_lig:=true; init_lft:=(mem[ha].hh.b1>1);hu[0]:=mem[ha+1].hh.b1-0; if init_list=0 then if init_lft then begin hu[0]:=256;init_lig:=false; end;free_node(ha,2); end else begin if not(r>=hi_mem_min)then if mem[r].hh.b0=6 then if mem[r ].hh.b1>1 then goto 42;j:=1;s:=ha;init_list:=0;goto 50;end;s:=cur_p; while mem[s].hh.rh<>ha do s:=mem[s].hh.rh;j:=0;goto 50;42:s:=ha;j:=0; hu[0]:=256;init_lig:=false;init_list:=0;50:flush_node_list(r); {914:}repeat l:=j;j:=reconstitute(j,hn,bchar,hyf_char+0)+1; if hyphen_passed=0 then begin mem[s].hh.rh:=mem[7999996].hh.rh; while mem[s].hh.rh>0 do s:=mem[s].hh.rh;if odd(hyf[j-1])then begin l:=j; hyphen_passed:=j-1;mem[7999996].hh.rh:=0;end;end; if hyphen_passed>0 then{915:}repeat r:=get_node(2); mem[r].hh.rh:=mem[7999996].hh.rh;mem[r].hh.b0:=7;major_tail:=r; r_count:=0; while mem[major_tail].hh.rh>0 do begin major_tail:=mem[major_tail].hh.rh ;r_count:=r_count+1;end;i:=hyphen_passed;hyf[i]:=0;{916:}minor_tail:=0; mem[r+1].hh.lh:=0;hyf_node:=new_character(hf,hyf_char); if hyf_node<>0 then begin i:=i+1;c:=hu[i];hu[i]:=hyf_char; begin mem[hyf_node].hh.rh:=avail;avail:=hyf_node;{dyn_used:=dyn_used-1;} end;end;while l<=i do begin l:=reconstitute(l,i,font_bchar[hf],256)+1; if mem[7999996].hh.rh>0 then begin if minor_tail=0 then mem[r+1].hh.lh:= mem[7999996].hh.rh else mem[minor_tail].hh.rh:=mem[7999996].hh.rh; minor_tail:=mem[7999996].hh.rh; while mem[minor_tail].hh.rh>0 do minor_tail:=mem[minor_tail].hh.rh;end; end;if hyf_node<>0 then begin hu[i]:=c;l:=i;i:=i-1;end{:916}; {917:}minor_tail:=0;mem[r+1].hh.rh:=0;c_loc:=0; if bchar_label[hf]<>0 then begin l:=l-1;c:=hu[l];c_loc:=l;hu[l]:=256; end;while l0 then begin hu[c_loc]:=c;c_loc:=0;end; if mem[7999996].hh.rh>0 then begin if minor_tail=0 then mem[r+1].hh.rh:= mem[7999996].hh.rh else mem[minor_tail].hh.rh:=mem[7999996].hh.rh; minor_tail:=mem[7999996].hh.rh; while mem[minor_tail].hh.rh>0 do minor_tail:=mem[minor_tail].hh.rh;end; until l>=j;while l>j do{918:}begin j:=reconstitute(j,hn,bchar,256)+1; mem[major_tail].hh.rh:=mem[7999996].hh.rh; while mem[major_tail].hh.rh>0 do begin major_tail:=mem[major_tail].hh.rh ;r_count:=r_count+1;end;end{:918};end{:917}; {919:}if r_count>127 then begin mem[s].hh.rh:=mem[r].hh.rh; mem[r].hh.rh:=0;flush_node_list(r);end else begin mem[s].hh.rh:=r; mem[r].hh.b1:=r_count;end;s:=major_tail{:919};hyphen_passed:=j-1; mem[7999996].hh.rh:=0;until not odd(hyf[j-1]){:915};until j>hn; mem[s].hh.rh:=q{:914};flush_list(init_list){:904};10:end; {:896}{943:}{945:}function new_trie_op(d,n:small_number; v:quarterword):quarterword;label 10;var h:-trie_op_size..trie_op_size; u:quarterword;l:0..trie_op_size; begin h:=abs(n+313*d+361*v+1009*cur_lang)mod(trie_op_size+trie_op_size)- trie_op_size;while true do begin l:=trie_op_hash[h]; if l=0 then begin if trie_op_ptr=trie_op_size then overflow(975, trie_op_size);u:=trie_used[cur_lang]; if u=65535 then overflow(976,65535);trie_op_ptr:=trie_op_ptr+1;u:=u+1; trie_used[cur_lang]:=u;hyf_distance[trie_op_ptr]:=d; hyf_num[trie_op_ptr]:=n;hyf_next[trie_op_ptr]:=v; trie_op_lang[trie_op_ptr]:=cur_lang;trie_op_hash[h]:=trie_op_ptr; trie_op_val[trie_op_ptr]:=u;new_trie_op:=u;goto 10;end; if(hyf_distance[l]=d)and(hyf_num[l]=n)and(hyf_next[l]=v)and(trie_op_lang [l]=cur_lang)then begin new_trie_op:=trie_op_val[l];goto 10;end; if h>-trie_op_size then h:=h-1 else h:=trie_op_size;end;10:end; {:945}{949:}function trie_node(p:trie_pointer):trie_pointer;label 10; var h:trie_pointer;q:trie_pointer; begin h:=abs(trie_c[p]+1009*trie_o[p]+2718*trie_l[p]+3142*trie_r[p])mod trie_size;while true do begin q:=trie_hash[h]; if q=0 then begin trie_hash[h]:=p;trie_node:=p;goto 10;end; if(trie_c[q]=trie_c[p])and(trie_o[q]=trie_o[p])and(trie_l[q]=trie_l[p]) and(trie_r[q]=trie_r[p])then begin trie_node:=q;goto 10;end; if h>0 then h:=h-1 else h:=trie_size;end;10:end; {:949}{950:}function compress_trie(p:trie_pointer):trie_pointer; begin if p=0 then compress_trie:=0 else begin trie_l[p]:=compress_trie( trie_l[p]);trie_r[p]:=compress_trie(trie_r[p]); compress_trie:=trie_node(p);end;end; {:950}{954:}procedure first_fit(p:trie_pointer);label 45,40; var h:trie_pointer;z:trie_pointer;q:trie_pointer;c:ASCII_code; l,r:trie_pointer;ll:1..256;begin c:=trie_c[p];z:=trie_min[c]; while true do begin h:=z-c; {955:}if trie_max0 do begin if trie[h+trie_c[q]].rh=0 then goto 45;q:=trie_r[q]; end;goto 40{:956};45:z:=trie[z].rh;end;40:{957:}trie_taken[h]:=true; trie_hash[p]:=h;q:=p;repeat z:=h+trie_c[q];l:=trie[z].lh;r:=trie[z].rh; trie[r].lh:=l;trie[l].rh:=r;trie[z].rh:=0; if l<256 then begin if z<256 then ll:=z else ll:=256; repeat trie_min[l]:=r;l:=l+1;until l=ll;end;q:=trie_r[q]; until q=0{:957};end;{:954}{958:}procedure trie_pack(p:trie_pointer); var q:trie_pointer;begin repeat q:=trie_l[p]; if(q>0)and(trie_hash[q]=0)then begin first_fit(q);trie_pack(q);end; p:=trie_r[p];until p=0;end; {:958}{960:}procedure trie_fix(p:trie_pointer);var q:trie_pointer; c:ASCII_code;z:trie_pointer;begin z:=trie_hash[p];repeat q:=trie_l[p]; c:=trie_c[p];trie[z+c].rh:=trie_hash[q];trie[z+c].b1:=c+0; trie[z+c].b0:=trie_o[p];if q>0 then trie_fix(q);p:=trie_r[p];until p=0; end;{:960}{961:}procedure new_patterns;label 30,31;var k,l:0..64; digit_sensed:boolean;v:quarterword;p,q:trie_pointer;first_child:boolean; c:ASCII_code; begin if trie_not_ready then begin if eqtb[603218].int<=0 then cur_lang :=0 else if eqtb[603218].int>255 then cur_lang:=0 else cur_lang:=eqtb[ 603218].int;scan_left_brace;{962:}k:=0;hyf[0]:=0;digit_sensed:=false; while true do begin get_x_token; case cur_cmd of 11,12:{963:}if digit_sensed or(cur_chr<48)or(cur_chr>57) then begin if cur_chr=46 then cur_chr:=0 else begin cur_chr:=eqtb[ 602144+cur_chr].hh.rh; if cur_chr=0 then begin begin if interaction=3 then;print_nl(264); print(983);end;begin help_ptr:=1;help_line[0]:=982;end;error;end;end; if k<63 then begin k:=k+1;hc[k]:=cur_chr;hyf[k]:=0;digit_sensed:=false; end;end else if k<63 then begin hyf[k]:=cur_chr-48;digit_sensed:=true; end{:963}; 10,2:begin if k>0 then{964:}begin{966:}if hc[1]=0 then hyf[0]:=0; if hc[k]=0 then hyf[k]:=0;l:=k;v:=0; while true do begin if hyf[l]<>0 then v:=new_trie_op(k-l,hyf[l],v); if l>0 then l:=l-1 else goto 31;end;31:{:966};q:=0;hc[0]:=cur_lang; while l<=k do begin c:=hc[l];l:=l+1;p:=trie_l[q];first_child:=true; while(p>0)and(c>trie_c[p])do begin q:=p;p:=trie_r[q];first_child:=false; end;if(p=0)or(c0 then begin begin if interaction=3 then;print_nl(264); print(984);end;begin help_ptr:=1;help_line[0]:=982;end;error;end; trie_o[q]:=v;end{:964};if cur_cmd=2 then goto 30;k:=0;hyf[0]:=0; digit_sensed:=false;end;others:begin begin if interaction=3 then; print_nl(264);print(981);end;print_esc(979);begin help_ptr:=1; help_line[0]:=982;end;error;end end;end;30:{:962}; if eqtb[603231].int>0 then{1591:}begin c:=cur_lang;first_child:=false; p:=0;repeat q:=p;p:=trie_r[q];until(p=0)or(c<=trie_c[p]); if(p=0)or(c0)or((c=255)and first_child) then begin if p=0 then{965:}begin if trie_ptr=trie_size then overflow( 977,trie_size);trie_ptr:=trie_ptr+1;trie_r[trie_ptr]:=p;p:=trie_ptr; trie_l[p]:=0;if first_child then trie_l[q]:=p else trie_r[q]:=p; trie_c[p]:=c;trie_o[p]:=0;end{:965}else trie_c[p]:=c; trie_o[p]:=eqtb[602144+c].hh.rh+0;q:=p;p:=trie_r[q];first_child:=false; end;if first_child then trie_l[q]:=0 else trie_r[q]:=0{:1592}; end{:1591};end else begin begin if interaction=3 then;print_nl(264); print(978);end;print_esc(979);begin help_ptr:=1;help_line[0]:=980;end; error;mem[7999988].hh.rh:=scan_toks(false,false);flush_list(def_ref); end;end;{:961}{967:}procedure init_trie;var p:trie_pointer; j,k,t:integer;r,s:trie_pointer;h:two_halves; begin{953:}{946:}op_start[0]:=-0; for j:=1 to 255 do op_start[j]:=op_start[j-1]+trie_used[j-1]-0; for j:=1 to trie_op_ptr do trie_op_hash[j]:=op_start[trie_op_lang[j]]+ trie_op_val[j]; for j:=1 to trie_op_ptr do while trie_op_hash[j]>j do begin k:= trie_op_hash[j];t:=hyf_distance[k];hyf_distance[k]:=hyf_distance[j]; hyf_distance[j]:=t;t:=hyf_num[k];hyf_num[k]:=hyf_num[j];hyf_num[j]:=t; t:=hyf_next[k];hyf_next[k]:=hyf_next[j];hyf_next[j]:=t; trie_op_hash[j]:=trie_op_hash[k];trie_op_hash[k]:=k;end{:946}; for p:=0 to trie_size do trie_hash[p]:=0; trie_r[0]:=compress_trie(trie_r[0]);trie_l[0]:=compress_trie(trie_l[0]); for p:=0 to trie_ptr do trie_hash[p]:=0; for p:=0 to 255 do trie_min[p]:=p+1;trie[0].rh:=1;trie_max:=0{:953}; if trie_l[0]<>0 then begin first_fit(trie_l[0]);trie_pack(trie_l[0]); end; if trie_r[0]<>0 then{1593:}begin if trie_l[0]=0 then for p:=0 to 255 do trie_min[p]:=p+2;first_fit(trie_r[0]);trie_pack(trie_r[0]); hyph_start:=trie_hash[trie_r[0]];end{:1593};{959:}h.rh:=0;h.b0:=0; h.b1:=0;if trie_max=0 then begin for r:=0 to 256 do trie[r]:=h; trie_max:=256;end else begin if trie_r[0]>0 then trie_fix(trie_r[0]); if trie_l[0]>0 then trie_fix(trie_l[0]);r:=0;repeat s:=trie[r].rh; trie[r]:=h;r:=s;until r>trie_max;end;trie[0].b1:=63;{:959}; trie_not_ready:=false;end;{:967}{:943}procedure line_break(d:boolean); label 30,31,32,33,34,35,22;var{863:}auto_breaking:boolean; prev_p:halfword;q,r,s,prev_s:halfword;f:internal_font_number; {:863}{894:}j:small_number;c:0..255; {:894}begin pack_begin_line:=cur_list.ml_field; {817:}mem[7999997].hh.rh:=mem[cur_list.head_field].hh.rh; if(cur_list.tail_field>=hi_mem_min)then begin mem[cur_list.tail_field]. hh.rh:=new_penalty(10000); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh; end else if mem[cur_list.tail_field].hh.b0<>10 then begin mem[cur_list. tail_field].hh.rh:=new_penalty(10000); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh; end else begin mem[cur_list.tail_field].hh.b0:=12; delete_glue_ref(mem[cur_list.tail_field+1].hh.lh); flush_node_list(mem[cur_list.tail_field+1].hh.rh); mem[cur_list.tail_field+1].int:=10000;end; mem[cur_list.tail_field].hh.rh:=new_param_glue(14); last_line_fill:=mem[cur_list.tail_field].hh.rh; init_cur_lang:=cur_list.pg_field mod 65536; init_l_hyf:=cur_list.pg_field div 4194304; init_r_hyf:=(cur_list.pg_field div 65536)mod 64;pop_nest; {:817}{828:}no_shrink_error_yet:=true; if(mem[eqtb[600789].hh.rh].hh.b1<>0)and(mem[eqtb[600789].hh.rh+3].int<>0 )then begin eqtb[600789].hh.rh:=finite_shrink(eqtb[600789].hh.rh);end; if(mem[eqtb[600790].hh.rh].hh.b1<>0)and(mem[eqtb[600790].hh.rh+3].int<>0 )then begin eqtb[600790].hh.rh:=finite_shrink(eqtb[600790].hh.rh);end; q:=eqtb[600789].hh.rh;r:=eqtb[600790].hh.rh; background[1]:=mem[q+1].int+mem[r+1].int;background[2]:=0; background[3]:=0;background[4]:=0;background[5]:=0; background[2+mem[q].hh.b0]:=mem[q+2].int; background[2+mem[r].hh.b0]:=background[2+mem[r].hh.b0]+mem[r+2].int; background[6]:=mem[q+3].int+mem[r+3].int;{1579:}do_last_line_fit:=false; active_node_size:=3; if eqtb[603229].int>0 then begin q:=mem[last_line_fill+1].hh.lh; if(mem[q+2].int>0)and(mem[q].hh.b0>0)then if(background[3]=0)and( background[4]=0)and(background[5]=0)then begin do_last_line_fit:=true; active_node_size:=5;fill_width[0]:=0;fill_width[1]:=0;fill_width[2]:=0; fill_width[mem[q].hh.b0-1]:=mem[q+2].int;end;end{:1579}; {:828}{835:}minimum_demerits:=1073741823; minimal_demerits[3]:=1073741823;minimal_demerits[2]:=1073741823; minimal_demerits[1]:=1073741823;minimal_demerits[0]:=1073741823; {:835}{849:}if eqtb[601312].hh.rh=0 then if eqtb[603762].int=0 then begin last_special_line:=0;second_width:=eqtb[603748].int; second_indent:=0; end else{850:}begin last_special_line:=abs(eqtb[603209].int); if eqtb[603209].int<0 then begin first_width:=eqtb[603748].int-abs(eqtb[ 603762].int); if eqtb[603762].int>=0 then first_indent:=eqtb[603762].int else first_indent:=0;second_width:=eqtb[603748].int;second_indent:=0; end else begin first_width:=eqtb[603748].int;first_indent:=0; second_width:=eqtb[603748].int-abs(eqtb[603762].int); if eqtb[603762].int>=0 then second_indent:=eqtb[603762].int else second_indent:=0;end; end{:850}else begin last_special_line:=mem[eqtb[601312].hh.rh].hh.lh-1; second_width:=mem[eqtb[601312].hh.rh+2*(last_special_line+1)].int; second_indent:=mem[eqtb[601312].hh.rh+2*last_special_line+1].int;end; if eqtb[603187].int=0 then easy_line:=last_special_line else easy_line:= 536870911{:849};{864:}threshold:=eqtb[603168].int; if threshold>=0 then begin{if eqtb[603200].int>0 then begin begin_diagnostic;print_nl(959);end;}second_pass:=false; final_pass:=false;end else begin threshold:=eqtb[603169].int; second_pass:=true;final_pass:=(eqtb[603765].int<=0); {if eqtb[603200].int>0 then begin_diagnostic;}end; while true do begin if threshold>10000 then threshold:=10000; if second_pass then{892:}begin if trie_not_ready then init_trie; cur_lang:=init_cur_lang;l_hyf:=init_l_hyf;r_hyf:=init_r_hyf; if trie[hyph_start+cur_lang].b1<>cur_lang+0 then hyph_index:=0 else hyph_index:=trie[hyph_start+cur_lang].rh;end{:892}; {865:}q:=get_node(active_node_size);mem[q].hh.b0:=0;mem[q].hh.b1:=2; mem[q].hh.rh:=7999993;mem[q+1].hh.rh:=0; mem[q+1].hh.lh:=cur_list.pg_field+1;mem[q+2].int:=0; mem[7999993].hh.rh:=q; if do_last_line_fit then{1581:}begin mem[q+3].int:=0;mem[q+4].int:=0; end{:1581};active_width[1]:=background[1]; active_width[2]:=background[2];active_width[3]:=background[3]; active_width[4]:=background[4];active_width[5]:=background[5]; active_width[6]:=background[6];passive:=0;printed_node:=7999997; pass_number:=0;font_in_short_display:=0{:865};cur_p:=mem[7999997].hh.rh; auto_breaking:=true;prev_p:=cur_p; while(cur_p<>0)and(mem[7999993].hh.rh<>7999993)do{867:}begin if(cur_p>= hi_mem_min)then{868:}begin prev_p:=cur_p;repeat f:=mem[cur_p].hh.b0; active_width[1]:=active_width[1]+font_info[width_base[f]+font_info[ char_base[f]+mem[cur_p].hh.b1].qqqq.b0].int;cur_p:=mem[cur_p].hh.rh; until not(cur_p>=hi_mem_min);end{:868}; case mem[cur_p].hh.b0 of 0,1,2:active_width[1]:=active_width[1]+mem[ cur_p+1].int; 8:{1363:}if mem[cur_p].hh.b1=4 then begin cur_lang:=mem[cur_p+1].hh.rh; l_hyf:=mem[cur_p+1].hh.b0;r_hyf:=mem[cur_p+1].hh.b1; if trie[hyph_start+cur_lang].b1<>cur_lang+0 then hyph_index:=0 else hyph_index:=trie[hyph_start+cur_lang].rh;end{:1363}; 10:begin{869:}if auto_breaking then begin if(prev_p>=hi_mem_min)then try_break(0,0)else if(mem[prev_p].hh.b0<9)then try_break(0,0)else if(mem [prev_p].hh.b0=11)and(mem[prev_p].hh.b1<>1)then try_break(0,0);end; if(mem[mem[cur_p+1].hh.lh].hh.b1<>0)and(mem[mem[cur_p+1].hh.lh+3].int<>0 )then begin mem[cur_p+1].hh.lh:=finite_shrink(mem[cur_p+1].hh.lh);end; q:=mem[cur_p+1].hh.lh;active_width[1]:=active_width[1]+mem[q+1].int; active_width[2+mem[q].hh.b0]:=active_width[2+mem[q].hh.b0]+mem[q+2].int; active_width[6]:=active_width[6]+mem[q+3].int{:869}; if second_pass and auto_breaking then{895:}begin prev_s:=cur_p; s:=mem[prev_s].hh.rh; if s<>0 then begin{897:}while true do begin if(s>=hi_mem_min)then begin c:=mem[s].hh.b1-0;hf:=mem[s].hh.b0; end else if mem[s].hh.b0=6 then if mem[s+1].hh.rh=0 then goto 22 else begin q:=mem[s+1].hh.rh;c:=mem[q].hh.b1-0;hf:=mem[q].hh.b0; end else if(mem[s].hh.b0=11)and(mem[s].hh.b1=0)then goto 22 else if(mem[ s].hh.b0=9)and(mem[s].hh.b1>=4)then goto 22 else if mem[s].hh.b0=8 then begin{1364:}if mem[s].hh.b1=4 then begin cur_lang:=mem[s+1].hh.rh; l_hyf:=mem[s+1].hh.b0;r_hyf:=mem[s+1].hh.b1; if trie[hyph_start+cur_lang].b1<>cur_lang+0 then hyph_index:=0 else hyph_index:=trie[hyph_start+cur_lang].rh;end{:1364};goto 22; end else goto 31; if hyph_index=0 then hc[0]:=eqtb[602144+c].hh.rh else if trie[hyph_index +c].b1<>c+0 then hc[0]:=0 else hc[0]:=trie[hyph_index+c].b0-0; if hc[0]<>0 then if(hc[0]=c)or(eqtb[603206].int>0)then goto 32 else goto 31;22:prev_s:=s;s:=mem[prev_s].hh.rh;end;32:hyf_char:=hyphen_char[hf]; if hyf_char<0 then goto 31;if hyf_char>255 then goto 31; ha:=prev_s{:897};if l_hyf+r_hyf>63 then goto 31;{898:}hn:=0; while true do begin if(s>=hi_mem_min)then begin if mem[s].hh.b0<>hf then goto 33;hyf_bchar:=mem[s].hh.b1;c:=hyf_bchar-0; if hyph_index=0 then hc[0]:=eqtb[602144+c].hh.rh else if trie[hyph_index +c].b1<>c+0 then hc[0]:=0 else hc[0]:=trie[hyph_index+c].b0-0; if hc[0]=0 then goto 33;if hn=63 then goto 33;hb:=s;hn:=hn+1;hu[hn]:=c; hc[hn]:=hc[0];hyf_bchar:=256; end else if mem[s].hh.b0=6 then{899:}begin if mem[s+1].hh.b0<>hf then goto 33;j:=hn;q:=mem[s+1].hh.rh;if q>0 then hyf_bchar:=mem[q].hh.b1; while q>0 do begin c:=mem[q].hh.b1-0; if hyph_index=0 then hc[0]:=eqtb[602144+c].hh.rh else if trie[hyph_index +c].b1<>c+0 then hc[0]:=0 else hc[0]:=trie[hyph_index+c].b0-0; if hc[0]=0 then goto 33;if j=63 then goto 33;j:=j+1;hu[j]:=c; hc[j]:=hc[0];q:=mem[q].hh.rh;end;hb:=s;hn:=j; if odd(mem[s].hh.b1)then hyf_bchar:=font_bchar[hf]else hyf_bchar:=256; end{:899}else if(mem[s].hh.b0=11)and(mem[s].hh.b1=0)then begin hb:=s; hyf_bchar:=font_bchar[hf];end else goto 33;s:=mem[s].hh.rh;end; 33:{:898};{900:}if hn=hi_mem_min))then case mem[s].hh.b0 of 6:; 11:if mem[s].hh.b1<>0 then goto 34;8,10,12,3,5,4:goto 34; 9:if mem[s].hh.b1>=4 then goto 34 else goto 31;others:goto 31 end; s:=mem[s].hh.rh;end;34:{:900};hyphenate;end;31:end{:895};end; 11:if mem[cur_p].hh.b1=1 then begin if not(mem[cur_p].hh.rh>=hi_mem_min) and auto_breaking then if mem[mem[cur_p].hh.rh].hh.b0=10 then try_break( 0,0);active_width[1]:=active_width[1]+mem[cur_p+1].int; end else active_width[1]:=active_width[1]+mem[cur_p+1].int; 6:begin f:=mem[cur_p+1].hh.b0; active_width[1]:=active_width[1]+font_info[width_base[f]+font_info[ char_base[f]+mem[cur_p+1].hh.b1].qqqq.b0].int;end; 7:{870:}begin s:=mem[cur_p+1].hh.lh;disc_width:=0; if s=0 then try_break(eqtb[603172].int,1)else begin repeat{871:}if(s>= hi_mem_min)then begin f:=mem[s].hh.b0; disc_width:=disc_width+font_info[width_base[f]+font_info[char_base[f]+ mem[s].hh.b1].qqqq.b0].int; end else case mem[s].hh.b0 of 6:begin f:=mem[s+1].hh.b0; disc_width:=disc_width+font_info[width_base[f]+font_info[char_base[f]+ mem[s+1].hh.b1].qqqq.b0].int;end; 0,1,2,11:disc_width:=disc_width+mem[s+1].int; others:confusion(963)end{:871};s:=mem[s].hh.rh;until s=0; active_width[1]:=active_width[1]+disc_width; try_break(eqtb[603171].int,1); active_width[1]:=active_width[1]-disc_width;end;r:=mem[cur_p].hh.b1; s:=mem[cur_p].hh.rh; while r>0 do begin{872:}if(s>=hi_mem_min)then begin f:=mem[s].hh.b0; active_width[1]:=active_width[1]+font_info[width_base[f]+font_info[ char_base[f]+mem[s].hh.b1].qqqq.b0].int; end else case mem[s].hh.b0 of 6:begin f:=mem[s+1].hh.b0; active_width[1]:=active_width[1]+font_info[width_base[f]+font_info[ char_base[f]+mem[s+1].hh.b1].qqqq.b0].int;end; 0,1,2,11:active_width[1]:=active_width[1]+mem[s+1].int; others:confusion(964)end{:872};r:=r-1;s:=mem[s].hh.rh;end;prev_p:=cur_p; cur_p:=s;goto 35;end{:870}; 9:begin if mem[cur_p].hh.b1<4 then auto_breaking:=odd(mem[cur_p].hh.b1); begin if not(mem[cur_p].hh.rh>=hi_mem_min)and auto_breaking then if mem[ mem[cur_p].hh.rh].hh.b0=10 then try_break(0,0); active_width[1]:=active_width[1]+mem[cur_p+1].int;end;end; 12:try_break(mem[cur_p+1].int,0);4,3,5:;others:confusion(962)end; prev_p:=cur_p;cur_p:=mem[cur_p].hh.rh;35:end{:867}; if cur_p=0 then{874:}begin try_break(-10000,1); if mem[7999993].hh.rh<>7999993 then begin{875:}r:=mem[7999993].hh.rh; fewest_demerits:=1073741823; repeat if mem[r].hh.b0<>2 then if mem[r+2].int2 then begin line_diff:=mem[r+1].hh.lh-best_line ;if((line_diffactual_looseness)and(eqtb[603187].int>=line_diff))then begin best_bet:=r;actual_looseness:=line_diff;fewest_demerits:=mem[r+2].int; end else if(line_diff=actual_looseness)and(mem[r+2].int7999993 do begin cur_p:=mem[q].hh.rh; if mem[q].hh.b0=2 then free_node(q,7)else free_node(q,active_node_size); q:=cur_p;end;q:=passive;while q<>0 do begin cur_p:=mem[q].hh.rh; free_node(q,2);q:=cur_p;end{:866}; if not second_pass then begin{if eqtb[603200].int>0 then print_nl(960);} threshold:=eqtb[603169].int;second_pass:=true; final_pass:=(eqtb[603765].int<=0); end else begin{if eqtb[603200].int>0 then print_nl(961);} background[2]:=background[2]+eqtb[603765].int;final_pass:=true;end;end; 30:{if eqtb[603200].int>0 then begin end_diagnostic(true); normalize_selector;end;} if do_last_line_fit then{1589:}if mem[best_bet+3].int=0 then do_last_line_fit:=false else begin q:=new_spec(mem[last_line_fill+1].hh. lh);delete_glue_ref(mem[last_line_fill+1].hh.lh); mem[q+1].int:=mem[q+1].int+mem[best_bet+3].int-mem[best_bet+4].int; mem[q+2].int:=0;mem[last_line_fill+1].hh.lh:=q;end{:1589};{:864}; {877:}post_line_break(d){:877};{866:}q:=mem[7999993].hh.rh; while q<>7999993 do begin cur_p:=mem[q].hh.rh; if mem[q].hh.b0=2 then free_node(q,7)else free_node(q,active_node_size); q:=cur_p;end;q:=passive;while q<>0 do begin cur_p:=mem[q].hh.rh; free_node(q,2);q:=cur_p;end{:866};pack_begin_line:=0;end; {1388:}function eTeX_enabled(b:boolean;j:quarterword; k:halfword):boolean; begin if not b then begin begin if interaction=3 then;print_nl(264); print(690);end;print_cmd_chr(j,k);begin help_ptr:=1;help_line[0]:=1332; end;error;end;eTeX_enabled:=b;end; {:1388}{1411:}procedure show_save_groups;label 41,42,40,30; var p:0..nest_size;m:-203..203;v:save_pointer;l:quarterword; c:group_code;a:-1..1;i:integer;j:quarterword;s:str_number; begin p:=nest_ptr;nest[p]:=cur_list;v:=save_ptr;l:=cur_level; c:=cur_group;save_ptr:=cur_boundary;cur_level:=cur_level-1;a:=1; print_nl(340);print_ln;while true do begin print_nl(367); print_group(true);if cur_group=0 then goto 30; repeat m:=nest[p].mode_field;if p>0 then p:=p-1 else m:=1;until m<>102; print(288);case cur_group of 1:begin p:=p+1;goto 42;end;2,3:s:=1086; 4:s:=993;5:s:=1085;6:if a=0 then begin if m=-1 then s:=524 else s:=543; a:=1;goto 41;end else begin if a=1 then print(1369)else print_esc(925); if p>=a then p:=p-a;a:=0;goto 40;end;7:begin p:=p+1;a:=-1; print_esc(531);goto 42;end;8:begin print_esc(402);goto 40;end;9:goto 42; 10,13:begin if cur_group=10 then print_esc(353)else print_esc(529); for i:=1 to 3 do if i<=save_stack[save_ptr-2].int then print(885); goto 42;end; 11:begin if save_stack[save_ptr-2].int=255 then print_esc(356)else begin print_esc(332);print_int(save_stack[save_ptr-2].int);end;goto 42;end; 12:begin s:=544;goto 41;end;14:begin p:=p+1;print_esc(516);goto 40;end; 15:begin if m=203 then print_char(36)else if nest[p].mode_field=203 then begin print_cmd_chr(48,save_stack[save_ptr-2].int);goto 40;end; print_char(36);goto 40;end; 16:begin if mem[nest[p+1].eTeX_aux_field].hh.b0=30 then print_esc(901) else print_esc(903);goto 40;end;end; {1413:}i:=save_stack[save_ptr-4].int; if i<>0 then if i<1073741824 then begin if abs(nest[p].mode_field)=1 then j:=21 else j:=22; if i>0 then print_cmd_chr(j,0)else print_cmd_chr(j,1); print_scaled(abs(i));print(401); end else if i<1073807360 then begin if i>=1073774592 then begin print_esc(1200);i:=i-(32768);end;print_esc(541);print_int(i-1073741824); print_char(61);end else print_cmd_chr(31,i-(1073807261)){:1413}; 41:print_esc(s); {1412:}if save_stack[save_ptr-2].int<>0 then begin print_char(32); if save_stack[save_ptr-3].int=0 then print(867)else print(868); print_scaled(save_stack[save_ptr-2].int);print(401);end{:1412}; 42:print_char(123);40:print_char(41);cur_level:=cur_level-1; cur_group:=save_stack[save_ptr].hh.b1; save_ptr:=save_stack[save_ptr].hh.rh end;30:save_ptr:=v;cur_level:=l; cur_group:=c;end;{:1411}{1427:}procedure new_interaction;forward; {:1427}{1604:}procedure do_filesize;var s:str_number; save_cur_cs:halfword;begin begin if scan_toks(false,true)<>0 then end; s:=tokens_to_string(def_ref);delete_token_ref(def_ref); pack_file_name(s,340,340);cur_val:=getfilesize(name_of_file); flush_str(s);cur_val_level:=0;end; {:1604}{1606:}procedure compare_strings;label 30;var s1,s2:str_number; i1,i2,j1,j2:pool_pointer;save_cur_cs:halfword;begin save_cur_cs:=cur_cs; begin if scan_toks(false,true)<>0 then end; s1:=tokens_to_string(def_ref);delete_token_ref(def_ref); cur_cs:=save_cur_cs;begin if scan_toks(false,true)<>0 then end; s2:=tokens_to_string(def_ref);delete_token_ref(def_ref); i1:=str_start[s1];j1:=str_start[s1+1];i2:=str_start[s2]; j2:=str_start[s2+1]; while(i1str_pool[i2]then begin cur_val:=1;goto 30;end;i1:=i1+1; i2:=i2+1;end; if(i1=j1)and(i2=j2)then cur_val:=0 else if i10 then end; t:=tokens_to_string(def_ref);delete_token_ref(def_ref); evaljs(t,str_pool,str_start,pool_ptr,pool_size,max_strings,eqtb,1,604021 ,603233);s:=make_string;{1490:}str_pool[pool_ptr]:=32;l:=str_start[s]; nl:=eqtb[603217].int;p:=get_avail;q:=p;while lnl)do l:=l+1;sz:=(l-m+7)div 4; if sz=1 then sz:=2;r:=get_node(sz);mem[q].hh.rh:=r;q:=r; mem[q].hh.lh:=sz+0;while sz>2 do begin sz:=sz-1;r:=r+1; w.b0:=str_pool[m]+0;w.b1:=str_pool[m+1]+0;w.b2:=str_pool[m+2]+0; w.b3:=str_pool[m+3]+0;mem[r].qqqq:=w;m:=m+4;end;w.b0:=32;w.b1:=32; w.b2:=32;w.b3:=32;if l>m then begin w.b0:=str_pool[m]+0; if l>m+1 then begin w.b1:=str_pool[m+1]+0; if l>m+2 then begin w.b2:=str_pool[m+2]+0; if l>m+3 then w.b3:=str_pool[m+3]+0;end;end;end;mem[r+1].qqqq:=w; if str_pool[l]=nl then l:=l+1;end;mem[p].hh.lh:=mem[p].hh.rh; mem[p].hh.rh:=pseudo_files;pseudo_files:=p{:1490};flush_str(s); flush_str(t);{1491:}begin_file_reading;line:=0; cur_input.limit_field:=cur_input.start_field; cur_input.loc_field:=cur_input.limit_field+1; if eqtb[603226].int>0 then begin if term_offset>max_print_line-3 then print_ln else if(term_offset>0)or(file_offset>0)then print_char(32); cur_input.name_field:=19;print(1396);open_parens:=open_parens+1; break(term_out);end else cur_input.name_field:=18{:1491};end; {:1609}{1613:}procedure scan_pdf_ext_toks; begin begin if scan_toks(false,true)<>0 then end;end; {:1613}{:816}{935:}procedure new_hyph_exceptions;label 21,10,40,45,46; var n:0..64;j:0..64;h:hyph_pointer;k:str_number;p:halfword;q:halfword; s,t:str_number;u,v:pool_pointer;begin scan_left_brace; if eqtb[603218].int<=0 then cur_lang:=0 else if eqtb[603218].int>255 then cur_lang:=0 else cur_lang:=eqtb[603218].int; if trie_not_ready then begin hyph_index:=0;goto 46;end; if trie[hyph_start+cur_lang].b1<>cur_lang+0 then hyph_index:=0 else hyph_index:=trie[hyph_start+cur_lang].rh;46:{936:}n:=0;p:=0; while true do begin get_x_token; 21:case cur_cmd of 11,12,68:{938:}if cur_chr=45 then{939:}begin if n<63 then begin q:=get_avail;mem[q].hh.rh:=p;mem[q].hh.lh:=n;p:=q;end; end{:939}else begin if hyph_index=0 then hc[0]:=eqtb[602144+cur_chr].hh. rh else if trie[hyph_index+cur_chr].b1<>cur_chr+0 then hc[0]:=0 else hc[ 0]:=trie[hyph_index+cur_chr].b0-0; if hc[0]=0 then begin begin if interaction=3 then;print_nl(264); print(971);end;begin help_ptr:=2;help_line[1]:=972;help_line[0]:=973; end;error;end else if n<63 then begin n:=n+1;hc[n]:=hc[0];end;end{:938}; 16:begin scan_char_num;cur_chr:=cur_val;cur_cmd:=68;goto 21;end; 10,2:begin if n>1 then{940:}begin n:=n+1;hc[n]:=cur_lang; begin if pool_ptr+n>pool_size then overflow(259,pool_size-init_pool_ptr) ;end;h:=0;for j:=1 to n do begin h:=(h+h+hc[j])mod 8191; begin str_pool[pool_ptr]:=hc[j];pool_ptr:=pool_ptr+1;end;end; s:=make_string;{941:}if hyph_count=8191 then overflow(974,8191); hyph_count:=hyph_count+1; while hyph_word[h]<>0 do begin{942:}k:=hyph_word[h]; if(str_start[k+1]-str_start[k])<(str_start[s+1]-str_start[s])then goto 40; if(str_start[k+1]-str_start[k])>(str_start[s+1]-str_start[s])then goto 45;u:=str_start[k];v:=str_start[s]; repeat if str_pool[u]str_pool[v]then goto 45;u:=u+1;v:=v+1; until u=str_start[k+1];40:q:=hyph_list[h];hyph_list[h]:=p;p:=q; t:=hyph_word[h];hyph_word[h]:=s;s:=t;45:{:942}; if h>0 then h:=h-1 else h:=8191;end;hyph_word[h]:=s; hyph_list[h]:=p{:941};end{:940};if cur_cmd=2 then goto 10;n:=0;p:=0;end; others:{937:}begin begin if interaction=3 then;print_nl(264);print(690); end;print_esc(967);print(968);begin help_ptr:=2;help_line[1]:=969; help_line[0]:=970;end;error;end{:937}end;end{:936};10:end; {:935}{969:}function prune_page_top(p:halfword;s:boolean):halfword; var prev_p:halfword;q,r:halfword;begin prev_p:=7999997; mem[7999997].hh.rh:=p; while p<>0 do case mem[p].hh.b0 of 0,1,2:{970:}begin q:=new_skip_param( 10);mem[prev_p].hh.rh:=q;mem[q].hh.rh:=p; if mem[temp_ptr+1].int>mem[p+3].int then mem[temp_ptr+1].int:=mem[ temp_ptr+1].int-mem[p+3].int else mem[temp_ptr+1].int:=0;p:=0;end{:970}; 8,4,3:begin prev_p:=p;p:=mem[prev_p].hh.rh;end;10,11,12:begin q:=p; p:=mem[q].hh.rh;mem[q].hh.rh:=0;mem[prev_p].hh.rh:=p; if s then begin if disc_ptr[3]=0 then disc_ptr[3]:=q else mem[r].hh.rh:= q;r:=q;end else flush_node_list(q);end;others:confusion(985)end; prune_page_top:=mem[7999997].hh.rh;end; {:969}{971:}function vert_break(p:halfword;h,d:scaled):halfword; label 30,45,90;var prev_p:halfword;q,r:halfword;pi:integer;b:integer; least_cost:integer;best_place:halfword;prev_dp:scaled;t:small_number; begin prev_p:=p;least_cost:=1073741823;active_width[1]:=0; active_width[2]:=0;active_width[3]:=0;active_width[4]:=0; active_width[5]:=0;active_width[6]:=0;prev_dp:=0; while true do begin{973:}if p=0 then pi:=-10000 else{974:}case mem[p].hh .b0 of 0,1,2:begin active_width[1]:=active_width[1]+prev_dp+mem[p+3].int ;prev_dp:=mem[p+2].int;goto 45;end;8:{1366:}goto 45{:1366}; 10:if(mem[prev_p].hh.b0<9)then pi:=0 else goto 90; 11:begin if mem[p].hh.rh=0 then t:=12 else t:=mem[mem[p].hh.rh].hh.b0; if t=10 then pi:=0 else goto 90;end;12:pi:=mem[p+1].int;4,3:goto 45; others:confusion(986)end{:974}; {975:}if pi<10000 then begin{976:}if active_width[1]0)or(active_width[4]<>0)or(active_width[5]<>0)then b:=0 else b:=badness(h-active_width[1],active_width[2])else if active_width[1 ]-h>active_width[6]then b:=1073741823 else b:=badness(active_width[1]-h, active_width[6]){:976}; if b<1073741823 then if pi<=-10000 then b:=pi else if b<10000 then b:=b+ pi else b:=100000;if b<=least_cost then begin best_place:=p; least_cost:=b;best_height_plus_depth:=active_width[1]+prev_dp;end; if(b=1073741823)or(pi<=-10000)then goto 30;end{:975}; if(mem[p].hh.b0<10)or(mem[p].hh.b0>11)then goto 45; 90:{977:}if mem[p].hh.b0=11 then q:=p else begin q:=mem[p+1].hh.lh; active_width[2+mem[q].hh.b0]:=active_width[2+mem[q].hh.b0]+mem[q+2].int; active_width[6]:=active_width[6]+mem[q+3].int; if(mem[q].hh.b1<>0)and(mem[q+3].int<>0)then begin begin if interaction=3 then;print_nl(264);print(987);end;begin help_ptr:=4;help_line[3]:=988; help_line[2]:=989;help_line[1]:=990;help_line[0]:=948;end;error; r:=new_spec(q);mem[r].hh.b1:=0;delete_glue_ref(q);mem[p+1].hh.lh:=r; q:=r;end;end;active_width[1]:=active_width[1]+prev_dp+mem[q+1].int; prev_dp:=0{:977}; 45:if prev_dp>d then begin active_width[1]:=active_width[1]+prev_dp-d; prev_dp:=d;end;{:973};prev_p:=p;p:=mem[prev_p].hh.rh;end; 30:vert_break:=best_place;end; {:971}{978:}{1561:}function do_marks(a,l:small_number; q:halfword):boolean;var i:small_number; begin if l<4 then begin for i:=0 to 15 do begin if odd(i)then cur_ptr:= mem[q+(i div 2)+1].hh.rh else cur_ptr:=mem[q+(i div 2)+1].hh.lh; if cur_ptr<>0 then if do_marks(a,l+1,cur_ptr)then begin if odd(i)then mem[q+(i div 2)+1].hh.rh:=0 else mem[q+(i div 2)+1].hh.lh:=0; mem[q].hh.b1:=mem[q].hh.b1-1;end;end; if mem[q].hh.b1=0 then begin free_node(q,9);q:=0;end; end else begin case a of{1562:}0:if mem[q+2].hh.rh<>0 then begin delete_token_ref(mem[q+2].hh.rh);mem[q+2].hh.rh:=0; delete_token_ref(mem[q+3].hh.lh);mem[q+3].hh.lh:=0;end; {:1562}{1564:}1:if mem[q+2].hh.lh<>0 then begin if mem[q+1].hh.lh<>0 then delete_token_ref(mem[q+1].hh.lh);delete_token_ref(mem[q+1].hh.rh); mem[q+1].hh.rh:=0; if mem[mem[q+2].hh.lh].hh.rh=0 then begin delete_token_ref(mem[q+2].hh. lh);mem[q+2].hh.lh:=0; end else mem[mem[q+2].hh.lh].hh.lh:=mem[mem[q+2].hh.lh].hh.lh+1; mem[q+1].hh.lh:=mem[q+2].hh.lh;end; {:1564}{1565:}2:if(mem[q+1].hh.lh<>0)and(mem[q+1].hh.rh=0)then begin mem [q+1].hh.rh:=mem[q+1].hh.lh; mem[mem[q+1].hh.lh].hh.lh:=mem[mem[q+1].hh.lh].hh.lh+1;end; {:1565}{1567:}3:for i:=0 to 4 do begin if odd(i)then cur_ptr:=mem[q+(i div 2)+1].hh.rh else cur_ptr:=mem[q+(i div 2)+1].hh.lh; if cur_ptr<>0 then begin delete_token_ref(cur_ptr); if odd(i)then mem[q+(i div 2)+1].hh.rh:=0 else mem[q+(i div 2)+1].hh.lh :=0;end;end;{:1567}end; if mem[q+2].hh.lh=0 then if mem[q+3].hh.lh=0 then begin free_node(q,4); q:=0;end;end;do_marks:=(q=0);end;{:1561}function vsplit(n:halfword; h:scaled):halfword;label 10,30;var v:halfword;p:halfword;q:halfword; begin cur_val:=n; if cur_val<256 then v:=eqtb[601583+cur_val].hh.rh else begin find_sa_element(4,cur_val,false); if cur_ptr=0 then v:=0 else v:=mem[cur_ptr+1].hh.rh;end; flush_node_list(disc_ptr[3]);disc_ptr[3]:=0; if sa_root[6]<>0 then if do_marks(0,0,sa_root[6])then sa_root[6]:=0; if cur_mark[3]<>0 then begin delete_token_ref(cur_mark[3]); cur_mark[3]:=0;delete_token_ref(cur_mark[4]);cur_mark[4]:=0;end; {979:}if v=0 then begin vsplit:=0;goto 10;end; if mem[v].hh.b0<>1 then begin begin if interaction=3 then;print_nl(264); print(340);end;print_esc(991);print(992);print_esc(993); begin help_ptr:=2;help_line[1]:=994;help_line[0]:=995;end;error; vsplit:=0;goto 10;end{:979}; q:=vert_break(mem[v+5].hh.rh,h,eqtb[603751].int); {980:}p:=mem[v+5].hh.rh; if p=q then mem[v+5].hh.rh:=0 else while true do begin if mem[p].hh.b0=4 then if mem[p+1].hh.lh<>0 then{1563:}begin find_sa_element(6,mem[p+1].hh .lh,true); if mem[cur_ptr+2].hh.rh=0 then begin mem[cur_ptr+2].hh.rh:=mem[p+1].hh. rh;mem[mem[p+1].hh.rh].hh.lh:=mem[mem[p+1].hh.rh].hh.lh+1; end else delete_token_ref(mem[cur_ptr+3].hh.lh); mem[cur_ptr+3].hh.lh:=mem[p+1].hh.rh; mem[mem[p+1].hh.rh].hh.lh:=mem[mem[p+1].hh.rh].hh.lh+1; end{:1563}else if cur_mark[3]=0 then begin cur_mark[3]:=mem[p+1].hh.rh; cur_mark[4]:=cur_mark[3]; mem[cur_mark[3]].hh.lh:=mem[cur_mark[3]].hh.lh+2; end else begin delete_token_ref(cur_mark[4]); cur_mark[4]:=mem[p+1].hh.rh; mem[cur_mark[4]].hh.lh:=mem[cur_mark[4]].hh.lh+1;end; if mem[p].hh.rh=q then begin mem[p].hh.rh:=0;goto 30;end; p:=mem[p].hh.rh;end;30:{:980};q:=prune_page_top(q,eqtb[603230].int>0); p:=mem[v+5].hh.rh;free_node(v,7); if q<>0 then q:=vpackage(q,0,1,1073741823); if cur_val<256 then eqtb[601583+cur_val].hh.rh:=q else begin find_sa_element(4,cur_val,false); if cur_ptr<>0 then begin mem[cur_ptr+1].hh.rh:=q; mem[cur_ptr+1].hh.lh:=mem[cur_ptr+1].hh.lh+1;delete_sa_ref(cur_ptr);end; end;vsplit:=vpackage(p,h,0,eqtb[603751].int);10:end; {:978}{986:}procedure print_totals;begin print_scaled(page_so_far[1]); if page_so_far[2]<>0 then begin print(314);print_scaled(page_so_far[2]); print(340);end;if page_so_far[3]<>0 then begin print(314); print_scaled(page_so_far[3]);print(313);end; if page_so_far[4]<>0 then begin print(314);print_scaled(page_so_far[4]); print(1004);end;if page_so_far[5]<>0 then begin print(314); print_scaled(page_so_far[5]);print(1005);end; if page_so_far[6]<>0 then begin print(315);print_scaled(page_so_far[6]); end;end;{:986}{988:}procedure freeze_page_specs(s:small_number); begin page_contents:=s;page_so_far[0]:=eqtb[603749].int; page_max_depth:=eqtb[603750].int;page_so_far[7]:=0;page_so_far[1]:=0; page_so_far[2]:=0;page_so_far[3]:=0;page_so_far[4]:=0;page_so_far[5]:=0; page_so_far[6]:=0;least_page_cost:=1073741823; {if eqtb[603201].int>0 then begin begin_diagnostic;print_nl(1013); print_scaled(page_so_far[0]);print(1014);print_scaled(page_max_depth); end_diagnostic(false);end;}end; {:988}{993:}procedure box_error(n:eight_bits);begin error; begin_diagnostic;print_nl(861);show_box(eqtb[601583+n].hh.rh); end_diagnostic(true);flush_node_list(eqtb[601583+n].hh.rh); eqtb[601583+n].hh.rh:=0;end; {:993}{994:}procedure ensure_vbox(n:eight_bits);var p:halfword; begin p:=eqtb[601583+n].hh.rh; if p<>0 then if mem[p].hh.b0=0 then begin begin if interaction=3 then; print_nl(264);print(1015);end;begin help_ptr:=3;help_line[2]:=1016; help_line[1]:=1017;help_line[0]:=1018;end;box_error(n);end;end; {:994}{995:}{1013:}procedure fire_up(c:halfword);label 10; var p,q,r,s:halfword;prev_p:halfword;n:0..255;wait:boolean; save_vbadness:integer;save_vfuzz:scaled;save_split_top_skip:halfword; begin{1014:}if mem[best_page_break].hh.b0=12 then begin geq_word_define( 603207,mem[best_page_break+1].int);mem[best_page_break+1].int:=10000; end else geq_word_define(603207,10000){:1014}; if sa_root[6]<>0 then if do_marks(1,0,sa_root[6])then sa_root[6]:=0; if cur_mark[2]<>0 then begin if cur_mark[0]<>0 then delete_token_ref( cur_mark[0]);cur_mark[0]:=cur_mark[2]; mem[cur_mark[0]].hh.lh:=mem[cur_mark[0]].hh.lh+1; delete_token_ref(cur_mark[1]);cur_mark[1]:=0;end; {1015:}if c=best_page_break then best_page_break:=0; {1016:}if eqtb[601838].hh.rh<>0 then begin begin if interaction=3 then; print_nl(264);print(340);end;print_esc(413);print(1029); begin help_ptr:=2;help_line[1]:=1030;help_line[0]:=1018;end; box_error(255);end{:1016};insert_penalties:=0; save_split_top_skip:=eqtb[600792].hh.rh; if eqtb[603221].int<=0 then{1019:}begin r:=mem[8000000].hh.rh; while r<>8000000 do begin if mem[r+2].hh.lh<>0 then begin n:=mem[r].hh. b1-0;ensure_vbox(n); if eqtb[601583+n].hh.rh=0 then eqtb[601583+n].hh.rh:=new_null_box; p:=eqtb[601583+n].hh.rh+5;while mem[p].hh.rh<>0 do p:=mem[p].hh.rh; mem[r+2].hh.rh:=p;end;r:=mem[r].hh.rh;end;end{:1019};q:=7999996; mem[q].hh.rh:=0;prev_p:=7999998;p:=mem[prev_p].hh.rh; while p<>best_page_break do begin if mem[p].hh.b0=3 then begin if eqtb[ 603221].int<=0 then{1021:}begin r:=mem[8000000].hh.rh; while mem[r].hh.b1<>mem[p].hh.b1 do r:=mem[r].hh.rh; if mem[r+2].hh.lh=0 then wait:=true else begin wait:=false; s:=mem[r+2].hh.rh;mem[s].hh.rh:=mem[p+4].hh.lh; if mem[r+2].hh.lh=p then{1022:}begin if mem[r].hh.b0=1 then if(mem[r+1]. hh.lh=p)and(mem[r+1].hh.rh<>0)then begin while mem[s].hh.rh<>mem[r+1].hh .rh do s:=mem[s].hh.rh;mem[s].hh.rh:=0; eqtb[600792].hh.rh:=mem[p+4].hh.rh; mem[p+4].hh.lh:=prune_page_top(mem[r+1].hh.rh,false); if mem[p+4].hh.lh<>0 then begin temp_ptr:=vpackage(mem[p+4].hh.lh,0,1, 1073741823);mem[p+3].int:=mem[temp_ptr+3].int+mem[temp_ptr+2].int; free_node(temp_ptr,7);wait:=true;end;end;mem[r+2].hh.lh:=0; n:=mem[r].hh.b1-0;temp_ptr:=mem[eqtb[601583+n].hh.rh+5].hh.rh; free_node(eqtb[601583+n].hh.rh,7); eqtb[601583+n].hh.rh:=vpackage(temp_ptr,0,1,1073741823); end{:1022}else begin while mem[s].hh.rh<>0 do s:=mem[s].hh.rh; mem[r+2].hh.rh:=s;end;end;{1023:}mem[prev_p].hh.rh:=mem[p].hh.rh; mem[p].hh.rh:=0;if wait then begin mem[q].hh.rh:=p;q:=p; insert_penalties:=insert_penalties+1; end else begin delete_glue_ref(mem[p+4].hh.rh);free_node(p,5);end; p:=prev_p{:1023};end{:1021}; end else if mem[p].hh.b0=4 then if mem[p+1].hh.lh<>0 then{1566:}begin find_sa_element(6,mem[p+1].hh.lh,true); if mem[cur_ptr+1].hh.rh=0 then begin mem[cur_ptr+1].hh.rh:=mem[p+1].hh. rh;mem[mem[p+1].hh.rh].hh.lh:=mem[mem[p+1].hh.rh].hh.lh+1;end; if mem[cur_ptr+2].hh.lh<>0 then delete_token_ref(mem[cur_ptr+2].hh.lh); mem[cur_ptr+2].hh.lh:=mem[p+1].hh.rh; mem[mem[p+1].hh.rh].hh.lh:=mem[mem[p+1].hh.rh].hh.lh+1; end{:1566}else{1017:}begin if cur_mark[1]=0 then begin cur_mark[1]:=mem[ p+1].hh.rh;mem[cur_mark[1]].hh.lh:=mem[cur_mark[1]].hh.lh+1;end; if cur_mark[2]<>0 then delete_token_ref(cur_mark[2]); cur_mark[2]:=mem[p+1].hh.rh; mem[cur_mark[2]].hh.lh:=mem[cur_mark[2]].hh.lh+1;end{:1017};prev_p:=p; p:=mem[prev_p].hh.rh;end;eqtb[600792].hh.rh:=save_split_top_skip; {1018:}if p<>0 then begin if mem[7999999].hh.rh=0 then if nest_ptr=0 then cur_list.tail_field:=page_tail else nest[0].tail_field:=page_tail; mem[page_tail].hh.rh:=mem[7999999].hh.rh;mem[7999999].hh.rh:=p; mem[prev_p].hh.rh:=0;end;save_vbadness:=eqtb[603195].int; eqtb[603195].int:=10000;save_vfuzz:=eqtb[603754].int; eqtb[603754].int:=1073741823; eqtb[601838].hh.rh:=vpackage(mem[7999998].hh.rh,best_size,0, page_max_depth);eqtb[603195].int:=save_vbadness; eqtb[603754].int:=save_vfuzz; if last_glue<>536870911 then delete_glue_ref(last_glue); {992:}page_contents:=0;page_tail:=7999998;mem[7999998].hh.rh:=0; last_glue:=536870911;last_penalty:=0;last_kern:=0;last_node_type:=-1; page_so_far[7]:=0;page_max_depth:=0{:992}; if q<>7999996 then begin mem[7999998].hh.rh:=mem[7999996].hh.rh; page_tail:=q;end{:1018};{1020:}r:=mem[8000000].hh.rh; while r<>8000000 do begin q:=mem[r].hh.rh;free_node(r,4);r:=q;end; mem[8000000].hh.rh:=8000000{:1020}{:1015}; if sa_root[6]<>0 then if do_marks(2,0,sa_root[6])then sa_root[6]:=0; if(cur_mark[0]<>0)and(cur_mark[1]=0)then begin cur_mark[1]:=cur_mark[0]; mem[cur_mark[0]].hh.lh:=mem[cur_mark[0]].hh.lh+1;end; if eqtb[601313].hh.rh<>0 then if dead_cycles>=eqtb[603208].int then {1025:}begin begin if interaction=3 then;print_nl(264);print(1031);end; print_int(dead_cycles);print(1032);begin help_ptr:=3;help_line[2]:=1033; help_line[1]:=1034;help_line[0]:=1035;end;error; end{:1025}else{1026:}begin output_active:=true; dead_cycles:=dead_cycles+1;push_nest;cur_list.mode_field:=-1; cur_list.aux_field.int:=-65536000;cur_list.ml_field:=-line; begin_token_list(eqtb[601313].hh.rh,6);new_save_level(8); normal_paragraph;scan_left_brace;goto 10;end{:1026}; {1024:}begin if mem[7999998].hh.rh<>0 then begin if mem[7999999].hh.rh=0 then if nest_ptr=0 then cur_list.tail_field:=page_tail else nest[0]. tail_field:=page_tail else mem[page_tail].hh.rh:=mem[7999999].hh.rh; mem[7999999].hh.rh:=mem[7999998].hh.rh;mem[7999998].hh.rh:=0; page_tail:=7999998;end;flush_node_list(disc_ptr[2]);disc_ptr[2]:=0; ship_out(eqtb[601838].hh.rh);eqtb[601838].hh.rh:=0;end{:1024};10:end; {:1013}procedure build_page;label 10,30,31,22,80,90;var p:halfword; q,r:halfword;b,c:integer;pi:integer;n:0..255;delta,h,w:scaled; begin if(mem[7999999].hh.rh=0)or output_active then goto 10; repeat 22:p:=mem[7999999].hh.rh; {997:}if last_glue<>536870911 then delete_glue_ref(last_glue); last_penalty:=0;last_kern:=0;last_node_type:=mem[p].hh.b0+1; if mem[p].hh.b0=10 then begin last_glue:=mem[p+1].hh.lh; mem[last_glue].hh.rh:=mem[last_glue].hh.rh+1; end else begin last_glue:=536870911; if mem[p].hh.b0=12 then last_penalty:=mem[p+1].int else if mem[p].hh.b0= 11 then last_kern:=mem[p+1].int;end{:997}; {998:}{1001:}case mem[p].hh.b0 of 0,1,2:if page_contents<2 then{1002:} begin if page_contents=0 then freeze_page_specs(2)else page_contents:=2; q:=new_skip_param(9); if mem[temp_ptr+1].int>mem[p+3].int then mem[temp_ptr+1].int:=mem[ temp_ptr+1].int-mem[p+3].int else mem[temp_ptr+1].int:=0; mem[q].hh.rh:=p;mem[7999999].hh.rh:=q;goto 22; end{:1002}else{1003:}begin page_so_far[1]:=page_so_far[1]+page_so_far[7] +mem[p+3].int;page_so_far[7]:=mem[p+2].int;goto 80;end{:1003}; 8:{1365:}goto 80{:1365}; 10:if page_contents<2 then goto 31 else if(mem[page_tail].hh.b0<9)then pi:=0 else goto 90; 11:if page_contents<2 then goto 31 else if mem[p].hh.rh=0 then goto 10 else if mem[mem[p].hh.rh].hh.b0=10 then pi:=0 else goto 90; 12:if page_contents<2 then goto 31 else pi:=mem[p+1].int;4:goto 80; 3:{1009:}begin if page_contents=0 then freeze_page_specs(1); n:=mem[p].hh.b1;r:=8000000; while n>=mem[mem[r].hh.rh].hh.b1 do r:=mem[r].hh.rh;n:=n-0; if mem[r].hh.b1<>n+0 then{1010:}begin q:=get_node(4); mem[q].hh.rh:=mem[r].hh.rh;mem[r].hh.rh:=q;r:=q;mem[r].hh.b1:=n+0; mem[r].hh.b0:=0;ensure_vbox(n); if eqtb[601583+n].hh.rh=0 then mem[r+3].int:=0 else mem[r+3].int:=mem[ eqtb[601583+n].hh.rh+3].int+mem[eqtb[601583+n].hh.rh+2].int; mem[r+2].hh.lh:=0;q:=eqtb[600800+n].hh.rh; if eqtb[603233+n].int=1000 then h:=mem[r+3].int else h:=x_over_n(mem[r+3 ].int,1000)*eqtb[603233+n].int; page_so_far[0]:=page_so_far[0]-h-mem[q+1].int; page_so_far[2+mem[q].hh.b0]:=page_so_far[2+mem[q].hh.b0]+mem[q+2].int; page_so_far[6]:=page_so_far[6]+mem[q+3].int; if(mem[q].hh.b1<>0)and(mem[q+3].int<>0)then begin begin if interaction=3 then;print_nl(264);print(1024);end;print_esc(399);print_int(n); begin help_ptr:=3;help_line[2]:=1025;help_line[1]:=1026; help_line[0]:=948;end;error;end;end{:1010}; if mem[r].hh.b0=1 then insert_penalties:=insert_penalties+mem[p+1].int else begin mem[r+2].hh.rh:=p; delta:=page_so_far[0]-page_so_far[1]-page_so_far[7]+page_so_far[6]; if eqtb[603233+n].int=1000 then h:=mem[p+3].int else h:=x_over_n(mem[p+3 ].int,1000)*eqtb[603233+n].int; if((h<=0)or(h<=delta))and(mem[p+3].int+mem[r+3].int<=eqtb[603766+n].int) then begin page_so_far[0]:=page_so_far[0]-h; mem[r+3].int:=mem[r+3].int+mem[p+3].int; end else{1011:}begin if eqtb[603233+n].int<=0 then w:=1073741823 else begin w:=page_so_far[0]-page_so_far[1]-page_so_far[7]; if eqtb[603233+n].int<>1000 then w:=x_over_n(w,eqtb[603233+n].int)*1000; end; if w>eqtb[603766+n].int-mem[r+3].int then w:=eqtb[603766+n].int-mem[r+3] .int;q:=vert_break(mem[p+4].hh.lh,w,mem[p+2].int); mem[r+3].int:=mem[r+3].int+best_height_plus_depth; {if eqtb[603201].int>0 then[1012:]begin begin_diagnostic;print_nl(1027); print_int(n);print(1028);print_scaled(w);print_char(44); print_scaled(best_height_plus_depth);print(957); if q=0 then print_int(-10000)else if mem[q].hh.b0=12 then print_int(mem[ q+1].int)else print_char(48);end_diagnostic(false);end[:1012];} if eqtb[603233+n].int<>1000 then best_height_plus_depth:=x_over_n( best_height_plus_depth,1000)*eqtb[603233+n].int; page_so_far[0]:=page_so_far[0]-best_height_plus_depth;mem[r].hh.b0:=1; mem[r+1].hh.rh:=q;mem[r+1].hh.lh:=p; if q=0 then insert_penalties:=insert_penalties-10000 else if mem[q].hh. b0=12 then insert_penalties:=insert_penalties+mem[q+1].int;end{:1011}; end;goto 80;end{:1009};others:confusion(1019)end{:1001}; {1006:}if pi<10000 then begin{1008:}if page_so_far[1]0)or(page_so_far[4]<>0)or(page_so_far[5]<>0)then b:=0 else b:=badness(page_so_far[0]-page_so_far[1],page_so_far[2])else if page_so_far[1]-page_so_far[0]>page_so_far[6]then b:=1073741823 else b:= badness(page_so_far[1]-page_so_far[0],page_so_far[6]){:1008}; if b<1073741823 then if pi<=-10000 then c:=pi else if b<10000 then c:=b+ pi+insert_penalties else c:=100000 else c:=b; if insert_penalties>=10000 then c:=1073741823; {if eqtb[603201].int>0 then[1007:]begin begin_diagnostic;print_nl(37); print(953);print_totals;print(1022);print_scaled(page_so_far[0]); print(956);if b=1073741823 then print_char(42)else print_int(b); print(957);print_int(pi);print(1023); if c=1073741823 then print_char(42)else print_int(c); if c<=least_page_cost then print_char(35);end_diagnostic(false); end[:1007];}if c<=least_page_cost then begin best_page_break:=p; best_size:=page_so_far[0];least_page_cost:=c;r:=mem[8000000].hh.rh; while r<>8000000 do begin mem[r+2].hh.lh:=mem[r+2].hh.rh; r:=mem[r].hh.rh;end;end; if(c=1073741823)or(pi<=-10000)then begin fire_up(p); if output_active then goto 10;goto 30;end;end{:1006}; if(mem[p].hh.b0<10)or(mem[p].hh.b0>11)then goto 80; 90:{1005:}if mem[p].hh.b0=11 then q:=p else begin q:=mem[p+1].hh.lh; page_so_far[2+mem[q].hh.b0]:=page_so_far[2+mem[q].hh.b0]+mem[q+2].int; page_so_far[6]:=page_so_far[6]+mem[q+3].int; if(mem[q].hh.b1<>0)and(mem[q+3].int<>0)then begin begin if interaction=3 then;print_nl(264);print(1020);end;begin help_ptr:=4;help_line[3]:=1021; help_line[2]:=989;help_line[1]:=990;help_line[0]:=948;end;error; r:=new_spec(q);mem[r].hh.b1:=0;delete_glue_ref(q);mem[p+1].hh.lh:=r; q:=r;end;end;page_so_far[1]:=page_so_far[1]+page_so_far[7]+mem[q+1].int; page_so_far[7]:=0{:1005}; 80:{1004:}if page_so_far[7]>page_max_depth then begin page_so_far[1]:= page_so_far[1]+page_so_far[7]-page_max_depth; page_so_far[7]:=page_max_depth;end;{:1004}; {999:}mem[page_tail].hh.rh:=p;page_tail:=p; mem[7999999].hh.rh:=mem[p].hh.rh;mem[p].hh.rh:=0;goto 30{:999}; 31:{1000:}mem[7999999].hh.rh:=mem[p].hh.rh;mem[p].hh.rh:=0; if eqtb[603230].int>0 then begin if disc_ptr[2]=0 then disc_ptr[2]:=p else mem[disc_ptr[1]].hh.rh:=p;disc_ptr[1]:=p; end else flush_node_list(p){:1000};30:{:998};until mem[7999999].hh.rh=0; {996:}if nest_ptr=0 then cur_list.tail_field:=7999999 else nest[0]. tail_field:=7999999{:996};10:end; {:995}{1031:}{1044:}procedure app_space;var q:halfword; begin if(cur_list.aux_field.hh.lh>=2000)and(eqtb[600795].hh.rh<>0)then q :=new_param_glue(13)else begin if eqtb[600794].hh.rh<>0 then main_p:= eqtb[600794].hh.rh else{1043:}begin main_p:=font_glue[eqtb[601839].hh.rh ];if main_p=0 then begin main_p:=new_spec(0); main_k:=param_base[eqtb[601839].hh.rh]+2; mem[main_p+1].int:=font_info[main_k].int; mem[main_p+2].int:=font_info[main_k+1].int; mem[main_p+3].int:=font_info[main_k+2].int; font_glue[eqtb[601839].hh.rh]:=main_p;end;end{:1043}; main_p:=new_spec(main_p); {1045:}if cur_list.aux_field.hh.lh>=2000 then mem[main_p+1].int:=mem[ main_p+1].int+font_info[7+param_base[eqtb[601839].hh.rh]].int; mem[main_p+2].int:=xn_over_d(mem[main_p+2].int,cur_list.aux_field.hh.lh, 1000); mem[main_p+3].int:=xn_over_d(mem[main_p+3].int,1000,cur_list.aux_field. hh.lh){:1045};q:=new_glue(main_p);mem[main_p].hh.rh:=0;end; mem[cur_list.tail_field].hh.rh:=q;cur_list.tail_field:=q;end; {:1044}{1048:}procedure insert_dollar_sign;begin back_input; cur_tok:=804;begin if interaction=3 then;print_nl(264);print(1043);end; begin help_ptr:=2;help_line[1]:=1044;help_line[0]:=1045;end;ins_error; end;{:1048}{1050:}procedure you_cant;begin begin if interaction=3 then; print_nl(264);print(695);end;print_cmd_chr(cur_cmd,cur_chr);print(1046); print_mode(cur_list.mode_field);end; {:1050}{1051:}procedure report_illegal_case;begin you_cant; begin help_ptr:=4;help_line[3]:=1047;help_line[2]:=1048; help_line[1]:=1049;help_line[0]:=1050;end;error;end; {:1051}{1052:}function privileged:boolean; begin if cur_list.mode_field>0 then privileged:=true else begin report_illegal_case;privileged:=false;end;end; {:1052}{1055:}function its_all_over:boolean;label 10; begin if privileged then begin if(7999998=page_tail)and(cur_list. head_field=cur_list.tail_field)and(dead_cycles=0)then begin its_all_over :=true;goto 10;end;back_input; begin mem[cur_list.tail_field].hh.rh:=new_null_box; cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field+1].int:=eqtb[603748].int; begin mem[cur_list.tail_field].hh.rh:=new_glue(8); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; begin mem[cur_list.tail_field].hh.rh:=new_penalty(-1073741824); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end;build_page;end; its_all_over:=false;10:end;{:1055}{1061:}procedure append_glue; var s:small_number;begin s:=cur_chr;case s of 0:cur_val:=4;1:cur_val:=8; 2:cur_val:=12;3:cur_val:=16;4:scan_glue(2);5:scan_glue(3);end; begin mem[cur_list.tail_field].hh.rh:=new_glue(cur_val); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; if s>=4 then begin mem[cur_val].hh.rh:=mem[cur_val].hh.rh-1; if s>4 then mem[cur_list.tail_field].hh.b1:=99;end;end; {:1061}{1062:}procedure append_kern;var s:quarterword;begin s:=cur_chr; scan_dimen(s=99,false,false); begin mem[cur_list.tail_field].hh.rh:=new_kern(cur_val); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.b1:=s;end;{:1062}{1065:}procedure off_save; var p:halfword; begin if cur_group=0 then{1067:}begin begin if interaction=3 then; print_nl(264);print(802);end;print_cmd_chr(cur_cmd,cur_chr); begin help_ptr:=1;help_line[0]:=1068;end;error; end{:1067}else begin back_input;p:=get_avail;mem[7999997].hh.rh:=p; begin if interaction=3 then;print_nl(264);print(635);end; {1066:}case cur_group of 14:begin mem[p].hh.lh:=604611;print_esc(520); end;15:begin mem[p].hh.lh:=804;print_char(36);end; 16:begin mem[p].hh.lh:=604612;mem[p].hh.rh:=get_avail;p:=mem[p].hh.rh; mem[p].hh.lh:=3118;print_esc(1067);end;others:begin mem[p].hh.lh:=637; print_char(125);end end{:1066};print(636); begin_token_list(mem[7999997].hh.rh,4);begin help_ptr:=5; help_line[4]:=1062;help_line[3]:=1063;help_line[2]:=1064; help_line[1]:=1065;help_line[0]:=1066;end;error;end;end; {:1065}{1070:}procedure extra_right_brace; begin begin if interaction=3 then;print_nl(264);print(1073);end; case cur_group of 14:print_esc(520);15:print_char(36);16:print_esc(902); end;begin help_ptr:=5;help_line[4]:=1074;help_line[3]:=1075; help_line[2]:=1076;help_line[1]:=1077;help_line[0]:=1078;end;error; align_state:=align_state+1;end;{:1070}{1071:}procedure normal_paragraph; begin if eqtb[603187].int<>0 then eq_word_define(603187,0); if eqtb[603762].int<>0 then eq_word_define(603762,0); if eqtb[603209].int<>1 then eq_word_define(603209,1); if eqtb[601312].hh.rh<>0 then eq_define(601312,118,0); if eqtb[601579].hh.rh<>0 then eq_define(601579,118,0);end; {:1071}{1076:}procedure box_end(box_context:integer);var p:halfword; a:small_number; begin if box_context<1073741824 then{1077:}begin if cur_box<>0 then begin mem[cur_box+4].int:=box_context; if abs(cur_list.mode_field)=1 then begin append_to_vlist(cur_box); if adjust_tail<>0 then begin if 7999995<>adjust_tail then begin mem[ cur_list.tail_field].hh.rh:=mem[7999995].hh.rh; cur_list.tail_field:=adjust_tail;end;adjust_tail:=0;end; if cur_list.mode_field>0 then build_page; end else begin if abs(cur_list.mode_field)=102 then cur_list.aux_field. hh.lh:=1000 else begin p:=new_noad;mem[p+1].hh.rh:=2; mem[p+1].hh.lh:=cur_box;cur_box:=p;end; mem[cur_list.tail_field].hh.rh:=cur_box;cur_list.tail_field:=cur_box; end;end; end{:1077}else if box_context<1073807360 then{1078:}begin if box_context <1073774592 then begin cur_val:=box_context-1073741824;a:=0; end else begin cur_val:=box_context-1073774592;a:=4;end; if cur_val<256 then if(a>=4)then geq_define(601583+cur_val,119,cur_box) else eq_define(601583+cur_val,119,cur_box)else begin find_sa_element(4, cur_val,true); if(a>=4)then gsa_def(cur_ptr,cur_box)else sa_def(cur_ptr,cur_box);end; end{:1078}else if cur_box<>0 then if box_context>1073807360 then{1079:} begin{404:}repeat get_x_token;until(cur_cmd<>10)and(cur_cmd<>0){:404}; if((cur_cmd=26)and(abs(cur_list.mode_field)<>1))or((cur_cmd=27)and(abs( cur_list.mode_field)=1))then begin append_glue; mem[cur_list.tail_field].hh.b1:=box_context-(1073807261); mem[cur_list.tail_field+1].hh.rh:=cur_box; end else begin begin if interaction=3 then;print_nl(264);print(1091); end;begin help_ptr:=3;help_line[2]:=1092;help_line[1]:=1093; help_line[0]:=1094;end;back_error;flush_node_list(cur_box);end; end{:1079}else ship_out(cur_box);end; {:1076}{1080:}procedure begin_box(box_context:integer);label 10,30; var p,q:halfword;r:halfword;fm:boolean;tx:halfword;m:quarterword; k:halfword;n:halfword;begin case cur_chr of 0:begin scan_register_num; if cur_val<256 then cur_box:=eqtb[601583+cur_val].hh.rh else begin find_sa_element(4,cur_val,false); if cur_ptr=0 then cur_box:=0 else cur_box:=mem[cur_ptr+1].hh.rh;end; if cur_val<256 then eqtb[601583+cur_val].hh.rh:=0 else begin find_sa_element(4,cur_val,false); if cur_ptr<>0 then begin mem[cur_ptr+1].hh.rh:=0; mem[cur_ptr+1].hh.lh:=mem[cur_ptr+1].hh.lh+1;delete_sa_ref(cur_ptr);end; end;end;1:begin scan_register_num; if cur_val<256 then q:=eqtb[601583+cur_val].hh.rh else begin find_sa_element(4,cur_val,false); if cur_ptr=0 then q:=0 else q:=mem[cur_ptr+1].hh.rh;end; cur_box:=copy_node_list(q);end;2:{1081:}begin cur_box:=0; if abs(cur_list.mode_field)=203 then begin you_cant;begin help_ptr:=1; help_line[0]:=1096;end;error; end else if(cur_list.mode_field=1)and(cur_list.head_field=cur_list. tail_field)then begin you_cant;begin help_ptr:=2;help_line[1]:=1097; help_line[0]:=1098;end;error;end else begin tx:=cur_list.tail_field; if not(tx>=hi_mem_min)then if(mem[tx].hh.b0=9)and(mem[tx].hh.b1=3)then begin r:=cur_list.head_field;repeat q:=r;r:=mem[q].hh.rh;until r=tx; tx:=q;end; if not(tx>=hi_mem_min)then if(mem[tx].hh.b0=0)or(mem[tx].hh.b0=1)then {1082:}begin q:=cur_list.head_field;p:=0;repeat r:=p;p:=q;fm:=false; if not(q>=hi_mem_min)then if mem[q].hh.b0=7 then begin for m:=1 to mem[q ].hh.b1 do p:=mem[p].hh.rh;if p=tx then goto 30; end else if(mem[q].hh.b0=9)and(mem[q].hh.b1=2)then fm:=true; q:=mem[p].hh.rh;until q=tx;q:=mem[tx].hh.rh;mem[p].hh.rh:=q; mem[tx].hh.rh:=0; if q=0 then if fm then confusion(1095)else cur_list.tail_field:=p else if fm then begin cur_list.tail_field:=r;mem[r].hh.rh:=0; flush_node_list(p);end;cur_box:=tx;mem[cur_box+4].int:=0;end{:1082}; 30:end;end{:1081};3:{1083:}begin scan_register_num;n:=cur_val; if not scan_keyword(867)then begin begin if interaction=3 then; print_nl(264);print(1099);end;begin help_ptr:=2;help_line[1]:=1100; help_line[0]:=1101;end;error;end;scan_dimen(false,false,false); cur_box:=vsplit(n,cur_val);end{:1083};others:{1084:}begin k:=cur_chr-4; save_stack[save_ptr+0].int:=box_context; if k=102 then if(box_context<1073741824)and(abs(cur_list.mode_field)=1) then scan_spec(3,true)else scan_spec(2,true)else begin if k=1 then scan_spec(4,true)else begin scan_spec(5,true);k:=1;end;normal_paragraph; end;push_nest;cur_list.mode_field:=-k; if k=1 then begin cur_list.aux_field.int:=-65536000; if eqtb[601318].hh.rh<>0 then begin_token_list(eqtb[601318].hh.rh,11); end else begin cur_list.aux_field.hh.lh:=1000; if eqtb[601317].hh.rh<>0 then begin_token_list(eqtb[601317].hh.rh,10); end;goto 10;end{:1084}end;box_end(box_context);10:end; {:1080}{1085:}procedure scan_box(box_context:integer); begin{404:}repeat get_x_token;until(cur_cmd<>10)and(cur_cmd<>0){:404}; if cur_cmd=20 then begin_box(box_context)else if(box_context>=1073807361 )and((cur_cmd=36)or(cur_cmd=35))then begin cur_box:=scan_rule_spec; box_end(box_context);end else begin begin if interaction=3 then; print_nl(264);print(1102);end;begin help_ptr:=3;help_line[2]:=1103; help_line[1]:=1104;help_line[0]:=1105;end;back_error;end;end; {:1085}{1087:}procedure package(c:small_number);var h:scaled;p:halfword; d:scaled;begin d:=eqtb[603752].int;unsave;save_ptr:=save_ptr-3; if cur_list.mode_field=-102 then cur_box:=hpack(mem[cur_list.head_field] .hh.rh,save_stack[save_ptr+2].int,save_stack[save_ptr+1].int)else begin cur_box:=vpackage(mem[cur_list.head_field].hh.rh,save_stack[save_ptr+2]. int,save_stack[save_ptr+1].int,d);if c=4 then{1088:}begin h:=0; p:=mem[cur_box+5].hh.rh; if p<>0 then if mem[p].hh.b0<=2 then h:=mem[p+3].int; mem[cur_box+2].int:=mem[cur_box+2].int-h+mem[cur_box+3].int; mem[cur_box+3].int:=h;end{:1088};end;pop_nest; box_end(save_stack[save_ptr+0].int);end; {:1087}{1092:}function norm_min(h:integer):small_number; begin if h<=0 then norm_min:=1 else if h>=63 then norm_min:=63 else norm_min:=h;end;procedure new_graf(indented:boolean); begin cur_list.pg_field:=0; if(cur_list.mode_field=1)or(cur_list.head_field<>cur_list.tail_field) then begin mem[cur_list.tail_field].hh.rh:=new_param_glue(2); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end;push_nest; cur_list.mode_field:=102;cur_list.aux_field.hh.lh:=1000; if eqtb[603218].int<=0 then cur_lang:=0 else if eqtb[603218].int>255 then cur_lang:=0 else cur_lang:=eqtb[603218].int; cur_list.aux_field.hh.rh:=cur_lang; cur_list.pg_field:=(norm_min(eqtb[603219].int)*64+norm_min(eqtb[603220]. int))*65536+cur_lang; if indented then begin cur_list.tail_field:=new_null_box; mem[cur_list.head_field].hh.rh:=cur_list.tail_field; mem[cur_list.tail_field+1].int:=eqtb[603745].int;end; if eqtb[601314].hh.rh<>0 then begin_token_list(eqtb[601314].hh.rh,7); if nest_ptr=1 then build_page;end; {:1092}{1094:}procedure indent_in_hmode;var p,q:halfword; begin if cur_chr>0 then begin p:=new_null_box; mem[p+1].int:=eqtb[603745].int; if abs(cur_list.mode_field)=102 then cur_list.aux_field.hh.lh:=1000 else begin q:=new_noad;mem[q+1].hh.rh:=2;mem[q+1].hh.lh:=p;p:=q;end; begin mem[cur_list.tail_field].hh.rh:=p; cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end;end;end; {:1094}{1096:}procedure head_for_vmode; begin if cur_list.mode_field<0 then if cur_cmd<>36 then off_save else begin begin if interaction=3 then;print_nl(264);print(695);end; print_esc(525);print(1108);begin help_ptr:=2;help_line[1]:=1109; help_line[0]:=1110;end;error;end else begin back_input; cur_tok:=par_token;back_input;cur_input.index_field:=4;end;end; {:1096}{1097:}procedure end_graf; begin if cur_list.mode_field=102 then begin if cur_list.head_field= cur_list.tail_field then pop_nest else line_break(false); if cur_list.eTeX_aux_field<>0 then begin flush_list(cur_list. eTeX_aux_field);cur_list.eTeX_aux_field:=0;end;normal_paragraph; error_count:=0;end;end;{:1097}{1100:}procedure begin_insert_or_adjust; begin if cur_cmd=38 then cur_val:=255 else begin scan_eight_bit_int; if cur_val=255 then begin begin if interaction=3 then;print_nl(264); print(1111);end;print_esc(332);print_int(255);begin help_ptr:=1; help_line[0]:=1112;end;error;cur_val:=0;end;end; save_stack[save_ptr+0].int:=cur_val;save_ptr:=save_ptr+1; new_save_level(11);scan_left_brace;normal_paragraph;push_nest; cur_list.mode_field:=-1;cur_list.aux_field.int:=-65536000;end; {:1100}{1102:}procedure make_mark;var p:halfword;c:halfword; begin if cur_chr=0 then c:=0 else begin scan_register_num;c:=cur_val; end;p:=scan_toks(false,true);p:=get_node(2);mem[p+1].hh.lh:=c; mem[p].hh.b0:=4;mem[p].hh.b1:=0;mem[p+1].hh.rh:=def_ref; mem[cur_list.tail_field].hh.rh:=p;cur_list.tail_field:=p;end; {:1102}{1104:}procedure append_penalty;begin scan_int; begin mem[cur_list.tail_field].hh.rh:=new_penalty(cur_val); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; if cur_list.mode_field=1 then build_page;end; {:1104}{1106:}procedure delete_last;label 10;var p,q:halfword; r:halfword;fm:boolean;tx:halfword;m:quarterword; begin if(cur_list.mode_field=1)and(cur_list.tail_field=cur_list. head_field)then{1107:}begin if(cur_chr<>10)or(last_glue<>536870911)then begin you_cant;begin help_ptr:=2;help_line[1]:=1097;help_line[0]:=1113; end;if cur_chr=11 then help_line[0]:=(1114)else if cur_chr<>10 then help_line[0]:=(1115);error;end; end{:1107}else begin tx:=cur_list.tail_field; if not(tx>=hi_mem_min)then if(mem[tx].hh.b0=9)and(mem[tx].hh.b1=3)then begin r:=cur_list.head_field;repeat q:=r;r:=mem[q].hh.rh;until r=tx; tx:=q;end; if not(tx>=hi_mem_min)then if mem[tx].hh.b0=cur_chr then begin q:= cur_list.head_field;p:=0;repeat r:=p;p:=q;fm:=false; if not(q>=hi_mem_min)then if mem[q].hh.b0=7 then begin for m:=1 to mem[q ].hh.b1 do p:=mem[p].hh.rh;if p=tx then goto 10; end else if(mem[q].hh.b0=9)and(mem[q].hh.b1=2)then fm:=true; q:=mem[p].hh.rh;until q=tx;q:=mem[tx].hh.rh;mem[p].hh.rh:=q; mem[tx].hh.rh:=0; if q=0 then if fm then confusion(1095)else cur_list.tail_field:=p else if fm then begin cur_list.tail_field:=r;mem[r].hh.rh:=0; flush_node_list(p);end;flush_node_list(tx);end;end;10:end; {:1106}{1111:}procedure unpackage;label 30,10;var p:halfword;c:0..1; begin if cur_chr>1 then{1599:}begin mem[cur_list.tail_field].hh.rh:= disc_ptr[cur_chr];disc_ptr[cur_chr]:=0;goto 30;end{:1599};c:=cur_chr; scan_register_num; if cur_val<256 then p:=eqtb[601583+cur_val].hh.rh else begin find_sa_element(4,cur_val,false); if cur_ptr=0 then p:=0 else p:=mem[cur_ptr+1].hh.rh;end; if p=0 then goto 10; if(abs(cur_list.mode_field)=203)or((abs(cur_list.mode_field)=1)and(mem[p ].hh.b0<>1))or((abs(cur_list.mode_field)=102)and(mem[p].hh.b0<>0))then begin begin if interaction=3 then;print_nl(264);print(1123);end; begin help_ptr:=3;help_line[2]:=1124;help_line[1]:=1125; help_line[0]:=1126;end;error;goto 10;end; if c=1 then mem[cur_list.tail_field].hh.rh:=copy_node_list(mem[p+5].hh. rh)else begin mem[cur_list.tail_field].hh.rh:=mem[p+5].hh.rh; if cur_val<256 then eqtb[601583+cur_val].hh.rh:=0 else begin find_sa_element(4,cur_val,false); if cur_ptr<>0 then begin mem[cur_ptr+1].hh.rh:=0; mem[cur_ptr+1].hh.lh:=mem[cur_ptr+1].hh.lh+1;delete_sa_ref(cur_ptr);end; end;free_node(p,7);end; 30:while mem[cur_list.tail_field].hh.rh<>0 do cur_list.tail_field:=mem[ cur_list.tail_field].hh.rh;10:end; {:1111}{1114:}procedure append_italic_correction;label 10; var p:halfword;f:internal_font_number; begin if cur_list.tail_field<>cur_list.head_field then begin if(cur_list .tail_field>=hi_mem_min)then p:=cur_list.tail_field else if mem[cur_list .tail_field].hh.b0=6 then p:=cur_list.tail_field+1 else goto 10; f:=mem[p].hh.b0; begin mem[cur_list.tail_field].hh.rh:=new_kern(font_info[italic_base[f]+ (font_info[char_base[f]+mem[p].hh.b1].qqqq.b2-0)div 4].int); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.b1:=1;end;10:end; {:1114}{1118:}procedure append_discretionary;var c:integer; begin begin mem[cur_list.tail_field].hh.rh:=new_disc; cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; if cur_chr=1 then begin c:=hyphen_char[eqtb[601839].hh.rh]; if c>=0 then if c<256 then mem[cur_list.tail_field+1].hh.lh:= new_character(eqtb[601839].hh.rh,c);end else begin save_ptr:=save_ptr+1; save_stack[save_ptr-1].int:=0;new_save_level(10);scan_left_brace; push_nest;cur_list.mode_field:=-102;cur_list.aux_field.hh.lh:=1000;end; end;{:1118}{1120:}procedure build_discretionary;label 30,10; var p,q:halfword;n:integer;begin unsave;{1122:}q:=cur_list.head_field; p:=mem[q].hh.rh;n:=0; while p<>0 do begin if not(p>=hi_mem_min)then if mem[p].hh.b0>2 then if mem[p].hh.b0<>11 then if mem[p].hh.b0<>6 then begin begin if interaction =3 then;print_nl(264);print(1133);end;begin help_ptr:=1; help_line[0]:=1134;end;error;begin_diagnostic;print_nl(1135); show_box(p);end_diagnostic(true);flush_node_list(p);mem[q].hh.rh:=0; goto 30;end;q:=p;p:=mem[q].hh.rh;n:=n+1;end;30:{:1122}; p:=mem[cur_list.head_field].hh.rh;pop_nest; case save_stack[save_ptr-1].int of 0:mem[cur_list.tail_field+1].hh.lh:=p ;1:mem[cur_list.tail_field+1].hh.rh:=p; 2:{1121:}begin if(n>0)and(abs(cur_list.mode_field)=203)then begin begin if interaction=3 then;print_nl(264);print(1127);end;print_esc(353); begin help_ptr:=2;help_line[1]:=1128;help_line[0]:=1129;end; flush_node_list(p);n:=0;error; end else mem[cur_list.tail_field].hh.rh:=p; if n<=65535 then mem[cur_list.tail_field].hh.b1:=n else begin begin if interaction=3 then;print_nl(264);print(1130);end;begin help_ptr:=2; help_line[1]:=1131;help_line[0]:=1132;end;error;end; if n>0 then cur_list.tail_field:=q;save_ptr:=save_ptr-1;goto 10; end{:1121};end;save_stack[save_ptr-1].int:=save_stack[save_ptr-1].int+1; new_save_level(10);scan_left_brace;push_nest;cur_list.mode_field:=-102; cur_list.aux_field.hh.lh:=1000;10:end; {:1120}{1124:}procedure make_accent;var s,t:real;p,q,r:halfword; f:internal_font_number;a,h,x,w,delta:scaled;i:four_quarters; begin scan_char_num;f:=eqtb[601839].hh.rh;p:=new_character(f,cur_val); if p<>0 then begin x:=font_info[5+param_base[f]].int; s:=font_info[1+param_base[f]].int/65536.0; a:=font_info[width_base[f]+font_info[char_base[f]+mem[p].hh.b1].qqqq.b0] .int;do_assignments;{1125:}q:=0;f:=eqtb[601839].hh.rh; if(cur_cmd=11)or(cur_cmd=12)or(cur_cmd=68)then q:=new_character(f, cur_chr)else if cur_cmd=16 then begin scan_char_num; q:=new_character(f,cur_val);end else back_input{:1125}; if q<>0 then{1126:}begin t:=font_info[1+param_base[f]].int/65536.0; i:=font_info[char_base[f]+mem[q].hh.b1].qqqq; w:=font_info[width_base[f]+i.b0].int; h:=font_info[height_base[f]+(i.b1-0)div 16].int; if h<>x then begin p:=hpack(p,0,1);mem[p+4].int:=x-h;end; delta:=round((w-a)/2.0+h*t-x*s);r:=new_kern(delta);mem[r].hh.b1:=2; mem[cur_list.tail_field].hh.rh:=r;mem[r].hh.rh:=p; cur_list.tail_field:=new_kern(-a-delta); mem[cur_list.tail_field].hh.b1:=2;mem[p].hh.rh:=cur_list.tail_field; p:=q;end{:1126};mem[cur_list.tail_field].hh.rh:=p; cur_list.tail_field:=p;cur_list.aux_field.hh.lh:=1000;end;end; {:1124}{1128:}procedure align_error; begin if abs(align_state)>2 then{1129:}begin begin if interaction=3 then ;print_nl(264);print(1140);end;print_cmd_chr(cur_cmd,cur_chr); if cur_tok=1062 then begin begin help_ptr:=6;help_line[5]:=1141; help_line[4]:=1142;help_line[3]:=1143;help_line[2]:=1144; help_line[1]:=1145;help_line[0]:=1146;end; end else begin begin help_ptr:=5;help_line[4]:=1141;help_line[3]:=1147; help_line[2]:=1144;help_line[1]:=1145;help_line[0]:=1146;end;end;error; end{:1129}else begin back_input; if align_state<0 then begin begin if interaction=3 then;print_nl(264); print(667);end;align_state:=align_state+1;cur_tok:=379; end else begin begin if interaction=3 then;print_nl(264);print(1136); end;align_state:=align_state-1;cur_tok:=637;end;begin help_ptr:=3; help_line[2]:=1137;help_line[1]:=1138;help_line[0]:=1139;end;ins_error; end;end;{:1128}{1130:}procedure no_align_error; begin begin if interaction=3 then;print_nl(264);print(1140);end; print_esc(531);begin help_ptr:=2;help_line[1]:=1148;help_line[0]:=1149; end;error;end;procedure omit_error;begin begin if interaction=3 then; print_nl(264);print(1140);end;print_esc(534);begin help_ptr:=2; help_line[1]:=1150;help_line[0]:=1149;end;error;end; {:1130}{1132:}procedure do_endv;begin base_ptr:=input_ptr; input_stack[base_ptr]:=cur_input; while(input_stack[base_ptr].index_field<>2)and(input_stack[base_ptr]. loc_field=0)and(input_stack[base_ptr].state_field=0)do base_ptr:= base_ptr-1; if(input_stack[base_ptr].index_field<>2)or(input_stack[base_ptr]. loc_field<>0)or(input_stack[base_ptr].state_field<>0)then fatal_error( 605);if cur_group=6 then begin end_graf;if fin_col then fin_row; end else off_save;end;{:1132}{1136:}procedure cs_error; begin begin if interaction=3 then;print_nl(264);print(802);end; print_esc(509);begin help_ptr:=1;help_line[0]:=1152;end;error;end; {:1136}{1137:}procedure push_math(c:group_code);begin push_nest; cur_list.mode_field:=-203;cur_list.aux_field.int:=0;new_save_level(c); end;{:1137}{1139:}{1469:}procedure just_copy(p,h,t:halfword); label 40,45;var r:halfword;words:0..5; begin while p<>0 do begin words:=1; if(p>=hi_mem_min)then r:=get_avail else case mem[p].hh.b0 of 0,1:begin r :=get_node(7);mem[r+6]:=mem[p+6];mem[r+5]:=mem[p+5];words:=5; mem[r+5].hh.rh:=0;end;2:begin r:=get_node(4);words:=4;end; 6:begin r:=get_avail;mem[r]:=mem[p+1];goto 40;end; 11,9:begin r:=get_node(2);words:=2;end;10:begin r:=get_node(2); mem[mem[p+1].hh.lh].hh.rh:=mem[mem[p+1].hh.lh].hh.rh+1; mem[r+1].hh.lh:=mem[p+1].hh.lh;mem[r+1].hh.rh:=0;end; 8:{1358:}case mem[p].hh.b1 of 0:begin r:=get_node(3);words:=3;end; 1,3:begin r:=get_node(2); mem[mem[p+1].hh.rh].hh.lh:=mem[mem[p+1].hh.rh].hh.lh+1;words:=2;end; 2,4:begin r:=get_node(2);words:=2;end;others:confusion(1321)end{:1358}; others:goto 45 end;while words>0 do begin words:=words-1; mem[r+words]:=mem[p+words];end;40:mem[h].hh.rh:=r;h:=r; 45:p:=mem[p].hh.rh;end;mem[h].hh.rh:=t;end; {:1469}{1474:}procedure just_reverse(p:halfword);label 40,30; var l:halfword;t:halfword;q:halfword;m,n:halfword;begin m:=0;n:=0; if mem[7999997].hh.rh=0 then begin just_copy(mem[p].hh.rh,7999997,0); q:=mem[7999997].hh.rh;end else begin q:=mem[p].hh.rh;mem[p].hh.rh:=0; flush_node_list(mem[7999997].hh.rh);end;t:=new_edge(cur_dir,0);l:=t; cur_dir:=1-cur_dir;while q<>0 do if(q>=hi_mem_min)then repeat p:=q; q:=mem[p].hh.rh;mem[p].hh.rh:=l;l:=p; until not(q>=hi_mem_min)else begin p:=q;q:=mem[p].hh.rh; if mem[p].hh.b0=9 then{1475:}if odd(mem[p].hh.b1)then if mem[LR_ptr].hh. lh<>(4*(mem[p].hh.b1 div 4)+3)then begin mem[p].hh.b0:=11; LR_problems:=LR_problems+1;end else begin begin temp_ptr:=LR_ptr; LR_ptr:=mem[temp_ptr].hh.rh;begin mem[temp_ptr].hh.rh:=avail; avail:=temp_ptr;{dyn_used:=dyn_used-1;}end;end;if n>0 then begin n:=n-1; mem[p].hh.b1:=mem[p].hh.b1-1; end else begin if m>0 then m:=m-1 else goto 40;mem[p].hh.b0:=11;end; end else begin begin temp_ptr:=get_avail; mem[temp_ptr].hh.lh:=(4*(mem[p].hh.b1 div 4)+3); mem[temp_ptr].hh.rh:=LR_ptr;LR_ptr:=temp_ptr;end; if(n>0)or((mem[p].hh.b1 div 8)<>cur_dir)then begin n:=n+1; mem[p].hh.b1:=mem[p].hh.b1+1;end else begin mem[p].hh.b0:=11;m:=m+1;end; end{:1475};mem[p].hh.rh:=l;l:=p;end;goto 30; 40:mem[t+1].int:=mem[p+1].int;mem[t].hh.rh:=q;free_node(p,2); 30:mem[7999997].hh.rh:=l;end;{:1474}procedure init_math; label 21,40,45,30;var w:scaled;j:halfword;x:integer;l:scaled;s:scaled; p:halfword;q:halfword;f:internal_font_number;n:integer;v:scaled; d:scaled;begin get_token; if(cur_cmd=3)and(cur_list.mode_field>0)then{1146:}begin j:=0; w:=-1073741823; if cur_list.head_field=cur_list.tail_field then{1468:}begin pop_nest; {1467:}if cur_list.eTeX_aux_field=0 then x:=0 else if mem[cur_list. eTeX_aux_field].hh.lh>=8 then x:=-1 else x:=1{:1467}; end{:1468}else begin line_break(true); {1147:}{1470:}if(eTeX_mode=1)then{1476:}begin if eqtb[600790].hh.rh=0 then j:=new_kern(0)else j:=new_param_glue(8); if eqtb[600789].hh.rh=0 then p:=new_kern(0)else p:=new_param_glue(7); mem[p].hh.rh:=j;j:=new_null_box;mem[j+1].int:=mem[just_box+1].int; mem[j+4].int:=mem[just_box+4].int;mem[j+5].hh.rh:=p; mem[j+5].hh.b1:=mem[just_box+5].hh.b1; mem[j+5].hh.b0:=mem[just_box+5].hh.b0;mem[j+6].gr:=mem[just_box+6].gr; end{:1476};v:=mem[just_box+4].int; {1467:}if cur_list.eTeX_aux_field=0 then x:=0 else if mem[cur_list. eTeX_aux_field].hh.lh>=8 then x:=-1 else x:=1{:1467}; if x>=0 then begin p:=mem[just_box+5].hh.rh;mem[7999997].hh.rh:=0; end else begin v:=-v-mem[just_box+1].int;p:=new_math(0,6); mem[7999997].hh.rh:=p;just_copy(mem[just_box+5].hh.rh,p,new_math(0,7)); cur_dir:=1;end;v:=v+2*font_info[6+param_base[eqtb[601839].hh.rh]].int; if(eqtb[603232].int>0)then{1442:}begin temp_ptr:=get_avail; mem[temp_ptr].hh.lh:=0;mem[temp_ptr].hh.rh:=LR_ptr;LR_ptr:=temp_ptr; end{:1442}{:1470}; while p<>0 do begin{1148:}21:if(p>=hi_mem_min)then begin f:=mem[p].hh.b0 ; d:=font_info[width_base[f]+font_info[char_base[f]+mem[p].hh.b1].qqqq.b0] .int;goto 40;end;case mem[p].hh.b0 of 0,1,2:begin d:=mem[p+1].int; goto 40;end;6:{653:}begin mem[7999988]:=mem[p+1]; mem[7999988].hh.rh:=mem[p].hh.rh;p:=7999988;goto 21;end{:653}; 11:d:=mem[p+1].int;{1472:}9:begin d:=mem[p+1].int; if(eqtb[603232].int>0)then{1473:}if odd(mem[p].hh.b1)then begin if mem[ LR_ptr].hh.lh=(4*(mem[p].hh.b1 div 4)+3)then begin temp_ptr:=LR_ptr; LR_ptr:=mem[temp_ptr].hh.rh;begin mem[temp_ptr].hh.rh:=avail; avail:=temp_ptr;{dyn_used:=dyn_used-1;}end; end else if mem[p].hh.b1>4 then begin w:=1073741823;goto 30; end end else begin begin temp_ptr:=get_avail; mem[temp_ptr].hh.lh:=(4*(mem[p].hh.b1 div 4)+3); mem[temp_ptr].hh.rh:=LR_ptr;LR_ptr:=temp_ptr;end; if(mem[p].hh.b1 div 8)<>cur_dir then begin just_reverse(p);p:=7999997; end;end{:1473}else if mem[p].hh.b1>=4 then begin w:=1073741823;goto 30; end;end;14:begin d:=mem[p+1].int;cur_dir:=mem[p].hh.b1;end; {:1472}10:{1149:}begin q:=mem[p+1].hh.lh;d:=mem[q+1].int; if mem[just_box+5].hh.b0=1 then begin if(mem[just_box+5].hh.b1=mem[q].hh .b0)and(mem[q+2].int<>0)then v:=1073741823; end else if mem[just_box+5].hh.b0=2 then begin if(mem[just_box+5].hh.b1= mem[q].hh.b1)and(mem[q+3].int<>0)then v:=1073741823;end; if mem[p].hh.b1>=100 then goto 40;end{:1149};8:{1362:}d:=0{:1362}; others:d:=0 end{:1148};if v<1073741823 then v:=v+d;goto 45; 40:if v<1073741823 then begin v:=v+d;w:=v;end else begin w:=1073741823; goto 30;end;45:p:=mem[p].hh.rh;end; 30:{1471:}if(eqtb[603232].int>0)then begin while LR_ptr<>0 do begin temp_ptr:=LR_ptr;LR_ptr:=mem[temp_ptr].hh.rh; begin mem[temp_ptr].hh.rh:=avail;avail:=temp_ptr;{dyn_used:=dyn_used-1;} end;end;if LR_problems<>0 then begin w:=1073741823;LR_problems:=0;end; end;cur_dir:=0;flush_node_list(mem[7999997].hh.rh){:1471}{:1147};end; {1150:}if eqtb[601312].hh.rh=0 then if(eqtb[603762].int<>0)and(((eqtb[ 603209].int>=0)and(cur_list.pg_field+2>eqtb[603209].int))or(cur_list. pg_field+1<-eqtb[603209].int))then begin l:=eqtb[603748].int-abs(eqtb[ 603762].int);if eqtb[603762].int>0 then s:=eqtb[603762].int else s:=0; end else begin l:=eqtb[603748].int;s:=0; end else begin n:=mem[eqtb[601312].hh.rh].hh.lh; if cur_list.pg_field+2>=n then p:=eqtb[601312].hh.rh+2*n else p:=eqtb[ 601312].hh.rh+2*(cur_list.pg_field+2);s:=mem[p-1].int;l:=mem[p].int; end{:1150};push_math(15);cur_list.mode_field:=203; eq_word_define(603212,-1);eq_word_define(603758,w); cur_list.eTeX_aux_field:=j;if(eTeX_mode=1)then eq_word_define(603228,x); eq_word_define(603759,l);eq_word_define(603760,s); if eqtb[601316].hh.rh<>0 then begin_token_list(eqtb[601316].hh.rh,9); if nest_ptr=1 then build_page;end{:1146}else begin back_input; {1140:}begin push_math(15);eq_word_define(603212,-1); if eqtb[601315].hh.rh<>0 then begin_token_list(eqtb[601315].hh.rh,8); end{:1140};end;end;{:1139}{1143:}procedure start_eq_no; begin save_stack[save_ptr+0].int:=cur_chr;save_ptr:=save_ptr+1; {1140:}begin push_math(15);eq_word_define(603212,-1); if eqtb[601315].hh.rh<>0 then begin_token_list(eqtb[601315].hh.rh,8); end{:1140};end;{:1143}{1152:}procedure scan_math(p:halfword); label 20,21,10;var c:integer;begin 20:{404:}repeat get_x_token; until(cur_cmd<>10)and(cur_cmd<>0){:404}; 21:case cur_cmd of 11,12,68:begin c:=eqtb[602912+cur_chr].hh.rh-0; if c=32768 then begin{1153:}begin cur_cs:=cur_chr+1; cur_cmd:=eqtb[cur_cs].hh.b0;cur_chr:=eqtb[cur_cs].hh.rh;x_token; back_input;end{:1153};goto 20;end;end;16:begin scan_char_num; cur_chr:=cur_val;cur_cmd:=68;goto 21;end;17:begin scan_fifteen_bit_int; c:=cur_val;end;69:c:=cur_chr;15:begin scan_twenty_seven_bit_int; c:=cur_val div 4096;end;others:{1154:}begin back_input;scan_left_brace; save_stack[save_ptr+0].int:=p;save_ptr:=save_ptr+1;push_math(9);goto 10; end{:1154}end;mem[p].hh.rh:=1;mem[p].hh.b1:=c mod 256+0; if(c>=28672)and((eqtb[603212].int>=0)and(eqtb[603212].int<16))then mem[p ].hh.b0:=eqtb[603212].int else mem[p].hh.b0:=(c div 256)mod 16;10:end; {:1152}{1156:}procedure set_math_char(c:integer);var p:halfword; begin if c>=32768 then{1153:}begin cur_cs:=cur_chr+1; cur_cmd:=eqtb[cur_cs].hh.b0;cur_chr:=eqtb[cur_cs].hh.rh;x_token; back_input;end{:1153}else begin p:=new_noad;mem[p+1].hh.rh:=1; mem[p+1].hh.b1:=c mod 256+0;mem[p+1].hh.b0:=(c div 256)mod 16; if c>=28672 then begin if((eqtb[603212].int>=0)and(eqtb[603212].int<16)) then mem[p+1].hh.b0:=eqtb[603212].int;mem[p].hh.b0:=16; end else mem[p].hh.b0:=16+(c div 4096); mem[cur_list.tail_field].hh.rh:=p;cur_list.tail_field:=p;end;end; {:1156}{1160:}procedure math_limit_switch;label 10; begin if cur_list.head_field<>cur_list.tail_field then if mem[cur_list. tail_field].hh.b0=17 then begin mem[cur_list.tail_field].hh.b1:=cur_chr; goto 10;end;begin if interaction=3 then;print_nl(264);print(1156);end; begin help_ptr:=1;help_line[0]:=1157;end;error;10:end; {:1160}{1161:}procedure scan_delimiter(p:halfword;r:boolean); begin if r then scan_twenty_seven_bit_int else begin{404:}repeat get_x_token;until(cur_cmd<>10)and(cur_cmd<>0){:404}; case cur_cmd of 11,12:cur_val:=eqtb[603489+cur_chr].int; 15:scan_twenty_seven_bit_int;others:cur_val:=-1 end;end; if cur_val<0 then{1162:}begin begin if interaction=3 then;print_nl(264); print(1158);end;begin help_ptr:=6;help_line[5]:=1159;help_line[4]:=1160; help_line[3]:=1161;help_line[2]:=1162;help_line[1]:=1163; help_line[0]:=1164;end;back_error;cur_val:=0;end{:1162}; mem[p].qqqq.b0:=(cur_val div 1048576)mod 16; mem[p].qqqq.b1:=(cur_val div 4096)mod 256+0; mem[p].qqqq.b2:=(cur_val div 256)mod 16; mem[p].qqqq.b3:=cur_val mod 256+0;end; {:1161}{1164:}procedure math_radical; begin begin mem[cur_list.tail_field].hh.rh:=get_node(5); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.b0:=24;mem[cur_list.tail_field].hh.b1:=0; mem[cur_list.tail_field+1].hh:=empty_field; mem[cur_list.tail_field+3].hh:=empty_field; mem[cur_list.tail_field+2].hh:=empty_field; scan_delimiter(cur_list.tail_field+4,true); scan_math(cur_list.tail_field+1);end;{:1164}{1166:}procedure math_ac; begin if cur_cmd=45 then{1167:}begin begin if interaction=3 then; print_nl(264);print(1165);end;print_esc(527);print(1166); begin help_ptr:=2;help_line[1]:=1167;help_line[0]:=1168;end;error; end{:1167};begin mem[cur_list.tail_field].hh.rh:=get_node(5); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.b0:=28;mem[cur_list.tail_field].hh.b1:=0; mem[cur_list.tail_field+1].hh:=empty_field; mem[cur_list.tail_field+3].hh:=empty_field; mem[cur_list.tail_field+2].hh:=empty_field; mem[cur_list.tail_field+4].hh.rh:=1;scan_fifteen_bit_int; mem[cur_list.tail_field+4].hh.b1:=cur_val mod 256+0; if(cur_val>=28672)and((eqtb[603212].int>=0)and(eqtb[603212].int<16))then mem[cur_list.tail_field+4].hh.b0:=eqtb[603212].int else mem[cur_list. tail_field+4].hh.b0:=(cur_val div 256)mod 16; scan_math(cur_list.tail_field+1);end; {:1166}{1173:}procedure append_choices; begin begin mem[cur_list.tail_field].hh.rh:=new_choice; cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; save_ptr:=save_ptr+1;save_stack[save_ptr-1].int:=0;push_math(13); scan_left_brace;end; {:1173}{1175:}{1185:}function fin_mlist(p:halfword):halfword; var q:halfword; begin if cur_list.aux_field.int<>0 then{1186:}begin mem[cur_list. aux_field.int+3].hh.rh:=3; mem[cur_list.aux_field.int+3].hh.lh:=mem[cur_list.head_field].hh.rh; if p=0 then q:=cur_list.aux_field.int else begin q:=mem[cur_list. aux_field.int+2].hh.lh; if(mem[q].hh.b0<>30)or(cur_list.eTeX_aux_field=0)then confusion(902); mem[cur_list.aux_field.int+2].hh.lh:=mem[cur_list.eTeX_aux_field].hh.rh; mem[cur_list.eTeX_aux_field].hh.rh:=cur_list.aux_field.int; mem[cur_list.aux_field.int].hh.rh:=p;end; end{:1186}else begin mem[cur_list.tail_field].hh.rh:=p; q:=mem[cur_list.head_field].hh.rh;end;pop_nest;fin_mlist:=q;end; {:1185}procedure build_choices;label 10;var p:halfword;begin unsave; p:=fin_mlist(0); case save_stack[save_ptr-1].int of 0:mem[cur_list.tail_field+1].hh.lh:=p ;1:mem[cur_list.tail_field+1].hh.rh:=p; 2:mem[cur_list.tail_field+2].hh.lh:=p; 3:begin mem[cur_list.tail_field+2].hh.rh:=p;save_ptr:=save_ptr-1; goto 10;end;end; save_stack[save_ptr-1].int:=save_stack[save_ptr-1].int+1;push_math(13); scan_left_brace;10:end;{:1175}{1177:}procedure sub_sup; var t:small_number;p:halfword;begin t:=0;p:=0; if cur_list.tail_field<>cur_list.head_field then if(mem[cur_list. tail_field].hh.b0>=16)and(mem[cur_list.tail_field].hh.b0<30)then begin p :=cur_list.tail_field+2+cur_cmd-7;t:=mem[p].hh.rh;end; if(p=0)or(t<>0)then{1178:}begin begin mem[cur_list.tail_field].hh.rh:= new_noad;cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; p:=cur_list.tail_field+2+cur_cmd-7; if t<>0 then begin if cur_cmd=7 then begin begin if interaction=3 then; print_nl(264);print(1169);end;begin help_ptr:=1;help_line[0]:=1170;end; end else begin begin if interaction=3 then;print_nl(264);print(1171); end;begin help_ptr:=1;help_line[0]:=1172;end;end;error;end;end{:1178}; scan_math(p);end;{:1177}{1182:}procedure math_fraction; var c:small_number;begin c:=cur_chr; if cur_list.aux_field.int<>0 then{1184:}begin if c>=3 then begin scan_delimiter(7999988,false);scan_delimiter(7999988,false);end; if c mod 3=0 then scan_dimen(false,false,false); begin if interaction=3 then;print_nl(264);print(1179);end; begin help_ptr:=3;help_line[2]:=1180;help_line[1]:=1181; help_line[0]:=1182;end;error; end{:1184}else begin cur_list.aux_field.int:=get_node(6); mem[cur_list.aux_field.int].hh.b0:=25; mem[cur_list.aux_field.int].hh.b1:=0; mem[cur_list.aux_field.int+2].hh.rh:=3; mem[cur_list.aux_field.int+2].hh.lh:=mem[cur_list.head_field].hh.rh; mem[cur_list.aux_field.int+3].hh:=empty_field; mem[cur_list.aux_field.int+4].qqqq:=null_delimiter; mem[cur_list.aux_field.int+5].qqqq:=null_delimiter; mem[cur_list.head_field].hh.rh:=0; cur_list.tail_field:=cur_list.head_field; {1183:}if c>=3 then begin scan_delimiter(cur_list.aux_field.int+4,false) ;scan_delimiter(cur_list.aux_field.int+5,false);end; case c mod 3 of 0:begin scan_dimen(false,false,false); mem[cur_list.aux_field.int+1].int:=cur_val;end; 1:mem[cur_list.aux_field.int+1].int:=1073741824; 2:mem[cur_list.aux_field.int+1].int:=0;end{:1183};end;end; {:1182}{1192:}procedure math_left_right;var t:small_number;p:halfword; q:halfword;begin t:=cur_chr; if(t<>30)and(cur_group<>16)then{1193:}begin if cur_group=15 then begin scan_delimiter(7999988,false);begin if interaction=3 then;print_nl(264); print(802);end;if t=1 then begin print_esc(903);begin help_ptr:=1; help_line[0]:=1183;end;end else begin print_esc(902);begin help_ptr:=1; help_line[0]:=1184;end;end;error;end else off_save; end{:1193}else begin p:=new_noad;mem[p].hh.b0:=t; scan_delimiter(p+1,false);if t=1 then begin mem[p].hh.b0:=31; mem[p].hh.b1:=1;end;if t=30 then q:=p else begin q:=fin_mlist(p);unsave; end;if t<>31 then begin push_math(16);mem[cur_list.head_field].hh.rh:=q; cur_list.tail_field:=p;cur_list.eTeX_aux_field:=p; end else begin begin mem[cur_list.tail_field].hh.rh:=new_noad; cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.b0:=23;mem[cur_list.tail_field+1].hh.rh:=3; mem[cur_list.tail_field+1].hh.lh:=q;end;end;end; {:1192}{1195:}{1480:}procedure app_display(j,b:halfword;d:scaled); var z:scaled;s:scaled;e:scaled;x:integer;p,q,r,t,u:halfword; begin s:=eqtb[603760].int;x:=eqtb[603228].int; if x=0 then mem[b+4].int:=s+d else begin z:=eqtb[603759].int;p:=b; {1481:}if x>0 then e:=z-d-mem[p+1].int else begin e:=d; d:=z-e-mem[p+1].int;end;if j<>0 then begin b:=copy_node_list(j); mem[b+3].int:=mem[p+3].int;mem[b+2].int:=mem[p+2].int;s:=s-mem[b+4].int; d:=d+s;e:=e+mem[b+1].int-z-s;end; if(mem[p].hh.b1-0)=2 then q:=p else begin r:=mem[p+5].hh.rh; free_node(p,7);if r=0 then confusion(1393);if x>0 then begin p:=r; repeat q:=r;r:=mem[r].hh.rh;until r=0;end else begin p:=0;q:=r; repeat t:=mem[r].hh.rh;mem[r].hh.rh:=p;p:=r;r:=t;until r=0;end; end{:1481};{1482:}if j=0 then begin r:=new_kern(0);t:=new_kern(0); end else begin r:=mem[b+5].hh.rh;t:=mem[r].hh.rh;end;u:=new_math(0,3); if mem[t].hh.b0=10 then begin j:=new_skip_param(8);mem[q].hh.rh:=j; mem[j].hh.rh:=u;j:=mem[t+1].hh.lh;mem[temp_ptr].hh.b0:=mem[j].hh.b0; mem[temp_ptr].hh.b1:=mem[j].hh.b1;mem[temp_ptr+1].int:=e-mem[j+1].int; mem[temp_ptr+2].int:=-mem[j+2].int;mem[temp_ptr+3].int:=-mem[j+3].int; mem[u].hh.rh:=t;end else begin mem[t+1].int:=e;mem[t].hh.rh:=u; mem[q].hh.rh:=t;end;u:=new_math(0,2); if mem[r].hh.b0=10 then begin j:=new_skip_param(7);mem[u].hh.rh:=j; mem[j].hh.rh:=p;j:=mem[r+1].hh.lh;mem[temp_ptr].hh.b0:=mem[j].hh.b0; mem[temp_ptr].hh.b1:=mem[j].hh.b1;mem[temp_ptr+1].int:=d-mem[j+1].int; mem[temp_ptr+2].int:=-mem[j+2].int;mem[temp_ptr+3].int:=-mem[j+3].int; mem[r].hh.rh:=u;end else begin mem[r+1].int:=d;mem[r].hh.rh:=p; mem[u].hh.rh:=r;if j=0 then begin b:=hpack(u,0,1);mem[b+4].int:=s; end else mem[b+5].hh.rh:=u;end{:1482};end;append_to_vlist(b);end; {:1480}procedure after_math;var l:boolean;danger:boolean;m:integer; p:halfword;a:halfword;{1199:}b:halfword;w:scaled;z:scaled;e:scaled; q:scaled;d:scaled;s:scaled;g1,g2:small_number;r:halfword;t:halfword; {:1199}{1477:}j:halfword;{:1477}begin danger:=false; {1478:}if cur_list.mode_field=203 then j:=cur_list.eTeX_aux_field{:1478} ; {1196:}if(font_params[eqtb[601842].hh.rh]<22)or(font_params[eqtb[601858] .hh.rh]<22)or(font_params[eqtb[601874].hh.rh]<22)then begin begin if interaction=3 then;print_nl(264);print(1185);end;begin help_ptr:=3; help_line[2]:=1186;help_line[1]:=1187;help_line[0]:=1188;end;error; flush_math;danger:=true; end else if(font_params[eqtb[601843].hh.rh]<13)or(font_params[eqtb[ 601859].hh.rh]<13)or(font_params[eqtb[601875].hh.rh]<13)then begin begin if interaction=3 then;print_nl(264);print(1189);end;begin help_ptr:=3; help_line[2]:=1190;help_line[1]:=1191;help_line[0]:=1192;end;error; flush_math;danger:=true;end{:1196};m:=cur_list.mode_field;l:=false; p:=fin_mlist(0); if cur_list.mode_field=-m then begin{1198:}begin get_x_token; if cur_cmd<>3 then begin begin if interaction=3 then;print_nl(264); print(1193);end;begin help_ptr:=2;help_line[1]:=1194;help_line[0]:=1195; end;back_error;end;end{:1198};cur_mlist:=p;cur_style:=2; mlist_penalties:=false;mlist_to_hlist;a:=hpack(mem[7999997].hh.rh,0,1); mem[a].hh.b1:=2;unsave;save_ptr:=save_ptr-1; if save_stack[save_ptr+0].int=1 then l:=true;danger:=false; {1478:}if cur_list.mode_field=203 then j:=cur_list.eTeX_aux_field{:1478} ; {1196:}if(font_params[eqtb[601842].hh.rh]<22)or(font_params[eqtb[601858] .hh.rh]<22)or(font_params[eqtb[601874].hh.rh]<22)then begin begin if interaction=3 then;print_nl(264);print(1185);end;begin help_ptr:=3; help_line[2]:=1186;help_line[1]:=1187;help_line[0]:=1188;end;error; flush_math;danger:=true; end else if(font_params[eqtb[601843].hh.rh]<13)or(font_params[eqtb[ 601859].hh.rh]<13)or(font_params[eqtb[601875].hh.rh]<13)then begin begin if interaction=3 then;print_nl(264);print(1189);end;begin help_ptr:=3; help_line[2]:=1190;help_line[1]:=1191;help_line[0]:=1192;end;error; flush_math;danger:=true;end{:1196};m:=cur_list.mode_field; p:=fin_mlist(0);end else a:=0; if m<0 then{1197:}begin begin mem[cur_list.tail_field].hh.rh:=new_math( eqtb[603746].int,0);cur_list.tail_field:=mem[cur_list.tail_field].hh.rh; end;cur_mlist:=p;cur_style:=2;mlist_penalties:=(cur_list.mode_field>0); mlist_to_hlist;mem[cur_list.tail_field].hh.rh:=mem[7999997].hh.rh; while mem[cur_list.tail_field].hh.rh<>0 do cur_list.tail_field:=mem[ cur_list.tail_field].hh.rh; begin mem[cur_list.tail_field].hh.rh:=new_math(eqtb[603746].int,1); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; cur_list.aux_field.hh.lh:=1000;unsave; end{:1197}else begin if a=0 then{1198:}begin get_x_token; if cur_cmd<>3 then begin begin if interaction=3 then;print_nl(264); print(1193);end;begin help_ptr:=2;help_line[1]:=1194;help_line[0]:=1195; end;back_error;end;end{:1198};{1200:}cur_mlist:=p;cur_style:=0; mlist_penalties:=false;mlist_to_hlist;p:=mem[7999997].hh.rh; adjust_tail:=7999995;b:=hpack(p,0,1);p:=mem[b+5].hh.rh;t:=adjust_tail; adjust_tail:=0;w:=mem[b+1].int;z:=eqtb[603759].int;s:=eqtb[603760].int; if eqtb[603228].int<0 then s:=-s-z;if(a=0)or danger then begin e:=0; q:=0;end else begin e:=mem[a+1].int; q:=e+font_info[6+param_base[eqtb[601842].hh.rh]].int;end; if w+q>z then{1202:}begin if(e<>0)and((w-total_shrink[0]+q<=z)or( total_shrink[1]<>0)or(total_shrink[2]<>0)or(total_shrink[3]<>0))then begin free_node(b,7);b:=hpack(p,z-q,0);end else begin e:=0; if w>z then begin free_node(b,7);b:=hpack(p,z,0);end;end; w:=mem[b+1].int;end{:1202};{1203:}mem[b].hh.b1:=2;d:=half(z-w); if(e>0)and(d<2*e)then begin d:=half(z-w-e); if p<>0 then if not(p>=hi_mem_min)then if mem[p].hh.b0=10 then d:=0; end{:1203}; {1204:}begin mem[cur_list.tail_field].hh.rh:=new_penalty(eqtb[603179]. int);cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; if(d+s<=eqtb[603758].int)or l then begin g1:=3;g2:=4; end else begin g1:=5;g2:=6;end; if l and(e=0)then begin app_display(j,a,0); begin mem[cur_list.tail_field].hh.rh:=new_penalty(10000); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; end else begin mem[cur_list.tail_field].hh.rh:=new_param_glue(g1); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end{:1204}; {1205:}if e<>0 then begin r:=new_kern(z-w-e-d); if l then begin mem[a].hh.rh:=r;mem[r].hh.rh:=b;b:=a;d:=0; end else begin mem[b].hh.rh:=r;mem[r].hh.rh:=a;end;b:=hpack(b,0,1);end; app_display(j,b,d){:1205}; {1206:}if(a<>0)and(e=0)and not l then begin begin mem[cur_list. tail_field].hh.rh:=new_penalty(10000); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; app_display(j,a,z-mem[a+1].int);g2:=0;end; if t<>7999995 then begin mem[cur_list.tail_field].hh.rh:=mem[7999995].hh .rh;cur_list.tail_field:=t;end; begin mem[cur_list.tail_field].hh.rh:=new_penalty(eqtb[603180].int); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; if g2>0 then begin mem[cur_list.tail_field].hh.rh:=new_param_glue(g2); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end{:1206}; {1479:}flush_node_list(j){:1479};resume_after_display{:1200};end;end; {:1195}{1201:}procedure resume_after_display; begin if cur_group<>15 then confusion(1196);unsave; cur_list.pg_field:=cur_list.pg_field+3;push_nest; cur_list.mode_field:=102;cur_list.aux_field.hh.lh:=1000; if eqtb[603218].int<=0 then cur_lang:=0 else if eqtb[603218].int>255 then cur_lang:=0 else cur_lang:=eqtb[603218].int; cur_list.aux_field.hh.rh:=cur_lang; cur_list.pg_field:=(norm_min(eqtb[603219].int)*64+norm_min(eqtb[603220]. int))*65536+cur_lang;{443:}begin get_x_token; if cur_cmd<>10 then back_input;end{:443};if nest_ptr=1 then build_page; end;{:1201}{1212:}{1216:}procedure get_r_token;label 20; begin 20:repeat get_token;until cur_tok<>2592; if(cur_cs=0)or(cur_cs>600514)then begin begin if interaction=3 then; print_nl(264);print(1214);end;begin help_ptr:=5;help_line[4]:=1215; help_line[3]:=1216;help_line[2]:=1217;help_line[1]:=1218; help_line[0]:=1219;end;if cur_cs=0 then back_input;cur_tok:=604609; ins_error;goto 20;end;end;{:1216}{1230:}procedure trap_zero_glue; begin if(mem[cur_val+1].int=0)and(mem[cur_val+2].int=0)and(mem[cur_val+3 ].int=0)then begin mem[0].hh.rh:=mem[0].hh.rh+1; delete_glue_ref(cur_val);cur_val:=0;end;end; {:1230}{1237:}procedure do_register_command(a:small_number);label 40,10; var l,q,r,s:halfword;p:0..3;e:boolean;w:integer;begin q:=cur_cmd; e:=false;{1238:}begin if q<>89 then begin get_x_token; if(cur_cmd>=73)and(cur_cmd<=76)then begin l:=cur_chr;p:=cur_cmd-73; goto 40;end;if cur_cmd<>89 then begin begin if interaction=3 then; print_nl(264);print(695);end;print_cmd_chr(cur_cmd,cur_chr);print(696); print_cmd_chr(q,0);begin help_ptr:=1;help_line[0]:=1239;end;error; goto 10;end;end;if(cur_chr<0)or(cur_chr>19)then begin l:=cur_chr; p:=(mem[l].hh.b0 div 16);e:=true;end else begin p:=cur_chr-0; scan_register_num; if cur_val>255 then begin find_sa_element(p,cur_val,true);l:=cur_ptr; e:=true;end else case p of 0:l:=cur_val+603233;1:l:=cur_val+603766; 2:l:=cur_val+600800;3:l:=cur_val+601056;end;end;end; 40:if p<2 then if e then w:=mem[l+2].int else w:=eqtb[l].int else if e then s:=mem[l+1].hh.rh else s:=eqtb[l].hh.rh{:1238}; if q=89 then scan_optional_equals else if scan_keyword(1235)then; arith_error:=false; if q<91 then{1239:}if p<2 then begin if p=0 then scan_int else scan_dimen(false,false,false);if q=90 then cur_val:=cur_val+w; end else begin scan_glue(p); if q=90 then{1240:}begin q:=new_spec(cur_val);r:=s; delete_glue_ref(cur_val);mem[q+1].int:=mem[q+1].int+mem[r+1].int; if mem[q+2].int=0 then mem[q].hh.b0:=0; if mem[q].hh.b0=mem[r].hh.b0 then mem[q+2].int:=mem[q+2].int+mem[r+2]. int else if(mem[q].hh.b00)then begin mem [q+2].int:=mem[r+2].int;mem[q].hh.b0:=mem[r].hh.b0;end; if mem[q+3].int=0 then mem[q].hh.b1:=0; if mem[q].hh.b1=mem[r].hh.b1 then mem[q+3].int:=mem[q+3].int+mem[r+3]. int else if(mem[q].hh.b10)then begin mem [q+3].int:=mem[r+3].int;mem[q].hh.b1:=mem[r].hh.b1;end;cur_val:=q; end{:1240};end{:1239}else{1241:}begin scan_int; if p<2 then if q=91 then if p=0 then cur_val:=mult_and_add(w,cur_val,0, 2147483647)else cur_val:=mult_and_add(w,cur_val,0,1073741823)else cur_val:=x_over_n(w,cur_val)else begin r:=new_spec(s); if q=91 then begin mem[r+1].int:=mult_and_add(mem[s+1].int,cur_val,0, 1073741823); mem[r+2].int:=mult_and_add(mem[s+2].int,cur_val,0,1073741823); mem[r+3].int:=mult_and_add(mem[s+3].int,cur_val,0,1073741823); end else begin mem[r+1].int:=x_over_n(mem[s+1].int,cur_val); mem[r+2].int:=x_over_n(mem[s+2].int,cur_val); mem[r+3].int:=x_over_n(mem[s+3].int,cur_val);end;cur_val:=r;end; end{:1241};if arith_error then begin begin if interaction=3 then; print_nl(264);print(1236);end;begin help_ptr:=2;help_line[1]:=1237; help_line[0]:=1238;end;if p>=2 then delete_glue_ref(cur_val);error; goto 10;end; if p<2 then if e then if(a>=4)then gsa_w_def(l,cur_val)else sa_w_def(l, cur_val)else if(a>=4)then geq_word_define(l,cur_val)else eq_word_define( l,cur_val)else begin trap_zero_glue; if e then if(a>=4)then gsa_def(l,cur_val)else sa_def(l,cur_val)else if(a >=4)then geq_define(l,117,cur_val)else eq_define(l,117,cur_val);end; 10:end;{:1237}{1244:}procedure alter_aux;var c:halfword; begin if cur_chr<>abs(cur_list.mode_field)then report_illegal_case else begin c:=cur_chr;scan_optional_equals; if c=1 then begin scan_dimen(false,false,false); cur_list.aux_field.int:=cur_val;end else begin scan_int; if(cur_val<=0)or(cur_val>32767)then begin begin if interaction=3 then; print_nl(264);print(1242);end;begin help_ptr:=1;help_line[0]:=1243;end; int_error(cur_val);end else cur_list.aux_field.hh.lh:=cur_val;end;end; end;{:1244}{1245:}procedure alter_prev_graf;var p:0..nest_size; begin nest[nest_ptr]:=cur_list;p:=nest_ptr; while abs(nest[p].mode_field)<>1 do p:=p-1;scan_optional_equals; scan_int;if cur_val<0 then begin begin if interaction=3 then; print_nl(264);print(981);end;print_esc(537);begin help_ptr:=1; help_line[0]:=1244;end;int_error(cur_val); end else begin nest[p].pg_field:=cur_val;cur_list:=nest[nest_ptr];end; end;{:1245}{1246:}procedure alter_page_so_far;var c:0..7; begin c:=cur_chr;scan_optional_equals;scan_dimen(false,false,false); page_so_far[c]:=cur_val;end;{:1246}{1247:}procedure alter_integer; var c:small_number;begin c:=cur_chr;scan_optional_equals;scan_int; if c=0 then dead_cycles:=cur_val{1428:}else if c=2 then begin if(cur_val <0)or(cur_val>3)then begin begin if interaction=3 then;print_nl(264); print(1378);end;begin help_ptr:=2;help_line[1]:=1379;help_line[0]:=1380; end;int_error(cur_val);end else begin cur_chr:=cur_val;new_interaction; end;end{:1428}else insert_penalties:=cur_val;end; {:1247}{1248:}procedure alter_box_dimen;var c:small_number;b:halfword; begin c:=cur_chr;scan_register_num; if cur_val<256 then b:=eqtb[601583+cur_val].hh.rh else begin find_sa_element(4,cur_val,false); if cur_ptr=0 then b:=0 else b:=mem[cur_ptr+1].hh.rh;end; scan_optional_equals;scan_dimen(false,false,false); if b<>0 then mem[b+c].int:=cur_val;end; {:1248}{1258:}procedure new_font(a:small_number);label 50; var u:halfword;s:scaled;f:internal_font_number;t:str_number; old_setting:0..21;flushable_string:str_number; begin if job_name=0 then open_log_file;get_r_token;u:=cur_cs; if u>=514 then t:=hash[u].rh else if u>=257 then if u=513 then t:=1248 else t:=u-257 else begin old_setting:=selector;selector:=21;print(1248); print(u-1);selector:=old_setting; begin if pool_ptr+1>pool_size then overflow(259,pool_size-init_pool_ptr) ;end;t:=make_string;end; if(a>=4)then geq_define(u,87,0)else eq_define(u,87,0); scan_optional_equals;scan_file_name;{1259:}name_in_progress:=true; if scan_keyword(1249)then{1260:}begin scan_dimen(false,false,false); s:=cur_val; if(s<=0)or(s>=134217728)then begin begin if interaction=3 then; print_nl(264);print(1251);end;print_scaled(s);print(1252); begin help_ptr:=2;help_line[1]:=1253;help_line[0]:=1254;end;error; s:=10*65536;end;end{:1260}else if scan_keyword(1250)then begin scan_int; s:=-cur_val; if(cur_val<=0)or(cur_val>32768)then begin begin if interaction=3 then; print_nl(264);print(561);end;begin help_ptr:=1;help_line[0]:=562;end; int_error(cur_val);s:=-1000;end;end else s:=-1000; name_in_progress:=false{:1259};{1261:}flushable_string:=str_ptr-1; for f:=1 to font_ptr do if str_eq_str(font_name[f],cur_name)and str_eq_str(font_area[f],cur_area)then begin if cur_name=flushable_string then begin begin str_ptr:=str_ptr-1;pool_ptr:=str_start[str_ptr];end; cur_name:=font_name[f];end; if s>0 then begin if s=font_size[f]then goto 50; end else if font_size[f]=xn_over_d(font_dsize[f],-s,1000)then goto 50; end{:1261};f:=read_font_info(u,cur_name,cur_area,s); 50:if(a>=4)then geq_define(u,87,f)else eq_define(u,87,f); eqtb[600524+f]:=eqtb[u];hash[600524+f].rh:=t;end; {:1258}{1266:}procedure new_interaction;begin print_ln; interaction:=cur_chr; {75:}if interaction=0 then selector:=16 else selector:=17{:75}; if log_opened then selector:=selector+2;end; {:1266}procedure prefixed_command;label 30,10;var a:small_number; f:internal_font_number;j:halfword;k:font_index;p,q:halfword;n:integer; e:boolean;begin a:=0; while cur_cmd=93 do begin if not odd(a div cur_chr)then a:=a+cur_chr; {404:}repeat get_x_token;until(cur_cmd<>10)and(cur_cmd<>0){:404}; if cur_cmd<=70 then{1213:}begin begin if interaction=3 then; print_nl(264);print(1206);end;print_cmd_chr(cur_cmd,cur_chr); print_char(39);begin help_ptr:=1;help_line[0]:=1207;end; if(eTeX_mode=1)then help_line[0]:=1208;back_error;goto 10;end{:1213}; if eqtb[603204].int>2 then if(eTeX_mode=1)then show_cur_cmd_chr;end; {1214:}if a>=8 then begin j:=3585;a:=a-8;end else j:=0; if(cur_cmd<>97)and((a mod 4<>0)or(j<>0))then begin begin if interaction= 3 then;print_nl(264);print(695);end;print_esc(1198);print(1209); print_esc(1199);begin help_ptr:=1;help_line[0]:=1210;end; if(eTeX_mode=1)then begin help_line[0]:=1211;print(1209); print_esc(1212);end;print(1213);print_cmd_chr(cur_cmd,cur_chr); print_char(39);error;end{:1214}; {1215:}if eqtb[603211].int<>0 then if eqtb[603211].int<0 then begin if(a >=4)then a:=a-4;end else begin if not(a>=4)then a:=a+4;end{:1215}; case cur_cmd of{1218:}87:if(a>=4)then geq_define(601839,120,cur_chr)else eq_define(601839,120,cur_chr); {:1218}{1219:}97:begin if odd(cur_chr)and not(a>=4)and(eqtb[603211].int >=0)then a:=a+4;e:=(cur_chr>=2);get_r_token;p:=cur_cs; q:=scan_toks(true,e);if j<>0 then begin q:=get_avail;mem[q].hh.lh:=j; mem[q].hh.rh:=mem[def_ref].hh.rh;mem[def_ref].hh.rh:=q;end; if(a>=4)then geq_define(p,111+(a mod 4),def_ref)else eq_define(p,111+(a mod 4),def_ref);end;{:1219}{1222:}94:begin n:=cur_chr;get_r_token; p:=cur_cs;if n=0 then begin repeat get_token;until cur_cmd<>10; if cur_tok=3133 then begin get_token;if cur_cmd=10 then get_token;end; end else begin get_token;q:=cur_tok;get_token;back_input;cur_tok:=q; back_input;end; if cur_cmd>=111 then mem[cur_chr].hh.lh:=mem[cur_chr].hh.lh+1 else if( cur_cmd=89)or(cur_cmd=71)then if(cur_chr<0)or(cur_chr>19)then mem[ cur_chr+1].hh.lh:=mem[cur_chr+1].hh.lh+1; if(a>=4)then geq_define(p,cur_cmd,cur_chr)else eq_define(p,cur_cmd, cur_chr);end;{:1222}{1225:}95:begin n:=cur_chr;get_r_token;p:=cur_cs; if(a>=4)then geq_define(p,0,256)else eq_define(p,0,256); scan_optional_equals;case n of 0:begin scan_char_num; if(a>=4)then geq_define(p,68,cur_val)else eq_define(p,68,cur_val);end; 1:begin scan_fifteen_bit_int; if(a>=4)then geq_define(p,69,cur_val)else eq_define(p,69,cur_val);end; others:begin scan_register_num;if cur_val>255 then begin j:=n-2; if j>3 then j:=5;find_sa_element(j,cur_val,true); mem[cur_ptr+1].hh.lh:=mem[cur_ptr+1].hh.lh+1; if j=5 then j:=71 else j:=89; if(a>=4)then geq_define(p,j,cur_ptr)else eq_define(p,j,cur_ptr); end else case n of 2:if(a>=4)then geq_define(p,73,603233+cur_val)else eq_define(p,73,603233+cur_val); 3:if(a>=4)then geq_define(p,74,603766+cur_val)else eq_define(p,74, 603766+cur_val); 4:if(a>=4)then geq_define(p,75,600800+cur_val)else eq_define(p,75, 600800+cur_val); 5:if(a>=4)then geq_define(p,76,601056+cur_val)else eq_define(p,76, 601056+cur_val); 6:if(a>=4)then geq_define(p,72,601323+cur_val)else eq_define(p,72, 601323+cur_val);end;end end;end;{:1225}{1226:}96:begin j:=cur_chr; scan_int;n:=cur_val; if not scan_keyword(867)then begin begin if interaction=3 then; print_nl(264);print(1099);end;begin help_ptr:=2;help_line[1]:=1230; help_line[0]:=1231;end;error;end;get_r_token;p:=cur_cs;read_toks(n,p,j); if(a>=4)then geq_define(p,111,cur_val)else eq_define(p,111,cur_val);end; {:1226}{1227:}71,72:begin q:=cur_cs;e:=false; if cur_cmd=71 then if cur_chr=0 then begin scan_register_num; if cur_val>255 then begin find_sa_element(5,cur_val,true); cur_chr:=cur_ptr;e:=true;end else cur_chr:=601323+cur_val; end else e:=true;p:=cur_chr;scan_optional_equals; {404:}repeat get_x_token;until(cur_cmd<>10)and(cur_cmd<>0){:404}; if cur_cmd<>1 then{1228:}if(cur_cmd=71)or(cur_cmd=72)then begin if cur_cmd=71 then if cur_chr=0 then begin scan_register_num; if cur_val<256 then q:=eqtb[601323+cur_val].hh.rh else begin find_sa_element(5,cur_val,false); if cur_ptr=0 then q:=0 else q:=mem[cur_ptr+1].hh.rh;end; end else q:=mem[cur_chr+1].hh.rh else q:=eqtb[cur_chr].hh.rh; if q=0 then if e then if(a>=4)then gsa_def(p,0)else sa_def(p,0)else if(a >=4)then geq_define(p,101,0)else eq_define(p,101,0)else begin mem[q].hh. lh:=mem[q].hh.lh+1; if e then if(a>=4)then gsa_def(p,q)else sa_def(p,q)else if(a>=4)then geq_define(p,111,q)else eq_define(p,111,q);end;goto 30;end{:1228}; back_input;cur_cs:=q;q:=scan_toks(false,false); if mem[def_ref].hh.rh=0 then begin if e then if(a>=4)then gsa_def(p,0) else sa_def(p,0)else if(a>=4)then geq_define(p,101,0)else eq_define(p, 101,0);begin mem[def_ref].hh.rh:=avail;avail:=def_ref; {dyn_used:=dyn_used-1;}end; end else begin if(p=601313)and not e then begin mem[q].hh.rh:=get_avail; q:=mem[q].hh.rh;mem[q].hh.lh:=637;q:=get_avail;mem[q].hh.lh:=379; mem[q].hh.rh:=mem[def_ref].hh.rh;mem[def_ref].hh.rh:=q;end; if e then if(a>=4)then gsa_def(p,def_ref)else sa_def(p,def_ref)else if(a >=4)then geq_define(p,111,def_ref)else eq_define(p,111,def_ref);end;end; {:1227}{1229:}73:begin p:=cur_chr;scan_optional_equals;scan_int; if(a>=4)then geq_word_define(p,cur_val)else eq_word_define(p,cur_val); end;74:begin p:=cur_chr;scan_optional_equals; scan_dimen(false,false,false); if(a>=4)then geq_word_define(p,cur_val)else eq_word_define(p,cur_val); end;75,76:begin p:=cur_chr;n:=cur_cmd;scan_optional_equals; if n=76 then scan_glue(3)else scan_glue(2);trap_zero_glue; if(a>=4)then geq_define(p,117,cur_val)else eq_define(p,117,cur_val);end; {:1229}{1233:}85:begin{1234:}if cur_chr=601888 then n:=15 else if cur_chr=602912 then n:=32768 else if cur_chr=602656 then n:=32767 else if cur_chr=603489 then n:=16777215 else n:=255{:1234};p:=cur_chr; scan_char_num;p:=p+cur_val;scan_optional_equals;scan_int; if((cur_val<0)and(p<603489))or(cur_val>n)then begin begin if interaction =3 then;print_nl(264);print(761);end;print_int(cur_val); if p<603489 then print(1232)else print(1233);print_int(n); begin help_ptr:=1;help_line[0]:=1234;end;error;cur_val:=0;end; if p<602912 then if(a>=4)then geq_define(p,120,cur_val)else eq_define(p, 120,cur_val)else if p<603489 then if(a>=4)then geq_define(p,120,cur_val +0)else eq_define(p,120,cur_val+0)else if(a>=4)then geq_word_define(p, cur_val)else eq_word_define(p,cur_val);end; {:1233}{1235:}86:begin p:=cur_chr;scan_four_bit_int;p:=p+cur_val; scan_optional_equals;scan_font_ident; if(a>=4)then geq_define(p,120,cur_val)else eq_define(p,120,cur_val);end; {:1235}{1236:}89,90,91,92:do_register_command(a); {:1236}{1242:}98:begin scan_register_num; if(a>=4)then n:=1073774592+cur_val else n:=1073741824+cur_val; scan_optional_equals; if set_box_allowed then scan_box(n)else begin begin if interaction=3 then;print_nl(264);print(690);end;print_esc(541);begin help_ptr:=2; help_line[1]:=1240;help_line[0]:=1241;end;error;end;end; {:1242}{1243:}79:alter_aux;80:alter_prev_graf;81:alter_page_so_far; 82:alter_integer;83:alter_box_dimen;{:1243}{1249:}84:begin q:=cur_chr; scan_optional_equals;scan_int;n:=cur_val; if n<=0 then p:=0 else if q>601312 then begin n:=(cur_val div 2)+1; p:=get_node(2*n+1);mem[p].hh.lh:=n;n:=cur_val;mem[p+1].int:=n; for j:=p+2 to p+n+1 do begin scan_int;mem[j].int:=cur_val;end; if not odd(n)then mem[p+n+2].int:=0;end else begin p:=get_node(2*n+1); mem[p].hh.lh:=n;for j:=1 to n do begin scan_dimen(false,false,false); mem[p+2*j-1].int:=cur_val;scan_dimen(false,false,false); mem[p+2*j].int:=cur_val;end;end; if(a>=4)then geq_define(q,118,p)else eq_define(q,118,p);end; {:1249}{1253:}99:if cur_chr=1 then begin new_patterns;goto 30; begin if interaction=3 then;print_nl(264);print(1245);end;help_ptr:=0; error;repeat get_token;until cur_cmd=2;goto 10; end else begin new_hyph_exceptions;goto 30;end; {:1253}{1254:}77:begin find_font_dimen(true);k:=cur_val; scan_optional_equals;scan_dimen(false,false,false); font_info[k].int:=cur_val;end;78:begin n:=cur_chr;scan_font_ident; f:=cur_val;scan_optional_equals;scan_int; if n=0 then hyphen_char[f]:=cur_val else skew_char[f]:=cur_val;end; {:1254}{1257:}88:new_font(a);{:1257}{1265:}100:new_interaction; {:1265}others:confusion(1205)end; 30:{1270:}if after_token<>0 then begin cur_tok:=after_token;back_input; after_token:=0;end{:1270};10:end;{:1212}{1271:}procedure do_assignments; label 10;begin while true do begin{404:}repeat get_x_token; until(cur_cmd<>10)and(cur_cmd<>0){:404};if cur_cmd<=70 then goto 10; set_box_allowed:=false;prefixed_command;set_box_allowed:=true;end; 10:end;{:1271}{1276:}procedure open_or_close_in;var c:0..1;n:0..15; begin c:=cur_chr;scan_four_bit_int;n:=cur_val; if read_open[n]<>2 then begin a_close(read_file[n]);read_open[n]:=2;end; if c<>0 then begin scan_optional_equals;scan_file_name; if cur_ext=340 then cur_ext:=816; pack_file_name(cur_name,cur_area,cur_ext); if a_open_in(read_file[n])then read_open[n]:=1;end;end; {:1276}{1280:}procedure issue_message;var old_setting:0..21;c:0..1; s:str_number;begin c:=cur_chr;mem[7999988].hh.rh:=scan_toks(false,true); old_setting:=selector;selector:=21;token_show(def_ref); selector:=old_setting;flush_list(def_ref); begin if pool_ptr+1>pool_size then overflow(259,pool_size-init_pool_ptr) ;end;s:=make_string; if c=0 then{1281:}begin if term_offset+(str_start[s+1]-str_start[s])> max_print_line-2 then print_ln else if(term_offset>0)or(file_offset>0) then print_char(32);slow_print(s);break(term_out); end{:1281}else{1284:}begin begin if interaction=3 then;print_nl(264); print(340);end;slow_print(s); if eqtb[601321].hh.rh<>0 then use_err_help:=true else if long_help_seen then begin help_ptr:=1;help_line[0]:=1261; end else begin if interaction<3 then long_help_seen:=true; begin help_ptr:=4;help_line[3]:=1262;help_line[2]:=1263; help_line[1]:=1264;help_line[0]:=1265;end;end;error;use_err_help:=false; end{:1284};begin str_ptr:=str_ptr-1;pool_ptr:=str_start[str_ptr];end; end;{:1280}{1289:}procedure shift_case;var b:halfword;p:halfword; t:halfword;c:eight_bits;begin b:=cur_chr;p:=scan_toks(false,false); p:=mem[def_ref].hh.rh;while p<>0 do begin{1290:}t:=mem[p].hh.lh; if t<4352 then begin c:=t mod 256; if eqtb[b+c].hh.rh<>0 then mem[p].hh.lh:=t-c+eqtb[b+c].hh.rh;end{:1290}; p:=mem[p].hh.rh;end;begin_token_list(mem[def_ref].hh.rh,3); begin mem[def_ref].hh.rh:=avail;avail:=def_ref;{dyn_used:=dyn_used-1;} end;end;{:1289}{1294:}procedure show_whatever;label 50;var p:halfword; t:small_number;m:0..4;l:integer;n:integer; begin case cur_chr of 3:begin begin_diagnostic;show_activities;end; 1:{1297:}begin scan_register_num; if cur_val<256 then p:=eqtb[601583+cur_val].hh.rh else begin find_sa_element(4,cur_val,false); if cur_ptr=0 then p:=0 else p:=mem[cur_ptr+1].hh.rh;end; begin_diagnostic;print_nl(1281);print_int(cur_val);print_char(61); if p=0 then print(414)else show_box(p);end{:1297}; 0:{1295:}begin get_token;if interaction=3 then;print_nl(1277); if cur_cs<>0 then begin sprint_cs(cur_cs);print_char(61);end; print_meaning;goto 50;end{:1295};{1409:}4:begin begin_diagnostic; show_save_groups;end;{:1409}{1423:}6:begin begin_diagnostic; print_nl(340);print_ln;if cond_ptr=0 then begin print_nl(367); print(1375);end else begin p:=cond_ptr;n:=0;repeat n:=n+1; p:=mem[p].hh.rh;until p=0;p:=cond_ptr;t:=cur_if;l:=if_line;m:=if_limit; repeat print_nl(1376);print_int(n);print(576);print_cmd_chr(105,t); if m=2 then print_esc(801);if l<>0 then begin print(1374);print_int(l); end;n:=n-1;t:=mem[p].hh.b1;l:=mem[p+1].int;m:=mem[p].hh.b0; p:=mem[p].hh.rh;until p=0;end;end; {:1423}others:{1298:}begin p:=the_toks;if interaction=3 then; print_nl(1277);token_show(7999997);flush_list(mem[7999997].hh.rh); goto 50;end{:1298}end;{1299:}end_diagnostic(true); begin if interaction=3 then;print_nl(264);print(1282);end; if selector=19 then if eqtb[603197].int<=0 then begin selector:=17; print(1283);selector:=19;end{:1299}; 50:if interaction<3 then begin help_ptr:=0;error_count:=error_count-1; end else if eqtb[603197].int>0 then begin begin help_ptr:=3; help_line[2]:=1272;help_line[1]:=1273;help_line[0]:=1274;end; end else begin begin help_ptr:=5;help_line[4]:=1272;help_line[3]:=1273; help_line[2]:=1274;help_line[1]:=1275;help_line[0]:=1276;end;end;error; end;{:1294}{1303:}procedure store_fmt_file;label 41,42,31,32; var j,k,l:integer;p,q:halfword;x:integer;w:four_quarters; begin{1305:}if save_ptr<>0 then begin begin if interaction=3 then; print_nl(264);print(1285);end;begin help_ptr:=1;help_line[0]:=1286;end; begin if interaction=3 then interaction:=2;if log_opened then error; {if interaction>0 then debug_help;}history:=3;jump_out;end;end{:1305}; {1329:}selector:=21;print(1299);print(job_name);print_char(32); print_int(eqtb[603191].int);print_char(46);print_int(eqtb[603190].int); print_char(46);print_int(eqtb[603189].int);print_char(41); if interaction=0 then selector:=18 else selector:=19; begin if pool_ptr+1>pool_size then overflow(259,pool_size-init_pool_ptr) ;end;format_ident:=make_string;pack_job_name(811); while not w_open_out(fmt_file)do prompt_file_name(1300,811); print_nl(1301);slow_print(w_make_name_string(fmt_file)); begin str_ptr:=str_ptr-1;pool_ptr:=str_start[str_ptr];end;print_nl(340); slow_print(format_ident){:1329};{1308:}begin fmt_file^.int:=79945660; put(fmt_file);end;{1386:}begin fmt_file^.int:=eTeX_mode;put(fmt_file); end;for j:=0 to-0 do eqtb[603232+j].int:=0; {:1386}{1494:}while pseudo_files<>0 do pseudo_close; {:1494}begin fmt_file^.int:=0;put(fmt_file);end; begin fmt_file^.int:=8000000;put(fmt_file);end; begin fmt_file^.int:=604021;put(fmt_file);end;begin fmt_file^.int:=1777; put(fmt_file);end;begin fmt_file^.int:=8191;put(fmt_file);end{:1308}; {1310:}begin fmt_file^.int:=pool_ptr;put(fmt_file);end; begin fmt_file^.int:=str_ptr;put(fmt_file);end; for k:=0 to str_ptr do begin fmt_file^.int:=str_start[k];put(fmt_file); end;k:=0;while k+40 do begin dyn_used:=dyn_used-1;p:=mem[p].hh.rh;end; begin fmt_file^.int:=var_used;put(fmt_file);end; begin fmt_file^.int:=dyn_used;put(fmt_file);end;print_ln;print_int(x); print(1288);print_int(var_used);print_char(38); print_int(dyn_used){:1312};{1314:}{1316:}k:=1;repeat j:=k; while j<603167 do begin if(eqtb[j].hh.rh=eqtb[j+1].hh.rh)and(eqtb[j].hh. b0=eqtb[j+1].hh.b0)and(eqtb[j].hh.b1=eqtb[j+1].hh.b1)then goto 41; j:=j+1;end;l:=603168;goto 31;41:j:=j+1;l:=j; while j<603167 do begin if(eqtb[j].hh.rh<>eqtb[j+1].hh.rh)or(eqtb[j].hh. b0<>eqtb[j+1].hh.b0)or(eqtb[j].hh.b1<>eqtb[j+1].hh.b1)then goto 31; j:=j+1;end;31:begin fmt_file^.int:=l-k;put(fmt_file);end; while keqtb[j+1].int then goto 32; j:=j+1;end;32:begin fmt_file^.int:=l-k;put(fmt_file);end; while k604021{:1317};begin fmt_file^.int:=par_loc;put(fmt_file);end; begin fmt_file^.int:=write_loc;put(fmt_file);end; {1319:}begin fmt_file^.int:=hash_used;put(fmt_file);end; cs_count:=600513-hash_used; for p:=514 to hash_used do if hash[p].rh<>0 then begin begin fmt_file^. int:=p;put(fmt_file);end;begin fmt_file^.hh:=hash[p];put(fmt_file);end; cs_count:=cs_count+1;end; for p:=hash_used+1 to 600780 do begin fmt_file^.hh:=hash[p]; put(fmt_file);end;begin fmt_file^.int:=cs_count;put(fmt_file);end; print_ln;print_int(cs_count);print(1289){:1319}{:1314}; {1321:}begin fmt_file^.int:=fmem_ptr;put(fmt_file);end; for k:=0 to fmem_ptr-1 do begin fmt_file^:=font_info[k];put(fmt_file); end;begin fmt_file^.int:=font_ptr;put(fmt_file);end; for k:=0 to font_ptr do{1323:}begin begin fmt_file^.qqqq:=font_check[k]; put(fmt_file);end;begin fmt_file^.int:=font_size[k];put(fmt_file);end; begin fmt_file^.int:=font_dsize[k];put(fmt_file);end; begin fmt_file^.int:=font_params[k];put(fmt_file);end; begin fmt_file^.int:=hyphen_char[k];put(fmt_file);end; begin fmt_file^.int:=skew_char[k];put(fmt_file);end; begin fmt_file^.int:=font_name[k];put(fmt_file);end; begin fmt_file^.int:=font_area[k];put(fmt_file);end; begin fmt_file^.int:=font_bc[k];put(fmt_file);end; begin fmt_file^.int:=font_ec[k];put(fmt_file);end; begin fmt_file^.int:=char_base[k];put(fmt_file);end; begin fmt_file^.int:=width_base[k];put(fmt_file);end; begin fmt_file^.int:=height_base[k];put(fmt_file);end; begin fmt_file^.int:=depth_base[k];put(fmt_file);end; begin fmt_file^.int:=italic_base[k];put(fmt_file);end; begin fmt_file^.int:=lig_kern_base[k];put(fmt_file);end; begin fmt_file^.int:=kern_base[k];put(fmt_file);end; begin fmt_file^.int:=exten_base[k];put(fmt_file);end; begin fmt_file^.int:=param_base[k];put(fmt_file);end; begin fmt_file^.int:=font_glue[k];put(fmt_file);end; begin fmt_file^.int:=bchar_label[k];put(fmt_file);end; begin fmt_file^.int:=font_bchar[k];put(fmt_file);end; begin fmt_file^.int:=font_false_bchar[k];put(fmt_file);end; print_nl(1292);print_esc(hash[600524+k].rh);print_char(61); print_file_name(font_name[k],font_area[k],340); if font_size[k]<>font_dsize[k]then begin print(764); print_scaled(font_size[k]);print(401);end;end{:1323};print_ln; print_int(fmem_ptr-7);print(1290);print_int(font_ptr-0);print(1291); if font_ptr<>1 then print_char(115){:1321}; {1325:}begin fmt_file^.int:=hyph_count;put(fmt_file);end; for k:=0 to 8191 do if hyph_word[k]<>0 then begin begin fmt_file^.int:=k ;put(fmt_file);end;begin fmt_file^.int:=hyph_word[k];put(fmt_file);end; begin fmt_file^.int:=hyph_list[k];put(fmt_file);end;end;print_ln; print_int(hyph_count);print(1293);if hyph_count<>1 then print_char(115); if trie_not_ready then init_trie;begin fmt_file^.int:=trie_max; put(fmt_file);end;begin fmt_file^.int:=hyph_start;put(fmt_file);end; for k:=0 to trie_max do begin fmt_file^.hh:=trie[k];put(fmt_file);end; begin fmt_file^.int:=trie_op_ptr;put(fmt_file);end; for k:=1 to trie_op_ptr do begin begin fmt_file^.int:=hyf_distance[k]; put(fmt_file);end;begin fmt_file^.int:=hyf_num[k];put(fmt_file);end; begin fmt_file^.int:=hyf_next[k];put(fmt_file);end;end;print_nl(1294); print_int(trie_max);print(1295);print_int(trie_op_ptr);print(1296); if trie_op_ptr<>1 then print_char(115);print(1297); print_int(trie_op_size); for k:=255 downto 0 do if trie_used[k]>0 then begin print_nl(825); print_int(trie_used[k]-0);print(1298);print_int(k); begin fmt_file^.int:=k;put(fmt_file);end; begin fmt_file^.int:=trie_used[k]-0;put(fmt_file);end;end{:1325}; {1327:}begin fmt_file^.int:=interaction;put(fmt_file);end; begin fmt_file^.int:=format_ident;put(fmt_file);end; begin fmt_file^.int:=69069;put(fmt_file);end;eqtb[603199].int:=0{:1327}; {1330:}w_close(fmt_file){:1330};end; {:1303}{1349:}{1350:}procedure new_whatsit(s:small_number; w:small_number);var p:halfword;begin p:=get_node(w);mem[p].hh.b0:=8; mem[p].hh.b1:=s;mem[cur_list.tail_field].hh.rh:=p; cur_list.tail_field:=p;end; {:1350}{1351:}procedure new_write_whatsit(w:small_number); begin new_whatsit(cur_chr,w); if w<>2 then scan_four_bit_int else begin scan_int; if cur_val<0 then cur_val:=17 else if cur_val>15 then cur_val:=16;end; mem[cur_list.tail_field+1].hh.lh:=cur_val;end; {:1351}procedure do_extension;var i,j,k:integer;p,q,r:halfword; begin case cur_chr of 0:{1352:}begin new_write_whatsit(3); scan_optional_equals;scan_file_name; mem[cur_list.tail_field+1].hh.rh:=cur_name; mem[cur_list.tail_field+2].hh.lh:=cur_area; mem[cur_list.tail_field+2].hh.rh:=cur_ext;end{:1352}; 1:{1353:}begin k:=cur_cs;new_write_whatsit(2);cur_cs:=k; p:=scan_toks(false,false);mem[cur_list.tail_field+1].hh.rh:=def_ref; end{:1353};2:{1354:}begin new_write_whatsit(2); mem[cur_list.tail_field+1].hh.rh:=0;end{:1354}; 3:{1355:}begin new_whatsit(3,2);mem[cur_list.tail_field+1].hh.lh:=0; p:=scan_toks(false,true);mem[cur_list.tail_field+1].hh.rh:=def_ref; end{:1355};4:{1376:}begin get_x_token; if(cur_cmd=59)and(cur_chr<=2)then begin p:=cur_list.tail_field; do_extension;out_what(cur_list.tail_field); flush_node_list(cur_list.tail_field);cur_list.tail_field:=p; mem[p].hh.rh:=0;end else back_input;end{:1376}; 5:{1378:}if abs(cur_list.mode_field)<>102 then report_illegal_case else begin new_whatsit(4,2);scan_int; if cur_val<=0 then cur_list.aux_field.hh.rh:=0 else if cur_val>255 then cur_list.aux_field.hh.rh:=0 else cur_list.aux_field.hh.rh:=cur_val; mem[cur_list.tail_field+1].hh.rh:=cur_list.aux_field.hh.rh; mem[cur_list.tail_field+1].hh.b0:=norm_min(eqtb[603219].int); mem[cur_list.tail_field+1].hh.b1:=norm_min(eqtb[603220].int);end{:1378}; others:confusion(1318)end;end;{:1349}{1377:}procedure fix_language; var l:ASCII_code; begin if eqtb[603218].int<=0 then l:=0 else if eqtb[603218].int>255 then l:=0 else l:=eqtb[603218].int; if l<>cur_list.aux_field.hh.rh then begin new_whatsit(4,2); mem[cur_list.tail_field+1].hh.rh:=l;cur_list.aux_field.hh.rh:=l; mem[cur_list.tail_field+1].hh.b0:=norm_min(eqtb[603219].int); mem[cur_list.tail_field+1].hh.b1:=norm_min(eqtb[603220].int);end;end; {:1377}{1069:}procedure handle_right_brace;var p,q:halfword;d:scaled; f:integer;begin case cur_group of 1:unsave; 0:begin begin if interaction=3 then;print_nl(264);print(1069);end; begin help_ptr:=2;help_line[1]:=1070;help_line[0]:=1071;end;error;end; 14,15,16:extra_right_brace;{1086:}2:package(0); 3:begin adjust_tail:=7999995;package(0);end;4:begin end_graf;package(0); end;5:begin end_graf;package(4);end;{:1086}{1101:}11:begin end_graf; q:=eqtb[600792].hh.rh;mem[q].hh.rh:=mem[q].hh.rh+1;d:=eqtb[603751].int; f:=eqtb[603210].int;unsave;save_ptr:=save_ptr-1; p:=vpackage(mem[cur_list.head_field].hh.rh,0,1,1073741823);pop_nest; if save_stack[save_ptr+0].int<255 then begin begin mem[cur_list. tail_field].hh.rh:=get_node(5); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.b0:=3; mem[cur_list.tail_field].hh.b1:=save_stack[save_ptr+0].int+0; mem[cur_list.tail_field+3].int:=mem[p+3].int+mem[p+2].int; mem[cur_list.tail_field+4].hh.lh:=mem[p+5].hh.rh; mem[cur_list.tail_field+4].hh.rh:=q;mem[cur_list.tail_field+2].int:=d; mem[cur_list.tail_field+1].int:=f; end else begin begin mem[cur_list.tail_field].hh.rh:=get_node(2); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.b0:=5;mem[cur_list.tail_field].hh.b1:=0; mem[cur_list.tail_field+1].int:=mem[p+5].hh.rh;delete_glue_ref(q);end; free_node(p,7);if nest_ptr=0 then build_page;end; 8:{1027:}begin if(cur_input.loc_field<>0)or((cur_input.index_field<>6) and(cur_input.index_field<>3))then{1028:}begin begin if interaction=3 then;print_nl(264);print(1036);end;begin help_ptr:=2;help_line[1]:=1037; help_line[0]:=1038;end;error;repeat get_token; until cur_input.loc_field=0;end{:1028};end_token_list;end_graf;unsave; output_active:=false;insert_penalties:=0; {1029:}if eqtb[601838].hh.rh<>0 then begin begin if interaction=3 then; print_nl(264);print(1039);end;print_esc(413);print_int(255); begin help_ptr:=3;help_line[2]:=1040;help_line[1]:=1041; help_line[0]:=1042;end;box_error(255);end{:1029}; if cur_list.tail_field<>cur_list.head_field then begin mem[page_tail].hh .rh:=mem[cur_list.head_field].hh.rh;page_tail:=cur_list.tail_field;end; if mem[7999998].hh.rh<>0 then begin if mem[7999999].hh.rh=0 then nest[0] .tail_field:=page_tail;mem[page_tail].hh.rh:=mem[7999999].hh.rh; mem[7999999].hh.rh:=mem[7999998].hh.rh;mem[7999998].hh.rh:=0; page_tail:=7999998;end;flush_node_list(disc_ptr[2]);disc_ptr[2]:=0; pop_nest;build_page;end{:1027};{:1101}{1119:}10:build_discretionary; {:1119}{1133:}6:begin back_input;cur_tok:=604610; begin if interaction=3 then;print_nl(264);print(635);end;print_esc(925); print(636);begin help_ptr:=1;help_line[0]:=1151;end;ins_error;end; {:1133}{1134:}7:begin end_graf;unsave;align_peek;end; {:1134}{1169:}12:begin end_graf;unsave;save_ptr:=save_ptr-2; p:=vpackage(mem[cur_list.head_field].hh.rh,save_stack[save_ptr+1].int, save_stack[save_ptr+0].int,1073741823);pop_nest; begin mem[cur_list.tail_field].hh.rh:=new_noad; cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.b0:=29;mem[cur_list.tail_field+1].hh.rh:=2; mem[cur_list.tail_field+1].hh.lh:=p;end;{:1169}{1174:}13:build_choices; {:1174}{1187:}9:begin unsave;save_ptr:=save_ptr-1; mem[save_stack[save_ptr+0].int].hh.rh:=3;p:=fin_mlist(0); mem[save_stack[save_ptr+0].int].hh.lh:=p; if p<>0 then if mem[p].hh.rh=0 then if mem[p].hh.b0=16 then begin if mem [p+3].hh.rh=0 then if mem[p+2].hh.rh=0 then begin mem[save_stack[ save_ptr+0].int].hh:=mem[p+1].hh;free_node(p,4);end; end else if mem[p].hh.b0=28 then if save_stack[save_ptr+0].int=cur_list. tail_field+1 then if mem[cur_list.tail_field].hh.b0=16 then{1188:}begin q:=cur_list.head_field; while mem[q].hh.rh<>cur_list.tail_field do q:=mem[q].hh.rh; mem[q].hh.rh:=p;free_node(cur_list.tail_field,4);cur_list.tail_field:=p; end{:1188};end;{:1187}others:confusion(1072)end;end; {:1069}procedure main_control; label 60,21,70,80,90,91,92,95,100,101,110,111,112,120,10;var t:integer; begin if eqtb[601319].hh.rh<>0 then begin_token_list(eqtb[601319].hh.rh, 12);60:get_x_token; 21:{1032:}if interrupt<>0 then if OK_to_interrupt then begin back_input; begin if interrupt<>0 then pause_for_instructions;end;goto 60;end; {if panicking then check_mem(false);} if eqtb[603204].int>0 then show_cur_cmd_chr{:1032}; case abs(cur_list.mode_field)+cur_cmd of 113,114,170:goto 70; 118:begin scan_char_num;cur_chr:=cur_val;goto 70;end; 167:begin get_x_token; if(cur_cmd=11)or(cur_cmd=12)or(cur_cmd=68)or(cur_cmd=16)then cancel_boundary:=true;goto 21;end; 112:if cur_list.aux_field.hh.lh=1000 then goto 120 else app_space; 166,267:goto 120;{1046:}1,102,203,11,213,268:; 40,141,242:begin{406:}repeat get_x_token;until cur_cmd<>10{:406}; goto 21;end;15:if its_all_over then goto 10; {1049:}23,123,224,71,172,273,{:1049}{1099:}39,{:1099}{1112:}45,{:1112} {1145:}49,150,{:1145}7,108,209:report_illegal_case; {1047:}8,109,9,110,18,119,70,171,51,152,16,117,50,151,53,154,67,168,54, 155,55,156,57,158,56,157,31,132,52,153,29,130,47,148,212,216,217,230,227 ,236,239{:1047}:insert_dollar_sign; {1057:}37,137,238:begin begin mem[cur_list.tail_field].hh.rh:= scan_rule_spec;cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; if abs(cur_list.mode_field)=1 then cur_list.aux_field.int:=-65536000 else if abs(cur_list.mode_field)=102 then cur_list.aux_field.hh.lh:=1000 ;end;{:1057}{1058:}28,128,229,231:append_glue; 30,131,232,233:append_kern;{:1058}{1064:}2,103:new_save_level(1); 62,163,264:new_save_level(14); 63,164,265:if cur_group=14 then unsave else off_save; {:1064}{1068:}3,104,205:handle_right_brace; {:1068}{1074:}22,124,225:begin t:=cur_chr;scan_dimen(false,false,false); if t=0 then scan_box(cur_val)else scan_box(-cur_val);end; 32,133,234:scan_box(1073807261+cur_chr);21,122,223:begin_box(0); {:1074}{1091:}44:new_graf(cur_chr>0); 12,13,17,69,4,24,36,46,48,27,34,65,66:begin back_input;new_graf(true); end;{:1091}{1093:}145,246:indent_in_hmode; {:1093}{1095:}14:begin normal_paragraph; if cur_list.mode_field>0 then build_page;end; 115:begin if align_state<0 then off_save;end_graf; if cur_list.mode_field=1 then build_page;end; 116,129,138,126,134:head_for_vmode; {:1095}{1098:}38,139,240,140,241:begin_insert_or_adjust; 19,120,221:make_mark;{:1098}{1103:}43,144,245:append_penalty; {:1103}{1105:}26,127,228:delete_last;{:1105}{1110:}25,125,226:unpackage; {:1110}{1113:}146:append_italic_correction; 247:begin mem[cur_list.tail_field].hh.rh:=new_kern(0); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; {:1113}{1117:}149,250:append_discretionary; {:1117}{1123:}147:make_accent; {:1123}{1127:}6,107,208,5,106,207:align_error;35,136,237:no_align_error; 64,165,266:omit_error;{:1127}{1131:}33:init_align; 135:{1435:}if cur_chr>0 then begin if eTeX_enabled((eqtb[603232].int>0), cur_cmd,cur_chr)then begin mem[cur_list.tail_field].hh.rh:=new_math(0, cur_chr);cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; end else{:1435}init_align; 235:if privileged then if cur_group=15 then init_align else off_save; 10,111:do_endv;{:1131}{1135:}68,169,270:cs_error; {:1135}{1138:}105:init_math; {:1138}{1141:}251:if privileged then if cur_group=15 then start_eq_no else off_save; {:1141}{1151:}204:begin begin mem[cur_list.tail_field].hh.rh:=new_noad; cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end;back_input; scan_math(cur_list.tail_field+1);end; {:1151}{1155:}214,215,271:set_math_char(eqtb[602912+cur_chr].hh.rh-0); 219:begin scan_char_num;cur_chr:=cur_val; set_math_char(eqtb[602912+cur_chr].hh.rh-0);end; 220:begin scan_fifteen_bit_int;set_math_char(cur_val);end; 272:set_math_char(cur_chr);218:begin scan_twenty_seven_bit_int; set_math_char(cur_val div 4096);end; {:1155}{1159:}253:begin begin mem[cur_list.tail_field].hh.rh:=new_noad; cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.b0:=cur_chr; scan_math(cur_list.tail_field+1);end;254:math_limit_switch; {:1159}{1163:}269:math_radical;{:1163}{1165:}248,249:math_ac; {:1165}{1168:}259:begin scan_spec(12,false);normal_paragraph;push_nest; cur_list.mode_field:=-1;cur_list.aux_field.int:=-65536000; if eqtb[601318].hh.rh<>0 then begin_token_list(eqtb[601318].hh.rh,11); end;{:1168}{1172:}256:begin mem[cur_list.tail_field].hh.rh:=new_style( cur_chr);cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; 258:begin begin mem[cur_list.tail_field].hh.rh:=new_glue(0); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; mem[cur_list.tail_field].hh.b1:=98;end;257:append_choices; {:1172}{1176:}211,210:sub_sup;{:1176}{1181:}255:math_fraction; {:1181}{1191:}252:math_left_right; {:1191}{1194:}206:if cur_group=15 then after_math else off_save; {:1194}{1211:}72,173,274,73,174,275,74,175,276,75,176,277,76,177,278,77, 178,279,78,179,280,79,180,281,80,181,282,81,182,283,82,183,284,83,184, 285,84,185,286,85,186,287,86,187,288,87,188,289,88,189,290,89,190,291,90 ,191,292,91,192,293,92,193,294,93,194,295,94,195,296,95,196,297,96,197, 298,97,198,299,98,199,300,99,200,301,100,201,302,101,202,303: prefixed_command;{:1211}{1269:}41,142,243:begin get_token; after_token:=cur_tok;end;{:1269}{1272:}42,143,244:begin get_token; save_for_after(cur_tok);end;{:1272}{1275:}61,162,263:open_or_close_in; {:1275}{1277:}59,160,261:issue_message; {:1277}{1286:}58,159,260:shift_case; {:1286}{1291:}20,121,222:show_whatever; {:1291}{1348:}60,161,262:do_extension;{:1348}{:1046}end;goto 60; 70:{1035:}main_s:=eqtb[602656+cur_chr].hh.rh; if main_s=1000 then cur_list.aux_field.hh.lh:=1000 else if main_s<1000 then begin if main_s>0 then cur_list.aux_field.hh.lh:=main_s; end else if cur_list.aux_field.hh.lh<1000 then cur_list.aux_field.hh.lh :=1000 else cur_list.aux_field.hh.lh:=main_s;main_f:=eqtb[601839].hh.rh; bchar:=font_bchar[main_f];false_bchar:=font_false_bchar[main_f]; if cur_list.mode_field>0 then if eqtb[603218].int<>cur_list.aux_field.hh .rh then fix_language;begin lig_stack:=avail; if lig_stack=0 then lig_stack:=get_avail else begin avail:=mem[lig_stack ].hh.rh;mem[lig_stack].hh.rh:=0;{dyn_used:=dyn_used+1;}end;end; mem[lig_stack].hh.b0:=main_f;cur_l:=cur_chr+0; mem[lig_stack].hh.b1:=cur_l;cur_q:=cur_list.tail_field; if cancel_boundary then begin cancel_boundary:=false;main_k:=0; end else main_k:=bchar_label[main_f];if main_k=0 then goto 92; cur_r:=cur_l;cur_l:=256;goto 111; 80:{1036:}if cur_l<256 then begin if mem[cur_q].hh.rh>0 then if mem[ cur_list.tail_field].hh.b1=hyphen_char[main_f]+0 then ins_disc:=true; if ligature_present then begin main_p:=new_ligature(main_f,cur_l,mem[ cur_q].hh.rh);if lft_hit then begin mem[main_p].hh.b1:=2;lft_hit:=false; end; if rt_hit then if lig_stack=0 then begin mem[main_p].hh.b1:=mem[main_p]. hh.b1+1;rt_hit:=false;end;mem[cur_q].hh.rh:=main_p; cur_list.tail_field:=main_p;ligature_present:=false;end; if ins_disc then begin ins_disc:=false; if cur_list.mode_field>0 then begin mem[cur_list.tail_field].hh.rh:= new_disc;cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end;end; end{:1036};90:{1037:}if lig_stack=0 then goto 21; cur_q:=cur_list.tail_field;cur_l:=mem[lig_stack].hh.b1; 91:if not(lig_stack>=hi_mem_min)then goto 95; 92:if(cur_chrfont_ec[main_f])then begin char_warning(main_f,cur_chr);begin mem[lig_stack].hh.rh:=avail; avail:=lig_stack;{dyn_used:=dyn_used-1;}end;goto 60;end; main_i:=font_info[char_base[main_f]+cur_l].qqqq; if not(main_i.b0>0)then begin char_warning(main_f,cur_chr); begin mem[lig_stack].hh.rh:=avail;avail:=lig_stack; {dyn_used:=dyn_used-1;}end;goto 60;end; mem[cur_list.tail_field].hh.rh:=lig_stack; cur_list.tail_field:=lig_stack{:1037};100:{1039:}get_next; if cur_cmd=11 then goto 101;if cur_cmd=12 then goto 101; if cur_cmd=68 then goto 101;x_token;if cur_cmd=11 then goto 101; if cur_cmd=12 then goto 101;if cur_cmd=68 then goto 101; if cur_cmd=16 then begin scan_char_num;cur_chr:=cur_val;goto 101;end; if cur_cmd=65 then bchar:=256;cur_r:=bchar;lig_stack:=0;goto 110; 101:main_s:=eqtb[602656+cur_chr].hh.rh; if main_s=1000 then cur_list.aux_field.hh.lh:=1000 else if main_s<1000 then begin if main_s>0 then cur_list.aux_field.hh.lh:=main_s; end else if cur_list.aux_field.hh.lh<1000 then cur_list.aux_field.hh.lh :=1000 else cur_list.aux_field.hh.lh:=main_s;begin lig_stack:=avail; if lig_stack=0 then lig_stack:=get_avail else begin avail:=mem[lig_stack ].hh.rh;mem[lig_stack].hh.rh:=0;{dyn_used:=dyn_used+1;}end;end; mem[lig_stack].hh.b0:=main_f;cur_r:=cur_chr+0; mem[lig_stack].hh.b1:=cur_r;if cur_r=false_bchar then cur_r:=256{:1039}; 110:{1040:}if((main_i.b2-0)mod 4)<>1 then goto 80; if cur_r=256 then goto 80;main_k:=lig_kern_base[main_f]+main_i.b3; main_j:=font_info[main_k].qqqq;if main_j.b0<=128 then goto 112; main_k:=lig_kern_base[main_f]+256*main_j.b2+main_j.b3+32768-256*(128); 111:main_j:=font_info[main_k].qqqq; 112:if main_j.b1=cur_r then if main_j.b0<=128 then{1041:}begin if main_j .b2>=128 then begin if cur_l<256 then begin if mem[cur_q].hh.rh>0 then if mem[cur_list.tail_field].hh.b1=hyphen_char[main_f]+0 then ins_disc:= true; if ligature_present then begin main_p:=new_ligature(main_f,cur_l,mem[ cur_q].hh.rh);if lft_hit then begin mem[main_p].hh.b1:=2;lft_hit:=false; end; if rt_hit then if lig_stack=0 then begin mem[main_p].hh.b1:=mem[main_p]. hh.b1+1;rt_hit:=false;end;mem[cur_q].hh.rh:=main_p; cur_list.tail_field:=main_p;ligature_present:=false;end; if ins_disc then begin ins_disc:=false; if cur_list.mode_field>0 then begin mem[cur_list.tail_field].hh.rh:= new_disc;cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end;end; end;begin mem[cur_list.tail_field].hh.rh:=new_kern(font_info[kern_base[ main_f]+256*main_j.b2+main_j.b3].int); cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end;goto 90;end; if cur_l=256 then lft_hit:=true else if lig_stack=0 then rt_hit:=true; begin if interrupt<>0 then pause_for_instructions;end; case main_j.b2 of 1,5:begin cur_l:=main_j.b3; main_i:=font_info[char_base[main_f]+cur_l].qqqq;ligature_present:=true; end;2,6:begin cur_r:=main_j.b3; if lig_stack=0 then begin lig_stack:=new_lig_item(cur_r);bchar:=256; end else if(lig_stack>=hi_mem_min)then begin main_p:=lig_stack; lig_stack:=new_lig_item(cur_r);mem[lig_stack+1].hh.rh:=main_p; end else mem[lig_stack].hh.b1:=cur_r;end;3:begin cur_r:=main_j.b3; main_p:=lig_stack;lig_stack:=new_lig_item(cur_r); mem[lig_stack].hh.rh:=main_p;end; 7,11:begin if cur_l<256 then begin if mem[cur_q].hh.rh>0 then if mem[ cur_list.tail_field].hh.b1=hyphen_char[main_f]+0 then ins_disc:=true; if ligature_present then begin main_p:=new_ligature(main_f,cur_l,mem[ cur_q].hh.rh);if lft_hit then begin mem[main_p].hh.b1:=2;lft_hit:=false; end; if false then if lig_stack=0 then begin mem[main_p].hh.b1:=mem[main_p]. hh.b1+1;rt_hit:=false;end;mem[cur_q].hh.rh:=main_p; cur_list.tail_field:=main_p;ligature_present:=false;end; if ins_disc then begin ins_disc:=false; if cur_list.mode_field>0 then begin mem[cur_list.tail_field].hh.rh:= new_disc;cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end;end; end;cur_q:=cur_list.tail_field;cur_l:=main_j.b3; main_i:=font_info[char_base[main_f]+cur_l].qqqq;ligature_present:=true; end;others:begin cur_l:=main_j.b3;ligature_present:=true; if lig_stack=0 then goto 80 else goto 91;end end; if main_j.b2>4 then if main_j.b2<>7 then goto 80; if cur_l<256 then goto 110;main_k:=bchar_label[main_f];goto 111; end{:1041}; if main_j.b0=0 then main_k:=main_k+1 else begin if main_j.b0>=128 then goto 80;main_k:=main_k+main_j.b0+1;end;goto 111{:1040}; 95:{1038:}main_p:=mem[lig_stack+1].hh.rh; if main_p>0 then begin mem[cur_list.tail_field].hh.rh:=main_p; cur_list.tail_field:=mem[cur_list.tail_field].hh.rh;end; temp_ptr:=lig_stack;lig_stack:=mem[temp_ptr].hh.rh; free_node(temp_ptr,2);main_i:=font_info[char_base[main_f]+cur_l].qqqq; ligature_present:=true; if lig_stack=0 then if main_p>0 then goto 100 else cur_r:=bchar else cur_r:=mem[lig_stack].hh.b1;goto 110{:1038}{:1035}; 120:{1042:}if eqtb[600794].hh.rh=0 then begin{1043:}begin main_p:= font_glue[eqtb[601839].hh.rh]; if main_p=0 then begin main_p:=new_spec(0); main_k:=param_base[eqtb[601839].hh.rh]+2; mem[main_p+1].int:=font_info[main_k].int; mem[main_p+2].int:=font_info[main_k+1].int; mem[main_p+3].int:=font_info[main_k+2].int; font_glue[eqtb[601839].hh.rh]:=main_p;end;end{:1043}; temp_ptr:=new_glue(main_p);end else temp_ptr:=new_param_glue(12); mem[cur_list.tail_field].hh.rh:=temp_ptr;cur_list.tail_field:=temp_ptr; goto 60{:1042};10:end;{:1031}{1285:}procedure give_err_help; begin token_show(eqtb[601321].hh.rh);end; {:1285}{1304:}{525:}function open_fmt_file:boolean;label 40,10; var j:0..buf_size;begin j:=cur_input.loc_field; if buffer[cur_input.loc_field]=38 then begin cur_input.loc_field:= cur_input.loc_field+1;j:=cur_input.loc_field;buffer[last]:=32; while buffer[j]<>32 do j:=j+1; pack_buffered_name(0,cur_input.loc_field,j-1); if w_open_in(fmt_file)then goto 40; pack_buffered_name(11,cur_input.loc_field,j-1); if w_open_in(fmt_file)then goto 40;; write_ln(term_out,'Sorry, I can''t find that format;',' will try PLAIN.' );break(term_out);end;pack_buffered_name(16,1,0); if not w_open_in(fmt_file)then begin; write_ln(term_out,'I can''t find the PLAIN format file!'); open_fmt_file:=false;goto 10;end;40:cur_input.loc_field:=j; open_fmt_file:=true;10:end;{:525}function load_fmt_file:boolean; label 6666,10;var j,k:integer;p,q:halfword;x:integer;w:four_quarters; begin{1309:}x:=fmt_file^.int;if x<>79945660 then goto 6666; {1387:}begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>1)then goto 6666 else eTeX_mode:=x;end; if(eTeX_mode=1)then begin{1549:}max_reg_num:=32767; max_reg_help_line:=1425;{:1549}end else begin{1548:}max_reg_num:=255; max_reg_help_line:=698;{:1548}end;{:1387}begin get(fmt_file); x:=fmt_file^.int;end;if x<>0 then goto 6666;begin get(fmt_file); x:=fmt_file^.int;end;if x<>8000000 then goto 6666;begin get(fmt_file); x:=fmt_file^.int;end;if x<>604021 then goto 6666;begin get(fmt_file); x:=fmt_file^.int;end;if x<>1777 then goto 6666;begin get(fmt_file); x:=fmt_file^.int;end;if x<>8191 then goto 6666{:1309}; {1311:}begin begin get(fmt_file);x:=fmt_file^.int;end; if x<0 then goto 6666;if x>pool_size then begin; write_ln(term_out,'---! Must increase the ','string pool size'); goto 6666;end else pool_ptr:=x;end;begin begin get(fmt_file); x:=fmt_file^.int;end;if x<0 then goto 6666;if x>max_strings then begin; write_ln(term_out,'---! Must increase the ','max strings');goto 6666; end else str_ptr:=x;end; for k:=0 to str_ptr do begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>pool_ptr)then goto 6666 else str_start[k]:=x;end;k:=0; while k+47999986)then goto 6666 else lo_mem_max:=x;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<20)or(x>lo_mem_max)then goto 6666 else rover:=x;end; if(eTeX_mode=1)then for k:=0 to 5 do begin begin get(fmt_file); x:=fmt_file^.int;end; if(x<0)or(x>lo_mem_max)then goto 6666 else sa_root[k]:=x;end;p:=0; q:=rover;repeat for k:=p to q+1 do begin get(fmt_file); mem[k]:=fmt_file^;end;p:=q+mem[q].hh.lh; if(p>lo_mem_max)or((q>=mem[q+1].hh.rh)and(mem[q+1].hh.rh<>rover))then goto 6666;q:=mem[q+1].hh.rh;until q=rover; for k:=p to lo_mem_max do begin get(fmt_file);mem[k]:=fmt_file^;end; if mem_min<-2 then begin p:=mem[rover+1].hh.lh;q:=mem_min+1; mem[mem_min].hh.rh:=0;mem[mem_min].hh.lh:=0;mem[p+1].hh.rh:=q; mem[rover+1].hh.lh:=q;mem[q+1].hh.rh:=rover;mem[q+1].hh.lh:=p; mem[q].hh.rh:=536870911;mem[q].hh.lh:=-0-q;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x7999987)then goto 6666 else hi_mem_min:=x;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>8000000)then goto 6666 else avail:=x;end;mem_end:=8000000; for k:=hi_mem_min to mem_end do begin get(fmt_file);mem[k]:=fmt_file^; end;begin get(fmt_file);var_used:=fmt_file^.int;end;begin get(fmt_file); dyn_used:=fmt_file^.int;end{:1313};{1315:}{1318:}k:=1; repeat begin get(fmt_file);x:=fmt_file^.int;end; if(x<1)or(k+x>604022)then goto 6666; for j:=k to k+x-1 do begin get(fmt_file);eqtb[j]:=fmt_file^;end;k:=k+x; begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(k+x>604022)then goto 6666; for j:=k to k+x-1 do eqtb[j]:=eqtb[k-1];k:=k+x;until k>604021{:1318}; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<514)or(x>600514)then goto 6666 else par_loc:=x;end; par_token:=4095+par_loc;begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<514)or(x>600514)then goto 6666 else write_loc:=x;end; {1320:}begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<514)or(x>600514)then goto 6666 else hash_used:=x;end;p:=513; repeat begin begin get(fmt_file);x:=fmt_file^.int;end; if(xhash_used)then goto 6666 else p:=x;end; begin get(fmt_file);hash[p]:=fmt_file^.hh;end;until p=hash_used; for p:=hash_used+1 to 600780 do begin get(fmt_file); hash[p]:=fmt_file^.hh;end;begin get(fmt_file);cs_count:=fmt_file^.int; end{:1320}{:1315};{1322:}begin begin get(fmt_file);x:=fmt_file^.int;end; if x<7 then goto 6666;if x>font_mem_size then begin; write_ln(term_out,'---! Must increase the ','font mem size');goto 6666; end else fmem_ptr:=x;end;for k:=0 to fmem_ptr-1 do begin get(fmt_file); font_info[k]:=fmt_file^;end;begin begin get(fmt_file);x:=fmt_file^.int; end;if x<0 then goto 6666;if x>font_max then begin; write_ln(term_out,'---! Must increase the ','font max');goto 6666; end else font_ptr:=x;end; for k:=0 to font_ptr do{1324:}begin begin get(fmt_file); font_check[k]:=fmt_file^.qqqq;end;begin get(fmt_file); font_size[k]:=fmt_file^.int;end;begin get(fmt_file); font_dsize[k]:=fmt_file^.int;end;begin begin get(fmt_file); x:=fmt_file^.int;end; if(x<0)or(x>536870911)then goto 6666 else font_params[k]:=x;end; begin get(fmt_file);hyphen_char[k]:=fmt_file^.int;end; begin get(fmt_file);skew_char[k]:=fmt_file^.int;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>str_ptr)then goto 6666 else font_name[k]:=x;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>str_ptr)then goto 6666 else font_area[k]:=x;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>255)then goto 6666 else font_bc[k]:=x;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>255)then goto 6666 else font_ec[k]:=x;end; begin get(fmt_file);char_base[k]:=fmt_file^.int;end;begin get(fmt_file); width_base[k]:=fmt_file^.int;end;begin get(fmt_file); height_base[k]:=fmt_file^.int;end;begin get(fmt_file); depth_base[k]:=fmt_file^.int;end;begin get(fmt_file); italic_base[k]:=fmt_file^.int;end;begin get(fmt_file); lig_kern_base[k]:=fmt_file^.int;end;begin get(fmt_file); kern_base[k]:=fmt_file^.int;end;begin get(fmt_file); exten_base[k]:=fmt_file^.int;end;begin get(fmt_file); param_base[k]:=fmt_file^.int;end;begin begin get(fmt_file); x:=fmt_file^.int;end; if(x<0)or(x>lo_mem_max)then goto 6666 else font_glue[k]:=x;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>fmem_ptr-1)then goto 6666 else bchar_label[k]:=x;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>256)then goto 6666 else font_bchar[k]:=x;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>256)then goto 6666 else font_false_bchar[k]:=x;end; end{:1324}{:1322};{1326:}begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>8191)then goto 6666 else hyph_count:=x;end; for k:=1 to hyph_count do begin begin begin get(fmt_file); x:=fmt_file^.int;end;if(x<0)or(x>8191)then goto 6666 else j:=x;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>str_ptr)then goto 6666 else hyph_word[j]:=x;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>536870911)then goto 6666 else hyph_list[j]:=x;end;end; begin begin get(fmt_file);x:=fmt_file^.int;end;if x<0 then goto 6666; if x>trie_size then begin; write_ln(term_out,'---! Must increase the ','trie size');goto 6666; end else j:=x;end;trie_max:=j;begin begin get(fmt_file); x:=fmt_file^.int;end;if(x<0)or(x>j)then goto 6666 else hyph_start:=x; end;for k:=0 to j do begin get(fmt_file);trie[k]:=fmt_file^.hh;end; begin begin get(fmt_file);x:=fmt_file^.int;end;if x<0 then goto 6666; if x>trie_op_size then begin; write_ln(term_out,'---! Must increase the ','trie op size');goto 6666; end else j:=x;end;trie_op_ptr:=j; for k:=1 to j do begin begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>63)then goto 6666 else hyf_distance[k]:=x;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>63)then goto 6666 else hyf_num[k]:=x;end; begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>65535)then goto 6666 else hyf_next[k]:=x;end;end; for k:=0 to 255 do trie_used[k]:=0;k:=256; while j>0 do begin begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>k-1)then goto 6666 else k:=x;end;begin begin get(fmt_file); x:=fmt_file^.int;end;if(x<1)or(x>j)then goto 6666 else x:=x;end; trie_used[k]:=x+0;j:=j-x;op_start[k]:=j-0;end; trie_not_ready:=false{:1326};{1328:}begin begin get(fmt_file); x:=fmt_file^.int;end;if(x<0)or(x>3)then goto 6666 else interaction:=x; end;begin begin get(fmt_file);x:=fmt_file^.int;end; if(x<0)or(x>str_ptr)then goto 6666 else format_ident:=x;end; begin get(fmt_file);x:=fmt_file^.int;end; if(x<>69069)or eof(fmt_file)then goto 6666{:1328};load_fmt_file:=true; goto 10;6666:; write_ln(term_out,'(Fatal format file error; I''m stymied)'); load_fmt_file:=false;10:end; {:1304}{1331:}{1334:}procedure close_files_and_terminate;var k:integer; begin{1379:}for k:=0 to 15 do if write_open[k]then a_close(write_file[k] ){:1379};eqtb[603217].int:=-1; {if eqtb[603199].int>0 then[1335:]if log_opened then begin write_ln( log_file,' '); write_ln(log_file,'Here is how much of TeX''s memory',' you used:'); write(log_file,' ',str_ptr-init_str_ptr:1,' string'); if str_ptr<>init_str_ptr+1 then write(log_file,'s'); write_ln(log_file,' out of ',max_strings-init_str_ptr:1); write_ln(log_file,' ',pool_ptr-init_pool_ptr:1, ' string characters out of ',pool_size-init_pool_ptr:1); write_ln(log_file,' ',lo_mem_max-mem_min+mem_end-hi_mem_min+2:1, ' words of memory out of ',mem_end+1-mem_min:1); write_ln(log_file,' ',cs_count:1, ' multiletter control sequences out of ',600000:1); write(log_file,' ',fmem_ptr:1,' words of font info for ',font_ptr-0:1, ' font');if font_ptr<>1 then write(log_file,'s'); write_ln(log_file,', out of ',font_mem_size:1,' for ',font_max-0:1); write(log_file,' ',hyph_count:1,' hyphenation exception'); if hyph_count<>1 then write(log_file,'s'); write_ln(log_file,' out of ',8191:1); write_ln(log_file,' ',max_in_stack:1,'i,',max_nest_stack:1,'n,', max_param_stack:1,'p,',max_buf_stack+1:1,'b,',max_save_stack+6:1, 's stack positions out of ',stack_size:1,'i,',nest_size:1,'n,', param_size:1,'p,',buf_size:1,'b,',save_size:1,'s');end[:1335];}; {643:}while cur_s>-1 do begin if cur_s>0 then begin dvi_buf[dvi_ptr]:= 142;dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap; end else begin begin dvi_buf[dvi_ptr]:=140;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;total_pages:=total_pages+1;end; cur_s:=cur_s-1;end; if total_pages=0 then print_nl(862)else begin begin dvi_buf[dvi_ptr]:= 248;dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; dvi_four(last_bop);last_bop:=dvi_offset+dvi_ptr-5;dvi_four(25400000); dvi_four(473628672);prepare_mag;dvi_four(eqtb[603185].int); dvi_four(max_v);dvi_four(max_h); begin dvi_buf[dvi_ptr]:=max_push div 256;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; begin dvi_buf[dvi_ptr]:=max_push mod 256;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; begin dvi_buf[dvi_ptr]:=(total_pages div 256)mod 256;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; begin dvi_buf[dvi_ptr]:=total_pages mod 256;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; {644:}while font_ptr>0 do begin if font_used[font_ptr]then dvi_font_def( font_ptr);font_ptr:=font_ptr-1;end{:644};begin dvi_buf[dvi_ptr]:=249; dvi_ptr:=dvi_ptr+1;if dvi_ptr=dvi_limit then dvi_swap;end; dvi_four(last_bop);begin dvi_buf[dvi_ptr]:=2;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end; k:=4+((dvi_buf_size-dvi_ptr)mod 4); while k>0 do begin begin dvi_buf[dvi_ptr]:=223;dvi_ptr:=dvi_ptr+1; if dvi_ptr=dvi_limit then dvi_swap;end;k:=k-1;end; {600:}if dvi_limit=half_buf then write_dvi(half_buf,dvi_buf_size-1); if dvi_ptr>0 then write_dvi(0,dvi_ptr-1){:600};print_nl(863); slow_print(output_file_name);print(288);print_int(total_pages); print(864);if total_pages<>1 then print_char(115);print(865); print_int(dvi_offset+dvi_ptr);print(866);b_close(dvi_file);end{:643}; if log_opened then begin write_ln(log_file);a_close(log_file); selector:=selector-2;if selector=17 then begin print_nl(1302); slow_print(log_name);print_char(46);end;end;end; {:1334}{1336:}procedure final_cleanup;label 10;var c:small_number; begin c:=cur_chr;if c<>1 then eqtb[603217].int:=-1; if job_name=0 then open_log_file; while input_ptr>0 do if cur_input.state_field=0 then end_token_list else end_file_reading;while open_parens>0 do begin print(1303); open_parens:=open_parens-1;end;if cur_level>1 then begin print_nl(40); print_esc(1304);print(1305);print_int(cur_level-1);print_char(41); if(eTeX_mode=1)then show_save_groups;end; while cond_ptr<>0 do begin print_nl(40);print_esc(1304);print(1306); print_cmd_chr(105,cur_if);if if_line<>0 then begin print(1307); print_int(if_line);end;print(1308);if_line:=mem[cond_ptr+1].int; cur_if:=mem[cond_ptr].hh.b1;temp_ptr:=cond_ptr; cond_ptr:=mem[cond_ptr].hh.rh;free_node(temp_ptr,2);end; if history<>0 then if((history=1)or(interaction<3))then if selector=19 then begin selector:=17;print_nl(1309);selector:=19;end; if c=1 then begin for c:=0 to 4 do if cur_mark[c]<>0 then delete_token_ref(cur_mark[c]); if sa_root[6]<>0 then if do_marks(3,0,sa_root[6])then sa_root[6]:=0; for c:=2 to 3 do flush_node_list(disc_ptr[c]); if last_glue<>536870911 then delete_glue_ref(last_glue);store_fmt_file; goto 10;print_nl(1310);goto 10;end;10:end; {:1336}{1337:}procedure init_prim;begin no_new_control_sequence:=false; first:=0;{226:}primitive(380,75,600782);primitive(381,75,600783); primitive(382,75,600784);primitive(383,75,600785); primitive(384,75,600786);primitive(385,75,600787); primitive(386,75,600788);primitive(387,75,600789); primitive(388,75,600790);primitive(389,75,600791); primitive(390,75,600792);primitive(391,75,600793); primitive(392,75,600794);primitive(393,75,600795); primitive(394,75,600796);primitive(395,76,600797); primitive(396,76,600798);primitive(397,76,600799); {:226}{230:}primitive(402,72,601313);primitive(403,72,601314); primitive(404,72,601315);primitive(405,72,601316); primitive(406,72,601317);primitive(407,72,601318); primitive(408,72,601319);primitive(409,72,601320); primitive(410,72,601321);{:230}{238:}primitive(424,73,603168); primitive(425,73,603169);primitive(426,73,603170); primitive(427,73,603171);primitive(428,73,603172); primitive(429,73,603173);primitive(430,73,603174); primitive(431,73,603175);primitive(432,73,603176); primitive(433,73,603177);primitive(434,73,603178); primitive(435,73,603179);primitive(436,73,603180); primitive(437,73,603181);primitive(438,73,603182); primitive(439,73,603183);primitive(440,73,603184); primitive(441,73,603185);primitive(442,73,603186); primitive(443,73,603187);primitive(444,73,603188); primitive(445,73,603189);primitive(446,73,603190); primitive(447,73,603191);primitive(448,73,603192); primitive(449,73,603193);primitive(450,73,603194); primitive(451,73,603195);primitive(452,73,603196); primitive(453,73,603197);primitive(454,73,603198); primitive(455,73,603199);primitive(456,73,603200); primitive(457,73,603201);primitive(458,73,603202); primitive(459,73,603203);primitive(460,73,603204); primitive(461,73,603205);primitive(462,73,603206); primitive(463,73,603207);primitive(464,73,603208); primitive(465,73,603209);primitive(466,73,603210); primitive(467,73,603211);primitive(468,73,603212); primitive(469,73,603213);primitive(470,73,603214); primitive(471,73,603215);primitive(472,73,603216); primitive(473,73,603217);primitive(474,73,603218); primitive(475,73,603219);primitive(476,73,603220); primitive(477,73,603221);primitive(478,73,603222); {:238}{248:}primitive(482,74,603745);primitive(483,74,603746); primitive(484,74,603747);primitive(485,74,603748); primitive(486,74,603749);primitive(487,74,603750); primitive(488,74,603751);primitive(489,74,603752); primitive(490,74,603753);primitive(491,74,603754); primitive(492,74,603755);primitive(493,74,603756); primitive(494,74,603757);primitive(495,74,603758); primitive(496,74,603759);primitive(497,74,603760); primitive(498,74,603761);primitive(499,74,603762); primitive(500,74,603763);primitive(501,74,603764); primitive(502,74,603765);{:248}{265:}primitive(32,64,0); primitive(47,44,0);primitive(512,45,0);primitive(513,90,0); primitive(514,40,0);primitive(515,41,0);primitive(516,61,0); primitive(517,16,0);primitive(508,107,0);primitive(518,15,0); primitive(519,92,0);primitive(509,67,0);primitive(520,62,0); hash[600516].rh:=520;eqtb[600516]:=eqtb[cur_val];primitive(521,102,0); primitive(522,88,0);primitive(523,77,0);primitive(524,32,0); primitive(525,36,0);primitive(526,39,0);primitive(332,37,0); primitive(355,18,0);primitive(527,46,0);primitive(528,17,0); primitive(529,54,0);primitive(530,91,0);primitive(531,34,0); primitive(532,65,0);primitive(533,103,0);primitive(337,55,0); primitive(534,63,0);primitive(535,84,601312);primitive(536,42,0); primitive(537,80,0);primitive(538,66,0);primitive(539,96,0); primitive(540,0,256);hash[600521].rh:=540;eqtb[600521]:=eqtb[cur_val]; primitive(541,98,0);primitive(542,109,0);primitive(411,71,0); primitive(356,38,0);primitive(543,33,0);primitive(544,56,0); primitive(545,35,0);{:265}{334:}primitive(607,13,256);par_loc:=cur_val; par_token:=4095+par_loc;{:334}{376:}primitive(639,104,0); primitive(640,104,1);{:376}{384:}primitive(641,110,0); primitive(642,110,1);primitive(643,110,2);primitive(644,110,3); primitive(645,110,4);{:384}{411:}primitive(480,89,0); primitive(504,89,1);primitive(399,89,2);primitive(400,89,3); {:411}{416:}primitive(678,79,102);primitive(679,79,1); primitive(680,82,0);primitive(681,82,1);primitive(682,83,1); primitive(683,83,3);primitive(684,83,2);primitive(685,70,0); primitive(686,70,1);primitive(687,70,2);primitive(688,70,4); primitive(689,70,5);{:416}{468:}primitive(745,108,0); primitive(746,108,1);primitive(747,108,2);primitive(748,108,3); primitive(749,108,4);primitive(750,108,15); {:468}{488:}primitive(781,105,0);primitive(782,105,1); primitive(783,105,2);primitive(784,105,3);primitive(785,105,4); primitive(786,105,5);primitive(787,105,6);primitive(788,105,7); primitive(789,105,8);primitive(790,105,9);primitive(791,105,10); primitive(792,105,11);primitive(793,105,12);primitive(794,105,13); primitive(795,105,14);primitive(796,105,15);primitive(797,105,16); {:488}{492:}primitive(799,106,2);hash[600518].rh:=799; eqtb[600518]:=eqtb[cur_val];primitive(800,106,4);primitive(801,106,3); {:492}{554:}primitive(826,87,0);hash[600524].rh:=826; eqtb[600524]:=eqtb[cur_val];{:554}{781:}primitive(924,4,256); primitive(925,5,257);hash[600515].rh:=925;eqtb[600515]:=eqtb[cur_val]; primitive(926,5,258);hash[600519].rh:=927;hash[600520].rh:=927; eqtb[600520].hh.b0:=9;eqtb[600520].hh.rh:=7999989;eqtb[600520].hh.b1:=1; eqtb[600519]:=eqtb[600520];eqtb[600519].hh.b0:=115; {:781}{984:}primitive(996,81,0);primitive(997,81,1);primitive(998,81,2); primitive(999,81,3);primitive(1000,81,4);primitive(1001,81,5); primitive(1002,81,6);primitive(1003,81,7); {:984}{1053:}primitive(345,14,0);primitive(1051,14,1); {:1053}{1059:}primitive(1052,26,4);primitive(1053,26,0); primitive(1054,26,1);primitive(1055,26,2);primitive(1056,26,3); primitive(1057,27,4);primitive(1058,27,0);primitive(1059,27,1); primitive(1060,27,2);primitive(1061,27,3);primitive(338,28,5); primitive(342,29,1);primitive(344,30,99); {:1059}{1072:}primitive(1079,21,1);primitive(1080,21,0); primitive(1081,22,1);primitive(1082,22,0);primitive(413,20,0); primitive(1083,20,1);primitive(1084,20,2);primitive(991,20,3); primitive(1085,20,4);primitive(993,20,5);primitive(1086,20,106); primitive(1087,31,99);primitive(1088,31,100);primitive(1089,31,101); primitive(1090,31,102);{:1072}{1089:}primitive(1106,43,1); primitive(1107,43,0);{:1089}{1108:}primitive(1116,25,12); primitive(1117,25,11);primitive(1118,25,10);primitive(1119,23,0); primitive(1120,23,1);primitive(1121,24,0);primitive(1122,24,1); {:1108}{1115:}primitive(45,47,1);primitive(353,47,0); {:1115}{1142:}primitive(1153,48,0);primitive(1154,48,1); {:1142}{1157:}primitive(891,50,16);primitive(892,50,17); primitive(893,50,18);primitive(894,50,19);primitive(895,50,20); primitive(896,50,21);primitive(897,50,22);primitive(898,50,23); primitive(900,50,26);primitive(899,50,27);primitive(1155,51,0); primitive(904,51,1);primitive(905,51,2); {:1157}{1170:}primitive(886,53,0);primitive(887,53,2); primitive(888,53,4);primitive(889,53,6); {:1170}{1179:}primitive(1173,52,0);primitive(1174,52,1); primitive(1175,52,2);primitive(1176,52,3);primitive(1177,52,4); primitive(1178,52,5);{:1179}{1189:}primitive(901,49,30); primitive(902,49,31);hash[600517].rh:=902;eqtb[600517]:=eqtb[cur_val]; {:1189}{1209:}primitive(1198,93,1);primitive(1199,93,2); primitive(1200,93,4);primitive(1201,97,0);primitive(1202,97,1); primitive(1203,97,2);primitive(1204,97,3); {:1209}{1220:}primitive(1221,94,0);primitive(1222,94,1); {:1220}{1223:}primitive(1223,95,0);primitive(1224,95,1); primitive(1225,95,2);primitive(1226,95,3);primitive(1227,95,4); primitive(1228,95,5);primitive(1229,95,6); {:1223}{1231:}primitive(419,85,601888);primitive(423,85,602912); primitive(420,85,602144);primitive(421,85,602400); primitive(422,85,602656);primitive(481,85,603489); primitive(416,86,601840);primitive(417,86,601856); primitive(418,86,601872);{:1231}{1251:}primitive(967,99,0); primitive(979,99,1);{:1251}{1255:}primitive(1246,78,0); primitive(1247,78,1);{:1255}{1263:}primitive(276,100,0); primitive(277,100,1);primitive(278,100,2);primitive(1256,100,3); {:1263}{1273:}primitive(1257,60,1);primitive(1258,60,0); {:1273}{1278:}primitive(1259,58,0);primitive(1260,58,1); {:1278}{1287:}primitive(1266,57,602144);primitive(1267,57,602400); {:1287}{1292:}primitive(1268,19,0);primitive(1269,19,1); primitive(1270,19,2);primitive(1271,19,3); {:1292}{1345:}primitive(1312,59,0);primitive(604,59,1); write_loc:=cur_val;primitive(1313,59,2);primitive(1314,59,3); primitive(1315,59,4);primitive(1316,59,5);{:1345}; no_new_control_sequence:=true;end;{:1337}{1339:}{procedure debug_help; label 888,10;var k,l,m,n:integer;begin break_in(term_in,true); while true do begin;print_nl(1311);break(term_out);read(term_in,m); if m<0 then goto 10 else if m=0 then begin goto 888;888:m:=0; ['BREAKPOINT']end else begin read(term_in,n); case m of[1340:]1:print_word(mem[n]);2:print_int(mem[n].hh.lh); 3:print_int(mem[n].hh.rh);4:print_word(eqtb[n]); 5:print_word(font_info[n]);6:print_word(save_stack[n]);7:show_box(n); 8:begin breadth_max:=10000;depth_threshold:=pool_size-pool_ptr-10; show_node_list(n);end;9:show_token_list(n,0,1000);10:slow_print(n); 11:check_mem(n>0);12:search_mem(n);13:begin read(term_in,l); print_cmd_chr(n,l);end;14:for k:=0 to n do print(buffer[k]); 15:begin font_in_short_display:=0;short_display(n);end; 16:panicking:=not panicking;[:1340]others:print(63)end;end;end;10:end;} {:1339}{:1331}{1333:}begin history:=3;rewrite(term_out,'TTY:','/O'); if ready_already=314159 then goto 1;{14:}bad:=0; if(half_error_line<30)or(half_error_line>error_line-15)then bad:=1; if max_print_line<60 then bad:=2;if dvi_buf_size mod 8<>0 then bad:=3; if 1100>8000000 then bad:=4;if 1777>600000 then bad:=5; if max_in_open>=128 then bad:=6;if 8000000<267 then bad:=7; {:14}{111:}if(mem_min<>0)or(mem_max<>8000000)then bad:=10; if(mem_min>0)or(mem_max<8000000)then bad:=10; if(0>0)or(65535<127)then bad:=11;if(0>0)or(536870911<32767)then bad:=12; if(0<0)or(65535>536870911)then bad:=13; if(mem_min<0)or(mem_max>=536870911)or(-0-mem_min>536870912)then bad:=14; if(0<0)or(font_max>65535)then bad:=15;if font_max>256 then bad:=16; if(save_size>536870911)or(max_strings>536870911)then bad:=17; if buf_size>536870911 then bad:=18;if 65535<255 then bad:=19; {:111}{290:}if 604876>536870911 then bad:=21; {:290}{523:}if 20>file_name_size then bad:=31; {:523}{1250:}if 2*536870911<8000000-mem_min then bad:=41; {:1250}if bad>0 then begin write_ln(term_out, 'Ouch---my internal constants have been clobbered!','---case ',bad:1); goto 9999;end;initialize;if not get_strings_started then goto 9999; init_prim;init_str_ptr:=str_ptr;init_pool_ptr:=pool_ptr; fix_date_and_time;ready_already:=314159;1:{55:}selector:=17;tally:=0; term_offset:=0;file_offset:=0; {:55}{61:}write(term_out,'This is jsTeX, Version 3.141592653','-2.6', '-1.0'); if format_ident=0 then write_ln(term_out,' (no format preloaded)')else begin slow_print(format_ident);print_ln;end;break(term_out); {:61}{529:}job_name:=0;name_in_progress:=false;log_opened:=false; {:529}{534:}output_file_name:=0;{:534}; {1338:}begin{331:}begin input_ptr:=0;max_in_stack:=0;in_open:=0; open_parens:=0;max_buf_stack:=0;grp_stack[0]:=0;if_stack[0]:=0; param_ptr:=0;max_param_stack:=0;first:=buf_size;repeat buffer[first]:=0; first:=first-1;until first=0;scanner_status:=0;warning_index:=0; first:=1;cur_input.state_field:=33;cur_input.start_field:=1; cur_input.index_field:=0;line:=0;cur_input.name_field:=0; force_eof:=false;align_state:=1000000; if not init_terminal then goto 9999;cur_input.limit_field:=last; first:=last+1;end{:331}; {1380:}if(buffer[cur_input.loc_field]=42)and(format_ident=1284)then begin no_new_control_sequence:=false;{1381:}primitive(1330,70,3); primitive(1331,70,6);primitive(751,108,5); {:1381}{1389:}primitive(1333,72,601322);primitive(1334,73,603223); primitive(1335,73,603224);primitive(1336,73,603225); primitive(1337,73,603226);primitive(1338,73,603227); primitive(1339,73,603228);primitive(1340,73,603229); primitive(1341,73,603230);primitive(1342,73,603231); {:1389}{1395:}primitive(1356,70,7);primitive(1357,70,8); {:1395}{1398:}primitive(1358,70,9);primitive(1359,70,10); primitive(1360,70,11);{:1398}{1401:}primitive(1361,70,15); primitive(1362,70,16);primitive(1363,70,17);primitive(1364,70,18); {:1401}{1404:}primitive(1365,70,19);primitive(1366,70,20); primitive(1367,70,21);{:1404}{1407:}primitive(1368,19,4); {:1407}{1416:}primitive(1370,19,5);{:1416}{1418:}primitive(1371,109,1); primitive(1372,109,5);{:1418}{1421:}primitive(1373,19,6); {:1421}{1424:}primitive(1377,82,2);{:1424}{1429:}primitive(903,49,1); {:1429}{1433:}primitive(1381,73,603232);primitive(1382,33,6); primitive(1383,33,7);primitive(1384,33,10);primitive(1385,33,11); {:1433}{1483:}primitive(1394,104,2);{:1483}{1495:}primitive(1397,96,1); {:1495}{1498:}primitive(798,102,1);primitive(1398,105,17); primitive(1399,105,18);primitive(1400,105,19); {:1498}{1506:}primitive(1212,93,8);{:1506}{1514:}primitive(1406,70,26); primitive(1407,70,27);primitive(1408,70,28);primitive(1409,70,29); {:1514}{1537:}primitive(1413,70,12);primitive(1414,70,13); primitive(1415,70,22);primitive(1416,70,23); {:1537}{1541:}primitive(1417,70,24);primitive(1418,70,25); {:1541}{1545:}primitive(1419,18,5);primitive(1420,110,5); primitive(1421,110,6);primitive(1422,110,7);primitive(1423,110,8); primitive(1424,110,9);{:1545}{1597:}primitive(1428,24,2); primitive(1429,24,3);{:1597}{1600:}primitive(1430,84,601579); primitive(1431,84,601580);primitive(1432,84,601581); primitive(1433,84,601582);{:1600}{1603:}primitive(752,108,9); {:1603}{1605:}primitive(753,108,6);{:1605}{1607:}primitive(754,108,11); {:1607}{1608:}primitive(1395,104,3);{:1608}{1610:}primitive(755,108,7); primitive(756,108,8);{:1610}{1611:}primitive(757,108,10); {:1611}{1612:}primitive(758,108,12);{:1612}{1614:}primitive(759,108,14); {:1614}{1615:}primitive(1434,70,14);primitive(760,108,13); {:1615}cur_input.loc_field:=cur_input.loc_field+1;eTeX_mode:=1; {1549:}max_reg_num:=32767;max_reg_help_line:=1425;{:1549}end; if not no_new_control_sequence then no_new_control_sequence:=true else {:1380}if(format_ident=0)or(buffer[cur_input.loc_field]=38)then begin if format_ident<>0 then initialize;if not open_fmt_file then goto 9999; if not load_fmt_file then begin w_close(fmt_file);goto 9999;end; w_close(fmt_file); while(cur_input.loc_field255)then cur_input.limit_field :=cur_input.limit_field-1 else buffer[cur_input.limit_field]:=eqtb[ 603216].int;fix_date_and_time; {766:}magic_offset:=str_start[918]-9*16{:766}; {75:}if interaction=0 then selector:=16 else selector:=17{:75}; if(cur_input.loc_field0)then start_input;end{:1338};history:=0; main_control;final_cleanup;9998:close_files_and_terminate; 9999:ready_already:=0;end.{:1333}