const char *snl; extern int rem(int p, int q); extern void readsymbol(int typeof_P, void *p); extern real float(int n); extern char * tostring(int p); extern char * substring(char *s, int f, int t); extern int freespace(); extern void svc(int n, struct (null) *r); extern int addr(int typeof_P, void *p); extern int *integer(int n); extern short *shortinteger(int n); extern char *byteinteger(int n); extern char * *string(int n); extern struct (null) record ; (/*should not get here any more*/ int n; /*or here*/) extern real *real(int n); extern long real *longreal(int n); extern char *length(char *s); extern char *charno(char *s, int n); extern int int(real x); extern int intpt(real x); extern void iocp(int n); extern int typeof(int typeof_N, void *n); extern int sizeof(int typeof_N, void *n); extern real fracpt(real x); extern void prompt(char *s); extern int nextsymbol(); extern void skipsymbol(); extern void printsymbol(int sym); extern void printstring(char *s); extern void write(int v, int p); extern void selectinput(int n); extern void selectoutput(int n); extern void openinput(int n, char *fd); extern void openoutput(int n, char *fd); extern void closeinput(); extern void closeoutput(); extern void resetinput(); extern void resetoutput(); extern char * time(); extern char * date(); extern int cputime(); extern int *comreg(int n); extern void read(int typeof_X, void *x); extern void print(real val, int before, int after); extern void printfl(real val, int places); extern void space(); extern void spaces(int n); extern void newline(); extern void newlines(int n); typedef struct FILEFM{int unit; int owner; int n1; int n2;} filefm; typedef struct EVENTFM{int event; int sub; int extra; char *message; int pc; int x;} eventfm; extern struct EVENTFM event; extern void closeoutput(); extern void closeinput(); extern void openoutput(int i, char *s); extern void openinput(int i, char *s); typedef struct IMPCOMFM{int statements; int flags; int code; int gla; int diags; int perm; char *file; char *option;} impcomfm; extern struct IMPCOMFM impcom; int main(int argc, char **argv) { const char *version; static int sparenames; typedef struct ARFM{short class; short sub; short link; short ptype; short papp; short pformat; short x; short pos;} arfm; typedef struct TAGFM{int app; int format; short flags; short index; short text; short link;} tagfm; // bounds [0 : 15] // do it now: const char {*,2}amap {NO INIT} // bounds [0 : 15] // do it now: const char {*,2}atoms {NO INIT} // ON DIM DO: struct ARFM {*,0}ar // bounds [1 : 520] DIM 0x0001 0x0001 static int class; static int x; static int atom1; static int atom2; static int subatom; static int type; static int app; static int format; int hashvalue; static int faulty; static int faultrate; static int lines; static int textline; static int margin; static int errormargin; static int errorsym; static int column; static int stats; static int monpos; static int sym; static int symtype; static int quote; static int endmark; static int cont; static int csym; static int decl; static int dim; static int specgiven; static int escapeclass; static int protection; static int atomflags; static int otype; static int realsln; static int last1; static int gentype; static int ptype; static int papp; static int pformat; static int force; static int g; static int gg; static int mapgg; static int fdef; static int this; static int nmin; static int nmax; static int rbase; static int stbase; static int gmin; static int dmax; static int tmin; static int ss; char *includefile; static int includelist; static int includelevel; static int include; static int perm; static int progmode; static int sstype; static int specmode; static int ocount; static int limit; static int copy; static int order; static int forwarn; static int dubious; static int dp; static int pos1; static int pos2; static int pos; static int dimension; static int local; static int fmbase; static int searchbase; static int formatlist; int recid; // bounds [0 : 133] // do it now: static char {*,1}char {NO INIT} // ON DIM DO: int {*,0}litpool // bounds [0 : 50] DIM 0x0001 0x0001 static int lit; static int lp; static int blockx; static int list; static int control; static int diag; // ON DIM DO: short {*,0}hash // bounds [0 : 2047] DIM 0x0001 0x0001 // ON DIM DO: struct TAGFM {*,0}tag // bounds [0 : 800] DIM 0x0001 0x0001 // ON DIM DO: short {*,0}dict // bounds [1 : 6000] DIM 0x0001 0x0001 // ON DIM DO: char {*,0}buff // bounds [1 : 512] DIM 0x0001 0x0001 static int bp; // bounds [0 : 255] // do it now: const char * {*,2}text {NO INIT} static int gmax; // bounds [200 : 255] // do it now: static short {*,1}phrase {NO INIT} // bounds [130 : 179] // do it now: const char {*,2}atomic {NO INIT} // bounds [0 : 119] // do it now: const short {*,2}initial {NO INIT} // bounds [0 : 1720] // do it now: static short {*,1}gram {NO INIT} // bounds [0 : 1720] // do it now: static short {*,1}glink {NO INIT} // bounds [32 : 607] // do it now: const short {*,2}kdict {NO INIT} goto L_0001; void flushbuffer() { int j; if (faulty != 0) goto L_0002; selectoutput(1); for (j = 1; j += 1; j != bp) { printsymbol(buff[j]); } L_0006: selectoutput(2); L_0002: bp = 0; return(0); } L_0001: goto L_0007; void printident(int p, int mode) { int j; int ad; p = tag[p].text; if (p != 0) goto L_0008; if (mode == 0) goto L_0009; bp = (bp + 1); buff[bp] = 63; L_0009: return; L_0008: ad = addr(dict[(p + 1)]); if (mode != 0) goto L_000a; printstring(string(ad)); goto L_000b; L_000a: for (j = (ad + 1); j += 1; j != (ad + *byteinteger(ad))) { bp = (bp + 1); buff[bp] = *byteinteger(j); } L_000f: L_000b: L_0007: goto L_0010; void abandon(int n) { // bounds [0 : 9] /*todo: gcc jump table extension*/ void **reason; int stream; stream = 2; for (;;) { L_0011: if (sym == 10) goto L_0012; newline(); L_0012: printsymbol(42); write(lines, 4); space(); goto *reason[n]; reason_0: printstring("compiler error!"); goto U_00a9; reason_1: printstring("switch vector too large"); goto U_00a9; reason_2: printstring("too many names"); goto U_00a9; reason_3: printstring("program too complex"); goto U_00a9; reason_4: printstring("feature not implemented"); goto U_00a9; reason_5: printstring("input ended: "); if (quote == 0) goto L_0013; if (quote >= 0) goto L_0014; printsymbol(39); goto L_0015; L_0014: printsymbol(34); L_0015: goto L_0016; L_0013: printstring("%endof"); if (progmode < 0) goto L_0017; printstring("program"); goto L_0018; L_0017: printstring("file"); L_0018: L_0016: printstring(" missing?"); goto U_00a9; reason_6: printstring("too many faults!"); goto U_00a9; reason_7: printstring("string constant too long"); goto U_00a9; reason_8: printstring("dictionary full"); goto U_00a9; reason_9: printstring("Included file "); U_00a9: newline(); printstring("*** compilation abandoned ***"); newline(); if (stream != 0) goto L_0019; goto L_001a; L_0019: closeoutput(); stream = 0; selectoutput(0); } L_001a: exit(0); L_0010: goto L_001b; void op(int code, int param) { buff[(bp + 1)] = code; buff[(bp + 2)] = (param >> 8); buff[(bp + 3)] = param; bp = (bp + 3); L_001b: goto L_001c; void setconst(int m) { buff[(bp + 1)] = 78; buff[(bp + 5)] = m; m = (m >> 8); buff[(bp + 4)] = m; m = (m >> 8); buff[(bp + 3)] = m; m = (m >> 8); buff[(bp + 2)] = m; bp = (bp + 5); L_001c: goto L_001d; void compileblock(int level, int blocktag, int dmin, int tmax, int id) { int gapp(); void deletenames(int quiet); void analyse(); void compile(); int open; open = 16384; int dbase; dbase = dmax; int tbase; tbase = tmax; int tstart; tstart = tmax; int label; label = 4; int access; access = 1; int inhibit; inhibit = 0; short *bflags; bflags = &tag[blocktag].flags; int blocktype; blocktype = ((*bflags >> 4) & 7); int blockform; blockform = (*bflags & 15); int blockfm; blockfm = tag[blocktag].format; int blockotype; blockotype = otype; int *blockapp; blockapp = &tag[blocktag].app; int l; int newapp; goto L_001d; void fault(int n) { // bounds [-5 : 22] /*todo: gcc jump table extension*/ void **fm; int st; goto L_001d; void printss() { int s; int p; if (pos != 0) goto L_001e; return; L_001e: space(); p = 1; for (;;) { L_001f: if (p != pos1) goto L_0020; printsymbol(94); L_0020: if (p != pos) goto L_0021; goto L_0022; L_0021: s = char[p]; p = (p + 1); if (s == 10) goto L_0023; if (s != 37) goto L_0024; if (p != pos) goto L_0024; L_0023: goto L_0022; L_0024: if (s >= 32) goto L_0025; if (s != 12) goto L_0026; s = 10; goto L_0027; L_0026: s = 32; L_0027: L_0025: printsymbol(s); } L_0022: if (list > 0) goto L_0028; pos = 0; L_0028: L_001d: if (pos2 <= pos1) goto L_0029; pos1 = pos2; L_0029: if (sym == 10) goto L_002a; newline(); L_002a: st = 0; if (n != (-3)) goto L_002b; st = 2; L_002b: for (;;) { L_002c: selectoutput(st); if (n >= 0) goto L_002d; printsymbol(63); pos1 = 0; goto L_002e; L_002d: printsymbol(42); L_002e: if (st == 0) goto L_002f; if (list > 0) goto L_0030; if (pos1 == 0) goto L_0030; spaces((pos1 + margin)); printstring(" ! "); L_0030: goto L_0031; L_002f: if (include == 0) goto L_0032; printstring(includefile); L_0032: write(lines, 4); printsymbol(csym); space(); L_0031: if ((-5) > n) goto L_0033; if (n > 22) goto L_0033; goto *fm[n]; L_0033: printstring("fault"); write(n, 2); goto U_00c6; fm_-5: printstring("Dubious statement"); dubious = 0; goto U_00c7; fm_-4: printstring("Non-local"); pos1 = forwarn; forwarn = 0; goto U_00c6; fm_-3: printident(x, 0); printstring(" unused"); goto U_00c8; fm_-2: printstring("\"}\""); goto U_00c9; fm_-1: printstring("access"); goto U_00c7; fm_0: printstring("form"); goto U_00c6; fm_1: printstring("atom"); goto U_00c6; fm_2: printstring("not declared"); goto U_00c6; fm_3: printstring("too complex"); goto U_00c6; fm_4: printstring("duplicate "); printident(x, 0); goto U_00c6; fm_5: printstring("type"); goto U_00c6; fm_6: printstring("match"); goto U_00c7; fm_7: printstring("context"); goto U_00c7; fm_21: printstring("context "); printident(this, 0); goto U_00c6; fm_8: printstring("%cycle"); goto U_00c9; fm_9: printstring("%start"); goto U_00c9; fm_10: printstring("size"); if (pos1 != 0) goto L_0034; write(lit, 1); L_0034: goto U_00c6; fm_11: printstring("bounds"); if (ocount < 0) goto L_0035; write(ocount, 1); L_0035: goto U_00c6; fm_12: printstring("index"); goto U_00c6; fm_13: printstring("order"); goto U_00c7; fm_14: printstring("not a location"); goto U_00c6; fm_15: printstring("%begin"); goto U_00c9; fm_16: printstring("%end"); goto U_00c9; fm_17: printstring("%repeat"); goto U_00c9; fm_18: printstring("%finish"); goto U_00c9; fm_19: printstring("result"); goto U_00c9; fm_22: printstring("format"); goto U_00c6; fm_20: printsymbol(34); printident(x, 0); printsymbol(34); U_00c9: printstring(" missing"); goto U_00c8; U_00c7: pos1 = 0; U_00c6: printss(); U_00c8: newline(); if (st != 2) goto L_0036; goto L_0037; L_0036: st = 2; } L_0037: if (n < 0) goto L_0038; if ((diag & 4096) == 0) goto L_0039; exit(0); L_0039: if (n == 13) goto L_003a; ocount = (-1); gg = 0; copy = 0; quote = 0; searchbase = 0; escapeclass = 0; gg = 0; L_003a: faulty = (faulty + 1); faultrate = (faultrate + 3); if (faultrate <= 30) goto L_003b; abandon(6); L_003b: if (faultrate > 0) goto L_003c; faultrate = 3; L_003c: L_0038: tbase = tstart; if (list > 0) goto L_003d; if (sym == 10) goto L_003d; errormargin = column; errorsym = sym; sym = 10; L_003d: for (;;) { L_003e: dmin = (dmin - 1); dict[dmin] = (-1); if (dmax != dmin) goto L_003f; abandon(2); L_003f: if (list <= 0) goto L_0040; if (level <= 0) goto L_0040; write(lines, 5); spaces(((level * 3) - 1)); if (blocktag != 0) goto L_0041; printstring("Begin"); goto L_0042; L_0041: printstring("Procedure "); printident(blocktag, 0); L_0042: newline(); L_0040: if (blocktag == 0) goto L_0043; analyse(); if (ss == 0) goto L_0044; compile(); L_0044: if (blockotype == 0) goto L_0045; if ((*bflags & 128) != 0) goto L_0046; if (progmode > 0) goto L_0047; if (level != 1) goto L_0047; progmode = (-1); goto L_0048; L_0047: fault(7); L_0048: L_0046: L_0045: newapp = gapp(); if (specgiven == 0) goto L_0049; if (newapp == *blockapp) goto L_004a; fault(6); L_004a: L_0049: *blockapp = newapp; if (level >= 0) goto L_004b; deletenames(0); return; L_004b: goto L_004c; L_0043: open = 0; L_004c: for (;;) { L_004d: analyse(); if (ss != 0) goto L_004e; goto L_004f; L_004e: compile(); if (dubious == 0) goto L_0050; fault((-5)); L_0050: if (bp < 128) goto L_0051; flushbuffer(); L_0051: if (sstype <= 0) goto L_0052; if (sstype != 2) goto L_0053; goto L_0054; L_0053: compileblock(specmode, blockx, dmin, tmax, id); if (ss >= 0) goto L_0055; goto L_0054; L_0055: L_0052: L_004f: } L_0054: if (list <= 0) goto L_0056; if (level <= 0) goto L_0056; write(lines, 5); spaces(((level * 3) - 1)); printstring("End"); newline(); L_0056: deletenames(0); return; goto L_003e; int gapp() { void setcell(int g, int tt); void class(struct TAGFM *v); struct TAGFM *v; int p; int link; int tp; int c; int ap; int t; if (tmax != local) goto L_0057; return(0); L_0057: p = 719; link = 0; t = tmax; for (;;) { L_0058: v = &tag[t]; t = (t - 1); class(*v); if (c >= 0) goto L_0059; c = (-c); setcell(196, tp); tp = (-1); L_0059: setcell(c, tp); if (t != local) goto L_005a; goto L_005b; L_005a: setcell(140, (-1)); } L_005b: if (gmax <= gmin) goto L_005c; abandon(3); L_005c: return(link); goto L_003e; void setcell(int g, int tt) { for (;;) { L_005d: if (p == gmax) goto L_005e; p = (p + 1); if (glink[p] != link) goto L_005f; if (gram[p] != g) goto L_005f; if (tt < 0) goto L_0060; if (gram[(p + 1)] != tt) goto L_0061; if (glink[(p + 1)] != ap) goto L_0061; L_0060: link = p; return; L_0061: L_005f: } L_005e: gmax = (gmax + 1); gram[gmax] = g; glink[gmax] = link; link = gmax; if (tt < 0) goto L_0062; gmax = (gmax + 1); gram[gmax] = tt; glink[gmax] = ap; L_0062: p = gmax; L_003e: goto L_0063; void class(struct TAGFM *v) { // bounds [0 : 15] // do it now: const int {*,2}classmap {NO INIT} int tags; int type; int form; ap = 0; tags = v->flags; type = ((tags >> 4) & 7); form = (tags & 15); tp = ((v->format << 3) | type); c = classmap[form]; if (type != 0) goto L_0064; if (form != 2) goto L_0064; c = 208; tp = 0; L_0064: if ((tags & 4096) == 0) goto L_0065; ap = v->app; L_0065: L_0063: for (;;) { L_0066: goto L_0066; void deletenames(int quiet) { int flags; struct TAGFM *tx; for (;;) { L_0067: if (tmax <= tbase) goto L_0068; x = tmax; tmax = (tmax - 1); tx = &tag[x]; flags = tx->flags; if ((flags & 128) == 0) goto L_0069; if ((flags & 512) != 0) goto L_0069; fault(20); L_0069: if ((flags & 32768) != 0) goto L_006a; if (level < 0) goto L_006a; if (list > 0) goto L_006a; if (quiet != 0) goto L_006b; fault((-3)); L_006b: L_006a: dict[tx->text] = tx->link; } L_0068: L_0066: goto L_006c; void analyse() { int strp; int mark; int flags; int proterr; int k; int s; int c; static int key; short node; short *z; struct ARFM *arp; // bounds [180 : 200] /*todo: gcc jump table extension*/ void **act; // bounds [0 : 15] /*todo: gcc jump table extension*/ void **paction; goto L_006c; void traceanalysis() { int a; goto L_006c; void show(int a) { if (0 >= a) goto L_006d; if (a >= 130) goto L_006d; space(); printstring(text[a]); goto L_006e; L_006d: write(a, 3); L_006e: L_006c: static int la1; static int la2; static int lsa; static int lt; if (monpos == pos) goto L_006f; if (sym == 10) goto L_006f; newline(); L_006f: monpos = pos; write(g, 3); space(); printstring(text[class]); if ((gg & 16384) == 0) goto L_0070; printsymbol(34); L_0070: a = ((gg >> 8) & 15); if (a == 0) goto L_0071; printsymbol(123); write(a, 0); printsymbol(125); L_0071: if (atom1 != la1) goto L_0072; if (atom2 != la2) goto L_0072; if (lsa != subatom) goto L_0072; if (lt == type) goto L_0073; L_0072: printstring(" ["); la1 = atom1; show(la1); la2 = atom2; show(la2); lsa = subatom; write(lsa, 3); lt = type; write(lt, 5); printsymbol(93); L_0073: newline(); for (;;) { L_0074: goto L_0074; void getsym() { readsymbol(sym); if (pos == 133) goto L_0075; pos = (pos + 1); L_0075: char[pos] = sym; if (list > 0) goto L_0076; printsymbol(sym); L_0076: column = (column + 1); L_0074: goto L_0077; void readsym() { static int last; // bounds [0 : 127] // do it now: const char {*,2}mapped {NO INIT} if (sym != 10) goto L_0078; U_00d4: lines = (lines + 1); if (endmark == 0) goto L_0079; printsymbol(endmark); L_0079: U_00d5: pos = 0; pos1 = 0; pos2 = 0; margin = 0; column = 0; last = 0; endmark = 0; if (list > 0) goto L_007a; if (include == 0) goto L_007b; printstring(" &"); write(lines, (-4)); goto L_007c; L_007b: write(lines, 5); L_007c: csym = cont; printsymbol(csym); space(); if (errormargin == 0) goto L_007d; lines = (lines - 1); spaces(errormargin); errormargin = 0; if (errorsym == 0) goto L_007e; printsymbol(errorsym); pos = 1; *byteinteger((addr(char[0]) + 1)) = errorsym; sym = errorsym; errorsym = 0; goto U_00d6; L_007e: L_007d: L_007a: U_00d7: symtype = 1; L_0078: U_00d8: readsymbol(sym); if (pos == 133) goto L_007f; pos = (pos + 1); L_007f: char[pos] = sym; if (list > 0) goto L_0080; printsymbol(sym); L_0080: column = (column + 1); U_00d6: if (sym == 10) goto L_0081; last = sym; if (quote == 0) goto L_0082; return; L_0082: sym = mapped[(sym & 127)]; if (sym > 3) goto L_0083; if (sym != 0) goto L_0084; goto U_00d7; L_0084: if (sym != 1) goto L_0085; symtype = 2; goto U_00d8; L_0085: if (sym != 3) goto L_0086; cont = 43; goto U_00d5; L_0086: for (;;) { L_0087: getsym(); if (sym != 125) goto L_0088; goto U_00d8; L_0088: if (sym != 10) goto L_0089; goto U_00d9; L_0089: } L_0083: key = kdict[sym]; if ((key & 3) != 0) goto L_008a; if (symtype != 2) goto L_008a; if (sym != 67) goto L_008b; if (nextsymbol() != 10) goto L_008b; getsym(); cont = 43; goto U_00d4; L_008b: goto L_008c; L_008a: symtype = ((key & 3) - 2); L_008c: return; L_0081: U_00d9: symtype = quote; if (last != 0) goto L_008d; if (quote != 0) goto L_008d; goto U_00d4; L_008d: cont = 43; L_0077: goto L_008e; int formatselected() { formatlist = tag[format].app; if (formatlist >= 0) goto L_008f; atom1 = (32768 + 22); return(0); L_008f: if (sym != 95) goto L_0090; escapeclass = 255; searchbase = tag[format].format; L_0090: return(1); L_008e: goto L_0091; void codeatom(int target) { int dbase; int da; int base; int n; int mul; int pendquote; int j; int k; int l; int pt; goto L_0091; void lookup(int d) { int newname; int vid; int k1; int k2; int form; struct TAGFM *t; int new; new = addr(dict[(dmax + 1)]); k2 = (hashvalue * 6700421); k2 = ((k2 >> (32 - (2 * 11))) | 1); k1 = (k2 >> 11); for (;;) { L_0092: newname = hash[k1]; if (newname != 0) goto L_0093; goto L_0094; L_0093: if (string(addr(dict[(newname + 1)])) != string(new)) goto L_0095; goto U_00e8; L_0095: k1 = ((k1 + k2) & 2047); } L_0094: sparenames = (sparenames - 1); if (sparenames > 0) goto L_0096; abandon(2); L_0096: hash[k1] = dmax; dict[dmax] = (-1); newname = dmax; dmax = dp; goto U_00e9; U_00e8: if (this < 0) goto L_0097; if (d == 0) goto L_0097; searchbase = rbase; L_0097: if (searchbase == 0) goto L_0098; new = (-1); x = searchbase; for (;;) { L_0099: if (x >= formatlist) goto L_009a; goto U_00e9; L_009a: if (tag[x].text != newname) goto L_009b; goto L_009c; L_009b: x = (x - 1); } L_009c: goto L_009d; L_0098: x = dict[newname]; if (x > limit) goto L_009e; goto U_00e9; L_009e: L_009d: subatom = x; t = &tag[x]; atomflags = t->flags; format = t->format; app = t->app; protection = (atomflags & 256); type = ((atomflags >> 4) & 7); atom1 = amap[(atomflags & 15)]; if ((diag & 8) == 0) goto L_009f; printstring("lookup:"); write(atom1, 3); write(type, 1); write(app, 3); write(format, 5); write(atomflags, 3); newline(); L_009f: if (d != 0) goto L_00a0; t->flags = (t->flags | 32768); searchbase = 0; if ((atomflags & 2048) == 0) goto L_00a1; if (format == 0) goto L_00a1; if (formatselected() != 0) goto L_00a2; return; L_00a2: L_00a1: if ((atomflags & 4096) == 0) goto L_00a3; if (app != 0) goto L_00a4; atom2 = atom1; atom1 = (atom1 - 4); if (97 > atom1) goto L_00a5; if (atom1 > 98) goto L_00a5; mapgg = atom1; atom1 = 91; L_00a5: goto L_00a6; L_00a4: if (sym != 40) goto L_00a7; searchbase = 0; if (atom1 < 106) goto L_00a8; app = phrase[(app + 200)]; escapeclass = 254; atom1 = (((atom1 - 106) >> 1) + 91); goto L_00a9; L_00a8: escapeclass = 253; atom1 = (atom1 - 4); L_00a9: phrase[200] = app; L_00a7: L_00a6: pos2 = pos; return; L_00a3: if ((atomflags & 8192) == 0) goto L_00aa; if (atom1 != 91) goto L_00aa; mapgg = 93; atom2 = 93; if (type != 1) goto L_00ab; subatom = (-subatom); L_00ab: L_00aa: return; L_00a0: if (tbase == tstart) goto L_00ac; goto U_00e9; L_00ac: if (d != ((3 + 128) + 32768)) goto L_00ad; t->flags = (t->flags | 32768); return; L_00ad: if ((atomflags & 128) == 0) goto L_00ae; if (d != 3) goto L_00af; t->flags = (t->flags - 128); return; L_00af: if (7 > (decl & 15)) goto L_00b0; if ((decl & 15) > 10) goto L_00b0; if ((decl & 128) != 0) goto L_00b0; if (((decl ^ atomflags) & 127) != 0) goto L_00b1; t->flags = (t->flags - 128); specgiven = 1; return; L_00b1: L_00b0: if ((decl & 15) != 4) goto L_00b2; t->flags = ((4 << 4) + 4); t->format = fdef; return; L_00b2: L_00ae: if (last1 != 54) goto L_00b3; if (atom1 != 105) goto L_00b3; return; L_00b3: if (copy != 0) goto L_00b4; copy = x; L_00b4: U_00e9: app = 0; vid = 0; atom1 = (32768 + 2); if (d != 0) goto L_00b5; return; L_00b5: type = ((d >> 4) & 7); form = (d & 15); atom1 = amap[form]; if (this >= 0) goto L_00b6; new = newname; tmax = (tmax + 1); x = tmax; goto L_00b7; L_00b6: new = (-1); recid = (recid - 1); vid = recid; tmin = (tmin - 1); x = tmin; formatlist = tmin; L_00b7: if (11 > form) goto L_00b8; if (form > 14) goto L_00b8; if (dim != 0) goto L_00b9; dim = 1; L_00b9: app = dim; L_00b8: if (otype <= 2) goto L_00ba; if ((d & 128) == 0) goto L_00bb; L_00ba: if (perm != 0) goto L_00bb; if (level != includelevel) goto L_00bc; L_00bb: d = (d | 32768); L_00bc: t = &tag[x]; if (form != 3) goto L_00bd; id = (id + 1); vid = id; L_00bd: t->index = vid; t->text = newname; t->flags = d; t->app = app; t->format = fdef; format = fdef; subatom = x; if (new < 0) goto L_00be; t->link = dict[new]; dict[new] = x; if (gmin != 1720) goto L_00bf; tmin = (tmin - 1); subatom = tmin; tag[tmin] = *t; L_00bf: L_00be: if (tmax < tmin) goto L_00c0; abandon(3); L_00c0: L_0091: U_00e0: pos1 = pos; subatom = 0; pendquote = 0; atomflags = 0; if (symtype != (-2)) goto L_00c1; goto U_00e1; L_00c1: if (symtype >= 0) goto L_00c2; goto U_00e2; L_00c2: if (symtype != 0) goto L_00c3; atom1 = 20; atom2 = 0; return; L_00c3: if (symtype == 2) goto L_00c4; if (quote == 0) goto L_00c5; goto U_00e3; L_00c5: if (sym != 34) goto L_00c6; goto U_00e4; L_00c6: if (sym != 39) goto L_00c7; goto U_00e5; L_00c7: if (sym != 46) goto L_00c8; if (48 > nextsymbol()) goto L_00c8; if (nextsymbol() > 57) goto L_00c8; goto U_00e2; L_00c8: L_00c4: k = (key >> 2); readsym(); for (;;) { L_00c9: j = kdict[k]; if ((j & 16384) == 0) goto L_00ca; goto L_00cb; L_00ca: if ((j & 127) != sym) goto L_00cc; if (symtype >= 0) goto L_00cd; L_00cc: if (j < 0) goto L_00ce; goto U_00e6; L_00ce: k = (k + 1); goto L_00cf; L_00cd: l = ((j >> 7) & 127); readsym(); if (j <= 0) goto L_00d0; if (l == 0) goto L_00d1; if (l != sym) goto L_00d2; if (symtype >= 0) goto L_00d3; L_00d2: goto U_00e6; L_00d3: readsym(); L_00d1: l = 1; L_00d0: k = (k + l); L_00cf: } L_00cb: atom1 = (j & 127); if (atom1 != 0) goto L_00d4; atom1 = 19; subatom = 19; atom2 = 0; if (sym != 10) goto L_00d5; if (ocount < 0) goto L_00d6; return; L_00d6: readsym(); L_00d5: return; L_00d4: atom2 = ((j >> 7) & 127); subatom = (kdict[(k + 1)] & 16383); return; U_00e6: atom1 = (32768 + 1); atom2 = 0; if ((pos - pos1) <= 2) goto L_00d7; pos1 = pos; L_00d7: return; U_00e5: atom1 = 91; atom2 = 93; type = 1; mapgg = 93; protection = 256; subatom = lp; if (lp < 50) goto L_00d8; abandon(3); L_00d8: quote = (\pendquote); return; U_00e7: n = 0; cont = 39; for (;;) { L_00d9: readsym(); if (sym != 39) goto L_00da; if (nextsymbol() == 39) goto L_00db; goto L_00dc; L_00db: readsym(); L_00da: if ((n & (\((-1) >> 8))) == 0) goto L_00dd; pos1 = pos; atom1 = (32768 + 10); return; L_00dd: if (quote != 0) goto L_00de; goto U_00e6; L_00de: n = ((n << 8) + sym); quote = (quote + 1); } L_00dc: quote = 0; cont = 32; if (sym == 10) goto L_00df; readsym(); L_00df: litpool[lp] = n; lp = (lp + 1); goto U_00e0; U_00e4: atom1 = 91; atom2 = 93; type = 3; subatom = ((strp - stbase) | 16384); mapgg = 93; protection = 256; quote = subatom; textline = lines; return; U_00e3: if (quote >= 0) goto L_00e0; goto U_00e7; L_00e0: l = strp; n = strp; j = addr(glink[(gmin - 1)]); k = (l + 256); if (j >= k) goto L_00e1; k = j; L_00e1: for (;;) { L_00e2: cont = 34; quote = 1; for (;;) { L_00e3: readsym(); if (sym != 34) goto L_00e4; if (nextsymbol() == 34) goto L_00e5; goto L_00e6; L_00e5: readsym(); L_00e4: l = (l + 1); *byteinteger(l) = sym; if (l < k) goto L_00e7; lines = textline; abandon(7); L_00e7: } L_00e6: *byteinteger(n) = (l - n); strp = (l + 1); quote = 0; cont = 32; readsym(); codeatom(target); if (atom1 != 48) goto L_00e8; if (sym == 34) goto L_00e9; L_00e8: return; L_00e9: } goto L_00ea; void get(int limit) { int s; int shift; shift = 0; if (base == 10) goto L_00eb; if (base != 16) goto L_00ec; shift = 4; goto L_00ed; L_00ec: if (base != 8) goto L_00ee; shift = 3; goto L_00ef; L_00ee: if (base != 2) goto L_00f0; shift = 1; L_00f0: L_00ef: L_00ed: L_00eb: n = 0; for (;;) { L_00f1: if (symtype != (-1)) goto L_00f2; s = (sym - 48); goto L_00f3; L_00f2: if (symtype >= 0) goto L_00f4; s = ((sym - 65) + 10); goto L_00f5; L_00f4: return; L_00f5: L_00f3: if (s < limit) goto L_00f6; return; L_00f6: pt = (pt + 1); *byteinteger(pt) = sym; if (base != 10) goto L_00f7; if (n < 214748364) goto L_00f8; if (s > 7) goto L_00f9; if (n <= 214748364) goto L_00f8; L_00f9: base = 0; type = 2; n = 0; L_00f8: L_00f7: if (shift != 0) goto L_00fa; n = ((n * base) + s); goto L_00fb; L_00fa: n = ((n << shift) + s); L_00fb: readsym(); } L_00ea: U_00e2: base = 10; U_00e9: atom1 = 91; atom2 = 93; type = 1; subatom = lp; mapgg = 93; protection = 256; if (lp < 50) goto L_00fc; abandon(3); L_00fc: pt = strp; mul = 0; for (;;) { L_00fd: get(base); if (sym != 95) goto L_00fe; if (base == 0) goto L_00fe; if (pendquote == 0) goto L_00ff; L_00fe: goto L_0100; L_00ff: pt = (pt + 1); *byteinteger(pt) = 95; readsym(); base = n; } L_0100: if (pendquote == 0) goto L_0101; if (sym == 39) goto L_0102; goto U_00e6; L_0102: readsym(); L_0101: if (sym != 46) goto L_0103; pt = (pt + 1); *byteinteger(pt) = 46; readsym(); type = 2; n = base; base = 0; get(n); L_0103: if (sym != 64) goto L_0104; pt = (pt + 1); *byteinteger(pt) = 64; k = pt; readsym(); type = 1; base = 10; if (sym != 45) goto L_0105; readsym(); get(10); n = (-n); goto L_0106; L_0105: get(10); L_0106: pt = (k + 1); *byteinteger(pt) = lp; litpool[lp] = n; lp = (lp + 1); if (base != 0) goto L_0107; atom1 = (32768 + 10); L_0107: type = 2; L_0104: if (type != 2) goto L_0108; *byteinteger(strp) = (pt - strp); subatom = ((strp - stbase) | 8192); strp = (pt + 1); goto L_0109; L_0108: litpool[lp] = n; lp = (lp + 1); L_0109: return; U_00e1: if (27 > target) goto L_010a; if (target > 41) goto L_010a; atom1 = 0; return; L_010a: hashvalue = 0; dp = (dmax + 1); da = addr(dict[dp]); dbase = da; for (;;) { L_010b: hashvalue = (hashvalue + (hashvalue + sym)); da = (da + 1); *byteinteger(da) = sym; readsym(); if (symtype < 0) goto L_010c; goto L_010d; L_010c: } L_010d: if (sym != 39) goto L_010e; pendquote = 100; if (hashvalue != 77) goto L_010f; goto U_00e5; L_010f: readsym(); if (hashvalue != 88) goto L_0110; base = 16; goto U_00e9; L_0110: if (hashvalue == 75) goto L_0111; if (hashvalue != 79) goto L_0112; L_0111: base = 8; goto U_00e9; L_0112: if (hashvalue != 66) goto L_0113; base = 2; goto U_00e9; L_0113: goto U_00e6; L_010e: n = (da - dbase); *byteinteger(dbase) = n; dp = (dp + ((n + 2) >> 1)); if (dp < dmin) goto L_0114; abandon(8); L_0114: atom2 = 90; if (last1 != 0) goto L_0115; if (sym != 58) goto L_0115; limit = local; lookup(3); return; L_0115: if (last1 != 54) goto L_0116; limit = local; lookup(((3 + 128) + 32768)); return; L_0116: if (decl == 0) goto L_0117; if (target != 90) goto L_0117; searchbase = fmbase; limit = local; lookup(decl); searchbase = 0; goto L_0118; L_0117: limit = 0; lookup(0); L_0118: for (;;) { L_0119: goto L_0119; int parsedmachinecode() { goto L_0119; void octal(int n) { int m; m = (n >> 3); if (m == 0) goto L_011a; octal(m); L_011a: bp = (bp + 1); buff[bp] = ((n & 7) + 48); L_0119: if (symtype == (-2)) goto L_011b; atom1 = 32768; return(0); L_011b: if (bp < 128) goto L_011c; flushbuffer(); L_011c: bp = (bp + 1); buff[bp] = 119; for (;;) { L_011d: bp = (bp + 1); buff[bp] = sym; readsym(); if (symtype < 0) goto L_011e; goto L_011f; L_011e: } L_011f: bp = (bp + 1); buff[bp] = 95; if (symtype == 0) goto L_0120; if (sym == 95) goto L_0121; atom1 = 32768; return(0); L_0121: readsym(); for (;;) { L_0122: if (symtype == 0) goto L_0123; if (symtype >= 0) goto L_0124; codeatom(0); if ((atom1 & 32768) == 0) goto L_0125; return(0); L_0125: if (atom2 != 93) goto L_0126; if (type != 1) goto L_0126; if (subatom >= 0) goto L_0127; octal(tag[(-subatom)].format); goto L_0128; L_0127: octal(litpool[subatom]); L_0128: goto L_0129; L_0126: if (91 > atom1) goto L_012a; if (atom1 > 109) goto L_012a; if (atom1 != 104) goto L_012b; if ((tag[subatom].flags & 16384) != 0) goto L_012b; this = subatom; atom1 = (32768 + 21); return(0); L_012b: op(32, tag[subatom].index); goto L_012c; L_012a: atom1 = 32768; return(0); L_012c: L_0129: goto L_012d; L_0124: bp = (bp + 1); buff[bp] = sym; readsym(); L_012d: } L_0123: L_0120: bp = (bp + 1); buff[bp] = 59; return(1); for (;;) { L_012e: if (gg != 0) goto L_012f; cont = 32; L_012f: last1 = 0; mapgg = 0; s = 0; ss = 0; sstype = (-1); fdef = 0; fmbase = 0; app = 0; margin = column; pos = 0; stbase = addr(glink[(gmax + 1)]); strp = stbase; lp = 0; tbase = tstart; local = tbase; if (gg == 0) goto L_0130; if (ocount < 0) goto L_0131; L_0130: U_00d5: for (;;) { L_0132: if (symtype != 0) goto L_0133; c = cont; cont = 32; if (ocount < 0) goto L_0134; cont = 43; L_0134: readsym(); cont = c; } L_0133: if (sym != 33) goto L_0135; goto U_00d6; L_0135: this = (-1); codeatom(0); if (atom1 != 22) goto L_0136; U_00d6: quote = 1; c = cont; for (;;) { L_0137: if (sym == 10) goto L_0138; readsym(); cont = c; } L_0138: quote = 0; symtype = 0; goto U_00d5; L_0136: L_0131: decl = 0; mark = 0; gentype = 0; force = 0; dim = 0; proterr = 0; node = 0; nmax = 0; nmin = (520 + 1); order = 1; gmin = (1720 + 1); if (gg == 0) goto L_0139; sstype = 0; goto U_00d7; L_0139: ptype = 0; specgiven = 0; stats = (stats + 1); if (perm != 0) goto L_013a; op(79, lines); L_013a: if ((atom1 & 32768) == 0) goto L_013b; goto U_00d8; L_013b: if (escapeclass == 0) goto L_013c; g = 25; sstype = (-1); goto U_00d9; L_013c: g = initial[atom1]; if (g != 0) goto L_013d; g = initial[0]; sstype = 0; goto U_00d9; L_013d: if (g >= 0) goto L_013e; g = (g & 255); nmax = 1; ar[1].class = 0; ar[1].link = 0; ar[1].sub = 25; L_013e: gg = gram[g]; class = (gg & 255); sstype = (((gg >> 12) & 3) - 1); goto U_00da; act_194: ptype = type; papp = app; pformat = format; goto U_00d7; act_196: k = (g + 1); goto U_00db; act_188: k = (ar[nmax].sub + 1); U_00db: papp = glink[k]; k = gram[k]; if (k != 0) goto L_013f; goto U_00d7; L_013f: ptype = (k & 7); pformat = (k >> 3); act_183: k = type; if (gentype == 0) goto L_0140; if (k != 2) goto L_0141; L_0140: gentype = k; L_0141: if (pformat >= 0) goto L_0142; app = papp; format = pformat; if (ptype != 2) goto L_0143; if (type != 1) goto L_0143; k = 2; L_0143: if (force == 0) goto L_0144; k = force; force = 0; L_0144: L_0142: if (papp != app) goto L_0145; if (ptype == k) goto L_0146; if (ptype == 0) goto L_0146; L_0145: goto U_00dc; L_0146: if (pformat == format) goto L_0147; if (pformat == 0) goto L_0147; if (format != 0) goto L_0148; L_0147: goto U_00d7; L_0148: goto U_00dc; act_197: arp = &ar[nmin]; k = arp->sub; if (blockform == (k & 15)) goto L_0149; goto U_00dd; L_0149: arp->sub = (k >> 4); type = blocktype; ptype = blocktype; pformat = blockfm; papp = app; if (ptype == 4) goto L_014a; pformat = (-1); L_014a: goto U_00d7; act_195: if (type == 0) goto L_014b; if (type == 1) goto L_014b; if (type == 2) goto L_014b; goto U_00dc; L_014b: arp = &ar[nmin]; k = arp->sub; arp->sub = (k >> 2); k = (k & 3); if (k != 0) goto L_014c; goto U_00d7; L_014c: if (k != 1) goto L_014d; force = 1; if (type == 1) goto L_014e; if (type != 0) goto L_014f; L_014e: goto U_00d7; L_014f: goto U_00dc; L_014d: if (ptype == 2) goto L_0150; if (ptype == 0) goto L_0150; goto U_00dc; L_0150: if (k != 3) goto L_0151; force = 1; L_0151: goto U_00d7; act_198: k = ((gg >> 8) & 15); if (k != 0) goto L_0152; atom1 = last1; goto U_00d7; L_0152: if (k != 1) goto L_0153; if (type == 3) goto L_0154; goto U_00dc; L_0154: goto U_00d7; L_0153: if (k != 2) goto L_0155; if (type != 4) goto L_0156; goto U_00dc; L_0156: goto U_00d7; L_0155: if (k != 3) goto L_0157; codeatom(0); if ((atomflags & 512) != 0) goto L_0158; goto U_00de; L_0158: goto U_00d7; L_0157: if (x > local) goto L_0159; forwarn = pos1; L_0159: goto U_00d7; paction_1: if (type != 4) goto L_015a; g = phrase[242]; goto L_015b; L_015a: pformat = (-1); L_015b: goto U_00d9; paction_2: ptype = 2; pformat = (-1); goto U_00d9; paction_3: ptype = 3; pformat = (-1); goto U_00d9; paction_4: ptype = 1; pformat = (-1); goto U_00d9; paction_5: if (ptype != 1) goto L_015c; goto U_00d9; L_015c: if (ptype != 2) goto L_015d; g = phrase[212]; pformat = (-1); L_015d: if (ptype != 3) goto L_015e; g = phrase[213]; L_015e: goto U_00d9; paction_6: ptype = (gram[(ar[nmax].sub + 1)] & 7); pformat = (-1); goto U_00d9; paction_7: if (ptype != 1) goto L_015f; ptype = 2; L_015f: pformat = (-1); goto U_00d9; U_00da: last1 = class; atom1 = 0; s = subatom; U_00df: if ((gg & 16384) != 0) goto L_0160; z = &node; for (;;) { L_0161: k = *z; if ((gg & 12288) == 0) goto L_0162; if (k != 0) goto L_0163; L_0162: goto L_0164; L_0163: gg = (gg - 4096); z = &ar[k].link; } L_0164: if (mapgg == 0) goto L_0165; if ((gg & 255) != 91) goto L_0165; gg = mapgg; L_0165: nmin = (nmin - 1); if (nmin != nmax) goto L_0166; goto U_00e0; L_0166: *z = nmin; arp = &ar[nmin]; arp->sub = s; arp->class = ((gg & 255) | mark); arp->link = k; L_0160: mark = 0; mapgg = 0; U_00d7: g = glink[g]; paction_0: U_00d9: gg = gram[g]; class = (gg & 255); if ((diag & 1) == 0) goto L_0167; traceanalysis(); L_0167: if (class != 0) goto L_0168; goto U_00e1; L_0168: if (class >= 180) goto L_0169; if (class < 130) goto L_016a; class = atomic[class]; L_016a: if (class < 120) goto L_016b; goto U_00df; L_016b: if (atom1 != 0) goto L_016c; codeatom(class); L_016c: if (escapeclass == 0) goto L_016d; class = escapeclass; escapeclass = 0; g = (g + 4096); U_00e2: gg = 0; arp = &ar[(nmax + 1)]; arp->papp = papp; arp->x = x; goto U_00e3; L_016d: if (class == atom1) goto L_016e; if (class != atom2) goto L_016f; L_016e: goto U_00da; L_016f: U_00de: if (gg < 0) goto L_0170; goto U_00d8; L_0170: g = (g + 1); goto U_00d9; L_0169: if (class < 200) goto L_0171; U_00e3: nmax = (nmax + 1); if (nmax != nmin) goto L_0172; goto U_00e0; L_0172: arp = &ar[nmax]; arp->ptype = ptype; arp->pos = pos1; arp->pformat = pformat; arp->link = gentype; arp->class = node; arp->sub = g; node = 0; g = phrase[class]; if (force == 0) goto L_0173; ptype = force; force = 0; L_0173: gentype = 0; goto *paction[((gg >> 8) & 15)]; L_0171: goto *act[class]; U_00e1: s = 0; for (;;) { L_0174: if (node == 0) goto L_0175; z = &ar[node].link; k = *z; *z = s; s = node; node = k; } L_0175: ss = s; U_00e4: if (nmax == 0) goto L_0176; k = gentype; arp = &ar[nmax]; nmax = (nmax - 1); node = arp->class; gentype = arp->link; ptype = arp->ptype; pformat = arp->pformat; g = arp->sub; if ((g & 4096) == 0) goto L_0177; g = (g - 4096); papp = arp->papp; mark = 255; subatom = s; goto U_00d9; L_0177: if (gentype == 0) goto L_0178; if (k != 2) goto L_0179; L_0178: gentype = k; L_0179: type = gentype; k = gg; for (;;) { L_017a: gg = gram[g]; if (k != 0) goto L_017b; goto U_00df; L_017b: if (gg < 0) goto L_017c; goto U_00d8; L_017c: k = (k - 4096); g = (g + 1); } L_0176: if (copy == 0) goto L_017d; fault(4); L_017d: if (order != 0) goto L_017e; fault(13); L_017e: if (forwarn == 0) goto L_017f; fault((-4)); L_017f: pos1 = 0; faultrate = (faultrate - 1); return; act_193: if (sym == 61) goto L_0180; if (sym == 60) goto L_0180; gg = 0; goto U_00e1; L_0180: act_181: atom1 = amap[(decl & 15)]; goto U_00d7; act_182: class = 252; g = (glink[g] | 4096); decl = 0; otype = 0; goto U_00e2; act_199: s = 0; for (;;) { L_0181: if (node == 0) goto L_0182; z = &ar[node].link; k = *z; *z = s; s = node; node = k; } L_0182: ss = s; if (quote == 0) goto L_0183; codeatom(28); L_0183: compile(); if ((atom1 & 32768) != 0) goto L_0184; goto U_00d7; L_0184: goto U_00d8; act_184: if (type == 1) goto L_0185; goto U_00e5; L_0185: if (subatom >= 0) goto L_0186; lit = tag[(-subatom)].format; goto L_0187; L_0186: lit = litpool[subatom]; L_0187: if (lit == 0) goto L_0188; goto U_00e5; L_0188: goto U_00d7; act_185: s = 0; for (;;) { L_0189: if (node == 0) goto L_018a; z = &ar[node].link; k = *z; *z = s; s = node; node = k; } L_018a: ss = s; atom1 = ar[s].class; atom2 = 0; if (atom1 == 97) goto L_018b; if (atom1 != 98) goto L_018c; L_018b: atom1 = 91; L_018c: arp = &ar[nmax]; x = arp->x; pos1 = arp->pos; pos2 = 0; app = 0; format = tag[x].format; flags = tag[x].flags; type = ((flags >> 4) & 7); protection = (flags & 256); if ((flags & 1024) == 0) goto L_018d; protection = 0; L_018d: if ((flags & 2048) == 0) goto L_018e; if (format == 0) goto L_018e; if (formatselected() != 0) goto L_018f; goto U_00d8; L_018f: L_018e: goto U_00e4; act_187: protection = 256; goto U_00d7; act_186: if ((protection & 256) != 0) goto L_0190; goto U_00d7; L_0190: proterr = nmin; goto U_00de; act_191: k = protection; codeatom(0); if ((atomflags & 1024) != 0) goto L_0191; protection = k; L_0191: goto U_00d7; act_192: if (parsedmachinecode() != 0) goto L_0192; goto U_00d8; L_0192: goto U_00d7; act_189: k = gapp(); deletenames(1); tmax = tbase; tbase = gram[gmin]; local = tbase; gmin = (gmin + 1); x = ar[ar[nmax].class].sub; tag[x].app = k; goto U_00d7; act_190: gmin = (gmin - 1); if (gmin > gmax) goto L_0193; abandon(2); L_0193: gram[gmin] = tbase; tbase = tmax; local = tbase; goto U_00d7; U_00e5: k = (32768 + 10); goto U_00e6; U_00dd: k = (32768 + 7); goto U_00e6; U_00dc: k = (32768 + 5); pos2 = 0; goto U_00e6; U_00e0: k = (32768 + 3); goto U_00e6; U_00d8: k = atom1; pos2 = 0; U_00e6: if ((diag & 32) == 0) goto L_0194; printstring("Atom1 ="); write(atom1, 3); printstring(" Atom2 ="); write(atom2, 3); printstring(" subatom ="); write(subatom, 3); newline(); printstring("Type ="); write(type, 1); printstring(" Ptype ="); write(ptype, 1); newline(); printstring("App ="); write(app, 1); printstring(" Papp ="); write(papp, 1); newline(); printstring("Format ="); write(format, 1); printstring(" Pformat ="); write(pformat, 1); newline(); exit(0); L_0194: for (;;) { L_0195: if (sym == 10) goto L_0196; if (sym == 59) goto L_0196; quote = 0; readsym(); } L_0196: if ((k & 32768) == 0) goto L_0197; fault((k & 255)); goto L_0198; L_0197: if (proterr != nmin) goto L_0199; fault(14); goto L_019a; L_0199: fault(0); L_019a: L_0198: gg = 0; ss = 0; symtype = 0; L_012e: goto L_019b; void compile() { // bounds [0 : 180] /*todo: gcc jump table extension*/ void **c; // bounds [1 : 12] /*todo: gcc jump table extension*/ void **litop; // bounds [1 : 14] // do it now: const char {*,2}operator {NO INIT} // bounds [0 : 7] // do it now: const char {*,2}cc {NO INIT} // bounds [0 : 15] // do it now: const char {*,2}anyform {NO INIT} // bounds [0 : 15] // do it now: const short {*,2}decmap {NO INIT} // bounds [0 : 15] // do it now: static char {*,1}cnest; /* uninitialised */ int lmode; int clab; int dupid; int resln; static int lastdef; static int lb; static int ub; int cp; int ord; int next; int link; int j; int k; int n; int done; int class; int lit2; int defs; int decs; int cident; int pending; // bounds [1 : 40] // do it now: static int {*,1}pstack; /* uninitialised */ static char *name; static int count; goto L_019b; void deflab(int l) { op(58, l); access = 1; L_019b: goto L_019c; void getnext() { struct ARFM *p; U_00e4: if (next != 0) goto L_019d; if (link != 0) goto L_019e; class = 0; return; L_019e: p = &ar[link]; next = p->link; link = p->sub; L_019d: for (;;) { L_019f: p = &ar[next]; x = p->sub; class = p->class; if (class >= 180) goto L_01a0; goto L_01a1; L_01a0: if (x != 0) goto L_01a2; next = p->link; goto U_00e4; L_01a2: if (p->link == 0) goto L_01a3; p->sub = link; link = next; L_01a3: next = x; } L_01a1: next = p->link; if ((diag & 2) == 0) goto L_01a4; if (name == "") goto L_01a5; spaces((8 - *length(name))); L_01a5: strncpy(name,text[class],8+1); write(x, 2); space(); printstring(name); space(); count = (count - 1); if (count > 0) goto L_01a6; count = 5; strncpy(name,"",8+1); newline(); L_01a6: L_01a4: L_019c: goto L_01a7; void setsubs(int n) { int p; p = tmax; for (;;) { L_01a8: if (n <= 0) goto L_01a9; if (p >= tbase) goto L_01aa; exit(0); L_01aa: tag[p].app = dimension; p = (p - 1); n = (n - 1); } L_01a9: L_01a7: goto L_01ab; void setbp() { pending = (pending - 2); lb = pstack[(pending + 1)]; ub = pstack[(pending + 2)]; if (((ub - lb) + 1) >= 0) goto L_01ac; pos1 = 0; next = link; fault(11); ub = lb; L_01ac: setconst(lb); setconst(ub); if (class == 146) goto L_01ad; bp = (bp + 1); buff[bp] = 98; L_01ad: L_01ab: goto L_01ae; void compileend(int type) { if (access == 0) goto L_01af; open = 0; if (blockform <= 7) goto L_01b0; fault(19); L_01b0: L_01af: for (;;) { L_01b1: if (dict[dmin] < 0) goto L_01b2; fault((17 + (dict[dmin] & 1))); dmin = (dmin + 1); } L_01b2: bp = (bp + 1); buff[bp] = 59; if (type != 1) goto L_01b3; bp = (bp + 1); buff[bp] = 59; L_01b3: *bflags = (*bflags | open); if (blocktag == 0) goto L_01b4; if (level == 1) goto L_01b4; deflab(0); L_01b4: if (type == 2) goto L_01b5; if (level == type) goto L_01b6; fault(16); L_01b6: goto L_01b7; L_01b5: if (level != 0) goto L_01b8; fault(15); L_01b8: L_01b7: endmark = 11; L_01ae: goto L_01b9; void def(int p) { int t; int f; int type; struct TAGFM *v; if (bp == 0) goto L_01ba; flushbuffer(); L_01ba: defs = (defs + 1); v = &tag[p]; t = 0; if (v->index < 0) goto L_01bb; if (v->index != 0) goto L_01bc; id = (id + 1); v->index = id; L_01bc: lastdef = v->index; t = lastdef; L_01bb: op(36, t); printident(p, 1); t = v->flags; type = t; if ((type & (7 << 4)) < (6 << 4)) goto L_01bd; type = (type & (\(7 << 4))); L_01bd: op(44, (type & 127)); f = v->format; if ((t & 112) != (4 << 4)) goto L_01be; f = tag[f].index; L_01be: if (f >= 0) goto L_01bf; f = v->index; L_01bf: op(44, f); f = (otype + ((t >> 4) & 120)); if (class != 125) goto L_01c0; f = (f | 8); L_01c0: dim = v->app; if (0 >= dim) goto L_01c1; if (dim <= 6) goto L_01c2; L_01c1: dim = 0; L_01c2: op(44, (f + (dim << 8))); if ((t & 4096) != 0) goto L_01c3; defs = 0; L_01c3: f = (t & 15); if ((v->flags & 128) == 0) goto L_01c4; if (3 > f) goto L_01c5; if (f <= 10) goto L_01c6; L_01c5: v->flags = (v->flags & (\128)); L_01c6: ocount = (-1); L_01c4: dimension = 0; if (otype != 2) goto L_01c7; if (f == 2) goto L_01c8; if (f == 12) goto L_01c8; if (f != 14) goto L_01c7; L_01c8: v->flags = (v->flags - 1); L_01c7: L_01b9: goto L_01c9; void defslab(int n) { int p; int l; int b; int w; int bit; p = tag[x].format; l = dict[p]; if (l > n) goto L_01ca; if (n > dict[(p + 1)]) goto L_01ca; b = (n - l); w = ((b >> 4) + p); bit = (1 << (b & 15)); if ((dict[(w + 2)] & bit) == 0) goto L_01cb; if (pending == 0) goto L_01cc; fault(4); L_01cc: return; L_01cb: if (pending == 0) goto L_01cd; dict[(w + 2)] = (dict[(w + 2)] | bit); L_01cd: setconst(n); op(95, tag[x].index); goto L_01ce; L_01ca: fault(12); L_01ce: access = 1; L_01c9: goto L_01cf; void call() { struct TAGFM *t; t = &tag[x]; op(64, t->index); if ((t->flags & 16384) == 0) goto L_01d0; access = 0; L_01d0: if (t->app != 0) goto L_01d1; bp = (bp + 1); buff[bp] = 69; L_01d1: L_01cf: goto L_01d2; void popdef() { setconst(pstack[pending]); pending = (pending - 1); L_01d2: goto L_01d3; void poplit() { if (pending != 0) goto L_01d4; lit = 0; goto L_01d5; L_01d4: lit = pstack[pending]; pending = (pending - 1); L_01d5: L_01d3: if (sstype >= 0) goto L_01d6; if (level != 0) goto L_01d7; fault(13); goto L_01d8; L_01d7: if (access != 0) goto L_01d9; access = 1; fault((-1)); L_01d9: L_01d8: L_01d6: if ((diag & 2) == 0) goto L_01da; if (sym == 10) goto L_01db; newline(); L_01db: printstring("ss ="); write(ss, 1); newline(); count = 5; strncpy(name,"",8+1); L_01da: next = ss; pending = 0; lmode = 0; link = 0; decs = 0; defs = 0; resln = 0; done = 0; ord = level; if (this < 0) goto L_01dc; ord = 1; L_01dc: c_0: U_00eb: if (next == link) goto L_01dd; getnext(); goto *c[class]; L_01dd: if ((diag & 2) == 0) goto L_01de; if (count == 5) goto L_01de; newline(); L_01de: if ((lmode & ((16 | 4) | 8)) == 0) goto L_01df; if ((lmode & 16) == 0) goto L_01e0; op(66, (label - 1)); L_01e0: if ((lmode & 4) == 0) goto L_01e1; deflab(label); L_01e1: if ((lmode & 8) == 0) goto L_01e2; deflab((label - 1)); L_01e2: L_01df: if (decs != 0) goto L_01e3; return; L_01e3: if (atom1 == 0) goto L_01e4; atom1 = 32768; return; L_01e4: order = ord; decl = ((decl & (\15)) + decmap[(decl & 15)]); atom1 = atoms[(decl & 15)]; if (otype == 0) goto L_01e5; if (atom1 == 7) goto L_01e6; atom1 = (atom1 + 1); L_01e6: if (otype != 2) goto L_01e7; n = (decl & 15); if ((n & 1) == 0) goto L_01e8; decl = (decl | 256); if ((decl & 127) != 17) goto L_01e9; decl = (decl | 8192); L_01e9: L_01e8: goto L_01ea; L_01e7: decl = (decl | 512); L_01ea: L_01e5: if (sstype != 0) goto L_01eb; if (atom1 != 7) goto L_01eb; sstype = 1; L_01eb: if ((decl & 128) == 0) goto L_01ec; atom1 = (atom1 + 1); L_01ec: if (atom1 != 5) goto L_01ed; ocount = 0; cont = 43; L_01ed: if (anyform[(decl & 15)] != 0) goto L_01ee; if (((decl >> 4) & 7) != 4) goto L_01ef; if ((tag[fdef].flags & 128) == 0) goto L_01f0; this = fdef; L_01f0: if (fdef != this) goto L_01f1; atom1 = (32768 + 21); L_01f1: L_01ef: if (fdef != 0) goto L_01f2; atom1 = (32768 + 10); L_01f2: L_01ee: return; U_00ec: access = 0; goto U_00eb; c_88: c_28: decl = (x & (\7)); fdef = (x & 7); if ((x & 113) != ((2 << 4) + 1)) goto L_01f3; fdef = realsln; L_01f3: decs = 1; goto U_00eb; c_34: c_35: otype = x; ord = 1; goto U_00eb; c_152: decl = (decl + (x << 1)); goto U_00eb; c_31: c_32: specmode = (level + 1); if (x != 9) goto L_01f4; decl = (decl | 256); L_01f4: c_29: ord = 1; dim = 0; c_30: decl = (decl + x); decs = 1; goto U_00eb; c_27: lit = 0; if (pending == 0) goto L_01f5; poplit(); if (0 >= lit) goto L_01f6; if (lit <= 6) goto L_01f7; L_01f6: atom1 = (32768 + 11); return; L_01f7: L_01f5: dim = lit; decl = (decl + x); decs = 1; goto U_00eb; c_37: x = (x | 2048); c_36: lit = 0; if (pending == 0) goto L_01f8; poplit(); if (0 >= lit) goto L_01f9; if (lit <= 255) goto L_01fa; L_01f9: atom1 = (32768 + 10); return; L_01fa: L_01f8: fdef = lit; c_33: decl = x; decs = 1; goto U_00eb; c_39: decl = (decl | 128); ocount = (-1); specmode = (-1); goto U_00eb; c_38: decl = (64 + 4); order = 1; atom1 = x; if (atom1 != 12) goto L_01fb; decl = (decl | 128); L_01fb: fdef = (tmax + 1); return; c_175: id = (id + 1); tag[x].index = id; return; c_41: decs = 1; decl = ((x | 128) | 16384); goto U_00eb; c_133: recid = 0; rbase = (tmin - 1); this = x; fmbase = fdef; formatlist = tmin; def(this); goto U_00eb; c_148: if (next != 0) goto L_01fc; fdef = 0; goto U_00eb; L_01fc: getnext(); fdef = x; goto U_00eb; c_127: bp = (bp + 1); buff[bp] = 125; goto U_00eb; c_126: bp = (bp + 1); buff[bp] = 123; goto U_00eb; c_174: setbp(); c_171: c_172: c_173: bp = (bp + 1); buff[bp] = 126; bp = (bp + 1); buff[bp] = ((class - 171) + 65); goto U_00eb; c_168: rbase = (-rbase); sstype = 0; specmode = 0; c_147: searchbase = 0; tag[this].app = tmin; tag[this].format = rbase; goto U_00eb; c_45: if (x != 36) goto L_01fd; bp = (bp + 1); buff[bp] = 85; L_01fd: goto U_00eb; c_46: bp = (bp + 1); buff[bp] = 92; goto U_00eb; c_47: c_48: c_42: c_43: c_44: bp = (bp + 1); buff[bp] = operator[x]; goto U_00eb; goto L_01fe; void push(int x) { if ((cnest[cp] & 2) == x) goto L_01ff; cnest[cp] = (cnest[cp] | 1); x = (x + 4); L_01ff: if ((cnest[cp] & 1) == 0) goto L_0200; clab = (clab + 1); L_0200: cnest[(cp + 1)] = x; cp = (cp + 1); L_01fe: goto L_0201; void poplabel(int mode) { lmode = dict[dmin]; if (lmode < 0) goto L_0202; if ((lmode & 1) == mode) goto L_0203; L_0202: fault((mode + 8)); goto L_0204; L_0203: dmin = (dmin + 1); label = (label - 3); L_0204: L_0201: c_56: c_57: push(x); goto U_00eb; c_58: cnest[cp] = (cnest[cp] ^ 2); goto U_00eb; c_138: x = (((128 + 32) + 16) + 4); c_59: c_60: if (class != 138) goto L_0205; op(102, (label - 1)); goto L_0206; L_0205: deflab((label - 1)); L_0206: c_166: c_62: lmode = ((lmode & (8 | 16)) | (x >> 3)); clab = label; cp = 1; cnest[1] = (x & 7); goto U_00eb; c_72: poplabel(0); if ((lmode & 32) == 0) goto L_0207; deflab((label + 1)); L_0207: goto U_00ec; c_69: poplabel(1); goto U_00eb; c_163: c_70: poplabel(1); if ((lmode & 3) != 3) goto L_0208; fault(7); L_0208: c_68: lmode = ((lmode & 8) | 3); if (access == 0) goto L_0209; op(70, (label - 1)); lmode = (8 | 3); L_0209: deflab(label); if (next == 0) goto L_020a; goto U_00eb; L_020a: c_120: c_67: c_71: U_00ef: if (lmode != 0) goto L_020b; deflab((label - 1)); lmode = 16; L_020b: dmin = (dmin - 1); if (dmin > dmax) goto L_020c; abandon(3); L_020c: dict[dmin] = lmode; label = (label + 3); return; c_64: if (dict[dmin] >= 0) goto L_020d; if (inhibit == 0) goto L_020e; L_020d: fault(13); L_020e: inhibit = 1; n = 0; if (pending != 0) goto L_020f; n = 65535; L_020f: for (;;) { L_0210: if (pending <= 0) goto L_0211; poplit(); if ((lit & (\15)) == 0) goto L_0212; fault(10); L_0212: j = (1 << lit); if ((n & j) == 0) goto L_0213; dubious = 1; L_0213: n = (n | j); } L_0211: op(111, n); op(44, label); lmode = (4 | 1); goto U_00ef; c_104: op(74, tag[x].index); inhibit = 1; goto U_00ec; c_149: stats = (stats - 1); access = 1; inhibit = 1; op(76, tag[x].index); goto U_00eb; c_63: j = dmin; l = (label - 3); for (;;) { L_0214: if (dict[j] >= 0) goto L_0215; fault(7); goto U_00eb; L_0215: if ((dict[j] & 1) != 0) goto L_0216; goto L_0217; L_0216: j = (j + 1); l = (l - 3); } L_0217: if (x != 32) goto L_0218; l = (l + 1); L_0218: op(70, l); dict[j] = (dict[j] | x); goto U_00ec; c_50: bp = (bp + 1); buff[bp] = 67; goto U_00f0; c_49: bp = (bp + 1); if (next == 0) goto L_0219; buff[bp] = 34; push(0); goto L_021a; L_0219: buff[bp] = 63; L_021a: U_00f0: if ((cnest[cp] & 2) == 0) goto L_021b; x = (x ^ 1); L_021b: j = cp; l = clab; for (;;) { L_021c: if ((cnest[j] & 4) != 0) goto L_021d; j = (j - 1); l = (l - (cnest[j] & 1)); } L_021d: op(cc[x], l); if ((cnest[cp] & 1) == 0) goto L_021e; deflab((clab + 1)); L_021e: cp = (cp - 1); clab = (clab - (cnest[cp] & 1)); goto U_00eb; c_78: c_79: c_80: open = 0; c_82: access = 0; c_89: c_81: bp = (bp + 1); buff[bp] = x; goto U_00eb; c_65: poplit(); op(101, lit); goto U_00ec; c_51: bp = (bp + 1); buff[bp] = 83; goto U_00eb; c_53: bp = (bp + 1); buff[bp] = 106; goto U_00eb; c_52: bp = (bp + 1); buff[bp] = 90; goto U_00eb; c_74: if (level != 0) goto L_021f; if (progmode > 0) goto L_0220; progmode = 1; goto L_0221; L_0220: fault(7); L_0221: L_021f: specmode = (level + 1); blockx = 0; bp = (bp + 1); buff[bp] = 72; return; c_77: perm = 0; lines = 0; stats = 0; closeinput(); selectinput(1); list = (list - 1); tbase = tmax; tstart = tmax; return; c_76: if (include == 0) goto L_0222; if (x != 0) goto L_0222; lines = include; sstype = 0; closeinput(); list = includelist; includelevel = 0; include = 0; selectinput(1); return; L_0222: ss = (-1); c_75: compileend(x); return; c_85: if (x != 0) goto L_0223; control = lit; goto L_0224; L_0223: if (((lit >> 14) & 3) != 1) goto L_0225; diag = (lit & 16383); L_0225: L_0224: op((122 - x), lit); goto U_00eb; c_83: list = ((list + x) - 2); goto U_00eb; c_84: realsln = x; goto U_00eb; c_86: if (include == 0) goto L_0226; fault(7); return; L_0226: getnext(); strncpy(includefile,string(((x - 16384) + stbase)),63+1); int main(int argc, char **argv) { if (imp_onevent(0x0200)) goto L_0227 /* returns FALSE during longjump setup */ abandon(9); L_0227: openinput(3, includefile); include = lines; lines = 0; includelist = list; includelevel = level; selectinput(3); goto U_00eb; c_154: dimension = (dimension + 1); if (dimension != (6 + 1)) goto L_0228; fault(11); L_0228: goto U_00eb; c_145: setbp(); goto U_00eb; c_146: setbp(); c_142: if (dimension != 0) goto L_0229; dimension = 1; L_0229: op(100, dimension); op(44, defs); if (class == 146) goto L_022a; setsubs(defs); if (dict[dmin] >= 0) goto L_022b; if (inhibit != 0) goto L_022b; if (level != 0) goto L_022c; L_022b: fault(13); L_022c: L_022a: dimension = 0; defs = 0; goto U_00eb; c_128: id = dupid; goto U_00eb; c_130: blockx = x; if ((decl & 128) != 0) goto L_022d; if (level == 0) goto L_022d; op(70, 0); L_022d: c_125: dupid = id; if (level >= 0) goto L_022e; return; L_022e: c_90: def(x); goto U_00eb; c_131: if ((tag[x].flags & (127 + 8192)) != (17 + 8192)) goto L_022f; tag[x].format = lit; goto L_0230; L_022f: if (pending == 0) goto L_0231; setconst(lit); L_0231: def(x); op(65, 1); L_0230: cident = x; goto U_00eb; c_124: if ((tag[cident].flags & 256) == 0) goto L_0232; dubious = 1; L_0232: goto U_00eb; c_97: c_98: c_99: c_96: call(); goto U_00eb; c_165: c_100: c_101: c_102: c_103: c_91: c_92: c_106: c_107: c_108: c_109: k = tag[x].index; if (k >= 0) goto L_0233; op(110, (-k)); goto L_0234; L_0233: op(64, k); L_0234: goto U_00eb; c_121: setconst(0); goto U_00eb; c_167: bp = (bp + 1); buff[bp] = 71; goto U_00f1; c_93: if (x >= 0) goto L_0235; setconst(tag[(-x)].format); goto U_00eb; L_0235: if ((x & 16384) == 0) goto L_0236; bp = (bp + 1); buff[bp] = 39; U_00f1: x = ((x - 16384) + stbase); k = *byteinteger(x); bp = (bp + 1); buff[bp] = k; k = (k + x); for (;;) { L_0237: if (x != k) goto L_0238; goto U_00eb; L_0238: x = (x + 1); bp = (bp + 1); buff[bp] = *byteinteger(x); } L_0236: if ((x & 8192) == 0) goto L_0239; x = ((x - 8192) + stbase); k = *byteinteger(x); op(68, k); bp = (bp + 1); buff[bp] = 44; k = (k + x); for (;;) { L_023a: if (x != k) goto L_023b; goto U_00eb; L_023b: x = (x + 1); j = *byteinteger(x); if (j != 64) goto L_023c; op(64, litpool[*byteinteger((x + 1))]); goto U_00eb; L_023c: bp = (bp + 1); buff[bp] = j; } L_0239: setconst(litpool[x]); goto U_00eb; c_137: bp = (bp + 1); buff[bp] = 105; goto U_00eb; c_141: bp = (bp + 1); buff[bp] = 97; goto U_00eb; c_132: ocount = ((ub - lb) + 1); def(x); dimension = 1; setsubs(1); if (next != 0) goto L_023d; if (ocount <= 0) goto L_023e; op(65, ocount); L_023e: ocount = (-1); goto L_023f; L_023d: getnext(); L_023f: goto U_00eb; c_162: lit = ocount; goto U_00f2; c_143: poplit(); U_00f2: if (lit >= 0) goto L_0240; fault(10); lit = 0; L_0240: getnext(); goto U_00f3; c_139: c_153: lit = 1; U_00f3: if (pending == 0) goto L_0241; popdef(); L_0241: op(65, lit); ocount = (ocount - lit); if (ocount < 0) goto L_0242; if (x == 0) goto L_0243; goto U_00eb; L_0243: if (ocount != 0) goto L_0244; ocount = (-1); return; L_0244: L_0242: fault(11); return; c_105: op(87, tag[x].index); inhibit = 1; goto U_00ec; c_134: def(x); n = ((ub - lb) + 1); n = ((n + 15) >> 4); j = dmax; dmax = ((dmax + n) + 2); if (dmax < dmin) goto L_0245; abandon(1); L_0245: tag[x].format = j; dict[j] = lb; dict[(j + 1)] = ub; for (;;) { L_0246: n = (n - 1); if (n >= 0) goto L_0247; goto U_00eb; L_0247: j = (j + 1); dict[(j + 1)] = 0; } c_151: stats = (stats - 1); if (x >= tbase) goto L_0248; fault(7); return; L_0248: if (pending == 0) goto L_0249; defslab(pstack[1]); goto L_024a; L_0249: if (tag[x].app == 0) goto L_024b; fault(4); return; L_024b: tag[x].app = 1; n = tag[x].format; for (j = dict[n]; j += 1; j != dict[(n + 1)]) { defslab(j); if (bp < 128) goto L_0250; flushbuffer(); L_0250: } L_024f: L_024a: inhibit = 1; return; c_140: bp = (bp + 1); buff[bp] = 112; goto U_00eb; c_144: buff[(bp + 1)] = 112; buff[(bp + 2)] = 69; bp = (bp + 2); goto U_00eb; c_155: if (x >= 0) goto L_0251; lit = tag[(-x)].format; goto L_0252; L_0251: lit = litpool[x]; L_0252: pending = (pending + 1); pstack[pending] = lit; goto U_00eb; c_156: lit = pstack[pending]; if (lit >= 0) goto L_0253; lit = (-lit); L_0253: pstack[pending] = lit; goto U_00eb; c_157: lit = (-pstack[pending]); pstack[pending] = lit; goto U_00eb; c_158: lit = (\pstack[pending]); pstack[pending] = lit; goto U_00eb; c_159: c_160: c_161: pending = (pending - 1); lit2 = pstack[(pending + 1)]; lit = pstack[pending]; goto *litop[(x >> 2)]; litop_10: lit = (lit * lit2); goto U_00f4; litop_12: litop_3: n = 1; if (lit2 >= 0) goto L_0254; fault(10); L_0254: for (;;) { L_0255: if (lit2 <= 0) goto L_0256; lit2 = (lit2 - 1); n = (n * lit); } L_0256: lit = n; goto U_00f4; litop_1: lit = (lit << lit2); goto U_00f4; litop_2: lit = (lit >> lit2); goto U_00f4; litop_5: lit = (lit & lit2); goto U_00f4; litop_11: litop_4: if (lit2 != 0) goto L_0257; fault(10); goto L_0258; L_0257: lit = (lit / lit2); L_0258: goto U_00f4; litop_8: lit = (lit + lit2); goto U_00f4; litop_9: lit = (lit - lit2); goto U_00f4; litop_6: lit = (lit | lit2); goto U_00f4; litop_7: lit = (lit ^ lit2); U_00f4: pstack[pending] = lit; goto U_00eb; c_170: if (impcom.option == "") goto L_0259; fault(4); L_0259: impcom.option = string(((x - 16384) + stbase)); goto U_00eb; c_135: resln = 2; goto U_00eb; c_136: resln = (resln + 1); goto U_00eb; c_55: op(114, resln); resln = 0; goto U_00eb; c_164: op(114, (resln + 4)); resln = 0; c_122: x = 6; goto U_00f0; c_87: setconst(pstack[1]); bp = (bp + 1); buff[bp] = 80; goto U_00eb; for (;;) { L_025a: L_025a: if (imp_onevent(0x0200)) goto L_025b /* returns FALSE during longjump setup */ abandon(5); L_025b: impcom.flags = 0; impcom.option = ""; if ((impcom.flags & 4096) == 0) goto L_025c; list = 15; L_025c: openoutput(2, "LISTING"); openinput(2, "prims.inc"); selectinput(2); selectoutput(2); tag[800] = 0; tag[0] = 0; tag[0].flags = 7; for (x = 0; x += 1; x != 2047) { hash[x] = 0; } L_0260: printstring(" Edinburgh IMP77 Compiler - Version "); printstring(version); newlines(2); op(108, 0); compileblock(0, 0, 6000, 0, 0); bp = (bp + 1); buff[bp] = 10; flushbuffer(); impcom.statements = stats; if (faulty == 0) goto L_0261; impcom.statements = (-faulty); L_0261: