vpage = 1; vch = 2; vhl = 3; vlist = 9; (* next is 20 *) vlm = 20; vrm = 21; vsp = 22; vnmp = 23; volno = 24; vcr = 25; nextvariable = 26; (* next is 26 *) varmax = 140; macchr = '.'; varchr = '$'; cmdchr = '.'; tabmax = 16; linlen = 160; maxenp = 20; hlmax = 5; chrmod = 128; lowercaseconvert = -32 (* ord('A') - ord('a') *); nopage = false; figmax = 10; maxparms = 8; vhlmax = 5; maxerrors = 63; maxhash = 82; alfablanks = ' '; alfalen = 10; stackmax = 20; stgtblsize = 10000; stringlen = 28; {for cpm, hp3000 filenames} blankstring = ' '; (* 123456789012345678901234567890 *) (* ================= *) TYPE alfa = PACKED ARRAY[1..alfalen] OF char; string = PACKED ARRAY[1..stringlen] OF char; stgrange = 1..stgtblsize; vartyp = (vitem, varray); relopr = (eq, gt, lt, ne, ge, le, badrelop); enrange = 0..maxenp; sign = (plus, minus, unsigned, invalid); symtyp = (word, command, vars, none); llen = 0..linlen; lalen = 1..linlen; lineflags = PACKED ARRAY[llen] OF boolean; juslin = RECORD ndx : llen; pos : ARRAY[lalen] OF integer END; (* juslin *) aline = PACKED ARRAY[lalen] OF char; line = RECORD nonprtcount, len : llen; lin, overlin : aline; center, bbar : boolean; hasnonprints, hasoverprinting, hasboldprinting, hasunderscore : boolean; nonprtflgs, usflag, boldflag : lineflags; END; (* line *) cmdtyp = (cblank, cinclude, ccr, cbreak, crespag, cres, cescchr, ccenter, cjust, cul, clmar, crmar, cfill, csig, cpage, csup, cstd, cps, csav, cp, cpp, cap, ci, csp, cs, ctp, cch, chl, cnmp, cpno, ctitle, cst, catitle, clist, cle, celist, cfig, cbar, cbb, ceb, cu, ct, ctab, ctabs, crt, cright, clines, cmacro, cx, cvar, cinc, casis, cdec, (* END OF cmdtyp SET *) cflag, cbold, ccaseflag, cflagcaps, cflagover, cflagsig, clower, cupper, cperiod, csavpag, cfrcpage, ctop, cmid, cbot, carray, cfmt, cif, cdot, crem, cupp, cusb, notcmd); chartype = (uparrow, ucletter, lcletter, leftangle, endsentence, underscore, numbersign, backslash, miscchar, arithchar, otherchar); environ = RECORD j, f, pr, sg, un, bl : boolean; pm, sp : integer; lm, rm, ps, pt : llen; tb : PACKED ARRAY[1..tabmax] OF llen END; (* environ *) mactyp = (header, parm); pmac = ^mac; stringlocation = -1..stgtblsize; stgdescription = RECORD activemacro : pmac; stgposition, stgbegin, stgend : stringlocation; END; (* stgdescription *) mac = RECORD on : boolean; nm : alfa; mt : mactyp; np : 0..maxparms; macrobegin, macroend : stringlocation; ma : pmac; END; (* mac *) inclfptr = ^incfrcd; (* Nested include scheme *) incfrcd = RECORD lno : integer; next : inclfptr; f : text; END; (* incfrcd *) (* ================= *) VAR infile, lst : text; inclf, (* current include file *) freefptr : inclfptr; (* recycled file storage *) {} inputname, {} inclname : string; symtype : symtyp; topofstack : integer; stgstack : ARRAY[0..stackmax] OF stgdescription; stgmarker : integer (* free space pointer from END *); freestgindx : integer (* free space pointer from beginning *); stgtable : PACKED ARRAY[stgrange] OF char; syl, otl, tmpl, addsyl : line; freemacp : pmac; cmds : ARRAY[cmdtyp] OF PACKED ARRAY[1..10] OF char; cmdtype : cmdtyp; perfect : ARRAY[0..maxhash] OF cmdtyp; letperfect : ARRAY['A'..'Z'] OF integer; ap, asis, atitle, bar, bb, bold, doinclfl, escchr, fill, flag, flagcaps, flagover, flagsig, holdbb, justit, lower, para, period, pqend, prel, right, sigbl, sup, ul, undl, usb, xtrabl, yes : boolean; ilno, oetxt, ovetxt, oepag, ovbtxt, pmar : integer; just : juslin; enstk : ARRAY[enrange] OF environ; enp : enrange; parspace, partest, spacing : integer; pagenv : environ; defrb : integer; force, firstch : boolean; figp : 0..figmax; fign : ARRAY[1..figmax] OF integer; rightspace : 0..136; tabs : ARRAY[1..tabmax] OF llen; rt, t, dot : boolean; breakset, optbrkset, crset : SET OF cblank..cdec; empty : boolean; maclstp, defrfrcpgmacp, frcpgmacp, paragmacp, carrtnmacp, midmacp, ttlmacp, stlmacp, chaptermacp, chtmacp : pmac; notmacro : boolean; lastcup : integer; xtend : boolean; lastlen, lastslen : llen; vid : ARRAY[1..varmax] OF alfa; val : ARRAY[1..varmax] OF integer; vty : ARRAY[1..varmax] OF vartyp; vup : ARRAY[1..varmax] OF 1..varmax; varndx, tv : 1..varmax; pushed : boolean; pagsav : line; pagotl : boolean; arelopr : ARRAY[relopr] OF alfa; dangerpoint : integer; exprerr, showexpr : boolean; itemset, termset : SET OF ' '..'_'; romanchars : PACKED ARRAY[1..26] OF char; romanvalues : ARRAY[1..13] OF integer; romlc : boolean; eofinput : boolean; errorsonline : integer; errorset : SET OF 0..maxerrors; starttoken : integer; varname : alfa; errorcount : integer; linecount : integer; makeupper, makelower : PACKED ARRAY[char] OF char; charcategory : ARRAY[char] OF chartype; emptyflags : lineflags;