1 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
3 /* allocate iniTeX (550 k) trie_c, trie_o, trie_l, trie_r, trie_hash, trie_taken */
5 /* allocate main memory for TeX (2 Meg) zmem = zzzaa */
7 /* NOT *//* allow increasing high area of main memory */ /* FLUSH */
9 /* NOT *//* allow increasing low area of main memory */ /* FLUSH */
11 /* allocate font_info (800 k) (dynamically now) */
13 /* allocate hyphenation trie stuff (270 k) trie_trl, trie_tro, trie_trc */
15 /* allocate hyphenation exception tables */
16 #define ALLOCATEHYPHEN
17 /* allow trie_size to be variable */
18 #define VARIABLETRIESIZE
19 /* allocate strings and string pointers (184 k)str_pool & str_start */
20 #define ALLOCATESTRING
21 /* NOT */ /* allocate hash table (zzzae) (78k) */
23 /* NOT */ /* allocate dvi_buf (16k) */ /* changed in 1.3 1996/Jan/18 */
24 /* #define ALLOCATEDVIBUF */
26 /* experiment to dynamically deal with save_stack 99/Jan/4 */
27 #define ALLOCATESAVESTACK
28 /* experiment to dynamically deal with input_stack 99/Jan/21 */
29 #define ALLOCATEINPUTSTACK
30 /* experiment to dynamically deal with neststack 99/Jan/21 */
31 #define ALLOCATENESTSTACK
32 /* experiment to dynamically deal with param_stack 99/Jan/21 */
33 #define ALLOCATEPARAMSTACK
34 /* experiment to dynamically deal with input buffer 99/Jan/22 */
35 #define ALLOCATEBUFFER
36 /* increase fixed allocations */
38 /* increase number of fonts - quarterword 16 bit - max_quarterword limit */
39 /* there may still be some bugs with this however ... also may slow down */
40 /* also: should split use of quarterword for (i) font from (ii) char */
41 /* for example, xeq_level ? hyphenation trie_trc ? */
43 /* NOT NOT *//* allocate eqtb (108k) */ /* changed in 1.3 1996/Jan/18 */
45 /* make font_info array fmemoryword == 32 bit instead of memory_word = 64 bit */
47 /* make hash table htwohalves == 32 bit instead of twohalves == 64 bit */
48 // #define SHORTHASH --- changed 2000/Feb/22 increase max_strings from 64K to 512M
50 /* increase trie_op_size from 751 to 3001 96/Oct/12 */
51 #define INCREASETRIEOP
54 /* With old PharLap linker it was important to avoid large fixed allocation */
55 /* Now may be better to use fixed arrays rather than allocate them */
56 /* hence ALLOCATEZQTB, ALLOCATEDVIBUF and ALLOCATEMINOR are NOT defined */
58 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
66 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
68 #define MAXLINE 256 // for log_line buffer
70 /* #define max_halfword 65535L */ /* for 32 bit memory word */
71 /* #define max_halfword 262143L */ /* for 36 bit memory word */
72 #define min_halfword -2147483647L /* for 64 bit memory word (signed) */
73 #define max_halfword 2147483647L /* for 64 bit memory word (signed) */
75 #define block_size 1000 /* block_size for variable length node alloc */
77 /* min_quarterword assumed 0 -- i.e. we use unsigned types for quarterword */
78 #define min_quarterword 0
80 #define max_quarterword 65535L
82 #define max_quarterword 255
85 /* #define default_mem_top 262140L */ /* usual big TeX allocation 2 Meg bytes */
86 /* #define default_mem_top 131070L */ /* usual big TeX allocation 1 Meg bytes */
87 #define default_mem_top 65534L /* usual small TeX allocation 0.5 Meg */
89 /* mem_bot smallest index in mem array dumped by iniTeX mem_top >= mem_min */
91 /* mem_top largest index in mem array dumped by iniTeX mem_top <= mem_max */
93 EXTERN integer mem_top;
94 #define max_mem_size (max_halfword / sizeof(memory_word) -1)
96 #define mem_top 262140L
99 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
101 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
102 /* mem_max == mem_top in iniTeX, otherwise mem_max >= mem_top */
103 /* if ALLOCATEMAIN is true, then mem_max is a variable */
104 /* otherwise it is a pre-processor defined constant */
106 EXTERN integer mem_max;
108 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
109 /* #define mem_max 262140L */
110 #define mem_max mem_top
113 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
114 /* if ALLOCATEMAIN is true, then mem_min is a variable */
115 /* otherwise it is a pre-processor defined constant */
116 /* mem_min == mem_bot in iniTeX, otherwise mem_min <= mem_bot */
118 EXTERN integer mem_min;
120 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
124 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
126 #define pool_name TEXPOOLNAME
128 /* #define mem_top 262140L */
130 /* type definitions follow */
132 typedef unsigned char ASCII_code;
133 typedef unsigned char eight_bits;
134 typedef integer pool_pointer;
135 typedef integer str_number;
136 typedef unsigned char packed_ASCII_code;
137 typedef integer scaled;
138 typedef integer nonnegative_integer;
139 typedef char small_number;
141 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
142 /* buf_size is max size of input line and max size of csname */
143 /* make sure its multiple of four bytes long */
144 /* want to increase this so it can handle whole paragraph imported from WP */
146 /* #define buf_size 8192 */
147 /* #define buf_size 12000 */ /* 1996/Jan/17 */
148 /* #define buf_size 16384 */ /* 1998/June/30 */
149 /* #define buf_size 20000 */ /* 1999/Jan/7 */
151 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
152 /* #define buf_size 3000 */
155 #ifdef ALLOCATEBUFFER
156 #define initial_buf_size 1000
157 #define increment_buf_size 2000
158 #define buf_size 2000000L /* arbitrary limit <= max_halfword */
159 EXTERN ASCII_code * buffer;
161 #define buf_size 20000 /* 1999/Jan/7 */
162 EXTERN ASCII_code buffer[buf_size + 4]; /* padded out to ... + 4 */
164 EXTERN integer first;
166 EXTERN integer max_buf_stack;
168 #define error_line 79
169 #define half_error_line 50
170 #define max_print_line 79
172 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
174 /* maximum number of simultaneous input sources (?) */
175 /* #define stack_size 600 */ /* expanded again 1999/Jan/21 */
176 /* #define stack_size 800 */
177 /* maximum number of input files and insertions that can be going on */
178 /* #define max_in_open 15 */ /* for Y&Y TeX 1.2 */
179 /* #define max_in_open 31 */ /* 1996/Jan/17 */
180 /* #define max_in_open 63 */ /* 1996/Jan/18 */
181 #define max_in_open 127 /* 1996/Jan/20 - really ? */
182 /* save_size space for saving values outside of current group */
183 /* #define save_size 6000 */
184 /* #define save_size 8000 */ /* 1999/Jan/6 */
186 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
187 /* #define stack_size 300 */ /* Unix C version default */
188 #define max_in_open 15
189 /* #define save_size 1000 */ /* 3.14159 C version */
190 /* #define save_size 4000 */ /* 3.14159 C version */
193 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
194 /* maximum internal font number - cannot be greated than max_quarter_word ! */
196 /* #define font_max 511 */
197 #define font_max 1023 /* 1996/Jan/17 */
199 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
203 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
204 /* free the limit on font memory ! */ /* (2^32 - 1) / sizeof(memory_word) */
206 /* #define font_mem_size 262140L */
207 #define font_mem_size (max_halfword / sizeof(memory_word) -1)
209 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
210 #define font_mem_size 100000L
213 /* our real font_mem_size is 268435456 --- ridiculously large, of course */
215 /* #define non_address font_mem_size */ /* 3.141 */
216 #define non_address 0 /* 3.14159 96/Jan/16 */
218 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
220 /* below is new dynamic allocation - bkph 93/Nov/28 */ /* enough for lplain */
222 #define initial_font_mem_size 20000
223 #define increment_font_mem_size 40000
226 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
227 /* param_size maximum number of simultaneous macro parameters */
228 /* nest_size maximum number of semantic levels simultaneously active */
230 /* #define param_size 60 */ /* 3.14159 C version */
231 /* #define param_size 120 */
232 /* #define param_size 200 */ /* 1994/Oct/11 */
233 /* #define param_size 300 */ /* 1995/May/15 */
234 /* #define param_size 500 */ /* 1997/Jan/17 */
235 /* #define nest_size 40 */ /* 3.14159 C version */
236 /* #define nest_size 80 */
237 /* #define nest_size 100 */ /* 1994/Oct/11 */
238 /* #define nest_size 120 */ /* 1995/May/15 */
239 /* #define nest_size 200 */ /* 1999/Jan/7 */
241 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
242 /* #define param_size 60 */ /* Unix C default */
243 /* #define nest_size 40 */ /* Unix C default */
244 /* #define nest_size 100 */ /* Unix C default */
247 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
248 /* max_strings max number of strings */ /* (2^32 - 1) / sizeof (integer) */
249 #ifdef ALLOCATESTRING
250 /* #define max_strings 262140L */
251 // #define max_strings (max_halfword / sizeof(integer) -1)
252 #define max_strings (max_halfword / sizeof(pool_pointer) -1)
253 /* #define pool_size 4032000L */
254 #define pool_size (max_halfword - 1)
255 /* #define stringmargin 32768L */
256 #define stringmargin 10000
258 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
259 /* #define max_strings 15000 */
260 #define max_strings 16384
261 #define pool_size 124000L
263 #define stringvacancies 100000L
265 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
266 /* #if defined (ALLOCATEINITRIE) && defined (ALLOCATEHYPHEN) */
267 #ifdef VARIABLETRIESIZE
268 EXTERN integer trie_size;
269 #define default_trie_size 60000
270 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
272 #define trie_size 30000 /* 3.14159 C version */
275 /* increase trieop to accomadate more hyphenation patterns 96/OCt/12 */
277 #ifdef INCREASETRIEOP
278 #define trie_op_size 3001
279 #define neg_trie_op_size -3001
280 #define min_trie_op 0
281 #define max_trie_op 1000
283 #define trie_op_size 751
284 #define neg_trie_op_size -751
285 #define min_trie_op 0
286 #define max_trie_op 500
289 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
290 /* dvi_buf_size must be multiple of 8 - half is written out at a time */
291 #ifdef ALLOCATEDVIBUF
292 #define default_dvi_buf_size 16384
293 /* #define default_dvi_buf_size 32768 */ /* ? */
294 EXTERN int dvi_buf_size;
296 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
297 #define dvi_buf_size 16384 /* 3.14159 C version */
298 /* #define dvi_buf_size 32768 */ /* ? */
301 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
302 /* WARNING: increasing hash table for cs names is not trivial */
303 /* size of hash table for control sequence name < (mem_max - mem_min) / 10 */
304 /* #define hash_size 9500 */
305 /* #define hash_size 25000 */ /* 96/Jan/10 */
306 #define hash_size 32768 /* 96/Jan/17 */
307 /* trick to try and get around eqtb_extra problem */
308 /* #define hash_extra -256 */
309 #define hash_extra (255 - font_max)
310 /* hash prime about 85% of hash_size (+ hash_extra) */
311 /* #define hashprime 7919 */
312 /* #define hash_prime 21247 */ /* 96/Jan/10 */
313 #define hash_prime 27197 /* 96/Jan/17 */
314 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
316 /* CONSTRAINT: reconcile increase font use by stealing from hash table ... */
318 /* Probably require eqtb_extra to be zero, so hash_extra = 255 - font_max */
319 #if (hash_extra != 255 - font_max)
320 #error ERROR: hash_extra not equal to (255 - font_max)
323 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
325 /* some sanity check when using narrow hash table ... */
327 /* using SHORTHASH limits hash_size to be less than 65536 */
328 /* using SHORTHASH limits max_strings to be less than 65536 */
329 /* if you ever need more string pointers, then #undef SHORTHASH --- */
330 /* you'll use more memory (about 130k byte) and format file larger (8k) */
333 /* can only do this if INCREASEFONTS defined up above ... */
334 #if (max_quarterword < 65535L)
335 #error ERROR: max_quarterword < 65535L
337 /* with narrowed hash table can only have 65535 string pointers */
338 /* #if (max_strings > max_quarterword) */ /* this test does not work */
340 #define max_strings max_quarterword
342 /* with narrowed hash table can only have 65535 hash table entries */
343 #if (hash_size > max_quarterword)
345 #define hash_size max_quarterword
347 #endif /* end of if SHORTHASH */
349 /* NOTE: if you define/undefine SHORTFONT have to redo formats */
351 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
353 typedef unsigned short quarterword;
355 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
356 typedef unsigned char quarterword;
359 /* possible alternative ? */ /* min_halfword = 0 and double max_halfword ? */
360 /* typedef unsigned long halfword; NO NO: since mem_min may be < 0 */
361 typedef integer halfword;
362 typedef char twochoices;
363 typedef char fourchoices;
365 #include "texmfmem.h"
367 typedef char glue_ord;
370 /* short mode_field; */
372 halfword head_field, tail_field;
373 integer pg_field, ml_field;
374 memory_word aux_field;
377 typedef char group_code;
380 quarterword state_field, index_field;
381 halfword start_field, loc_field, limit_field, name_field;
384 typedef integer internal_font_number;
385 typedef integer font_index;
386 typedef integer dvi_index;
387 typedef integer trie_op_code;
388 typedef integer trie_pointer;
390 /* typedef short hyph_pointer; */ /* increased 1996/Oct/20 ??? */
391 typedef integer hyph_pointer;
394 EXTERN ASCII_code xord[256];
395 EXTERN ASCII_code xchr[256];
396 /* EXTERN char name_of_file[PATHMAX + 1]; */
397 // EXTERN char name_of_file[PATHMAX + 4]; /* padded out 512 + 4 */
398 EXTERN unsigned char name_of_file[PATHMAX + 4]; // fix 2000 June 18
399 EXTERN integer name_length;
401 /* EXTERN ASCII_code buffer[buf_size + 1]; */
402 /* EXTERN ASCII_code buffer[buf_size + 4]; */ /* padded out to ... + 4 */
404 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
405 #ifdef ALLOCATESTRING
406 #define initial_pool_size 40000
407 #define increment_pool_size 80000
408 EXTERN packed_ASCII_code * str_pool;
409 #define initial_max_strings 5000
410 #define increment_max_strings 10000
411 EXTERN pool_pointer * str_start;
413 EXTERN packed_ASCII_code str_pool[pool_size + 1];
414 EXTERN pool_pointer str_start[max_strings + 1];
416 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
418 EXTERN pool_pointer pool_ptr;
419 EXTERN str_number str_ptr;
420 EXTERN pool_pointer init_pool_ptr;
421 EXTERN str_number init_str_ptr;
424 EXTERN alpha_file pool_file;
427 EXTERN alpha_file log_file;
428 /* EXTERN char selector; */
429 /* EXTERN integer selector; */ /* padded out */
430 EXTERN int selector; /* padded out */ /* 95/Jan/7 */
431 /* EXTERN char dig[23]; */
432 EXTERN char dig[23 + 1]; /* padded out */
433 EXTERN integer tally;
434 EXTERN integer term_offset;
435 EXTERN integer file_offset;
436 EXTERN ASCII_code trick_buf[error_line + 1]; /* already padded 79 + 1 */
437 EXTERN integer trick_count;
438 EXTERN integer first_count;
439 /* EXTERN char interaction; */
440 /* EXTERN integer interaction; */ /* padded out */
441 EXTERN int interaction; /* padded out */ /* 95/Jan/7 */
442 EXTERN bool deletions_allowed;
443 EXTERN bool set_box_allowed;
444 /* EXTERN char history; */
445 /* EXTERN integer history; */ /* padded out */
446 EXTERN int history; /* padded out */ /* 95/Jan/7 */
447 /* EXTERN schar error_count; */
448 /* EXTERN integer error_count; */ /* padded out */
449 EXTERN int error_count; /* padded out */ /* 95/Jan/7 */
450 /* EXTERN str_number help_line[6]; */
451 EXTERN char * help_line[6];
452 /* EXTERN char help_ptr; */
453 /* EXTERN integer help_ptr; */ /* padded out */
454 EXTERN int help_ptr; /* padded out */ /* 95/Jan/7 */
455 EXTERN bool use_err_help;
456 /* EXTERN integer interrupt; */
457 EXTERN volatile integer interrupt; /* bkph - do avoid compiler optimization */
458 EXTERN bool OK_to_interrupt;
459 EXTERN bool arith_error;
460 EXTERN scaled tex_remainder;
461 EXTERN halfword temp_ptr;
463 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
465 EXTERN memory_word * mainmemory; /* remembered so can be free() later */
466 EXTERN memory_word * zzzaa;
469 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
471 /* #define zmem (zzzaa - (int)(mem_min)) */
472 /* zzzaa[mem_max - mem_min + 1]; */
473 #define zmem (zzzaa - (int)(mem_bot))
474 zzzaa[mem_max - mem_bot + 1];
477 EXTERN halfword lo_mem_max;
478 EXTERN halfword hi_mem_min;
479 EXTERN integer var_used, dyn_used;
480 EXTERN halfword avail;
481 EXTERN halfword mem_end;
482 EXTERN halfword mem_start; /* new in 3.14159 ??? */
483 EXTERN halfword rover;
485 /* NOTE: the following really also need to be dynamically allocated */
487 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
491 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
492 /* EXTERN bool */ /* save (4 - 1) * mem_max - mem_min */
494 /* #define freearr (zzzab - (int)(mem_min)) */
495 /* zzzab[mem_max - mem_min + 1]; */
496 #define freearr (zzzab - (int)(mem_bot))
497 zzzab[mem_max - mem_bot + 1];
503 /* EXTERN bool */ /* save (4 - 1) * mem_max - mem_min */
505 /* #define wasfree (zzzac - (int)(mem_min)) */
506 #define wasfree (zzzac - (int)(mem_bot))
507 /* zzzac[mem_max - mem_min + 1]; */
508 zzzac[mem_max - mem_bot + 1];
511 EXTERN halfword was_mem_end, was_lo_max, was_hi_min;
512 EXTERN bool panicking;
515 EXTERN integer font_in_short_display;
516 EXTERN integer depth_threshold;
517 EXTERN integer breadth_max;
518 /* EXTERN list_state_record nest[nest_size + 1]; */
519 /* EXTERN short shown_mode; */
520 /* EXTERN integer shown_mode; */ /* padded out */
521 EXTERN int shown_mode; /* padded out */ /* 95/Jan/7 */
522 /* EXTERN char old_setting; */
523 /* EXTERN integer old_setting; */ /* padded out */
524 EXTERN int old_setting; /* padded out */ /* 95/Jan/7 */
526 /* eqtn_extra is no longer used --- it should be 0 96/Jan/10 */
528 #define eqtb_extra (font_max - 255 + hash_extra)
533 /* Probably require eqtb_extra to be zero, so hash_extra = 255 - font_max */
534 #if (eqtb_extra != 0)
535 #error ERROR: eqtb_extra is not zero (need hash_extra equal 255 - font_max)
538 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
540 EXTERN memory_word * zeqtb;
541 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
544 /* EXTERN memory_word zeqtb[13507 + eqtb_extra]; */
545 EXTERN memory_word eqtb[(hash_size + 4007) + eqtb_extra];
547 /* EXTERN memory_word zeqtb[13507]; */ /* hash_size = 9500 */
548 /* EXTERN memory_word zeqtb[29007]; */ /* hash_size = 25000 */
549 EXTERN memory_word zeqtb[(hash_size + 4007)];
553 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
554 /* EXTERN quarterword
555 #define xeq_level (zzzad -12663) hash_size = 9500
556 #define xeq_level (zzzad -28163) hash_size = 25000
560 /* #define xeq_level (zzzad - (12663 + eqtb_extra)) */
561 #define xeq_level (zzzad - ((hash_size + 3163) + eqtb_extra))
562 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
564 /* #define xeq_level (zzzad -12663) */
565 #define xeq_level (zzzad - (hash_size + 3163))
568 EXTERN quarterword zzzad[844]; /* ??? attempt to fix 99/Jan/5 */
569 /* region 5 & 6 int_base to eqtb_size: 13507 - 12663 */
571 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
573 #define hash (zzzae - 514)
574 zzzae[9767]; hash_size = 9500
575 zzzae[25267]; hash_size = 25000 */
579 EXTERN htwohalves *zzzae;
581 EXTERN twohalves *zzzae;
583 #define hash (zzzae - 514)
584 #else /* not allocating hash table */
585 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
591 #define hash (zzzae - 514)
594 zzzae[hash_size + 267 + eqtb_extra];
596 zzzae[hash_size + 267];
600 EXTERN halfword hash_used;
601 EXTERN bool no_new_control_sequence;
602 EXTERN integer cs_count;
604 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
605 /* using allocated save stack slows it down 1% to 2% */
606 /* despite reallocation, we still limit it to something finite */
607 /* to avoid soaking up all of machine memory in case of infinite loop */
608 #ifdef ALLOCATESAVESTACK
609 #define save_size 65536 /* arbitrary - ridiculously large */
610 #define initial_save_size 1000
611 #define increment_save_size 2000
612 EXTERN memory_word *save_stack;
614 #define save_size 8000 /* 1999/Jan/6 enough for even CRC */
615 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
616 EXTERN memory_word save_stack[save_size + 1];
619 EXTERN integer save_ptr;
620 EXTERN integer max_save_stack;
622 /* The following could really be char instead of quarterword ... */
623 /* EXTERN quarterword cur_level; */
624 /* EXTERN integer cur_level; */ /* padded out */
625 EXTERN int cur_level; /* padded out */ /* 95/Jan/7 */
627 /* EXTERN group_code cur_group; */
628 /* EXTERN integer cur_group; */ /* padded out */
629 EXTERN int cur_group; /* padded out */ /* 95/Jan/7 */
631 EXTERN integer cur_boundary;
632 EXTERN integer mag_set;
634 /* EXTERN eight_bits cur_cmd; */
635 /* EXTERN integer cur_cmd; */ /* padded out */
636 EXTERN int cur_cmd; /* padded out */ /* 95/Jan/7 */
638 /* EXTERN halfword cur_chr; */ /* itex, tex0, tex, tex3, tex5, tex6, tex7, tex8 */
639 EXTERN int cur_chr; /* 95/Jan/7 */
641 EXTERN halfword cur_cs;
642 EXTERN halfword cur_tok;
644 #ifdef ALLOCATENESTSTACK
645 #define nest_size 65536 /* arbitrary - ridiculously large */
646 #define initial_nest_size 100
647 #define increment_nest_size 200
648 EXTERN list_state_record * nest;
650 #define nest_size 200 /* 1999/Jan/7 */
651 EXTERN list_state_record nest[nest_size + 1];
653 EXTERN integer nest_ptr;
654 EXTERN integer max_nest_stack;
655 EXTERN list_state_record cur_list;
657 #ifdef ALLOCATEPARAMSTACK
658 #define param_size 65536 /* arbitrary - ridiculously large */
659 #define initial_param_size 100
660 #define increment_param_size 200
661 EXTERN halfword * param_stack;
663 #define param_size 500 /* 1997/Jan/17 */
664 EXTERN halfword param_stack[param_size + 1];
666 EXTERN integer param_ptr;
667 EXTERN integer max_param_stack;
669 #ifdef ALLOCATEINPUTSTACK
670 #define stack_size 65536 /* arbitrary - ridiculously large */
671 #define initial_stack_size 100
672 #define increment_stack_size 200
673 EXTERN in_state_record *input_stack;
675 #define stack_size 800
676 EXTERN in_state_record input_stack[stack_size + 1];
678 EXTERN integer input_ptr;
679 EXTERN integer max_in_stack;
681 EXTERN integer high_in_open; /* 1997/Jan/17 */
682 EXTERN in_state_record cur_input;
684 /* EXTERN integer in_open; */ /* used in itex, tex2, texmf */
685 EXTERN int in_open; /* 95/Jan/7 */
687 EXTERN integer open_parens;
688 EXTERN integer max_open_parens;
689 EXTERN alpha_file input_file[max_in_open + 1];
691 EXTERN integer line_stack[max_in_open + 1];
693 /* EXTERN char scanner_status; */
694 /* EXTERN integer scanner_status; */ /* padded out */
695 EXTERN int scanner_status; /* padded out */ /* 95/Jan/7 */
697 EXTERN halfword warning_index;
698 EXTERN halfword def_ref;
700 EXTERN integer align_state;
701 EXTERN integer base_ptr;
702 EXTERN halfword par_loc;
703 EXTERN halfword par_token;
704 EXTERN bool force_eof;
705 /* EXTERN halfword cur_mark[5]; */
706 EXTERN halfword cur_mark[6];
708 /* EXTERN char long_state; */
709 /* EXTERN integer long_state; */ /* padded out */
710 EXTERN int long_state; /* padded out */ /* 95/Jan/7 */
712 /* EXTERN halfword pstack[9]; */
713 EXTERN halfword pstack[10];
715 /* EXTERN integer cur_val; */
716 EXTERN int cur_val; /* 95/Jan/7 */
718 /* EXTERN char cur_val_level; */
719 /* EXTERN integer cur_val_level; */ /* padded out */
720 EXTERN int cur_val_level; /* padded out */ /* 95/Jan/7 */
722 /* EXTERN small_number radix; */
723 /* EXTERN integer radix; */ /* padded out */
724 EXTERN int radix; /* padded out */ /* 95/Jan/7 */
726 /* EXTERN glue_ord cur_order; */
727 /* EXTERN integer cur_order; */ /* padded out */
728 EXTERN int cur_order; /* padded out */ /* 95/Jan/7 */
730 EXTERN alpha_file read_file[16]; /* hard wired limit in TeX */
731 /* EXTERN char read_open[17]; */
732 EXTERN char read_open[20]; /* padded out */
734 EXTERN halfword cond_ptr;
736 /* EXTERN char if_limit; */
737 /* EXTERN integer if_limit; */ /* padded out */
738 EXTERN int if_limit; /* padded out */ /* 95/Jan/7 */
740 /* EXTERN small_number cur_if; */
741 /* EXTERN integer cur_if; */ /* padded out */
742 EXTERN int cur_if; /* padded out */ /* 95/Jan/7 */
744 EXTERN integer if_line;
745 EXTERN integer skip_line;
746 EXTERN str_number cur_name;
747 EXTERN str_number cur_area;
748 EXTERN str_number cur_ext;
749 EXTERN pool_pointer area_delimiter;
750 EXTERN pool_pointer ext_delimiter;
751 EXTERN integer format_default_length;
752 EXTERN ccharpointer TEX_format_default;
753 EXTERN bool name_in_progress;
754 EXTERN bool log_opened;
755 EXTERN bool quoted_file_name;
756 EXTERN str_number job_name;
757 EXTERN str_number output_file_name; // DVI file
758 EXTERN str_number texmf_log_name; // LOG file
759 EXTERN byte_file dvi_file;
760 EXTERN byte_file tfm_file;
761 EXTERN char * dvi_file_name;
762 EXTERN char * log_file_name;
764 /*******************************************************************/
766 /* SHORTFONTINFO halves the memory word used to store font info */
767 /* if it is not defined we use ordinary TeX memory words */
770 /* keep definition of fmemoryword in texmfmem.h */
771 /* keep definition of ffourquarters in texfmem.h */
772 /* keep definition of fquarterword in texfmem.h */
774 /* go back to original definition as TeX memory word */
776 #define fmemoryword memory_word
777 /* go back to original definition as fourquarters of a TeX word */
779 #define ffourquarters fourquarters
780 /* go back to original definition as quaterword */
782 #define fquarterword quarterword
785 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
787 EXTERN fmemoryword * font_info;
788 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
790 /* EXTERN memory_word font_info[font_mem_size + 1]; */
791 EXTERN fmemoryword font_info[font_mem_size + 1];
794 EXTERN font_index fmem_ptr;
795 EXTERN internal_font_number font_ptr;
796 EXTERN internal_font_number frozenfontptr; /* 99/Mar/26 */
797 /* There are about 24 integer size items per font, or about 100 bytes */
798 EXTERN ffourquarters font_check[font_max + 1];
800 EXTERN scaled font_size[font_max + 1];
801 EXTERN scaled font_dsize[font_max + 1];
802 EXTERN font_index font_params[font_max + 1]; /* in 3.14159 */
803 EXTERN str_number font_name[font_max + 1];
804 EXTERN str_number font_area[font_max + 1];
805 EXTERN eight_bits font_bc[font_max + 1]; /* already padded 511 + 1 = 512 */
806 EXTERN eight_bits font_ec[font_max + 1]; /* already padded 511 + 1 = 512 */
807 EXTERN halfword font_glue[font_max + 1];
808 /* use char instead of bool to save space, but is it worth slow down ? */
809 /* EXTERN char font_used[font_max + 1]; */
810 EXTERN bool font_used[font_max + 1];
812 /* might want to make some of following only one character wide also ? */
813 /* except some use -1 as special case value */
814 /* well, at least make them short instead of integer */
815 EXTERN integer hyphen_char[font_max + 1];
816 EXTERN integer skew_char[font_max + 1];
817 EXTERN font_index bchar_label[font_max + 1];
818 EXTERN short font_bchar[font_max + 1]; /* already padded 1023 + 1 = 1024 */
819 /* don't change above to int or format file will be incompatible */
820 EXTERN short font_false_bchar[font_max + 1]; /* already padded 1023 + 1 = 1024 */
821 /* don't change above to int or format file will be incompatible */
822 EXTERN integer char_base[font_max + 1];
823 EXTERN integer width_base[font_max + 1];
824 EXTERN integer height_base[font_max + 1];
825 EXTERN integer depth_base[font_max + 1];
826 EXTERN integer italic_base[font_max + 1];
827 EXTERN integer lig_kern_base[font_max + 1];
828 EXTERN integer kern_base[font_max + 1];
829 EXTERN integer exten_base[font_max + 1];
830 EXTERN integer param_base[font_max + 1];
832 EXTERN ffourquarters null_character;
834 EXTERN integer total_pages;
837 EXTERN integer max_push;
838 EXTERN integer last_bop;
839 EXTERN integer dead_cycles;
840 EXTERN bool doing_leaders;
842 /* EXTERN quarterword c, f; */
843 /* EXTERN integer c, f */; /* padded out */
844 EXTERN int c, f; /* padded out */ /* 95/Jan/7 */
846 EXTERN scaled rule_ht, rule_dp, rule_wd;
848 EXTERN integer lq, lr;
850 #ifdef ALLOCATEDVIBUF
851 EXTERN eight_bits *zdvibuf;
853 /* EXTERN eight_bits dvi_buf[dvi_buf_size + 1]; */
854 /* EXTERN eight_bits dvi_buf[dvi_buf_size + 4]; */ /* padded out */
855 EXTERN eight_bits zdvibuf[dvi_buf_size + 4]; /* padded out 1996/Jan/18 */
858 EXTERN dvi_index half_buf;
859 EXTERN dvi_index dvi_limit;
860 EXTERN dvi_index dvi_ptr;
861 EXTERN integer dvi_offset;
862 EXTERN integer dvi_gone;
863 EXTERN halfword down_ptr, right_ptr;
864 EXTERN scaled dvi_h, dvi_v;
865 EXTERN scaled cur_h, cur_v;
866 EXTERN internal_font_number dvi_f;
867 EXTERN integer cur_s;
868 EXTERN scaled total_stretch[4], total_shrink[4]; /* padded already */
869 EXTERN integer last_badness;
870 EXTERN halfword adjust_tail;
871 EXTERN integer pack_begin_line;
872 EXTERN twohalves empty_field;
873 EXTERN fourquarters null_delimiter;
874 EXTERN halfword cur_mlist;
876 /* EXTERN small_number cur_style; */
877 /* EXTERN integer cur_style; */ /* padded out */ /* tex5.c, tex7.c */
878 EXTERN int cur_style; /* padded out */ /* 95/Jan/7 */
880 /* EXTERN small_number cur_size; */
881 /* EXTERN integer cur_size; */ /* padded out */
882 EXTERN int cur_size; /* padded out */ /* 95/Jan/7 */
884 EXTERN scaled cur_mu;
885 EXTERN bool mlist_penalties;
886 EXTERN internal_font_number cur_f;
888 /* EXTERN quarterword cur_c; */
889 /* EXTERN integer cur_c; */ /* padded out */
890 EXTERN int cur_c; /* padded out */ /* 95/Jan/7 */
892 EXTERN ffourquarters cur_i;
894 EXTERN integer magic_offset;
895 EXTERN halfword cur_align;
896 EXTERN halfword cur_span;
897 EXTERN halfword cur_loop;
898 EXTERN halfword align_ptr;
899 EXTERN halfword cur_head, cur_tail;
900 EXTERN halfword just_box;
901 EXTERN halfword passive;
902 EXTERN halfword printed_node;
903 EXTERN halfword pass_number;
904 /* EXTERN scaled active_width[7]; */
905 EXTERN scaled active_width[8];
906 /* EXTERN scaled cur_active_width[7]; */
907 EXTERN scaled cur_active_width[8];
908 /* EXTERN scaled background[7]; */
909 EXTERN scaled background[8];
910 /* EXTERN scaled break_width[7]; */
911 EXTERN scaled break_width[8];
912 EXTERN bool noshrinkerroryet;
913 EXTERN halfword cur_p;
914 EXTERN bool second_pass;
915 EXTERN bool final_pass;
916 EXTERN integer threshold;
917 EXTERN integer minimal_demerits[4];
918 EXTERN integer minimum_demerits;
919 EXTERN halfword best_place[4];
920 EXTERN halfword best_pl_line[4];
921 EXTERN scaled disc_width;
922 EXTERN halfword easyline;
923 EXTERN halfword last_special_line;
924 EXTERN scaled first_width;
925 EXTERN scaled second_width;
926 EXTERN scaled first_indent;
927 EXTERN scaled second_indent;
928 EXTERN halfword best_bet;
929 EXTERN integer fewest_demerits;
930 EXTERN halfword best_line;
931 EXTERN integer actual_looseness;
932 EXTERN integer line_diff;
933 /* EXTERN short hc[64+2]; */ /* padded OK 66 * 2 = 132 which is divisible by 4 */
934 EXTERN int hc[66]; /* padded OK 66 * 2 = 132 which is divisible by 4 */
936 /* EXTERN small_number hn; */
937 /* EXTERN integer hn; */ /* padded out */
938 EXTERN int hn; /* padded out */ /* 95/Jan/7 */
940 EXTERN halfword ha, hb;
942 /* EXTERN internal_font_number hf; */
943 EXTERN int hf; /* 95/Jan/7 */
945 /* EXTERN short hu[64+2]; */ /* padded OK */
946 EXTERN int hu[66]; /* padded OK */
948 /* EXTERN integer hyf_char; */
949 EXTERN int hyf_char; /* 95/Jan/7 */
951 /* init_cur_lang new in 3.14159 */
952 /* EXTERN ASCII_code cur_lang, init_cur_lang; */
953 /* EXTERN integer cur_lang, init_cur_lang; */ /* padded out */
954 EXTERN int cur_lang, init_cur_lang; /* padded out */ /* 95/Jan/7 */
956 EXTERN integer lhyf, rhyf;
957 /* EXTERN init_l_hyf, init_r_hyf; */ /* new in 3.14159 */
958 EXTERN integer init_l_hyf, init_r_hyf; /* new in 3.14159 */
960 EXTERN halfword hyfbchar;
961 /* EXTERN char hyf[65]; */
962 EXTERN char hyf[68]; /* padded out */
963 EXTERN halfword init_list;
964 EXTERN bool init_lig;
965 EXTERN bool init_lft;
967 /* EXTERN small_number hyphen_passed; */
968 /* EXTERN integer hyphen_passed; */ /* padded out */
969 EXTERN int hyphen_passed; /* padded out */ /* 95/Jan/7 */
971 /* EXTERN halfword cur_l, cur_r; */ /* make int's ? 95/Jan/7 */
972 EXTERN int cur_l, cur_r; /* make int's ? 95/Jan/7 */
974 EXTERN halfword cur_q;
975 EXTERN halfword lig_stack;
976 EXTERN bool ligature_present;
977 EXTERN bool lft_hit, rt_hit;
979 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
980 /* could perhaps use packed_ASCII_code for trie_trc ? */
982 EXTERN halfword *trie_trl;
983 EXTERN halfword *trie_tro;
984 EXTERN quarterword *trie_trc;
986 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
987 EXTERN halfword trie_trl[trie_size + 1];
988 EXTERN halfword trie_tro[trie_size + 1];
989 EXTERN quarterword trie_trc[trie_size + 1];
991 EXTERN small_number hyf_distance[trie_op_size + 1]; /* already padded 751 + 1 */
992 EXTERN small_number hyf_num[trie_op_size + 1]; /* already padded 751 + 1 */
993 EXTERN trie_op_code hyf_next[trie_op_size + 1];
994 EXTERN integer op_start[256];
996 /* if ALLOCATEHYPHEN is true, then hyphen_prime is a variable */
997 /* otherwise it is a pre-processor defined constant */
998 #ifdef ALLOCATEHYPHEN
999 #define default_hyphen_prime 1009
1000 EXTERN str_number * hyph_word;
1001 EXTERN halfword * hyph_list;
1002 /* EXTERN hyphen_prime; */
1003 EXTERN integer hyphen_prime;
1005 #define hyphen_prime 607
1006 /* EXTERN str_number hyph_word[608]; */
1007 EXTERN str_number hyph_word[hyphen_prime + 1];
1008 /* EXTERN halfword hyph_list[608]; */
1009 EXTERN halfword hyph_list[hyphen_prime + 1];
1012 /* EXTERN hyph_pointer hyph_count; */
1013 /* EXTERN integer hyph_count; */ /* padded out */
1014 EXTERN int hyph_count; /* padded out */ /* 95/Jan/7 */
1017 EXTERN integer trie_op_hash_C[trie_op_size - neg_trie_op_size + 1];
1018 #define trie_op_hash (trie_op_hash_C - (int)(neg_trie_op_size))
1019 EXTERN trie_op_code trie_used[256];
1020 EXTERN ASCII_code trie_op_lang[trie_op_size + 1]; /* already padded 751 + 1 */
1021 EXTERN trie_op_code trie_op_val[trie_op_size + 1];
1022 EXTERN integer trie_op_ptr;
1025 EXTERN trie_op_code max_op_used;
1026 EXTERN bool smallop;
1030 EXTERN packed_ASCII_code *trie_c;
1031 EXTERN trie_op_code *trie_o;
1032 EXTERN trie_pointer *trie_l;
1033 EXTERN trie_pointer *trie_r;
1034 EXTERN trie_pointer *trie_hash;
1035 #else /* end ALLOCATEINI */
1036 EXTERN packed_ASCII_code trie_c[trie_size + 1];
1037 EXTERN trie_op_code trie_o[trie_size + 1];
1038 EXTERN trie_pointer trie_l[trie_size + 1];
1039 EXTERN trie_pointer trie_r[trie_size + 1];
1040 EXTERN trie_pointer trie_hash[trie_size + 1];
1041 #endif /* end not ALLOCATEINI */
1042 EXTERN trie_pointer trie_ptr;
1047 /* EXTERN bool *trie_taken; */ /* save (4 - 1) * trie_size = 90,000 byte */
1048 EXTERN char *trie_taken;
1050 EXTERN bool trie_taken[trie_size + 1];
1053 EXTERN trie_pointer trie_min[256];
1054 EXTERN trie_pointer trie_max;
1055 EXTERN bool trie_not_ready;
1057 EXTERN scaled best_height_plus_depth;
1058 EXTERN halfword page_tail;
1060 /* EXTERN char page_contents; */
1061 /* EXTERN integer page_contents; */ /* padded out */
1062 EXTERN int page_contents; /* padded out */ /* 95/Jan/7 */
1064 #define cs_token_flag 4095 /* if we should want to use this ... */
1066 /* ********************************************************************* */
1068 /* do *some* sanity checking here --- rather than in TeX later 96/Jan/18 */
1069 /* (cannot catch everything here, since some is now dynamic) */
1071 #if (half_error_line < 30) || (half_error_line > error_line - 15)
1072 #error ERROR: (half_error_line < 30) || (half_error_line > error_line - 15) BAD 1
1075 #if (max_print_line < 60)
1076 #error ERROR: (max_print_line < 60) BAD 2
1079 #if (hash_prime > hash_size)
1080 #error ERROR: (hash_prime > hash_size) BAD 5
1083 #if (max_in_open > 127)
1084 #error ERROR: (max_in_open > 127) BAD 6
1087 #if (min_quarterword > 0) || (max_quarterword < 127)
1088 #error ERROR: (min_quarterword > 0) || (max_quarterword < 127) BAD 11
1091 #if (min_halfword > 0) || (max_halfword < 32767)
1092 #error ERROR: (min_halfword > 0) || (max_halfword < 32767) BAD 12
1095 #if (min_quarterword < min_halfword) || (max_quarterword > max_halfword)
1096 #error ERROR: (min_quarterword < min_halfword) || (max_quarterword > max_halfword) BAD 13
1099 #if (font_max > max_quarterword)
1100 #error ERROR: (font_max > max_quarterword) BAD 15
1103 #if (save_size > max_halfword)
1104 #error ERROR: (save_size > max_halfword) BAD 17
1107 #if (buf_size > max_halfword)
1108 #error ERROR: (buf_size > max_halfword) BAD 18
1111 #if (max_quarterword - min_quarterword) < 255
1112 #error (max_quarterword - min_quarterword) < 255 BAD 19
1115 /* ********************************************************************* */
1117 EXTERN scaled page_max_depth;
1118 EXTERN halfword best_page_break;
1119 EXTERN integer least_page_cost;
1120 EXTERN scaled best_size;
1121 EXTERN scaled page_so_far[8];
1122 EXTERN halfword last_glue;
1123 EXTERN integer last_penalty;
1124 EXTERN scaled last_kern;
1125 EXTERN integer insert_penalties;
1126 EXTERN bool output_active;
1127 EXTERN internal_font_number main_f;
1129 EXTERN ffourquarters main_i;
1130 EXTERN ffourquarters main_j;
1132 EXTERN font_index main_k;
1133 EXTERN halfword main_p;
1134 EXTERN integer main_s;
1135 EXTERN halfword bchar;
1136 EXTERN halfword false_bchar;
1137 EXTERN bool cancel_boundary;
1138 EXTERN bool ins_disc;
1139 EXTERN halfword cur_box;
1140 EXTERN halfword after_token;
1141 EXTERN bool long_help_seen;
1142 EXTERN str_number format_ident;
1143 EXTERN word_file fmt_file;
1144 EXTERN integer ready_already;
1146 EXTERN alpha_file write_file[16]; /* hard wired limit in TeX */
1147 EXTERN bool write_open[18];
1149 EXTERN halfword write_loc;
1150 EXTERN pool_pointer edit_name_start;
1151 /* EXTERN integer edit_name_length, edit_line, tfm_temp; */
1152 EXTERN integer edit_name_length, edit_line;
1153 /* EXTERN integer tfm_temp; */ /* only used in tex3.c */
1154 EXTERN int tfm_temp; /* only used in tex3.c 95/Jan/7 */
1156 /* new stuff defined in local.c - bkph */
1159 EXTERN bool is_initex;
1160 EXTERN bool verbose_flag;
1161 EXTERN bool trace_flag;
1162 EXTERN bool debug_flag;
1163 EXTERN bool heap_flag;
1164 EXTERN bool open_trace_flag;
1165 EXTERN bool cache_file_flag;
1166 EXTERN bool knuth_flag;
1167 EXTERN bool no_interrupts;
1168 EXTERN bool c_style_flag;
1169 EXTERN bool non_ascii;
1170 EXTERN bool key_replace;
1171 EXTERN bool deslash;
1172 EXTERN bool trimeof;
1173 EXTERN bool allow_patterns;
1174 EXTERN bool show_fonts_used;
1175 EXTERN bool reset_exceptions;
1176 EXTERN bool show_current;
1177 EXTERN bool current_flag;
1178 EXTERN bool current_tfm;
1179 EXTERN bool return_flag;
1180 EXTERN bool want_version;
1181 EXTERN bool civilize_flag;
1182 EXTERN bool show_numeric;
1183 EXTERN bool restrict_to_ascii;
1184 EXTERN bool show_missing;
1185 EXTERN bool full_file_name_flag;
1186 EXTERN bool save_strings_flag;
1187 EXTERN int mem_initex;
1188 EXTERN int mem_extra_high;
1189 EXTERN int mem_extra_low;
1190 EXTERN int new_hyphen_prime;
1191 EXTERN int missing_characters;
1192 EXTERN int show_in_hex;
1193 EXTERN int show_in_dos;
1194 EXTERN int test_dir_access;
1195 EXTERN int dir_method;
1196 EXTERN int file_method;
1197 /* EXTERN int waitflush; */
1198 EXTERN int show_fmt_flag;
1199 EXTERN int show_tfm_flag;
1200 EXTERN bool show_texinput_flag; /* 1998/Jan/28 */
1201 EXTERN bool truncate_long_lines; /* 1998/Feb/2 */
1202 EXTERN bool show_cs_names; /* 1998/Mar/31 */
1203 EXTERN int tab_step;
1204 EXTERN int pseudo_tilde;
1205 EXTERN int pseudo_space;
1206 EXTERN int allow_quoted_names;
1207 EXTERN int default_rule;
1208 EXTERN char *format_file;
1209 EXTERN char *source_direct; /* 1998/Sep/29 */
1210 EXTERN char *string_file;
1211 EXTERN int share_flag;
1212 EXTERN char *format_name;
1213 EXTERN char *encoding_name;
1214 EXTERN bool format_specific;
1215 EXTERN bool encoding_specific;
1216 EXTERN bool show_line_break_stats; /* 1996/Feb/9 */
1217 EXTERN int first_pass_count; /* 1996/Feb/9 */
1218 EXTERN int second_pass_count; /* 1996/Feb/9 */
1219 EXTERN int final_pass_count; /* 1996/Feb/9 */
1220 EXTERN int underfull_hbox; /* 1996/Feb/9 */
1221 EXTERN int overfull_hbox; /* 1996/Feb/9 */
1222 EXTERN int underfull_vbox; /* 1996/Feb/9 */
1223 EXTERN int overfull_vbox; /* 1996/Feb/9 */
1224 EXTERN int paragraph_failed; /* 1996/Feb/9 */
1225 EXTERN int singleline; /* 1996/Feb/15 */
1226 EXTERN FILE *errout;
1227 EXTERN int font_dimen_zero; /* 1998/Oct/5 */
1228 EXTERN int ignore_frozen; /* 1998/Oct/5 */
1229 EXTERN bool suppress_f_ligs; /* 1999/Jan/5 */
1230 EXTERN int abort_flag; // not yet hooked up ???
1231 EXTERN int err_level; // not yet hooked up ???
1232 EXTERN int jump_used; /* 1999/Nov/28 */
1233 EXTERN jmp_buf jumpbuffer; /* 1999/Nov/7 */
1237 extern int current_pool_size; /* in local.c - bkph */
1238 extern int current_max_strings; /* in local.c - bkph */
1239 extern int current_mem_size; /* in local.c - bkph */
1240 extern int current_font_mem_size; /* in local.c - bkph */
1241 extern int current_save_size; /* in local.c - bkph */
1242 extern int current_stack_size; /* in local.c - bkph */
1243 extern int current_nest_size; /* in local.c - bkph */
1244 extern int current_param_size; /* in local.c - bkph */
1245 extern int current_buf_size; /* in local.c - bkph */
1246 extern char *tex_version; /* in local.c - bkph */
1247 extern char *application; /* in local.c - bkph */
1248 extern char *yandyversion; /* in local.c - bkph */
1249 extern unsigned char wintodos[128]; /* in local.c - bkph */
1250 extern char last_filename[PATH_MAX]; /* in ourpaths.c */
1251 extern char log_line[MAXLINE]; /* in local.c */
1252 extern char *texpath; /* in local.c */
1254 memory_word * allocate_main_memory (int); /* in local.c - bkph */
1255 memory_word * realloc_main (int, int); /* in local.c - bkph */
1256 packed_ASCII_code * realloc_str_pool (int); /* in local.c - bkph */
1257 pool_pointer * realloc_str_start (int); /* in local.c - bkph */
1258 memory_word * realloc_save_stack (int); /* in local.c - bkph */
1259 list_state_record * realloc_nest_stack (int); /* in local.c - bkph */
1260 in_state_record * realloc_input_stack (int); /* in local.c - bkph */
1261 halfword * realloc_param_stack (int); /* in local.c - bkph */
1262 ASCII_code * realloc_buffer (int); /* in local.c - bkph */
1263 fmemoryword * realloc_font_info (int); /* in local.c - bkph */
1265 int realloc_hyphen (int); /* in local.c - bkph */
1266 int allocate_tries (int); /* in local.c - bkph */
1268 void try_and_open (char *); /* in local.c - bkph */
1269 void check_eqtb (char *); /* in local.c - bkph */
1270 void probe_memory (void); /* in local.c - bkph */
1271 // void show_maximums (FILE *); /* in local.c - bkph */
1272 void print_cs_names (FILE *, int); /* in local.c - bkph */
1273 void perrormod(char *); /* in local.c */
1275 char *grabenv(char *); /* in local.c - bkph */
1276 // void showversion (FILE *); /* in local.c - bkph */
1277 void stamp_it (char *); /* in local.c - bkph */
1278 void stampcopy (char *); /* in local.c - bkph */
1279 bool prime (int); /* in local.c - bkph */
1280 int endit (int); /* in local.c - bkph */
1282 void uexit (int unix_code); /* in lib/uexit.c - bkph */
1283 void t_open_in (void); /* in lib/texmf.c - bkph */
1285 bool extensionirrelevantp (unsigned char *base, int nlen, char *suffix);
1287 void call_edit (ASCII_code *filename, pool_pointer fnstart,
1288 integer fnlength, integer linenumber); /* from lib/texmf.c - bkph */
1290 void add_variable_space(int); /* in itex.c - bkph */
1292 void get_date_and_time (integer *minutes, integer *day,
1293 integer *month, integer *year); /* in lib/texmf.c - bkph */
1295 bool maketextex (void); /* in openinou.c */
1296 bool maketextfm (void); /* in openinou.c */
1298 char *unixify (char *); /* in pathsrch.c bkph */
1301 void show_line (char *, int); /* in local.c */
1302 void show_char (int); /* in local.c */
1303 int main(int, char *[]); /* in lib\texmf.c */
1307 int checkpool (char *); /* in itex.c - debugging */
1310 #endif /* ifdef MSDOS */
1312 /****************************************************************************/
1316 /****************************************************************************/
1318 #define length(s) (str_start[(s) + 1] - str_start[(s)])
1320 #define cur_length (pool_ptr - str_start[str_ptr])
1323 #define term_only 17
1325 #define term_and_log 19
1327 #define new_string 21
1328 #define max_selector 21
1330 #define batch_mode 0
1331 #define nonstop_mode 1
1332 #define scroll_mode 2
1333 #define error_stop_mode 3
1336 #define warning_issued 1
1337 #define error_message_issued 2
1338 #define fatal_error_stop 3
1340 #define nx_plux_y(...) mult_and_add(..., 07777777777L)
1341 #define mult_integers(a) mult_and_add(a,0,07777777777L)
1343 #define inf_bad 10000L
1345 #define set_glue_ratio_zero(a) (a) = 0.0
1346 #define set_glue_ratio_one(a) (a) = 1.0
1347 #define tex_float(a) (a)
1348 #define unfloat(a) (a)
1349 #define float_constant(a) (float) (a)
1351 #define pointer halfword
1352 #define null min_halfword
1354 #define link(p) mem[(p)].hh.v.RH
1355 #define info(p) mem[(p)].hh.v.LH
1357 #define empty_flag max_halfword
1358 #define is_empty(a) (link(a) = empty_flag)
1359 #define node_size info
1360 #define llink(a) info(a+1)
1361 #define rlink(a) link(a+1)
1363 #define type(a) mem[a].hh.b0
1364 #define subtype(a) mem[a].hh.b1
1366 #define is_char_node(a) (a >= hi_mem_min)
1368 #define character subtype
1370 #define hlist_node 0
1371 #define box_node_size 7
1372 #define width_offset 1
1373 #define depth_offset 2
1374 #define height_offset 3
1375 #define width(a) mem[a + width_offset].cint
1376 #define depth(a) mem[a + depth_offset].cint
1377 #define height(a) mem[a + height_offset].cint
1378 #define shift_amount(a) mem[a + 4].cint
1379 #define list_offset 5
1380 #define list_ptr(a) link(a + list_offset)
1381 #define glue_order(a) subtype(a + list_offset)
1382 #define glue_sign(a) type(a + list_offset)
1384 #define stretching 1
1386 #define glue_offset 6
1387 #define glue_set(a) mem[a + glue_offset].gr
1389 #define vlist_node 1
1392 #define rule_node_size 4
1393 #define null_flag -010000000000L
1394 #define is_running(a) (a = null_flag)
1397 #define ins_node_size 5
1398 #define float_cost(a) mem[a + 1].cint
1399 #define ins_ptr(a) info(a + 4)
1400 #define split_top_ptr(a) link(a + 4)
1403 #define small_node_size 2
1404 #define mark_ptr(a) mem[a + 1].cint
1406 #define adjust_node 5
1407 #define adjust_ptr mark_ptr
1409 #define ligature_node 6
1410 #define lig_char(a) (a + 1)
1411 #define lig_ptr(a) link(lig_char(a))
1414 #define replace_count subtype
1415 #define pre_break llink
1416 #define post_break rlink
1418 #define whatsit_node 8
1424 #define precedes_break(a) (type(a) < math_node)
1425 #define non_discardable(a) (type(a) < math_node)
1427 #define glue_node 10
1428 #define cond_math_node 98
1430 #define a_leaders 100
1431 #define c_leaders 101
1432 #define x_leaders 102
1433 #define glue_ptr llink
1434 #define leader_ptr rlink
1436 #define glue_spec_size 4
1437 #define glue_ref_count(a) link(a)
1438 #define stretch(a) mem[a + 2].cint
1439 #define shrink(a) mem[a + 3].cint
1440 #define stretch_order type
1441 #define shrink_order subtype
1446 #define kern_node 11
1450 #define penalty_node 12
1451 #define inf_penalty inf_bad
1452 #define eject_penalty -inf_bad
1453 #define penalty(a) mem[a + 1].cint
1455 #define unset_node 13
1456 #define glue_stretch(a) mem[a + glue_offset].cint
1457 #define glue_shrink(q) shift_amount
1458 #define span_count subtype
1460 #define contrib_head mem_top - 1
1461 #define page_head mem_top - 2
1462 #define temp_head mem_top - 3
1463 #define hold_head mem_top - 4
1464 #define adjust_head mem_top - 5
1465 #define active mem_top - 7
1466 #define align_head mem_top - 8
1467 #define end_span mem_top - 9
1468 #define omit_template mem_top - 10
1469 #define null_list mem_top - 11
1470 #define lig_trick mem_top - 12
1471 #define garbage mem_top - 12
1472 #define backup_head mem_top - 13
1473 #define hi_mem_stat_min mem_top - 13
1474 #define hi_mem_stat_usage 14
1476 #define token_ref_count(a) info(a)
1478 #define add_token_ref(a) incr(token_ref_count(a))
1479 #define add_glue_ref(a) incr(glue_ref_count(a))
1483 #define left_brace 1
1484 #define right_brace 2
1485 #define math_shift 3
1496 #define other_char 12
1497 #define active_char 13
1501 #define end_match 14
1503 #define invalid_char 15
1504 #define delim_num 15
1505 #define max_char_code 15
1508 #define math_char_num 17
1516 #define remove_item 25
1522 #define leader_ship 31
1530 #define ignore_spaces 39
1531 #define after_assignment 40
1532 #define after_group 41
1533 #define break_penalty 42
1534 #define start_par 43
1535 #define ital_corr 44
1537 #define math_accent 46
1538 #define discretionary 47
1540 #define left_right 49
1541 #define math_comp 50
1542 #define limit_switch 51
1544 #define math_style 53
1545 #define math_choice 54
1546 #define non_script 55
1548 #define case_shift 57
1550 #define extension 59
1551 #define in_stream 60
1552 #define begin_group 61
1553 #define end_group 62
1556 #define no_boundary 65
1558 #define end_cs_name 67
1559 #define min_internal 68
1560 #define char_given 68
1561 #define math_given 69
1562 #define last_item 70
1563 #define max_non_prefixed_command 70
1565 #define toks_register 71
1566 #define assign_toks 72
1567 #define assign_int 73
1568 #define assign_dimen 74
1569 #define assign_glue 75
1570 #define assign_mu_glue 76
1571 #define assign_font_dimen 77
1572 #define assign_font_int 78
1574 #define set_prev_graf 80
1575 #define set_page_dimen 81
1576 #define set_page_int 82
1577 #define set_box_dimen 83
1578 #define set_shape 84
1580 #define def_family 86
1583 #define tex_register 89
1584 #define max_internal 89
1590 #define shorthand_def 95
1591 #define read_to_cs 96
1594 #define hyph_data 99
1595 #define set_interaction 100
1596 #define max_command 100
1598 #define undefined_cs max_command + 1
1599 #define expand_after max_command + 2
1600 #define no_expand max_command + 3
1601 #define input max_command + 4
1602 #define if_test max_command + 5
1603 #define fi_or_else max_command + 6
1604 #define cs_name max_command + 7
1605 #define convert max_command + 8
1606 #define the max_command + 9
1607 #define top_bot_mark max_command + 10
1608 #define call max_command + 11
1609 #define long_call max_command + 12
1610 #define outer_call max_command + 13
1611 #define long_outer_call max_command + 14
1612 #define end_template max_command + 15
1613 #define dont_expand max_command + 16
1614 #define glue_ref max_command + 17
1615 #define shape_ref max_command + 18
1616 #define box_ref max_command + 19
1617 #define data max_command + 20
1619 #define ignore_depth -65536000L
1621 #define mode cur_list.mode_field
1622 #define head cur_list.head_field
1623 #define tail cur_list.tail_field
1624 #define aux cur_list.aux_field
1625 #define prev_depth aux.sc
1626 #define space_factor aux.hh.v.LH
1627 #define clang aux.hh.v.RH
1628 #define incompleat_noad aux.cint
1629 #define prev_graf cur_list.pg_field
1630 #define mode_line cur_list.ml_field
1632 #define eq_level_field(a) a.hh.b1
1633 #define eq_type_field(a) a.hh.b0
1634 #define equiv_field(a) a.hh.v.RH
1635 #define eq_level(a) eq_level_field(eqtb[a])
1636 #define eq_type(a) eq_type_field(eqtb[a])
1637 #define equiv(a) equiv_field(eqtb[a])
1638 #define level_zero min_quarterword
1639 #define level_one level_zero + 1
1641 #define active_base 1 // 1
1642 #define single_base active_base + 256 // 257
1643 #define null_cs single_base + 256 // 513
1644 #define hash_base null_cs + 1 // 514
1645 #define frozen_control_sequence hash_base + hash_size // hash_size + 514
1646 #define frozen_protection frozen_control_sequence
1647 #define frozen_cr frozen_control_sequence + 1
1648 #define frozen_end_group frozen_control_sequence + 2
1649 #define frozen_right frozen_control_sequence + 3
1650 #define frozen_fi frozen_control_sequence + 4
1651 #define frozen_end_template frozen_control_sequence + 5
1652 #define frozen_endv frozen_control_sequence + 6
1653 #define frozen_relax frozen_control_sequence + 7
1654 #define end_write frozen_control_sequence + 8
1655 #define frozen_dont_expand frozen_control_sequence + 9
1656 #define frozen_null_font frozen_control_sequence + 10 // 524
1657 #define font_id_base frozen_null_font - font_base
1658 #define undefined_control_sequence frozen_null_font + 257 // 781
1659 #define glue_base undefined_control_sequence + 1 // 782
1661 #define line_skip_code 0 // 782
1662 #define baseline_skip_code 1 // 783
1663 #define par_skip_code 2 // 784
1664 #define above_display_skip_code 3 // 785
1665 #define below_display_skip_code 4 // 786
1666 #define above_display_short_skip_code 5 // 787
1667 #define below_display_short_skip_code 6 // 788
1668 #define left_skip_code 7 // 789
1669 #define right_skip_code 8 // 790
1670 #define top_skip_code 9 // 791
1671 #define split_top_skip_code 10 // 792
1672 #define tab_skip_code 11 // 793
1673 #define space_skip_code 12 // 794
1674 #define xspace_skip_code 13 // 795
1675 #define par_fill_skip_code 14 // 796
1676 #define thin_mu_skip_code 15 // 797
1677 #define med_mu_skip_code 16 // 798
1678 #define thick_mu_skip_code 17 // 799
1679 #define glue_pars 18 // 800
1680 #define skip_base glue_base + glue_pars // 800
1681 #define mu_skip_base skip_base + 256 // 1056
1682 #define local_base mu_skip_base + 256 // 1312
1684 #define skip(a) equiv(skip_base + a)
1685 #define mu_skip(a) equiv(mu_skip_base + a)
1686 #define glue_par(a) equiv(glue_base + a)
1687 #define line_skip glue_par(line_skip_code)
1688 #define baseline_skip glue_par(baseline_skip_code)
1689 #define par_skip glue_par(par_skip_code)
1690 #define above_display_skip glue_par(above_display_skip_code)
1691 #define below_display_skip glue_par(below_display_skip_code)
1692 #define above_display_short_skip glue_par(above_display_short_skip_code)
1693 #define below_display_short_skip glue_par(below_display_short_skip_code)
1694 #define left_skip glue_par(left_skip_code)
1695 #define right_skip glue_par(right_skip_code)
1696 #define top_skip glue_par(top_skip_code)
1697 #define split_top_skip glue_par(split_top_skip_code)
1698 #define tab_skip glue_par(tab_skip_code)
1699 #define space_skip glue_par(space_skip_code)
1700 #define xspace_skip glue_par(xspace_skip_code)
1701 #define par_fill_skip glue_par(par_fill_skip_code)
1702 #define thin_mu_skip glue_par(thin_mu_skip_code)
1703 #define med_mu_skip glue_par(med_mu_skip_code)
1704 #define thick_mu_skip glue_par(thick_mu_skip_code)
1706 #define par_shape_loc local_base // 1312
1707 #define output_routine_loc local_base + 1 // 1313
1708 #define every_par_loc local_base + 2 // 1314
1709 #define every_math_loc local_base + 3 // 1315
1710 #define every_display_loc local_base + 4 // 1316
1711 #define every_hbox_loc local_base + 5 // 1317
1712 #define every_vbox_loc local_base + 6 // 1318
1713 #define every_job_loc local_base + 7 // 1319
1714 #define every_cr_loc local_base + 8 // 1320
1715 #define err_help_loc local_base + 9 // 1321
1716 #define toks_base local_base + 10 // 1322
1717 #define box_base toks_base + 256 // 1578
1718 #define cur_font_loc box_base + 256 // 1834
1719 #define math_font_base cur_font_loc + 1 // 1835
1720 #define cat_code_base math_font_base + 48 // 1883
1721 #define lc_code_base cat_code_base + 256 // 2139
1722 #define uc_code_base lc_code_base + 256 // 2395
1723 #define sf_code_base uc_code_base + 256 // 2651
1724 #define math_code_base sf_code_base + 256 // 2907
1725 #define int_base math_code_base + 256 // 3163
1727 #define par_shape_ptr equiv(par_shape_loc)
1728 #define output_routine equiv(output_routine_loc)
1729 #define every_par equiv(every_par_loc)
1730 #define every_math equiv(every_math_loc)
1731 #define every_display equiv(every_display_loc)
1732 #define every_hbox equiv(every_hbox_loc)
1733 #define every_vbox equiv(every_vbox_loc)
1734 #define every_job equiv(every_job_loc)
1735 #define every_cr equiv(every_cr_loc)
1736 #define err_help equiv(err_help_loc)
1737 #define toks(a) equiv(toks_base + a)
1738 #define box(a) equiv(box_base + a)
1739 #define cur_font equiv(cur_font_loc)
1740 #define fam_fnt(a) equiv(math_font_base + a)
1741 #define cat_code(a) equiv(cat_code_base + a)
1742 #define lc_code(a) equiv(lc_code_base + a)
1743 #define uc_code(a) equiv(uc_code_base +a)
1744 #define sf_code(a) equiv(sf_code_bas + a)
1745 #define math_code(a) equiv(math_code_base + a)
1747 #define pretolerance_code 0 // 3163
1748 #define tolerance_code 1 // 3164
1749 #define line_penalty_code 2 // 3165
1750 #define hyphen_penalty_code 3 // 3166
1751 #define ex_hyphen_penalty_code 4 // 3167
1752 #define club_penalty_code 5 // 3168
1753 #define widow_penalty_code 6 // 3169
1754 #define display_widow_penalty_code 7 // 3170
1755 #define broken_penalty_code 8 // 3171
1756 #define bin_op_penalty_code 9 // 3172
1757 #define rel_penalty_code 10 // 3173
1758 #define pre_display_penalty_code 11 // 3174
1759 #define post_display_penalty_code 12 // 3175
1760 #define inter_line_penalty_code 13 // 3176
1761 #define double_hyphen_demerits_code 14 // 3177
1762 #define final_hyphen_demerits_code 15 // 3178
1763 #define adj_demerits_code 16 // 3179
1764 #define mag_code 17 // 3180
1765 #define delimiter_factor_code 18 // 3181
1766 #define looseness_code 19 // 3182
1767 #define time_code 20 // 3183
1768 #define day_code 21 // 3184
1769 #define month_code 22 // 3185
1770 #define year_code 23 // 3186
1771 #define show_box_breadth_code 24 // 3187
1772 #define show_box_depth_code 25 // 3188
1773 #define hbadness_code 26 // 3189
1774 #define vbadness_code 27 // 3190
1775 #define pausing_code 28 // 3191
1776 #define tracing_online_code 29 // 3192
1777 #define tracing_macros_code 30 // 3193
1778 #define tracing_stats_code 31 // 3194
1779 #define tracing_paragraphs_code 32 // 3195
1780 #define tracing_pages_code 33 // 3196
1781 #define tracing_output_code 34 // 3197
1782 #define tracing_lost_chars_code 35 // 3198
1783 #define tracing_commands_code 36 // 3199
1784 #define tracing_restores_code 37 // 3200
1785 #define uc_hyph_code 38 // 3201
1786 #define output_penalty_code 39 // 3202 NOT USED.
1787 #define max_dead_cycles_code 40 // 3203
1788 #define hang_after_code 41 // 3204
1789 #define floating_penalty_code 42 // 3205
1790 #define global_defs_code 43 // 3206
1791 #define cur_fam_code 44 // 3207
1792 #define escape_char_code 45 // 3208
1793 #define default_hyphen_char_code 46 // 3209
1794 #define default_skew_char_code 47 // 3210
1795 #define end_line_char_code 48 // 3211
1796 #define new_line_char_code 49 // 3212
1797 #define language_code 50 // 3213
1798 #define left_hyphen_min_code 51 // 3214
1799 #define right_hyphen_min_code 52 // 3215
1800 #define holding_inserts_code 53 // 3216
1801 #define error_context_lines_code 54 // 3217
1803 #define count_base int_base + int_pars // 3218
1804 #define del_code_base count_base + 256 // 3473
1805 #define dimen_base del_code_base + 256 // 3730
1807 #define del_code(a) eqtb[del_code_base + a].cint
1808 #define count(a) eqtb[count_base + a].cint
1809 #define int_par(a) eqtb[int_base + a].cint
1810 #define pretolerance int_par(pretolerance_code)
1811 #define tolerance int_par(tolerance_code)
1812 #define line_penalty int_par(line_penalty_code)
1813 #define hyphen_penalty int_par(hyphen_penalty_code)
1814 #define ex_hyphen_penalty int_par(ex_hyphen_penalty_code)
1815 #define club_penalty int_par(club_penalty_code)
1816 #define widow_penalty int_par(widow_penalty_code)
1817 #define display_widow_penalty int_par(display_widow_penalty_code)
1818 #define broken_penalty int_par(broken_penalty_code)
1819 #define bin_op_penalty int_par(bin_op_penalty_code)
1820 #define rel_penalty int_par(rel_penalty_code)
1821 #define pre_display_penalty int_par(pre_display_penalty_code)
1822 #define post_display_penalty int_par(post_display_penalty_code)
1823 #define inter_line_penalty int_par(inter_line_penalty_code)
1824 #define double_hyphen_demerits int_par(double_hyphen_demerits_code)
1825 #define final_hyphen_demerits int_par(final_hyphen_demerits_code)
1826 #define adj_demerits int_par(adj_demerits_code)
1827 #define mag int_par(mag_code)
1828 #define delimiter_factor int_par(delimiter_factor_code)
1829 #define looseness int_par(looseness_code)
1830 #define tex_time int_par(time_code)
1831 #define day int_par(day_code)
1832 #define month int_par(month_code)
1833 #define year int_par(year_code)
1834 #define show_box_breadth int_par(show_box_breadth_code)
1835 #define show_box_depth int_par(show_box_depth_code)
1836 #define hbadness int_par(hbadness_code)
1837 #define vbadness int_par(vbadness_code)
1838 #define pausing int_par(pausing_code)
1839 #define tracing_online int_par(tracing_online_code)
1840 #define tracing_macros int_par(tracing_macros_code)
1841 #define tracing_stats int_par(tracing_stats_code)
1842 #define tracing_paragraphs int_par(tracing_paragraphs_code)
1843 #define tracing_pages int_par(tracing_pages_code)
1844 #define tracing_output int_par(tracing_output_code)
1845 #define tracing_lost_chars int_par(tracing_lost_chars_code)
1846 #define tracing_commands int_par(tracing_commands_code)
1847 #define tracing_restores int_par(tracing_restores_code)
1848 #define uc_hyph int_par(uc_hyph_code)
1849 #define output_penalty int_par(output_penalty_code)
1850 #define max_dead_cycles int_par(max_dead_cycles_code)
1851 #define hang_after int_par(hang_after_code)
1852 #define floating_penalty int_par(floating_penalty_code)
1853 #define global_defs int_par(global_defs_code)
1854 #define cur_fam int_par(cur_fam_code)
1855 #define escape_char int_par(escape_char_code)
1856 #define default_hyphen_char int_par(default_hyphen_char_code)
1857 #define default_skew_char int_par(default_skew_char_code)
1858 #define end_line_char int_par(end_line_char_code)
1859 #define new_line_char int_par(new_line_char_code)
1860 #define language int_par(language_code)
1861 #define left_hyphen_min int_par(left_hyphen_min_code)
1862 #define right_hyphen_min int_par(right_hyphen_min_code)
1863 #define holding_inserts int_par(holding_inserts_code)
1864 #define error_context_lines int_par(error_context_lines_code)
1866 #define par_indent_code 0 // 3730
1867 #define math_surround_code 1 // 3731
1868 #define line_skip_limit_code 2 // 3732
1869 #define hsize_code 3 // 3733
1870 #define vsize_code 4 // 3734
1871 #define max_depth_code 5 // 3735
1872 #define split_max_depth_code 6 // 3736
1873 #define box_max_depth_code 7 // 3737
1874 #define hfuzz_code 8 // 3738
1875 #define vfuzz_code 9 // 3739
1876 #define delimiter_shortfall_code 10 // 3740
1877 #define null_delimiter_space_code 11 // 3741
1878 #define script_space_code 12 // 3742
1879 #define pre_display_size_code 13 // 3743
1880 #define display_width_code 14 // 3744
1881 #define display_indent_code 15 // 3745
1882 #define overfull_rule_code 16 // 3746
1883 #define hang_indent_code 17 // 3747
1884 #define h_offset_code 18 // 3748
1885 #define v_offset_code 19 // 3749
1886 #define emergency_stretch_code 20 // 3750
1887 #define dimen_pars 21
1888 #define scaled_base dimen_base + dimen_pars // 3751
1889 #define eqtb_size scaled_base + 255 // 4006
1891 #define dimen(a) eqtb[scaled_base + a].cint
1892 #define dimen_par(a) eqtb[dimen_base + a].cint
1893 #define par_indent dimen_par(par_indent_code)
1894 #define math_surround dimen_par(math_surround_code)
1895 #define line_skip_limit dimen_par(line_skip_limit_code)
1896 #define hsize dimen_par(hsize_code)
1897 #define vsize dimen_par(vsize_code)
1898 #define max_depth dimen_par(max_depth_code)
1899 #define split_max_depth dimen_par(split_max_depth_code)
1900 #define box_max_depth dimen_par(box_max_depth_code)
1901 #define hfuzz dimen_par(hfuzz_code)
1902 #define vfuzz dimen_par(vfuzz_code)
1903 #define delimiter_shortfall dimen_par(delimiter_shortfall_code)
1904 #define null_delimiter_space dimen_par(null_delimiter_space_code)
1905 #define script_space dimen_par(script_space_code)
1906 #define pre_display_size dimen_par(pre_display_size_code)
1907 #define display_width dimen_par(display_width_code)
1908 #define display_indent dimen_par(display_indent_code)
1909 #define overfull_rule dimen_par(overfull_rule_code)
1910 #define hang_indent dimen_par(hang_indent_code)
1911 #define h_offset dimen_par(h_offset_code)
1912 #define v_offset dimen_par(v_offset_code)
1913 #define emergency_stretch dimen_par(emergency_stretch_code)
1916 #define text(a) hash[a].v.RH
1917 #define hash_is_full (hash_used == hash_base)
1918 #define font_id_text(a) text(font_id_base + a)
1920 #define save_type(a) save_stack[a].hh.b0
1921 #define save_level(a) save_stack[a].hh.b1
1922 #define save_index(a) save_stack[a].hh.v.RH
1923 #define restore_old_value 0
1924 #define restore_zero 1
1925 #define insert_token 2
1926 #define level_boundary 3
1928 #define bottom_level 0
1929 #define simple_group 1
1930 #define hbox_group 2
1931 #define adjust_hbox_group 3
1932 #define vbox_group 4
1933 #define vtop_group 5
1934 #define align_group 6
1935 #define no_align_group 7
1936 #define output_group 8
1937 #define math_group 9
1938 #define disc_group 10
1939 #define insert_group 11
1940 #define vcenter_group 12
1941 #define math_choice_group 13
1942 #define semi_simple_group 14
1943 #define math_shift_group 15
1944 #define math_left_group 16
1945 #define max_group_code 16
1948 #define skip_blanks 2 + max_char_code // 17
1949 #define new_line 3 + max_char_code + max_char_code // 33
1957 #define token_list 0
1958 #define token_type cur_input.index_field
1959 #define param_start cur_input.limit_field
1961 #define u_template 1
1962 #define v_template 2
1966 #define output_text 6
1967 #define every_par_text 7
1968 #define every_math_text 8
1969 #define every_display_text 9
1970 #define every_hbox_text 10
1971 #define every_vbox_text 11
1972 #define every_job_text 12
1973 #define every_cr_text 13
1974 #define mark_text 14
1975 #define write_text 15
1977 #define any_state_plus(a) mid_line + (a): case skip_blanks + (a): case new_line + (a)
1979 #define add_delims_to(a) \
1981 case (a) + tab_mark: \
1982 case (a) + mac_param: \
1983 case (a) + sub_mark: \
1984 case (a) + letter: \
1985 case (a) + other_char
1994 #define number_code 0
1995 #define roman_numeral_code 1
1996 #define string_code 2
1997 #define meaning_code 3
1998 #define font_name_code 4
1999 #define job_name_code 5
2001 #define if_char_code 0
2002 #define if_cat_code 1
2003 #define if_int_code 2
2004 #define if_dim_code 3
2005 #define if_odd_code 4
2006 #define if_vmode_code 5
2007 #define if_hmode_code 6
2008 #define if_mmode_code 7
2009 #define if_inner_code 8
2010 #define if_void_code 9
2011 #define if_hbox_code 10
2012 #define if_vbox_code 11
2014 #define if_eof_code 13
2015 #define if_true_code 14
2016 #define if_false_code 15
2017 #define if_case_code 16
2019 #define if_node_size 2
2020 #define if_line_field(a) mem[(a) + 1].cint
2038 #define u_part(a) mem[(a) + height_offset].cint
2039 #define v_part(a) mem[(a) + depth_offset].cint
2040 #define extra_info(a) info((a) + list_offset)
2043 extern INLINE void tex_help (unsigned int n, ...);
2044 extern INLINE void append_char(ASCII_code c);
2045 extern INLINE void succumb(void);
2046 extern INLINE void dvi_out_ (ASCII_code op);
2047 #define dvi_out(op) dvi_out_((ASCII_code) (op))
2048 extern INLINE void free_avail_(halfword p);
2049 #define free_avail(p) free_avail_((halfword) (p))
2050 extern INLINE void flush_string (void);
2051 #define help0() tex_help(0)
2052 #define help1(...) tex_help(1, __VA_ARGS__)
2053 #define help2(...) tex_help(2, __VA_ARGS__)
2054 #define help3(...) tex_help(3, __VA_ARGS__)
2055 #define help4(...) tex_help(4, __VA_ARGS__)
2056 #define help5(...) tex_help(5, __VA_ARGS__)
2057 #define help6(...) tex_help(6, __VA_ARGS__)
2058 /********BINDING WITH LIBHARU*********/
2060 EXTERN HPDF_Doc yandy_pdf;
2061 EXTERN HPDF_Page yandy_page;
2062 EXTERN HPDF_Font yandy_font;
2064 /********BINDING WITH LIBHARU*********/