#undef	TRIP
#undef	TRAP
#define	STAT
#undef	DEBUG
#include "mp.h"
/* 1 9998 9999 */ 
#define memmax 60000L 
#define maxinternal 100 
#define bufsize 500 
#define errorline 79 
#define halferrorline 50 
#define maxprintline 79 
#define emergencylinelength 255 
#define stacksize 30 
#define maxreadfiles 10 
#define maxstrings 2500 
#define stringvacancies 9000 
#define stringsvacant 1000 
#define poolsize 32000 
#define fontmax 50 
#define fontmemsize 10000 
#define filenamesize FILENAMESIZE 
#define poolname "mp.pool" 
#define pstabname "psfonts.map" 
#define memtop 60000L 
#define pathsize 300 
#define bistacksize 785 
#define headersize 100 
#define ligtablesize 5000 
#define maxkerns 500 
#define maxfontdimen 50 
typedef unsigned char ASCIIcode  ; 
typedef unsigned char eightbits  ; 
typedef file_ptr /* of  char */ alphafile  ; 
typedef file_ptr /* of  eightbits */ bytefile  ; 
typedef integer poolpointer  ; 
typedef integer strnumber  ; 
typedef unsigned char poolASCIIcode  ; 
typedef integer scaled  ; 
typedef char smallnumber  ; 
typedef integer fraction  ; 
typedef integer angle  ; 
typedef unsigned char quarterword  ; 
typedef unsigned short halfword  ; 
typedef char twochoices  ; 
typedef char threechoices  ; 
typedef file_ptr /* of  memoryword */ wordfile  ; 
typedef char commandcode  ; 
typedef struct {
    quarterword indexfield ; 
  halfword startfield, locfield, limitfield, namefield ; 
} instaterecord  ; 
typedef integer readfindex  ; 
typedef char writeindex  ; 
typedef integer fontnumber  ; 
EXTERN integer bad  ; 
EXTERN ASCIIcode xord[256]  ; 
EXTERN char xchr[256]  ; 
EXTERN char nameoffile[filenamesize + 1], realnameoffile[filenamesize + 1]  ; 
EXTERN integer namelength  ; 
EXTERN ASCIIcode buffer[bufsize + 1]  ; 
EXTERN integer first  ; 
EXTERN integer last  ; 
EXTERN integer maxbufstack  ; 
EXTERN alphafile termin  ; 
EXTERN alphafile termout  ; 
EXTERN poolASCIIcode strpool[poolsize + 1]  ; 
EXTERN poolpointer strstart[maxstrings + 1]  ; 
EXTERN strnumber nextstr[maxstrings + 1]  ; 
EXTERN poolpointer poolptr  ; 
EXTERN strnumber strptr  ; 
EXTERN poolpointer initpoolptr  ; 
EXTERN strnumber initstruse  ; 
EXTERN poolpointer maxpoolptr  ; 
EXTERN strnumber maxstrptr  ; 
EXTERN integer strsusedup  ; 
EXTERN integer poolinuse  ; 
EXTERN integer strsinuse  ; 
EXTERN integer maxplused  ; 
EXTERN integer maxstrsused  ; 
EXTERN char strref[maxstrings + 1]  ; 
EXTERN strnumber lastfixedstr  ; 
EXTERN strnumber fixedstruse  ; 
EXTERN boolean stroverflowed  ; 
EXTERN integer pactcount  ; 
EXTERN integer pactchars  ; 
EXTERN integer pactstrs  ; 
#ifdef INIMP
EXTERN alphafile poolfile  ; 
#endif /* INIMP */
EXTERN alphafile logfile  ; 
EXTERN alphafile psfile  ; 
EXTERN char selector  ; 
EXTERN char dig[23]  ; 
EXTERN integer tally  ; 
EXTERN integer termoffset  ; 
EXTERN integer fileoffset  ; 
EXTERN integer psoffset  ; 
EXTERN ASCIIcode trickbuf[errorline + 1]  ; 
EXTERN integer trickcount  ; 
EXTERN integer firstcount  ; 
EXTERN char interaction  ; 
EXTERN boolean deletionsallowed  ; 
EXTERN char history  ; 
EXTERN schar errorcount  ; 
EXTERN strnumber helpline[6]  ; 
EXTERN char helpptr  ; 
EXTERN boolean useerrhelp  ; 
EXTERN strnumber errhelp  ; 
EXTERN integer interrupt  ; 
EXTERN boolean OKtointerrupt  ; 
EXTERN boolean aritherror  ; 
EXTERN integer twotothe[31]  ; 
EXTERN integer speclog[29]  ; 
EXTERN angle specatan[27]  ; 
EXTERN fraction nsin, ncos  ; 
EXTERN fraction randoms[55]  ; 
EXTERN char jrandom  ; 
EXTERN memoryword mem[memmax + 1]  ; 
EXTERN halfword lomemmax  ; 
EXTERN halfword himemmin  ; 
EXTERN integer varused, dynused  ; 
EXTERN halfword avail  ; 
EXTERN halfword memend  ; 
EXTERN halfword rover  ; 
#ifdef DEBUG
EXTERN boolean freearr[memmax + 1]  ; 
EXTERN boolean wasfree[memmax + 1]  ; 
EXTERN halfword wasmemend, waslomax, washimin  ; 
EXTERN boolean panicking  ; 
#endif /* DEBUG */
EXTERN scaled internal[maxinternal + 1]  ; 
EXTERN strnumber intname[maxinternal + 1]  ; 
EXTERN integer intptr  ; 
EXTERN char oldsetting, nonpssetting  ; 
EXTERN char charclass[256]  ; 
EXTERN halfword hashused  ; 
EXTERN integer stcount  ; 
EXTERN twohalves hash[2372]  ; 
EXTERN twohalves eqtb[2372]  ; 
EXTERN halfword gpointer  ; 
EXTERN smallnumber 
#define bignodesize (zzzaa -12)
  zzzaa[3]  ; 
