#undef TRIP #undef TRAP #define STAT #define INI #define INIMP #define MP #ifdef TEXMF_DEBUG #endif /* TEXMF_DEBUG */ #define MPCOERCE #include "texmfmp.h" /* 1 9998 9999 */ #define maxinternal ( 300 ) #define bufsize ( 3000 ) #define emergencylinelength ( 255 ) #define stacksize ( 300 ) #define maxreadfiles ( 30 ) #define stringsvacant ( 1000 ) #define fontmax ( 50 ) #define fontmemsize ( 10000 ) #define poolname ( "mp.pool" ) #define pstabname ( "psfonts.map" ) #define pathsize ( 1000 ) #define bistacksize ( 1500 ) #define headersize ( 100 ) #define ligtablesize ( 15000 ) #define maxkerns ( 2500 ) #define maxfontdimen ( 50 ) #define infmainmemory ( 2999 ) #define supmainmemory ( 8000000L ) #define infmaxstrings ( 2500 ) #define supmaxstrings ( 32767 ) #define infpoolsize ( 32000 ) #define suppoolsize ( 10000000L ) #define infpoolfree ( 1000 ) #define suppoolfree ( suppoolsize ) #define infstringvacancies ( 8000 ) #define supstringvacancies ( suppoolsize - 23000 ) typedef unsigned char ASCIIcode ; typedef unsigned char eightbits ; typedef text /* of ASCIIcode */ alphafile ; typedef text /* 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 integer halfword ; typedef char twochoices ; typedef char threechoices ; #include "texmfmem.h" typedef text /* 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 ; typedef char strreftype ; EXTERN integer bad ; #ifdef INIMP EXTERN boolean iniversion ; EXTERN boolean dumpoption ; EXTERN boolean dumpline ; #endif /* INIMP */ EXTERN integer bounddefault ; EXTERN char * boundname ; EXTERN integer mainmemory ; EXTERN integer memtop ; EXTERN integer memmax ; EXTERN integer errorline ; EXTERN integer halferrorline ; EXTERN integer maxprintline ; EXTERN integer poolsize ; EXTERN integer stringvacancies ; EXTERN integer poolfree ; EXTERN integer maxstrings ; EXTERN ASCIIcode xord[256] ; EXTERN ASCIIcode xchr[256] ; EXTERN ASCIIcode * nameoffile ; EXTERN integer namelength ; EXTERN ASCIIcode buffer[bufsize + 1] ; EXTERN integer first ; EXTERN integer last ; EXTERN integer maxbufstack ; EXTERN poolASCIIcode * strpool ; EXTERN poolpointer * strstart ; EXTERN strnumber * nextstr ; 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 strreftype * strref ; 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[256] ; EXTERN integer trickcount ; EXTERN integer firstcount ; EXTERN char interaction ; EXTERN char interactionoption ; 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 ; EXTERN halfword lomemmax ; EXTERN halfword himemmin ; EXTERN integer varused, dynused ; EXTERN halfword avail ; EXTERN halfword memend ; EXTERN halfword rover ; #ifdef TEXMF_DEBUG EXTERN boolean freearr[2] ; EXTERN boolean wasfree[2] ; EXTERN halfword wasmemend, waslomax, washimin ; EXTERN boolean panicking ; #endif /* TEXMF_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[9772] ; EXTERN twohalves eqtb[9772] ; 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 integer memdefaultlength ; EXTERN char * MPmemdefault ; EXTERN boolean troffmode ; EXTERN strnumber jobname ; EXTERN boolean logopened ; EXTERN strnumber texmflogname ; EXTERN char * oldfilename ; 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 halfword sepic ; EXTERN scaled sesf ; 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 ; #include "mpcoerce.h"