home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Tex / Tex29 / StTeXsrc.zoo / src / eq.h < prev    next >
Text File  |  1988-08-31  |  14KB  |  307 lines

  1.  
  2. /*
  3.  * @(#)eq.h 2.5 EPA
  4.  *
  5.  * Copyright 1987,1988 Pat J Monardo
  6.  *
  7.  * Redistribution of this file is permitted through
  8.  * the specifications in the file COPYING.
  9.  *
  10.  * 
  11.  */
  12.  
  13. #define eq_level_field(EQ)      EQ.hh.hh2.b1
  14. #define eq_type_field(EQ)       EQ.hh.hh2.b0
  15. #define equiv_field(EQ)         EQ.hh.hh2.rh
  16. #define eq_level(EQ)            eq_level_field(eqtb[EQ])
  17. #define eq_type(EQ)             eq_type_field(eqtb[EQ])
  18. #define equiv(EQ)               equiv_field(eqtb[EQ])
  19.  
  20. #define LEVEL_ZERO              MIN_QUARTERWORD
  21. #define LEVEL_ONE               (LEVEL_ZERO + 1)
  22.  
  23. #define ACTIVE_BASE             1
  24. #define SINGLE_BASE             (ACTIVE_BASE + 256)
  25. #define NULL_CS                 (SINGLE_BASE + 256)
  26. #define HASH_BASE               (NULL_CS + 1)
  27. #define FROZEN_CONTROL_SEQUENCE (HASH_BASE + HASH_SIZE)
  28. #define FROZEN_PROTECTION       (FROZEN_CONTROL_SEQUENCE)
  29. #define FROZEN_CR               (FROZEN_CONTROL_SEQUENCE + 1)
  30. #define FROZEN_END_GROUP        (FROZEN_CONTROL_SEQUENCE + 2)
  31. #define FROZEN_RIGHT            (FROZEN_CONTROL_SEQUENCE + 3)
  32. #define FROZEN_FI               (FROZEN_CONTROL_SEQUENCE + 4)
  33. #define FROZEN_END_TEMPLATE     (FROZEN_CONTROL_SEQUENCE + 5)
  34. #define FROZEN_ENDV             (FROZEN_CONTROL_SEQUENCE + 6)
  35. #define FROZEN_RELAX            (FROZEN_CONTROL_SEQUENCE + 7)
  36. #define END_WRITE               (FROZEN_CONTROL_SEQUENCE + 8)
  37. #define FROZEN_DONT_EXPAND      (FROZEN_CONTROL_SEQUENCE + 9)
  38. #define FROZEN_NULL_FONT        (FROZEN_CONTROL_SEQUENCE + 10)
  39. #define FONT_ID_BASE            (FROZEN_NULL_FONT - FONT_BASE)
  40.  
  41. #define UNDEFINED_CONTROL_SEQUENCE  (FROZEN_NULL_FONT + 257)
  42.  
  43. #define GLUE_BASE               (UNDEFINED_CONTROL_SEQUENCE + 1)
  44. #define GLUE_PARS               18
  45. #define glue_par(G)             equiv(GLUE_BASE + G)
  46.  
  47. #define LINE_SKIP_CODE                  0
  48. #define BASELINE_SKIP_CODE              1
  49. #define PAR_SKIP_CODE                   2
  50. #define ABOVE_DISPLAY_SKIP_CODE         3
  51. #define BELOW_DISPLAY_SKIP_CODE         4
  52. #define ABOVE_DISPLAY_SHORT_SKIP_CODE   5
  53. #define BELOW_DISPLAY_SHORT_SKIP_CODE   6
  54. #define LEFT_SKIP_CODE                  7
  55. #define RIGHT_SKIP_CODE                 8
  56. #define TOP_SKIP_CODE                   9
  57. #define SPLIT_TOP_SKIP_CODE             10
  58. #define TAB_SKIP_CODE                   11
  59. #define SPACE_SKIP_CODE                 12
  60. #define XSPACE_SKIP_CODE                13
  61. #define PAR_FILL_SKIP_CODE              14
  62. #define THIN_MU_SKIP_CODE               15
  63. #define MED_MU_SKIP_CODE                16
  64. #define THICK_MU_SKIP_CODE              17
  65.  
  66. #define line_skip                   glue_par(LINE_SKIP_CODE)
  67. #define baseline_skip               glue_par(BASELINE_SKIP_CODE)
  68. #define par_skip                    glue_par(PAR_SKIP_CODE)
  69. #define above_display_skip          glue_par(ABOVE_DISPLAY_SKIP_CODE)
  70. #define below_display_skip          glue_par(BELOW_DISPLAY_SKIP_CODE)
  71. #define above_display_short_skip    glue_par(ABOVE_DISPLAY_SHORT_SKIP_CODE)
  72. #define below_display_short_skip    glue_par(BELOW_DISPLAY_SHORT_SKIP_CODE)
  73. #define left_skip                   glue_par(LEFT_SKIP_CODE)
  74. #define right_skip                  glue_par(RIGHT_SKIP_CODE)
  75. #define top_skip                    glue_par(TOP_SKIP_CODE)
  76. #define split_top_skip              glue_par(SPLIT_TOP_SKIP_CODE)
  77. #define tab_skip                    glue_par(TAB_SKIP_CODE)
  78. #define space_skip                  glue_par(SPACE_SKIP_CODE)
  79. #define xspace_skip                 glue_par(XSPACE_SKIP_CODE)
  80. #define par_fill_skip               glue_par(PAR_FILL_SKIP_CODE)
  81. #define thin_mu_skip                glue_par(THIN_MU_SKIP_CODE)
  82. #define med_mu_skip                 glue_par(MED_MU_SKIP_CODE)
  83. #define thick_mu_skip               glue_par(THICK_MU_USKIP_CODE)
  84.  
  85. #define SKIP_BASE               (GLUE_BASE + GLUE_PARS)
  86. #define skip(S)                 equiv(SKIP_BASE + S)
  87.  
  88. #define MU_SKIP_BASE            (SKIP_BASE + 256)
  89. #define mu_skip(M)              equiv(MU_SKIP_BASE + M)
  90.  
  91. #define LOCAL_BASE              (MU_SKIP_BASE + 256)
  92.  
  93. #define PAR_SHAPE_LOC           LOCAL_BASE
  94. #define OUTPUT_ROUTINE_LOC      (LOCAL_BASE + 1)
  95. #define EVERY_PAR_LOC           (LOCAL_BASE + 2)
  96. #define EVERY_MATH_LOC          (LOCAL_BASE + 3)
  97. #define EVERY_DISPLAY_LOC       (LOCAL_BASE + 4)
  98. #define EVERY_HBOX_LOC          (LOCAL_BASE + 5)
  99. #define EVERY_VBOX_LOC          (LOCAL_BASE + 6)
  100. #define EVERY_JOB_LOC           (LOCAL_BASE + 7)
  101. #define EVERY_CR_LOC            (LOCAL_BASE + 8)
  102. #define ERR_HELP_LOC            (LOCAL_BASE + 9)
  103.  
  104. #define TOKS_BASE               (LOCAL_BASE + 10)
  105. #define BOX_BASE                (TOKS_BASE + 256)
  106. #define CUR_FONT_LOC            (BOX_BASE + 256)
  107. #define MATH_FONT_BASE          (CUR_FONT_LOC + 1)
  108. #define CAT_CODE_BASE           (MATH_FONT_BASE + 48)
  109. #define LC_CODE_BASE            (CAT_CODE_BASE + 256)
  110. #define UC_CODE_BASE            (LC_CODE_BASE + 256)
  111. #define SF_CODE_BASE            (UC_CODE_BASE + 256)
  112. #define MATH_CODE_BASE          (SF_CODE_BASE + 256)
  113.  
  114. #define par_shape_ptr           equiv(PAR_SHAPE_LOC)
  115. #define output_routine          equiv(OUTPUT_ROUTINE_LOC)
  116. #define every_par               equiv(EVERY_PAR_LOC)
  117. #define every_math              equiv(EVERY_MATH_LOC)
  118. #define every_display           equiv(EVERY_DISPLAY_LOC)
  119. #define every_hbox              equiv(EVERY_HBOX_LOC)
  120. #define every_vbox              equiv(EVERY_VBOX_LOC)
  121. #define every_job               equiv(EVERY_JOB_LOC)
  122. #define every_cr                equiv(EVERY_CR_LOC)
  123. #define err_help                equiv(ERR_HELP_LOC)
  124. #define toks(M)                 equiv(TOKS_BASE + M)
  125. #define box(M)                  equiv(BOX_BASE + M)
  126. #define cur_font                equiv(CUR_FONT_LOC)
  127. #define fam_fnt(M)              equiv(MATH_FONT_BASE + M)
  128. #define cat_code(M)             equiv(CAT_CODE_BASE + M)
  129. #define lc_code(M)              equiv(LC_CODE_BASE + M)
  130. #define uc_code(M)              equiv(UC_CODE_BASE + M)
  131. #define sf_code(M)              equiv(SF_CODE_BASE + M)
  132. #define math_code(M)            equiv(MATH_CODE_BASE + M)
  133.  
  134. #define VAR_CODE                070000
  135.  
  136. #define INT_BASE                (MATH_CODE_BASE + 256)
  137. #define INT_PARS                50
  138. #define int_par(M)              eqtb[INT_BASE + M].i
  139.  
  140. #define PRETOLERANCE_CODE           0
  141. #define TOLERANCE_CODE              1
  142. #define LINE_PENALTY_CODE           2
  143. #define HYPHEN_PENALTY_CODE         3       
  144. #define CLUB_PENALTY_CODE           4
  145. #define EX_HYPHEN_PENALTY_CODE      5
  146. #define WIDOW_PENALTY_CODE          6
  147. #define DISPLAY_WIDOW_PENALTY_CODE  7
  148. #define BROKEN_PENALTY_CODE         8
  149. #define BIN_OP_PENALTY_CODE         9
  150. #define REL_PENALTY_CODE            10
  151. #define PRE_DISPLAY_PENALTY_CODE    11
  152. #define POST_DISPLAY_PENALTY_CODE   12
  153. #define INTER_LINE_PENALTY_CODE     13
  154. #define DOUBLE_HYPHEN_DEMERITS_CODE 14
  155. #define FINAL_HYPHEN_DEMERITS_CODE  15
  156. #define ADJ_DEMERITS_CODE           16
  157. #define MAG_CODE                    17
  158. #define DELIMITER_FACTOR_CODE       18
  159. #define LOOSENESS_CODE              19
  160. #define TIME_CODE                   20
  161. #define DAY_CODE                    21
  162. #define MONTH_CODE                  22
  163. #define YEAR_CODE                   23
  164. #define SHOW_BOX_BREADTH_CODE       24
  165. #define SHOW_BOX_DEPTH_CODE         25
  166. #define HBADNESS_CODE               26
  167. #define VBADNESS_CODE               27
  168. #define PAUSING_CODE                28
  169. #define TRACING_ONLINE_CODE         29
  170. #define TRACING_MACROS_CODE         30
  171. #define TRACING_STATS_CODE          31
  172. #define TRACING_PARAGRAPHS_CODE     32
  173. #define TRACING_PAGES_CODE          33
  174. #define TRACING_OUTPUT_CODE         34
  175. #define TRACING_LOST_CHARS_CODE     35
  176. #define TRACING_COMMANDS_CODE       36
  177. #define TRACING_RESTORES_CODE       37
  178. #define UC_HYPH_CODE                38
  179. #define OUTPUT_PENALTY_CODE         39
  180. #define MAX_DEAD_CYCLES_CODE        40
  181. #define HANG_AFTER_CODE             41
  182. #define FLOATING_PENALTY_CODE       42
  183. #define GLOBAL_DEFS_CODE            43
  184. #define CUR_FAM_CODE                44
  185. #define ESCAPE_CHAR_CODE            45
  186. #define DEFAULT_HYPHEN_CHAR_CODE    46
  187. #define DEFAULT_SKEW_CHAR_CODE      47
  188. #define END_LINE_CHAR_CODE          48
  189. #define NEW_LINE_CHAR_CODE          49
  190.  
  191. #define pretolerance            int_par(PRETOLERANCE_CODE)
  192. #define tolerance               int_par(TOLERANCE_CODE)
  193. #define line_penalty            int_par(LINE_PENALTY_CODE)
  194. #define hyphen_penalty          int_par(HYPHEN_PENALTY_CODE)
  195. #define ex_hyphen_penalty       int_par(EX_HYPHEN_PENALTY_CODE)
  196. #define club_penalty            int_par(CLUB_PENALTY_CODE)
  197. #define widow_penalty           int_par(WIDOW_PENALTY_CODE)
  198. #define display_widow_penalty   int_par(DISPLAY_WIDOW_PENALTY_CODE)
  199. #define broken_penalty          int_par(BROKEN_PENALTY_CODE)
  200. #define bin_op_penalty          int_par(BIN_OP_PENALTY_CODE)
  201. #define rel_penalty             int_par(REL_PENALTY_CODE)
  202. #define pre_display_penalty     int_par(PRE_DISPLAY_PENALTY_CODE)
  203. #define post_display_penalty    int_par(POST_DISPLAY_PENALTY_CODE)
  204. #define inter_line_penalty      int_par(INTER_LINE_PENALTY_CODE)
  205. #define double_hyphen_demerits  int_par(DOUBLE_HYPHEN_DEMERITS_CODE)
  206. #define final_hyphen_demerits   int_par(FINAL_HYPHEN_DEMERITS_CODE)
  207. #define adj_demerits            int_par(ADJ_DEMERITS_CODE)
  208. #define mag                     int_par(MAG_CODE)
  209. #define delimiter_factor        int_par(DELIMITER_FACTOR_CODE)
  210. #define looseness               int_par(LOOSENESS_CODE)
  211. #define time                    int_par(TIME_CODE)
  212. #define day                     int_par(DAY_CODE)
  213. #define month                   int_par(MONTH_CODE)
  214. #define year                    int_par(YEAR_CODE)
  215. #define show_box_breadth        int_par(SHOW_BOX_BREADTH_CODE)
  216. #define show_box_depth          int_par(SHOW_BOX_DEPTH_CODE)
  217. #define hbadness                int_par(HBADNESS_CODE)
  218. #define vbadness                int_par(VBADNESS_CODE)
  219. #define pausing                 int_par(PAUSING_CODE)
  220. #define tracing_online          int_par(TRACING_ONLINE_CODE)
  221. #define tracing_macros          int_par(TRACING_MACROS_CODE)
  222. #define tracing_stats           int_par(TRACING_STATS_CODE)
  223. #define tracing_paragraphs      int_par(TRACING_PARAGRAPHS_CODE)
  224. #define tracing_pages           int_par(TRACING_PAGES_CODE)
  225. #define tracing_output          int_par(TRACING_OUTPUT_CODE)
  226. #define tracing_lost_chars      int_par(TRACING_LOST_CHARS_CODE)
  227. #define tracing_commands        int_par(TRACING_COMMANDS_CODE)
  228. #define tracing_restores        int_par(TRACING_RESTORES_CODE)
  229. #define uc_hyph                 int_par(UC_HYPH_CODE)
  230. #define max_dead_cycles         int_par(MAX_DEAD_CYCLES_CODE)
  231. #define output_penalty          int_par(OUTPUT_PENALTY_CODE)
  232. #define hang_after              int_par(HANG_AFTER_CODE)
  233. #define floating_penalty        int_par(FLOATING_PENALTY_CODE)
  234. #define global_defs             int_par(GLOBAL_DEFS_CODE)
  235. #define cur_fam                 int_par(CUR_FAM_CODE)
  236. #define escape_char             int_par(ESCAPE_CHAR_CODE)
  237. #define default_hyphen_char     int_par(DEFAULT_HYPHEN_CHAR_CODE)
  238. #define default_skew_char       int_par(DEFAULT_SKEW_CHAR_CODE)
  239. #define end_line_char           int_par(END_LINE_CHAR_CODE)
  240. #define new_line_char           int_par(NEW_LINE_CHAR_CODE)
  241.  
  242. #define COUNT_BASE              (INT_BASE + INT_PARS)
  243. #define count(M)                eqtb[COUNT_BASE + M].i
  244.  
  245. #define DEL_CODE_BASE           (COUNT_BASE + 256)
  246. #define del_code(M)             eqtb[DEL_CODE_BASE + M].i
  247.  
  248. #define DIMEN_BASE              (DEL_CODE_BASE + 256)
  249. #define DIMEN_PARS              20
  250. #define dimen_par(M)            eqtb[DIMEN_BASE + M].sc
  251.  
  252. #define PAR_INDENT_CODE             0
  253. #define MATH_SURROUND_CODE          1
  254. #define LINE_SKIP_LIMIT_CODE        2
  255. #define HSIZE_CODE                  3
  256. #define VSIZE_CODE                  4
  257. #define MAX_DEPTH_CODE              5
  258. #define SPLIT_MAX_DEPTH_CODE        6
  259. #define BOX_MAX_DEPTH_CODE          7
  260. #define HFUZZ_CODE                  8
  261. #define VFUZZ_CODE                  9
  262. #define DELIMITER_SHORTFALL_CODE    10
  263. #define NULL_DELIMITER_SPACE_CODE   11
  264. #define SCRIPT_SPACE_CODE           12
  265. #define PRE_DISPLAY_SIZE_CODE       13
  266. #define DISPLAY_WIDTH_CODE          14
  267. #define DISPLAY_INDENT_CODE         15
  268. #define OVERFULL_RULE_CODE          16
  269. #define HANG_INDENT_CODE            17
  270. #define H_OFFSET_CODE               18
  271. #define V_OFFSET_CODE               19
  272.  
  273. #define par_indent              dimen_par(PAR_INDENT_CODE)
  274. #define math_surround           dimen_par(MATH_SURROUND_CODE)
  275. #define line_skip_limit         dimen_par(LINE_SKIP_LIMIT_CODE)
  276. #define hsize                   dimen_par(HSIZE_CODE)
  277. #define vsize                   dimen_par(VSIZE_CODE)
  278. #define max_depth               dimen_par(MAX_DEPTH_CODE)
  279. #define split_max_depth         dimen_par(SPLIT_MAX_DEPTH_CODE)
  280. #define box_max_depth           dimen_par(BOX_MAX_DEPTH_CODE)
  281. #define hfuzz                   dimen_par(HFUZZ_CODE)
  282. #define vfuzz                   dimen_par(VFUZZ_CODE)
  283. #define delimiter_shortfall     dimen_par(DELIMITER_SHORTFALL_CODE)
  284. #define null_delimiter_space    dimen_par(NULL_DELIMITER_SPACE_CODE)
  285. #define script_space            dimen_par(SCRIPT_SPACE_CODE)
  286. #define pre_display_size        dimen_par(PRE_DISPLAY_SIZE_CODE)
  287. #define display_width           dimen_par(DISPLAY_WIDTH_CODE)
  288. #define display_indent          dimen_par(DISPLAY_INDENT_CODE)
  289. #define overfull_rule           dimen_par(OVERFULL_RULE_CODE)
  290. #define hang_indent             dimen_par(HANG_INDENT_CODE)
  291. #define h_offset                dimen_par(H_OFFSET_CODE)
  292. #define v_offset                dimen_par(V_OFFSET_CODE)
  293.  
  294. #define SCALED_BASE             (DIMEN_BASE + DIMEN_PARS)
  295. #define dimen(M)                eqtb[SCALED_BASE + M].sc
  296.  
  297. #define EQTB_SIZE               (SCALED_BASE + 255)
  298.  
  299. global  mword       eqtb[];
  300. global  qword       xeq_level[];
  301.  
  302. int     print_param();
  303. int     print_length_param();
  304. int     print_skip_param();
  305. int     show_eqtb();
  306. int     init_eq();
  307.