EXTERN smallnumber 
#define sector0 (zzzab -12)
  zzzab[3]  ; 
EXTERN smallnumber 
#define sectoroffset (zzzac -5)
  zzzac[9]  ; 
EXTERN halfword saveptr  ; 
EXTERN halfword pathtail  ; 
EXTERN scaled deltax[pathsize + 1], deltay[pathsize + 1], delta[pathsize + 1]  ; 
EXTERN angle psi[pathsize + 1]  ; 
EXTERN angle theta[pathsize + 1]  ; 
EXTERN fraction uu[pathsize + 1]  ; 
EXTERN angle vv[pathsize + 1]  ; 
EXTERN fraction ww[pathsize + 1]  ; 
EXTERN fraction st, ct, sf, cf  ; 
EXTERN scaled bbmin[2], bbmax[2]  ; 
EXTERN fraction halfcos[8]  ; 
EXTERN fraction dcos[8]  ; 
EXTERN scaled curx, cury  ; 
EXTERN smallnumber grobjectsize[8]  ; 
EXTERN integer specoffset  ; 
EXTERN halfword specp1, specp2  ; 
EXTERN char tolstep  ; 
EXTERN integer bisectstack[bistacksize + 1]  ; 
EXTERN integer bisectptr  ; 
EXTERN integer curt, curtt  ; 
EXTERN integer timetogo  ; 
EXTERN integer maxt  ; 
EXTERN integer delx, dely  ; 
EXTERN integer tol  ; 
EXTERN integer uv, xy  ; 
EXTERN integer threel  ; 
EXTERN integer apprt, apprtt  ; 
EXTERN integer serialno  ; 
EXTERN boolean fixneeded  ; 
EXTERN boolean watchcoefs  ; 
EXTERN halfword depfinal  ; 
EXTERN eightbits curcmd  ; 
EXTERN integer curmod  ; 
EXTERN halfword cursym  ; 
EXTERN instaterecord inputstack[stacksize + 1]  ; 
EXTERN integer inputptr  ; 
EXTERN integer maxinstack  ; 
EXTERN instaterecord curinput  ; 
EXTERN char inopen  ; 
EXTERN char openparens  ; 
EXTERN alphafile inputfile[16]  ; 
EXTERN integer linestack[16]  ; 
EXTERN strnumber inamestack[16]  ; 
EXTERN strnumber iareastack[16]  ; 
EXTERN halfword mpxname[16]  ; 
EXTERN halfword paramstack[151]  ; 
EXTERN unsigned char paramptr  ; 
EXTERN integer maxparamstack  ; 
EXTERN integer fileptr  ; 
EXTERN char scannerstatus  ; 
EXTERN integer warninginfo  ; 
EXTERN boolean forceeof  ; 
EXTERN short bgloc, egloc  ; 
EXTERN halfword condptr  ; 
EXTERN char iflimit  ; 
EXTERN smallnumber curif  ; 
EXTERN integer ifline  ; 
EXTERN halfword loopptr  ; 
EXTERN strnumber curname  ; 
EXTERN strnumber curarea  ; 
EXTERN strnumber curext  ; 
EXTERN integer areadelimiter  ; 
EXTERN integer extdelimiter  ; 
EXTERN char MPmemdefault[10]  ; 
EXTERN boolean troffmode  ; 
EXTERN strnumber jobname  ; 
EXTERN boolean logopened  ; 
EXTERN strnumber mplogname  ; 
EXTERN char oldfilename[filenamesize + 1]  ; 
EXTERN integer oldnamelength  ; 
EXTERN alphafile rdfile[maxreadfiles + 1]  ; 
EXTERN strnumber rdfname[maxreadfiles + 1]  ; 
EXTERN readfindex readfiles  ; 
EXTERN alphafile wrfile[5]  ; 
EXTERN strnumber wrfname[5]  ; 
EXTERN writeindex writefiles  ; 
EXTERN smallnumber curtype  ; 
EXTERN integer curexp  ; 
EXTERN integer 
#define maxc (zzzad -17)
  zzzad[2]  ; 
