OSDN Git Service

removed unused flag.
[putex/putex.git] / src / texsourc / texd.h
1 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
2 #define ALLOCATEINI        /* allocate iniTeX (550 k) trie_c, trie_o, trie_l, trie_r, trie_hash, trie_taken */
3 #define ALLOCATEMAIN       /* allocate main memory for TeX (2 Meg) zmem = zzzaa */
4 #define ALLOCATEFONT       /* allocate font_info (800 k) (dynamically now) */
5 #define ALLOCATETRIES      /* allocate hyphenation trie stuff (270 k) trie_trl, trie_tro, trie_trc */
6 #define ALLOCATEHYPHEN     /* allocate hyphenation exception tables */
7 #define VARIABLETRIESIZE   /* allow trie_size to be variable */
8 #define ALLOCATESTRING     /* allocate strings and string pointers (184 k)str_pool & str_start */
9 #define ALLOCATESAVESTACK  /* experiment to dynamically deal with save_stack 99/Jan/4 */
10 #define ALLOCATEINPUTSTACK /* experiment to dynamically deal with input_stack 99/Jan/21 */
11 #define ALLOCATENESTSTACK  /* experiment to dynamically deal with nest_stack 99/Jan/21 */
12 #define ALLOCATEPARAMSTACK /* experiment to dynamically deal with param_stack 99/Jan/21 */
13 #define ALLOCATEBUFFER     /* experiment to dynamically deal with input buffer 99/Jan/22 */
14 #define INCREASEFIXED
15 /* increase number of fonts - quarterword 16 bit - max_quarterword limit */
16 /* there may still be some bugs with this however ... also may slow down */
17 /* also: should split use of quarterword for (i) font from (ii) char */
18 /* for example, xeq_level ? hyphenation trie_trc ? */
19 #define INCREASEFONTS
20 /* make font_info array fmemoryword == 32 bit instead of memory_word = 64 bit */
21 #define SHORTFONTINFO
22 /* make hash table htwo_halves == 32 bit instead of two_halves == 64 bit */
23 /* increase trie_op_size from 751 to 3001 96/Oct/12 */
24 #define INCREASETRIEOP
25
26
27 /* With old PharLap linker it was important to avoid large fixed allocation */
28 /* Now may be better to use fixed arrays rather than allocate them */
29 /* hence ALLOCATEZQTB, ALLOCATEDVIBUF and ALLOCATEMINOR are NOT defined */
30
31 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
32
33 #undef  TRIP
34 #undef  TRAP
35 #define STAT
36 #undef  DEBUG
37 #include "texmf.h"
38
39 // #define max_halfword 65535L  /* for 32 bit memory word */
40 // #define max_halfword 262143L /* for 36 bit memory word */
41 #define min_halfword -2147483647L /* for 64 bit memory word (signed) */
42 #define max_halfword  2147483647L /* for 64 bit memory word (signed) */
43
44 #define block_size 1000 /* block_size for variable length node alloc */
45
46 /* min_quarterword assumed 0 -- i.e. we use unsigned types for quarterword */
47 #define min_quarterword 0
48 #ifdef INCREASEFONTS
49   #define max_quarterword 65535L
50 #else
51   #define max_quarterword 255
52 #endif
53
54 /* #define default_mem_top 262140L */ /* usual big TeX allocation 2 Meg bytes */
55 /* #define default_mem_top 131070L */ /* usual big TeX allocation 1 Meg bytes */
56 #define default_mem_top 65534L        /* usual small TeX allocation 0.5 Meg   */
57
58 /* mem_bot smallest index in mem array dumped by iniTeX mem_top >= mem_min */
59 #define mem_bot 0
60 /* mem_top largest index in mem array dumped by iniTeX mem_top <= mem_max */
61 #ifdef ALLOCATEMAIN
62   EXTERN integer mem_top;
63   #define max_mem_size (max_halfword / sizeof(memory_word) - 1)
64 #else
65   #define mem_top 262140L
66 #endif
67
68 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
69 /* mem_max == mem_top in iniTeX, otherwise mem_max >= mem_top */
70 /* if ALLOCATEMAIN is true, then mem_max is a variable */
71 /* otherwise it is a pre-processor defined constant */
72 #ifdef ALLOCATEMAIN
73   EXTERN integer mem_max;
74 #else
75 /* #define mem_max 262140L */
76   #define mem_max mem_top
77 #endif
78
79 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
80 /* if ALLOCATEMAIN is true, then mem_min is a variable */
81 /* otherwise it is a pre-processor defined constant */
82 /* mem_min == mem_bot in iniTeX, otherwise mem_min <= mem_bot */
83 #ifdef ALLOCATEMAIN
84   EXTERN integer mem_min;
85 #else
86   #define mem_min 0
87 #endif
88
89 #ifdef ALLOCATEBUFFER
90   #define initial_buf_size   1000
91   #define increment_buf_size 2000
92   #define buf_size           2000000L /* arbitrary limit <= max_halfword */
93   EXTERN ASCII_code *        buffer;
94 #else
95   #define buf_size           20000 /* 1999/Jan/7 */
96   EXTERN ASCII_code          buffer[buf_size + 4]; /* padded out to ...  + 4 */
97 #endif
98 EXTERN integer first; 
99 EXTERN integer last; 
100 EXTERN integer max_buf_stack; 
101
102 #define error_line      79
103 #define half_error_line 50
104 #define max_print_line  79
105
106 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
107 #ifdef INCREASEFIXED
108   #define max_in_open 127
109 #else
110   #define max_in_open 15
111 #endif
112 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
113
114 /* maximum internal font number - cannot be greated than max_quarter_word! */
115 #ifdef INCREASEFONTS
116   #define font_max 1023     /* 1996/Jan/17 */
117 #else
118   #define font_max 255
119 #endif
120
121 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
122 /* free the limit on font memory ! */ /* (2^32 - 1) / sizeof(memory_word) */
123 #ifdef ALLOCATEFONT
124 /* #define font_mem_size 262140L */
125   #define font_mem_size (max_halfword / sizeof(memory_word) - 1)
126 #else
127   #define font_mem_size 100000L
128 #endif
129
130 /* our real font_mem_size is 268435456 --- ridiculously large, of course */
131
132 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
133
134 /* below is new dynamic allocation - bkph 93/Nov/28 */  /* enough for lplain */
135 #ifdef ALLOCATEFONT
136   #define initial_font_mem_size   20000
137   #define increment_font_mem_size 40000
138 #endif
139
140 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
141 /* max_strings max number of strings */ /* (2^32 - 1) / sizeof (integer) */
142 #ifdef ALLOCATESTRING
143 /* #define max_strings 262140L */
144 // #define max_strings (max_halfword / sizeof(integer) -1)
145   #define max_strings (max_halfword / sizeof(pool_pointer) - 1)
146 /* #define pool_size 4032000L */
147   #define pool_size (max_halfword - 1)
148 /* #define stringmargin 32768L */
149   #define stringmargin 10000
150 #else
151 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
152 /* #define max_strings 15000 */
153 #define max_strings 16384
154 #define pool_size 124000L
155 #endif
156 #define string_vacancies 100000L
157
158 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
159 /* #if defined (ALLOCATEINITRIE) && defined (ALLOCATEHYPHEN) */
160 #ifdef VARIABLETRIESIZE
161   EXTERN integer trie_size;
162   #define default_trie_size 60000
163 #else
164   #define trie_size 30000     /* 3.14159 C version */
165 #endif
166
167 /* increase trieop to accomadate more hyphenation patterns 96/OCt/12 */
168
169 #ifdef INCREASETRIEOP
170   #define trie_op_size      3001
171   #define neg_trie_op_size -3001
172   #define min_trie_op       0
173   #define max_trie_op       1000
174 #else
175   #define trie_op_size      751
176   #define neg_trie_op_size -751
177   #define min_trie_op       0
178   #define max_trie_op       500
179 #endif
180
181 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
182 /* dvi_buf_size must be multiple of 8 - half is written out at a time */
183 #ifdef ALLOCATEDVIBUF
184   #define default_dvi_buf_size 16384 
185 /* #define default_dvi_buf_size 32768 */    /* ? */
186   EXTERN int dvi_buf_size;
187 #else
188   #define dvi_buf_size 16384      /* 3.14159 C version */
189 /* #define dvi_buf_size 32768 */        /* ? */
190 #endif
191
192 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
193 /* WARNING: increasing hash table for cs names is not trivial */
194 /* size of hash table for control sequence name  < (mem_max - mem_min) / 10 */
195 /* #define hash_size 9500 */
196 /* #define hash_size 25000 */   /* 96/Jan/10 */
197 #define hash_size 32768       /* 96/Jan/17 */
198 /* trick to try and get around eqtb_extra problem */
199 /* 1024 fonts = font_max + 2 */
200 /* #define hash_extra -256 */
201 #define hash_extra (255 - font_max)
202 /* hash prime about 85% of hash_size (+ hash_extra) */
203 /* #define hashprime 7919  */
204 /* #define hash_prime 21247 */    /* 96/Jan/10 */
205 #define hash_prime 27197      /* 96/Jan/17 */
206 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
207
208 /* CONSTRAINT: reconcile increase font use by stealing from hash table ... */
209
210 /* Probably require eqtb_extra to be zero, so hash_extra = 255 - font_max */
211 #if (hash_extra != 255 - font_max)
212   #error ERROR: hash_extra not equal to (255 - font_max)
213 #endif
214
215 /* sec 0113 */
216 #ifdef INCREASEFONTS
217   typedef unsigned short quarterword;
218 #else
219   typedef unsigned char quarterword;
220 #endif
221 /* possible alternative ? */
222 /* min_halfword = 0 and double max_halfword ? */
223 /* typedef unsigned long halfword; NO NO: since mem_min may be < 0 */
224 /* sec 0113 */
225 typedef integer halfword;
226 typedef char two_choices;
227 typedef char four_choices;
228 /* sec 0113 */
229 #include "texmfmem.h"
230 /* sec 0150 */
231 typedef char glue_ord; 
232 /* sec 0212 */
233 typedef struct
234 {
235   int mode_field;
236   halfword head_field, tail_field;
237   integer pg_field, ml_field;
238   memory_word aux_field;
239 } list_state_record;
240 /* sec 0269 */
241 typedef char group_code;
242 /* sec 0300 */
243 typedef struct
244 {
245   quarterword state_field, index_field; 
246   halfword start_field, loc_field, limit_field, name_field;
247 } in_state_record; 
248 /* sec 0548 */
249 typedef integer internal_font_number;
250 typedef integer font_index;
251 /* sec 0594 */
252 typedef integer dvi_index;
253 /* sec 0920 */
254 typedef integer trie_op_code;
255 /* sec 0925 */
256 typedef integer trie_pointer; 
257 /* typedef short hyph_pointer; */   /* increased 1996/Oct/20 ??? */
258 typedef integer hyph_pointer; 
259
260 EXTERN integer bad;
261 EXTERN ASCII_code xord[256];
262 EXTERN ASCII_code xchr[256];
263 EXTERN unsigned char name_of_file[PATHMAX + 4];
264 EXTERN integer name_length;
265
266 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
267 #ifdef ALLOCATESTRING
268   #define initial_pool_size     40000
269   #define increment_pool_size   80000
270   EXTERN packed_ASCII_code *    str_pool;
271   #define initial_max_strings   5000
272   #define increment_max_strings 10000
273   EXTERN pool_pointer *         str_start;
274 #else
275   EXTERN packed_ASCII_code      str_pool[pool_size + 1]; 
276   EXTERN pool_pointer           str_start[max_strings + 1]; 
277 #endif
278 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
279
280 EXTERN pool_pointer pool_ptr;
281 EXTERN str_number   str_ptr;
282 EXTERN pool_pointer init_pool_ptr;
283 EXTERN str_number   init_str_ptr;
284
285 #ifdef INITEX
286 EXTERN alpha_file pool_file; 
287 #endif
288
289 EXTERN alpha_file log_file; 
290 /* EXTERN char selector; */
291 /* EXTERN integer selector; */ /* padded out */
292 EXTERN int selector;      /* padded out */ /* 95/Jan/7 */
293 /* EXTERN char dig[23]; */
294 EXTERN char dig[23 + 1];  /* padded out */
295 EXTERN integer tally;
296 EXTERN integer term_offset;
297 EXTERN integer file_offset;
298 EXTERN ASCII_code trick_buf[error_line + 1]; /* already padded 79 + 1 */
299 EXTERN integer trick_count;
300 EXTERN integer first_count;
301 /* EXTERN char interaction;  */
302 /* EXTERN integer interaction; */ /* padded out */
303 EXTERN int interaction; /* padded out */      /* 95/Jan/7 */
304 EXTERN bool deletions_allowed;
305 EXTERN bool set_box_allowed;
306 /* EXTERN char history; */
307 /* EXTERN integer history; */ /* padded out */
308 EXTERN int history; /* padded out */        /* 95/Jan/7 */
309 /* EXTERN schar error_count;  */
310 /* EXTERN integer error_count; */ /* padded out */
311 EXTERN int error_count; /* padded out */      /* 95/Jan/7 */
312 EXTERN char * help_line[6];
313 /* EXTERN char help_ptr; */
314 /* EXTERN integer help_ptr; */ /* padded out */
315 EXTERN int help_ptr; /* padded out */       /* 95/Jan/7 */
316 EXTERN bool use_err_help;
317 /* EXTERN integer interrupt;  */
318 EXTERN volatile integer interrupt;  /* bkph - do avoid compiler optimization */
319 EXTERN bool OK_to_interrupt;
320 EXTERN bool arith_error;
321 EXTERN scaled tex_remainder;
322 EXTERN halfword temp_ptr;
323
324 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
325 #ifdef ALLOCATEMAIN
326   EXTERN memory_word * main_memory;   /* remembered so can be free() later */
327   EXTERN memory_word * mem;
328 #else
329   /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
330   EXTERN memory_word 
331   /* #define zmem (zzzaa - (int)(mem_min)) */
332   /*  zzzaa[mem_max - mem_min + 1]; */
333   #define zmem (zzzaa - (int)(mem_bot))
334   zzzaa[mem_max - mem_bot + 1];
335 #endif
336
337 EXTERN halfword lo_mem_max;
338 EXTERN halfword hi_mem_min;
339 EXTERN integer var_used, dyn_used;
340 EXTERN halfword avail;
341 EXTERN halfword mem_end;
342 EXTERN halfword mem_start;
343 EXTERN halfword rover;
344
345 /* NOTE: the following really also need to be dynamically allocated */
346 #ifdef DEBUG
347 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
348 #ifdef ALLOCATEMAIN
349   EXTERN char * zzzab;
350 #else
351 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
352 /* EXTERN bool  */    /* save (4 - 1) * mem_max - mem_min */
353 EXTERN char
354 /* #define freearr (zzzab - (int)(mem_min)) */
355 /*  zzzab[mem_max - mem_min + 1];  */
356 #define freearr (zzzab - (int)(mem_bot))
357   zzzab[mem_max - mem_bot + 1]; 
358 #endif
359
360 #ifdef ALLOCATEMAIN
361   EXTERN char *zzzac;
362 #else
363 /* EXTERN bool */   /* save (4 - 1) * mem_max - mem_min */
364 EXTERN char
365 /* #define wasfree (zzzac - (int)(mem_min)) */
366 #define wasfree (zzzac - (int)(mem_bot))
367 /*  zzzac[mem_max - mem_min + 1];  */
368   zzzac[mem_max - mem_bot + 1]; 
369 #endif
370
371 EXTERN halfword was_mem_end, was_lo_max, was_hi_min;
372 EXTERN bool panicking;
373 #endif /* DEBUG */
374
375 EXTERN integer font_in_short_display;
376 EXTERN integer depth_threshold;
377 EXTERN integer breadth_max;
378 /* EXTERN list_state_record nest[nest_size + 1];  */
379 /* EXTERN short shown_mode; */
380 /* EXTERN integer shown_mode; */ /* padded out */
381 EXTERN int shown_mode; /* padded out */   /* 95/Jan/7 */
382 /* EXTERN char old_setting; */
383 /* EXTERN integer old_setting; */ /* padded out */
384 EXTERN int old_setting; /* padded out */    /* 95/Jan/7 */
385
386 /* eqtn_extra is no longer used --- it should be 0 96/Jan/10 */
387 #ifdef INCREASEFONTS
388   #define eqtb_extra (font_max - 255 + hash_extra)
389 #else
390   #define eqtb_extra 0
391 #endif
392
393 /* Probably require eqtb_extra to be zero, so hash_extra = 255 - font_max */
394 #if (eqtb_extra != 0)
395   #error ERROR: eqtb_extra is not zero (need hash_extra equal 255 - font_max)
396 #endif
397
398 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
399 #ifdef ALLOCATEZEQTB
400 EXTERN memory_word * zeqtb;
401 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
402 #else
403 #ifdef INCREASEFONTS
404 EXTERN memory_word eqtb[(hash_size + 4007) + eqtb_extra];
405 #else
406 EXTERN memory_word zeqtb[(hash_size + 4007)];
407 #endif
408 #endif
409
410 #ifdef INCREASEFONTS
411   #define xeq_level (zzzad - (int_base + eqtb_extra))
412 #else
413   #define xeq_level (zzzad - (int_base))
414 #endif
415 /* zzzad[844]; */
416 EXTERN quarterword zzzad[844]; /* ??? attempt to fix 99/Jan/5 */
417 /* region 5 & 6 int_base to eqtb_size: 13507 - 12663 */
418
419 #ifdef ALLOCATEHASH
420 #ifdef SHORTHASH
421 EXTERN htwo_halves *zzzae;
422 #else
423 EXTERN two_halves *zzzae;
424 #endif
425 #define hash (zzzae - 514)
426 #else /* not allocating hash table */
427 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
428 #ifdef SHORTHASH
429 EXTERN htwo_halves 
430 #else
431 EXTERN two_halves 
432 #endif
433 #define hash (zzzae - 514)
434
435 #ifdef INCREASEFONTS
436   zzzae[hash_size + 267 + eqtb_extra];
437 #else
438   zzzae[hash_size + 267];
439 #endif
440 #endif
441
442 EXTERN halfword hash_used;
443 EXTERN bool no_new_control_sequence;
444 EXTERN integer cs_count;
445
446 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
447 /* using allocated save stack slows it down 1% to 2% */
448 /* despite reallocation, we still limit it to something finite */
449 /* to avoid soaking up all of machine memory in case of infinite loop */
450 #ifdef ALLOCATESAVESTACK
451   #define save_size           65536     /* arbitrary - ridiculously large */
452   #define initial_save_size   1000
453   #define increment_save_size 2000
454   EXTERN memory_word *save_stack;
455 #else
456   #define save_size 8000        /* 1999/Jan/6 enough for even CRC */
457 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
458   EXTERN memory_word save_stack[save_size + 1];
459 #endif
460
461 EXTERN integer save_ptr;
462 EXTERN integer max_save_stack;
463
464 /* The following could really be char instead of quarterword ... */
465 /* EXTERN quarterword cur_level;  */
466 /* EXTERN integer cur_level; */ /* padded out */
467 EXTERN int cur_level; /* padded out */    /* 95/Jan/7 */
468
469 /* EXTERN group_code cur_group;  */
470 /* EXTERN integer cur_group;  */ /* padded out */
471 EXTERN int cur_group; /* padded out */      /* 95/Jan/7 */
472
473 EXTERN integer cur_boundary;
474 EXTERN integer mag_set;
475
476 /* EXTERN eight_bits cur_cmd;  */
477 /* EXTERN integer cur_cmd;  */ /* padded out */
478 EXTERN int cur_cmd; /* padded out */      /* 95/Jan/7 */
479
480 /* EXTERN halfword cur_chr;  */ /* itex, tex0, tex, tex3, tex5, tex6, tex7, tex8 */
481 EXTERN int cur_chr;             /* 95/Jan/7 */
482
483 EXTERN halfword cur_cs;
484 EXTERN halfword cur_tok;
485
486 #ifdef ALLOCATENESTSTACK
487   #define nest_size           65536         /* arbitrary - ridiculously large */
488   #define initial_nest_size   100
489   #define increment_nest_size 200
490   EXTERN list_state_record * nest;
491 #else
492   #define nest_size 200       /* 1999/Jan/7 */
493   EXTERN list_state_record nest[nest_size + 1];
494 #endif
495 EXTERN integer nest_ptr;
496 EXTERN integer max_nest_stack;
497 EXTERN list_state_record cur_list;
498
499 #ifdef ALLOCATEPARAMSTACK
500   #define param_size 65536        /* arbitrary - ridiculously large */
501   #define initial_param_size 100
502   #define increment_param_size 200
503   EXTERN halfword * param_stack;
504 #else
505   #define param_size 500        /* 1997/Jan/17 */
506 EXTERN halfword param_stack[param_size + 1];
507 #endif
508 EXTERN integer param_ptr;
509 EXTERN integer max_param_stack;
510
511 #ifdef ALLOCATEINPUTSTACK
512   #define stack_size           65536          /* arbitrary - ridiculously large */
513   #define initial_stack_size   100
514   #define increment_stack_size 200
515   EXTERN in_state_record * input_stack;
516 #else
517   #define stack_size 800
518   EXTERN in_state_record input_stack[stack_size + 1];
519 #endif
520 EXTERN integer input_ptr;
521 EXTERN integer max_in_stack;
522
523 EXTERN integer high_in_open;      /* 1997/Jan/17 */
524 EXTERN in_state_record cur_input;
525
526 /* EXTERN integer in_open;  */      /* used in itex, tex2, texmf */
527 EXTERN int in_open;         /* 95/Jan/7 */
528
529 EXTERN integer open_parens;
530 EXTERN integer max_open_parens;
531 EXTERN alpha_file input_file[max_in_open + 1];
532 EXTERN integer line;
533 EXTERN integer line_stack[max_in_open + 1];
534
535 /* EXTERN char scanner_status;  */
536 /* EXTERN integer scanner_status;  */ /* padded out */
537 EXTERN int scanner_status; /* padded out */ /* 95/Jan/7 */
538
539 EXTERN halfword warning_index;
540 EXTERN halfword def_ref;
541
542 EXTERN integer align_state;
543 EXTERN integer base_ptr;
544 EXTERN halfword par_loc;
545 EXTERN halfword par_token;
546 EXTERN bool force_eof;
547 /* EXTERN halfword cur_mark[5];  */
548 EXTERN halfword cur_mark[6];
549
550 /* EXTERN char long_state; */
551 /* EXTERN integer long_state; */ /* padded out */
552 EXTERN int long_state; /* padded out */ /* 95/Jan/7 */
553
554 /* EXTERN halfword pstack[9];  */
555 EXTERN halfword pstack[10];
556
557 /* EXTERN integer cur_val; */
558 EXTERN int cur_val;           /* 95/Jan/7 */
559
560 /* EXTERN char cur_val_level;  */
561 /* EXTERN integer cur_val_level; */ /* padded out */
562 EXTERN int cur_val_level; /* padded out */ /* 95/Jan/7 */
563
564 /* EXTERN small_number radix;  */
565 /* EXTERN integer radix;  */ /* padded out */
566 EXTERN int radix; /* padded out */    /* 95/Jan/7 */
567
568 /* EXTERN glue_ord cur_order;  */
569 /* EXTERN integer cur_order;  */ /* padded out */
570 EXTERN int cur_order; /* padded out */    /* 95/Jan/7 */
571
572 EXTERN alpha_file read_file[16];  /* hard wired limit in TeX */
573 /* EXTERN char read_open[17];  */
574 EXTERN char read_open[20]; /* padded out */
575
576 EXTERN halfword cond_ptr;
577
578 /* EXTERN char if_limit; */
579 /* EXTERN integer if_limit; */ /* padded out */
580 EXTERN int if_limit; /* padded out */   /* 95/Jan/7 */
581
582 /* EXTERN small_number cur_if; */
583 /* EXTERN integer cur_if; */ /* padded out */
584 EXTERN int cur_if; /* padded out */   /* 95/Jan/7 */
585
586 EXTERN integer if_line;
587 EXTERN integer skip_line;
588 EXTERN str_number cur_name;
589 EXTERN str_number cur_area;
590 EXTERN str_number cur_ext;
591 EXTERN pool_pointer area_delimiter;
592 EXTERN pool_pointer ext_delimiter;
593 EXTERN integer format_default_length;
594 EXTERN char * TEX_format_default;
595 EXTERN bool name_in_progress;
596 EXTERN bool log_opened;
597 EXTERN bool quoted_file_name;
598 EXTERN str_number job_name;
599 EXTERN str_number output_file_name;   // DVI file
600 EXTERN str_number texmf_log_name;   // LOG file
601 EXTERN byte_file dvi_file;
602 EXTERN byte_file tfm_file;
603 EXTERN byte_file pdf_file;
604 EXTERN char * dvi_file_name;
605 EXTERN char * pdf_file_name;
606 EXTERN char * log_file_name;
607
608 /*******************************************************************/
609
610 /* SHORTFONTINFO halves the memory word used to store font info */
611 /* if it is not defined we use ordinary TeX memory words */
612
613 #ifdef SHORTFONTINFO
614 /* keep definition of fmemoryword in texmfmem.h */
615 /* keep definition of ffour_quarters in texfmem.h */
616 /* keep definition of fquarterword in texfmem.h */
617 #else
618 /* go back to original definition as TeX memory word */
619 #undef fmemoryword
620 #define fmemoryword memory_word
621 /* go back to original definition as four_quarters of a TeX word */
622 #undef ffour_quarters
623 #define ffour_quarters four_quarters
624 /* go back to original definition as quaterword */
625 #undef fquarterword
626 #define fquarterword quarterword
627 #endif
628
629 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
630 #ifdef ALLOCATEFONT
631   EXTERN fmemoryword * font_info;
632 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
633 #else
634 /* EXTERN memory_word font_info[font_mem_size + 1];  */
635   EXTERN fmemoryword font_info[font_mem_size + 1];
636 #endif
637
638 EXTERN font_index fmem_ptr;
639 EXTERN internal_font_number font_ptr;
640 EXTERN internal_font_number frozen_font_ptr;
641 /* There are about 24 integer size items per font, or about 100 bytes */
642 EXTERN ffour_quarters font_check[font_max + 1];
643
644 EXTERN scaled font_size[font_max + 1];
645 EXTERN scaled font_dsize[font_max + 1];
646 EXTERN font_index font_params[font_max + 1];
647 EXTERN str_number font_name[font_max + 1];
648 EXTERN str_number font_area[font_max + 1];
649 EXTERN eight_bits font_bc[font_max + 1];
650 EXTERN eight_bits font_ec[font_max + 1];
651 EXTERN halfword font_glue[font_max + 1];
652 /* use char instead of bool to save space, but is it worth slow down ? */
653 EXTERN bool font_used[font_max + 1];
654
655 /* might want to make some of following only one character wide also ? */
656 /* except some use -1 as special case value */
657 /* well, at least make them short instead of integer */
658 EXTERN integer hyphen_char[font_max + 1];
659 EXTERN integer skew_char[font_max + 1];
660 EXTERN font_index bchar_label[font_max + 1];
661 EXTERN short font_bchar[font_max + 1];
662 /* don't change above to int or format file will be incompatible */
663 EXTERN short font_false_bchar[font_max + 1];
664 /* don't change above to int or format file will be incompatible */
665 EXTERN integer char_base[font_max + 1];
666 EXTERN integer width_base[font_max + 1];
667 EXTERN integer height_base[font_max + 1];
668 EXTERN integer depth_base[font_max + 1];
669 EXTERN integer italic_base[font_max + 1];
670 EXTERN integer lig_kern_base[font_max + 1];
671 EXTERN integer kern_base[font_max + 1];
672 EXTERN integer exten_base[font_max + 1];
673 EXTERN integer param_base[font_max + 1];
674
675 EXTERN ffour_quarters null_character;
676
677 EXTERN integer total_pages;
678 EXTERN scaled max_v;
679 EXTERN scaled max_h;
680 EXTERN integer max_push;
681 EXTERN integer last_bop;
682 EXTERN integer dead_cycles;
683 EXTERN bool doing_leaders;
684
685 /* EXTERN quarterword c, f;  */
686 /* EXTERN integer c, f */;
687 EXTERN int c, f;
688
689 EXTERN scaled rule_ht, rule_dp, rule_wd;
690 EXTERN halfword g;
691 EXTERN integer lq, lr;
692
693 EXTERN eight_bits dvi_buf[dvi_buf_size + 4];
694
695 EXTERN dvi_index half_buf;
696 EXTERN dvi_index dvi_limit;
697 EXTERN dvi_index dvi_ptr;
698 EXTERN integer dvi_offset;
699 EXTERN integer pdf_offset;
700 EXTERN integer dvi_gone;
701 EXTERN halfword down_ptr, right_ptr;
702 EXTERN scaled dvi_h, dvi_v;
703 EXTERN scaled pdf_h, pdf_v;
704 EXTERN scaled pdf_x, pdf_y;
705 EXTERN scaled pdf_delta_h, pdf_delta_v;
706 EXTERN scaled cur_h, cur_v;
707 EXTERN internal_font_number dvi_f;
708 EXTERN internal_font_number pdf_f;
709 EXTERN integer cur_s; /* sec 616 */
710 EXTERN scaled total_stretch[4], total_shrink[4]; /* padded already */
711 EXTERN integer last_badness;
712 EXTERN halfword adjust_tail;
713 EXTERN integer pack_begin_line;
714 EXTERN two_halves empty_field;
715 EXTERN four_quarters null_delimiter;
716 EXTERN halfword cur_mlist;
717
718 /* EXTERN small_number cur_style; */
719 /* EXTERN integer cur_style; */  /* padded out */ /* tex5.c, tex7.c */
720 EXTERN int cur_style;  /* padded out */     /* 95/Jan/7 */
721
722 /* EXTERN small_number cur_size; */
723 /* EXTERN integer cur_size;  */ /* padded out */
724 EXTERN int cur_size;  /* padded out */        /* 95/Jan/7 */
725
726 EXTERN scaled cur_mu;
727 EXTERN bool mlist_penalties;
728 EXTERN internal_font_number cur_f;
729
730 /* EXTERN quarterword cur_c; */
731 /* EXTERN integer cur_c; */  /* padded out */
732 EXTERN int cur_c;  /* padded out */     /* 95/Jan/7 */
733
734 EXTERN ffour_quarters cur_i;
735 EXTERN integer magic_offset;
736 EXTERN halfword cur_align;
737 EXTERN halfword cur_span;
738 EXTERN halfword cur_loop;
739 EXTERN halfword align_ptr;
740 EXTERN halfword cur_head, cur_tail;
741 EXTERN halfword just_box;
742 EXTERN halfword passive;
743 EXTERN halfword printed_node;
744 EXTERN halfword pass_number;
745 EXTERN scaled active_width[8];
746 EXTERN scaled cur_active_width[8];
747 EXTERN scaled background[8];
748 EXTERN scaled break_width[8];
749 EXTERN bool no_shrink_error_yet;
750 EXTERN halfword cur_p;
751 EXTERN bool second_pass;
752 EXTERN bool final_pass;
753 EXTERN integer threshold;
754 EXTERN integer minimal_demerits[4];
755 EXTERN integer minimum_demerits;
756 EXTERN halfword best_place[4];
757 EXTERN halfword best_pl_line[4];
758 EXTERN scaled disc_width;
759 EXTERN halfword easyline;
760 EXTERN halfword last_special_line;
761 EXTERN scaled first_width;
762 EXTERN scaled second_width;
763 EXTERN scaled first_indent;
764 EXTERN scaled second_indent;
765 EXTERN halfword best_bet;
766 EXTERN integer fewest_demerits;
767 EXTERN halfword best_line;
768 EXTERN integer actual_looseness;
769 EXTERN integer line_diff;
770 /* EXTERN short hc[64+2]; */  /* padded OK 66 * 2 = 132 which is divisible by 4 */
771 EXTERN int hc[66];  /* padded OK 66 * 2 = 132 which is divisible by 4 */
772
773 /* EXTERN small_number hn; */
774 /* EXTERN integer hn; */  /* padded out */
775 EXTERN int hn;  /* padded out */      /* 95/Jan/7 */
776
777 EXTERN halfword ha, hb;
778
779 /* EXTERN internal_font_number hf;  */
780 EXTERN int hf;              /* 95/Jan/7 */
781
782 /* EXTERN short hu[64+2]; */    /* padded OK */
783 EXTERN int hu[66];    /* padded OK */ 
784
785 /* EXTERN integer hyf_char;  */
786 EXTERN int hyf_char;            /* 95/Jan/7 */
787
788 /* init_cur_lang new in 3.14159 */
789 /* EXTERN ASCII_code cur_lang, init_cur_lang; */
790 /* EXTERN integer cur_lang, init_cur_lang; */ /* padded out */
791 EXTERN int cur_lang, init_cur_lang; /* padded out */    /* 95/Jan/7 */
792
793 EXTERN integer lhyf, rhyf;
794 /* EXTERN init_l_hyf, init_r_hyf; */ /* new in 3.14159 */
795 EXTERN integer init_l_hyf, init_r_hyf;  /* new in 3.14159 */
796
797 EXTERN halfword hyfbchar;
798 /* EXTERN char hyf[65];  */
799 EXTERN char hyf[68]; /* padded out */
800 EXTERN halfword init_list;
801 EXTERN bool init_lig;
802 EXTERN bool init_lft;
803
804 /* EXTERN small_number hyphen_passed; */
805 /* EXTERN integer hyphen_passed; */  /* padded out */
806 EXTERN int hyphen_passed;  /* padded out */     /* 95/Jan/7 */
807
808 /* EXTERN halfword cur_l, cur_r; */   /* make int's ? 95/Jan/7 */
809 EXTERN int cur_l, cur_r;    /* make int's ? 95/Jan/7 */
810
811 EXTERN halfword cur_q;
812 EXTERN halfword lig_stack;
813 EXTERN bool ligature_present;
814 EXTERN bool lft_hit, rt_hit;
815
816 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
817 /* could perhaps use packed_ASCII_code for trie_trc ? */
818 #ifdef ALLOCATETRIES
819   EXTERN halfword * trie_trl;
820   EXTERN halfword * trie_tro;
821   EXTERN quarterword * trie_trc;
822 #else
823   /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
824   EXTERN halfword trie_trl[trie_size + 1];
825   EXTERN halfword trie_tro[trie_size + 1];
826   EXTERN quarterword trie_trc[trie_size + 1];
827 #endif
828 EXTERN small_number hyf_distance[trie_op_size + 1]; /* already padded 751 + 1 */
829 EXTERN small_number hyf_num[trie_op_size + 1];    /* already padded 751 + 1 */
830 EXTERN trie_op_code hyf_next[trie_op_size + 1];
831 EXTERN integer op_start[256];
832
833 /* if ALLOCATEHYPHEN is true, then hyphen_prime is a variable */
834 /* otherwise it is a pre-processor defined constant */
835 #ifdef ALLOCATEHYPHEN
836   #define default_hyphen_prime 1009
837   EXTERN str_number * hyph_word;
838   EXTERN halfword * hyph_list;
839   /* EXTERN hyphen_prime; */
840   EXTERN integer hyphen_prime;
841 #else
842   #define hyphen_prime 607
843   /* EXTERN str_number hyph_word[608];  */
844   EXTERN str_number hyph_word[hyphen_prime + 1];
845   /* EXTERN halfword hyph_list[608];  */
846   EXTERN halfword hyph_list[hyphen_prime + 1];
847 #endif
848
849 /* EXTERN hyph_pointer hyph_count;  */
850 /* EXTERN integer hyph_count; */  /* padded out */
851 EXTERN int hyph_count;  /* padded out */    /* 95/Jan/7 */
852
853 #ifdef INITEX
854 EXTERN integer trie_op_hash_C[trie_op_size - neg_trie_op_size + 1];
855 #define trie_op_hash (trie_op_hash_C - (int)(neg_trie_op_size)) 
856 EXTERN trie_op_code trie_used[256];
857 EXTERN ASCII_code trie_op_lang[trie_op_size + 1];   /* already padded 751 + 1 */
858 EXTERN trie_op_code trie_op_val[trie_op_size + 1];
859 EXTERN integer trie_op_ptr;
860 #endif /* INITEX */
861
862 EXTERN trie_op_code max_op_used;
863 EXTERN bool smallop;
864
865 #ifdef INITEX
866   #ifdef ALLOCATEINI
867     EXTERN packed_ASCII_code *trie_c; /* characters to match */
868     EXTERN trie_op_code *trie_o;      /* operations to perform */
869     EXTERN trie_pointer *trie_l;      /* left subtrie links */
870     EXTERN trie_pointer *trie_r;      /* right subtrie links */
871     EXTERN trie_pointer *trie_hash;   /* used to identify equivlent subtries */
872   #else /* end ALLOCATEINI */
873     EXTERN packed_ASCII_code trie_c[trie_size + 1];
874     EXTERN trie_op_code trie_o[trie_size + 1];
875     EXTERN trie_pointer trie_l[trie_size + 1];
876     EXTERN trie_pointer trie_r[trie_size + 1];
877     EXTERN trie_pointer trie_hash[trie_size + 1];
878   #endif /* end not ALLOCATEINI */
879   EXTERN trie_pointer trie_ptr;
880 #endif /* INITEX */
881
882 #ifdef INITEX
883   #ifdef ALLOCATEINI
884     /* EXTERN bool *trie_taken; */ /* save (4 - 1) * trie_size = 90,000 byte */
885     EXTERN char *trie_taken;
886   #else
887     EXTERN bool trie_taken[trie_size + 1];
888   #endif
889
890   EXTERN trie_pointer trie_min[256];
891   EXTERN trie_pointer trie_max;
892   EXTERN bool trie_not_ready;
893 #endif /* INITEX */
894 EXTERN scaled best_height_plus_depth;
895 EXTERN halfword page_tail;
896
897 /* EXTERN char page_contents; */
898 /* EXTERN integer page_contents; */ /* padded out */
899 EXTERN int page_contents; /* padded out */      /* 95/Jan/7 */
900
901 /* ********************************************************************* */
902
903 /* do *some* sanity checking here --- rather than in TeX later 96/Jan/18 */
904 /* (cannot catch everything here, since some is now dynamic) */
905
906 #if (half_error_line < 30) || (half_error_line > error_line - 15)
907   #error ERROR: (half_error_line < 30) || (half_error_line > error_line - 15) BAD 1
908 #endif
909
910 #if (max_print_line < 60)
911   #error ERROR: (max_print_line < 60) BAD 2
912 #endif
913
914 #if (hash_prime > hash_size)
915   #error ERROR: (hash_prime > hash_size) BAD 5
916 #endif
917
918 #if (max_in_open > 127)
919   #error ERROR: (max_in_open > 127) BAD 6
920 #endif
921
922 #if (min_quarterword > 0) || (max_quarterword < 127)
923   #error ERROR: (min_quarterword > 0) || (max_quarterword < 127) BAD 11
924 #endif
925
926 #if (min_halfword > 0) || (max_halfword < 32767)
927   #error ERROR:  (min_halfword > 0) || (max_halfword < 32767) BAD 12
928 #endif
929
930 #if (min_quarterword < min_halfword) || (max_quarterword > max_halfword)
931   #error ERROR: (min_quarterword < min_halfword) || (max_quarterword > max_halfword) BAD 13
932 #endif
933
934 #if (font_max > max_quarterword)
935   #error ERROR: (font_max > max_quarterword) BAD 15
936 #endif
937
938 #if (save_size > max_halfword)
939   #error ERROR: (save_size > max_halfword) BAD 17
940 #endif
941
942 #if (buf_size > max_halfword)
943   #error ERROR:  (buf_size > max_halfword) BAD 18
944 #endif
945
946 #if (max_quarterword - min_quarterword) < 255
947   #error (max_quarterword - min_quarterword) < 255 BAD 19
948 #endif
949
950 /* ********************************************************************* */
951
952 EXTERN scaled page_max_depth;
953 EXTERN halfword best_page_break;
954 EXTERN integer least_page_cost;
955 EXTERN scaled best_size;
956 EXTERN scaled page_so_far[8];
957 EXTERN halfword last_glue;
958 EXTERN integer last_penalty;
959 EXTERN scaled last_kern;
960 EXTERN integer insert_penalties;
961 EXTERN bool output_active;
962 EXTERN internal_font_number main_f;
963
964 EXTERN ffour_quarters main_i;
965 EXTERN ffour_quarters main_j;
966
967 EXTERN font_index main_k;
968 EXTERN halfword main_p;
969 EXTERN integer main_s;
970 EXTERN halfword bchar;
971 EXTERN halfword false_bchar;
972 EXTERN bool cancel_boundary;
973 EXTERN bool ins_disc;
974 EXTERN halfword cur_box;
975 EXTERN halfword after_token;
976 EXTERN bool long_help_seen;
977 EXTERN str_number format_ident;
978 EXTERN word_file fmt_file;
979 EXTERN integer ready_already;
980
981 EXTERN alpha_file write_file[16]; /* hard wired limit in TeX */
982 EXTERN bool write_open[18];
983
984 EXTERN halfword write_loc;
985 EXTERN pool_pointer edit_name_start;
986 /* EXTERN integer edit_name_length, edit_line, tfm_temp;  */
987 EXTERN integer edit_name_length, edit_line;
988 /* EXTERN integer tfm_temp; */    /* only used in tex3.c */
989 EXTERN int tfm_temp;        /* only used in tex3.c 95/Jan/7 */
990
991 /* new stuff defined in local.c - bkph */
992
993 EXTERN bool is_initex;
994 EXTERN bool verbose_flag;
995 EXTERN bool trace_flag;
996 EXTERN bool debug_flag;
997 EXTERN bool heap_flag;
998 EXTERN bool open_trace_flag;
999 EXTERN bool cache_file_flag;
1000 EXTERN bool knuth_flag;
1001 EXTERN bool no_interrupts;
1002 EXTERN bool c_style_flag;
1003 EXTERN bool non_ascii;
1004 EXTERN bool key_replace;
1005 EXTERN bool deslash;
1006 EXTERN bool trimeof;
1007 EXTERN bool allow_patterns;
1008 EXTERN bool show_fonts_used;
1009 EXTERN bool reset_exceptions;
1010 EXTERN bool show_current;
1011 EXTERN bool current_flag;
1012 EXTERN bool current_tfm;
1013 EXTERN bool return_flag;
1014 EXTERN bool want_version;
1015 EXTERN bool civilize_flag;
1016 EXTERN bool show_numeric;
1017 EXTERN bool restrict_to_ascii;
1018 EXTERN bool show_missing;
1019 EXTERN bool full_file_name_flag;
1020 EXTERN bool save_strings_flag;
1021 EXTERN int mem_initex;
1022 EXTERN int mem_extra_high;
1023 EXTERN int mem_extra_low;
1024 EXTERN int new_hyphen_prime;
1025 EXTERN int missing_characters;
1026 EXTERN int show_in_hex;
1027 EXTERN int show_in_dos;
1028 EXTERN int show_fmt_flag;
1029 EXTERN int show_tfm_flag;
1030 EXTERN bool show_texinput_flag;  /* 1998/Jan/28 */
1031 EXTERN bool truncate_long_lines; /* 1998/Feb/2 */
1032 EXTERN bool show_cs_names;       /* 1998/Mar/31 */
1033 EXTERN int tab_step;
1034 EXTERN int pseudo_tilde;
1035 EXTERN int pseudo_space;
1036 EXTERN int allow_quoted_names;
1037 EXTERN int default_rule;
1038 EXTERN char * format_file;
1039 EXTERN char * source_direct;
1040 EXTERN char * format_name;
1041 EXTERN char * encoding_name;
1042 EXTERN bool format_specific;
1043 EXTERN bool encoding_specific;
1044 EXTERN bool show_line_break_stats;
1045 EXTERN int first_pass_count;
1046 EXTERN int second_pass_count;
1047 EXTERN int final_pass_count;
1048 EXTERN int underfull_hbox;
1049 EXTERN int overfull_hbox;
1050 EXTERN int underfull_vbox;
1051 EXTERN int overfull_vbox;
1052 EXTERN int paragraph_failed;
1053 EXTERN int single_line;
1054 EXTERN FILE * errout;
1055 EXTERN int font_dimen_zero;
1056 EXTERN int ignore_frozen;
1057 EXTERN bool suppress_f_ligs;
1058 EXTERN int abort_flag;
1059 EXTERN int err_level;
1060 EXTERN int jump_used;
1061 EXTERN jmp_buf jumpbuffer;
1062 extern int current_pool_size;
1063 extern int current_max_strings;
1064 extern int current_mem_size;
1065 extern int current_font_mem_size;
1066 extern int current_save_size;
1067 extern int current_stack_size;
1068 extern int current_nest_size;
1069 extern int current_param_size;
1070 extern int current_buf_size;
1071 extern char *tex_version;
1072 extern char *application;
1073 extern char *yandyversion;
1074 extern unsigned char wintodos[128];
1075 extern char log_line[MAXLINE];
1076 extern char *texpath;
1077
1078 memory_word * allocate_main_memory (int);
1079 memory_word * realloc_main (int, int);
1080 packed_ASCII_code * realloc_str_pool (int);
1081 pool_pointer * realloc_str_start (int);
1082 memory_word * realloc_save_stack (int);
1083 list_state_record * realloc_nest_stack (int);
1084 in_state_record * realloc_input_stack (int);
1085 halfword * realloc_param_stack (int);
1086 ASCII_code * realloc_buffer (int);
1087 fmemoryword * realloc_font_info (int);
1088
1089 int realloc_hyphen (int);
1090 int allocate_tries (int);
1091 void check_eqtb (char *);
1092 void probe_memory (void);
1093 void print_cs_names (FILE *, int);
1094 void perrormod(char *);
1095 char *grabenv(char *);
1096 void stamp_it (char *);
1097 void stampcopy (char *);
1098 bool prime (int);
1099 int endit (int);
1100
1101 void uexit (int unix_code);
1102 void t_open_in (void);
1103
1104
1105 void call_edit (ASCII_code *filename, pool_pointer fnstart,
1106                 integer fnlength, integer linenumber);
1107
1108 void add_variable_space(int);
1109
1110 void get_date_and_time (integer *minutes, integer *day,
1111                         integer *month, integer *year);
1112
1113 char *unixify (char *);
1114
1115 /****************************************************************************/
1116 #include "coerce.h"
1117 #include "yandy_macros.h"
1118 /****************************************************************************/
1119 /* sec 79 */
1120 extern void synch_h(void);
1121 extern void synch_v(void);
1122 extern void set_cur_lang(void);
1123 extern str_number make_string_pool (char *s);
1124 extern char * md5_file(FILE * in_file);
1125 extern INLINE void str_room_ (int val);
1126 #define str_room(a) str_room_((int) a)
1127 extern INLINE void tail_append_ (pointer val);
1128 #define tail_append(a) tail_append_((pointer) a)
1129 extern INLINE void tex_help (unsigned int n, ...);
1130 extern INLINE void append_char(ASCII_code c);
1131 extern INLINE void append_lc_hex(ASCII_code c);
1132 extern INLINE void succumb(void);
1133 extern INLINE void dvi_out_ (ASCII_code op);
1134 #define dvi_out(op) dvi_out_((ASCII_code) (op))
1135 extern INLINE void free_avail_(halfword p);
1136 #define free_avail(p) free_avail_((halfword) (p))
1137 extern INLINE void flush_string (void);
1138 extern int load_pool_strings (integer spare_size);
1139 #define help0()     tex_help(0)
1140 #define help1(...)  tex_help(1, __VA_ARGS__)
1141 #define help2(...)  tex_help(2, __VA_ARGS__)
1142 #define help3(...)  tex_help(3, __VA_ARGS__)
1143 #define help4(...)  tex_help(4, __VA_ARGS__)
1144 #define help5(...)  tex_help(5, __VA_ARGS__)
1145 #define help6(...)  tex_help(6, __VA_ARGS__)
1146
1147 /********BINDING WITH LIBHARU*********/
1148 EXTERN HPDF_Doc  yandy_pdf;
1149 EXTERN HPDF_Page yandy_page;
1150 EXTERN HPDF_Font yandy_font[1024];
1151 EXTERN bool pdf_doing_string;
1152 EXTERN bool pdf_doing_text;
1153 EXTERN integer scaled_out;
1154 EXTERN bool pdf_output_flag;
1155 EXTERN void pdf_ship_out(pointer p);
1156 EXTERN void pdf_vlist_out (void);
1157 EXTERN void pdf_hlist_out (void);
1158 EXTERN void pdf_begin_text(void);
1159 EXTERN void pdf_font_def(internal_font_number f);
1160 EXTERN void pdf_error_handler (HPDF_STATUS error_no, HPDF_STATUS detail_no, void * user_data);
1161 /********BINDING WITH LIBHARU*********/