-/* Copyright 2014 Clerk Ma
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA. */
-#ifndef _YANDYTEX_MACROS_H
-#define _YANDYTEX_MACROS_H
-
-#define font_base 0
-/* sec 0022 */
-#define null_code 0 // 0
-#define carriage_return 015 // 13
-#define invalid_code 0177 // 127
-/* sec 0036 */
-#define loc cur_input.loc_field
-/* sec 0040 */
-#define length(s) (str_start[(s) + 1] - str_start[(s)])
-/* sec 0041 */
-#define cur_length (pool_ptr - str_start[str_ptr])
-/* sec 0054 */
-enum
-{
- no_print = 16,
- term_only = 17,
- log_only = 18,
- term_and_log = 19,
- pseudo = 20,
- new_string = 21,
- max_selector = 21,
-};
-/* sec 0073 */
-enum
-{
- batch_mode = 0,
- nonstop_mode = 1,
- scroll_mode = 2,
- error_stop_mode = 3,
-};
-/* sec 0076 */
-enum
-{
- spotless = 0,
- warning_issued = 1,
- error_message_issued = 2,
- fatal_error_stop = 3,
-};
-/* sec 0096 */
-#define check_interrupt() \
-do \
-{ \
- if (interrupt != 0) \
- pause_for_instructions(); \
-} \
-while (0)
-/* sec 0101 */
-#define unity 0200000
-#define two 0400000
-/* sec 0105 */
-#define nx_plus_y(a, b, c) mult_and_add(a, b, c, 07777777777L)
-#define mult_integers(a, b) mult_and_add(a, b, 0, 017777777777L)
-/* sec 0108 */
-#define inf_bad 10000L
-/* sec 0109 */
-#define set_glue_ratio_zero(a) (a) = 0.0
-#define set_glue_ratio_one(a) (a) = 1.0
-#define tex_float(a) (a)
-#define unfloat(a) (a)
-#define float_constant(a) (float) (a)
-/* sec 0115 */
-//#define pointer halfword
-#define null min_halfword
-/* sec 0118 */
-#define link(p) mem[p].hh.rh
-#define info(p) mem[p].hh.lh
-/* sec 0122 */
-#ifdef STAT
-#define fast_get_avail(a) \
- do \
- { \
- a = avail; \
- \
- if (a == 0) \
- a = get_avail(); \
- else \
- { \
- avail = link(a); \
- link(a) = 0; \
- incr(dyn_used); \
- } \
- } \
- while (0)
-#else
-#define fast_get_avail(a) \
- do \
- { \
- a = avail; \
- \
- if (a == 0) \
- a = get_avail(); \
- else \
- { \
- avail = link(a); \
- link(a) = 0; \
- } \
- } \
- while (0)
-#endif
-/* sec 0124 */
-#define empty_flag max_halfword
-#define is_empty(a) (link(a) == empty_flag)
-#define node_size info
-#define llink(a) info(a+1)
-#define rlink(a) link(a+1)
-/* sec 0133 */
-#define type(a) mem[a].hh.b0
-#define subtype(a) mem[a].hh.b1
-/* sec 0134 */
-#define is_char_node(a) (a >= hi_mem_min)
-#define font type
-#define character subtype
-/* sec 0135 */
-#define hlist_node 0
-#define box_node_size 7
-#define width_offset 1
-#define depth_offset 2
-#define height_offset 3
-#define width(a) mem[a + width_offset].cint
-#define depth(a) mem[a + depth_offset].cint
-#define height(a) mem[a + height_offset].cint
-#define shift_amount(a) mem[a + 4].cint
-#define list_offset 5
-#define list_ptr(a) link(a + list_offset)
-#define glue_order(a) subtype(a + list_offset)
-#define glue_sign(a) type(a + list_offset)
-#define normal 0
-#define stretching 1
-#define shrinking 2
-#define glue_offset 6
-#define glue_set(a) mem[a + glue_offset].gr
-/* sec 0137 */
-#define vlist_node 1
-/* sec 0138 */
-#define rule_node 2
-#define rule_node_size 4
-#define null_flag -010000000000L
-#define is_running(a) (a == null_flag)
-/* sec 0140 */
-#define ins_node 3
-#define ins_node_size 5
-#define float_cost(a) mem[a + 1].cint
-#define ins_ptr(a) info(a + 4)
-#define split_top_ptr(a) link(a + 4)
-/* sec 0141 */
-#define mark_node 4
-#define small_node_size 2
-#define mark_ptr(a) mem[a + 1].cint
-/* sec 0142 */
-#define adjust_node 5
-#define adjust_ptr mark_ptr
-/* sec 0143 */
-#define ligature_node 6
-#define lig_char(a) (a + 1)
-#define lig_ptr(a) link(lig_char(a))
-/* sec 0145 */
-#define disc_node 7
-#define replace_count subtype
-#define pre_break llink
-#define post_break rlink
-/* sec 0146 */
-#define whatsit_node 8
-/* sec 0147 */
-#define math_node 9
-#define before 0
-#define after 1
-/* sec 0148 */
-#define precedes_break(a) (type(a) < math_node)
-#define non_discardable(a) (type(a) < math_node)
-/* sec 0149 */
-#define glue_node 10
-#define cond_math_glue 98
-#define mu_glue 99
-#define a_leaders 100
-#define c_leaders 101
-#define x_leaders 102
-#define glue_ptr llink
-#define leader_ptr rlink
-/* sec 0150 */
-#define glue_spec_size 4
-#define glue_ref_count(a) link(a)
-#define stretch(a) mem[a + 2].cint
-#define shrink(a) mem[a + 3].cint
-#define stretch_order type
-#define shrink_order subtype
-#define fil 1
-#define fill 2
-#define filll 3
-/* sec 0155 */
-#define kern_node 11
-#define explicit 1
-#define acc_kern 2
-/* sec 0157 */
-#define penalty_node 12
-#define inf_penalty inf_bad
-#define eject_penalty -inf_bad
-#define penalty(a) mem[a + 1].cint
-/* sec 0159 */
-#define unset_node 13
-#define glue_stretch(a) mem[a + glue_offset].cint
-#define glue_shrink shift_amount
-#define span_count subtype
-/* sec 0162 */
-#define zero_glue mem_bot // 0
-#define fil_glue (zero_glue + glue_spec_size) // 4
-#define fill_glue (fil_glue + glue_spec_size) // 8
-#define ss_glue (fill_glue + glue_spec_size) // 12
-#define fil_neg_glue (ss_glue + glue_spec_size) // 16
-#define lo_mem_stat_max (fil_neg_glue + glue_spec_size - 1) // 19
-#define page_ins_head mem_top
-#define contrib_head (mem_top - 1)
-#define page_head (mem_top - 2)
-#define temp_head (mem_top - 3)
-#define hold_head (mem_top - 4)
-#define adjust_head (mem_top - 5)
-#define active (mem_top - 7)
-#define align_head (mem_top - 8)
-#define end_span (mem_top - 9)
-#define omit_template (mem_top - 10)
-#define null_list (mem_top - 11)
-#define lig_trick (mem_top - 12)
-#define garbage (mem_top - 12)
-#define backup_head (mem_top - 13)
-#define hi_mem_stat_min (mem_top - 13)
-#define hi_mem_stat_usage 14
-/* sec 0200 */
-#define token_ref_count(a) info(a)
-/* sec 0203 */
-#define add_token_ref(a) incr(token_ref_count(a))
-#define add_glue_ref(a) incr(glue_ref_count(a))
-/* sec 0207 */
-#define escape 0
-#define relax 0
-#define left_brace 1
-#define right_brace 2
-#define math_shift 3
-#define tab_mark 4
-#define car_ret 5
-#define out_param 5
-#define mac_param 6
-#define sup_mark 7
-#define sub_mark 8
-#define ignore 9
-#define endv 9
-#define spacer 10
-#define letter 11
-#define other_char 12
-#define active_char 13
-#define par_end 13
-#define match 13
-#define comment 14
-#define end_match 14
-#define stop 14
-#define invalid_char 15
-#define delim_num 15
-#define max_char_code 15
-/* sec 0208 */
-#define char_num 16
-#define math_char_num 17
-#define mark 18
-#define xray 19
-#define make_box 20
-#define hmove 21
-#define vmove 22
-#define un_hbox 23
-#define un_vbox 24
-#define remove_item 25
-#define hskip 26
-#define vskip 27
-#define mskip 28
-#define kern 29
-#define mkern 30
-#define leader_ship 31
-#define halign 32
-#define valign 33
-#define no_align 34
-#define vrule 35
-#define hrule 36
-#define insert 37
-#define vadjust 38
-#define ignore_spaces 39
-#define after_assignment 40
-#define after_group 41
-#define break_penalty 42
-#define start_par 43
-#define ital_corr 44
-#define accent 45
-#define math_accent 46
-#define discretionary 47
-#define eq_no 48
-#define left_right 49
-#define math_comp 50
-#define limit_switch 51
-#define above 52
-#define math_style 53
-#define math_choice 54
-#define non_script 55
-#define vcenter 56
-#define case_shift 57
-#define message 58
-#define extension 59
-#define in_stream 60
-#define begin_group 61
-#define end_group 62
-#define omit 63
-#define ex_space 64
-#define no_boundary 65
-#define radical 66
-#define end_cs_name 67
-#define min_internal 68
-#define char_given 68
-#define math_given 69
-#define last_item 70
-#define max_non_prefixed_command 70
-/* sec 0209 */
-#define toks_register 71
-#define assign_toks 72
-#define assign_int 73
-#define assign_dimen 74
-#define assign_glue 75
-#define assign_mu_glue 76
-#define assign_font_dimen 77
-#define assign_font_int 78
-#define set_aux 79
-#define set_prev_graf 80
-#define set_page_dimen 81
-#define set_page_int 82
-#define set_box_dimen 83
-#define set_shape 84
-#define def_code 85
-#define def_family 86
-#define set_font 87
-#define def_font 88
-#define tex_register 89
-#define max_internal 89
-#define advance 90
-#define multiply 91
-#define divide 92
-#define prefix 93
-#define let 94
-#define shorthand_def 95
-#define read_to_cs 96
-#define def 97
-#define set_box 98
-#define hyph_data 99
-#define set_interaction 100
-#define max_command 100
-/* sec 0210 */
-#define undefined_cs (max_command + 1 )
-#define expand_after (max_command + 2 )
-#define no_expand (max_command + 3 )
-#define input (max_command + 4 )
-#define if_test (max_command + 5 )
-#define fi_or_else (max_command + 6 )
-#define cs_name (max_command + 7 )
-#define convert (max_command + 8 )
-#define the (max_command + 9 )
-#define top_bot_mark (max_command + 10)
-#define call (max_command + 11)
-#define long_call (max_command + 12)
-#define outer_call (max_command + 13)
-#define long_outer_call (max_command + 14)
-#define end_template (max_command + 15)
-#define dont_expand (max_command + 16)
-#define glue_ref (max_command + 17)
-#define shape_ref (max_command + 18)
-#define box_ref (max_command + 19)
-#define data (max_command + 20)
-/* sec 0211 */
-#define vmode 1
-#define hmode (vmode + max_command + 1)
-#define mmode (hmode + max_command + 1)
-/* sec 0212 */
-#define ignore_depth -65536000L
-/* sec 0213 */
-#define mode cur_list.mode_field
-#define head cur_list.head_field
-#define tail cur_list.tail_field
-#define aux cur_list.aux_field
-#define prev_depth aux.cint
-#define space_factor aux.hh.lh
-#define clang aux.hh.rh
-#define incompleat_noad aux.cint
-#define prev_graf cur_list.pg_field
-#define mode_line cur_list.ml_field
-/* sec 0221 */
-#define eq_level_field(a) a.hh.b1
-#define eq_type_field(a) a.hh.b0
-#define equiv_field(a) a.hh.rh
-#define eq_level(a) eq_level_field(eqtb[a])
-#define eq_type(a) eq_type_field(eqtb[a])
-#define equiv(a) equiv_field(eqtb[a])
-#define level_zero min_quarterword
-#define level_one level_zero + 1
-/* sec 0222 */
-#define active_base 1 // 1
-#define single_base (active_base + 256) // 257
-#define null_cs (single_base + 256) // 513
-#define hash_base (null_cs + 1) // 514
-#define frozen_control_sequence (hash_base + hash_size + hash_extra) // (hash_size + hash_extra + 514)
-#define frozen_protection frozen_control_sequence // (hash_size + hash_extra + 514)
-#define frozen_cr (frozen_control_sequence + 1) // (hash_size + hash_extra + 515)
-#define frozen_end_group (frozen_control_sequence + 2) // (hash_size + hash_extra + 516)
-#define frozen_right (frozen_control_sequence + 3) // (hash_size + hash_extra + 517)
-#define frozen_fi (frozen_control_sequence + 4) // (hash_size + hash_extra + 518)
-#define frozen_end_template (frozen_control_sequence + 5) // (hash_size + hash_extra + 519)
-#define frozen_endv (frozen_control_sequence + 6) // (hash_size + hash_extra + 520)
-#define frozen_relax (frozen_control_sequence + 7) // (hash_size + hash_extra + 521)
-#define end_write (frozen_control_sequence + 8) // (hash_size + hash_extra + 522)
-#define frozen_dont_expand (frozen_control_sequence + 9) // (hash_size + hash_extra + 523)
-#define frozen_null_font (frozen_control_sequence + 10) // (hash_size + hash_extra + 524)
-#define font_id_base (frozen_null_font - font_base) // (hash_size + hash_extra + 524)
-#define undefined_control_sequence (frozen_null_font + font_max + 2) // (hash_size + 781)
-#define glue_base (undefined_control_sequence + 1) // (hash_size + 782)
-/* sec 0224 */
-#define line_skip_code 0 // 782
-#define baseline_skip_code 1 // 783
-#define par_skip_code 2 // 784
-#define above_display_skip_code 3 // 785
-#define below_display_skip_code 4 // 786
-#define above_display_short_skip_code 5 // 787
-#define below_display_short_skip_code 6 // 788
-#define left_skip_code 7 // 789
-#define right_skip_code 8 // 790
-#define top_skip_code 9 // 791
-#define split_top_skip_code 10 // 792
-#define tab_skip_code 11 // 793
-#define space_skip_code 12 // 794
-#define xspace_skip_code 13 // 795
-#define par_fill_skip_code 14 // 796
-#define thin_mu_skip_code 15 // 797
-#define med_mu_skip_code 16 // 798
-#define thick_mu_skip_code 17 // 799
-#define glue_pars 18 // 800
-#define skip_base (glue_base + glue_pars) // 800
-#define mu_skip_base (skip_base + 256) // 1056
-#define local_base (mu_skip_base + 256) // 1312
-// #
-#define skip(a) equiv(skip_base + a)
-#define mu_skip(a) equiv(mu_skip_base + a)
-#define glue_par(a) equiv(glue_base + a)
-#define line_skip glue_par(line_skip_code)
-#define baseline_skip glue_par(baseline_skip_code)
-#define par_skip glue_par(par_skip_code)
-#define above_display_skip glue_par(above_display_skip_code)
-#define below_display_skip glue_par(below_display_skip_code)
-#define above_display_short_skip glue_par(above_display_short_skip_code)
-#define below_display_short_skip glue_par(below_display_short_skip_code)
-#define left_skip glue_par(left_skip_code)
-#define right_skip glue_par(right_skip_code)
-#define top_skip glue_par(top_skip_code)
-#define split_top_skip glue_par(split_top_skip_code)
-#define tab_skip glue_par(tab_skip_code)
-#define space_skip glue_par(space_skip_code)
-#define xspace_skip glue_par(xspace_skip_code)
-#define par_fill_skip glue_par(par_fill_skip_code)
-#define thin_mu_skip glue_par(thin_mu_skip_code)
-#define med_mu_skip glue_par(med_mu_skip_code)
-#define thick_mu_skip glue_par(thick_mu_skip_code)
-/* sec 0230 */
-#define par_shape_loc local_base // 1312
-#define output_routine_loc (local_base + 1) // 1313
-#define every_par_loc (local_base + 2) // 1314
-#define every_math_loc (local_base + 3) // 1315
-#define every_display_loc (local_base + 4) // 1316
-#define every_hbox_loc (local_base + 5) // 1317
-#define every_vbox_loc (local_base + 6) // 1318
-#define every_job_loc (local_base + 7) // 1319
-#define every_cr_loc (local_base + 8) // 1320
-#define err_help_loc (local_base + 9) // 1321
-#define toks_base (local_base + 10) // 1322
-#define box_base (toks_base + 256) // 1578
-#define cur_font_loc (box_base + 256) // 1834
-#define math_font_base (cur_font_loc + 1) // 1835
-#define cat_code_base (math_font_base + 48) // 1883
-#define lc_code_base (cat_code_base + 256) // 2139
-#define uc_code_base (lc_code_base + 256) // 2395
-#define sf_code_base (uc_code_base + 256) // 2651
-#define math_code_base (sf_code_base + 256) // 2907
-#define int_base (math_code_base + 256) // 3163
-// #
-#define par_shape_ptr equiv(par_shape_loc)
-#define output_routine equiv(output_routine_loc)
-#define every_par equiv(every_par_loc)
-#define every_math equiv(every_math_loc)
-#define every_display equiv(every_display_loc)
-#define every_hbox equiv(every_hbox_loc)
-#define every_vbox equiv(every_vbox_loc)
-#define every_job equiv(every_job_loc)
-#define every_cr equiv(every_cr_loc)
-#define err_help equiv(err_help_loc)
-#define toks(a) equiv(toks_base + a)
-#define box(a) equiv(box_base + a)
-#define cur_font equiv(cur_font_loc)
-#define fam_fnt(a) equiv(math_font_base + a)
-#define cat_code(a) equiv(cat_code_base + a)
-#define lc_code(a) equiv(lc_code_base + a)
-#define uc_code(a) equiv(uc_code_base + a)
-#define sf_code(a) equiv(sf_code_base + a)
-#define math_code(a) equiv(math_code_base + a)
-/* sec 0232 */
-#define null_font font_base
-#define var_code 070000
-/* sec 0236 */
-#define pretolerance_code 0 // 3163
-#define tolerance_code 1 // 3164
-#define line_penalty_code 2 // 3165
-#define hyphen_penalty_code 3 // 3166
-#define ex_hyphen_penalty_code 4 // 3167
-#define club_penalty_code 5 // 3168
-#define widow_penalty_code 6 // 3169
-#define display_widow_penalty_code 7 // 3170
-#define broken_penalty_code 8 // 3171
-#define bin_op_penalty_code 9 // 3172
-#define rel_penalty_code 10 // 3173
-#define pre_display_penalty_code 11 // 3174
-#define post_display_penalty_code 12 // 3175
-#define inter_line_penalty_code 13 // 3176
-#define double_hyphen_demerits_code 14 // 3177
-#define final_hyphen_demerits_code 15 // 3178
-#define adj_demerits_code 16 // 3179
-#define mag_code 17 // 3180
-#define delimiter_factor_code 18 // 3181
-#define looseness_code 19 // 3182
-#define time_code 20 // 3183
-#define day_code 21 // 3184
-#define month_code 22 // 3185
-#define year_code 23 // 3186
-#define show_box_breadth_code 24 // 3187
-#define show_box_depth_code 25 // 3188
-#define hbadness_code 26 // 3189
-#define vbadness_code 27 // 3190
-#define pausing_code 28 // 3191
-#define tracing_online_code 29 // 3192
-#define tracing_macros_code 30 // 3193
-#define tracing_stats_code 31 // 3194
-#define tracing_paragraphs_code 32 // 3195
-#define tracing_pages_code 33 // 3196
-#define tracing_output_code 34 // 3197
-#define tracing_lost_chars_code 35 // 3198
-#define tracing_commands_code 36 // 3199
-#define tracing_restores_code 37 // 3200
-#define uc_hyph_code 38 // 3201
-#define output_penalty_code 39 // 3202
-#define max_dead_cycles_code 40 // 3203
-#define hang_after_code 41 // 3204
-#define floating_penalty_code 42 // 3205
-#define global_defs_code 43 // 3206
-#define cur_fam_code 44 // 3207
-#define escape_char_code 45 // 3208
-#define default_hyphen_char_code 46 // 3209
-#define default_skew_char_code 47 // 3210
-#define end_line_char_code 48 // 3211
-#define new_line_char_code 49 // 3212
-#define language_code 50 // 3213
-#define left_hyphen_min_code 51 // 3214
-#define right_hyphen_min_code 52 // 3215
-#define holding_inserts_code 53 // 3216
-#define error_context_lines_code 54 // 3217
-#define int_pars 55
-#define count_base (int_base + int_pars) // 3218
-#define del_code_base (count_base + 256) // 3474
-#define dimen_base (del_code_base + 256) // 3730
-// #
-#define del_code(a) eqtb[del_code_base + a].cint
-#define count(a) eqtb[count_base + a].cint
-#define int_par(a) eqtb[int_base + a].cint
-#define pretolerance int_par(pretolerance_code)
-#define tolerance int_par(tolerance_code)
-#define line_penalty int_par(line_penalty_code)
-#define hyphen_penalty int_par(hyphen_penalty_code)
-#define ex_hyphen_penalty int_par(ex_hyphen_penalty_code)
-#define club_penalty int_par(club_penalty_code)
-#define widow_penalty int_par(widow_penalty_code)
-#define display_widow_penalty int_par(display_widow_penalty_code)
-#define broken_penalty int_par(broken_penalty_code)
-#define bin_op_penalty int_par(bin_op_penalty_code)
-#define rel_penalty int_par(rel_penalty_code)
-#define pre_display_penalty int_par(pre_display_penalty_code)
-#define post_display_penalty int_par(post_display_penalty_code)
-#define inter_line_penalty int_par(inter_line_penalty_code)
-#define double_hyphen_demerits int_par(double_hyphen_demerits_code)
-#define final_hyphen_demerits int_par(final_hyphen_demerits_code)
-#define adj_demerits int_par(adj_demerits_code)
-#define mag int_par(mag_code)
-#define delimiter_factor int_par(delimiter_factor_code)
-#define looseness int_par(looseness_code)
-#define tex_time int_par(time_code)
-#define day int_par(day_code)
-#define month int_par(month_code)
-#define year int_par(year_code)
-#define show_box_breadth int_par(show_box_breadth_code)
-#define show_box_depth int_par(show_box_depth_code)
-#define hbadness int_par(hbadness_code)
-#define vbadness int_par(vbadness_code)
-#define pausing int_par(pausing_code)
-#define tracing_online int_par(tracing_online_code)
-#define tracing_macros int_par(tracing_macros_code)
-#define tracing_stats int_par(tracing_stats_code)
-#define tracing_paragraphs int_par(tracing_paragraphs_code)
-#define tracing_pages int_par(tracing_pages_code)
-#define tracing_output int_par(tracing_output_code)
-#define tracing_lost_chars int_par(tracing_lost_chars_code)
-#define tracing_commands int_par(tracing_commands_code)
-#define tracing_restores int_par(tracing_restores_code)
-#define uc_hyph int_par(uc_hyph_code)
-#define output_penalty int_par(output_penalty_code)
-#define max_dead_cycles int_par(max_dead_cycles_code)
-#define hang_after int_par(hang_after_code)
-#define floating_penalty int_par(floating_penalty_code)
-#define global_defs int_par(global_defs_code)
-#define cur_fam int_par(cur_fam_code)
-#define escape_char int_par(escape_char_code)
-#define default_hyphen_char int_par(default_hyphen_char_code)
-#define default_skew_char int_par(default_skew_char_code)
-#define end_line_char int_par(end_line_char_code)
-#define new_line_char int_par(new_line_char_code)
-#define language int_par(language_code)
-#define left_hyphen_min int_par(left_hyphen_min_code)
-#define right_hyphen_min int_par(right_hyphen_min_code)
-#define holding_inserts int_par(holding_inserts_code)
-#define error_context_lines int_par(error_context_lines_code)
-/* sec 0247 */
-#define par_indent_code 0 // 3730
-#define math_surround_code 1 // 3731
-#define line_skip_limit_code 2 // 3732
-#define hsize_code 3 // 3733
-#define vsize_code 4 // 3734
-#define max_depth_code 5 // 3735
-#define split_max_depth_code 6 // 3736
-#define box_max_depth_code 7 // 3737
-#define hfuzz_code 8 // 3738
-#define vfuzz_code 9 // 3739
-#define delimiter_shortfall_code 10 // 3740
-#define null_delimiter_space_code 11 // 3741
-#define script_space_code 12 // 3742
-#define pre_display_size_code 13 // 3743
-#define display_width_code 14 // 3744
-#define display_indent_code 15 // 3745
-#define overfull_rule_code 16 // 3746
-#define hang_indent_code 17 // 3747
-#define h_offset_code 18 // 3748
-#define v_offset_code 19 // 3749
-#define emergency_stretch_code 20 // 3750
-#define dimen_pars 21
-#define scaled_base (dimen_base + dimen_pars) // 3751
-#define eqtb_size (scaled_base + 255) // 4006
-// #
-#define dimen(a) eqtb[scaled_base + a].cint
-#define dimen_par(a) eqtb[dimen_base + a].cint
-#define par_indent dimen_par(par_indent_code)
-#define math_surround dimen_par(math_surround_code)
-#define line_skip_limit dimen_par(line_skip_limit_code)
-#define hsize dimen_par(hsize_code)
-#define vsize dimen_par(vsize_code)
-#define max_depth dimen_par(max_depth_code)
-#define split_max_depth dimen_par(split_max_depth_code)
-#define box_max_depth dimen_par(box_max_depth_code)
-#define hfuzz dimen_par(hfuzz_code)
-#define vfuzz dimen_par(vfuzz_code)
-#define delimiter_shortfall dimen_par(delimiter_shortfall_code)
-#define null_delimiter_space dimen_par(null_delimiter_space_code)
-#define script_space dimen_par(script_space_code)
-#define pre_display_size dimen_par(pre_display_size_code)
-#define display_width dimen_par(display_width_code)
-#define display_indent dimen_par(display_indent_code)
-#define overfull_rule dimen_par(overfull_rule_code)
-#define hang_indent dimen_par(hang_indent_code)
-#define h_offset dimen_par(h_offset_code)
-#define v_offset dimen_par(v_offset_code)
-#define emergency_stretch dimen_par(emergency_stretch_code)
-/* sec 0256 */
-#define text(a) hash[a].rh
-#define next(a) hash[a].lh
-#define hash_is_full (hash_used == hash_base)
-#define font_id_text(a) text(font_id_base + a)
-/* sec 0268 */
-#define save_type(a) save_stack[a].hh.b0
-#define save_level(a) save_stack[a].hh.b1
-#define save_index(a) save_stack[a].hh.rh
-#define restore_old_value 0
-#define restore_zero 1
-#define insert_token 2
-#define level_boundary 3
-/* sec 0269 */
-#define bottom_level 0
-#define simple_group 1
-#define hbox_group 2
-#define adjust_hbox_group 3
-#define vbox_group 4
-#define vtop_group 5
-#define align_group 6
-#define no_align_group 7
-#define output_group 8
-#define math_group 9
-#define disc_group 10
-#define insert_group 11
-#define vcenter_group 12
-#define math_choice_group 13
-#define semi_simple_group 14
-#define math_shift_group 15
-#define math_left_group 16
-#define max_group_code 16
-/* sec 0274 */
-#define saved(a) save_stack[save_ptr + (a)].cint
-/* sec 0289 */
-#define cs_token_flag 07777 // 4095
-#define left_brace_token 0400 // 256 = 2^8 * left_brace
-#define left_brace_limit 01000 // 512 = 2^8 * (left_brace + 1)
-#define right_brace_token 01000 // 512 = 2^8 * right_brace
-#define right_brace_limit 01400 // 768 = 2^8 * (right_brace + 1)
-#define math_shift_token 01400 // 768 = 2^8 * math_shift
-#define tab_token 02000 // 1024 = 2^8 * tab_mark
-#define out_param_token 02400 // 1280 = 2^8 * out_param
-#define space_token 05040 // 2592 = 2^8 * spacer + ' '
-#define letter_token 05400 // 2816 = 2^8 * letter
-#define other_token 06000 // 3072 = 2^8 * other_char
-#define match_token 06400 // 3328 = 2^8 * match
-#define end_match_token 07000 // 3584 = 2^8 * end_match
-/* sec 0298 */
-#define chr_cmd(s) \
-do \
-{ \
- prints(s); \
- print(chr_code); \
-} \
-while (0)
-/* sec 0302 */
-#define state cur_input.state_field
-#define index cur_input.index_field
-#define start cur_input.start_field
-#define limit cur_input.limit_field
-#define name cur_input.name_field
-/* sec 0303 */
-#define mid_line 1
-#define skip_blanks 2 + max_char_code // 17
-#define new_line 3 + max_char_code + max_char_code // 33
-/* sec 0304 */
-#define cur_file input_file[index]
-/* sec 0305 */
-#define skipping 1
-#define defining 2
-#define matching 3
-#define aligning 4
-#define absorbing 5
-/* sec 0307 */
-#define token_list 0
-#define token_type index
-#define param_start limit
-#define parameter 0
-#define u_template 1
-#define v_template 2
-#define backed_up 3
-#define inserted 4
-#define macro 5
-#define output_text 6
-#define every_par_text 7
-#define every_math_text 8
-#define every_display_text 9
-#define every_hbox_text 10
-#define every_vbox_text 11
-#define every_job_text 12
-#define every_cr_text 13
-#define mark_text 14
-#define write_text 15
-/* sec 0316 */
-#define begin_pseudoprint() \
-do \
-{ \
- l = tally; \
- tally = 0; \
- selector = pseudo; \
- trick_count = 1000000L; \
-} \
-while (0)
-#define set_trick_count() \
-do \
-{ \
- first_count = tally; \
- trick_count = tally + 1 + error_line - half_error_line; \
- \
- if (trick_count < error_line) \
- trick_count = error_line; \
-} \
-while (0)
-/* sec 0322 */
-/* sec 0323 */
-#define back_list(a) begin_token_list(a, backed_up)
-#define ins_list(a) begin_token_list(a, inserted)
-/* sec 0344 */
-#define any_state_plus(a) mid_line + (a): case skip_blanks + (a): case new_line + (a)
-/* sec 0347 */
-#define add_delims_to(a) \
- (a) + math_shift: \
- case (a) + tab_mark: \
- case (a) + mac_param: \
- case (a) + sub_mark: \
- case (a) + letter: \
- case (a) + other_char
-/* sec 0352 */
-#define is_hex(a) \
- (((a >= '0') && (a <= '9')) || ((a >= 'a') && (a <= 'f')))
-#define hex_to_cur_chr() \
-do \
-{ \
- if (c <= '9') \
- cur_chr = c - '0'; \
- else \
- cur_chr = c - 'a' + 10; \
- \
- if (cc <= '9') \
- cur_chr = 16 * cur_chr + cc - '0'; \
- else \
- cur_chr = 16 * cur_chr + cc - 'a' + 10; \
-} \
-while (0)
-/* sec 0360 */
-#define end_line_char_inactive() \
- (end_line_char < 0) || (end_line_char > 255)
-/* sec 0358 */
-/* sec 0371 */
-#define store_new_token(a) \
- do \
- { \
- q = get_avail(); \
- link(p) = q; \
- info(q) = a; \
- p = q; \
- } \
- while (0)
-#define fast_store_new_token(a) \
- do \
- { \
- fast_get_avail(q); \
- link(p) = q; \
- info(q) = a; \
- p = q; \
- } \
- while (0)
-#define no_expand_flag 257
-/* sec 0382 */
-#define top_mark_code 0
-#define first_mark_code 1
-#define bot_mark_code 2
-#define split_first_mark_code 3
-#define split_bot_mark_code 4
-#define top_mark cur_mark[top_mark_code]
-#define first_mark cur_mark[first_mark_code]
-#define bot_mark cur_mark[bot_mark_code]
-#define split_first_mark cur_mark[split_first_mark_code]
-#define split_bot_mark cur_mark[split_bot_mark_code]
-/* sec 0400 */
-#define int_val 0
-#define dimen_val 1
-#define glue_val 2
-#define mu_val 3
-#define ident_val 4
-#define tok_val 5
-/* sec 0413 */
-#define scanned_result(va, vb) \
-do \
- { \
- cur_val = va; \
- cur_val_level = vb; \
- } \
-while (0)
-/* sec 0416 */
-#define input_line_no_code (glue_val + 1)
-#define badness_code (glue_val + 2)
-/* sec 0421 */
-#define max_dimen 07777777777
-/* sec 0438 */
-#define octal_token (other_token + '\'') // 3111
-#define hex_token (other_token + '"' ) // 3106
-#define alpha_token (other_token + '`' ) // 3168
-#define point_token (other_token + '.' ) // 3118
-#define continental_point_token (other_token + ',' ) // 3116
-/* sec 0445 */
-#define zero_token (other_token + '0') // 3120
-#define A_token (letter_token + 'A') // 2881
-#define other_A_token (other_token + 'A') // 3137
-/* sec 0458 */
-#define set_conversion(a, b) \
- do \
- { \
- num = a; \
- denom = b; \
- } while (0)
-/* sec 0468 */
-#define number_code 0
-#define roman_numeral_code 1
-#define string_code 2
-#define meaning_code 3
-#define font_name_code 4
-#define job_name_code 5
-/* sec 0480 */
-#define closed 2
-#define just_open 1
-/* sec 0487 */
-#define if_char_code 0
-#define if_cat_code 1
-#define if_int_code 2
-#define if_dim_code 3
-#define if_odd_code 4
-#define if_vmode_code 5
-#define if_hmode_code 6
-#define if_mmode_code 7
-#define if_inner_code 8
-#define if_void_code 9
-#define if_hbox_code 10
-#define if_vbox_code 11
-#define ifx_code 12
-#define if_eof_code 13
-#define if_true_code 14
-#define if_false_code 15
-#define if_case_code 16
-/* sec 0489 */
-#define if_node_size 2
-#define if_line_field(a) mem[(a) + 1].cint
-#define if_code 1
-#define fi_code 2
-#define else_code 3
-#define or_code 4
-/* sec 0506 */
-#define get_x_token_or_active_char() \
-do \
-{ \
- get_x_token(); \
- \
- if (cur_cmd == relax) \
- if (cur_chr == no_expand_flag) \
- { \
- cur_cmd = active_char; \
- cur_chr = cur_tok - cs_token_flag - active_base; \
- } \
-} \
-while (0)
-/* sec 0519 */
-#define append_to_name(a) \
-do \
-{ \
- c = a; incr(k); \
- \
- if (k < file_name_size) \
- name_of_file[k] = xchr[c]; \
-} \
-while (0)
-/* sec 0544 */
-#define no_tag 0
-#define lig_tag 1
-#define list_tag 2
-#define ext_tag 3
-/* sec 0545 */
-#define stop_flag 128
-#define kern_flag 128
-#define skip_byte(a) a.b0
-#define next_char(a) a.b1
-#define op_byte(a) a.b2
-#define rem_byte(a) a.b3
-/* sec 0546 */
-#define ext_top(a) a.b0
-#define ext_mid(a) a.b1
-#define ext_bot(a) a.b2
-#define ext_rep(a) a.b3
-/* sec 0547 */
-#define slant_code 1
-#define space_code 2
-#define space_stretch_code 3
-#define space_shrink_code 4
-#define x_height_code 5
-#define quad_code 6
-#define extra_space_code 7
-/* sec 0549 */
-#define non_char 256
-#define non_address 0
-/* sec 0554 */
-#define char_info(a, b) font_info[char_base[a] + b].qqqq
-#define char_width(a, b) font_info[width_base[a] + b.b0].cint
-#define char_exists(a) (a.b0 > min_quarterword)
-#define char_italic(a, b) font_info[italic_base[a] + (b.b2) / 4].cint
-#define height_depth(a) (a.b1)
-#define char_height(a, b) font_info[height_base[a] + (b) / 16].cint
-#define char_depth(a, b) font_info[depth_base[a] + (b) % 16].cint
-#define char_tag(a) (a.b2 % 4)
-/* sec 0557 */
-#define char_kern(a, b) font_info[kern_base[a] + 256 * op_byte(b) + rem_byte(b)].cint
-#define kern_base_offset (256 * (128 + min_quarterword))
-#define lig_kern_start(a, b) lig_kern_base[a] + rem_byte(b)
-#define lig_kern_restart(a, b) lig_kern_base[a] + 256 * op_byte(b) + rem_byte(b) + 32768 - kern_base_offset
-/* sec 0558 */
-#define param(a, b) font_info[a + param_base[b]].cint
-#define slant(f) param(slant_code, f)
-#define space(f) param(space_code, f)
-#define space_stretch(f) param(space_stretch_code, f)
-#define space_shrink(f) param(space_shrink_code, f)
-#define x_height(f) param(x_height_code, f)
-#define quad(f) param(quad_code, f)
-#define extra_space(f) param(extra_space_code, f)
-/* sec 0561 */
-#define start_font_error_message() \
-do \
-{ \
- print_err("Font "); \
- sprint_cs(u); \
- print_char('='); \
- print_file_name(nom, aire, 335); \
- \
- if (s >= 0) \
- { \
- prints(" at "); \
- print_scaled(s); \
- prints("pt"); \
- } \
- else if (s != -1000) \
- { \
- prints(" scaled "); \
- print_int(-(integer)s); \
- } \
-} \
-while (0)
-/* sec 0564 */
-#define read_sixteen(a) \
-do \
- { \
- a = fbyte; \
- \
- if (a > 127) \
- goto bad_tfm; \
- \
- fget(); \
- a = a * 256 + fbyte;\
- } \
-while (0)
-#define store_four_quarters(val) \
-do \
- { \
- fget(); a = fbyte; qw.b0 = a; \
- fget(); b = fbyte; qw.b1 = b; \
- fget(); c = fbyte; qw.b2 = c; \
- fget(); d = fbyte; qw.b3 = d; \
- val = qw; \
- } \
-while (0)
-/* sec 0570 */
-#define check_byte_range(a) \
-do \
-{ \
- if ((a < bc) || (a > ec)) \
- goto bad_tfm; \
-} \
- while (0)
-/* sec 0571 */
-#define store_scaled(a) \
-do \
-{ \
- fget(); a = fbyte; fget(); b = fbyte; \
- fget(); c = fbyte; fget(); d = fbyte; \
- sw = (((((d * z) / 256) + (c * z)) / 256) + (b * z)) / beta;\
- \
- if (a == 0) \
- a = sw; \
- else if (a == 255) \
- a = sw - alpha; \
- else \
- goto bad_tfm; \
-} \
-while (0)
-/* sec 0573 */
-#define check_existence(a) \
-do \
-{ \
- check_byte_range(a); \
- \
- qw = char_info(f, a); \
- \
- if (!char_exists(qw)) \
- goto bad_tfm; \
-} \
-while (0)
-/* sec 0576 */
-#define adjust(a) a[f] = a[f]
-/* sec 0585 */
-#define set1 128 // c[1]
-#define set2 129 // c[2]
-#define set3 130 // c[3]
-#define set4 131 // c[4]
-#define set_rule 132 // a[4] b[4]
-#define put1 133 // c[1]
-#define put2 134 // c[2]
-#define put3 135 // c[3]
-#define put4 136 // c[4]
-#define put_rule 137 // a[4] b[4]
-#define nop 138 // NULL
-#define bop 139 // c0[4] c1[4] ... c9[4] p[4]
-#define eop 140 // NULL
-#define push 141
-#define pop 142
-#define right1 143 // b[1]
-#define right2 144 // b[2]
-#define right3 145 // b[3]
-#define right4 146 // b[4]
-#define w0 147 //
-#define w1 148 // b[1]
-#define w2 149 // b[2]
-#define w3 150 // b[3]
-#define w4 151 // b[4]
-#define x0 152 //
-#define x1 153 // b[1]
-#define x2 154 // b[2]
-#define x3 155 // b[3]
-#define x4 156 // b[4]
-#define down1 157 // a[1]
-#define down2 158 // a[2]
-#define down3 159 // a[3]
-#define down4 160 // a[4]
-#define y0 161 //
-#define y1 162 // a[1]
-#define y2 163 // a[2]
-#define y3 164 // a[3]
-#define y4 165 // a[4]
-#define z0 166 //
-#define z1 167 // a[1]
-#define z2 168 // a[2]
-#define z3 169 // a[3]
-#define z4 170 // a[4]
-#define fnt_num_0 171 //
-#define fnt1 235 // k[1]
-#define fnt2 236 // k[2]
-#define fnt3 237 // k[3]
-#define fnt4 238 // k[4]
-#define xxx1 239 // k[1] x[k]
-#define xxx2 240 // k[2] x[k]
-#define xxx3 241 // k[3] x[k]
-#define xxx4 242 // k[4] x[k]
-#define fnt_def1 243 // k[1] c[4] s[4] d[4] a[1] l[1] n[a + l]
-#define fnt_def2 244 // k[2] c[4] s[4] d[4] a[1] l[1] n[a + l]
-#define fnt_def3 245 // k[3] c[4] s[4] d[4] a[1] l[1] n[a + l]
-#define fnt_def4 246 // k[4] c[4] s[4] d[4] a[1] l[1] n[a + l]
-#define pre 247 // i[1] num[4] den[4] mag[4] k[1] x[k]
-#define post 248 //
-#define post_post 249 //
-/* sec 0587 */
-#define id_byte 2
-/* sec 0605 */
-#define movement_node_size 3
-#define location(a) mem[a + 2].cint
-/* sec 0608 */
-#define y_here 1
-#define z_here 2
-#define yz_OK 3
-#define y_OK 4
-#define z_OK 5
-#define d_fixed 6
-/* sec 0611 */
-#define none_seen 0
-#define y_seen 6
-#define z_seen 12
-/* sec 0625 */
-#define billion 1000000000.0
-#define vet_glue(a) \
-do \
-{ \
- glue_temp = a; \
- if (glue_temp > billion) \
- glue_temp = billion; \
- else if (glue_temp < -billion)\
- glue_temp = -billion; \
-} \
-while (0)
-/* sec 0644 */
-#define exactly 0
-#define additional 1
-#define natural 0, additional
-/* sec 0769 */
-#define u_part(a) mem[(a) + height_offset].cint
-#define v_part(a) mem[(a) + depth_offset].cint
-#define extra_info(a) info((a) + list_offset)
-/* sec 0681 */
-#define noad_size 4
-#define nucleus(a) ((a) + 1)
-#define supscr(a) ((a) + 2)
-#define subscr(a) ((a) + 3)
-#define math_type link
-#define fam font
-#define math_char 1
-#define sub_box 2
-#define sub_mlist 3
-#define math_text_char 4
-/* sec 0682 */
-#define ord_noad (unset_node + 3) // 16
-#define op_noad (ord_noad + 1 ) // 17
-#define bin_noad (ord_noad + 2 ) // 18
-#define rel_noad (ord_noad + 3 ) // 19
-#define open_noad (ord_noad + 4 ) // 20
-#define close_noad (ord_noad + 5 ) // 21
-#define punct_noad (ord_noad + 6 ) // 22
-#define inner_noad (ord_noad + 7 ) // 23
-#define limits 1
-#define no_limits 2
-/* sec 0683 */
-#define left_delimiter(a) ((a) + 4)
-#define right_delimiter(a) ((a) + 5)
-#define radical_noad (inner_noad + 1) // 24
-#define radical_noad_size 5
-#define fraction_noad (radical_noad + 1) // 25
-#define fraction_noad_size 6
-#define small_fam(a) mem[(a)].qqqq.b0
-#define small_char(a) mem[(a)].qqqq.b1
-#define large_fam(a) mem[(a)].qqqq.b2
-#define large_char(a) mem[(a)].qqqq.b3
-#define thickness width
-#define default_code 010000000000L
-#define numerator supscr
-#define denominator subscr
-/* sec 0687 */
-#define under_noad (fraction_noad + 1) // 26
-#define over_noad (under_noad + 1 ) // 27
-#define accent_noad (over_noad + 1 ) // 28
-#define accent_noad_size 5
-#define accent_chr(a) (a) + 4
-#define vcenter_noad (accent_noad + 1 ) // 29
-#define left_noad (vcenter_noad + 1 ) // 30
-#define right_noad (left_noad + 1 ) // 31
-#define delimiter nucleus
-#define script_allowed(a) ((type(a) >= ord_noad) && (type(a) < left_noad))
-/* sec 0688 */
-#define style_node (unset_node + 1)
-#define style_node_size 3
-#define display_style 0
-#define text_style 2
-#define script_style 4
-#define script_script_style 6
-#define cramped 1
-/* sec 0689 */
-#define choice_node (unset_node + 2)
-#define display_mlist(a) info(a + 1)
-#define text_mlist(a) link(a + 1)
-#define script_mlist(a) info(a + 2)
-#define script_script_mlist(a) link(a + 2)
-/* sec 0699 */
-#define text_size 0
-#define script_size 16
-#define script_script_size 32
-/* sec 0700 */
-#define mathsy(a, b) font_info[a + param_base[fam_fnt(2 + b)]].cint
-#define math_x_height(a) mathsy(5, a)
-#define math_quad(a) mathsy(6, a)
-#define num1(a) mathsy(8, a)
-#define num2(a) mathsy(9, a)
-#define num3(a) mathsy(10, a)
-#define denom1(a) mathsy(11, a)
-#define denom2(a) mathsy(12, a)
-#define sup1(a) mathsy(13, a)
-#define sup2(a) mathsy(14, a)
-#define sup3(a) mathsy(15, a)
-#define sub1(a) mathsy(16, a)
-#define sub2(a) mathsy(17, a)
-#define sup_drop(a) mathsy(18, a)
-#define sub_drop(a) mathsy(19, a)
-#define delim1(a) mathsy(20, a)
-#define delim2(a) mathsy(21, a)
-#define axis_height(a) mathsy(22, a)
-#define total_mathsy_params 22
-/* sec 0701 */
-#define mathex(a) font_info[(a) + param_base[fam_fnt(3 + cur_size)]].cint
-#define default_rule_thickness mathex(8)
-#define big_op_spacing1 mathex(9)
-#define big_op_spacing2 mathex(10)
-#define big_op_spacing3 mathex(11)
-#define big_op_spacing4 mathex(12)
-#define big_op_spacing5 mathex(13)
-#define total_mathex_params 13
-/* sec 0702 */
-#define cramped_style(a) (2 * ((a) / 2) + cramped)
-#define sub_style(a) (2 * ((a) / 4) + script_style + cramped)
-#define sup_style(a) (2 * ((a) / 4) + script_style + ((a) % 2))
-#define num_style(a) ((a) + 2 - 2 * ((a) / 6))
-#define denom_style(a) (2 * ((a) / 2) + cramped + 2 - 2 * ((a) / 6))
-/* sec 0716 */
-#define mu_mult(a) nx_plus_y(n, a, xn_over_d(a, f, 0200000))
-/* sec 0725 */
-#define new_hlist(a) mem[nucleus(a)].cint
-/* sec 0731 */
-#define choose_mlist(a) \
-do \
-{ \
- p = a(q); \
- a(q) = 0; \
-} \
-while (0)
-/* sec 0770 */
-#define preamble link(align_head)
-#define align_stack_node_size 5
-/* sec 0780 */
-#define span_code 256
-#define cr_code 257
-#define cr_cr_code (cr_code + 1)
-#define end_template_token (cs_token_flag + frozen_end_template)
-/* sec 0797 */
-#define span_node_size 2
-/* sec 0817 */
-#define tight_fit 3
-#define loose_fit 1
-#define very_loose_fit 0
-#define decent_fit 2
-/* sec 0819 */
-#define active_node_size 3
-#define fitness subtype
-#define break_node rlink
-#define line_number llink
-#define total_demerits(a) mem[a + 2].cint
-#define unhyphenated 0
-#define hyphenated 1
-#define last_active active
-/* sec 0821 */
-#define passive_node_size 2
-#define cur_break rlink
-#define prev_break llink
-#define serial info
-/* sec 0822 */
-#define delta_node_size 7
-#define delta_node 2
-/* sec 0823 */
-#define do_all_six(a) \
-do \
-{ \
- a(1); a(2); a(3); \
- a(4); a(5); a(6); \
-} \
-while (0)
-/* sec 0825 */
-#define check_shrinkage(s) \
-do \
-{ \
- if ((shrink_order(s) != normal) && (shrink(s) != 0))\
- s = finite_shrink(s); \
-} \
-while (0)
-/* sec 0829 */
-#define copy_to_cur_active(a) cur_active_width[a] = active_width[a]
-/* sec 0832 */
-#define update_width(a) cur_active_width[a] = cur_active_width[a] + mem[r + (a)].cint
-/* sec 0833 */
-#define awful_bad 07777777777
-/* sec 0837 */
-#define set_break_width_to_background(a) break_width[a] = background[a]
-/* sec 0843 */
-#define convert_to_break_width(a) mem[prev_r + (a)].cint = mem[prev_r + (a)].cint - cur_active_width[a] + break_width[a]
-#define store_break_width(a) active_width[a] = break_width[a]
-#define new_delta_to_break_width(a) mem[q + (a)].cint = break_width[(a)] - cur_active_width[(a)]
-/* sec 0844 */
-#define new_delta_from_break_width(a) mem[q + (a)].cint = cur_active_width[(a)] - break_width[(a)]
-/* sec 0860 */
-#define combine_two_deltas(a) mem[prev_r + (a)].cint = mem[prev_r + (a)].cint + mem[r + (a)].cint
-#define downdate_width(a) cur_active_width[(a)] = cur_active_width[(a)] - mem[prev_r + (a)].cint
-/* sec 0861 */
-#define update_active(a) active_width[(a)] = active_width[(a)] + mem[r + (a)].cint
-/* sec 0864 */
-#define store_background(a) active_width[a] = background[a]
-/* sec 0866 */
-#define act_width active_width[1]
-#define kern_break() \
-do \
-{ \
- if (!is_char_node(link(cur_p)) && auto_breaking) \
- if (type(link(cur_p)) == glue_node) \
- try_break(0, unhyphenated); \
- \
- act_width = act_width + width(cur_p); \
-} \
-while (0)
-/* sec 0877 */
-#define next_break prev_break
-/* sec 0908 */
-#define append_charnode_to_t(a) \
-do \
- { \
- link(t) = get_avail(); \
- t = link(t); \
- font(t) = hf; \
- character(t) = (a); \
- } \
-while (0)
-#define set_cur_r() \
-do \
- { \
- if (j < n) \
- cur_r = hu[j + 1]; \
- else \
- cur_r = bchar; \
- \
- if (odd(hyf[j])) \
- cur_rh = hchar; \
- else \
- cur_rh = non_char; \
- } \
-while (0)
-/* sec 0910 */
-#define wrap_lig(a) \
-do \
-{ \
- if (ligature_present) \
- { \
- p = new_ligature(hf, cur_l, link(cur_q)); \
- \
- if (lft_hit) \
- { \
- subtype(p) = 2; \
- lft_hit = false; \
- } \
- \
- if ((a)) \
- if (lig_stack == 0) \
- { \
- incr(subtype(p)); \
- rt_hit = false; \
- } \
- \
- link(cur_q) = p; \
- t = p; \
- ligature_present = false; \
- } \
-} \
-while (0)
-#define pop_lig_stack() \
-do \
- { \
- if (lig_ptr(lig_stack) != 0) \
- { \
- link(t) = lig_ptr(lig_stack); \
- t = link(t); \
- incr(j); \
- } \
- \
- p = lig_stack; \
- lig_stack = link(p); \
- free_node(p, small_node_size); \
- \
- if (lig_stack == 0) \
- { \
- set_cur_r(); \
- } \
- else \
- cur_r = character(lig_stack); \
- } \
-while (0)
-/* sec 0914 */
-#define advance_major_tail() \
-do \
- { \
- major_tail = link(major_tail); \
- incr(r_count); \
- } \
-while (0)
-/* sec 0970 */
-#define active_height active_width
-#define cur_height active_height[1]
-#define set_height_zero(a) active_width[(a)] = 0
-/* sec 0974 */
-#define deplorable 100000L
-/* sec 0980 */
-#define inserts_only 1
-#define box_there 2
-/* sec 0981 */
-#define page_ins_node_size 4
-#define inserting 0
-#define split_up 1
-#define broken_ptr(a) link(a + 1)
-#define broken_ins(a) info(a + 1)
-#define last_ins_ptr(a) link(a + 2)
-#define best_ins_ptr(a) info(a + 2)
-/* sec 0982 */
-#define page_goal page_so_far[0]
-#define page_total page_so_far[1]
-#define page_shrink page_so_far[6]
-#define page_depth page_so_far[7]
-/* sec 0987 */
-#define set_page_so_far_zero(a) page_so_far[(a)] = 0
-/* sec 1034 */
-#define adjust_space_factor() \
-do \
-{ \
- main_s = sf_code(cur_chr); \
- if (main_s == 1000) \
- space_factor = 1000; \
- else if (main_s < 1000) \
- { \
- if (main_s > 0) \
- space_factor = main_s; \
- } \
- else if (space_factor < 1000) \
- space_factor = 1000; \
- else \
- space_factor = main_s; \
-} \
-while (0)
-/* sec 1035 */
-/* -> false */
-#define wrapup(a) \
-do \
-{ \
- if (cur_l < non_char) \
- { \
- if (link(cur_q) != 0) \
- if (character(tail) == hyphen_char[main_f]) \
- ins_disc = true; \
- \
- if (ligature_present) \
- { \
- main_p = new_ligature(main_f, cur_l, link(cur_q)); \
- \
- if (lft_hit) \
- { \
- subtype(main_p) = 2; \
- lft_hit = false; \
- } \
- \
- if (a) \
- if (lig_stack == 0) \
- { \
- incr(subtype(main_p)); \
- rt_hit = false; \
- } \
- \
- link(cur_q) = main_p; \
- tail = main_p; \
- ligature_present = false; \
- } \
- \
- if (ins_disc) \
- { \
- ins_disc = false; \
- \
- if (mode > 0) \
- { \
- tail_append(new_disc()); \
- } \
- } \
- } \
-} \
-while (0)
-/* sec 1045 */
-#define any_mode(a) vmode + a: case hmode + a: case mmode + a
-/* sec 1046 */
-#define non_math(a) vmode + a: case hmode + a
-/* sec 1058 */
-#define fil_code 0
-#define fill_code 1
-#define ss_code 2
-#define fil_neg_code 3
-#define skip_code 4
-#define mskip_code 5
-/* sec 1071 */
-#define box_flag 010000000000
-#define ship_out_flag (box_flag + 512)
-#define leader_flag (box_flag + 513)
-#define box_code 0
-#define copy_code 1
-#define last_box_code 2
-#define vsplit_code 3
-#define vtop_code 4
-/* sec 1178 */
-#define above_code 0
-#define over_code 1
-#define atop_code 2
-#define delimited_code 3
-/* sec 1214 */
-#define define(p, t, e) \
-do \
-{ \
- if (a >= 4) \
- geq_define(p, t, e);\
- else \
- eq_define(p, t, e); \
-} \
-while (0)
-#define word_define(p, w) \
-do \
-{ \
- if (a >= 4) \
- geq_word_define(p, w);\
- else \
- eq_word_define(p, w); \
-} \
-while (0)
-/* sec 1222 */
-#define char_def_code 0
-#define math_char_def_code 1
-#define count_def_code 2
-#define dimen_def_code 3
-#define skip_def_code 4
-#define mu_skip_def_code 5
-#define toks_def_code 6
-/* sec 1290 */
-#define show_code 0
-#define show_box_code 1
-#define show_the_code 2
-#define show_lists 3
-/* sec 1306 */
-#define undump(va, vb, vc) \
-do \
- { \
- undump_int(x); \
- \
- if ((x < (va)) || (x > (vb))) \
- goto bad_fmt; \
- else \
- vc = x; \
- } \
-while (0)
-/* sec 1342 */
-#define write_node_size 2
-#define open_node_size 3
-#define open_node 0
-#define write_node 1
-#define close_node 2
-#define special_node 3
-#define language_node 4
-#define what_lang(s) link(s+1)
-#define what_lhm(s) type(s+1)
-#define what_rhm(s) subtype(s+1)
-#define write_tokens(s) link(s+1)
-#define write_stream(s) info(s+1)
-#define open_name(s) link(s+1)
-#define open_area(s) info(s+2)
-#define open_ext(s) link(s+2)
-/* sec 1344 */
-#define immediate_code 4
-#define set_language_code 5
-/* sec 1371 */
-#define end_write_token (cs_token_flag + end_write)
-
+/* Copyright 2014 Clerk Ma\r
+\r
+ This program is free software; you can redistribute it and/or modify\r
+ it under the terms of the GNU General Public License as published by\r
+ the Free Software Foundation; either version 2 of the License, or\r
+ (at your option) any later version.\r
+\r
+ This program is distributed in the hope that it will be useful, but\r
+ WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+ General Public License for more details.\r
+\r
+ You should have received a copy of the GNU General Public License\r
+ along with this program; if not, write to the Free Software\r
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA\r
+ 02110-1301 USA. */\r
+#ifndef _YANDYTEX_MACROS_H\r
+#define _YANDYTEX_MACROS_H\r
+\r
+#define font_base 0\r
+/* sec 0022 */\r
+#define null_code 0 // 0\r
+#define carriage_return 015 // 13\r
+#define invalid_code 0177 // 127\r
+/* sec 0036 */\r
+#define loc cur_input.loc_field\r
+/* sec 0040 */\r
+#define length(s) (str_start[(s) + 1] - str_start[(s)])\r
+/* sec 0041 */\r
+#define cur_length (pool_ptr - str_start[str_ptr])\r
+/* sec 0054 */\r
+enum \r
+{\r
+ no_print = 16,\r
+ term_only = 17,\r
+ log_only = 18,\r
+ term_and_log = 19,\r
+ pseudo = 20,\r
+ new_string = 21,\r
+ max_selector = 21,\r
+};\r
+/* sec 0073 */\r
+enum\r
+{\r
+ batch_mode = 0,\r
+ nonstop_mode = 1,\r
+ scroll_mode = 2,\r
+ error_stop_mode = 3,\r
+};\r
+/* sec 0076 */\r
+enum\r
+{\r
+ spotless = 0,\r
+ warning_issued = 1,\r
+ error_message_issued = 2,\r
+ fatal_error_stop = 3,\r
+};\r
+/* sec 0096 */\r
+#define check_interrupt() \\r
+do \\r
+{ \\r
+ if (interrupt != 0) \\r
+ pause_for_instructions(); \\r
+} \\r
+while (0)\r
+/* sec 0101 */\r
+#define unity 0200000\r
+#define two 0400000\r
+/* sec 0105 */\r
+#define nx_plus_y(a, b, c) mult_and_add(a, b, c, 07777777777L)\r
+#define mult_integers(a, b) mult_and_add(a, b, 0, 017777777777L)\r
+/* sec 0108 */\r
+#define inf_bad 10000L\r
+/* sec 0109 */\r
+#define set_glue_ratio_zero(a) (a) = 0.0\r
+#define set_glue_ratio_one(a) (a) = 1.0\r
+#define tex_float(a) (a)\r
+#define unfloat(a) (a)\r
+#define float_constant(a) (float) (a)\r
+/* sec 0115 */\r
+//#define pointer halfword\r
+#define null min_halfword\r
+/* sec 0118 */\r
+#define link(p) mem[p].hh.rh\r
+#define info(p) mem[p].hh.lh\r
+/* sec 0122 */\r
+#ifdef STAT\r
+#define fast_get_avail(a) \\r
+ do \\r
+ { \\r
+ a = avail; \\r
+ \\r
+ if (a == 0) \\r
+ a = get_avail(); \\r
+ else \\r
+ { \\r
+ avail = link(a); \\r
+ link(a) = 0; \\r
+ incr(dyn_used); \\r
+ } \\r
+ } \\r
+ while (0)\r
+#else\r
+#define fast_get_avail(a) \\r
+ do \\r
+ { \\r
+ a = avail; \\r
+ \\r
+ if (a == 0) \\r
+ a = get_avail(); \\r
+ else \\r
+ { \\r
+ avail = link(a); \\r
+ link(a) = 0; \\r
+ } \\r
+ } \\r
+ while (0)\r
+#endif\r
+/* sec 0124 */\r
+#define empty_flag max_halfword\r
+#define is_empty(a) (link(a) == empty_flag)\r
+#define node_size info\r
+#define llink(a) info(a+1)\r
+#define rlink(a) link(a+1)\r
+/* sec 0133 */\r
+#define type(a) mem[a].hh.b0\r
+#define subtype(a) mem[a].hh.b1\r
+/* sec 0134 */\r
+#define is_char_node(a) (a >= hi_mem_min)\r
+#define font type\r
+#define character subtype\r
+/* sec 0135 */\r
+#define hlist_node 0\r
+#define box_node_size 7\r
+#define width_offset 1\r
+#define depth_offset 2\r
+#define height_offset 3\r
+#define width(a) mem[a + width_offset].cint\r
+#define depth(a) mem[a + depth_offset].cint\r
+#define height(a) mem[a + height_offset].cint\r
+#define shift_amount(a) mem[a + 4].cint\r
+#define list_offset 5\r
+#define list_ptr(a) link(a + list_offset)\r
+#define glue_order(a) subtype(a + list_offset)\r
+#define glue_sign(a) type(a + list_offset)\r
+#define normal 0\r
+#define stretching 1\r
+#define shrinking 2\r
+#define glue_offset 6\r
+#define glue_set(a) mem[a + glue_offset].gr\r
+/* sec 0137 */\r
+#define vlist_node 1\r
+/* sec 0138 */\r
+#define rule_node 2\r
+#define rule_node_size 4\r
+#define null_flag -010000000000L\r
+#define is_running(a) (a == null_flag)\r
+/* sec 0140 */\r
+#define ins_node 3\r
+#define ins_node_size 5\r
+#define float_cost(a) mem[a + 1].cint\r
+#define ins_ptr(a) info(a + 4)\r
+#define split_top_ptr(a) link(a + 4)\r
+/* sec 0141 */\r
+#define mark_node 4\r
+#define small_node_size 2\r
+#define mark_ptr(a) mem[a + 1].cint\r
+/* sec 0142 */\r
+#define adjust_node 5\r
+#define adjust_ptr mark_ptr\r
+/* sec 0143 */\r
+#define ligature_node 6\r
+#define lig_char(a) (a + 1)\r
+#define lig_ptr(a) link(lig_char(a))\r
+/* sec 0145 */\r
+#define disc_node 7\r
+#define replace_count subtype\r
+#define pre_break llink\r
+#define post_break rlink\r
+/* sec 0146 */\r
+#define whatsit_node 8\r
+/* sec 0147 */\r
+#define math_node 9\r
+#define before 0\r
+#define after 1\r
+/* sec 0148 */\r
+#define precedes_break(a) (type(a) < math_node)\r
+#define non_discardable(a) (type(a) < math_node)\r
+/* sec 0149 */\r
+#define glue_node 10\r
+#define cond_math_glue 98\r
+#define mu_glue 99\r
+#define a_leaders 100\r
+#define c_leaders 101\r
+#define x_leaders 102\r
+#define glue_ptr llink\r
+#define leader_ptr rlink\r
+/* sec 0150 */\r
+#define glue_spec_size 4\r
+#define glue_ref_count(a) link(a)\r
+#define stretch(a) mem[a + 2].cint\r
+#define shrink(a) mem[a + 3].cint\r
+#define stretch_order type\r
+#define shrink_order subtype\r
+#define fil 1\r
+#define fill 2\r
+#define filll 3\r
+/* sec 0155 */\r
+#define kern_node 11\r
+#define explicit 1\r
+#define acc_kern 2\r
+/* sec 0157 */\r
+#define penalty_node 12\r
+#define inf_penalty inf_bad\r
+#define eject_penalty -inf_bad\r
+#define penalty(a) mem[a + 1].cint\r
+/* sec 0159 */\r
+#define unset_node 13\r
+#define glue_stretch(a) mem[a + glue_offset].cint\r
+#define glue_shrink shift_amount\r
+#define span_count subtype\r
+/* sec 0162 */\r
+#define zero_glue mem_bot // 0\r
+#define fil_glue (zero_glue + glue_spec_size) // 4\r
+#define fill_glue (fil_glue + glue_spec_size) // 8\r
+#define ss_glue (fill_glue + glue_spec_size) // 12\r
+#define fil_neg_glue (ss_glue + glue_spec_size) // 16\r
+#define lo_mem_stat_max (fil_neg_glue + glue_spec_size - 1) // 19\r
+#define page_ins_head mem_top\r
+#define contrib_head (mem_top - 1)\r
+#define page_head (mem_top - 2)\r
+#define temp_head (mem_top - 3)\r
+#define hold_head (mem_top - 4)\r
+#define adjust_head (mem_top - 5)\r
+#define active (mem_top - 7)\r
+#define align_head (mem_top - 8)\r
+#define end_span (mem_top - 9)\r
+#define omit_template (mem_top - 10)\r
+#define null_list (mem_top - 11)\r
+#define lig_trick (mem_top - 12)\r
+#define garbage (mem_top - 12)\r
+#define backup_head (mem_top - 13)\r
+#define hi_mem_stat_min (mem_top - 13)\r
+#define hi_mem_stat_usage 14\r
+/* sec 0200 */\r
+#define token_ref_count(a) info(a)\r
+/* sec 0203 */\r
+#define add_token_ref(a) incr(token_ref_count(a))\r
+#define add_glue_ref(a) incr(glue_ref_count(a))\r
+/* sec 0207 */\r
+#define escape 0\r
+#define relax 0\r
+#define left_brace 1\r
+#define right_brace 2\r
+#define math_shift 3\r
+#define tab_mark 4\r
+#define car_ret 5\r
+#define out_param 5\r
+#define mac_param 6\r
+#define sup_mark 7\r
+#define sub_mark 8\r
+#define ignore 9\r
+#define endv 9\r
+#define spacer 10\r
+#define letter 11\r
+#define other_char 12\r
+#define active_char 13\r
+#define par_end 13\r
+#define match 13\r
+#define comment 14\r
+#define end_match 14\r
+#define stop 14\r
+#define invalid_char 15\r
+#define delim_num 15\r
+#define max_char_code 15\r
+/* sec 0208 */\r
+#define char_num 16\r
+#define math_char_num 17\r
+#define mark 18\r
+#define xray 19\r
+#define make_box 20\r
+#define hmove 21\r
+#define vmove 22\r
+#define un_hbox 23\r
+#define un_vbox 24\r
+#define remove_item 25\r
+#define hskip 26\r
+#define vskip 27\r
+#define mskip 28\r
+#define kern 29\r
+#define mkern 30\r
+#define leader_ship 31\r
+#define halign 32\r
+#define valign 33\r
+#define no_align 34\r
+#define vrule 35\r
+#define hrule 36\r
+#define insert 37\r
+#define vadjust 38\r
+#define ignore_spaces 39\r
+#define after_assignment 40\r
+#define after_group 41\r
+#define break_penalty 42\r
+#define start_par 43\r
+#define ital_corr 44\r
+#define accent 45\r
+#define math_accent 46\r
+#define discretionary 47\r
+#define eq_no 48\r
+#define left_right 49\r
+#define math_comp 50\r
+#define limit_switch 51\r
+#define above 52\r
+#define math_style 53\r
+#define math_choice 54\r
+#define non_script 55\r
+#define vcenter 56\r
+#define case_shift 57\r
+#define message 58\r
+#define extension 59\r
+#define in_stream 60\r
+#define begin_group 61\r
+#define end_group 62\r
+#define omit 63\r
+#define ex_space 64\r
+#define no_boundary 65\r
+#define radical 66\r
+#define end_cs_name 67\r
+#define min_internal 68\r
+#define char_given 68\r
+#define math_given 69\r
+#define last_item 70\r
+#define max_non_prefixed_command 70\r
+/* sec 0209 */\r
+#define toks_register 71\r
+#define assign_toks 72\r
+#define assign_int 73\r
+#define assign_dimen 74\r
+#define assign_glue 75\r
+#define assign_mu_glue 76\r
+#define assign_font_dimen 77\r
+#define assign_font_int 78\r
+#define set_aux 79\r
+#define set_prev_graf 80\r
+#define set_page_dimen 81\r
+#define set_page_int 82\r
+#define set_box_dimen 83\r
+#define set_shape 84\r
+#define def_code 85\r
+#define def_family 86\r
+#define set_font 87\r
+#define def_font 88\r
+#define tex_register 89\r
+#define max_internal 89\r
+#define advance 90\r
+#define multiply 91\r
+#define divide 92\r
+#define prefix 93\r
+#define let 94\r
+#define shorthand_def 95\r
+#define read_to_cs 96\r
+#define def 97\r
+#define set_box 98\r
+#define hyph_data 99\r
+#define set_interaction 100\r
+#define max_command 100\r
+/* sec 0210 */\r
+#define undefined_cs (max_command + 1 )\r
+#define expand_after (max_command + 2 )\r
+#define no_expand (max_command + 3 )\r
+#define input (max_command + 4 )\r
+#define if_test (max_command + 5 )\r
+#define fi_or_else (max_command + 6 )\r
+#define cs_name (max_command + 7 )\r
+#define convert (max_command + 8 )\r
+#define the (max_command + 9 )\r
+#define top_bot_mark (max_command + 10)\r
+#define call (max_command + 11)\r
+#define long_call (max_command + 12)\r
+#define outer_call (max_command + 13)\r
+#define long_outer_call (max_command + 14)\r
+#define end_template (max_command + 15)\r
+#define dont_expand (max_command + 16)\r
+#define glue_ref (max_command + 17)\r
+#define shape_ref (max_command + 18)\r
+#define box_ref (max_command + 19) \r
+#define data (max_command + 20)\r
+/* sec 0211 */\r
+#define vmode 1\r
+#define hmode (vmode + max_command + 1)\r
+#define mmode (hmode + max_command + 1)\r
+/* sec 0212 */\r
+#define ignore_depth -65536000L\r
+/* sec 0213 */\r
+#define mode cur_list.mode_field\r
+#define head cur_list.head_field\r
+#define tail cur_list.tail_field\r
+#define aux cur_list.aux_field\r
+#define prev_depth aux.cint\r
+#define space_factor aux.hh.lh\r
+#define clang aux.hh.rh\r
+#define incompleat_noad aux.cint\r
+#define prev_graf cur_list.pg_field\r
+#define mode_line cur_list.ml_field\r
+/* sec 0221 */\r
+#define eq_level_field(a) a.hh.b1\r
+#define eq_type_field(a) a.hh.b0\r
+#define equiv_field(a) a.hh.rh\r
+#define eq_level(a) eq_level_field(eqtb[a])\r
+#define eq_type(a) eq_type_field(eqtb[a])\r
+#define equiv(a) equiv_field(eqtb[a])\r
+#define level_zero min_quarterword\r
+#define level_one level_zero + 1\r
+/* sec 0222 */\r
+#define active_base 1 // 1\r
+#define single_base (active_base + 256) // 257\r
+#define null_cs (single_base + 256) // 513\r
+#define hash_base (null_cs + 1) // 514\r
+#define frozen_control_sequence (hash_base + hash_size + hash_extra) // (hash_size + hash_extra + 514)\r
+#define frozen_protection frozen_control_sequence // (hash_size + hash_extra + 514)\r
+#define frozen_cr (frozen_control_sequence + 1) // (hash_size + hash_extra + 515)\r
+#define frozen_end_group (frozen_control_sequence + 2) // (hash_size + hash_extra + 516)\r
+#define frozen_right (frozen_control_sequence + 3) // (hash_size + hash_extra + 517)\r
+#define frozen_fi (frozen_control_sequence + 4) // (hash_size + hash_extra + 518)\r
+#define frozen_end_template (frozen_control_sequence + 5) // (hash_size + hash_extra + 519)\r
+#define frozen_endv (frozen_control_sequence + 6) // (hash_size + hash_extra + 520)\r
+#define frozen_relax (frozen_control_sequence + 7) // (hash_size + hash_extra + 521)\r
+#define end_write (frozen_control_sequence + 8) // (hash_size + hash_extra + 522)\r
+#define frozen_dont_expand (frozen_control_sequence + 9) // (hash_size + hash_extra + 523)\r
+#define frozen_null_font (frozen_control_sequence + 10) // (hash_size + hash_extra + 524)\r
+#define font_id_base (frozen_null_font - font_base) // (hash_size + hash_extra + 524)\r
+#define undefined_control_sequence (frozen_null_font + font_max + 2) // (hash_size + 781)\r
+#define glue_base (undefined_control_sequence + 1) // (hash_size + 782)\r
+/* sec 0224 */\r
+#define line_skip_code 0 // 782\r
+#define baseline_skip_code 1 // 783\r
+#define par_skip_code 2 // 784\r
+#define above_display_skip_code 3 // 785\r
+#define below_display_skip_code 4 // 786\r
+#define above_display_short_skip_code 5 // 787\r
+#define below_display_short_skip_code 6 // 788\r
+#define left_skip_code 7 // 789\r
+#define right_skip_code 8 // 790\r
+#define top_skip_code 9 // 791\r
+#define split_top_skip_code 10 // 792\r
+#define tab_skip_code 11 // 793\r
+#define space_skip_code 12 // 794\r
+#define xspace_skip_code 13 // 795\r
+#define par_fill_skip_code 14 // 796\r
+#define thin_mu_skip_code 15 // 797\r
+#define med_mu_skip_code 16 // 798\r
+#define thick_mu_skip_code 17 // 799\r
+#define glue_pars 18 // 800\r
+#define skip_base (glue_base + glue_pars) // 800\r
+#define mu_skip_base (skip_base + 256) // 1056\r
+#define local_base (mu_skip_base + 256) // 1312\r
+// #\r
+#define skip(a) equiv(skip_base + a)\r
+#define mu_skip(a) equiv(mu_skip_base + a)\r
+#define glue_par(a) equiv(glue_base + a)\r
+#define line_skip glue_par(line_skip_code)\r
+#define baseline_skip glue_par(baseline_skip_code)\r
+#define par_skip glue_par(par_skip_code)\r
+#define above_display_skip glue_par(above_display_skip_code)\r
+#define below_display_skip glue_par(below_display_skip_code)\r
+#define above_display_short_skip glue_par(above_display_short_skip_code)\r
+#define below_display_short_skip glue_par(below_display_short_skip_code)\r
+#define left_skip glue_par(left_skip_code)\r
+#define right_skip glue_par(right_skip_code)\r
+#define top_skip glue_par(top_skip_code)\r
+#define split_top_skip glue_par(split_top_skip_code)\r
+#define tab_skip glue_par(tab_skip_code)\r
+#define space_skip glue_par(space_skip_code)\r
+#define xspace_skip glue_par(xspace_skip_code)\r
+#define par_fill_skip glue_par(par_fill_skip_code)\r
+#define thin_mu_skip glue_par(thin_mu_skip_code)\r
+#define med_mu_skip glue_par(med_mu_skip_code)\r
+#define thick_mu_skip glue_par(thick_mu_skip_code)\r
+/* sec 0230 */\r
+#define par_shape_loc local_base // 1312\r
+#define output_routine_loc (local_base + 1) // 1313\r
+#define every_par_loc (local_base + 2) // 1314\r
+#define every_math_loc (local_base + 3) // 1315\r
+#define every_display_loc (local_base + 4) // 1316\r
+#define every_hbox_loc (local_base + 5) // 1317\r
+#define every_vbox_loc (local_base + 6) // 1318\r
+#define every_job_loc (local_base + 7) // 1319\r
+#define every_cr_loc (local_base + 8) // 1320\r
+#define err_help_loc (local_base + 9) // 1321\r
+#define toks_base (local_base + 10) // 1322\r
+#define box_base (toks_base + 256) // 1578\r
+#define cur_font_loc (box_base + 256) // 1834\r
+#define math_font_base (cur_font_loc + 1) // 1835\r
+#define cat_code_base (math_font_base + 48) // 1883\r
+#define lc_code_base (cat_code_base + 256) // 2139\r
+#define uc_code_base (lc_code_base + 256) // 2395\r
+#define sf_code_base (uc_code_base + 256) // 2651\r
+#define math_code_base (sf_code_base + 256) // 2907\r
+#define int_base (math_code_base + 256) // 3163\r
+// #\r
+#define par_shape_ptr equiv(par_shape_loc)\r
+#define output_routine equiv(output_routine_loc)\r
+#define every_par equiv(every_par_loc)\r
+#define every_math equiv(every_math_loc)\r
+#define every_display equiv(every_display_loc)\r
+#define every_hbox equiv(every_hbox_loc)\r
+#define every_vbox equiv(every_vbox_loc)\r
+#define every_job equiv(every_job_loc)\r
+#define every_cr equiv(every_cr_loc)\r
+#define err_help equiv(err_help_loc)\r
+#define toks(a) equiv(toks_base + a)\r
+#define box(a) equiv(box_base + a)\r
+#define cur_font equiv(cur_font_loc)\r
+#define fam_fnt(a) equiv(math_font_base + a)\r
+#define cat_code(a) equiv(cat_code_base + a)\r
+#define lc_code(a) equiv(lc_code_base + a)\r
+#define uc_code(a) equiv(uc_code_base + a)\r
+#define sf_code(a) equiv(sf_code_base + a)\r
+#define math_code(a) equiv(math_code_base + a)\r
+/* sec 0232 */\r
+#define null_font font_base\r
+#define var_code 070000\r
+/* sec 0236 */\r
+#define pretolerance_code 0 // 3163\r
+#define tolerance_code 1 // 3164\r
+#define line_penalty_code 2 // 3165\r
+#define hyphen_penalty_code 3 // 3166\r
+#define ex_hyphen_penalty_code 4 // 3167\r
+#define club_penalty_code 5 // 3168\r
+#define widow_penalty_code 6 // 3169\r
+#define display_widow_penalty_code 7 // 3170\r
+#define broken_penalty_code 8 // 3171\r
+#define bin_op_penalty_code 9 // 3172\r
+#define rel_penalty_code 10 // 3173\r
+#define pre_display_penalty_code 11 // 3174\r
+#define post_display_penalty_code 12 // 3175\r
+#define inter_line_penalty_code 13 // 3176\r
+#define double_hyphen_demerits_code 14 // 3177\r
+#define final_hyphen_demerits_code 15 // 3178\r
+#define adj_demerits_code 16 // 3179\r
+#define mag_code 17 // 3180\r
+#define delimiter_factor_code 18 // 3181\r
+#define looseness_code 19 // 3182\r
+#define time_code 20 // 3183\r
+#define day_code 21 // 3184\r
+#define month_code 22 // 3185\r
+#define year_code 23 // 3186\r
+#define show_box_breadth_code 24 // 3187\r
+#define show_box_depth_code 25 // 3188\r
+#define hbadness_code 26 // 3189\r
+#define vbadness_code 27 // 3190\r
+#define pausing_code 28 // 3191\r
+#define tracing_online_code 29 // 3192\r
+#define tracing_macros_code 30 // 3193\r
+#define tracing_stats_code 31 // 3194\r
+#define tracing_paragraphs_code 32 // 3195\r
+#define tracing_pages_code 33 // 3196\r
+#define tracing_output_code 34 // 3197\r
+#define tracing_lost_chars_code 35 // 3198\r
+#define tracing_commands_code 36 // 3199 \r
+#define tracing_restores_code 37 // 3200\r
+#define uc_hyph_code 38 // 3201\r
+#define output_penalty_code 39 // 3202\r
+#define max_dead_cycles_code 40 // 3203\r
+#define hang_after_code 41 // 3204\r
+#define floating_penalty_code 42 // 3205\r
+#define global_defs_code 43 // 3206\r
+#define cur_fam_code 44 // 3207\r
+#define escape_char_code 45 // 3208\r
+#define default_hyphen_char_code 46 // 3209\r
+#define default_skew_char_code 47 // 3210\r
+#define end_line_char_code 48 // 3211\r
+#define new_line_char_code 49 // 3212\r
+#define language_code 50 // 3213\r
+#define left_hyphen_min_code 51 // 3214\r
+#define right_hyphen_min_code 52 // 3215\r
+#define holding_inserts_code 53 // 3216\r
+#define error_context_lines_code 54 // 3217\r
+#define int_pars 55\r
+#define count_base (int_base + int_pars) // 3218\r
+#define del_code_base (count_base + 256) // 3474\r
+#define dimen_base (del_code_base + 256) // 3730\r
+// #\r
+#define del_code(a) eqtb[del_code_base + a].cint\r
+#define count(a) eqtb[count_base + a].cint\r
+#define int_par(a) eqtb[int_base + a].cint\r
+#define pretolerance int_par(pretolerance_code)\r
+#define tolerance int_par(tolerance_code)\r
+#define line_penalty int_par(line_penalty_code)\r
+#define hyphen_penalty int_par(hyphen_penalty_code)\r
+#define ex_hyphen_penalty int_par(ex_hyphen_penalty_code)\r
+#define club_penalty int_par(club_penalty_code)\r
+#define widow_penalty int_par(widow_penalty_code)\r
+#define display_widow_penalty int_par(display_widow_penalty_code)\r
+#define broken_penalty int_par(broken_penalty_code)\r
+#define bin_op_penalty int_par(bin_op_penalty_code)\r
+#define rel_penalty int_par(rel_penalty_code)\r
+#define pre_display_penalty int_par(pre_display_penalty_code)\r
+#define post_display_penalty int_par(post_display_penalty_code)\r
+#define inter_line_penalty int_par(inter_line_penalty_code)\r
+#define double_hyphen_demerits int_par(double_hyphen_demerits_code)\r
+#define final_hyphen_demerits int_par(final_hyphen_demerits_code)\r
+#define adj_demerits int_par(adj_demerits_code)\r
+#define mag int_par(mag_code)\r
+#define delimiter_factor int_par(delimiter_factor_code)\r
+#define looseness int_par(looseness_code)\r
+#define tex_time int_par(time_code)\r
+#define day int_par(day_code)\r
+#define month int_par(month_code)\r
+#define year int_par(year_code)\r
+#define show_box_breadth int_par(show_box_breadth_code)\r
+#define show_box_depth int_par(show_box_depth_code)\r
+#define hbadness int_par(hbadness_code)\r
+#define vbadness int_par(vbadness_code)\r
+#define pausing int_par(pausing_code)\r
+#define tracing_online int_par(tracing_online_code)\r
+#define tracing_macros int_par(tracing_macros_code)\r
+#define tracing_stats int_par(tracing_stats_code)\r
+#define tracing_paragraphs int_par(tracing_paragraphs_code)\r
+#define tracing_pages int_par(tracing_pages_code)\r
+#define tracing_output int_par(tracing_output_code)\r
+#define tracing_lost_chars int_par(tracing_lost_chars_code)\r
+#define tracing_commands int_par(tracing_commands_code)\r
+#define tracing_restores int_par(tracing_restores_code)\r
+#define uc_hyph int_par(uc_hyph_code)\r
+#define output_penalty int_par(output_penalty_code)\r
+#define max_dead_cycles int_par(max_dead_cycles_code)\r
+#define hang_after int_par(hang_after_code)\r
+#define floating_penalty int_par(floating_penalty_code)\r
+#define global_defs int_par(global_defs_code)\r
+#define cur_fam int_par(cur_fam_code)\r
+#define escape_char int_par(escape_char_code)\r
+#define default_hyphen_char int_par(default_hyphen_char_code)\r
+#define default_skew_char int_par(default_skew_char_code)\r
+#define end_line_char int_par(end_line_char_code)\r
+#define new_line_char int_par(new_line_char_code)\r
+#define language int_par(language_code)\r
+#define left_hyphen_min int_par(left_hyphen_min_code)\r
+#define right_hyphen_min int_par(right_hyphen_min_code)\r
+#define holding_inserts int_par(holding_inserts_code)\r
+#define error_context_lines int_par(error_context_lines_code)\r
+/* sec 0247 */\r
+#define par_indent_code 0 // 3730\r
+#define math_surround_code 1 // 3731\r
+#define line_skip_limit_code 2 // 3732\r
+#define hsize_code 3 // 3733\r
+#define vsize_code 4 // 3734\r
+#define max_depth_code 5 // 3735\r
+#define split_max_depth_code 6 // 3736\r
+#define box_max_depth_code 7 // 3737\r
+#define hfuzz_code 8 // 3738\r
+#define vfuzz_code 9 // 3739\r
+#define delimiter_shortfall_code 10 // 3740\r
+#define null_delimiter_space_code 11 // 3741\r
+#define script_space_code 12 // 3742\r
+#define pre_display_size_code 13 // 3743\r
+#define display_width_code 14 // 3744\r
+#define display_indent_code 15 // 3745\r
+#define overfull_rule_code 16 // 3746\r
+#define hang_indent_code 17 // 3747\r
+#define h_offset_code 18 // 3748\r
+#define v_offset_code 19 // 3749\r
+#define emergency_stretch_code 20 // 3750\r
+#define dimen_pars 21\r
+#define scaled_base (dimen_base + dimen_pars) // 3751\r
+#define eqtb_size (scaled_base + 255) // 4006\r
+// #\r
+#define dimen(a) eqtb[scaled_base + a].cint\r
+#define dimen_par(a) eqtb[dimen_base + a].cint\r
+#define par_indent dimen_par(par_indent_code)\r
+#define math_surround dimen_par(math_surround_code)\r
+#define line_skip_limit dimen_par(line_skip_limit_code)\r
+#define hsize dimen_par(hsize_code)\r
+#define vsize dimen_par(vsize_code)\r
+#define max_depth dimen_par(max_depth_code)\r
+#define split_max_depth dimen_par(split_max_depth_code)\r
+#define box_max_depth dimen_par(box_max_depth_code)\r
+#define hfuzz dimen_par(hfuzz_code)\r
+#define vfuzz dimen_par(vfuzz_code)\r
+#define delimiter_shortfall dimen_par(delimiter_shortfall_code)\r
+#define null_delimiter_space dimen_par(null_delimiter_space_code)\r
+#define script_space dimen_par(script_space_code)\r
+#define pre_display_size dimen_par(pre_display_size_code)\r
+#define display_width dimen_par(display_width_code)\r
+#define display_indent dimen_par(display_indent_code)\r
+#define overfull_rule dimen_par(overfull_rule_code)\r
+#define hang_indent dimen_par(hang_indent_code)\r
+#define h_offset dimen_par(h_offset_code)\r
+#define v_offset dimen_par(v_offset_code)\r
+#define emergency_stretch dimen_par(emergency_stretch_code)\r
+/* sec 0256 */\r
+#define text(a) hash[a].rh\r
+#define next(a) hash[a].lh\r
+#define hash_is_full (hash_used == hash_base)\r
+#define font_id_text(a) text(font_id_base + a)\r
+/* sec 0268 */\r
+#define save_type(a) save_stack[a].hh.b0\r
+#define save_level(a) save_stack[a].hh.b1\r
+#define save_index(a) save_stack[a].hh.rh\r
+#define restore_old_value 0\r
+#define restore_zero 1\r
+#define insert_token 2\r
+#define level_boundary 3\r
+/* sec 0269 */\r
+#define bottom_level 0\r
+#define simple_group 1\r
+#define hbox_group 2\r
+#define adjust_hbox_group 3\r
+#define vbox_group 4\r
+#define vtop_group 5\r
+#define align_group 6\r
+#define no_align_group 7\r
+#define output_group 8\r
+#define math_group 9\r
+#define disc_group 10\r
+#define insert_group 11\r
+#define vcenter_group 12\r
+#define math_choice_group 13\r
+#define semi_simple_group 14\r
+#define math_shift_group 15\r
+#define math_left_group 16\r
+#define max_group_code 16\r
+/* sec 0274 */\r
+#define saved(a) save_stack[save_ptr + (a)].cint\r
+/* sec 0289 */\r
+#define cs_token_flag 07777 // 4095\r
+#define left_brace_token 0400 // 256 = 2^8 * left_brace\r
+#define left_brace_limit 01000 // 512 = 2^8 * (left_brace + 1)\r
+#define right_brace_token 01000 // 512 = 2^8 * right_brace\r
+#define right_brace_limit 01400 // 768 = 2^8 * (right_brace + 1)\r
+#define math_shift_token 01400 // 768 = 2^8 * math_shift\r
+#define tab_token 02000 // 1024 = 2^8 * tab_mark\r
+#define out_param_token 02400 // 1280 = 2^8 * out_param\r
+#define space_token 05040 // 2592 = 2^8 * spacer + ' '\r
+#define letter_token 05400 // 2816 = 2^8 * letter\r
+#define other_token 06000 // 3072 = 2^8 * other_char\r
+#define match_token 06400 // 3328 = 2^8 * match\r
+#define end_match_token 07000 // 3584 = 2^8 * end_match\r
+/* sec 0298 */\r
+#define chr_cmd(s) \\r
+do \\r
+{ \\r
+ prints(s); \\r
+ print(chr_code); \\r
+} \\r
+while (0)\r
+/* sec 0302 */\r
+#define state cur_input.state_field\r
+#define index cur_input.index_field\r
+#define start cur_input.start_field\r
+#define limit cur_input.limit_field\r
+#define name cur_input.name_field\r
+/* sec 0303 */\r
+#define mid_line 1\r
+#define skip_blanks 2 + max_char_code // 17\r
+#define new_line 3 + max_char_code + max_char_code // 33\r
+/* sec 0304 */\r
+#define cur_file input_file[index]\r
+/* sec 0305 */\r
+#define skipping 1\r
+#define defining 2\r
+#define matching 3\r
+#define aligning 4\r
+#define absorbing 5\r
+/* sec 0307 */\r
+#define token_list 0\r
+#define token_type index\r
+#define param_start limit\r
+#define parameter 0\r
+#define u_template 1\r
+#define v_template 2\r
+#define backed_up 3\r
+#define inserted 4\r
+#define macro 5\r
+#define output_text 6\r
+#define every_par_text 7\r
+#define every_math_text 8\r
+#define every_display_text 9\r
+#define every_hbox_text 10\r
+#define every_vbox_text 11\r
+#define every_job_text 12\r
+#define every_cr_text 13\r
+#define mark_text 14\r
+#define write_text 15\r
+/* sec 0316 */\r
+#define begin_pseudoprint() \\r
+do \\r
+{ \\r
+ l = tally; \\r
+ tally = 0; \\r
+ selector = pseudo; \\r
+ trick_count = 1000000L; \\r
+} \\r
+while (0)\r
+#define set_trick_count() \\r
+do \\r
+{ \\r
+ first_count = tally; \\r
+ trick_count = tally + 1 + error_line - half_error_line; \\r
+ \\r
+ if (trick_count < error_line) \\r
+ trick_count = error_line; \\r
+} \\r
+while (0)\r
+/* sec 0322 */\r
+/* sec 0323 */\r
+#define back_list(a) begin_token_list(a, backed_up)\r
+#define ins_list(a) begin_token_list(a, inserted)\r
+/* sec 0344 */\r
+#define any_state_plus(a) mid_line + (a): case skip_blanks + (a): case new_line + (a)\r
+/* sec 0347 */\r
+#define add_delims_to(a) \\r
+ (a) + math_shift: \\r
+ case (a) + tab_mark: \\r
+ case (a) + mac_param: \\r
+ case (a) + sub_mark: \\r
+ case (a) + letter: \\r
+ case (a) + other_char\r
+/* sec 0352 */\r
+#define is_hex(a) \\r
+ (((a >= '0') && (a <= '9')) || ((a >= 'a') && (a <= 'f')))\r
+#define hex_to_cur_chr() \\r
+do \\r
+{ \\r
+ if (c <= '9') \\r
+ cur_chr = c - '0'; \\r
+ else \\r
+ cur_chr = c - 'a' + 10; \\r
+ \\r
+ if (cc <= '9') \\r
+ cur_chr = 16 * cur_chr + cc - '0'; \\r
+ else \\r
+ cur_chr = 16 * cur_chr + cc - 'a' + 10; \\r
+} \\r
+while (0)\r
+/* sec 0360 */\r
+#define end_line_char_inactive() \\r
+ (end_line_char < 0) || (end_line_char > 255)\r
+/* sec 0358 */\r
+/* sec 0371 */\r
+#define store_new_token(a) \\r
+ do \\r
+ { \\r
+ q = get_avail(); \\r
+ link(p) = q; \\r
+ info(q) = a; \\r
+ p = q; \\r
+ } \\r
+ while (0)\r
+#define fast_store_new_token(a) \\r
+ do \\r
+ { \\r
+ fast_get_avail(q); \\r
+ link(p) = q; \\r
+ info(q) = a; \\r
+ p = q; \\r
+ } \\r
+ while (0)\r
+#define no_expand_flag 257\r
+/* sec 0382 */\r
+#define top_mark_code 0\r
+#define first_mark_code 1\r
+#define bot_mark_code 2\r
+#define split_first_mark_code 3\r
+#define split_bot_mark_code 4\r
+#define top_mark cur_mark[top_mark_code]\r
+#define first_mark cur_mark[first_mark_code]\r
+#define bot_mark cur_mark[bot_mark_code]\r
+#define split_first_mark cur_mark[split_first_mark_code]\r
+#define split_bot_mark cur_mark[split_bot_mark_code]\r
+/* sec 0400 */\r
+#define int_val 0\r
+#define dimen_val 1\r
+#define glue_val 2\r
+#define mu_val 3\r
+#define ident_val 4\r
+#define tok_val 5\r
+/* sec 0413 */\r
+#define scanned_result(va, vb) \\r
+do \\r
+ { \\r
+ cur_val = va; \\r
+ cur_val_level = vb; \\r
+ } \\r
+while (0)\r
+/* sec 0416 */\r
+#define input_line_no_code (glue_val + 1)\r
+#define badness_code (glue_val + 2)\r
+/* sec 0421 */\r
+#define max_dimen 07777777777\r
+/* sec 0438 */\r
+#define octal_token (other_token + '\'') // 3111\r
+#define hex_token (other_token + '"' ) // 3106\r
+#define alpha_token (other_token + '`' ) // 3168\r
+#define point_token (other_token + '.' ) // 3118\r
+#define continental_point_token (other_token + ',' ) // 3116\r
+/* sec 0445 */\r
+#define zero_token (other_token + '0') // 3120\r
+#define A_token (letter_token + 'A') // 2881\r
+#define other_A_token (other_token + 'A') // 3137\r
+/* sec 0458 */\r
+#define set_conversion(a, b) \\r
+ do \\r
+ { \\r
+ num = a; \\r
+ denom = b; \\r
+ } while (0)\r
+/* sec 0468 */\r
+#define number_code 0\r
+#define roman_numeral_code 1\r
+#define string_code 2\r
+#define meaning_code 3\r
+#define font_name_code 4\r
+#define job_name_code 5\r
+/* sec 0480 */\r
+#define closed 2\r
+#define just_open 1\r
+/* sec 0487 */\r
+#define if_char_code 0\r
+#define if_cat_code 1\r
+#define if_int_code 2\r
+#define if_dim_code 3\r
+#define if_odd_code 4\r
+#define if_vmode_code 5\r
+#define if_hmode_code 6\r
+#define if_mmode_code 7\r
+#define if_inner_code 8\r
+#define if_void_code 9\r
+#define if_hbox_code 10\r
+#define if_vbox_code 11\r
+#define ifx_code 12\r
+#define if_eof_code 13\r
+#define if_true_code 14\r
+#define if_false_code 15\r
+#define if_case_code 16\r
+/* sec 0489 */\r
+#define if_node_size 2\r
+#define if_line_field(a) mem[(a) + 1].cint\r
+#define if_code 1\r
+#define fi_code 2\r
+#define else_code 3\r
+#define or_code 4\r
+/* sec 0506 */\r
+#define get_x_token_or_active_char() \\r
+do \\r
+{ \\r
+ get_x_token(); \\r
+ \\r
+ if (cur_cmd == relax) \\r
+ if (cur_chr == no_expand_flag) \\r
+ { \\r
+ cur_cmd = active_char; \\r
+ cur_chr = cur_tok - cs_token_flag - active_base; \\r
+ } \\r
+} \\r
+while (0)\r
+/* sec 0519 */\r
+#define append_to_name(a) \\r
+do \\r
+{ \\r
+ c = a; incr(k); \\r
+ \\r
+ if (k < file_name_size) \\r
+ name_of_file[k] = xchr[c]; \\r
+} \\r
+while (0)\r
+/* sec 0544 */\r
+#define no_tag 0\r
+#define lig_tag 1\r
+#define list_tag 2\r
+#define ext_tag 3\r
+/* sec 0545 */\r
+#define stop_flag 128\r
+#define kern_flag 128\r
+#define skip_byte(a) a.b0\r
+#define next_char(a) a.b1\r
+#define op_byte(a) a.b2\r
+#define rem_byte(a) a.b3\r
+/* sec 0546 */\r
+#define ext_top(a) a.b0\r
+#define ext_mid(a) a.b1\r
+#define ext_bot(a) a.b2\r
+#define ext_rep(a) a.b3\r
+/* sec 0547 */\r
+#define slant_code 1\r
+#define space_code 2\r
+#define space_stretch_code 3\r
+#define space_shrink_code 4\r
+#define x_height_code 5\r
+#define quad_code 6\r
+#define extra_space_code 7\r
+/* sec 0549 */\r
+#define non_char 256\r
+#define non_address 0\r
+/* sec 0554 */\r
+#define char_info(a, b) font_info[char_base[a] + b].qqqq\r
+#define char_width(a, b) font_info[width_base[a] + b.b0].cint\r
+#define char_exists(a) (a.b0 > min_quarterword)\r
+#define char_italic(a, b) font_info[italic_base[a] + (b.b2) / 4].cint\r
+#define height_depth(a) (a.b1)\r
+#define char_height(a, b) font_info[height_base[a] + (b) / 16].cint\r
+#define char_depth(a, b) font_info[depth_base[a] + (b) % 16].cint\r
+#define char_tag(a) (a.b2 % 4)\r
+/* sec 0557 */\r
+#define char_kern(a, b) font_info[kern_base[a] + 256 * op_byte(b) + rem_byte(b)].cint\r
+#define kern_base_offset (256 * (128 + min_quarterword))\r
+#define lig_kern_start(a, b) lig_kern_base[a] + rem_byte(b)\r
+#define lig_kern_restart(a, b) lig_kern_base[a] + 256 * op_byte(b) + rem_byte(b) + 32768 - kern_base_offset\r
+/* sec 0558 */\r
+#define param(a, b) font_info[a + param_base[b]].cint\r
+#define slant(f) param(slant_code, f)\r
+#define space(f) param(space_code, f)\r
+#define space_stretch(f) param(space_stretch_code, f)\r
+#define space_shrink(f) param(space_shrink_code, f)\r
+#define x_height(f) param(x_height_code, f)\r
+#define quad(f) param(quad_code, f)\r
+#define extra_space(f) param(extra_space_code, f)\r
+/* sec 0561 */\r
+#define start_font_error_message() \\r
+do \\r
+{ \\r
+ print_err("Font "); \\r
+ sprint_cs(u); \\r
+ print_char('='); \\r
+ print_file_name(nom, aire, 335); \\r
+ \\r
+ if (s >= 0) \\r
+ { \\r
+ prints(" at "); \\r
+ print_scaled(s); \\r
+ prints("pt"); \\r
+ } \\r
+ else if (s != -1000) \\r
+ { \\r
+ prints(" scaled "); \\r
+ print_int(-(integer)s); \\r
+ } \\r
+} \\r
+while (0)\r
+/* sec 0564 */\r
+#define read_sixteen(a) \\r
+do \\r
+ { \\r
+ a = fbyte; \\r
+ \\r
+ if (a > 127) \\r
+ goto bad_tfm; \\r
+ \\r
+ fget(); \\r
+ a = a * 256 + fbyte;\\r
+ } \\r
+while (0)\r
+#define store_four_quarters(val) \\r
+do \\r
+ { \\r
+ fget(); a = fbyte; qw.b0 = a; \\r
+ fget(); b = fbyte; qw.b1 = b; \\r
+ fget(); c = fbyte; qw.b2 = c; \\r
+ fget(); d = fbyte; qw.b3 = d; \\r
+ val = qw; \\r
+ } \\r
+while (0)\r
+/* sec 0570 */\r
+#define check_byte_range(a) \\r
+do \\r
+{ \\r
+ if ((a < bc) || (a > ec)) \\r
+ goto bad_tfm; \\r
+} \\r
+ while (0)\r
+/* sec 0571 */\r
+#define store_scaled(a) \\r
+do \\r
+{ \\r
+ fget(); a = fbyte; fget(); b = fbyte; \\r
+ fget(); c = fbyte; fget(); d = fbyte; \\r
+ sw = (((((d * z) / 256) + (c * z)) / 256) + (b * z)) / beta;\\r
+ \\r
+ if (a == 0) \\r
+ a = sw; \\r
+ else if (a == 255) \\r
+ a = sw - alpha; \\r
+ else \\r
+ goto bad_tfm; \\r
+} \\r
+while (0)\r
+/* sec 0573 */\r
+#define check_existence(a) \\r
+do \\r
+{ \\r
+ check_byte_range(a); \\r
+ \\r
+ qw = char_info(f, a); \\r
+ \\r
+ if (!char_exists(qw)) \\r
+ goto bad_tfm; \\r
+} \\r
+while (0)\r
+/* sec 0576 */\r
+#define adjust(a) a[f] = a[f]\r
+/* sec 0585 */\r
+#define set1 128 // c[1]\r
+#define set2 129 // c[2]\r
+#define set3 130 // c[3]\r
+#define set4 131 // c[4]\r
+#define set_rule 132 // a[4] b[4]\r
+#define put1 133 // c[1]\r
+#define put2 134 // c[2]\r
+#define put3 135 // c[3]\r
+#define put4 136 // c[4]\r
+#define put_rule 137 // a[4] b[4]\r
+#define nop 138 // NULL\r
+#define bop 139 // c0[4] c1[4] ... c9[4] p[4]\r
+#define eop 140 // NULL\r
+#define push 141\r
+#define pop 142\r
+#define right1 143 // b[1]\r
+#define right2 144 // b[2]\r
+#define right3 145 // b[3]\r
+#define right4 146 // b[4]\r
+#define w0 147 //\r
+#define w1 148 // b[1]\r
+#define w2 149 // b[2]\r
+#define w3 150 // b[3]\r
+#define w4 151 // b[4]\r
+#define x0 152 //\r
+#define x1 153 // b[1]\r
+#define x2 154 // b[2]\r
+#define x3 155 // b[3]\r
+#define x4 156 // b[4]\r
+#define down1 157 // a[1]\r
+#define down2 158 // a[2]\r
+#define down3 159 // a[3]\r
+#define down4 160 // a[4]\r
+#define y0 161 //\r
+#define y1 162 // a[1]\r
+#define y2 163 // a[2]\r
+#define y3 164 // a[3]\r
+#define y4 165 // a[4]\r
+#define z0 166 //\r
+#define z1 167 // a[1]\r
+#define z2 168 // a[2]\r
+#define z3 169 // a[3]\r
+#define z4 170 // a[4]\r
+#define fnt_num_0 171 //\r
+#define fnt1 235 // k[1]\r
+#define fnt2 236 // k[2]\r
+#define fnt3 237 // k[3]\r
+#define fnt4 238 // k[4]\r
+#define xxx1 239 // k[1] x[k]\r
+#define xxx2 240 // k[2] x[k]\r
+#define xxx3 241 // k[3] x[k]\r
+#define xxx4 242 // k[4] x[k]\r
+#define fnt_def1 243 // k[1] c[4] s[4] d[4] a[1] l[1] n[a + l]\r
+#define fnt_def2 244 // k[2] c[4] s[4] d[4] a[1] l[1] n[a + l]\r
+#define fnt_def3 245 // k[3] c[4] s[4] d[4] a[1] l[1] n[a + l]\r
+#define fnt_def4 246 // k[4] c[4] s[4] d[4] a[1] l[1] n[a + l]\r
+#define pre 247 // i[1] num[4] den[4] mag[4] k[1] x[k]\r
+#define post 248 //\r
+#define post_post 249 //\r
+/* sec 0587 */\r
+#define id_byte 2\r
+/* sec 0605 */\r
+#define movement_node_size 3\r
+#define location(a) mem[a + 2].cint\r
+/* sec 0608 */\r
+#define y_here 1\r
+#define z_here 2\r
+#define yz_OK 3\r
+#define y_OK 4\r
+#define z_OK 5\r
+#define d_fixed 6\r
+/* sec 0611 */\r
+#define none_seen 0\r
+#define y_seen 6\r
+#define z_seen 12\r
+/* sec 0625 */\r
+#define billion 1000000000.0\r
+#define vet_glue(a) \\r
+do \\r
+{ \\r
+ glue_temp = a; \\r
+ if (glue_temp > billion) \\r
+ glue_temp = billion; \\r
+ else if (glue_temp < -billion)\\r
+ glue_temp = -billion; \\r
+} \\r
+while (0)\r
+/* sec 0644 */\r
+#define exactly 0\r
+#define additional 1\r
+#define natural 0, additional\r
+/* sec 0769 */\r
+#define u_part(a) mem[(a) + height_offset].cint\r
+#define v_part(a) mem[(a) + depth_offset].cint\r
+#define extra_info(a) info((a) + list_offset)\r
+/* sec 0681 */\r
+#define noad_size 4\r
+#define nucleus(a) ((a) + 1)\r
+#define supscr(a) ((a) + 2)\r
+#define subscr(a) ((a) + 3)\r
+#define math_type link\r
+#define fam font\r
+#define math_char 1\r
+#define sub_box 2\r
+#define sub_mlist 3\r
+#define math_text_char 4\r
+/* sec 0682 */\r
+#define ord_noad (unset_node + 3) // 16\r
+#define op_noad (ord_noad + 1 ) // 17\r
+#define bin_noad (ord_noad + 2 ) // 18\r
+#define rel_noad (ord_noad + 3 ) // 19\r
+#define open_noad (ord_noad + 4 ) // 20\r
+#define close_noad (ord_noad + 5 ) // 21\r
+#define punct_noad (ord_noad + 6 ) // 22\r
+#define inner_noad (ord_noad + 7 ) // 23\r
+#define limits 1\r
+#define no_limits 2\r
+/* sec 0683 */\r
+#define left_delimiter(a) ((a) + 4)\r
+#define right_delimiter(a) ((a) + 5)\r
+#define radical_noad (inner_noad + 1) // 24\r
+#define radical_noad_size 5\r
+#define fraction_noad (radical_noad + 1) // 25\r
+#define fraction_noad_size 6\r
+#define small_fam(a) mem[(a)].qqqq.b0\r
+#define small_char(a) mem[(a)].qqqq.b1\r
+#define large_fam(a) mem[(a)].qqqq.b2\r
+#define large_char(a) mem[(a)].qqqq.b3\r
+#define thickness width\r
+#define default_code 010000000000L\r
+#define numerator supscr\r
+#define denominator subscr\r
+/* sec 0687 */\r
+#define under_noad (fraction_noad + 1) // 26\r
+#define over_noad (under_noad + 1 ) // 27\r
+#define accent_noad (over_noad + 1 ) // 28\r
+#define accent_noad_size 5\r
+#define accent_chr(a) (a) + 4\r
+#define vcenter_noad (accent_noad + 1 ) // 29\r
+#define left_noad (vcenter_noad + 1 ) // 30\r
+#define right_noad (left_noad + 1 ) // 31\r
+#define delimiter nucleus\r
+#define script_allowed(a) ((type(a) >= ord_noad) && (type(a) < left_noad))\r
+/* sec 0688 */\r
+#define style_node (unset_node + 1)\r
+#define style_node_size 3\r
+#define display_style 0\r
+#define text_style 2\r
+#define script_style 4\r
+#define script_script_style 6\r
+#define cramped 1\r
+/* sec 0689 */\r
+#define choice_node (unset_node + 2)\r
+#define display_mlist(a) info(a + 1)\r
+#define text_mlist(a) link(a + 1)\r
+#define script_mlist(a) info(a + 2)\r
+#define script_script_mlist(a) link(a + 2)\r
+/* sec 0699 */\r
+#define text_size 0\r
+#define script_size 16\r
+#define script_script_size 32\r
+/* sec 0700 */\r
+#define mathsy(a, b) font_info[a + param_base[fam_fnt(2 + b)]].cint\r
+#define math_x_height(a) mathsy(5, a)\r
+#define math_quad(a) mathsy(6, a)\r
+#define num1(a) mathsy(8, a)\r
+#define num2(a) mathsy(9, a)\r
+#define num3(a) mathsy(10, a)\r
+#define denom1(a) mathsy(11, a)\r
+#define denom2(a) mathsy(12, a)\r
+#define sup1(a) mathsy(13, a)\r
+#define sup2(a) mathsy(14, a)\r
+#define sup3(a) mathsy(15, a)\r
+#define sub1(a) mathsy(16, a)\r
+#define sub2(a) mathsy(17, a)\r
+#define sup_drop(a) mathsy(18, a)\r
+#define sub_drop(a) mathsy(19, a)\r
+#define delim1(a) mathsy(20, a)\r
+#define delim2(a) mathsy(21, a)\r
+#define axis_height(a) mathsy(22, a)\r
+#define total_mathsy_params 22\r
+/* sec 0701 */\r
+#define mathex(a) font_info[(a) + param_base[fam_fnt(3 + cur_size)]].cint\r
+#define default_rule_thickness mathex(8)\r
+#define big_op_spacing1 mathex(9)\r
+#define big_op_spacing2 mathex(10)\r
+#define big_op_spacing3 mathex(11)\r
+#define big_op_spacing4 mathex(12)\r
+#define big_op_spacing5 mathex(13)\r
+#define total_mathex_params 13\r
+/* sec 0702 */\r
+#define cramped_style(a) (2 * ((a) / 2) + cramped)\r
+#define sub_style(a) (2 * ((a) / 4) + script_style + cramped)\r
+#define sup_style(a) (2 * ((a) / 4) + script_style + ((a) % 2))\r
+#define num_style(a) ((a) + 2 - 2 * ((a) / 6))\r
+#define denom_style(a) (2 * ((a) / 2) + cramped + 2 - 2 * ((a) / 6))\r
+/* sec 0716 */\r
+#define mu_mult(a) nx_plus_y(n, a, xn_over_d(a, f, 0200000))\r
+/* sec 0725 */\r
+#define new_hlist(a) mem[nucleus(a)].cint\r
+/* sec 0731 */\r
+#define choose_mlist(a) \\r
+do \\r
+{ \\r
+ p = a(q); \\r
+ a(q) = 0; \\r
+} \\r
+while (0)\r
+/* sec 0770 */\r
+#define preamble link(align_head)\r
+#define align_stack_node_size 5\r
+/* sec 0780 */\r
+#define span_code 256\r
+#define cr_code 257\r
+#define cr_cr_code (cr_code + 1)\r
+#define end_template_token (cs_token_flag + frozen_end_template)\r
+/* sec 0797 */\r
+#define span_node_size 2\r
+/* sec 0817 */\r
+#define tight_fit 3\r
+#define loose_fit 1\r
+#define very_loose_fit 0\r
+#define decent_fit 2\r
+/* sec 0819 */\r
+#define active_node_size 3\r
+#define fitness subtype\r
+#define break_node rlink\r
+#define line_number llink\r
+#define total_demerits(a) mem[a + 2].cint\r
+#define unhyphenated 0\r
+#define hyphenated 1\r
+#define last_active active\r
+/* sec 0821 */\r
+#define passive_node_size 2\r
+#define cur_break rlink\r
+#define prev_break llink\r
+#define serial info\r
+/* sec 0822 */\r
+#define delta_node_size 7\r
+#define delta_node 2\r
+/* sec 0823 */\r
+#define do_all_six(a) \\r
+do \\r
+{ \\r
+ a(1); a(2); a(3); \\r
+ a(4); a(5); a(6); \\r
+} \\r
+while (0)\r
+/* sec 0825 */\r
+#define check_shrinkage(s) \\r
+do \\r
+{ \\r
+ if ((shrink_order(s) != normal) && (shrink(s) != 0))\\r
+ s = finite_shrink(s); \\r
+} \\r
+while (0)\r
+/* sec 0829 */\r
+#define copy_to_cur_active(a) cur_active_width[a] = active_width[a]\r
+/* sec 0832 */\r
+#define update_width(a) cur_active_width[a] = cur_active_width[a] + mem[r + (a)].cint\r
+/* sec 0833 */\r
+#define awful_bad 07777777777\r
+/* sec 0837 */\r
+#define set_break_width_to_background(a) break_width[a] = background[a]\r
+/* sec 0843 */\r
+#define convert_to_break_width(a) mem[prev_r + (a)].cint = mem[prev_r + (a)].cint - cur_active_width[a] + break_width[a]\r
+#define store_break_width(a) active_width[a] = break_width[a]\r
+#define new_delta_to_break_width(a) mem[q + (a)].cint = break_width[(a)] - cur_active_width[(a)]\r
+/* sec 0844 */\r
+#define new_delta_from_break_width(a) mem[q + (a)].cint = cur_active_width[(a)] - break_width[(a)]\r
+/* sec 0860 */\r
+#define combine_two_deltas(a) mem[prev_r + (a)].cint = mem[prev_r + (a)].cint + mem[r + (a)].cint\r
+#define downdate_width(a) cur_active_width[(a)] = cur_active_width[(a)] - mem[prev_r + (a)].cint\r
+/* sec 0861 */\r
+#define update_active(a) active_width[(a)] = active_width[(a)] + mem[r + (a)].cint\r
+/* sec 0864 */\r
+#define store_background(a) active_width[a] = background[a]\r
+/* sec 0866 */\r
+#define act_width active_width[1]\r
+#define kern_break() \\r
+do \\r
+{ \\r
+ if (!is_char_node(link(cur_p)) && auto_breaking) \\r
+ if (type(link(cur_p)) == glue_node) \\r
+ try_break(0, unhyphenated); \\r
+ \\r
+ act_width = act_width + width(cur_p); \\r
+} \\r
+while (0)\r
+/* sec 0877 */\r
+#define next_break prev_break\r
+/* sec 0908 */\r
+#define append_charnode_to_t(a) \\r
+do \\r
+ { \\r
+ link(t) = get_avail(); \\r
+ t = link(t); \\r
+ font(t) = hf; \\r
+ character(t) = (a); \\r
+ } \\r
+while (0)\r
+#define set_cur_r() \\r
+do \\r
+ { \\r
+ if (j < n) \\r
+ cur_r = hu[j + 1]; \\r
+ else \\r
+ cur_r = bchar; \\r
+ \\r
+ if (odd(hyf[j])) \\r
+ cur_rh = hchar; \\r
+ else \\r
+ cur_rh = non_char; \\r
+ } \\r
+while (0)\r
+/* sec 0910 */\r
+#define wrap_lig(a) \\r
+do \\r
+{ \\r
+ if (ligature_present) \\r
+ { \\r
+ p = new_ligature(hf, cur_l, link(cur_q)); \\r
+ \\r
+ if (lft_hit) \\r
+ { \\r
+ subtype(p) = 2; \\r
+ lft_hit = false; \\r
+ } \\r
+ \\r
+ if ((a)) \\r
+ if (lig_stack == 0) \\r
+ { \\r
+ incr(subtype(p)); \\r
+ rt_hit = false; \\r
+ } \\r
+ \\r
+ link(cur_q) = p; \\r
+ t = p; \\r
+ ligature_present = false; \\r
+ } \\r
+} \\r
+while (0)\r
+#define pop_lig_stack() \\r
+do \\r
+ { \\r
+ if (lig_ptr(lig_stack) != 0) \\r
+ { \\r
+ link(t) = lig_ptr(lig_stack); \\r
+ t = link(t); \\r
+ incr(j); \\r
+ } \\r
+ \\r
+ p = lig_stack; \\r
+ lig_stack = link(p); \\r
+ free_node(p, small_node_size); \\r
+ \\r
+ if (lig_stack == 0) \\r
+ { \\r
+ set_cur_r(); \\r
+ } \\r
+ else \\r
+ cur_r = character(lig_stack); \\r
+ } \\r
+while (0)\r
+/* sec 0914 */\r
+#define advance_major_tail() \\r
+do \\r
+ { \\r
+ major_tail = link(major_tail); \\r
+ incr(r_count); \\r
+ } \\r
+while (0)\r
+/* sec 0970 */\r
+#define active_height active_width\r
+#define cur_height active_height[1]\r
+#define set_height_zero(a) active_width[(a)] = 0\r
+/* sec 0974 */\r
+#define deplorable 100000L\r
+/* sec 0980 */\r
+#define inserts_only 1\r
+#define box_there 2\r
+/* sec 0981 */\r
+#define page_ins_node_size 4\r
+#define inserting 0\r
+#define split_up 1\r
+#define broken_ptr(a) link(a + 1)\r
+#define broken_ins(a) info(a + 1)\r
+#define last_ins_ptr(a) link(a + 2)\r
+#define best_ins_ptr(a) info(a + 2)\r
+/* sec 0982 */\r
+#define page_goal page_so_far[0]\r
+#define page_total page_so_far[1]\r
+#define page_shrink page_so_far[6]\r
+#define page_depth page_so_far[7]\r
+/* sec 0987 */\r
+#define set_page_so_far_zero(a) page_so_far[(a)] = 0\r
+/* sec 1034 */\r
+#define adjust_space_factor() \\r
+do \\r
+{ \\r
+ main_s = sf_code(cur_chr); \\r
+ if (main_s == 1000) \\r
+ space_factor = 1000; \\r
+ else if (main_s < 1000) \\r
+ { \\r
+ if (main_s > 0) \\r
+ space_factor = main_s; \\r
+ } \\r
+ else if (space_factor < 1000) \\r
+ space_factor = 1000; \\r
+ else \\r
+ space_factor = main_s; \\r
+} \\r
+while (0)\r
+/* sec 1035 */\r
+/* -> false */\r
+#define wrapup(a) \\r
+do \\r
+{ \\r
+ if (cur_l < non_char) \\r
+ { \\r
+ if (link(cur_q) != 0) \\r
+ if (character(tail) == hyphen_char[main_f]) \\r
+ ins_disc = true; \\r
+ \\r
+ if (ligature_present) \\r
+ { \\r
+ main_p = new_ligature(main_f, cur_l, link(cur_q)); \\r
+ \\r
+ if (lft_hit) \\r
+ { \\r
+ subtype(main_p) = 2; \\r
+ lft_hit = false; \\r
+ } \\r
+ \\r
+ if (a) \\r
+ if (lig_stack == 0) \\r
+ { \\r
+ incr(subtype(main_p)); \\r
+ rt_hit = false; \\r
+ } \\r
+ \\r
+ link(cur_q) = main_p; \\r
+ tail = main_p; \\r
+ ligature_present = false; \\r
+ } \\r
+ \\r
+ if (ins_disc) \\r
+ { \\r
+ ins_disc = false; \\r
+ \\r
+ if (mode > 0) \\r
+ { \\r
+ tail_append(new_disc()); \\r
+ } \\r
+ } \\r
+ } \\r
+} \\r
+while (0)\r
+/* sec 1045 */\r
+#define any_mode(a) vmode + a: case hmode + a: case mmode + a\r
+/* sec 1046 */\r
+#define non_math(a) vmode + a: case hmode + a\r
+/* sec 1058 */\r
+#define fil_code 0\r
+#define fill_code 1\r
+#define ss_code 2\r
+#define fil_neg_code 3\r
+#define skip_code 4\r
+#define mskip_code 5\r
+/* sec 1071 */\r
+#define box_flag 010000000000\r
+#define ship_out_flag (box_flag + 512)\r
+#define leader_flag (box_flag + 513)\r
+#define box_code 0\r
+#define copy_code 1\r
+#define last_box_code 2\r
+#define vsplit_code 3\r
+#define vtop_code 4\r
+/* sec 1178 */\r
+#define above_code 0\r
+#define over_code 1\r
+#define atop_code 2\r
+#define delimited_code 3\r
+/* sec 1214 */\r
+#define define(p, t, e) \\r
+do \\r
+{ \\r
+ if (a >= 4) \\r
+ geq_define(p, t, e);\\r
+ else \\r
+ eq_define(p, t, e); \\r
+} \\r
+while (0)\r
+#define word_define(p, w) \\r
+do \\r
+{ \\r
+ if (a >= 4) \\r
+ geq_word_define(p, w);\\r
+ else \\r
+ eq_word_define(p, w); \\r
+} \\r
+while (0)\r
+/* sec 1222 */\r
+#define char_def_code 0\r
+#define math_char_def_code 1\r
+#define count_def_code 2\r
+#define dimen_def_code 3\r
+#define skip_def_code 4\r
+#define mu_skip_def_code 5\r
+#define toks_def_code 6\r
+/* sec 1290 */\r
+#define show_code 0\r
+#define show_box_code 1\r
+#define show_the_code 2\r
+#define show_lists 3\r
+/* sec 1306 */\r
+#define undump(va, vb, vc) \\r
+do \\r
+ { \\r
+ undump_int(x); \\r
+ \\r
+ if ((x < (va)) || (x > (vb))) \\r
+ goto bad_fmt; \\r
+ else \\r
+ vc = x; \\r
+ } \\r
+while (0)\r
+/* sec 1342 */\r
+#define write_node_size 2\r
+#define open_node_size 3\r
+#define open_node 0\r
+#define write_node 1\r
+#define close_node 2\r
+#define special_node 3\r
+#define language_node 4\r
+#define what_lang(s) link(s+1)\r
+#define what_lhm(s) type(s+1)\r
+#define what_rhm(s) subtype(s+1)\r
+#define write_tokens(s) link(s+1)\r
+#define write_stream(s) info(s+1)\r
+#define open_name(s) link(s+1)\r
+#define open_area(s) info(s+2)\r
+#define open_ext(s) link(s+2)\r
+/* sec 1344 */\r
+#define immediate_code 4\r
+#define set_language_code 5\r
+/* sec 1371 */\r
+#define end_write_token (cs_token_flag + end_write)\r
+\r
#endif
\ No newline at end of file