EXTERN halfword 
#define maxptr (zzzae -17)
  zzzae[2]  ; 
EXTERN halfword 
#define maxlink (zzzaf -17)
  zzzaf[2]  ; 
EXTERN char varflag  ; 
EXTERN strnumber eofline  ; 
EXTERN scaled txx, txy, tyx, tyy, tx, ty  ; 
EXTERN quarterword lastaddtype  ; 
EXTERN halfword startsym  ; 
EXTERN boolean longhelpseen  ; 
EXTERN bytefile tfmfile  ; 
EXTERN strnumber metricfilename  ; 
EXTERN eightbits bc, ec  ; 
EXTERN scaled tfmwidth[256]  ; 
EXTERN scaled tfmheight[256]  ; 
EXTERN scaled tfmdepth[256]  ; 
EXTERN scaled tfmitalcorr[256]  ; 
EXTERN boolean charexists[256]  ; 
EXTERN char chartag[256]  ; 
EXTERN integer charremainder[256]  ; 
EXTERN short headerbyte[headersize + 1]  ; 
EXTERN fourquarters ligkern[ligtablesize + 1]  ; 
EXTERN short nl  ; 
EXTERN scaled kern[maxkerns + 1]  ; 
EXTERN integer nk  ; 
EXTERN fourquarters exten[256]  ; 
EXTERN short ne  ; 
EXTERN scaled param[maxfontdimen + 1]  ; 
EXTERN integer np  ; 
EXTERN short nw, nh, nd, ni  ; 
EXTERN integer skiptable[256]  ; 
EXTERN boolean lkstarted  ; 
EXTERN integer bchar  ; 
EXTERN integer bchlabel  ; 
EXTERN integer ll, lll  ; 
EXTERN integer labelloc[257]  ; 
EXTERN eightbits labelchar[257]  ; 
EXTERN short labelptr  ; 
EXTERN scaled perturbation  ; 
EXTERN integer excess  ; 
EXTERN halfword dimenhead[5]  ; 
EXTERN scaled maxtfmdimen  ; 
EXTERN integer tfmchanged  ; 
EXTERN bytefile tfminfile  ; 
EXTERN memoryword fontinfo[fontmemsize + 1]  ; 
EXTERN integer nextfmem  ; 
EXTERN fontnumber lastfnum  ; 
EXTERN scaled fontdsize[fontmax + 1]  ; 
EXTERN strnumber fontname[fontmax + 1]  ; 
EXTERN strnumber fontpsname[fontmax + 1]  ; 
EXTERN fontnumber lastpsfnum  ; 
EXTERN eightbits fontbc[fontmax + 1], fontec[fontmax + 1]  ; 
EXTERN integer charbase[fontmax + 1]  ; 
EXTERN integer widthbase[fontmax + 1]  ; 
EXTERN integer heightbase[fontmax + 1]  ; 
EXTERN integer depthbase[fontmax + 1]  ; 
EXTERN alphafile pstabfile  ; 
EXTERN strnumber firstfilename, lastfilename  ; 
EXTERN integer firstoutputcode, lastoutputcode  ; 
EXTERN integer totalshipped  ; 
EXTERN boolean neednewpath  ; 
EXTERN scaled gsred, gsgreen, gsblue  ; 
EXTERN quarterword gsljoin, gslcap  ; 
EXTERN scaled gsmiterlim  ; 
EXTERN halfword gsdashp  ; 
EXTERN scaled gsdashsc  ; 
EXTERN scaled gswidth  ; 
EXTERN boolean gsadjwx  ; 
EXTERN halfword fontsizes[fontmax + 1]  ; 
EXTERN halfword lastpending  ; 
EXTERN strnumber memident  ; 
EXTERN wordfile memfile  ; 
EXTERN integer readyalready  ; 
EXTERN poolpointer editnamestart  ; 
EXTERN integer editnamelength, editline, tfmtemp  ; 

#include "coerce.h"