6 #pragma warning(disable:4115) // kill rpcasync.h complaint
8 #define MYLIBAPI __declspec(dllexport)
13 #pragma warning(disable:4996)
14 #pragma warning(disable:4131) // old style declarator
15 #pragma warning(disable:4135) // conversion between different integral types
16 #pragma warning(disable:4127) // conditional expression is constant
24 #pragma warning(disable:4244) /* 96/Jan/10 */
26 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
28 /* following bit used to be end of tex1.c */
31 void restore_trace_(halfword p, str_number s)
34 print_char(123); /* { */
38 print_char(125); /* } */
39 end_diagnostic(false);
52 if(save_stack[save_ptr].hh.b0 == 3)
54 p = save_stack[save_ptr].hh.v.RH;
55 if(save_stack[save_ptr].hh.b0 == 2)
64 if(save_stack[save_ptr].hh.b0 == 0)
66 l = save_stack[save_ptr].hh.b1;
69 else save_stack[save_ptr]= eqtb[(hash_size + 781)];
70 /* undefine_control_sequence */
71 if(p < (hash_size + 3163))
72 if(eqtb[p].hh.b1 == 1)
74 eq_destroy(save_stack[save_ptr]);
77 if(eqtb[(hash_size + 3200)].cint > 0)
78 restore_trace(p, 541); /* retaining */
84 eqtb[p]= save_stack[save_ptr];
87 if(eqtb[(hash_size + 3200)].cint > 0)
88 restore_trace(p, 542); /* restoring */
91 else if(xeq_level[p]!= 1)
93 eqtb[p]= save_stack[save_ptr];
94 xeq_level[p]= l; /* l may be used without having been ... */
97 if(eqtb[(hash_size + 3200)].cint > 0)
98 restore_trace(p, 542); /* restoring */
105 if(eqtb[(hash_size + 3200)].cint > 0)
106 restore_trace(p, 541); /* retaining */
111 lab30: cur_group = save_stack[save_ptr].hh.b1;
112 cur_boundary = save_stack[save_ptr].hh.v.RH;
115 confusion(540); /* cur_level */
116 return; // abort_flag set
119 /* This is where the old tex2.c used to start */
120 void prepare_mag (void)
122 if((mag_set > 0)&&(eqtb[(hash_size + 3180)].cint != mag_set))
127 print_nl(266); /* ! */
128 print(544); /* Incompatible magnification(*/
130 print_int(eqtb[(hash_size + 3180)].cint);
132 print_nl(546); /* the previous value will be retained */
135 help_line[1]= 547; /* I can handle only one magnification ratio per job. */
136 help_line[0]= 548; /* So I've reverted to the magnification you used earlier on this run. */
140 geq_word_define((hash_size + 3180), mag_set);
142 if((eqtb[(hash_size + 3180)].cint <= 0)||
143 (eqtb[(hash_size + 3180)].cint > 32768L))
148 print_nl(262); /* ! */
149 print(549); /* Illegal magnification has been changed to 1000 */
153 help_line[0]= 550; /* The magnification ratio must be between 1 and 32768. */
155 int_error(eqtb[(hash_size + 3180)].cint);
156 geq_word_define((hash_size + 3180), 1000);
158 mag_set = eqtb[(hash_size + 3180)].cint;
160 void token_show_ (halfword p)
162 /* begin if p<>null then show_token_list(link(p),null,10000000); l.6289 */
164 show_token_list(mem[p].hh.v.RH, 0, 10000000L);
166 void print_meaning (void)
168 print_cmd_chr(cur_cmd, cur_chr);
171 print_char(58); /* : */
175 else if(cur_cmd == 110)
177 print_char(58); /* : */
179 token_show(cur_mark[cur_chr]);
182 void show_cur_cmd_chr (void)
185 print_nl(123); /* { */
186 if(mode != shown_mode)
192 print_cmd_chr(cur_cmd, cur_chr);
193 print_char(125); /* } */
194 end_diagnostic(false);
196 void show_context (void)
208 base_ptr = input_ptr;
209 input_stack[base_ptr] = cur_input;
213 cur_input = input_stack[base_ptr];
214 if((cur_input.state_field != 0))
215 if((cur_input.name_field > 17)||(base_ptr == 0))
217 if((base_ptr == input_ptr)|| bottomline ||
218 (nn < eqtb[(hash_size + 3217)].cint))
220 /* begin if (base_ptr=input_ptr) or (state<>token_list) or
221 (token_type<>backed_up) or (loc<>null) then
222 {we omit backed-up token lists that have already been read} l.6761 */
223 if((base_ptr == input_ptr)||(cur_input.state_field != 0)||(
224 cur_input.index_field != 3)||(cur_input.loc_field != 0))
227 old_setting = selector;
228 if(cur_input.state_field != 0)
230 if(cur_input.name_field <= 17)
231 if((cur_input.name_field == 0))
232 if(base_ptr == 0)print_nl(571); /* <*> */
233 else print_nl(572); /* <insert> */
235 print_nl(573); /* <read */
236 if(cur_input.name_field == 17)
237 print_char(42); /* * */
238 else print_int(cur_input.name_field - 1);
239 print_char(62); /* > */
243 /* print_int(line); */
244 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
245 if (c_style_flag) { /* 94/Mar/21 */
246 print_ln(); /* new line */
247 /* show current input file name - ignore if from terminal */
248 if (cur_input.name_field > 17) /* redundant ? */
249 print(cur_input.name_field);
250 print_char(40); /*(*/
251 print_int(line); /* line number */
252 print_char(41); /*)*/
253 print_char(32); /* */
254 print_char(58); /* : */
257 print_nl(574); /* l. ? 573 ????? 98/Dec/8 check ! */
258 print_int(line); /* line number */
260 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
262 print_char(32); /* */
267 trick_count = 1000000L;
269 if(buffer[cur_input.limit_field]== eqtb[(hash_size + 3211)].cint)
270 j = cur_input.limit_field;
271 else j = cur_input.limit_field + 1;
274 register integer for_end;
275 i = cur_input.start_field;
279 if(i == cur_input.loc_field)
282 trick_count = tally + 1 + error_line - half_error_line;
283 if(trick_count < error_line)
284 trick_count = error_line;
288 while(i++ < for_end);
293 switch(cur_input.index_field)
295 print_nl(575); /* <argument> */
299 print_nl(576); /* <template> */
302 if(cur_input.loc_field == 0)
303 print_nl(577); /* <recently read> */
304 else print_nl(578); /* <to be read again> */
307 print_nl(579); /* <inserted text> */
312 print_cs(cur_input.name_field);
316 print_nl(580); /* <output> */
319 print_nl(581); /* <everypar> */
322 print_nl(582); /* <everymath> */
325 print_nl(583); /* <everydisplay> */
328 print_nl(584); /* <everyhbox> */
331 print_nl(585); /* <everyvbox> */
334 print_nl(586); /* <everyjob> */
337 print_nl(587); /* <everycr> */
340 print_nl(588); /* <mark> */
343 print_nl(589); /* <write> */
346 print_nl(63); /* ? */
353 trick_count = 1000000L;
355 if(cur_input.index_field < 5)
356 show_token_list(cur_input.start_field, cur_input.loc_field, 100000L
358 else show_token_list(mem[cur_input.start_field].hh.v.RH,
359 cur_input.loc_field, 100000L);
361 selector = old_setting;
362 if(trick_count == 1000000L)
365 trick_count = tally + 1 + error_line - half_error_line;
366 if(trick_count < error_line)
367 trick_count = error_line;
369 if(tally < trick_count)
370 m = tally - first_count;
371 else m = trick_count - first_count;
372 if(l + first_count <= half_error_line){
377 print(275); /* ... */
378 p = l + first_count - half_error_line + 3;
382 register integer for_end;
384 for_end = first_count - 1;
386 print_char(trick_buf[q % error_line]);
387 while(q++ < for_end);
391 register integer for_end;
395 do print_char(32); /* */
396 while(q++ < for_end);
398 if(m + n <= error_line)
400 else p = first_count +(error_line - n - 3);
402 register integer for_end;
406 print_char(trick_buf[q % error_line]);
407 while(q++ < for_end);
409 if(m + n > error_line)
410 print(275); /* ... */
414 else if(nn == eqtb[(hash_size + 3217)].cint)
416 print_nl(275); /* ... */
423 lab30: cur_input = input_stack[input_ptr];
425 #pragma optimize("g", off) /* 98/Dec/10 experiment */
426 void begin_token_list_ (halfword p, quarterword t)
429 if(input_ptr > max_in_stack)
431 max_in_stack = input_ptr;
432 #ifdef ALLOCATEINPUTSTACK
433 if(input_ptr == current_stack_size)
434 input_stack = realloc_input_stack (increment_stack_size);
435 if(input_ptr == current_stack_size){ /* check again after allocation */
436 overflow(590, current_stack_size);
437 return; // abort_flag set
440 if(input_ptr == stack_size) { /* input stack - not dynamic */
441 overflow(590, stack_size);
442 return; // abort_flag set
446 input_stack[input_ptr]= cur_input;
449 cur_input.state_field = 0;
450 cur_input.start_field = p;
451 cur_input.index_field = t;
454 incr(mem[p].hh.v.LH);
456 cur_input.limit_field = param_ptr;
459 cur_input.loc_field = mem[p].hh.v.RH;
460 if(eqtb[(hash_size + 3193)].cint > 1)
466 print_esc(348); /* mark */
469 print_esc(591); /* write */
472 print_cmd_chr(72, t + (hash_size + 1307)); /* H */
477 end_diagnostic(false);
481 else cur_input.loc_field = p;
483 #pragma optimize("", on) /* 98/Dec/10 experiment */
484 void end_token_list (void)
486 if(cur_input.index_field >= 3)
488 if(cur_input.index_field <= 4)
489 flush_list(cur_input.start_field);
491 delete_token_ref(cur_input.start_field);
492 if(cur_input.index_field == 5)
493 while(param_ptr > cur_input.limit_field){
495 flush_list(param_stack[param_ptr]);
499 else if(cur_input.index_field == 1)
500 if(align_state > 500000L)align_state = 0;
502 fatal_error(592); /* (interwoven alignment preambles are not allowed) */
503 return; // abort_flag set
507 cur_input = input_stack[input_ptr];
511 pause_for_instructions ();
515 void back_input (void)
518 while((cur_input.state_field == 0)&&(cur_input.loc_field == 0)) {
522 mem[p].hh.v.LH = cur_tok;
526 else incr(align_state);
528 if(input_ptr > max_in_stack)
530 max_in_stack = input_ptr;
531 #ifdef ALLOCATEINPUTSTACK
532 if(input_ptr == current_stack_size)
533 input_stack = realloc_input_stack (increment_stack_size);
534 if(input_ptr == current_stack_size){ /* check again after allocation */
535 overflow(590, current_stack_size);
536 return; // abort_flag set
539 if(input_ptr == stack_size) { /* stack size - not dynamic */
540 overflow(590, stack_size);
541 return; // abort_flag set
545 input_stack[input_ptr]= cur_input;
548 cur_input.state_field = 0;
549 cur_input.start_field = p;
550 cur_input.index_field = 3;
551 cur_input.loc_field = p;
553 void back_error (void)
555 OK_to_interrupt = false;
557 OK_to_interrupt = true;
560 void ins_error (void)
562 OK_to_interrupt = false;
564 cur_input.index_field = 4;
565 OK_to_interrupt = true;
568 void begin_file_reading (void)
570 if(in_open == max_in_open){
571 overflow(593, max_in_open); /* text input levels - NOT DYNAMIC */
572 return; // abort_flag set
574 #ifdef ALLOCATEBUFFER
575 if(first == current_buf_size)
576 buffer = realloc_buffer (increment_buf_size);
577 if(first == current_buf_size) { /* check again after allocation */
578 overflow(256, current_buf_size);
579 return; // abort_flag set
582 if(first == buf_size){
583 overflow(256, buf_size); /* buffer size - not dynamic */
584 return; // abort_flag set
589 if (in_open > high_in_open) /* 1999 Jan 17 */
590 high_in_open = in_open;
592 if(input_ptr > max_in_stack)
594 max_in_stack = input_ptr;
595 #ifdef ALLOCATEINPUTSTACK
596 if(input_ptr == current_stack_size)
597 input_stack = realloc_input_stack (increment_stack_size);
598 if(input_ptr == current_stack_size){
599 overflow(590, current_stack_size); /* check again after allocation */
600 return; // abort_flag set
603 if(input_ptr == stack_size){
604 overflow(590, stack_size); /* input stack - not dynamic */
605 return; // abort_flag set
609 input_stack[input_ptr]= cur_input;
612 cur_input.index_field = in_open;
613 line_stack[cur_input.index_field]= line;
614 cur_input.start_field = first;
615 cur_input.state_field = 1;
616 cur_input.name_field = 0;
618 void end_file_reading (void)
620 first = cur_input.start_field;
621 line = line_stack[cur_input.index_field];
622 if(cur_input.name_field > 17)
623 (void) a_close(input_file[cur_input.index_field]);
626 cur_input = input_stack[input_ptr];
630 /* called only form tex0.c */
631 void clear_for_error_prompt (void)
633 while((cur_input.state_field != 0)&&
634 (cur_input.name_field == 0)&&
636 (cur_input.loc_field > cur_input.limit_field))
640 void check_outer_validity (void)
644 if(scanner_status != 0)
646 deletions_allowed = false;
649 if((cur_input.state_field == 0)||(cur_input.name_field < 1)||
650 (cur_input.name_field > 17))
652 /* begin p:=get_avail; info(p):=cs_token_flag+cur_cs; */
654 mem[p].hh.v.LH = 4095 + cur_cs;
655 begin_token_list(p, 3);
660 if(scanner_status > 1)
667 print_nl(262); /* ! */
668 print(601); /* File ended */
676 print_nl(262); /* ! */
677 print(602); /* Forbidden control sequence found */
680 print(603); /* while scanning */
682 switch(scanner_status)
685 print(567); /* definition */
686 mem[p].hh.v.LH = 637;
691 print(609); /* use */
692 mem[p].hh.v.LH = par_token;
698 print(569); /* preamble */
699 mem[p].hh.v.LH = 637;
703 /* mem[p].hh.v.LH = (hash_size + 4610); */
704 /* mem[p].hh.v.LH = (hash_size + 4095 + 515); */
705 mem[p].hh.v.LH = (hash_size + hash_extra + 4095 + 515); /*96/Jan/10*/
706 align_state = -1000000L;
711 print(570); /* text */
712 mem[p].hh.v.LH = 637;
716 begin_token_list(p, 4);
718 sprint_cs(warning_index);
721 help_line[3]= 605; /* I suspect you have forgotten a `}', causing me */
722 help_line[2]= 606; /* to read past where you wanted me to stop. */
723 help_line[1]= 607; /* I'll try to recover; but if the error is serious, */
724 help_line[0]= 608; /* you'd better type `E' or `X' now and fix your file. */
733 print_nl(262); /* ! */
734 print(595); /* Incomplete */
736 print_cmd_chr(105, cur_if); /* i */
737 print(596); /*; all text was ignored after line */
738 print_int(skip_line);
741 help_line[2]= 597; /* A forbidden control sequence occurred in skipped text. */
742 help_line[1]= 598; /* This kind of error happens when you say `\if...' and forget */
743 help_line[0]= 599; /* the matching `\fi'. I've inserted a `\fi'; this might work. */
747 else help_line[2]= 600; /* The file ended while I was skipping conditional text. */
748 /* cur_tok = (hash_size + 4613); */
749 /* cur_tok = (hash_size + 4095 + 518); */
750 cur_tok = (hash_size + hash_extra + 4095 + 518); /* 96/Jan/10 */
753 deletions_allowed = true;
756 /*****************************************************************************/
757 /* get_next() moved from here to end for pragma optimize reasons 96/Sep/12 */
759 /*****************************************************************************/
760 void firm_up_the_line (void)
763 cur_input.limit_field = last;
764 if(eqtb[(hash_size + 3191)].cint > 0)
765 if(interaction > 1) {
768 if(cur_input.start_field < cur_input.limit_field) {
769 register integer for_end;
770 k = cur_input.start_field;
771 for_end = cur_input.limit_field - 1;
772 if(k <= for_end) do print(buffer[k]);
773 while(k++ < for_end);
775 first = cur_input.limit_field;
783 register integer for_end;
787 buffer[k + cur_input.start_field - first]= buffer[k];
788 while(k++ < for_end);
790 cur_input.limit_field = cur_input.start_field + last - first;
794 void get_token (void)
796 no_new_control_sequence = false;
798 no_new_control_sequence = true;
799 if(cur_cs == 0)cur_tok =(cur_cmd * 256)+ cur_chr;
800 else cur_tok = 4095 + cur_cs;
802 void macro_call (void)
803 {/* 10 22 30 31 40 */
815 small_number savescannerstatus;
816 halfword savewarningindex;
819 savescannerstatus = scanner_status;
820 savewarningindex = warning_index;
821 warning_index = cur_cs;
823 r = mem[refcount].hh.v.RH;
825 if(eqtb[(hash_size + 3193)].cint > 0)
829 print_cs(warning_index);
830 token_show(refcount);
831 end_diagnostic(false);
833 if(mem[r].hh.v.LH != 3584)
837 long_state = eqtb[cur_cs].hh.b0;
838 if(long_state >= 113)
839 long_state = long_state - 2;
841 mem[mem_top - 3].hh.v.RH = 0; /* repeat link(temp_head):=null; */
842 if((mem[r].hh.v.LH > 3583)||(mem[r].hh.v.LH < 3328))
843 s = 0; /* s:=null l.7984 */
846 matchchr = mem[r].hh.v.LH - 3328;
853 if(cur_tok == mem[r].hh.v.LH)
856 if((mem[r].hh.v.LH >= 3328)&&(mem[r].hh.v.LH <= 3584
871 print_nl(262); /* ! */
872 print(647); /* Use of */
874 sprint_cs(warning_index);
875 print(648); /* doesn't match its definition */
878 help_line[3]= 649; /* If you say, e.g., `\def\a1{...}', then you must always */
879 help_line[2]= 650; /* put `1' after `\a', since control sequence names are */
880 help_line[1]= 651; /* made up of letters only. The macro here has not been */
881 help_line[0]= 652; /* followed by the required stuff, so I'm ignoring it. */
893 mem[q].hh.v.LH = mem[t].hh.v.LH;
901 if(cur_tok != mem[v].hh.v.LH)
908 if(mem[u].hh.v.LH != mem[v].hh.v.LH)
913 lab30: t = mem[t].hh.v.RH;
917 if(cur_tok == par_token)
918 if(long_state != 112)
920 if(long_state == 111)
926 print_nl(262); /* ! */
927 print(642); /* Paragraph ended before */
929 sprint_cs(warning_index);
930 print(643); /* was complete */
933 help_line[2]= 644; /* I suspect you've forgotten a `}', causing me to apply this */
934 help_line[1]= 645; /* control sequence to too much text. How can we recover? */
935 help_line[0]= 646; /* My plan is to forget the whole thing and hope for the best. */
939 pstack[n]= mem[mem_top - 3].hh.v.RH;
940 align_state = align_state - unbalance;
942 register integer for_end;
946 flush_list(pstack[m]);
947 while(m++ < for_end);
963 avail = mem[q].hh.v.RH;
972 mem[q].hh.v.LH = cur_tok;
976 if(cur_tok == par_token)
977 if(long_state != 112)
979 if(long_state == 111)
985 print_nl(262); /* ! */
986 print(642); /* Paragraph ended before */
988 sprint_cs(warning_index);
989 print(643); /* was complete */
992 help_line[2]= 644; /* I suspect you've forgotten a `}', causing me to apply this */
993 help_line[1]= 645; /* control sequence to too much text. How can we recover? */
994 help_line[0]= 646; /* My plan is to forget the whole thing and hope for the best. */
998 pstack[n]= mem[mem_top - 3].hh.v.RH;
999 align_state = align_state - unbalance;
1001 register integer for_end;
1005 flush_list(pstack[m]);
1006 while(m++ < for_end);
1020 lab31: rbraceptr = p;
1024 mem[q].hh.v.LH = cur_tok;
1032 if(interaction == 3)
1034 print_nl(262); /* ! */
1035 print(634); /* Argument of */
1037 sprint_cs(warning_index);
1038 print(635); /* has an extra } */
1041 help_line[5]= 636; /* I've run across a `}' that doesn't seem to match anything. */
1042 help_line[4]= 637; /* For example, `\def\a#1{...}' and `\a}' would produce */
1043 help_line[3]= 638; /* this error. If you simply proceed now, the `\par' that */
1044 help_line[2]= 639; /* I've just inserted will cause me to report a runaway */
1045 help_line[1]= 640; /* argument that might be the root of the problem. But if */
1046 help_line[0]= 641; /* your `}' was spurious, just type `2' and it will go away. */
1050 cur_tok = par_token;
1056 if(mem[r].hh.v.LH <= 3584)
1057 if(mem[r].hh.v.LH >= 3328)
1061 mem[p].hh.v.RH = q; /* p may be used without having ... */
1062 mem[q].hh.v.LH = cur_tok;
1066 incr(m); /* m may be used without having been ... */
1067 if(mem[r].hh.v.LH > 3584)
1069 if(mem[r].hh.v.LH < 3328)
1073 if((m == 1)&&(mem[p].hh.v.LH < 768)&&(p != mem_top - 3
1076 mem[rbraceptr].hh.v.RH = 0; /* rbraceptr may be used without ... */
1078 mem[p].hh.v.RH = avail;
1085 p = mem[mem_top - 3].hh.v.RH;
1086 pstack[n]= mem[p].hh.v.RH;
1088 mem[p].hh.v.RH = avail;
1096 else pstack[n]= mem[mem_top - 3].hh.v.RH;
1098 if(eqtb[(hash_size + 3193)].cint > 0)
1100 begin_diagnostic ();
1101 print_nl(matchchr); /* matchchar may be used without ... */
1103 print(653); /* <- */
1104 show_token_list(pstack[n - 1], 0, 1000);
1105 end_diagnostic(false);
1108 } while(!(mem[r].hh.v.LH == 3584));
1110 /* while (state=token_list)and(loc=null) do end_token_list; l.7956 */
1111 while((cur_input.state_field == 0)&&(cur_input.loc_field == 0))
1113 begin_token_list(refcount, 5);
1114 cur_input.name_field = warning_index;
1115 cur_input.loc_field = mem[r].hh.v.RH;
1118 if(param_ptr + n > max_param_stack)
1120 max_param_stack = param_ptr + n;
1121 #ifdef ALLOCATEPARAMSTACK
1122 if(max_param_stack > current_param_size)
1123 param_stack = realloc_param_stack (increment_param_size);
1124 if(max_param_stack > current_param_size){ /* check again after allocation */
1125 overflow(633, current_param_size);
1126 return; // abort_flag set
1129 if(max_param_stack > param_size){
1130 overflow(633, param_size); /* parameter stack - not dynamic */
1131 return; // abort_flag set
1136 register integer for_end;
1140 do param_stack[param_ptr + m]= pstack[m];
1141 while(m++ < for_end);
1143 param_ptr = param_ptr + n;
1145 lab10: scanner_status = savescannerstatus;
1146 warning_index = savewarningindex;
1148 void insert_relax (void)
1150 /* begin cur_tok:=cs_token_flag+cur_cs; back_input; */
1151 cur_tok = 4095 + cur_cs;
1153 /* cur_tok:=cs_token_flag+frozen_relax; back_input; token_type:=inserted; */
1154 /* cur_tok = (hash_size + 4616); */
1155 /* cur_tok = (hash_size + 4095 + 521); */
1156 cur_tok = (hash_size + hash_extra + 4095 + 521); /* 96/Jan/10 */
1158 cur_input.index_field = 4;
1166 small_number cvlbackup, radixbackup, cobackup;
1167 halfword backupbackup;
1168 small_number savescannerstatus;
1171 cvlbackup = cur_val_level;
1172 radixbackup = radix;
1173 cobackup = cur_order;
1174 backupbackup = mem[mem_top - 13].hh.v.RH;
1177 if(eqtb[(hash_size + 3199)].cint > 1)
1178 show_cur_cmd_chr ();
1182 /* begin if cur_mark[cur_chr]<>null then l.7881 */
1183 if(cur_mark[cur_chr]!= 0)
1184 begin_token_list(cur_mark[cur_chr], 14);
1202 savescannerstatus = scanner_status;
1205 scanner_status = savescannerstatus;
1208 if(t >= 4095) /* if t>=cs_token_flag then */
1210 /* begin p:=get_avail; info(p):=cs_token_flag+frozen_dont_expand; */
1212 /* mem[p].hh.v.LH = (hash_size + 4618); */
1213 /* mem[p].hh.v.LH = (hash_size + 4095 + 523); */
1214 mem[p].hh.v.LH = (hash_size + hash_extra + 4095 + 523); /*96/Jan/10*/
1215 mem[p].hh.v.RH = cur_input.loc_field;
1216 cur_input.start_field = p;
1217 cur_input.loc_field = p;
1230 mem[q].hh.v.LH = cur_tok;
1233 } while(!(cur_cs != 0));
1237 if(interaction == 3)
1239 print_nl(262); /* ! */
1240 print(622); /* Missing */
1242 print_esc(502); /* endcsname */
1243 print(623); /* inserted */
1246 help_line[1]= 624; /* The control sequence marked <to be read again> should */
1247 help_line[0]= 625; /* not appear between \csname and \endcsname. */
1253 while(p != 0){ /* while p<>null do l.7742 */
1255 if(j >= max_buf_stack)
1257 max_buf_stack = j + 1;
1258 #ifdef ALLOCATEBUFFER
1259 if(max_buf_stack == current_buf_size)
1260 buffer = realloc_buffer (increment_buf_size);
1261 if(max_buf_stack == current_buf_size){ /* check again after allocation */
1262 overflow(256, current_buf_size);
1263 return; // abort_flag set
1266 if(max_buf_stack == buf_size){
1267 overflow(256, buf_size); /* buffer size - not dynamic */
1268 return; // abort_flag set
1272 buffer[j]= mem[p].hh.v.LH % 256;
1273 /* buffer[j]= mem[p].hh.v.LH & 255; */ /* last 8 bits */
1279 no_new_control_sequence = false;
1280 cur_cs = id_lookup(first, j - first);
1281 no_new_control_sequence = true;
1285 /* else cur_cs:=single_base+buffer[first] {the list has length one} */
1286 else cur_cs = 257 + buffer[first];
1288 if(eqtb[cur_cs].hh.b0 == 101)
1290 eq_define(cur_cs, 0, 256);
1292 cur_tok = cur_cs + 4095;
1306 if(cur_chr > if_limit)
1312 if(interaction == 3)
1314 print_nl(262); /* ! */
1315 print(773); /* Extra */
1317 print_cmd_chr(106, cur_chr); /* j */
1320 help_line[0]= 774; /* I'm ignoring this; it doesn't match any \if. */
1326 while(cur_chr != 2)pass_text ();
1329 if_line = mem[p + 1].cint;
1330 cur_if = mem[p].hh.b1;
1331 if_limit = mem[p].hh.b0;
1332 cond_ptr = mem[p].hh.v.RH;
1338 if(cur_chr > 0)force_eof = true;
1339 else if(name_in_progress)insert_relax ();
1340 else start_input ();
1345 if(interaction == 3)
1347 print_nl(262); /* ! */
1348 print(616); /* Undefined control sequence */
1352 help_line[4]= 617; /* The control sequence at the end of the top line */
1353 help_line[3]= 618; /* of your error message was never \def'ed. If you have */
1354 help_line[2]= 619; /* misspelled it (e.g., `\hobx'), type `I' and the correct */
1355 help_line[1]= 620; /* spelling (e.g., `I\hbox'). Otherwise just continue, */
1356 help_line[0]= 621; /* and I'll forget about whatever was undefined. */
1363 else if(cur_cmd < 115){
1368 /* cur_tok = (hash_size + 4615); */
1369 /* cur_tok = (hash_size + 4095 + 520); */
1370 cur_tok = (hash_size + hash_extra + 4095 + 520); /* 96/Jan/10 */
1374 cur_val_level = cvlbackup;
1375 radix = radixbackup;
1376 cur_order = cobackup;
1377 mem[mem_top - 13].hh.v.RH = backupbackup;
1379 void get_x_token (void)
1384 if(cur_cmd <= 100) goto lab30;
1390 /* cur_cs = (hash_size + 520); */
1391 cur_cs = (hash_size + hash_extra + 520); /* 96/Jan/10 */
1399 lab30: if(cur_cs == 0)
1400 cur_tok =(cur_cmd * 256)+ cur_chr;
1401 else cur_tok = 4095 + cur_cs;
1405 while(cur_cmd > 100){
1410 cur_tok =(cur_cmd * 256)+ cur_chr;
1411 else cur_tok = 4095 + cur_cs;
1413 void scan_left_brace (void)
1417 } while(!((cur_cmd != 10)&&(cur_cmd != 0)));
1421 if(interaction == 3)
1423 print_nl(262); /* ! */
1424 print(654); /* Missing { inserted */
1428 help_line[3]= 655; /* A left brace was mandatory here, so I've put one in. */
1429 help_line[2]= 656; /* You might want to delete and/or insert some corrections */
1430 help_line[1]= 657; /* so that I will find a matching right brace soon. */
1431 help_line[0]= 658; /* (If you're confused by all this, try typing `I}' now.) */
1440 void scan_optional_equals (void)
1444 } while(!(cur_cmd != 10));
1445 if(cur_tok != 3133)back_input ();
1447 bool scan_keyword_(str_number s)
1448 {/* 10 */ register bool Result;
1455 while(k < str_start[s + 1]){
1457 if((cur_cs == 0)&&((cur_chr == str_pool[k])||(cur_chr ==
1458 str_pool[k]- 32))) {
1462 mem[q].hh.v.LH = cur_tok;
1467 else if((cur_cmd != 10)||(p != mem_top - 13))
1470 if(p != mem_top - 13)
1471 begin_token_list(mem[mem_top - 13].hh.v.RH, 3);
1476 flush_list(mem[mem_top - 13].hh.v.RH);
1480 void mu_error (void)
1483 if(interaction == 3)
1485 print_nl(262); /* ! */
1486 print(659); /* Incompatible glue units */
1490 help_line[0]= 660; /* I'm going to assume that 1mu=1pt when they're mixed. */
1494 void scan_eight_bit_int (void)
1497 if((cur_val < 0)||(cur_val > 255))
1500 if(interaction == 3)
1502 print_nl(262); /* ! */
1503 print(684); /* Bad register code */
1507 help_line[1]= 685; /* A register number must be between 0 and 255. */
1508 help_line[0]= 686; /* I changed this one to zero. */
1514 void scan_char_num (void)
1517 if((cur_val < 0)||(cur_val > 255))
1520 if(interaction == 3)
1522 print_nl(262); /* ! */
1523 print(687); /* Bad character code */
1527 help_line[1]= 688; /* A character number must be between 0 and 255. */
1528 help_line[0]= 686; /* I changed this one to zero. */
1534 void scan_four_bit_int (void)
1537 if((cur_val < 0)||(cur_val > 15))
1540 if(interaction == 3)
1542 print_nl(262); /* ! */
1543 print(689); /* Bad number */
1547 help_line[1]= 690; /* Since I expected to read a number between 0 and 15, */
1548 help_line[0]= 686; /* I changed this one to zero. */
1554 void scan_fifteen_bit_int (void)
1557 if((cur_val < 0)||(cur_val > 32767))
1560 if(interaction == 3)
1562 print_nl(262); /* ! */
1563 print(691); /* Bad mathchar */
1567 help_line[1]= 692; /* A mathchar number must be between 0 and 32767. */
1568 help_line[0]= 686; /* I changed this one to zero. */
1574 void scan_twenty_seven_bit_int (void)
1577 if((cur_val < 0)||(cur_val > 134217727L)) /* 2^27 - 1 */
1580 if(interaction == 3)
1582 print_nl(262); /* ! */
1583 print(693); /* Bad delimiter code */
1587 help_line[1]= 694; /* A numeric delimiter code must be between 0 and 2^{27}-1. */
1588 help_line[0]= 686; /* I changed this one to zero. */
1594 void scan_font_ident (void)
1596 internal_font_number f;
1600 } while(!(cur_cmd != 10));
1602 f = eqtb[(hash_size + 1834)].hh.v.RH;
1603 else if(cur_cmd == 87)
1605 else if(cur_cmd == 86)
1608 scan_four_bit_int ();
1609 f = eqtb[m + cur_val].hh.v.RH;
1614 if(interaction == 3)
1616 print_nl(262); /* ! */
1617 print(811); /* Missing font identifier */
1621 help_line[1]= 812; /* I was looking for a control sequence whose */
1622 help_line[0]= 813; /* current meaning has been defined by \font. */
1629 void find_font_dimen_(bool writing)
1631 internal_font_number f;
1637 /* if(n <= 0)*/ /* change 98/Oct/5 */
1638 if(n < 0 || (n == 0 && font_dimen_zero == 0))
1641 /* else begin if writing and(n<=space_shrink_code)and@|
1642 (n>=space_code)and(font_glue[f]<>null) then
1643 begin delete_glue_ref(font_glue[f]); l.11225 */
1644 if(writing &&(n <= 4)&&(n >= 2)&&(font_glue[f]!= 0))
1646 delete_glue_ref(font_glue[f]);
1647 font_glue[f]= 0; /* font_glue[f]:=null */
1649 if(n > font_params[f])
1654 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
1656 if(fmem_ptr == current_font_mem_size) { /* 93/Nov/28 ??? */
1657 font_info = realloc_font_info(increment_font_mem_size);
1659 if(fmem_ptr == current_font_mem_size){ /* 94/Jan/24 */
1660 overflow(818, current_font_mem_size); /* font memory */
1661 return; // abort_flag set
1664 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
1665 if(fmem_ptr == font_mem_size){
1666 overflow(818, font_mem_size); /* font memory */
1667 return; // abort_flag set
1670 font_info[fmem_ptr].cint = 0;
1672 incr(font_params[f]);
1673 } while(!(n == font_params[f]));
1674 cur_val = fmem_ptr - 1;
1676 /* else cur_val = n + param_base[f]; */ /* 98/Oct/5 */
1677 else if (n > 0) cur_val = n + param_base[f]; /* 98/Oct/5 */
1678 else cur_val = &font_check[f] - &font_info[0]; /* 98/Oct/5 */
1679 /* checksum = (((font_check[f].b0) << 8 | font_check[f].b1) << 8 |
1680 font_check[f].b2) << 8 | font_check[f].b3; */
1682 /* compiler error: '-' : incompatible types - from 'union fmemoryword *' to 'struct fourunsignedchars *' */
1683 if(cur_val == fmem_ptr){
1685 if(interaction == 3)
1687 print_nl(262); /* ! */
1688 print(796); /* Font */
1690 /* print_esc(hash[(hash_size + 524) + f].v.RH); */
1691 print_esc(hash[(hash_size + hash_extra + 524) + f].v.RH); /*96/Jan/10*/
1692 print(814); /* has only */
1693 print_int(font_params[f]);
1694 print(815); /* fontdimen parameters */
1697 help_line[1]= 816; /* To increase the number of font parameters, you must */
1698 help_line[0]= 817; /* use \fontdimen immediately after the \font is loaded. */
1704 /* NOTE: the above use of /fontdimen0 to access the checksum is a kludge */
1705 /* In future would be better to do this by allocating one more slot for */
1706 /* for parameters when a font is read rather than carry checksum separately */
1707 /* The above gets the value byte order reversed ... 98/Oct/5 */
1709 void scan_something_internal_(small_number level, bool negative)
1718 if(m == (hash_size + 2907))
1720 cur_val = eqtb[(hash_size + 2907) + cur_val].hh.v.RH;
1723 else if(m < (hash_size + 2907))
1725 cur_val = eqtb[m + cur_val].hh.v.RH;
1730 cur_val = eqtb[m + cur_val].cint;
1743 if(interaction == 3)
1745 print_nl(262); /* ! */
1746 print(661); /* Missing number, treated as zero */
1750 help_line[2]= 662; /* A number should have been here; I inserted `0'. */
1751 help_line[1]= 663; /* (If you can't figure out why I needed to see a number, */
1752 help_line[0]= 664; /* look up `weird error' in the index to The TeXbook.) */
1760 else if(cur_cmd <= 72)
1764 scan_eight_bit_int ();
1765 m = (hash_size + 1322) + cur_val;
1768 cur_val = eqtb[m].hh.v.RH;
1777 /* cur_val = (hash_size + 524) + cur_val; */
1778 cur_val = (hash_size + hash_extra + 524) + cur_val; /* 96/Jan/10 */
1785 cur_val = eqtb[m].cint;
1791 cur_val = eqtb[m].cint;
1797 cur_val = eqtb[m].hh.v.RH;
1803 cur_val = eqtb[m].hh.v.RH;
1811 if(interaction == 3)
1813 print_nl(262); /* ! */
1814 print(677); /* Improper */
1816 print_cmd_chr(79, m); /* O */
1819 help_line[3]= 678; /* You can refer to \spacefactor only in horizontal mode; */
1820 help_line[2]= 679; /* you can refer to \prevdepth only in vertical mode; and */
1821 help_line[1]= 680; /* neither of these is meaningful inside \write. So */
1822 help_line[0]= 681; /* I'm forgetting what you said and using zero instead. */
1837 cur_val = cur_list.aux_field.cint;
1842 cur_val = space_factor;
1854 nest[nest_ptr]= cur_list;
1856 while(abs(nest[p].mode_field)!= 1)decr(p);
1858 cur_val = nest[p].pg_field;
1866 cur_val = dead_cycles;
1867 else cur_val = insert_penalties;
1873 if((page_contents == 0)&&(! output_active))
1875 cur_val = 1073741823L; /* 2^30 - 1 */
1877 else cur_val = page_so_far[m];
1883 if(eqtb[(hash_size + 1312)].hh.v.RH == 0)
1885 else cur_val = mem[eqtb[(hash_size + 1312)].hh.v.RH].hh.v.LH;
1891 scan_eight_bit_int ();
1892 if(eqtb[(hash_size + 1578) + cur_val].hh.v.RH == 0)
1894 else cur_val = mem[eqtb[(hash_size + 1578) + cur_val].hh.v.RH + m].cint;
1907 find_font_dimen(false);
1908 font_info[fmem_ptr].cint = 0;
1910 cur_val = font_info[cur_val].cint;
1919 cur_val = hyphen_char[cur_val];
1924 cur_val = skew_char[cur_val];
1931 scan_eight_bit_int ();
1934 cur_val = eqtb[(hash_size + 3218) + cur_val].cint;
1937 cur_val = eqtb[(hash_size + 3751) + cur_val].cint;
1940 cur_val = eqtb[(hash_size + 800) + cur_val].hh.v.RH;
1943 cur_val = eqtb[(hash_size + 1056) + cur_val].hh.v.RH;
1954 else cur_val = last_badness;
1962 cur_val_level = cur_chr;
1963 if(!(tail >= hi_mem_min)&&(mode != 0)
1967 if(mem[tail].hh.b0 == 12)
1968 cur_val = mem[tail + 1].cint;
1971 if(mem[tail].hh.b0 == 11)
1972 cur_val = mem[tail + 1].cint;
1975 if(mem[tail].hh.b0 == 10)
1977 cur_val = mem[tail + 1].hh.v.LH;
1978 if(mem[tail].hh.b1 == 99)
1983 else if((mode == 1)&&(tail == cur_list
1987 cur_val = last_penalty;
1990 cur_val = last_kern;
1993 /* if(last_glue != 262143L) */ /* NO! */
1994 if(last_glue != empty_flag)
1995 cur_val = last_glue;
2003 if(interaction == 3)
2005 print_nl(262); /* ! */
2006 print(682); /* You can't use ` */
2008 print_cmd_chr(cur_cmd, cur_chr);
2009 print(683); /* ' after */
2010 print_esc(534); /* the */
2013 help_line[0]= 681; /* I'm forgetting what you said and using zero instead. */
2027 while(cur_val_level > level){
2029 if(cur_val_level == 2)
2030 cur_val = mem[cur_val + 1].cint;
2031 else if(cur_val_level == 3){
2034 decr(cur_val_level);
2037 if(cur_val_level >= 2)
2039 cur_val = new_spec(cur_val);
2041 mem[cur_val + 1].cint = - (integer) mem[cur_val + 1].cint;
2042 mem[cur_val + 2].cint = - (integer) mem[cur_val + 2].cint;
2043 mem[cur_val + 3].cint = - (integer) mem[cur_val + 3].cint;
2046 else cur_val = - (integer) cur_val;
2047 else if((cur_val_level >= 2)&&(cur_val_level <= 3))
2048 incr(mem[cur_val].hh.v.RH);
2051 /*****************************************************************************/
2053 /* Moved here to avoid question about pragma optimize 96/Sep/12 */
2055 /* #pragma optimize ("a", off) */
2057 void get_next (void)
2058 {/* 20 25 21 26 40 10 */
2061 /* char cat; */ /* make this an int ? */
2062 int cat; /* make this an int ? 95/Jan/7 */
2068 if(cur_input.state_field != 0) {
2069 lab25: if(cur_input.loc_field <= cur_input.limit_field) {
2070 cur_chr = buffer[cur_input.loc_field];
2071 incr(cur_input.loc_field);
2072 lab21: cur_cmd = eqtb[(hash_size + 1883) + cur_chr].hh.v.RH;
2073 switch(cur_input.state_field + cur_cmd)
2085 if(cur_input.loc_field > cur_input.limit_field)
2089 lab26: k = cur_input.loc_field;
2090 cur_chr = buffer[k];
2091 cat = eqtb[(hash_size + 1883) + cur_chr].hh.v.RH;
2094 cur_input.state_field = 17;
2096 cur_input.state_field = 17;
2097 else cur_input.state_field = 1;
2098 if((cat == 11)&&(k <= cur_input.limit_field))
2101 cur_chr = buffer[k];
2102 cat = eqtb[(hash_size + 1883) + cur_chr].hh.v.RH;
2104 } while(!((cat != 11)||(k > cur_input.limit_field)))
2107 if(buffer[k]== cur_chr)
2109 if(k < cur_input.limit_field)
2115 if((((c >= 48)&&(c <= 57)) ||((c >= 97)&&
2117 if(k + 2 <= cur_input.limit_field)
2120 if((((cc >= 48)&&(cc <= 57)) ||((cc >= 97
2128 else cur_chr = c - 87;
2130 cur_chr = 16 * cur_chr + cc - 48;
2131 else cur_chr = 16 * cur_chr + cc - 87;
2132 buffer[k - 1]= cur_chr;
2135 buffer[k - 1]= c + 64;
2136 else buffer[k - 1]= c - 64;
2137 cur_input.limit_field = cur_input.limit_field - d;
2139 while(k <= cur_input.limit_field){
2141 buffer[k]= buffer[k + d];
2150 if(k > cur_input.loc_field + 1)
2152 cur_cs = id_lookup(cur_input.loc_field, k - cur_input.loc_field
2154 cur_input.loc_field = k;
2160 if(buffer[k]== cur_chr)
2162 if(k < cur_input.limit_field)
2168 if((((c >= 48)&&(c <= 57)) ||((c >= 97)&&(
2170 if(k + 2 <= cur_input.limit_field)
2173 if((((cc >= 48)&&(cc <= 57)) ||((cc >= 97)
2181 else cur_chr = c - 87;
2182 if(cc <= 57) /* cc may be used without ... */
2183 cur_chr = 16 * cur_chr + cc - 48;
2184 else cur_chr = 16 * cur_chr + cc - 87;
2185 buffer[k - 1]= cur_chr;
2188 buffer[k - 1]= c + 64;
2189 else buffer[k - 1]= c - 64;
2190 cur_input.limit_field = cur_input.limit_field - d;
2192 while(k <= cur_input.limit_field){
2193 buffer[k]= buffer[k + d];
2200 /* cur_cs:=single_base+buffer[loc]; incr(loc); */
2201 cur_cs = 257 + buffer[cur_input.loc_field];
2202 incr(cur_input.loc_field);
2204 lab40: cur_cmd = eqtb[cur_cs].hh.b0;
2205 cur_chr = eqtb[cur_cs].hh.v.RH;
2207 check_outer_validity ();
2215 cur_cs = cur_chr + 1;
2216 cur_cmd = eqtb[cur_cs].hh.b0;
2217 cur_chr = eqtb[cur_cs].hh.v.RH;
2218 cur_input.state_field = 1;
2220 check_outer_validity ();
2228 if(cur_chr == buffer[cur_input.loc_field])
2229 if(cur_input.loc_field < cur_input.limit_field)
2231 c = buffer[cur_input.loc_field + 1];
2234 cur_input.loc_field = cur_input.loc_field + 2;
2235 if((((c >= 48)&&(c <= 57)) ||((c >= 97)&&(c <=
2237 if(cur_input.loc_field <= cur_input.limit_field)
2239 cc = buffer[cur_input.loc_field];
2240 if((((cc >= 48)&&(cc <= 57)) ||((cc >= 97)&&(
2243 incr(cur_input.loc_field);
2246 else cur_chr = c - 87;
2248 cur_chr = 16 * cur_chr + cc - 48;
2249 else cur_chr = 16 * cur_chr + cc - 87;
2255 else cur_chr = c - 64;
2259 cur_input.state_field = 1;
2267 if(interaction == 3)
2269 print_nl(262); /* ! */
2270 print(610); /* Text line contains an invalid character */
2274 help_line[1]= 611; /* A funny symbol that I can't read has just been input. */
2275 help_line[0]= 612; /* Continue, and I'll forget that it ever happened. */
2277 deletions_allowed = false;
2279 deletions_allowed = true;
2285 cur_input.state_field = 17;
2291 cur_input.loc_field = cur_input.limit_field + 1;
2301 cur_input.loc_field = cur_input.limit_field + 1;
2307 cur_input.loc_field = cur_input.limit_field + 1;
2309 cur_cmd = eqtb[cur_cs].hh.b0;
2310 cur_chr = eqtb[cur_cs].hh.v.RH;
2312 check_outer_validity ();
2322 cur_input.state_field = 1;
2332 cur_input.state_field = 1;
2348 cur_input.state_field = 1;
2356 cur_input.state_field = 33;
2357 if(cur_input.name_field > 17) {
2359 first = cur_input.start_field;
2361 if(input_ln(input_file[cur_input.index_field], true)) {
2362 firm_up_the_line ();
2364 else force_eof = true;
2367 print_char(41); /*)*/
2373 end_file_reading ();
2374 check_outer_validity ();
2377 if((eqtb[(hash_size + 3211)].cint < 0)||
2378 (eqtb[(hash_size + 3211)].cint > 255))
2379 decr(cur_input.limit_field);
2380 /* long to unsigned char ... */
2381 else buffer[cur_input.limit_field]= eqtb[(hash_size + 3211)].cint;
2382 first = cur_input.limit_field + 1;
2383 cur_input.loc_field = cur_input.start_field;
2386 if(!(cur_input.name_field == 0)) {
2392 end_file_reading ();
2395 if(selector < 18) open_log_file ();
2396 if(interaction > 1){
2397 if((eqtb[(hash_size + 3211)].cint < 0)||
2398 (eqtb[(hash_size + 3211)].cint > 255)
2400 incr(cur_input.limit_field);
2401 if(cur_input.limit_field == cur_input.start_field)
2402 print_nl(613); /* (Please type a command or say `\end') */
2404 first = cur_input.start_field;
2410 cur_input.limit_field = last;
2411 if((eqtb[(hash_size + 3211)].cint < 0)||
2412 (eqtb[(hash_size + 3211)].cint > 255)
2414 decr(cur_input.limit_field);
2415 /* long to unsigned char ... */
2416 else buffer[cur_input.limit_field]= eqtb[(hash_size + 3211)].cint;
2417 first = cur_input.limit_field + 1;
2418 cur_input.loc_field = cur_input.start_field;
2421 fatal_error(614); /* *** (job aborted, no legal \end found) */
2422 return; // abort_flag set
2427 pause_for_instructions ();
2433 else if(cur_input.loc_field != 0)
2435 t = mem[cur_input.loc_field].hh.v.LH;
2436 cur_input.loc_field = mem[cur_input.loc_field].hh.v.RH;
2440 cur_cmd = eqtb[cur_cs].hh.b0;
2441 cur_chr = eqtb[cur_cs].hh.v.RH;
2445 cur_cs = mem[cur_input.loc_field].hh.v.LH - 4095;
2446 cur_input.loc_field = 0;
2447 cur_cmd = eqtb[cur_cs].hh.b0;
2448 cur_chr = eqtb[cur_cs].hh.v.RH;
2456 check_outer_validity ();
2462 /* cur_cmd = t >> 8; */ /* top 8 bits */
2464 /* cur_chr = t & 255; */ /* last 8 bits */
2474 begin_token_list(param_stack[cur_input.limit_field + cur_chr - 1],
2491 if(align_state == 0)
2493 if(scanner_status == 4){
2494 fatal_error(592); /* (interwoven alignment preambles are not allowed) */
2495 return; // abort_flag set
2498 cur_cmd = mem[cur_align + 5].hh.v.LH;
2499 mem[cur_align + 5].hh.v.LH = cur_chr;
2501 begin_token_list(mem_top - 10, 2);
2502 else begin_token_list(mem[cur_align + 2].cint, 2);
2503 align_state = 1000000L;
2508 #pragma optimize ("", on) /* 96/Sep/12 */
2510 /*****************************************************************************/