home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / texmf / source / TeX / tex / texd.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-10-31  |  18.8 KB  |  655 lines

  1. #ifndef INITEXTERN
  2. #  define INITEXTERN extern
  3. #endif
  4.  
  5. #if !defined(AMIGA) || !defined(LATTICE)
  6. #  define STDARGS
  7. #  define FARREF
  8. #else
  9. #  define STDARGS __stdargs
  10. #  define FARREF  __far
  11. #endif
  12.  
  13. /*  Nur in "config.h" angegebene Defines koennen (fast) problemlos
  14.  *  geaendert werden.
  15.  */
  16. #include "config.h"
  17.  
  18.  
  19.  
  20. /* (br) enable/disable some of my changes: */
  21. /* vvvvvvvvvvvv */
  22. /* Don't change any of these defines, change is not tested !!!! */
  23. /* ^^^^^^^^^^^^ */
  24. /* ... and the format of the fmt-file is possible changed */
  25. #define FONTPTR        /* Use pointer in charbase[], ... */
  26. #define FONTSTRUCT    /* put fontinfo in a array of structs
  27.                instead of many separate arrays. */
  28. #undef  ORIGTRIE    /* shorter Trie or original def.  */
  29. #undef    OLD_MODE    /* `mode' is 1,102,203 or 1,2,3?  */
  30. #define INP_PTR        /* curinput is ptr in inputstack[] */
  31. #define PARAM_PTR    /* changes mit parameter stack */
  32. #define HYPHSTRUCT    /* hyphenation exception in struct? */
  33. #define NEW_HELP    /* helpX() macros array or array ptr assignment? */
  34.  
  35.  
  36. /* (br) GNU C erlaubt das Reservieren von "globalen" Registervariablen, dabei
  37.  * muss nur darauf geachtet werden, dass alle Teile nochmal mit dieser Option
  38.  * uebersetzt wurden (sonst bekommen die Register evtl. einen anderen Wert!!)
  39.  */
  40.  
  41. #ifndef __GNUC__
  42. #  undef REG_A5
  43. #else
  44. #  define REG_A5
  45. #endif
  46.  
  47. /* Leider ist memoryword noch nicht bekannt, es werden jedoch schon `inline'
  48.  * Funktionen in den Headerfiles definiert, deshalb muss schon hier die
  49.  * Variable deklariert werden und spaeter (in coerce.h) auf (memoryword *)
  50.  * gecastet werden.
  51.  */
  52. #ifdef REG_A5
  53. register void *zzzaa __asm__("a5");
  54. #endif
  55.  
  56.  
  57. #include "texmf.h"    /* "../common/texmf.h" */
  58.  
  59. extern char banner[];
  60. EXTERN schar user_interaction ;        /* interaction mode from arguments */
  61. EXTERN long  user_language ;        /* language from args or cnf-file  */
  62.  
  63. #ifdef MLTEX
  64. EXTERN char is_ML_TeX;        /* set, if ML-TeX */
  65. #endif
  66. #ifdef TEXXET
  67. EXTERN char is_TeX_XeT;        /* set, if TeX--XeT */
  68. #endif
  69.  
  70.  
  71. #ifdef BIG
  72. #define maxhalfword 524287L    /* from bigtex.diff: 262143L */
  73. #define hashsize 9500
  74. #define hashprime 7919
  75. #define hyphsize 607
  76. #else
  77. #define maxhalfword 65535L
  78. #define hashsize 3500        /* changed, original: 3000 */
  79. #define hashprime 2551
  80. #define hyphsize 307
  81. #endif
  82.  
  83. INITEXTERN long memmax;
  84. #define memmin 0        /* sollte immer 0 sein */
  85. INITEXTERN long bufsize;
  86. INITEXTERN long errorline;
  87. INITEXTERN long halferrorline;
  88. INITEXTERN long maxprintline;
  89. INITEXTERN long stacksize;
  90. INITEXTERN long maxinopen;
  91. INITEXTERN long fontmax;
  92. INITEXTERN long fontmemsize;
  93. INITEXTERN long paramsize;    /* 60 */
  94. INITEXTERN long nestsize;    /* 40 */
  95. INITEXTERN long maxstrings;
  96. INITEXTERN long stringvacancies;
  97. INITEXTERN long poolsize;
  98. INITEXTERN long savesize;
  99. INITEXTERN long triesize;
  100. INITEXTERN long trieopsize;        /* 500 */
  101. #define negtrieopsize (-trieopsize)    /* -500 */
  102. #define mintrieop 0
  103. #define maxtrieop 32767L        /* 500 */
  104. INITEXTERN long dvibufsize;
  105. #define poolname "tex.pool" 
  106. INITEXTERN long memtop;
  107. #define membot 0 
  108.  
  109. #include "texdefs.h"
  110.  
  111. typedef unsigned char ASCIIcode;
  112. typedef unsigned char eightbits;
  113. typedef integer poolpointer;
  114. typedef integer strnumber;
  115. typedef unsigned char packedASCIIcode;
  116. typedef integer scaled;
  117. typedef integer nonnegativeinteger;
  118. typedef schar smallnumber;
  119. typedef unsigned char quarterword;
  120.  
  121. /* long_halfword...    wird verwendet fuer Funktionswerte, die danach als
  122.  *            Indizes o.ae. weiterverwendet werden.  Dadurch
  123.  *            entfaellt zuerst impliziter cast auf (halfword) und
  124.  *            danach als Index auf ([unsigned] long).
  125.  */
  126. #ifdef BIG
  127. typedef integer halfword;
  128. typedef integer long_halfword;
  129. #else
  130. typedef unsigned short halfword;
  131. typedef unsigned long  long_halfword;
  132. #endif
  133.  
  134. typedef schar twochoices;
  135. typedef schar fourchoices;
  136.  
  137. #include "memory.h"
  138.  
  139. typedef schar glueord;
  140.  
  141. typedef struct {
  142.   short modefield;
  143.   halfword headfield, tailfield;
  144.   integer pgfield, mlfield;
  145.   memoryword auxfield;
  146. #if 0  /* 3.1415 */
  147.   quarterword lhmfield, rhmfield;
  148. #endif
  149. #ifdef TEXXET
  150.   halfword LRs_field;
  151. #endif
  152. } liststaterecord;
  153.  
  154. typedef schar groupcode;
  155.  
  156. typedef struct {
  157.   quarterword statefield, indexfield;
  158.   halfword startfield, locfield, limitfield, namefield;
  159. } instaterecord;
  160.  
  161. typedef SMALLhalfword internalfontnumber ;    /* integer */
  162. typedef integer fontindex;
  163. typedef integer dviindex;
  164. typedef SMALLhalfword trieopcode ;    /* integer */
  165. #ifdef BIGTRIE
  166. typedef halfword triepointer ;        /* integer */
  167. #else
  168. typedef SMALLhalfword triepointer ;    /* integer */
  169. #endif
  170. typedef SMALLhalfword hyphpointer ;    /* integer */
  171.  
  172. #ifdef TEXXET
  173. EXTERN smallnumber cur_dir;
  174. EXTERN halfword LR_ptr;
  175. #endif
  176.  
  177. EXTERN ASCIIcode xord[256];
  178. EXTERN ASCIIcode xchr[256];
  179. EXTERN boolean printable[256];
  180. #ifdef ERW_CODEPAGE
  181. EXTERN boolean codepage_given;
  182. #endif
  183. EXTERN char nameoffile[FILENAMESIZE + 1] ;
  184. EXTERN integer namelength;
  185. INITEXTERN ASCIIcode *buffer;            /* [bufsize + 1] */
  186. EXTERN integer first;
  187. EXTERN integer last;
  188. EXTERN integer maxbufstack;
  189. INITEXTERN packedASCIIcode *strpool;        /* [poolsize + 1] */
  190. INITEXTERN poolpointer *strstart;        /* [maxstrings + 1] */
  191. EXTERN poolpointer poolptr  ; 
  192. EXTERN strnumber strptr  ; 
  193. EXTERN poolpointer initpoolptr  ; 
  194. EXTERN strnumber initstrptr  ; 
  195.  
  196. EXTERN alphafile logfile  ; 
  197. EXTERN schar selector ;        /* integer */
  198. EXTERN schar dig[23]  ; 
  199. EXTERN integer tally  ; 
  200. EXTERN integer termoffset  ; 
  201. EXTERN integer fileoffset  ; 
  202. INITEXTERN ASCIIcode *trickbuf;                /* [errorline + 1] */
  203. EXTERN integer trickcount  ; 
  204. EXTERN integer firstcount  ; 
  205. #ifndef ERW_INTERACTION
  206. EXTERN schar interaction ;        /* integer */
  207. #endif
  208. EXTERN boolean deletionsallowed ;
  209. EXTERN boolean setboxallowed ;
  210. EXTERN schar history ;            /* integer */
  211. EXTERN schar errorcount ;
  212. #ifdef NEW_HELP
  213. EXTERN short *helpptr;
  214. #else
  215. /* in helpline werden nur die "festen" Strings eingetragen, deshalb... */
  216. EXTERN /* strnumber */ unsigned short helpline[6];
  217. EXTERN schar helpptr;
  218. #endif
  219. EXTERN boolean useerrhelp;
  220. EXTERN short interrupt  ;         /* changed from integer (br) */
  221. EXTERN boolean OKtointerrupt  ; 
  222. EXTERN boolean aritherror  ; 
  223. EXTERN scaled remainder  ; 
  224. EXTERN halfword tempptr  ; 
  225. #define zmem (zzzaa - (int)(memmin))
  226. #ifndef REG_A5
  227. INITEXTERN memoryword *zzzaa;                /* [memmax - memmin + 1] */
  228. #endif
  229. EXTERN halfword lomemmax  ; 
  230. EXTERN halfword himemmin  ; 
  231. EXTERN integer varused, dynused  ; 
  232. EXTERN halfword avail  ; 
  233. EXTERN halfword memend  ; 
  234. EXTERN halfword rover  ; 
  235. #ifdef DEBUG
  236. #define freearr (zzzab - (int)(memmin))
  237. #define wasfree (zzzac - (int)(memmin))
  238. INITEXTERN boolean *zzzab;                /* [memmax - memmin + 1] */
  239. INITEXTERN boolean *zzzac;                /* [memmax - memmin + 1] */
  240. EXTERN halfword wasmemend, waslomax, washimin  ; 
  241. EXTERN boolean panicking  ; 
  242. #endif /* DEBUG */
  243.  
  244. EXTERN integer fontinshortdisplay  ; 
  245. EXTERN integer depththreshold  ; 
  246. EXTERN integer breadthmax  ; 
  247. EXTERN liststaterecord *nest;        /* [nestsize + 1] */
  248. EXTERN integer nestptr  ; 
  249. EXTERN integer maxneststack  ; 
  250. EXTERN liststaterecord curlist  ; 
  251. EXTERN short shownmode  ; 
  252. EXTERN integer oldsetting  ; 
  253.  
  254.  
  255. /* Note:  activebase = 1, ... it's faster without -activebase ! */
  256. /* #define zeqtb (zzzad - (int)(activebase))            */
  257. /* EXTERN MEDmemoryword zzzad[eqtbsize - activebase + 1];    */
  258.  
  259. #ifdef EQTB_ALLOC    /* siehe auch init.c! */
  260.  
  261. INITEXTERN MEDmemoryword *zeqtb;
  262. INITEXTERN quarterword *zzzae;
  263. INITEXTERN twohalves *zzzaf;
  264. /* zzzae = &xeqlevel[intbase] */
  265. #define xeqlevel (zzzae)
  266. /* zzzaf = &hash[hashbase] */
  267. #define hash (zzzaf)
  268.  
  269. #else
  270.  
  271. EXTERN MEDmemoryword FARREF zeqtb[eqtbsize + 1];
  272. EXTERN quarterword FARREF zzzae[eqtbsize - intbase + 1];
  273. EXTERN twohalves FARREF zzzaf[undefinedcontrolsequence - hashbase + 1];
  274. #define xeqlevel (zzzae - (long)(intbase))
  275. #define hash (zzzaf - (long)(hashbase))
  276.  
  277. #endif
  278.  
  279. EXTERN halfword hashused;
  280. EXTERN boolean nonewcontrolsequence;
  281. EXTERN integer cscount;
  282. INITEXTERN MEDmemoryword *savestack;                /* [savesize + 1] */
  283. EXTERN integer saveptr;
  284. EXTERN integer maxsavestack;
  285. EXTERN quarterword curlevel;
  286. EXTERN groupcode curgroup;
  287. EXTERN integer curboundary;
  288. /* EXTERN integer magset; */ /* local nach preparemag() */
  289.  
  290. EXTERN eightbits curcmd;
  291. EXTERN halfword curchr;
  292. EXTERN halfword curcs;
  293. EXTERN halfword curtok;
  294.  
  295. INITEXTERN instaterecord *inputstack;                /* [stacksize + 1] */
  296. #ifdef INP_PTR
  297. EXTERN instaterecord *curinput_ptr;
  298. # define curinput (*curinput_ptr)
  299. #else
  300. EXTERN instaterecord curinput;
  301. #endif
  302. EXTERN integer inputptr;
  303. EXTERN integer maxinstack;
  304. EXTERN integer baseptr;
  305.  
  306. EXTERN integer inopen;
  307. EXTERN integer openparens  ; 
  308. INITEXTERN alphafile *inputfile;                /* [maxinopen + 1] */
  309. EXTERN integer line  ; 
  310. INITEXTERN integer *linestack;                /* [maxinopen + 1] */
  311. EXTERN schar scannerstatus  ; 
  312. EXTERN halfword warningindex  ; 
  313. EXTERN halfword defref;
  314. EXTERN halfword *paramstack;            /* [paramsize + 1] */
  315. EXTERN integer paramptr;
  316. EXTERN integer maxparamstack;
  317. EXTERN integer alignstate;
  318. EXTERN halfword parloc;
  319. EXTERN halfword partoken;
  320. EXTERN boolean forceeof;
  321. EXTERN halfword zzzag[splitbotmarkcode - topmarkcode + 1];
  322. #define curmark (zzzag - (long)(topmarkcode))
  323. EXTERN schar longstate;
  324. EXTERN halfword pstack[9];
  325. EXTERN integer curval;
  326. EXTERN schar curvallevel;
  327. EXTERN smallnumber radix;
  328. EXTERN glueord curorder;
  329. EXTERN alphafile readfile[16];
  330. EXTERN schar readopen[17];
  331. EXTERN halfword condptr;
  332. EXTERN schar iflimit;
  333. EXTERN smallnumber curif;
  334. EXTERN integer ifline;
  335. EXTERN integer skipline;
  336. EXTERN strnumber curname;
  337. EXTERN strnumber curarea;
  338. EXTERN strnumber curext;
  339. EXTERN poolpointer areadelimiter;
  340. EXTERN poolpointer extdelimiter;
  341. EXTERN integer formatdefaultlength;
  342. EXTERN ccharpointer TEXformatdefault;
  343. EXTERN boolean nameinprogress;
  344. EXTERN strnumber jobname;
  345. EXTERN boolean logopened;
  346. EXTERN bytefile dvifile;
  347. EXTERN strnumber outputfilename;
  348. EXTERN strnumber logname;
  349.  
  350. INITEXTERN SMALLmemoryword *fontinfo;        /* [fontmemsize + 1] */
  351. EXTERN fontindex fmemptr;
  352. EXTERN internalfontnumber fontptr;
  353.  
  354. #ifdef FONTSTRUCT
  355.     /* see also: defs.h !!!! */
  356.     /* struct sollte so gross sein, dass Groesse eine 2er Potenz ist */
  357. INITEXTERN struct font_desc {
  358. #  ifdef FONTPTR
  359.     SMALLmemoryword *charbase;
  360.     SMALLmemoryword *widthbase;
  361.     SMALLmemoryword *heightbase;
  362.     SMALLmemoryword *depthbase;
  363.     SMALLmemoryword *italicbase;
  364.     SMALLmemoryword *ligkernbase;
  365.     SMALLmemoryword *kernbase;
  366. #  else
  367.     integer charbase;
  368.     integer widthbase;
  369.     integer heightbase;
  370.     integer depthbase;
  371.     integer italicbase;
  372.     integer ligkernbase;
  373.     integer kernbase;
  374. #  endif
  375.     integer extenbase;
  376.     integer parambase;
  377.  
  378.     eightbits    fontbc, fontec;
  379.     fourquarters    fontcheck;
  380.     SMALLhalfword    fontparams;
  381. /* Achtung fuer BIG/normal: damit hat der struct die Groesse von 64 Bytes */
  382.     /*halfword*/ long fontglue;
  383.     integer        hyphenchar, skewchar;
  384.     fontindex    bcharlabel;
  385.     short        fontbchar, fontfalsebchar;
  386. } *fontdesc;        /* [fontmax + 1] */
  387.  
  388. #else
  389.  
  390. INITEXTERN fourquarters *fontcheck;        /* [fontmax + 1] */
  391. INITEXTERN SMALLhalfword *fontparams;        /* [fontmax + 1] */
  392. #ifdef FONTPTR
  393. INITEXTERN struct fnt_bcec {
  394.   eightbits bc;
  395.   eightbits ec;
  396. } *font_bcec;                    /* [fontmax + 1] */
  397. #else
  398. INITEXTERN eightbits *fontbc;            /* [fontmax + 1] */
  399. INITEXTERN eightbits *fontec;            /* [fontmax + 1] */
  400. #endif
  401. INITEXTERN halfword *fontglue;            /* [fontmax + 1] */
  402. INITEXTERN integer *hyphenchar;            /* [fontmax + 1] */
  403. INITEXTERN integer *skewchar;            /* [fontmax + 1] */
  404. INITEXTERN fontindex *bcharlabel;        /* [fontmax + 1] */
  405. INITEXTERN short *fontbchar;            /* [fontmax + 1] */
  406. INITEXTERN short *fontfalsebchar;        /* [fontmax + 1] */
  407. #ifdef FONTPTR
  408. INITEXTERN SMALLmemoryword **charbase;        /* [fontmax + 1] */
  409. INITEXTERN SMALLmemoryword **widthbase;        /* [fontmax + 1] */
  410. INITEXTERN SMALLmemoryword **heightbase;    /* [fontmax + 1] */
  411. INITEXTERN SMALLmemoryword **depthbase;        /* [fontmax + 1] */
  412. INITEXTERN SMALLmemoryword **italicbase;    /* [fontmax + 1] */
  413. INITEXTERN SMALLmemoryword **ligkernbase;    /* [fontmax + 1] */
  414. INITEXTERN SMALLmemoryword **kernbase;        /* [fontmax + 1] */
  415. #else
  416. INITEXTERN integer *charbase;            /* [fontmax + 1] */
  417. INITEXTERN integer *widthbase;            /* [fontmax + 1] */
  418. INITEXTERN integer *heightbase;            /* [fontmax + 1] */
  419. INITEXTERN integer *depthbase;            /* [fontmax + 1] */
  420. INITEXTERN integer *italicbase;            /* [fontmax + 1] */
  421. INITEXTERN integer *ligkernbase;        /* [fontmax + 1] */
  422. INITEXTERN integer *kernbase;            /* [fontmax + 1] */
  423. #endif
  424. INITEXTERN integer *extenbase;            /* [fontmax + 1] */
  425. INITEXTERN integer *parambase;            /* [fontmax + 1] */
  426. #endif    /* FONTSTRUCT */
  427.  
  428. INITEXTERN boolean *fontused;            /* [fontmax + 1] */
  429. INITEXTERN scaled *fontsize;            /* [fontmax + 1] */
  430. INITEXTERN scaled *fontdsize;            /* [fontmax + 1] */
  431. INITEXTERN strnumber *fontname;            /* [fontmax + 1] */
  432. INITEXTERN strnumber *fontarea;            /* [fontmax + 1] */
  433.  
  434. EXTERN fourquarters nullcharacter;
  435. EXTERN integer totalpages;
  436. EXTERN scaled maxv;
  437. EXTERN scaled maxh;
  438. EXTERN integer maxpush;
  439. EXTERN integer lastbop;
  440. EXTERN integer deadcycles;
  441. EXTERN boolean doingleaders;
  442. #if 0
  443. EXTERN quarterword c, f  ; 
  444. EXTERN scaled ruleht, ruledp, rulewd  ; 
  445. EXTERN halfword g  ; 
  446. EXTERN integer lq, lr  ; 
  447. #endif
  448. INITEXTERN eightbits *dvibuf;                /* [dvibufsize + 1] */
  449. EXTERN dviindex halfbuf;
  450. EXTERN dviindex dvilimit;
  451. EXTERN dviindex dviptr;
  452. EXTERN integer dvioffset;
  453. EXTERN integer dvigone;
  454. #if 0 /* nach shipout.c */
  455. EXTERN halfword downptr, rightptr; 
  456. EXTERN scaled dvih, dviv;
  457. EXTERN scaled curh, curv;
  458. EXTERN internalfontnumber dvif;
  459. EXTERN integer curs;
  460. #endif
  461. EXTERN scaled zzzah[filll - normal + 1], zzzai[filll - normal + 1];
  462. #define totalstretch (zzzah - (int)(normal))
  463. #define totalshrink (zzzai - (int)(normal))
  464. EXTERN integer lastbadness  ; 
  465. EXTERN halfword adjusttail  ; 
  466. EXTERN integer packbeginline  ; 
  467. EXTERN twohalves emptyfield  ; 
  468. EXTERN fourquarters nulldelimiter  ; 
  469.  
  470. EXTERN internalfontnumber curf  ; 
  471. EXTERN quarterword curc  ; 
  472. EXTERN fourquarters curi  ; 
  473.  
  474. EXTERN halfword curalign  ; 
  475. EXTERN halfword curspan  ; 
  476. EXTERN halfword curloop  ; 
  477. EXTERN halfword alignptr  ; 
  478. EXTERN halfword curhead, curtail  ; 
  479. EXTERN halfword justbox  ; 
  480. EXTERN halfword passive  ; 
  481. EXTERN halfword printednode  ; 
  482. EXTERN halfword passnumber  ; 
  483. EXTERN scaled activewidth[7]  ; 
  484. EXTERN scaled curactivewidth[7]  ; 
  485. EXTERN scaled background[7]  ; 
  486. EXTERN scaled breakwidth[7]  ; 
  487. EXTERN boolean noshrinkerroryet  ; 
  488. EXTERN halfword curp  ;
  489. #if 0        /* local in linebreak() */
  490. EXTERN boolean secondpass  ; 
  491. #endif
  492. EXTERN boolean finalpass  ; 
  493. EXTERN integer threshold  ; 
  494. EXTERN integer minimaldemerits[4]  ; 
  495. EXTERN integer minimumdemerits  ; 
  496. EXTERN halfword bestplace[4]  ; 
  497. EXTERN halfword bestplline[4]  ; 
  498. EXTERN scaled discwidth  ; 
  499. EXTERN halfword easyline  ; 
  500. EXTERN halfword lastspecialline  ; 
  501. EXTERN scaled firstwidth  ; 
  502. EXTERN scaled secondwidth  ; 
  503. EXTERN scaled firstindent  ; 
  504. EXTERN scaled secondindent  ; 
  505. EXTERN halfword bestbet  ; 
  506. EXTERN integer fewestdemerits  ; 
  507. EXTERN halfword bestline  ; 
  508. EXTERN integer actuallooseness  ; 
  509. EXTERN integer linediff  ; 
  510. EXTERN short hc[66]  ; 
  511. EXTERN smallnumber hn  ; 
  512. EXTERN halfword ha, hb  ; 
  513. EXTERN internalfontnumber hf  ; 
  514. EXTERN short hu[64]  ; 
  515. EXTERN integer hyfchar  ; 
  516. EXTERN ASCIIcode curlang  ; 
  517. #if 1  /* TeX 3.1415 */
  518. EXTERN ASCIIcode initcurlang  ; 
  519. #endif
  520. EXTERN integer lhyf, rhyf  ;
  521. #if 1  /* TeX 3.1415 */
  522. EXTERN integer initlhyf, initrhyf  ;
  523. #endif
  524. #if 1  /* TeX 3.141 */
  525. EXTERN halfword hyf_bchar;
  526. #endif
  527. EXTERN schar hyf[65]  ; 
  528. EXTERN halfword initlist  ; 
  529. EXTERN boolean initlig  ; 
  530. EXTERN boolean initlft  ; 
  531. EXTERN smallnumber hyphenpassed  ;
  532. #if 0    /* (br) made local in mainctrl(), reconstitute() */
  533. EXTERN halfword curl, curr  ; 
  534. EXTERN halfword curq  ; 
  535. EXTERN halfword ligstack  ; 
  536. #endif
  537. EXTERN boolean ligaturepresent  ; 
  538. EXTERN boolean lfthit, rthit  ; 
  539. INITEXTERN halfword *trietrl;                /* [triesize + 1] */
  540. INITEXTERN halfword *trietro;                /* [triesize + 1] */
  541. INITEXTERN quarterword *trietrc;                /* [triesize + 1] */
  542. EXTERN SMALLhalfword opstart[256];    /* integer */
  543.  
  544. #ifdef HYPHSTRUCT
  545. EXTERN struct hyph_exc {
  546.     strnumber word;
  547.     halfword  list;
  548. } hyph_exc[hyphsize + 1];
  549. #define hyphword(x)    (hyph_exc[x].word)
  550. #define hyphlist(x)    (hyph_exc[x].list)
  551. #else
  552. EXTERN strnumber hyphword[hyphsize + 1]  ; 
  553. EXTERN halfword hyphlist[hyphsize + 1]  ; 
  554. #define hyphword(x)    (hyphword[x])
  555. #define hyphlist(x)    (hyphlist[x])
  556. #endif
  557.  
  558. EXTERN hyphpointer hyphcount;
  559.  
  560. #ifdef HYPHSTRUCT
  561. EXTERN struct hyph_op {
  562.     smallnumber distance;
  563.     smallnumber num;
  564.     trieopcode  next;
  565. } *hyph_op;        /* [trieopsize + 1] */
  566. #define hyfdistance(x)    (hyph_op[x].distance)
  567. #define hyfnum(x)    (hyph_op[x].num)
  568. #define hyfnext(x)    (hyph_op[x].next)
  569. #else
  570. EXTERN smallnumber *hyfdistance;    /* [trieopsize + 1] */
  571. EXTERN smallnumber *hyfnum;        /* [trieopsize + 1] */
  572. EXTERN trieopcode *hyfnext;        /* [trieopsize + 1] ; quarterword */
  573. #define hyfdistance(x)    (hyfdistance[x])
  574. #define hyfnum(x)    (hyfnum[x])
  575. #define hyfnext(x)    (hyfnext[x])
  576. #endif
  577.  
  578. #ifdef INITEX
  579. EXTERN SMALLhalfword *zzzaj; /* [trieopsize - negtrieopsize + 1] ; integer */
  580. #define trieophash (zzzaj - (long)(negtrieopsize))
  581. EXTERN ASCIIcode *trieoplang;    /* [trieopsize + 1] */
  582. EXTERN trieopcode *trieopval;    /* [trieopsize + 1] */
  583. EXTERN trieopcode trieused[256];
  584. EXTERN integer trieopptr;
  585. #endif /* INITEX */
  586.  
  587. EXTERN trieopcode maxopused  ; 
  588. EXTERN boolean smallop  ; 
  589.  
  590. #ifdef INITEX
  591. INITEXTERN packedASCIIcode *triec;                /* [triesize + 1] */
  592. #ifdef ORIGTRIE
  593. INITEXTERN trieopcode *trieo;                /* [triesize + 1] */
  594. INITEXTERN boolean *trietaken;                /* [triesize + 1] */
  595. #else
  596. typedef struct {
  597.   unsigned trietaken:1;
  598.   unsigned trieo:15;
  599. } trie_struct;
  600. INITEXTERN trie_struct *ztrie;                /* [triesize + 1] */
  601. #endif
  602. INITEXTERN triepointer *triel;                /* [triesize + 1] */
  603. INITEXTERN triepointer *trier;                /* [triesize + 1] */
  604. EXTERN triepointer trieptr  ; 
  605. INITEXTERN triepointer *triehash;                /* [triesize + 1] */
  606. EXTERN triepointer triemin[256]  ; 
  607. EXTERN triepointer triemax  ; 
  608. EXTERN boolean trienotready  ; 
  609. #endif /* INITEX */
  610.  
  611. EXTERN scaled bestheightplusdepth  ; 
  612. EXTERN halfword pagetail  ; 
  613. EXTERN schar pagecontents  ; 
  614. EXTERN scaled pagemaxdepth  ; 
  615. EXTERN halfword bestpagebreak  ; 
  616. EXTERN integer leastpagecost  ; 
  617. EXTERN scaled bestsize  ; 
  618. EXTERN scaled pagesofar[8]  ; 
  619. EXTERN halfword lastglue  ; 
  620. EXTERN integer lastpenalty  ; 
  621. EXTERN scaled lastkern  ; 
  622. EXTERN integer insertpenalties  ; 
  623. EXTERN boolean outputactive  ;
  624. #if 0    /* local in mainctrl() und appspace() */
  625. EXTERN internalfontnumber mainf  ; 
  626. EXTERN fourquarters maini  ; 
  627. EXTERN fourquarters mainj  ; 
  628. EXTERN fontindex maink  ;
  629. EXTERN halfword mainp  ;
  630. EXTERN integer mains  ;
  631. #endif
  632. #if 0    /* (br) made local in mainctrl() */
  633. EXTERN halfword bchar  ; 
  634. EXTERN halfword falsebchar  ; 
  635. EXTERN boolean cancelboundary  ; 
  636. EXTERN boolean insdisc  ;
  637. #endif
  638. #if 0    /* (br) made local */
  639. EXTERN halfword curbox  ;
  640. #endif
  641. EXTERN halfword aftertoken  ; 
  642. EXTERN boolean longhelpseen  ; 
  643. EXTERN strnumber formatident  ; 
  644. EXTERN wordfile fmtfile  ; 
  645. EXTERN integer readyalready  ; 
  646. EXTERN alphafile writefile[16]  ; 
  647. EXTERN boolean writeopen[18]  ; 
  648. EXTERN halfword writeloc  ; 
  649. EXTERN poolpointer editnamestart  ;
  650. EXTERN integer editnamelength, editline;
  651.  
  652. #include "coerce.h"
  653.  
  654. /* -- end -- */
  655.