#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %EXTERNALROUTINE CHECKINNER(%INTEGER FSTART,FSIZE, %INTEGERNAME PARM)
void CHECKINNER(int FSTART, int FSIZE, int *PARM) {
// 2 !%EXTERNALLONGREALFNSPEC CPUTIME
// 3 %LONGREAL TIME1,TIME2
double TIME1;
double TIME2;
// 4 !
// 5 !DECLARATION CODES
// 6 %CONSTINTEGER STRINGBIT=X'80', REALBITS=X'30', INTBIT=X'40'
// 7 %CONSTINTEGER NUMBITS=X'70'
// 8 %CONSTINTEGER APPMASK=X'FF00'
// 9 %CONSTINTEGER EXP=1, FN=2
// 10 %CONSTINTEGER RECFORMAT=4, ROUTINE=6
// 11 %CONSTINTEGER REF=8, VAR=9, MAP=10
// 12 %CONSTINTEGER LAB=12, JUMPLAB=13
// 13 %CONSTINTEGER SWITCH=X'10C'
// 14 %CONSTINTEGER IMP1MODES=B'01000011111111000000000000000000'
// 15 %CONSTINTEGER IMPMODES =B'01000011111100000000000000000000'
// 16 %CONSTINTEGER DESTMODES=B'00000000111100000000000000000000'
// 17 %CONSTINTEGER ADRMODES =B'01000000111100000000000000000000'
// 18 %CONSTINTEGER EXPMODES =B'11110000111100000000000000000000'
// 19 %CONSTINTEGER FMATMODES=B'00001000000000000000000000000000'
// 20 !SYMBOL INIT CODES
// 21 ! USED EXPLICITLY
// 22 ! SPACE=0, DIGIT:ISO, LETTER:ISO, QUOTE=127
// 23 ! PC=128, PCLET OR PUNCT: 128 + KEYDICT INDEX
// 24 ! KEYDICT INDEX >= PUNCTMIN FOR PUNCT
// 25 ! KEYDICT INDEX >= SKIP1MIN FOR ! * SEMICOLON NL
// 26 %CONSTINTEGER NLCODE=127; !MASKED FROM 255 ACTUAL
// 27 !ATOM CODES
// 28 %CONSTINTEGER IDENT=1, CONST=2, LB=11, COMMA=10, RB=12
// 29 %CONSTINTEGER TERMINATOR=13, JUMP=15
// 30 %CONSTINTEGER OP3=6, START=53, CYCLE=54
// 31 ! VERTICAL BAR
// 32 %CONSTINTEGER MARKER=124
// 33
// 34 %OWNINTEGER STATS=0, ATOMS=-54, IDENTIFIERS=-54, NUMBERS=0, LOOPS=0
static int STATS = 0;
static int ATOMS = -54;
static int IDENTIFIERS = -54;
static int NUMBERS = 0;
static int LOOPS = 0;
// 35 %OWNINTEGER LOOKS=1, TIMES=1
static int LOOKS = 1;
static int TIMES = 1;
// 36 %INTEGER I,J
int I;
int J;
// 37 %INTEGER LINEBASE; !BASE FOR SOURCE LINE (POINTER)
int LINEBASE;
// 38 %INTEGER FPOS; !CURRENT POSITION IN SOURCE (POINTER)
int FPOS;
// 39 %INTEGER FPOS1; !START OF CURRENT ATOM (POINTER)
int FPOS1;
// 40 %INTEGER PRINTPOS; !'LINE-ALREADY-PRINTED' INDIC
int PRINTPOS;
// 41 %INTEGER LINE; !CURRENT LINE NUMBER
int LINE;
// 42 %INTEGER NEXTLINE
int NEXTLINE;
// 43 %INTEGER FMAX; !LAST BYTE IN SOURCE (POINTER)
int FMAX;
// 44 %INTEGER FAULTNUM; !FAULTY NUMBER
int FAULTNUM;
// 45 %INTEGER FAULTPOS; !FAULTY ATOM POSITION (POINTER)
int FAULTPOS;
// 46 %INTEGER SYMCODE; !SYMBOL CODE FOR CURRENT SYMBOL
int SYMCODE;
// 47 %INTEGER SKIPMIN; !=SKIP1MIN OR NLCODE
int SKIPMIN;
// 48 !%INTEGER GG; !=GRAM(G)
// 49 %INTEGER CLASS; !GRAMMAR CLASS
int CLASS;
// 50 %INTEGER G; !INDEX TO GRAM
int G;
// 51 %INTEGER ATOM; !ATOM CODE FOR CURRENT ATOM
int ATOM;
// 52 %INTEGER ATOMTYPE; !TYPE FOR CURREMT ATOM
int ATOMTYPE;
// 53 %INTEGER ATOMVAL; !'VALUE' FOR CURRENT ATOM
int ATOMVAL;
// 54 %INTEGER DECLTYPE; !DECLARATION TYPE
int DECLTYPE;
// 55 %INTEGER MODES; !BIT VECTOR FOR PERMISSIBLE IDENT MODES
int MODES;
// 56 %INTEGER DIMCOUNT; !DIMENSION COUNT
int DIMCOUNT;
// 57 %INTEGER CONSTCOUNT; !CONSTANT COUNT (DOWN)
int CONSTCOUNT;
// 58 %INTEGER STRINGSIZE
int STRINGSIZE;
// 59 %INTEGER PRECISION
int PRECISION;
// 60 %INTEGER LASTTYPE,LASTVAL
int LASTTYPE;
int LASTVAL;
// 61 %INTEGER TYPE,VAL
int TYPE;
int VAL;
// 62 %INTEGER NP; !NEST POINTER (INDEX TO NTYPE,NVAL)
int NP;
// 63 %INTEGERARRAY NTYPE,NVAL(1:50); !NEST
int NTYPE[50];
int NVAL[50];
// 64 %INTEGER LINKMAX; !GRAMMAR STACK MAX (INDEX TO LINK)
int LINKMAX;
// 65 %INTEGERARRAY LINK(1:20); !GRAMMAR CONTROL STACK
int LINK[20];
// 66 %RECORDFORMAT BLOCKINF(%INTEGER STACK,LOCAL,BTYPE)
struct BLOCKINF {
union {
struct {
int STACK;
int LOCAL;
int BTYPE;
};
};
};
// 67 %INTEGER LEVEL; !CURRENT BLOCK LEVEL (MAIN=1)
int LEVEL;
// 68 %RECORD(BLOCKINF) C; !INFO FOR CURRENT BLOCK
struct BLOCKINF C;
// 69 %RECORD(BLOCKINF)%ARRAY HOLD(1:12); !INFO FOR GLOBAL BLOCKS
struct BLOCKINF HOLD[12];
// 70 %INTEGERARRAY INDEX(0:255); !HASH INDEX TO IDENT DICT
int INDEX[256];
// 71 %INTEGERNAME HEAD; !HEAD OF IDENT SEARCH LIST
int *HEAD;
// 72 %INTEGER DPOS; !DICT SEARCH POSITION (POINTER)
int DPOS;
// 73 %INTEGER DLIM; !DICT LIMIT (POINTER)
int DLIM;
// 74 %INTEGER NEWDLIM
int NEWDLIM;
// 75 %INTEGER DBOUND; !DICT UPPER LIMIT (POINTER);
int DBOUND;
// 76 %INTEGER IDENTS; !POS OF FIRST IDENT IN DECL LIST (POINTER)
int IDENTS;
// 77 %INTEGER RECIDENTS; !POS OF FIRST IDENT IN RECORD LIST (POINTER)
int RECIDENTS;
// 78 %INTEGER PIDENTPOS; !POS OF PROCEDURE IDENT (POINTER)
int PIDENTPOS;
// 79 %INTEGER FIDENTPOS; !POS OF FORMAT IDENT (POINTER)
int FIDENTPOS;
// 80 %INTEGER EXTIND; !SET BY %EXTERNAL
int EXTIND;
// 81 %INTEGER CONDIND; !SET FOR START,CYCLE
int CONDIND;
// 82 %INTEGER PARMAX; !CURRENT MAX IN PARTYPE
int PARMAX;
// 83 %INTEGER ADGRAM0, LINK1; !PRE-COMPUTED GRAMMAR VALUES
int ADGRAM0;
int LINK1;
// 84 %INTEGER APPCONT
int APPCONT;
// 85
// 86 %OWNINTEGERARRAY PARTYPE(0:255) = 0,
static int PARTYPE[256] = {
0, 105, 16777321, 33554537, 50331753, 67108969, 83886185, 41, 16777257, 137, 136,
248, 33554473, 117440553, 16777352, 33554568, [16 ... 251] = 0, -50331543, -33553928, 0, -16777111};
// 87+ X'00000069', X'01000069', X'02000069', X'03000069',
// 88+ X'04000069', X'05000069', X'00000029', X'01000029',
// 89+ X'00000089', X'00000088', X'000000F8', X'02000029',
// 90+ X'07000029', X'01000088', X'02000088', 0(236),
// 91+ X'FD000069', X'FE0001F8', X'00000000', X'FF000069'
// 92
// 93 %INTEGERARRAY DICT(1:4000)
int DICT[4000];
// 94
// 95 !* GRAMMAR AND KEYWORD DICTIONARY GENERATED BY TAKEON PROGRAM
// 96
// 97 %CONSTINTEGER PUNCTMIN = 43, SKIP1MIN = 86
// 98
// 99 %CONSTBYTEINTEGERARRAY SYMINIT( 0: 255) = %C
const unsigned char SYMINIT[256] = {
129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 255, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 0, 217, 127, 171, 129, 128, 173, 127, 175, 178, 214, 180,
182, 184, 187, 189, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 192, 221, 194, 200, 203, 129, 129, 65,
66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
88, 89, 90, 129, 207, 129, 210, 212, 129, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 129, 207, 129, 210, 212, 129, 129, 129, 129,
129, 129, 129, 129, 129, 129, 255, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
129, 129, 129, 129, 129, 129, 0, 217, 127, 171, 129, 128, 173, 127, 175, 178, 214, 180, 182, 184, 187, 189,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 192, 221, 194, 200, 203, 129, 129, 130, 132, 134, 138, 139,
142, 129, 129, 146, 129, 129, 148, 150, 152, 154, 157, 158, 159, 161, 167, 169, 129, 170, 129, 129, 129, 129,
207, 129, 210, 212, 129, 130, 132, 134, 138, 139, 142, 129, 129, 146, 129, 129, 148, 150, 152, 154, 157, 158,
159, 161, 167, 169, 129, 170, 129, 129, 129, 129, 207, 129, 210, 212};
// 100+ 129, 129, 129, 129, 129, 129, 129, 129,
// 101+ 129, 129, 255, 129, 129, 129, 129, 129,
// 102+ 129, 129, 129, 129, 129, 129, 129, 129,
// 103+ 129, 129, 129, 129, 129, 129, 129, 129,
// 104+ 0, 217, 127, 171, 129, 128, 173, 127,
// 105+ 175, 178, 214, 180, 182, 184, 187, 189,
// 106+ 48, 49, 50, 51, 52, 53, 54, 55,
// 107+ 56, 57, 192, 221, 194, 200, 203, 129,
// 108+ 129, 65, 66, 67, 68, 69, 70, 71,
// 109+ 72, 73, 74, 75, 76, 77, 78, 79,
// 110+ 80, 81, 82, 83, 84, 85, 86, 87,
// 111+ 88, 89, 90, 129, 207, 129, 210, 212,
// 112+ 129, 65, 66, 67, 68, 69, 70, 71,
// 113+ 72, 73, 74, 75, 76, 77, 78, 79,
// 114+ 80, 81, 82, 83, 84, 85, 86, 87,
// 115+ 88, 89, 90, 129, 207, 129, 210, 212,
// 116+ 129, 129, 129, 129, 129, 129, 129, 129,
// 117+ 129, 129, 255, 129, 129, 129, 129, 129,
// 118+ 129, 129, 129, 129, 129, 129, 129, 129,
// 119+ 129, 129, 129, 129, 129, 129, 129, 129,
// 120+ 0, 217, 127, 171, 129, 128, 173, 127,
// 121+ 175, 178, 214, 180, 182, 184, 187, 189,
// 122+ 48, 49, 50, 51, 52, 53, 54, 55,
// 123+ 56, 57, 192, 221, 194, 200, 203, 129,
// 124+ 129, 130, 132, 134, 138, 139, 142, 129,
// 125+ 129, 146, 129, 129, 148, 150, 152, 154,
// 126+ 157, 158, 159, 161, 167, 169, 129, 170,
// 127+ 129, 129, 129, 129, 207, 129, 210, 212,
// 128+ 129, 130, 132, 134, 138, 139, 142, 129,
// 129+ 129, 146, 129, 129, 148, 150, 152, 154,
// 130+ 157, 158, 159, 161, 167, 169, 129, 170,
// 131+ 129, 129, 129, 129, 207, 129, 210, 212
// 132
// 133 %CONSTSHORTINTEGERARRAY KEYDICT( 0: 487) = %C
const short int KEYDICT[488] = {
0, 5, -26642, 6194, -26523, 6329, -26385, -26247, 0, 0, 6585, -26132, -26066, 6776,
-25887, -25815, -25746, 7151, -25562, 7342, -25367, 7471, -25247, 7599, -25119, 7727, -24978, -24782,
8119, 8178, 8245, -24475, 8687, -24024, -23959, -23888, -23820, -23625, 9209, -23512, 9330, 9390,
9512, 512, 240, 320, 64, -23231, 704, 0, 786, 0, 384, 113, 640, 0,
-23074, 384, 114, 384, 128, -22961, 320, 48, 1600, 1, -22835, -22692, -22563, -22434,
512, 240, -22307, 576, 240, -22179, -22050, 512, 240, -21923, 448, 68, 448, 68,
192, 0, -21814, 320, 112, -21695, -21559, 384, 67, 832, 1, 11364, 11506, 11559,
11636, -21075, 11758, 11875, 11950, 12019, 12068, -20503, 12340, 12469, 12526, 2496, 11, 12594,
1664, 3, 12788, 12851, 12910, 12976, 13102, 13165, 13236, -19419, 3264, 1, 2816, 0,
13422, 13545, 13601, -19103, -19037, -18969, -18896, -18829, 14004, 14069, 14127, 14183, 14245, -18463,
-18385, 14450, 14505, 14579, 14629, 14709, -18004, 14836, 14889, 3008, 0, 960, 0, 320,
64, 576, 0, 256, 64, 512, 240, 256, 64, 896, 0, 512, 240, 256,
64, 512, 240, 256, 112, 384, 68, 3072, 0, 2752, 0, 14945, 15017, 15077,
15149, -17549, 15284, 15340, 15393, 15461, -17169, 3712, 0, 15668, -16987, 15858, 15916, 15977,
-16723, 3136, 0, 16101, 16180, 16295, 2496, 3, 16425, 16485, 2880, 0, 16630, 2048,
0, 16686, 16740, 16812, 17007, 17065, 17125, 17205, 17269, 17332, 17394, 17454, 17507, 17650,
17712, 17833, 17908, 17972, 18030, 18163, 18213, 18281, 18348, 18425, 18606, 18729, 18789, 18868,
18994, 19045, 19181, 3328, 1, 19238, 1024, 2, 19442, 19497, 19572, 19699, 19745, 19815,
1280, 0, -12887, 19954, 20020, 2240, 1, 20069, 20148, 20210, -12493, 1984, 25, 20402,
20467, 20513, 20588, 20658, 20713, 20788, 20897, 2624, 1, 20980, 1024, 0, 21102, 21155,
21221, 3200, 0, 21300, 21363, 21420, 21541, -11090, 2112, 256, 3648, 0, 21742, 21806,
2048, 8, 21871, 3456, 2, 21929, -10778, -10708, 22128, 22190, 22254, 1472, 0, 22312,
22452, 22565, 22638, 22693, 22767, 22830, 22900, 22949, -9748, 23086, 23140, 23284, 23348, 23476,
23598, 23726, -8983, 23858, 23916, 3392, 1, 24039, 24168, 24301, 24421, 24499, 1728, 0,
1728, 0, 24609, 24692, 24756, 24876, 24995, 25129, 25193, 25266, 25313, 25395, 3520, 1,
2368, 0, 25458, 25588, 25633, 25714, 25908, 26021, 26081, 26159, 26223, 2304, 9, 26277,
3584, 0, 1088, 0, 1024, 1, 26341, 26478, 26543, 1152, 0, 2176, 137, 1920,
268, 2688, 0, 26596, 1664, 3, 26669, 26725, 0, 2, 1344, 0, 2688, 0,
26796, 26867, 26927, 26988, 27113, 1984, 105, 27173, 27244, -5389, 1152, 0, 3264, 1,
27448, 27500, 27630, 27698, 27762, 2560, 6, 27892, 27957, 28016, 28069, 28199, 28261, 28404,
28519, 2432, 0, 28579, 28711, 1984, 41, 28788, 28852, 1984, 57, 28967, 29101, 1856,
121, 29157, 29236, 29298, 2240, -255, 29349, 3776, 0, 1280, 0, 29426, 2048, 0,
29477, 29551, 1216, 0, 1408, 32, 29601, 29671, 29737, 29807, 29874, 29985, 30066, 30192,
30316, 30437, 30510, 30567, 1984, 73, 30637, 1984, 121, 1024, 0, 1408, 0, 30770,
30885, 31026, 3776, 1, 1984, 89, 1280, 0, 31073, 31149, 1280, 0};
// 134+ 0, 5,-26642, 6194,-26523, 6329,-26385,-26247, 0, 0,
// 135+ 6585,-26132,-26066, 6776,-25887,-25815,-25746, 7151,-25562, 7342,
// 136+ -25367, 7471,-25247, 7599,-25119, 7727,-24978,-24782, 8119, 8178,
// 137+ 8245,-24475, 8687,-24024,-23959,-23888,-23820,-23625, 9209,-23512,
// 138+ 9330, 9390, 9512, 512, 240, 320, 64,-23231, 704, 0,
// 139+ 786, 0, 384, 113, 640, 0,-23074, 384, 114, 384,
// 140+ 128,-22961, 320, 48, 1600, 1,-22835,-22692,-22563,-22434,
// 141+ 512, 240,-22307, 576, 240,-22179,-22050, 512, 240,-21923,
// 142+ 448, 68, 448, 68, 192, 0,-21814, 320, 112,-21695,
// 143+ -21559, 384, 67, 832, 1, 11364, 11506, 11559, 11636,-21075,
// 144+ 11758, 11875, 11950, 12019, 12068,-20503, 12340, 12469, 12526, 2496,
// 145+ 11, 12594, 1664, 3, 12788, 12851, 12910, 12976, 13102, 13165,
// 146+ 13236,-19419, 3264, 1, 2816, 0, 13422, 13545, 13601,-19103,
// 147+ -19037,-18969,-18896,-18829, 14004, 14069, 14127, 14183, 14245,-18463,
// 148+ -18385, 14450, 14505, 14579, 14629, 14709,-18004, 14836, 14889, 3008,
// 149+ 0, 960, 0, 320, 64, 576, 0, 256, 64, 512,
// 150+ 240, 256, 64, 896, 0, 512, 240, 256, 64, 512,
// 151+ 240, 256, 112, 384, 68, 3072, 0, 2752, 0, 14945,
// 152+ 15017, 15077, 15149,-17549, 15284, 15340, 15393, 15461,-17169, 3712,
// 153+ 0, 15668,-16987, 15858, 15916, 15977,-16723, 3136, 0, 16101,
// 154+ 16180, 16295, 2496, 3, 16425, 16485, 2880, 0, 16630, 2048,
// 155+ 0, 16686, 16740, 16812, 17007, 17065, 17125, 17205, 17269, 17332,
// 156+ 17394, 17454, 17507, 17650, 17712, 17833, 17908, 17972, 18030, 18163,
// 157+ 18213, 18281, 18348, 18425, 18606, 18729, 18789, 18868, 18994, 19045,
// 158+ 19181, 3328, 1, 19238, 1024, 2, 19442, 19497, 19572, 19699,
// 159+ 19745, 19815, 1280, 0,-12887, 19954, 20020, 2240, 1, 20069,
// 160+ 20148, 20210,-12493, 1984, 25, 20402, 20467, 20513, 20588, 20658,
// 161+ 20713, 20788, 20897, 2624, 1, 20980, 1024, 0, 21102, 21155,
// 162+ 21221, 3200, 0, 21300, 21363, 21420, 21541,-11090, 2112, 256,
// 163+ 3648, 0, 21742, 21806, 2048, 8, 21871, 3456, 2, 21929,
// 164+ -10778,-10708, 22128, 22190, 22254, 1472, 0, 22312, 22452, 22565,
// 165+ 22638, 22693, 22767, 22830, 22900, 22949, -9748, 23086, 23140, 23284,
// 166+ 23348, 23476, 23598, 23726, -8983, 23858, 23916, 3392, 1, 24039,
// 167+ 24168, 24301, 24421, 24499, 1728, 0, 1728, 0, 24609, 24692,
// 168+ 24756, 24876, 24995, 25129, 25193, 25266, 25313, 25395, 3520, 1,
// 169+ 2368, 0, 25458, 25588, 25633, 25714, 25908, 26021, 26081, 26159,
// 170+ 26223, 2304, 9, 26277, 3584, 0, 1088, 0, 1024, 1,
// 171+ 26341, 26478, 26543, 1152, 0, 2176, 137, 1920, 268, 2688,
// 172+ 0, 26596, 1664, 3, 26669, 26725, 0, 2, 1344, 0,
// 173+ 2688, 0, 26796, 26867, 26927, 26988, 27113, 1984, 105, 27173,
// 174+ 27244, -5389, 1152, 0, 3264, 1, 27448, 27500, 27630, 27698,
// 175+ 27762, 2560, 6, 27892, 27957, 28016, 28069, 28199, 28261, 28404,
// 176+ 28519, 2432, 0, 28579, 28711, 1984, 41, 28788, 28852, 1984,
// 177+ 57, 28967, 29101, 1856, 121, 29157, 29236, 29298, 2240, -255,
// 178+ 29349, 3776, 0, 1280, 0, 29426, 2048, 0, 29477, 29551,
// 179+ 1216, 0, 1408, 32, 29601, 29671, 29737, 29807, 29874, 29985,
// 180+ 30066, 30192, 30316, 30437, 30510, 30567, 1984, 73, 30637, 1984,
// 181+ 121, 1024, 0, 1408, 0, 30770, 30885, 31026, 3776, 1,
// 182+ 1984, 89, 1280, 0, 31073, 31149, 1280, 0
// 183
// 184 %CONSTSHORTINTEGERARRAY PHRASE( 109: 126) = %C
const short int PHRASE[18] = {257, 249, 368, 430, 264, 269, 286, 298, 335, 345, 0, 452, 237, 374, 381, 0, 420, 437};
// 185+ 257, 249, 368, 430, 264, 269, 286, 298, 335, 345,
// 186+ 0, 452, 237, 374, 381, 0, 420, 437
// 187
// 188 %CONSTINTEGER INITBASE = 472
// 189
// 190 {%CONST}%OWNSHORTINTEGERARRAY GRAM( 0: 531) = %C
static short int GRAM[532] = {
66, 4084, 4511, 4898, 5028, 6440, 64, 7071, 7330, 5028, 64, 11553, 1955, 11685, 11945, 12273,
12321, 2467, 6439, 5617, 12429, 2996, 64, 5786, 5557, 5620, 2157, 12575, 12834, 6440, 64, 12954,
12955, 6961, 64, 13089, 6439, 5489, 4589, 13345, 1955, 12273, 7433, 12429, 64, 6005, 7602, 5557,
64, 7925, 13569, 13737, 64, 12429, 5630, 13089, 5489, 7149, 8257, 5557, 14068, 3250, 5558, 64,
8442, 8538, 4746, 12429, 64, 9042, 9200, 8963, 14217, 14350, 14479, 14617, 9927, 12429, 14763, 66,
14970, 15098, 15489, 64, 15729, 16129, 64, 8062, 16378, 5576, 12274, 16769, 64, 16897, 64, 5614,
5618, 69, 6439, 64, 12653, 5621, 17281, 64, 17409, 64, 17612, 13569, 64, 3124, 64, 18154,
18287, 9976, 9956, 116, 5599, 15199, 10378, 18319, 64, 18636, 15859, 10762, 12429, 64, 18897, 16479,
11274, 5557, 64, 19021, 17105, 17155, 12239, 19276, 19788, 17736, 19851, 19981, 64, 20218, 9964, 20225,
64, 20363, 64, 17616, 20619, 64, 19443, 22409, 12429, 64, 12275, 22905, 89, 9963, 23126, 23554,
64, 20806, 21279, 22306, 21796, 64, 23809, 24609, 24867, 64, 25089, 25889, 24867, 64, 21357, 22593,
26125, 26362, 26881, 64, 23242, 10378, 12429, 64, 5516, 64, 24014, 24330, 5516, 64, 23809, 20806,
27649, 64, 23809, 64, 25294, 28682, 25582, 20618, 5516, 64, 28929, 64, 22724, 26458, 22538, 29067,
29197, 64, 27084, 27402, 17804, 22905, 26881, 22905, 27854, 24586, 28147, 28426, 5516, 64, 27649, 20806,
25089, 64, 29390, 29562, 91, 25459, 29663, 29836, 64, 30046, 22538, 29197, 64, 30534, 31135, 31522,
31652, 40, 31691, 35, 39, 66, 31213, 35, 64, 32139, 64, 32385, 64, 32597, 32780, 64,
88, 33163, 66, 33402, 33503, 33676, 64, 98, 34049, 64, 34252, 33802, 66, 34597, 34801, 34955,
64, 35194, 35296, 35481, 64, 35677, 35834, 35936, 34954, 36236, 64, 36444, 34570, 66, 36875, 64,
37114, 37215, 37401, 64, 37608, 37754, 37855, 38028, 64, 99, 39937, 40847, 41104, 39569, 39058, 41363,
64, 41602, 12429, 14763, 66, 41737, 41870, 64, 40147, 40304, 40067, 14217, 14350, 14479, 9927, 41985,
64, 12429, 66, 42114, 64, 41184, 42346, 42479, 42582, 9953, 42746, 41196, 42864, 41195, 41162, 43126,
43520, 43691, 43820, 66, 67, 44022, 43382, 43691, 66, 44939, 44538, 45448, 45577, 45711, 67, 45173,
45824, 12, 64, 46202, 45544, 120, 46604, 64, 46313, 46728, 46857, 66, 44539, 47098, 46824, 105,
47361, 64, 47569, 47728, 47491, 66, 49281, 48770, 50182, 50311, 50443, 50607, 64, 50308, 50693, 51078,
66, 49492, 49648, 49411, 50308, 50693, 51078, 66, 51302, 51453, 51578, 51834, 50941, 51972, 49001, 52200,
52733, 48873, 48780, 64, 48816, 64, 52861, 52349, 52868, 52997, 49129, 52327, 50921, 53501, 53245, 53508,
52457, 52329, 53757, 53225, 54401, 2, 54539, 54703, 64, 47572, 45306, 54906, 48, 64, 55307, 66,
55546, 55615, 55306, 12, 64, 56175, 56288, 56457, 64, 56641, 56826, 56928, 57098, 64, 57338, 57440,
57610, 64, 57850, 96, 58057, 58251, 58479, 58618, 58721, 58977, 59142, 64, 59276, 64, 59621, 59782,
64, 58251, 64, 60005, 60143, 60257, 59142, 66, 0, 8833, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 40847, 41104, 39569, 39058, 41363, 5524, 10261, 5526, 10391,
0, 0, 5786, 6299, 0, 10525, 10782, 2079, 928, 0, 3362, 0, 1444, 0, 294, 0,
6440, 10921, 3498, 0, 0, 0, 0, 0, 0, 11185, 0, 11315, 0, 0, 6838, 2615,
5560, 11449, 5562, 59};
// 191+ 66, 4084, 4511, 4898, 5028, 6440, 64, 7071, 7330, 5028,
// 192+ 64, 11553, 1955, 11685, 11945, 12273, 12321, 2467, 6439, 5617,
// 193+ 12429, 2996, 64, 5786, 5557, 5620, 2157, 12575, 12834, 6440,
// 194+ 64, 12954, 12955, 6961, 64, 13089, 6439, 5489, 4589, 13345,
// 195+ 1955, 12273, 7433, 12429, 64, 6005, 7602, 5557, 64, 7925,
// 196+ 13569, 13737, 64, 12429, 5630, 13089, 5489, 7149, 8257, 5557,
// 197+ 14068, 3250, 5558, 64, 8442, 8538, 4746, 12429, 64, 9042,
// 198+ 9200, 8963, 14217, 14350, 14479, 14617, 9927, 12429, 14763, 66,
// 199+ 14970, 15098, 15489, 64, 15729, 16129, 64, 8062, 16378, 5576,
// 200+ 12274, 16769, 64, 16897, 64, 5614, 5618, 69, 6439, 64,
// 201+ 12653, 5621, 17281, 64, 17409, 64, 17612, 13569, 64, 3124,
// 202+ 64, 18154, 18287, 9976, 9956, 116, 5599, 15199, 10378, 18319,
// 203+ 64, 18636, 15859, 10762, 12429, 64, 18897, 16479, 11274, 5557,
// 204+ 64, 19021, 17105, 17155, 12239, 19276, 19788, 17736, 19851, 19981,
// 205+ 64, 20218, 9964, 20225, 64, 20363, 64, 17616, 20619, 64,
// 206+ 19443, 22409, 12429, 64, 12275, 22905, 89, 9963, 23126, 23554,
// 207+ 64, 20806, 21279, 22306, 21796, 64, 23809, 24609, 24867, 64,
// 208+ 25089, 25889, 24867, 64, 21357, 22593, 26125, 26362, 26881, 64,
// 209+ 23242, 10378, 12429, 64, 5516, 64, 24014, 24330, 5516, 64,
// 210+ 23809, 20806, 27649, 64, 23809, 64, 25294, 28682, 25582, 20618,
// 211+ 5516, 64, 28929, 64, 22724, 26458, 22538, 29067, 29197, 64,
// 212+ 27084, 27402, 17804, 22905, 26881, 22905, 27854, 24586, 28147, 28426,
// 213+ 5516, 64, 27649, 20806, 25089, 64, 29390, 29562, 91, 25459,
// 214+ 29663, 29836, 64, 30046, 22538, 29197, 64, 30534, 31135, 31522,
// 215+ 31652, 40, 31691, 35, 39, 66, 31213, 35, 64, 32139,
// 216+ 64, 32385, 64, 32597, 32780, 64, 88, 33163, 66, 33402,
// 217+ 33503, 33676, 64, 98, 34049, 64, 34252, 33802, 66, 34597,
// 218+ 34801, 34955, 64, 35194, 35296, 35481, 64, 35677, 35834, 35936,
// 219+ 34954, 36236, 64, 36444, 34570, 66, 36875, 64, 37114, 37215,
// 220+ 37401, 64, 37608, 37754, 37855, 38028, 64, 99, 39937, 40847,
// 221+ 41104, 39569, 39058, 41363, 64, 41602, 12429, 14763, 66, 41737,
// 222+ 41870, 64, 40147, 40304, 40067, 14217, 14350, 14479, 9927, 41985,
// 223+ 64, 12429, 66, 42114, 64, 41184, 42346, 42479, 42582, 9953,
// 224+ 42746, 41196, 42864, 41195, 41162, 43126, 43520, 43691, 43820, 66,
// 225+ 67, 44022, 43382, 43691, 66, 44939, 44538, 45448, 45577, 45711,
// 226+ 67, 45173, 45824, 12, 64, 46202, 45544, 120, 46604, 64,
// 227+ 46313, 46728, 46857, 66, 44539, 47098, 46824, 105, 47361, 64,
// 228+ 47569, 47728, 47491, 66, 49281, 48770, 50182, 50311, 50443, 50607,
// 229+ 64, 50308, 50693, 51078, 66, 49492, 49648, 49411, 50308, 50693,
// 230+ 51078, 66, 51302, 51453, 51578, 51834, 50941, 51972, 49001, 52200,
// 231+ 52733, 48873, 48780, 64, 48816, 64, 52861, 52349, 52868, 52997,
// 232+ 49129, 52327, 50921, 53501, 53245, 53508, 52457, 52329, 53757, 53225,
// 233+ 54401, 2, 54539, 54703, 64, 47572, 45306, 54906, 48, 64,
// 234+ 55307, 66, 55546, 55615, 55306, 12, 64, 56175, 56288, 56457,
// 235+ 64, 56641, 56826, 56928, 57098, 64, 57338, 57440, 57610, 64,
// 236+ 57850, 96, 58057, 58251, 58479, 58618, 58721, 58977, 59142, 64,
// 237+ 59276, 64, 59621, 59782, 64, 58251, 64, 60005, 60143, 60257,
// 238+ 59142, 66, 0, 8833, 0, 0, 0, 0, 0, 0,
// 239+ 0, 0, 0, 0, 0, 0, 0, 40847, 41104, 39569,
// 240+ 39058, 41363, 5524, 10261, 5526, 10391, 0, 0, 5786, 6299,
// 241+ 0, 10525, 10782, 2079, 928, 0, 3362, 0, 1444, 0,
// 242+ 294, 0, 6440, 10921, 3498, 0, 0, 0, 0, 0,
// 243+ 0, 11185, 0, 11315, 0, 0, 6838, 2615, 5560, 11449,
// 244+ 5562, 59
// 245
// 246 !!END OF GENERATED SECTION
// 247
// 248 {%CONST}%OWNBYTEINTEGERARRAY PERM(1:518) = %C
static unsigned char PERM[518] = {
65, 68, 68, 82, 58, 11, 98, 65, 82, 67, 67, 79, 83, 58, 7, 34, 65, 82, 67, 83, 73, 78, 58, 7, 34, 65,
82, 82, 65, 89, 58, 252, 248, 65, 82, 67, 84, 65, 78, 58, 13, 34, 66, 89, 84, 69, 73, 78, 84, 69, 71, 69,
82, 58, 1, 74, 67, 72, 65, 82, 78, 79, 58, 14, 74, 67, 76, 79, 83, 69, 83, 84, 82, 69, 65, 77, 58, 1,
6, 67, 79, 83, 58, 7, 34, 69, 88, 80, 58, 7, 34, 70, 82, 65, 67, 80, 84, 58, 7, 34, 70, 82, 79, 77,
83, 84, 82, 73, 78, 71, 58, 15, 130, 73, 77, 79, 68, 58, 1, 98, 73, 78, 84, 58, 7, 98, 73, 78, 84, 80,
84, 58, 7, 98, 73, 78, 84, 69, 71, 69, 82, 58, 1, 106, 76, 69, 78, 71, 84, 72, 58, 10, 74, 76, 79, 71,
58, 7, 34, 76, 79, 78, 71, 82, 69, 65, 76, 58, 1, 26, 77, 79, 68, 58, 7, 34, 78, 69, 87, 76, 73, 78,
69, 58, 0, 6, 78, 69, 87, 76, 73, 78, 69, 83, 58, 1, 6, 78, 69, 87, 80, 65, 71, 69, 58, 0, 6, 78,
69, 88, 84, 73, 84, 69, 77, 58, 0, 130, 78, 69, 88, 84, 67, 72, 58, 0, 98, 78, 69, 88, 84, 83, 89, 77,
66, 79, 76, 58, 0, 98, 78, 76, 58, 0, 98, 80, 73, 58, 0, 34, 80, 82, 73, 78, 84, 58, 12, 6, 80, 82,
73, 78, 84, 67, 72, 58, 1, 6, 80, 82, 73, 78, 84, 70, 76, 58, 8, 6, 80, 82, 73, 78, 84, 83, 84, 82,
73, 78, 71, 58, 9, 6, 80, 82, 73, 78, 84, 83, 89, 77, 66, 79, 76, 58, 1, 6, 82, 65, 68, 73, 85, 83,
58, 13, 34, 82, 69, 65, 68, 58, 11, 6, 82, 69, 65, 68, 67, 72, 58, 11, 6, 82, 69, 65, 68, 73, 84, 69,
77, 58, 10, 6, 82, 69, 65, 68, 83, 84, 82, 73, 78, 71, 58, 10, 6, 82, 69, 65, 68, 83, 89, 77, 66, 79,
76, 58, 11, 6, 82, 69, 65, 76, 58, 1, 26, 82, 69, 67, 79, 82, 68, 58, 1, 10, 83, 69, 76, 69, 67, 84,
73, 78, 80, 85, 84, 58, 1, 6, 83, 69, 76, 69, 67, 84, 79, 85, 84, 80, 85, 84, 58, 1, 6, 83, 69, 84,
77, 65, 82, 71, 73, 78, 83, 58, 3, 6, 83, 72, 79, 82, 84, 73, 78, 84, 69, 71, 69, 82, 58, 1, 90, 83,
73, 78, 58, 7, 34, 83, 75, 73, 80, 83, 89, 77, 66, 79, 76, 58, 0, 6, 83, 80, 65, 67, 69, 58, 0, 6,
83, 80, 65, 67, 69, 83, 58, 1, 6, 83, 81, 82, 84, 58, 7, 34, 83, 84, 82, 73, 78, 71, 58, 1, 138, 84,
65, 78, 58, 7, 34, 84, 79, 83, 84, 82, 73, 78, 71, 58, 1, 130, 87, 82, 73, 84, 69, 58, 2, 6};
auto void PRINTSS(void);
auto void REPORT(int N);
auto void CODEATOM(void);
auto void POPCONTEXT(void);
auto void DEFINE(int DISP, int VAL);
// 249+ 'A','D','D','R',':',X'0B',X'62',
// 250+ 'A','R','C','C','O','S',':',X'07',X'22',
// 251+ 'A','R','C','S','I','N',':',X'07',X'22',
// 252+ 'A','R','R','A','Y',':',X'FC',X'F8',
// 253+ 'A','R','C','T','A','N',':',X'0D',X'22',
// 254+ 'B','Y','T','E','I','N','T','E','G','E','R',':',X'01',X'4A',
// 255+ 'C','H','A','R','N','O',':',X'0E',X'4A',
// 256+ 'C','L','O','S','E','S','T','R','E','A','M',':',X'01',X'06',
// 257+ 'C','O','S',':',X'07',X'22',
// 258+ 'E','X','P',':',X'07',X'22',
// 259+ 'F','R','A','C','P','T',':',X'07',X'22',
// 260+ 'F','R','O','M','S','T','R','I','N','G',':',X'0F',X'82',
// 261+ 'I','M','O','D',':',X'01',X'62',
// 262+ 'I','N','T',':',X'07',X'62',
// 263+ 'I','N','T','P','T',':',X'07',X'62',
// 264+ 'I','N','T','E','G','E','R',':',X'01',X'6A',
// 265+ 'L','E','N','G','T','H',':',X'0A',X'4A',
// 266+ 'L','O','G',':',X'07',X'22',
// 267+ 'L','O','N','G','R','E','A','L',':',X'01',X'1A',
// 268+ 'M','O','D',':',X'07',X'22',
// 269+ 'N','E','W','L','I','N','E',':',X'00',X'06',
// 270+ 'N','E','W','L','I','N','E','S',':',X'01',X'06',
// 271+ 'N','E','W','P','A','G','E',':',X'00',X'06',
// 272+ 'N','E','X','T','I','T','E','M',':',X'00',X'82',
// 273+ 'N','E','X','T','C','H',':',X'00',X'62',
// 274+ 'N','E','X','T','S','Y','M','B','O','L',':',X'00',X'62',
// 275+ 'N','L',':',X'00',X'62',
// 276+ 'P','I',':',X'00',X'22',
// 277+ 'P','R','I','N','T',':',X'0C',X'06',
// 278+ 'P','R','I','N','T','C','H',':',X'01',X'06',
// 279+ 'P','R','I','N','T','F','L',':',X'08',X'06',
// 280+ 'P','R','I','N','T','S','T','R','I','N','G',':',X'09',X'06',
// 281+ 'P','R','I','N','T','S','Y','M','B','O','L',':',X'01',X'06',
// 282+ 'R','A','D','I','U','S',':',X'0D',X'22',
// 283+ 'R','E','A','D',':',X'0B',X'06',
// 284+ 'R','E','A','D','C','H',':',X'0B',X'06',
// 285+ 'R','E','A','D','I','T','E','M',':',X'0A',X'06',
// 286+ 'R','E','A','D','S','T','R','I','N','G',':',X'0A',X'06',
// 287+ 'R','E','A','D','S','Y','M','B','O','L',':',X'0B',X'06',
// 288+ 'R','E','A','L',':',X'01',X'1A',
// 289+ 'R','E','C','O','R','D',':',X'01',X'0A',
// 290+ 'S','E','L','E','C','T','I','N','P','U','T',':',X'01',X'06',
// 291+ 'S','E','L','E','C','T','O','U','T','P','U','T',':',X'01',X'06',
// 292+ 'S','E','T','M','A','R','G','I','N','S',':',X'03',X'06',
// 293+ 'S','H','O','R','T','I','N','T','E','G','E','R',':',X'01',X'5A',
// 294+ 'S','I','N',':',X'07',X'22',
// 295+ 'S','K','I','P','S','Y','M','B','O','L',':',X'00',X'06',
// 296+ 'S','P','A','C','E',':',X'00',X'06',
// 297+ 'S','P','A','C','E','S',':',X'01',X'06',
// 298+ 'S','Q','R','T',':',X'07',X'22',
// 299+ 'S','T','R','I','N','G',':',X'01',X'8A',
// 300+ 'T','A','N',':',X'07',X'22',
// 301+ 'T','O','S','T','R','I','N','G',':',X'01',X'82',
// 302+ 'W','R','I','T','E',':',X'02',X'06'
// 303
// 304
// 305 %ROUTINESPEC PRINT SS
// 306 %ROUTINESPEC REPORT(%INTEGER N)
// 307 %ROUTINESPEC CODE ATOM
// 308 %ROUTINESPEC POP CONTEXT
// 309 %ROUTINESPEC DEFINE(%INTEGER DISP, VAL)
// 310
// 311 %ROUTINE FAULT(%INTEGER N)
void FAULT(int N) {
// 312 FAULTNUM = N %AND FAULTPOS = FPOS1 %IF FAULTNUM < 0
if (FAULTNUM >= 0) goto L_0001;
FAULTNUM = N;
FAULTPOS = FPOS1;
L_0001:;
// 313 %END
return;
} /* end of FAULT */
// 314
// 315 ! GRAM LAYOUT: LINK<9> CLASS<7>
// 316 %SWITCH A(0:127)
int A_index;
int A_line;
char *A_file;
static const void *A[128] = {
&&case_A_0, &&case_A_1, &&case_A_2, &&case_A_3, &&case_A_4, &&case_A_5,
&&case_A_6, &&case_A_7, &&case_A_8, &&case_A_9, &&case_A_10, &&case_A_11,
&&case_A_12, &&case_A_13, &&case_A_14, &&case_A_15, &&case_A_16, &&case_A_17,
&&case_A_18, &&case_A_19, &&case_A_20, &&case_A_21, &&case_A_22, &&case_A_23,
&&case_A_missing, &&case_A_25, &&case_A_26, &&case_A_27, &&case_A_missing, &&case_A_29,
&&case_A_30, &&case_A_31, &&case_A_32, &&case_A_33, &&case_A_34, &&case_A_35,
&&case_A_36, &&case_A_37, &&case_A_38, &&case_A_39, &&case_A_40, &&case_A_41,
&&case_A_42, &&case_A_43, &&case_A_44, &&case_A_45, &&case_A_missing, &&case_A_47,
&&case_A_48, &&case_A_missing, &&case_A_50, &&case_A_51, &&case_A_52, &&case_A_53,
&&case_A_54, &&case_A_55, &&case_A_56, &&case_A_57, &&case_A_58, &&case_A_59,
&&case_A_60, &&case_A_missing, &&case_A_missing, &&case_A_63, &&case_A_64, &&case_A_65,
&&case_A_66, &&case_A_67, &&case_A_68, &&case_A_69, &&case_A_70, &&case_A_71,
&&case_A_72, &&case_A_73, &&case_A_74, &&case_A_75, &&case_A_76, &&case_A_77,
&&case_A_78, &&case_A_79, &&case_A_80, &&case_A_81, &&case_A_82, &&case_A_83,
&&case_A_84, &&case_A_85, &&case_A_86, &&case_A_missing, &&case_A_88, &&case_A_89,
&&case_A_90, &&case_A_91, &&case_A_92, &&case_A_93, &&case_A_94, &&case_A_95,
&&case_A_96, &&case_A_97, &&case_A_98, &&case_A_99, &&case_A_100, &&case_A_101,
&&case_A_102, &&case_A_103, &&case_A_104, &&case_A_105, &&case_A_106, &&case_A_107,
&&case_A_108, &&case_A_109, &&case_A_110, &&case_A_111, &&case_A_112, &&case_A_113,
&&case_A_114, &&case_A_115, &&case_A_116, &&case_A_117, &&case_A_118, &&case_A_119,
&&case_A_120, &&case_A_121, &&case_A_122, &&case_A_123, &&case_A_124, &&case_A_125,
&&case_A_126, &&case_A_missing};
// 317 %SWITCH X(0:4)
int X_index;
int X_line;
char *X_file;
static const void *X[5] = {&&case_X_0, &&case_X_1, &&case_X_2, &&case_X_3, &&case_X_4};
// 318 TIME1 = CPUTIME
TIME1 = _imp_CPUTIME();
// 319 %CYCLE I = 0,1,255
// %for I = 0, 1, 255 %cycle
{
I = -1;
L_0002:
if (I == 255) goto L_0003;
I += 1;
// 320 INDEX(I) = 0
INDEX[I] = 0;
// 321 %REPEAT
goto L_0002;
}
L_0003:;
// 322 C = 0
C = (struct BLOCKINF){0};
// 323 IDENTS = 0
IDENTS = 0;
// 324 PRINTPOS = 0; PRECISION = 0; LEVEL = 0
PRINTPOS = 0;
PRECISION = 0;
LEVEL = 0;
// 325 NEXTLINE = 1; FAULTNUM = -1; PARMAX = 15
NEXTLINE = 1;
FAULTNUM = -1;
PARMAX = 15;
// 326 ADGRAM0 = ADDR(GRAM(0)); LINK1 = GRAM(1)>>6&1022+ADGRAM0
ADGRAM0 = _imp_ADDR(/*?*/ &GRAM[0]);
LINK1 = ((unsigned int)GRAM[1] >> 6 & 1022) + ADGRAM0;
// 327 APPCONT = GRAM(GRAM(PHRASE(112))>>7&511)>>6&1022+ADGRAM0
APPCONT = ((unsigned int)GRAM[(unsigned int)GRAM[PHRASE[3]] >> 7 & 511] >> 6 & 1022) + ADGRAM0;
// 328 DLIM = ADDR(DICT(1)); DBOUND = ADDR(DICT(4000))
DLIM = _imp_ADDR(/*?*/ &DICT[0]);
DBOUND = _imp_ADDR(/*?*/ &DICT[3999]);
// 329 FPOS = ADDR(PERM(1))-1; FMAX = ADDR(PERM(518))
FPOS = _imp_ADDR(/*?*/ &PERM[0]) - 1;
FMAX = _imp_ADDR(/*?*/ &PERM[517]);
// 330 %CYCLE I = 1,1,54
// %for I = 1, 1, 54 %cycle
{
I = 0;
L_0005:
if (I == 54) goto L_0006;
I += 1;
// 331 SYMCODE = 0
SYMCODE = 0;
// 332 CODE ATOM; %MONITOR %AND %STOP %IF ATOM # IDENT
CODEATOM();
if (ATOM == 1) goto L_0007;
/*_imp_monitor(__LINE__, __FILE__, PRETTY_FUNCTION);*/
_imp_stop(0);
L_0007:;
// 333 INTEGER(DLIM) = BYTEINTEGER(FPOS+1)<<8+BYTEINTEGER(FPOS+2)
*_imp_INTEGER(DLIM) = (*_imp_BYTEINTEGER(FPOS + 1) << 8) + *_imp_BYTEINTEGER(FPOS + 2);
// 334 FPOS = FPOS+2
FPOS = FPOS + 2;
// 335 INTEGER(DLIM+4) = 0
*_imp_INTEGER(DLIM + 4) = 0;
// 336 INTEGER(DLIM+8) = HEAD; HEAD = DLIM
*_imp_INTEGER(DLIM + 8) = *HEAD;
*HEAD = DLIM;
// 337 DLIM = NEWDLIM
DLIM = NEWDLIM;
// 338 %REPEAT
goto L_0005;
}
L_0006:;
// 339 C_LOCAL = DLIM
C.LOCAL = DLIM;
// 340 FPOS = FSTART-1; FMAX = FPOS+FSIZE
FPOS = FSTART - 1;
FMAX = FPOS + FSIZE;
// 341 SYMCODE = 0
SYMCODE = 0;
// 342 L1: ->ENDED %IF FPOS >= FMAX
U_1000:;
if (FPOS < FMAX) goto L_0008;
goto U_1001;
L_0008:;
// 343 LINEBASE = FPOS; LINE = NEXTLINE
LINEBASE = FPOS;
LINE = NEXTLINE;
// 344 L3: ATOM = JUMP; !FOR NUMERIC LABEL DETECTION
U_1002:;
ATOM = 15;
// 345 SKIPMIN = SKIP1MIN; !TO IGNORE NULL STATEMENTS AND COMMENTS
SKIPMIN = 86;
// 346 CODE ATOM
CODEATOM();
// 347 SKIPMIN = NLCODE
SKIPMIN = 127;
// 348 STATS = STATS+1
STATS = STATS + 1;
// 349 EXTIND = 0; DECLTYPE = 0
EXTIND = 0;
DECLTYPE = 0;
// 350 CONSTCOUNT = 0; DIMCOUNT = 0
CONSTCOUNT = 0;
DIMCOUNT = 0;
// 351 NP = 51
NP = 51;
// 352 LINKMAX = 1; LINK(1) = LINK1; !FOR GRATUITOUS PHRASE EXIT
LINKMAX = 1;
LINK[0] = LINK1;
// 353 I = GRAM(INITBASE+ATOM)
I = GRAM[472 + ATOM];
// 354 ->ERR %IF I = 0
if (I != 0) goto L_0009;
goto U_1003;
L_0009:;
// 355 G = I>>6&1022+ADGRAM0
G = ((unsigned int)I >> 6 & 1022) + ADGRAM0;
// 356 ->A(ATOM)
A_line = __LINE__;
A_file = __FILE__;
A_index = ATOM;
goto case_A_dispatch;
// 357 A(1): !IDENT
case_A_1:;
// 358 A(6): !OP3
case_A_6:;
// 359 A(9): !EQ
case_A_9:;
// 360 A(13): !NL
case_A_13:;
// 361 A(25): !COLON
case_A_25:;
// 362 I = SHORTINTEGER(G); G = I>>6&1022+ADGRAM0
I = *_imp_SHORTINTEGER(G);
G = ((unsigned int)I >> 6 & 1022) + ADGRAM0;
// 363 ->A(I&127)
A_line = __LINE__;
A_file = __FILE__;
A_index = I & 127;
goto case_A_dispatch;
// 364 A(10): A(11): A(12): A(15): A(18): A(19): A(20):
case_A_10:;
case_A_11:;
case_A_12:;
case_A_15:;
case_A_18:;
case_A_19:;
case_A_20:;
// 365 A(21): A(23): A(27): A(37):
case_A_21:;
case_A_23:;
case_A_27:;
case_A_37:;
// 366 A(43): A(44): A(45):
case_A_43:;
case_A_44:;
case_A_45:;
// 367 A(47): A(48): A(50): A(57): A(65):
case_A_47:;
case_A_48:;
case_A_50:;
case_A_57:;
case_A_65:;
// 368 CODE:
U_1004:;
// 369 CODE ATOM
CODEATOM();
// 370 ON:
U_1005:;
// 371 REP:%CYCLE
U_1006:;
L_000B:;
// 372 ! LOOPS = LOOPS+1
// 373 CLASS = SHORTINTEGER(G)&127
CLASS = *_imp_SHORTINTEGER(G) & 127;
// 374 %EXIT %IF CLASS >= 60 %OR CLASS = ATOM
if (CLASS >= 60) goto L_000C;
if (CLASS != ATOM) goto L_000D;
L_000C:;
goto L_000E;
L_000D:;
// 375 G = G+2
G = G + 2;
// 376 %REPEAT
goto L_000B;
L_000E:;
// 377 G = SHORTINTEGER(G)>>6&1022+ADGRAM0
G = ((unsigned int)*_imp_SHORTINTEGER(G) >> 6 & 1022) + ADGRAM0;
// 378 ->A(CLASS)
A_line = __LINE__;
A_file = __FILE__;
A_index = CLASS;
goto case_A_dispatch;
// 379 A(109): A(110): A(111): A(113): A(114):
case_A_109:;
case_A_110:;
case_A_111:;
case_A_113:;
case_A_114:;
// 380 A(115): A(116): A(117): A(118): A(119):
case_A_115:;
case_A_116:;
case_A_117:;
case_A_118:;
case_A_119:;
// 381 A(120): A(121): A(122): A(123): A(124):
case_A_120:;
case_A_121:;
case_A_122:;
case_A_123:;
case_A_124:;
// 382 A(125): A(126):
case_A_125:;
case_A_126:;
// 383 ENTER:
U_1007:;
// 384 LINKMAX = LINKMAX+1; ->ERR %IF LINKMAX > 20
LINKMAX = LINKMAX + 1;
if (LINKMAX <= 20) goto L_000F;
goto U_1003;
L_000F:;
// 385 LINK(LINKMAX) = G
LINK[LINKMAX - 1] = G;
// 386 G = PHRASE(CLASS)<<1+ADGRAM0
G = (PHRASE[CLASS - 109] << 1) + ADGRAM0;
// 387 ->REP
goto U_1006;
// 388 A(66):
case_A_66:;
// 389 EXIT:
U_1008:;
// 390 G = LINK(LINKMAX); LINKMAX = LINKMAX-1
G = LINK[LINKMAX - 1];
LINKMAX = LINKMAX - 1;
// 391 ->REP
goto U_1006;
// 392
// 393 A(67): !ALT (ALTERNATIVE PHRASE RECOGNISED)
case_A_67:;
// 394 I = SHORTINTEGER(LINK(LINKMAX)); LINKMAX = LINKMAX-1
I = *_imp_SHORTINTEGER(LINK[LINKMAX - 1]);
LINKMAX = LINKMAX - 1;
// 395 ->ERR %IF I&127 # 0; !NO ALTERNATIVE
if (I & 127 == 0) goto L_0010;
goto U_1003;
L_0010:;
// 396 G = I>>6&1022+ADGRAM0
G = ((unsigned int)I >> 6 & 1022) + ADGRAM0;
// 397 ->ON
goto U_1005;
// 398 A(68): !BREAK (TERMINATOR WITHIN CONST LIST)
case_A_68:;
// 399 REPORT(FAULTNUM) %IF FAULTNUM >= 0
if (FAULTNUM < 0) goto L_0011;
REPORT(FAULTNUM);
L_0011:;
// 400 %IF ATOMTYPE = 0 %START; !NL
if (ATOMTYPE != 0) goto L_0012;
// 401 LINEBASE = FPOS; LINE = NEXTLINE
LINEBASE = FPOS;
LINE = NEXTLINE;
// 402 %FINISH
L_0012:;
// 403 ->CODE
goto U_1004;
// 404
// 405 UNKNOWN:
U_1009:;
// 406 %WHILE DPOS < 0 %CYCLE
L_0013:;
if (DPOS >= 0) goto L_0014;
// 407 ->IGNORE %IF STRING(-DPOS+4) = STRING(DLIM+12)
if (_imp_strcmp((_imp_string *)_imp_STRING(-DPOS + 4), (_imp_string *)_imp_STRING(DLIM + 12)) != 0) goto L_0015;
goto U_100A;
L_0015:;
// 408 DPOS = INTEGER(-DPOS)
DPOS = *_imp_INTEGER(-DPOS);
// 409 %REPEAT
goto L_0013;
L_0014:;
// 410 FAULT(2)
FAULT(2);
// 411 %CYCLE
L_0016:;
// 412 DBOUND = DBOUND-4; NEWDLIM = NEWDLIM-4
DBOUND = DBOUND - 4;
NEWDLIM = NEWDLIM - 4;
// 413 %EXIT %IF NEWDLIM = DLIM+8
if (NEWDLIM != DLIM + 8) goto L_0017;
goto L_0018;
L_0017:;
// 414 INTEGER(DBOUND) = INTEGER(NEWDLIM)
*_imp_INTEGER(DBOUND) = *_imp_INTEGER(NEWDLIM);
// 415 %REPEAT
goto L_0016;
L_0018:;
// 416 HEAD == INTEGER(HEAD+8) %WHILE HEAD > 0
L_0019:;
if (*HEAD <= 0) goto L_001A;
HEAD = (int *)_imp_INTEGER(*HEAD + 8);
goto L_0019;
L_001A:;
// 417 INTEGER(DBOUND) = HEAD; HEAD = -DBOUND
*_imp_INTEGER(DBOUND) = *HEAD;
*HEAD = -DBOUND;
// 418 ->IGNORE
goto U_100A;
// 419 MODERR:
U_100B:;
// 420 FAULT(3)
FAULT(3);
// 421 ->IGNORE
goto U_100A;
// 422 A(0): A(64):
case_A_0:;
case_A_64:;
// 423 ERR:FAULTNUM = 0; FAULTNUM = ATOMTYPE %IF ATOM = 0
U_1003:;
FAULTNUM = 0;
if (ATOM != 0) goto L_001B;
FAULTNUM = ATOMTYPE;
L_001B:;
// 424 ->DISASTER %IF FAULTNUM = 99
if (FAULTNUM != 99) goto L_001C;
goto U_100C;
L_001C:;
// 425 FAULTPOS = FPOS1
FAULTPOS = FPOS1;
// 426 IGNORE:
U_100A:;
// 427 I=ATOM %AND CODE ATOM %WHILE ATOM # TERMINATOR
L_001D:;
if (ATOM == 13) goto L_001E;
I = ATOM;
CODEATOM();
goto L_001D;
L_001E:;
// 428 C_STACK = C_STACK<<2+3 %IF I = START
if (I != 53) goto L_001F;
C.STACK = (C.STACK << 2) + 3;
L_001F:;
// 429 C_STACK = C_STACK<<2+2 %IF I = CYCLE
if (I != 54) goto L_0020;
C.STACK = (C.STACK << 2) + 2;
L_0020:;
// 430 REPORT(FAULTNUM) %IF FAULTNUM >= 0
if (FAULTNUM < 0) goto L_0021;
REPORT(FAULTNUM);
L_0021:;
// 431 %WHILE I = COMMA %AND ATOMTYPE = 0 %CYCLE
L_0022:;
if (I != 10) goto L_0023;
if (ATOMTYPE != 0) goto L_0023;
// 432 I=ATOM %AND CODE ATOM %UNTIL ATOM = TERMINATOR
L_0024:;
I = ATOM;
CODEATOM();
if (ATOM == 13) goto L_0025;
goto L_0024;
L_0025:;
// 433 %REPEAT
goto L_0022;
L_0023:;
// 434 A(69): !FIN
case_A_69:;
// 435 FIN:REPORT(FAULTNUM) %IF FAULTNUM >= 0
U_100D:;
if (FAULTNUM < 0) goto L_0026;
REPORT(FAULTNUM);
L_0026:;
// 436 %IF C_BTYPE&1 # 0 %START; !PSEUDO BLOCK ENTRY FOR SPEC
if (C.BTYPE & 1 == 0) goto L_0027;
// 437 DLIM = C_LOCAL
DLIM = C.LOCAL;
// 438 C = HOLD(LEVEL); LEVEL = LEVEL-1
C = HOLD[LEVEL - 1];
LEVEL = LEVEL - 1;
// 439 %FINISH
L_0027:;
// 440 ->L3 %IF ATOMTYPE # 0; !COLON OR SEMI-COLON
if (ATOMTYPE == 0) goto L_0028;
goto U_1002;
L_0028:;
// 441 ->L1; !NEWLINE
goto U_1000;
// 442 DISASTER:
U_100C:;
// 443 PRINT STRING("** SPACE EXHAUSTED AT LINE"); WRITE(NEXTLINE,1)
_imp_PRINTSTRING(_imp_str_literal("** SPACE EXHAUSTED AT LINE"));
_imp_WRITE(NEXTLINE, 1);
// 444 NEWLINE
_imp_NEWLINE();
// 445 %RETURN
return;
// 446
// 447 A(74):
case_A_74:;
// 448 NAPP:
U_100E:;
// 449 -> ON %IF TYPE&APPMASK = 0
if (TYPE & 65280 != 0) goto L_0029;
goto U_1005;
L_0029:;
// 450 ->ERR
goto U_1003;
// 451 ER20:
U_100F:;
// 452 FAULT(20)
FAULT(20);
// 453 ->NAPP
goto U_100E;
// 454 ER22:
U_1010:;
// 455 FAULT(22)
FAULT(22);
// 456 ->NAPP
goto U_100E;
// 457
// 458 A(22): !PREC
case_A_22:;
// 459 PRECISION = ATOMTYPE
PRECISION = ATOMTYPE;
// 460 ->CODE
goto U_1004;
// 461 A(38): !EXTERNAL
case_A_38:;
// 462 A(42): !SYSTEM,DYNAMIC
case_A_42:;
// 463 EXTIND = 1
EXTIND = 1;
// 464 ->CODE
goto U_1004;
// 465 A(70): !RESET
case_A_70:;
// 466 DECLTYPE = 0
DECLTYPE = 0;
// 467 ->ON
goto U_1005;
// 468 A(36): !RECORD
case_A_36:;
// 469 RECIDENTS = DLIM
RECIDENTS = DLIM;
// 470 A(29): !REG
case_A_29:;
// 471 A(30): !SWITCH
case_A_30:;
// 472 A(31): !NTYPE
case_A_31:;
// 473 A(32): !OWN
case_A_32:;
// 474 A(33): !ARRAY
case_A_33:;
// 475 A(34): !STRING
case_A_34:;
// 476 A(35): !NAME
case_A_35:;
// 477 A(39): !FM
case_A_39:;
// 478 A(40): !ROUTINE
case_A_40:;
// 479 A(41): !SPEC
case_A_41:;
// 480 DECLTYPE = DECLTYPE!!ATOMTYPE
DECLTYPE = DECLTYPE ^ ATOMTYPE;
// 481 DECLTYPE = DECLTYPE!PRECISION %IF DECLTYPE&X'F0' = X'10'
if (DECLTYPE & 240 != 16) goto L_002A;
DECLTYPE = DECLTYPE | PRECISION;
L_002A:;
// 482 IDENTS = DLIM
IDENTS = DLIM;
// 483 MODES = \0; !FOR SPEC LOOKS
MODES = (~0);
// 484 ->CODE
goto U_1004;
// 485 A(75): !NOTYPE
case_A_75:;
// 486 DECLTYPE = X'F9'; ! '?' VAR
DECLTYPE = 249;
// 487 ->ON
goto U_1005;
// 488 A(78): !IDENT: DC (DECLARE RECORD COMPONENT)
case_A_78:;
// 489 HEAD == INTEGER(FIDENTPOS+4); DPOS = HEAD; !ALTER SEARCH LIST
HEAD = (int *)_imp_INTEGER(FIDENTPOS + 4);
DPOS = *HEAD;
// 490 A(76): !IDENT: D (DECLARE)
case_A_76:;
// 491 D1: ->ADD %IF C_BTYPE&1 # 0; !WITHIN SPEC PARAMS
U_1011:;
if (C.BTYPE & 1 == 0) goto L_002B;
goto U_1012;
L_002B:;
// 492 D2: %CYCLE
U_1013:;
L_002C:;
// 493 ->NEW %IF DPOS < C_LOCAL
if (DPOS >= C.LOCAL) goto L_002D;
goto U_1014;
L_002D:;
// 494 %EXIT %IF STRING(DPOS+12) = STRING(DLIM+12)
if (_imp_strcmp((_imp_string *)_imp_STRING(DPOS + 12), (_imp_string *)_imp_STRING(DLIM + 12)) != 0) goto L_002E;
goto L_002F;
L_002E:;
// 495 DPOS = INTEGER(DPOS+8)
DPOS = *_imp_INTEGER(DPOS + 8);
// 496 %REPEAT
goto L_002C;
L_002F:;
// 497 ->D5 %IF INTEGER(DPOS)&X'FF'-1 = DECLTYPE %C
if ((*_imp_INTEGER(DPOS) & 255) - 1 != DECLTYPE) goto L_0030;
if (DECLTYPE & 6 == 0) goto L_0030;
if (DECLTYPE & 1 != 0) goto L_0030;
goto U_1015;
L_0030:;
// 498+ %AND DECLTYPE&6 # 0 %AND DECLTYPE&1 = 0
// 499 FAULT(5); !DUPLICATE
FAULT(5);
// 500 NEW:INTEGER(DLIM+8) = HEAD; HEAD = DLIM
U_1014:;
*_imp_INTEGER(DLIM + 8) = *HEAD;
*HEAD = DLIM;
// 501 ADD:INTEGER(DLIM) = DECLTYPE; INTEGER(DLIM+4) = 0
U_1012:;
*_imp_INTEGER(DLIM) = DECLTYPE;
*_imp_INTEGER(DLIM + 4) = 0;
// 502 DLIM = NEWDLIM
DLIM = NEWDLIM;
// 503 ->CODE
goto U_1004;
// 504 !PROCEDURE BODY AFTER SPEC, LABEL AFTER JUMP
// 505 D5: INTEGER(DPOS) = DECLTYPE %IF DECLTYPE = LAB
U_1015:;
if (DECLTYPE != 12) goto L_0031;
*_imp_INTEGER(DPOS) = DECLTYPE;
L_0031:;
// 506 IDENTS = DPOS
IDENTS = DPOS;
// 507 ->CODE
goto U_1004;
// 508 A(77): !IDENT: DF (DECLARE RECORD FORMAT)
case_A_77:;
// 509 DECLTYPE = RECFORMAT; FIDENTPOS = DLIM
DECLTYPE = 4;
FIDENTPOS = DLIM;
// 510 ->D1
goto U_1011;
// 511 A(2): !CONST
case_A_2:;
// 512 TYPE = ATOMTYPE; VAL = ATOMVAL
TYPE = ATOMTYPE;
VAL = ATOMVAL;
// 513 ->CODE
goto U_1004;
// 514 A(3): !SUB (ABSORBS FOLLOWING IDENT)
case_A_3:;
// 515 -> ERR %IF TYPE&X'FFF4' # 0 %AND TYPE # RECFORMAT; !NOT RECORD
if (TYPE & 65524 == 0) goto L_0032;
if (TYPE == 4) goto L_0032;
goto U_1003;
L_0032:;
// 516 CODE ATOM; ->ERR %IF ATOM # IDENT
CODEATOM();
if (ATOM == 1) goto L_0033;
goto U_1003;
L_0033:;
// 517 ->IGNORE %IF VAL = 0
if (VAL != 0) goto L_0034;
goto U_100A;
L_0034:;
// 518 DPOS = VAL; HEAD == VAL
DPOS = VAL;
HEAD = (int *)/*?*/ &VAL;
// 519 A(81): !IDENT: LOOK
case_A_81:;
// 520 LOOK:
U_1016:;
// 521 LOOKS = LOOKS+1
LOOKS = LOOKS + 1;
// 522 %CYCLE
L_0035:;
// 523 TIMES = TIMES+1
TIMES = TIMES + 1;
// 524 ->UNKNOWN %IF DPOS <= 0
if (DPOS > 0) goto L_0036;
goto U_1009;
L_0036:;
// 525 %EXIT %IF STRING(DPOS+12) = STRING(DLIM+12)
if (_imp_strcmp((_imp_string *)_imp_STRING(DPOS + 12), (_imp_string *)_imp_STRING(DLIM + 12)) != 0) goto L_0037;
goto L_0038;
L_0037:;
// 526 DPOS = INTEGER(DPOS+8)
DPOS = *_imp_INTEGER(DPOS + 8);
// 527 %REPEAT
goto L_0035;
L_0038:;
// 528 TYPE = INTEGER(DPOS); VAL = INTEGER(DPOS+4)
TYPE = *_imp_INTEGER(DPOS);
VAL = *_imp_INTEGER(DPOS + 4);
// 529 ->CODE %IF MODES<<(TYPE&15) < 0
if (MODES << (TYPE & 15) >= 0) goto L_0039;
goto U_1004;
L_0039:;
// 530 ->MODERR
goto U_100B;
// 531 A(82): !IDENT: IMP1LOOK
case_A_82:;
// 532 MODES = IMP1MODES
MODES = 1140588544;
// 533 ->LOOK %IF BYTEINTEGER(FPOS) # ':'
if (*_imp_BYTEINTEGER(FPOS) == 58) goto L_003A;
goto U_1016;
L_003A:;
// 534 DECLTYPE = LAB
DECLTYPE = 12;
// 535 ->D2
goto U_1013;
// 536 A(83): !IDENT: IMPLOOK
case_A_83:;
// 537 MODES = IMPMODES
MODES = 1139802112;
// 538 ->LOOK
goto U_1016;
// 539 A(84): !IDENT: EXPLOOK
case_A_84:;
// 540 MODES = EXPMODES
MODES = -252706816;
// 541 ->LOOK
goto U_1016;
// 542 A(85): !IDENT: FLOOK
case_A_85:;
// 543 MODES = FMATMODES
MODES = 134217728;
// 544 ->LOOK
goto U_1016;
// 545 A(86): !IDENT: JLOOK
case_A_86:;
// 546 %WHILE DPOS >= C_LOCAL %CYCLE
L_003B:;
if (DPOS < C.LOCAL) goto L_003C;
// 547 ->JL1 %IF STRING(DPOS+12) = STRING(DLIM+12)
if (_imp_strcmp((_imp_string *)_imp_STRING(DPOS + 12), (_imp_string *)_imp_STRING(DLIM + 12)) != 0) goto L_003D;
goto U_1017;
L_003D:;
// 548 DPOS = INTEGER(DPOS+8)
DPOS = *_imp_INTEGER(DPOS + 8);
// 549 %REPEAT
goto L_003B;
L_003C:;
// 550 INTEGER(DLIM+8) = HEAD; HEAD = DLIM
*_imp_INTEGER(DLIM + 8) = *HEAD;
*HEAD = DLIM;
// 551 INTEGER(DLIM) = JUMPLAB; INTEGER(DLIM+4) = 0
*_imp_INTEGER(DLIM) = 13;
*_imp_INTEGER(DLIM + 4) = 0;
// 552 DPOS = DLIM; DLIM = NEWDLIM
DPOS = DLIM;
DLIM = NEWDLIM;
// 553 JL1:TYPE = INTEGER(DPOS)
U_1017:;
TYPE = *_imp_INTEGER(DPOS);
// 554 ->CODE %IF TYPE&14 = LAB
if (TYPE & 14 != 12) goto L_003E;
goto U_1004;
L_003E:;
// 555 ->MODERR
goto U_100B;
// 556 A(79): !RECSPEC
case_A_79:;
// 557 ->MODERR %IF TYPE&X'F4' # 0 %OR VAL # 0 %OR DPOS < C_LOCAL
if (TYPE & 244 != 0) goto L_0004;
if (VAL != 0) goto L_0004;
if (DPOS >= C.LOCAL) goto L_003F;
L_0004:;
goto U_100B;
L_003F:;
// 558 RECIDENTS = -DPOS
RECIDENTS = -DPOS;
// 559 ->ON
goto U_1005;
// 560 A(88): !FSET
case_A_88:;
// 561 IDENTS = RECIDENTS
IDENTS = RECIDENTS;
// 562 %IF IDENTS >= 0 %THEN DEFINE(4,INTEGER(DPOS+4)) %C
if (IDENTS < 0) goto L_0040;
DEFINE(4, *_imp_INTEGER(DPOS + 4));
goto L_0041;
L_0040:;
*_imp_INTEGER(-IDENTS + 4) = *_imp_INTEGER(DPOS + 4);
L_0041:;
// 563+ %ELSE INTEGER(-IDENTS+4) = INTEGER(DPOS+4)
// 564 ->ON
goto U_1005;
// 565 A(80): !PROCSPEC
case_A_80:;
// 566 ->MODERR %IF TYPE&X'FF03' # FN %OR DPOS < C_LOCAL
if (TYPE & 65283 != 2) goto L_0042;
if (DPOS >= C.LOCAL) goto L_0043;
L_0042:;
goto U_100B;
L_0043:;
// 567 IDENTS = DPOS
IDENTS = DPOS;
// 568 ->ON
goto U_1005;
// 569 A(72): !BEG
case_A_72:;
// 570 PIDENTPOS = IDENTS
PIDENTPOS = IDENTS;
// 571 LEVEL = LEVEL+1; ->DISASTER %IF LEVEL > 12
LEVEL = LEVEL + 1;
if (LEVEL <= 12) goto L_0044;
goto U_100C;
L_0044:;
// 572 HOLD(LEVEL) = C
HOLD[LEVEL - 1] = C;
// 573 C_BTYPE = DECLTYPE
C.BTYPE = DECLTYPE;
// 574 C_STACK = 0
C.STACK = 0;
// 575 C_LOCAL = DLIM
C.LOCAL = DLIM;
// 576 ->ON
goto U_1005;
// 577 A(89): !NL: PARSET
case_A_89:;
// 578 IDENTS = C_LOCAL; NP = 51
IDENTS = C.LOCAL;
NP = 51;
// 579 %WHILE IDENTS # DLIM %CYCLE
L_0045:;
if (IDENTS == DLIM) goto L_0046;
// 580 NP = NP-1; NTYPE(NP) = INTEGER(IDENTS)
NP = NP - 1;
NTYPE[NP - 1] = *_imp_INTEGER(IDENTS);
// 581 IDENTS = BYTEINTEGER(IDENTS+12)&(\3)+IDENTS+16
IDENTS = (*_imp_BYTEINTEGER(IDENTS + 12) & (~3)) + IDENTS + 16;
// 582 %REPEAT
goto L_0045;
L_0046:;
// 583 I = 0
I = 0;
// 584 %WHILE NP # 51 %CYCLE
L_0047:;
if (NP == 51) goto L_0048;
// 585 J = I<<24+NTYPE(NP); NP = NP+1
J = (I << 24) + NTYPE[NP - 1];
NP = NP + 1;
// 586 I = I+1 %UNTIL I > PARMAX %OR PARTYPE(I) = J
L_0049:;
I = I + 1;
if (I > PARMAX) goto L_004A;
if (PARTYPE[I] == J) goto L_004A;
goto L_0049;
L_004A:;
// 587 %IF I > PARMAX %START
if (I <= PARMAX) goto L_004B;
// 588 ->DISASTER %IF I = 252
if (I != 252) goto L_004C;
goto U_100C;
L_004C:;
// 589 PARMAX = I
PARMAX = I;
// 590 PARTYPE(I) = J
PARTYPE[I] = J;
// 591 %FINISH
L_004B:;
// 592 %REPEAT
goto L_0047;
L_0048:;
// 593 %IF C_BTYPE&1 = 0 %AND INTEGER(PIDENTPOS)&1 # 0 %START
if (C.BTYPE & 1 != 0) goto L_004D;
if (*_imp_INTEGER(PIDENTPOS) & 1 == 0) goto L_004D;
// 594 FAULT(18) %IF BYTEINTEGER(PIDENTPOS+2) # I
if (*_imp_BYTEINTEGER(PIDENTPOS + 2) == I) goto L_004E;
FAULT(18);
L_004E:;
// 595 INTEGER(PIDENTPOS) = C_BTYPE
*_imp_INTEGER(PIDENTPOS) = C.BTYPE;
// 596 %FINISH
L_004D:;
// 597 BYTEINTEGER(PIDENTPOS+2) = I
*_imp_BYTEINTEGER(PIDENTPOS + 2) = I;
// 598 INTEGER(PIDENTPOS) = INTEGER(PIDENTPOS)&(\EXTIND)
*_imp_INTEGER(PIDENTPOS) = *_imp_INTEGER(PIDENTPOS) & (~EXTIND);
// 599 ->FIN
goto U_100D;
// 600 A(90): !INIT
case_A_90:;
// 601 CONSTCOUNT = CONSTCOUNT-1
CONSTCOUNT = CONSTCOUNT - 1;
// 602 ->ER20 %IF TYPE&15 # 0
if (TYPE & 15 == 0) goto L_004F;
goto U_100F;
L_004F:;
// 603 ->ER22 %IF TYPE&DECLTYPE = 0
if (TYPE & DECLTYPE != 0) goto L_0050;
goto U_1010;
L_0050:;
// 604 !RANGE CHECK
// 605 DEFINE(4,VAL) %IF DECLTYPE&15 = 0
if (DECLTYPE & 15 != 0) goto L_0051;
DEFINE(4, VAL);
L_0051:;
// 606 ->ON
goto U_1005;
// 607 A(91): !NL: INITFIN
case_A_91:;
// 608 FAULT(21) %IF CONSTCOUNT # 0 %AND CONSTCOUNT < 1000000
if (CONSTCOUNT == 0) goto L_0052;
if (CONSTCOUNT >= 1000000) goto L_0052;
FAULT(21);
L_0052:;
// 609 ->FIN
goto U_100D;
// 610 A(92): !DIMSET
case_A_92:;
// 611 DEFINE(0,DIMCOUNT)
DEFINE(0, DIMCOUNT);
// 612 DIMCOUNT = 0
DIMCOUNT = 0;
// 613 ->ON
goto U_1005;
// 614 A(93): !COLON: COUNT
case_A_93:;
// 615 %IF DIMCOUNT = 6 %THEN FAULT(23) %ELSE DIMCOUNT = DIMCOUNT+1
if (DIMCOUNT != 6) goto L_0053;
FAULT(23);
goto L_0054;
L_0053:;
DIMCOUNT = DIMCOUNT + 1;
L_0054:;
// 616 ->CODE
goto U_1004;
// 617 A(94): !REP
case_A_94:;
// 618 CONSTCOUNT = CONSTCOUNT-VAL+1
CONSTCOUNT = CONSTCOUNT - VAL + 1;
// 619 ->ON
goto U_1005;
// 620 A(95): !LITINT
case_A_95:;
// 621 ->ER20 %IF TYPE&15 # 0
if (TYPE & 15 == 0) goto L_0055;
goto U_100F;
L_0055:;
// 622 A(96): !INT
case_A_96:;
// 623 ->ER22 %IF TYPE&INTBIT = 0
if (TYPE & 64 != 0) goto L_0056;
goto U_1010;
L_0056:;
// 624 ->NAPP
goto U_100E;
// 625 A(97): !STR
case_A_97:;
// 626 ->ER22 %IF TYPE&STRINGBIT = 0
if (TYPE & 128 != 0) goto L_0057;
goto U_1010;
L_0057:;
// 627 ->NAPP
goto U_100E;
// 628 A(98): !SIZESET
case_A_98:;
// 629 STRINGSIZE = VAL
STRINGSIZE = VAL;
// 630 ->ON %IF 0 < VAL <= 255
{
// Double-sided test on VAL (Part I)
int tmp;
if (0 >= (tmp = VAL)) goto L_0058;
// Double-sided test on VAL (Part II)
if (tmp > 255) goto L_0058;
}
goto U_1005;
L_0058:;
// 631 FAULT(19); STRINGSIZE = 255
FAULT(19);
STRINGSIZE = 255;
// 632 ->ON
goto U_1005;
// 633 A(99): !CBSET
case_A_99:;
// 634 LASTVAL = NVAL(NP); NP = NP+1
LASTVAL = NVAL[NP - 1];
NP = NP + 1;
// 635 ->CBERR %UNLESS -32768 <= LASTVAL <= 32767
{
// Double-sided test on LASTVAL (Part I)
int tmp;
if (-32768 > (tmp = LASTVAL)) goto L_0059;
// Double-sided test on LASTVAL (Part II)
if (tmp <= 32767) goto L_005A;
}
L_0059:;
goto U_1018;
L_005A:;
// 636 CONSTCOUNT = VAL-LASTVAL+1
CONSTCOUNT = VAL - LASTVAL + 1;
// 637 ->CBERR %UNLESS 0 < CONSTCOUNT <= 32767
{
// Double-sided test on CONSTCOUNT (Part I)
int tmp;
if (0 >= (tmp = CONSTCOUNT)) goto L_005B;
// Double-sided test on CONSTCOUNT (Part II)
if (tmp <= 32767) goto L_005C;
}
L_005B:;
goto U_1018;
L_005C:;
// 638 %IF DECLTYPE = SWITCH %START
if (DECLTYPE != 268) goto L_005D;
// 639 {%UNTIL IDENTS = DLIM} %CYCLE
L_005E:;
// 640 J = DBOUND
J = DBOUND;
// 641 DBOUND = J-(CONSTCOUNT+63)>>5<<2
DBOUND = J - ((unsigned int)CONSTCOUNT + 63 >> 5 << 2);
// 642 ->DISASTER %IF DBOUND <= DLIM
if (DBOUND > DLIM) goto L_005F;
goto U_100C;
L_005F:;
// 643 INTEGER(IDENTS+4) = DBOUND
*_imp_INTEGER(IDENTS + 4) = DBOUND;
// 644 INTEGER(DBOUND) = LASTVAL<<16+CONSTCOUNT
*_imp_INTEGER(DBOUND) = (LASTVAL << 16) + CONSTCOUNT;
// 645 %CYCLE
L_0060:;
// 646 J = J-4
J = J - 4;
// 647 %EXIT %IF J = DBOUND
if (J != DBOUND) goto L_0061;
goto L_0062;
L_0061:;
// 648 INTEGER(J) = 0
*_imp_INTEGER(J) = 0;
// 649 %REPEAT
goto L_0060;
L_0062:;
// 650 IDENTS = BYTEINTEGER(IDENTS+12)&(\3)+IDENTS+16
IDENTS = (*_imp_BYTEINTEGER(IDENTS + 12) & (~3)) + IDENTS + 16;
// 651 %REPEAT %UNTIL IDENTS = DLIM
if (IDENTS == DLIM) goto L_0063;
goto L_005E;
L_0063:;
// 652 %FINISH
L_005D:;
// 653 CB1:IDENTS = DLIM
U_1019:;
IDENTS = DLIM;
// 654 ->ON
goto U_1005;
// 655 CBERR:
U_1018:;
// 656 FAULT(23); CONSTCOUNT = 2000000
FAULT(23);
CONSTCOUNT = 2000000;
// 657 ->CB1
goto U_1019;
// 658 A(100): !COLON: LAB
case_A_100:;
// 659 ->FIN %IF DECLTYPE # 0; !SIMPLE LABEL
if (DECLTYPE == 0) goto L_0064;
goto U_100D;
L_0064:;
// 660 ->ERR %IF TYPE # JUMPLAB; !IE SWITCH + APP
if (TYPE == 13) goto L_0065;
goto U_1003;
L_0065:;
// 661 FAULT(20) %AND ->FIN %IF LASTTYPE&15 # 0
if (LASTTYPE & 15 == 0) goto L_0066;
FAULT(20);
goto U_100D;
L_0066:;
// 662 ->FIN %IF VAL = 0
if (VAL != 0) goto L_0067;
goto U_100D;
L_0067:;
// 663 J = LASTVAL-SHORTINTEGER(VAL)
J = LASTVAL - *_imp_SHORTINTEGER(VAL);
// 664 FAULT(19) %AND ->FIN %UNLESS 0 <= J < SHORTINTEGER(VAL+2)
{
// Double-sided test on J (Part I)
int tmp;
if (0 > (tmp = J)) goto L_0068;
// Double-sided test on J (Part II)
if (tmp < *_imp_SHORTINTEGER(VAL + 2)) goto L_0069;
}
L_0068:;
FAULT(19);
goto U_100D;
L_0069:;
// 665 I = VAL+J>>5<<2; J = X'80000000'>>(J&31)
I = VAL + ((unsigned int)J >> 5 << 2);
J = (unsigned int)(-2147483648) >> (J & 31);
// 666 FAULT(16) %IF INTEGER(I+4)&J # 0
if (*_imp_INTEGER(I + 4) & J == 0) goto L_006A;
FAULT(16);
L_006A:;
// 667 INTEGER(I+4) = INTEGER(I+4)!J
*_imp_INTEGER(I + 4) = *_imp_INTEGER(I + 4) | J;
// 668 ->FIN
goto U_100D;
// 669 A(101): !OP3: DOT
case_A_101:;
// 670 ->ERR %IF ATOMTYPE # STRINGBIT; !IE OP3 # '.'
if (ATOMTYPE == 128) goto L_006B;
goto U_1003;
L_006B:;
// 671 A(60): !FOR
case_A_60:;
// 672 MODES = DESTMODES
MODES = 15728640;
// 673 ->CODE
goto U_1004;
// 674 A(73): !RESOL
case_A_73:;
// 675 ->ER22 %IF TYPE&STRINGBIT = 0
if (TYPE & 128 != 0) goto L_006C;
goto U_1010;
L_006C:;
// 676 MODES = DESTMODES
MODES = 15728640;
// 677 ->ON
goto U_1005;
// 678 A(102): !OP3: SIGN
case_A_102:;
// 679 ->ERR %IF ATOMTYPE&3 = 0; !IE OP3 # '+', '-', '!'
if (ATOMTYPE & 3 != 0) goto L_006D;
goto U_1003;
L_006D:;
// 680 TYPE = ATOMTYPE; VAL = 0
TYPE = ATOMTYPE;
VAL = 0;
// 681 ->OP1
goto U_101A;
// 682 A(7): !UOP
case_A_7:;
// 683 TYPE = ATOMTYPE; VAL = -1
TYPE = ATOMTYPE;
VAL = -1;
// 684 ->OP1
goto U_101A;
// 685 A(8): !COP
case_A_8:;
// 686 A(4): !OP1
case_A_4:;
// 687 A(5): !OP2
case_A_5:;
// 688 A(104):!OP3 OR EQ: OP
case_A_104:;
// 689 ->ERR %IF TYPE&APPMASK # 0
if (TYPE & 65280 == 0) goto L_006E;
goto U_1003;
L_006E:;
// 690 %IF TYPE&X'FF4F' = INTBIT %THEN TYPE=TYPE!15 %ELSE TYPE=TYPE&(\15)
if (TYPE & 65359 != 64) goto L_006F;
TYPE = TYPE | 15;
goto L_0070;
L_006F:;
TYPE = TYPE & (~15);
L_0070:;
// 691 TYPE = TYPE!REALBITS %IF TYPE&NUMBITS # 0
if (TYPE & 112 == 0) goto L_0071;
TYPE = TYPE | 48;
L_0071:;
// 692 OP1:NP = NP-1; NTYPE(NP) = TYPE&ATOMTYPE; NVAL(NP) = VAL
U_101A:;
NP = NP - 1;
NTYPE[NP - 1] = TYPE & ATOMTYPE;
NVAL[NP - 1] = VAL;
// 693 ->CODE
goto U_1004;
// 694 A(105): !EVAL
case_A_105:;
// 695 ->ERR %IF TYPE&APPMASK # 0
if (TYPE & 65280 == 0) goto L_0072;
goto U_1003;
L_0072:;
// 696 TYPE = TYPE!REALBITS %IF TYPE&NUMBITS # 0
if (TYPE & 112 == 0) goto L_0073;
TYPE = TYPE | 48;
L_0073:;
// 697 I = NTYPE(NP); NP = NP+1
I = NTYPE[NP - 1];
NP = NP + 1;
// 698 J = I&TYPE&X'F0'
J = I & TYPE & 240;
// 699 ->ER22 %IF J = 0
if (J != 0) goto L_0074;
goto U_1010;
L_0074:;
// 700 ->X(I&15) %IF TYPE&X'FF4F' = INTBIT
if (TYPE & 65359 != 64) goto L_0075;
X_line = __LINE__;
X_file = __FILE__;
X_index = I & 15;
goto case_X_dispatch;
L_0075:;
// 701 X(0):
case_X_0:;
// 702 TYPE = J+EXP
TYPE = J + 1;
// 703 ->ON
goto U_1005;
// 704 X(1): VAL = NVAL(NP-1)+VAL
case_X_1:;
VAL = NVAL[NP - 1 - 1] + VAL;
// 705 X1: TYPE = NUMBITS
U_101B:;
TYPE = 112;
// 706 ->ON
goto U_1005;
// 707 X(2): VAL = NVAL(NP-1)-VAL
case_X_2:;
VAL = NVAL[NP - 1 - 1] - VAL;
// 708 ->X1
goto U_101B;
// 709 X(3): VAL = NVAL(NP-1)!VAL
case_X_3:;
VAL = NVAL[NP - 1 - 1] | VAL;
// 710 ->X1
goto U_101B;
// 711 X(4): VAL = NVAL(NP-1)!!VAL
case_X_4:;
VAL = NVAL[NP - 1 - 1] ^ VAL;
// 712 ->X1
goto U_101B;
// 713 A(103): !BAR (FIDDLE FOR MOD-SIGN)
case_A_103:;
// 714 ->ON %UNLESS NTYPE(NP) = X'43'
if (NTYPE[NP - 1] == 67) goto L_0077;
goto U_1005;
L_0077:;
// 715 ->ERR %UNLESS ATOM = OP3 %AND ATOMTYPE = X'43'
if (ATOM != 6) goto L_0078;
if (ATOMTYPE == 67) goto L_0079;
L_0078:;
goto U_1003;
L_0079:;
// 716 NP = NP+1; CODE ATOM
NP = NP + 1;
CODEATOM();
// 717 ->EXIT
goto U_1008;
// 718 A(106): !EQ: ASSOP
case_A_106:;
// 719 ->ERR %IF TYPE&X'FF0C' # 8
if (TYPE & 65292 == 8) goto L_007A;
goto U_1003;
L_007A:;
// 720 SAVE:
U_101C:;
// 721 NP = NP-1; NTYPE(NP) = TYPE; NVAL(NP) = VAL
NP = NP - 1;
NTYPE[NP - 1] = TYPE;
NVAL[NP - 1] = VAL;
// 722 ->CODE
goto U_1004;
// 723 A(14): !EQEQ
case_A_14:;
// 724 MODES = ADRMODES
MODES = 1089470464;
// 725 ->SAVE %IF TYPE&15 = REF
if (TYPE & 15 != 8) goto L_007B;
goto U_101C;
L_007B:;
// 726 ->ERR
goto U_1003;
// 727 A(107): !ASS
case_A_107:;
// 728 I = NTYPE(NP); NP = NP+1
I = NTYPE[NP - 1];
NP = NP + 1;
// 729 AS1:%IF I&TYPE&X'C0' = 0 %START
U_101D:;
if (I & TYPE & 192 != 0) goto L_007C;
// 730 I = I&X'F0'
I = I & 240;
// 731 %IF I = 0 %START; !RECORD
if (I != 0) goto L_007D;
// 732 ->ER22 %UNLESS TYPE&X'F0' = 0 %OR %C
if (TYPE & 240 == 0) goto L_007E;
if (TYPE & 65359 != 64) goto L_007F;
if (VAL == 0) goto L_007E;
L_007F:;
goto U_1010;
L_007E:;
// 733+ (TYPE&X'FF4F'=INTBIT %AND VAL=0)
// 734 %FINISH %ELSE %START
goto L_0080;
L_007D:;
// 735 ->ER22 %UNLESS I <= X'30' %AND TYPE&NUMBITS # 0
if (I > 48) goto L_0081;
if (TYPE & 112 != 0) goto L_0082;
L_0081:;
goto U_1010;
L_0082:;
// 736 %FINISH
L_0080:;
// 737 %FINISH
L_007C:;
// 738 ->NAPP
goto U_100E;
// 739 A(108): !REFASS
case_A_108:;
// 740 I = NTYPE(NP); NP = NP+1
I = NTYPE[NP - 1];
NP = NP + 1;
// 741 RA1:FAULT(22) %IF (I!!TYPE)&X'F0' # 0 %C
U_101E:;
if ((I ^ TYPE) & 240 == 0) goto L_0083;
if (I & 240 == 240) goto L_0083;
if (TYPE & 240 == 240) goto L_0083;
FAULT(22);
L_0083:;
// 742+ %AND I&X'F0' # X'F0' %AND TYPE&X'F0' # X'F0'
// 743 ->NAPP %IF I&APPMASK = 0; !SCALAR
if (I & 65280 != 0) goto L_0084;
goto U_100E;
L_0084:;
// 744 FAULT(22) %IF TYPE&APPMASK = 0 %OR TYPE&14 = MAP
if (TYPE & 65280 == 0) goto L_0085;
if (TYPE & 14 != 10) goto L_0086;
L_0085:;
FAULT(22);
L_0086:;
// 745 ->ON
goto U_1005;
// 746 A(17): !RESULT
case_A_17:;
// 747 FAULT(25) %IF C_BTYPE&7 # FN
if (C.BTYPE & 7 == 2) goto L_0087;
FAULT(25);
L_0087:;
// 748 TYPE = C_BTYPE&X'F8'; TYPE = TYPE+VAR %IF TYPE&8 = 0
TYPE = C.BTYPE & 248;
if (TYPE & 8 != 0) goto L_0088;
TYPE = TYPE + 9;
L_0088:;
// 749 VAL = 0
VAL = 0;
// 750 ->CODE
goto U_1004;
// 751 A(71): !RCALL
case_A_71:;
// 752 ->ON %IF TYPE&X'FFFC' = 4
if (TYPE & 65532 != 4) goto L_0089;
goto U_1005;
L_0089:;
// 753 ->ERR
goto U_1003;
// 754 A(112): !APP
case_A_112:;
// 755 ->ON %IF ATOM # LB
if (ATOM == 11) goto L_008A;
goto U_1005;
L_008A:;
// 756 LINKMAX = LINKMAX+1; ->ERR %IF LINKMAX > 20
LINKMAX = LINKMAX + 1;
if (LINKMAX <= 20) goto L_008B;
goto U_1003;
L_008B:;
// 757 LINK(LINKMAX) = G
LINK[LINKMAX - 1] = G;
// 758 NP = NP-1; NVAL(NP) = VAL
NP = NP - 1;
NVAL[NP - 1] = VAL;
// 759 AP: ->ERR %IF TYPE&APPMASK = 0
U_101F:;
if (TYPE & 65280 != 0) goto L_008C;
goto U_1003;
L_008C:;
// 760 NTYPE(NP) = TYPE
NTYPE[NP - 1] = TYPE;
// 761 G = APPCONT
G = APPCONT;
// 762 CODE ATOM
CODEATOM();
// 763 J = PARTYPE(TYPE>>8)&15
J = PARTYPE[(unsigned int)TYPE >> 8] & 15;
// 764 CLASS = 122; !EXP
CLASS = 122;
// 765 ->ENTER %IF J = VAR
if (J != 9) goto L_008D;
goto U_1007;
L_008D:;
// 766 CLASS = 111; MODES = ADRMODES
CLASS = 111;
MODES = 1089470464;
// 767 ->ENTER %IF J = REF
if (J != 8) goto L_008E;
goto U_1007;
L_008E:;
// 768 MODES = X'C0000000'>>J
MODES = (unsigned int)(-1073741824) >> J;
// 769 ->ENTER
goto U_1007;
// 770 A(63): !AP
case_A_63:;
// 771 J = NTYPE(NP); I = PARTYPE(J>>8)
J = NTYPE[NP - 1];
I = PARTYPE[(unsigned int)J >> 8];
// 772 LASTTYPE = TYPE; LASTVAL = VAL
LASTTYPE = TYPE;
LASTVAL = VAL;
// 773 TYPE = I>>16+J&X'FF'
TYPE = ((unsigned int)I >> 16) + (J & 255);
// 774 ->AP %IF ATOM = COMMA
if (ATOM != 10) goto L_008F;
goto U_101F;
L_008F:;
// 775 ->ERR %IF ATOM # RB
if (ATOM == 12) goto L_0090;
goto U_1003;
L_0090:;
// 776 VAL = NVAL(NP); NP = NP+1
VAL = NVAL[NP - 1];
NP = NP + 1;
// 777 %IF TYPE&APPMASK # 0 %START
if (TYPE & 65280 == 0) goto L_0091;
// 778 TYPE = TYPE!!APPMASK
TYPE = TYPE ^ 65280;
// 779 ->ERR %IF TYPE&X'FE00' # 0
if (TYPE & 65024 == 0) goto L_0092;
goto U_1003;
L_0092:;
// 780 %FINISH
L_0091:;
// 781 TYPE = TYPE&X'FFFC'!1
TYPE = TYPE & 65532 | 1;
// 782 CODE ATOM
CODEATOM();
// 783 ->EXIT
goto U_1008;
// 784 A(16): !SIMP: STOP(0), RETURN(1), EXIT(2)
case_A_16:;
// 785 FAULT(25) %IF (ATOMTYPE = 1 %AND C_BTYPE&15 # ROUTINE) %C
if (ATOMTYPE != 1) goto L_0093;
if (C.BTYPE & 15 != 6) goto L_0094;
L_0093:;
if (ATOMTYPE != 2) goto L_0095;
if ((C.STACK ^ 1431655765) << 1 & C.STACK != 0) goto L_0095;
L_0094:;
FAULT(25);
L_0095:;
// 786+ %OR (ATOMTYPE = 2 %AND (C_STACK!!X'55555555')<<1&C_STACK = 0)
// 787 ->CODE
goto U_1004;
// 788 A(54): !CYCLE
case_A_54:;
// 789 CONDIND = 2
CONDIND = 2;
// 790 A(53): !START
case_A_53:;
// 791 C_STACK = C_STACK<<2+CONDIND
C.STACK = (C.STACK << 2) + CONDIND;
// 792 ->CODE
goto U_1004;
// 793 A(55): !FINISH(1)
case_A_55:;
// 794 A(56): !REPEAT(0)
case_A_56:;
// 795 CONDIND = C_STACK&3
CONDIND = C.STACK & 3;
// 796 %IF CONDIND = 0 %OR (CONDIND!!ATOMTYPE)&1 # 0 %C
if (CONDIND == 0) goto L_0096;
if ((CONDIND ^ ATOMTYPE) & 1 == 0) goto L_0097;
L_0096:;
FAULT(12 + ATOMTYPE);
goto L_0098;
L_0097:;
C.STACK = (unsigned int)C.STACK >> 2;
L_0098:;
// 797+ %THEN FAULT(12+ATOMTYPE) %C
// 798+ %ELSE C_STACK = C_STACK>>2
// 799 ->CODE
goto U_1004;
// 800 A(52): !ELSE(1)
case_A_52:;
// 801 FAULT(25) %IF CONDIND = 1
if (CONDIND != 1) goto L_0099;
FAULT(25);
L_0099:;
// 802 A(26): !CWORD(3)
case_A_26:;
// 803 A(51): !ON(1)
case_A_51:;
// 804 CONDIND = ATOMTYPE
CONDIND = ATOMTYPE;
// 805 ->CODE
goto U_1004;
// 806 A(58): !END
case_A_58:;
// 807 %IF LEVEL = 0 %OR (LEVEL=1 %AND C_BTYPE=0) %THEN FAULT(11) %C
if (LEVEL == 0) goto L_009A;
if (LEVEL != 1) goto L_009B;
if (C.BTYPE != 0) goto L_009B;
L_009A:;
FAULT(11);
goto L_009C;
L_009B:;
POPCONTEXT();
L_009C:;
// 808+ %ELSE POP CONTEXT
// 809 ->CODE
goto U_1004;
// 810 A(59): !ENDPROG
case_A_59:;
// 811 FPOS1 = FPOS
FPOS1 = FPOS;
// 812 REPORT(8) %IF LEVEL > ATOMTYPE
if (LEVEL <= ATOMTYPE) goto L_009D;
REPORT(8);
L_009D:;
// 813 REPORT(11) %IF LEVEL < ATOMTYPE
if (LEVEL >= ATOMTYPE) goto L_009E;
REPORT(11);
L_009E:;
// 814 POP CONTEXT %WHILE LEVEL > 0
L_009F:;
if (LEVEL <= 0) goto L_00A0;
POPCONTEXT();
goto L_009F;
L_00A0:;
// 815 TIME2 = CPUTIME
TIME2 = _imp_CPUTIME();
// 816 ->ENDOK
goto U_1020;
// 817 ENDED:
U_1001:;
// 818 TIME2 = CPUTIME
TIME2 = _imp_CPUTIME();
// 819 PRINT STRING("** END OF FILE AT LINE"); WRITE(NEXTLINE,1)
_imp_PRINTSTRING(_imp_str_literal("** END OF FILE AT LINE"));
_imp_WRITE(NEXTLINE, 1);
// 820 NEWLINE
_imp_NEWLINE();
// 821 ENDOK:
U_1020:;
// 822 %IF PARM&4 # 0 %START
if (*PARM & 4 == 0) goto L_00A1;
// 823 WRITE(LINE,4); PRINTSYMBOL('L')
_imp_WRITE(LINE, 4);
_imp_PRINTSYMBOL(76);
// 824 WRITE(STATS,4); PRINT SYMBOL('S')
_imp_WRITE(STATS, 4);
_imp_PRINTSYMBOL(83);
// 825 STATS = 1 %IF STATS = 0
if (STATS != 0) goto L_00A2;
STATS = 1;
L_00A2:;
// 826 PRINT(ATOMS/STATS,2,1); PRINT SYMBOL('A')
_imp_PRINT((double)(ATOMS / STATS), 2, 1);
_imp_PRINTSYMBOL(65);
// 827 PRINT(NUMBERS/STATS,2,1); PRINT SYMBOL('N')
_imp_PRINT((double)(NUMBERS / STATS), 2, 1);
_imp_PRINTSYMBOL(78);
// 828 PRINT(IDENTIFIERS/STATS,2,1); PRINT SYMBOL('I')
_imp_PRINT((double)(IDENTIFIERS / STATS), 2, 1);
_imp_PRINTSYMBOL(73);
// 829 PRINT(LOOPS/STATS,2,1); PRINT SYMBOL('C')
_imp_PRINT((double)(LOOPS / STATS), 2, 1);
_imp_PRINTSYMBOL(67);
// 830 PRINT(TIMES/LOOKS,2,1); PRINT SYMBOL('H')
_imp_PRINT((double)(TIMES / LOOKS), 2, 1);
_imp_PRINTSYMBOL(72);
// 831 PRINT((TIME2-TIME1)*1000/STATS,3,3); PRINT SYMBOL('M')
_imp_PRINT((double)(((TIME2 - TIME1) * 1000) / STATS), 3, 3);
_imp_PRINTSYMBOL(77);
// 832 NEWLINE
_imp_NEWLINE();
// 833 %FINISH
L_00A1:;
// 834 %IF PARM&8 # 0 %START
if (*PARM & 8 == 0) goto L_00A3;
// 835 %CYCLE I = 0,1,255
// %for I = 0, 1, 255 %cycle
{
I = -1;
L_00A4:
if (I == 255) goto L_00A5;
I += 1;
// 836 J = INDEX(I)
J = INDEX[I];
// 837 %IF J > 0 %START
if (J <= 0) goto L_00A7;
// 838 WRITE(I,3); PRINT SYMBOL(':')
_imp_WRITE(I, 3);
_imp_PRINTSYMBOL(58);
// 839 %WHILE J > 0 %CYCLE
L_00A8:;
if (J <= 0) goto L_00A9;
// 840 SPACE; PRINT STRING(STRING(J+12))
_imp_SPACE();
_imp_PRINTSTRING(
*({
__typeof__(_imp_string255) tmp = *_imp_STRING(J + 12) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 841 J = INTEGER(J+8)
J = *_imp_INTEGER(J + 8);
// 842 %REPEAT
goto L_00A8;
L_00A9:;
// 843 NEWLINE
_imp_NEWLINE();
// 844 %FINISH
L_00A7:;
// 845 %REPEAT
goto L_00A4;
}
L_00A5:;
// 846 %FINISH
L_00A3:;
// 847 %RETURN
return;
// 848
// 849 !
// 850
// 851 %ROUTINE PRINT SS
void PRINTSS(void) {
// 852 {%SHORTROUTINE}
// 853 %INTEGER K
int K;
// 854 %ROUTINE WRITE(%INTEGER V,P)
void WRITE(int V, int P) {
// 855 %IF V >= 10 %START
if (V < 10) goto L_00AA;
// 856 WRITE(V//10,P-1); V = V-10*(V//10)
WRITE(((long)V / (long)10), P - 1);
V = V - 10 * (((long)V / (long)10));
// 857 %FINISH %ELSE SPACES(P-1)
goto L_00AB;
L_00AA:;
_imp_SPACES(P - 1);
L_00AB:;
// 858 PRINT SYMBOL(V+'0')
_imp_PRINTSYMBOL(V + 48);
// 859 %END
return;
} /* end of WRITE */
// 860 WRITE(LINE,4); SPACE
WRITE(LINE, 4);
_imp_SPACE();
// 861 PRINTPOS = LINEBASE
PRINTPOS = LINEBASE;
// 862 {%UNTIL PRINTPOS = FPOS1} %CYCLE
L_00AC:;
// 863 PRINTPOS = PRINTPOS+1
PRINTPOS = PRINTPOS + 1;
// 864 PRINT SYMBOL(MARKER) %IF PRINTPOS = FAULTPOS
if (PRINTPOS != FAULTPOS) goto L_00AD;
_imp_PRINTSYMBOL(124);
L_00AD:;
// 865 K = BYTEINTEGER(PRINTPOS)
K = *_imp_BYTEINTEGER(PRINTPOS);
// 866 %IF K = NL %OR 32 <= K <= 126 %THEN PRINT SYMBOL(K) %C
if (K == 10) goto L_00A6;
{
// Double-sided test on K (Part I)
int tmp;
if (32 > (tmp = K)) goto L_00AE;
// Double-sided test on K (Part II)
if (tmp > 126) goto L_00AE;
}
L_00A6:;
_imp_PRINTSYMBOL(K);
goto L_00AF;
L_00AE:;
_imp_PRINTSYMBOL(91);
WRITE(K, 0);
_imp_PRINTSYMBOL(93);
L_00AF:;
// 867+ %ELSE PRINT SYMBOL('[') %AND WRITE(K,0) %AND PRINT SYMBOL(']')
// 868 %REPEAT %UNTIL PRINTPOS = FPOS1
if (PRINTPOS == FPOS1) goto L_00B0;
goto L_00AC;
L_00B0:;
// 869 NEWLINE %IF K # NL
if (K == 10) goto L_00B1;
_imp_NEWLINE();
L_00B1:;
// 870 %END
return;
} /* end of PRINTSS */
// 871
// 872 %ROUTINE REPORT(%INTEGER N)
void REPORT(int N) {
// 873 {%SHORTROUTINE}
// 874 %SWITCH S(0:25)
int S_index;
int S_line;
char *S_file;
static const void *S[26] = {
&&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing,
&&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing,
&&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing,
&&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing, &&case_S_missing,
&&case_S_missing, &&case_S_missing};
// 875 FAULTPOS = 0 %IF N > 7
if (N <= 7) goto L_00B2;
FAULTPOS = 0;
L_00B2:;
// 876 PRINT SS %IF PRINTPOS # FPOS1
if (PRINTPOS == FPOS1) goto L_00B3;
PRINTSS();
L_00B3:;
// 877 PRINT SYMBOL('*')
_imp_PRINTSYMBOL(42);
// 878 ->S(N)
S_line = __LINE__;
S_file = __FILE__;
S_index = N;
goto case_S_dispatch;
// 879 S(0): PRINT STRING("FORM?"); ->F
case_S_0:;
_imp_PRINTSTRING(_imp_str_literal("FORM?"));
goto U_1021;
// 880 S(1): PRINT STRING("ATOM?"); ->F
case_S_1:;
_imp_PRINTSTRING(_imp_str_literal("ATOM?"));
goto U_1021;
// 881 S(2): PRINT STRING("NAME?"); ->F
case_S_2:;
_imp_PRINTSTRING(_imp_str_literal("NAME?"));
goto U_1021;
// 882 S(3): PRINT STRING("MODE?"); ->F
case_S_3:;
_imp_PRINTSTRING(_imp_str_literal("MODE?"));
goto U_1021;
// 883 S(4): PRINT STRING("SIZE?"); ->F
case_S_4:;
_imp_PRINTSTRING(_imp_str_literal("SIZE?"));
goto U_1021;
// 884 S(11):PRINT STRING("%BEGIN"); ->M
case_S_11:;
_imp_PRINTSTRING(_imp_str_literal("%BEGIN"));
goto U_1022;
// 885 S(12):PRINT STRING("%CYCLE"); ->M
case_S_12:;
_imp_PRINTSTRING(_imp_str_literal("%CYCLE"));
goto U_1022;
// 886 S(13):PRINT STRING("%START"); ->M
case_S_13:;
_imp_PRINTSTRING(_imp_str_literal("%START"));
goto U_1022;
// 887 S(8): PRINT STRING("%END"); ->M
case_S_8:;
_imp_PRINTSTRING(_imp_str_literal("%END"));
goto U_1022;
// 888 S(9): PRINT STRING("%REPEAT"); ->M
case_S_9:;
_imp_PRINTSTRING(_imp_str_literal("%REPEAT"));
goto U_1022;
// 889 S(10):PRINT STRING("%FINISH"); ->M
case_S_10:;
_imp_PRINTSTRING(_imp_str_literal("%FINISH"));
goto U_1022;
// 890 S(15): PRINT SYMBOL('''')
case_S_15:;
_imp_PRINTSYMBOL(39);
// 891 PRINT STRING(STRING(DPOS+12))
_imp_PRINTSTRING(
*({
__typeof__(_imp_string255) tmp = *_imp_STRING(DPOS + 12) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 892 PRINT SYMBOL('''')
_imp_PRINTSYMBOL(39);
// 893 M: PRINT STRING(" MISSING"); ->F
U_1022:;
_imp_PRINTSTRING(_imp_str_literal(" MISSING"));
goto U_1021;
// 894 S(23):PRINT STRING("BOUNDS?"); ->F
case_S_23:;
_imp_PRINTSTRING(_imp_str_literal("BOUNDS?"));
goto U_1021;
// 895 S(25):PRINT STRING("CONTEXT?"); ->F
case_S_25:;
_imp_PRINTSTRING(_imp_str_literal("CONTEXT?"));
goto U_1021;
// 896 S(5):
case_S_5:;
// 897 S(16):PRINT STRING("DUPLICATE"); ->F
case_S_16:;
_imp_PRINTSTRING(_imp_str_literal("DUPLICATE"));
goto U_1021;
// 898 S(17):PRINT STRING("ORDER?"); ->F
case_S_17:;
_imp_PRINTSTRING(_imp_str_literal("ORDER?"));
goto U_1021;
// 899 S(18):PRINT STRING("MATCH?"); ->F
case_S_18:;
_imp_PRINTSTRING(_imp_str_literal("MATCH?"));
goto U_1021;
// 900 S(19):PRINT STRING("RANGE?"); ->F
case_S_19:;
_imp_PRINTSTRING(_imp_str_literal("RANGE?"));
goto U_1021;
// 901 S(20):PRINT STRING("LITERAL?"); ->F
case_S_20:;
_imp_PRINTSTRING(_imp_str_literal("LITERAL?"));
goto U_1021;
// 902 S(21): %IF CONSTCOUNT < 0 %START
case_S_21:;
if (CONSTCOUNT >= 0) goto L_00B5;
// 903 WRITE(-CONSTCOUNT,1); PRINT STRING(" EXTRA")
_imp_WRITE(-CONSTCOUNT, 1);
_imp_PRINTSTRING(_imp_str_literal(" EXTRA"));
// 904 %FINISH %ELSE %START
goto L_00B6;
L_00B5:;
// 905 WRITE(CONSTCOUNT,1); PRINT STRING(" MISSING")
_imp_WRITE(CONSTCOUNT, 1);
_imp_PRINTSTRING(_imp_str_literal(" MISSING"));
// 906 %FINISH
L_00B6:;
// 907 PRINT STRING(" VALUE(S)"); ->F
_imp_PRINTSTRING(_imp_str_literal(" VALUE(S)"));
goto U_1021;
// 908 S(22):PRINT STRING("TYPE?"); ->F
case_S_22:;
_imp_PRINTSTRING(_imp_str_literal("TYPE?"));
goto U_1021;
// 909 F: NEWLINE
U_1021:;
_imp_NEWLINE();
// 910 FAULTNUM = -1; PARM = PARM!X'80000000'
FAULTNUM = -1;
*PARM = *PARM | (-2147483648);
// 911 %END
return;
case_S_dispatch:
if (S_index < 0 || S_index > 25)
_imp_signalf(6, 3, S_index, "->S(%d) out of bounds at %s line %d", S_index, S_file, S_line);
goto *S[S_index - 0];
case_S_missing:
_imp_signalf(8, 2, S_index, "switch jump to undefined label S(%d): at %s line %d", S_index, S_file, S_line);
} /* end of REPORT */
// 912
// 913 %ROUTINE CODE ATOM
void CODEATOM(void) {
// 914 {%SHORTROUTINE}
// 915 {%REGISTER} %INTEGER FP{(5)}; !FILE POS
int FP;
// 916 {%REGISTER} %INTEGER SC{(6)}; !SYMCODE OR SYM
int SC;
// 917 %INTEGER I,J,K,L
int I;
int J;
int K;
int L;
// 918 %INTEGER HASH
int HASH;
// 919
// 920 ATOMS = ATOMS+1
ATOMS = ATOMS + 1;
// 921 FP = FPOS; SC = SYMCODE
FP = FPOS;
SC = SYMCODE;
// 922 ->C2 %IF SC # 0
if (SC == 0) goto L_00B7;
goto U_1023;
L_00B7:;
// 923 C1: {%UNTIL SC # ' '} %CYCLE
U_1024:;
L_00B8:;
// 924 FP = FP+1; SC = BYTEINTEGER(FP)
FP = FP + 1;
SC = *_imp_BYTEINTEGER(FP);
// 925 %REPEAT %UNTIL SC # ' '
if (SC != 32) goto L_00B9;
goto L_00B8;
L_00B9:;
// 926 SC = SYMINIT(SC)
SC = SYMINIT[SC];
// 927 C2: FPOS1 = FP
U_1023:;
FPOS1 = FP;
// 928 ->NAMENUM %IF SC < 127
if (SC >= 127) goto L_00BA;
goto U_1025;
L_00BA:;
// 929 SC = SC-128
SC = SC - 128;
// 930 ->KEYWORD %IF SC > 0
if (SC <= 0) goto L_00BB;
goto U_1026;
L_00BB:;
// 931 ->QUOTEMARK %IF SC # 0
if (SC == 0) goto L_00BC;
goto U_1027;
L_00BC:;
// 932 !PERCENT
// 933 FP = FP+1; SC = SYMINIT(BYTEINTEGER(FP)!128)
FP = FP + 1;
SC = SYMINIT[*_imp_BYTEINTEGER(FP) | 128];
// 934 ->C2 %IF SC # 0
if (SC == 0) goto L_00BD;
goto U_1023;
L_00BD:;
// 935 ->C1
goto U_1024;
// 936
// 937 !LOCATE ATOM IN FIXED DICT
// 938 !KEYDICT := MORE<5> : LINK<9> : SYM-32<6>
// 939 ! OR CLASS<7> : 0<6>
// 940 ! THEN SUBCLASS<16>
// 941 KEYWORD:
U_1026:;
// 942 ->NLQ %IF SC >= SKIPMIN; !NL OR EQUIVALENT
if (SC < SKIPMIN) goto L_00BE;
goto U_1028;
L_00BE:;
// 943 I = SC; L = 0; L = 128 %IF SC < PUNCTMIN
I = SC;
L = 0;
if (SC >= 43) goto L_00BF;
L = 128;
L_00BF:;
// 944 %CYCLE
L_00C0:;
// 945 %CYCLE
L_00C1:;
// 946 FP = FP+1; K = BYTEINTEGER(FP)
FP = FP + 1;
K = *_imp_BYTEINTEGER(FP);
// 947 SC = SYMINIT(K!L)
SC = SYMINIT[K | L];
// 948 %EXIT %IF SC&127 # 0
if (SC & 127 == 0) goto L_00C2;
goto L_00C3;
L_00C2:;
// 949 L = SC
L = SC;
// 950 %REPEAT
goto L_00C1;
L_00C3:;
// 951 K = K-32 %IF SC&128 # 0
if (SC & 128 == 0) goto L_00C4;
K = K - 32;
L_00C4:;
// 952 %CYCLE
L_00C5:;
// 953 J = KEYDICT(I)
J = KEYDICT[I];
// 954 %EXIT %IF J >= 0 %OR J&63 = K
if (J >= 0) goto L_00C6;
if (J & 63 != K) goto L_00C7;
L_00C6:;
goto L_00C8;
L_00C7:;
// 955 I = I+1
I = I + 1;
// 956 %REPEAT
goto L_00C5;
L_00C8:;
// 957 %EXIT %IF J&63 # K
if (J & 63 == K) goto L_00C9;
goto L_00CA;
L_00C9:;
// 958 I = J>>6&511
I = (unsigned int)J >> 6 & 511;
// 959 %REPEAT
goto L_00C0;
L_00CA:;
// 960 ->ERR %IF J&63 # 0
if (J & 63 == 0) goto L_00CB;
goto U_1029;
L_00CB:;
// 961 ATOMTYPE = KEYDICT(I+1)&X'FFFF'
ATOMTYPE = KEYDICT[I + 1] & 65535;
// 962 ATOM = J>>6
ATOM = (unsigned int)J >> 6;
// 963 ->KEY5 %IF ATOM = 0
if (ATOM != 0) goto L_00CC;
goto U_102A;
L_00CC:;
// 964 FIN:FPOS = FP; SYMCODE = SC
U_102B:;
FPOS = FP;
SYMCODE = SC;
// 965 %RETURN
return;
// 966 KEY5:
U_102A:;
// 967 %IF ATOMTYPE # 0 %START; !%COMMENT
if (ATOMTYPE == 0) goto L_00CD;
// 968 ->FIN %IF SKIPMIN # SKIP1MIN
if (SKIPMIN == 86) goto L_00CE;
goto U_102B;
L_00CE:;
// 969 ->SKP
goto U_102C;
// 970 %FINISH
L_00CD:;
// 971 ->ERR %UNLESS BYTEINTEGER(FP) = NL
if (*_imp_BYTEINTEGER(FP) == 10) goto L_00CF;
goto U_1029;
L_00CF:;
// 972 NEXTLINE = NEXTLINE+1
NEXTLINE = NEXTLINE + 1;
// 973 ->TERM %IF FP >= FMAX
if (FP < FMAX) goto L_00D0;
goto U_102D;
L_00D0:;
// 974 ->C1
goto U_1024;
// 975
// 976 NLQ:
U_1028:;
// 977 ->TERM %IF SKIPMIN # SKIP1MIN; !NOT LEADING ATOM
if (SKIPMIN == 86) goto L_00D1;
goto U_102D;
L_00D1:;
// 978 SKP:
U_102C:;
// 979 FP = FP-1
FP = FP - 1;
// 980 {%UNTIL SC = NL %OR SC = ';'} %CYCLE
L_00D2:;
// 981 FP = FP+1; SC = BYTEINTEGER(FP)
FP = FP + 1;
SC = *_imp_BYTEINTEGER(FP);
// 982 %REPEAT %UNTIL SC = NL %OR SC = ';'
if (SC == 10) goto L_00D3;
if (SC == 59) goto L_00D3;
goto L_00D2;
L_00D3:;
// 983 %IF SC = NL %START
if (SC != 10) goto L_00D4;
// 984 ->TERM %IF FP >= FMAX
if (FP < FMAX) goto L_00D5;
goto U_102D;
L_00D5:;
// 985 LINEBASE = FP; NEXTLINE = NEXTLINE+1; LINE = NEXTLINE
LINEBASE = FP;
NEXTLINE = NEXTLINE + 1;
LINE = NEXTLINE;
// 986 %FINISH
L_00D4:;
// 987 ->C1
goto U_1024;
// 988
// 989 TERM:
U_102D:;
// 990 ATOM = TERMINATOR; ATOMTYPE = 0
ATOM = 13;
ATOMTYPE = 0;
// 991 NEXTLINE = NEXTLINE+1; SC = 0
NEXTLINE = NEXTLINE + 1;
SC = 0;
// 992 SC = 255 %IF FP >= FMAX
if (FP < FMAX) goto L_00D6;
SC = 255;
L_00D6:;
// 993 ->FIN
goto U_102B;
// 994
// 995 DISASTER:
U_102E:;
// 996 ATOMTYPE = 99
ATOMTYPE = 99;
// 997 ->ER1
goto U_102F;
// 998 STRINGERR:
U_1030:;
// 999 ATOMTYPE = 4; NEXTLINE = L
ATOMTYPE = 4;
NEXTLINE = L;
// 1000 ER1:FP = FPOS1; SC = 0
U_102F:;
FP = FPOS1;
SC = 0;
// 1001 ->ER2
goto U_1031;
// 1002 ERR:ATOMTYPE = 1
U_1029:;
ATOMTYPE = 1;
// 1003 ER2:ATOM = 0
U_1031:;
ATOM = 0;
// 1004 ->FIN
goto U_102B;
// 1005
// 1006 NAMENUM:
U_1025:;
// 1007 ->NUMBER %IF SC <= '9' %AND ATOM # JUMP
if (SC > 57) goto L_00D7;
if (ATOM == 15) goto L_00D7;
goto U_1032;
L_00D7:;
// 1008 %IF BYTEINTEGER(FP+1) = '''' %START
if (*_imp_BYTEINTEGER(FP + 1) != 39) goto L_00D8;
// 1009 ->HEX %IF SC = 'X'
if (SC != 88) goto L_00D9;
goto U_1033;
L_00D9:;
// 1010 ->OCT %IF SC = 'K'
if (SC != 75) goto L_00DA;
goto U_1034;
L_00DA:;
// 1011 ->BIN %IF SC = 'B'
if (SC != 66) goto L_00DB;
goto U_1035;
L_00DB:;
// 1012 ->MULTI %IF SC = 'M'
if (SC != 77) goto L_00DC;
goto U_1036;
L_00DC:;
// 1013 %FINISH
L_00D8:;
// 1014 J = DLIM; ->DISASTER %IF J+84 >= DBOUND
J = DLIM;
if (J + 84 < DBOUND) goto L_00DD;
goto U_102E;
L_00DD:;
// 1015 HASH = 0
HASH = 0;
// 1016 {%UNTIL SC > 'Z'} %CYCLE
L_00DE:;
// 1017 %IF SC # 0 %START
if (SC == 0) goto L_00DF;
// 1018 J = J+1; BYTEINTEGER(J+12) = SC
J = J + 1;
*_imp_BYTEINTEGER(J + 12) = SC;
// 1019 HASH = HASH<<1!!SC
HASH = HASH << 1 ^ SC;
// 1020 %FINISH
L_00DF:;
// 1021 FP = FP+1; SC = SYMINIT(BYTEINTEGER(FP))
FP = FP + 1;
SC = SYMINIT[*_imp_BYTEINTEGER(FP)];
// 1022 %REPEAT %UNTIL SC > 'Z'
if (SC > 90) goto L_00E0;
goto L_00DE;
L_00E0:;
// 1023 BYTEINTEGER(DLIM+12) = J-DLIM
*_imp_BYTEINTEGER(DLIM + 12) = J - DLIM;
// 1024 NEWDLIM = J&(\3)+16
NEWDLIM = (J & (~3)) + 16;
// 1025 HEAD == INDEX(HASH&255); DPOS = HEAD;
HEAD = (int *)/*?*/ &INDEX[HASH & 255];
DPOS = *HEAD;
// 1026 ATOM = IDENT;
ATOM = 1;
// 1027 IDENTIFIERS = IDENTIFIERS+1
IDENTIFIERS = IDENTIFIERS + 1;
// 1028 ->FIN
goto U_102B;
// 1029
// 1030 NUMBER:
U_1032:;
// 1031 ATOMTYPE = NUMBITS
ATOMTYPE = 112;
// 1032 ATOMVAL = SC-'0'
ATOMVAL = SC - 48;
// 1033 %CYCLE
L_00E1:;
// 1034 FP = FP+1; SC = SYMINIT(BYTEINTEGER(FP))
FP = FP + 1;
SC = SYMINIT[*_imp_BYTEINTEGER(FP)];
// 1035 %EXIT %IF SC > '9'
if (SC <= 57) goto L_00E2;
goto L_00E3;
L_00E2:;
// 1036 ATOMVAL = (ATOMVAL<<2+ATOMVAL)<<1+SC-'0' %C
if (SC == 0) goto L_00E4;
if (ATOMVAL >= 1000000) goto L_00E4;
ATOMVAL = ((ATOMVAL << 2) + ATOMVAL << 1) + SC - 48;
L_00E4:;
// 1037+ %IF SC # 0 %AND ATOMVAL < 1000000
// 1038 %REPEAT
goto L_00E1;
L_00E3:;
// 1039 %IF BYTEINTEGER(FP) = '.' %START
if (*_imp_BYTEINTEGER(FP) != 46) goto L_00E5;
// 1040 {%UNTIL SC > '9'} %CYCLE
L_00E6:;
// 1041 FP = FP+1; SC = SYMINIT(BYTEINTEGER(FP))
FP = FP + 1;
SC = SYMINIT[*_imp_BYTEINTEGER(FP)];
// 1042 %REPEAT %UNTIL SC > '9'
if (SC > 57) goto L_00E7;
goto L_00E6;
L_00E7:;
// 1043 ATOMTYPE = REALBITS
ATOMTYPE = 48;
// 1044 %FINISH
L_00E5:;
// 1045 %IF BYTEINTEGER(FP) = '@' %START
if (*_imp_BYTEINTEGER(FP) != 64) goto L_00E8;
// 1046 {%UNTIL SC # ' '} %CYCLE
L_00E9:;
// 1047 FP = FP+1; SC = BYTEINTEGER(FP)
FP = FP + 1;
SC = *_imp_BYTEINTEGER(FP);
// 1048 %REPEAT %UNTIL SC # ' '
if (SC != 32) goto L_00EA;
goto L_00E9;
L_00EA:;
// 1049 %IF SC = '-' %START
if (SC != 45) goto L_00EB;
// 1050 {%UNTIL SC # ' '} %CYCLE
L_00EC:;
// 1051 FP = FP+1; SC = BYTEINTEGER(FP)
FP = FP + 1;
SC = *_imp_BYTEINTEGER(FP);
// 1052 %REPEAT %UNTIL SC # ' '
if (SC != 32) goto L_00ED;
goto L_00EC;
L_00ED:;
// 1053 %FINISH
L_00EB:;
// 1054 SC = SYMINIT(SC)
SC = SYMINIT[SC];
// 1055 ->ERR %UNLESS SC <= '9'
if (SC <= 57) goto L_00EE;
goto U_1029;
L_00EE:;
// 1056 {%UNTIL SC > '9'} %CYCLE
L_00EF:;
// 1057 FP = FP+1; SC = SYMINIT(BYTEINTEGER(FP))
FP = FP + 1;
SC = SYMINIT[*_imp_BYTEINTEGER(FP)];
// 1058 %REPEAT %UNTIL SC > '9'
if (SC > 57) goto L_00F0;
goto L_00EF;
L_00F0:;
// 1059 ATOMTYPE = REALBITS
ATOMTYPE = 48;
// 1060 %FINISH
L_00E8:;
// 1061 NN: ATOM = CONST
U_1037:;
ATOM = 2;
// 1062 NUMBERS = NUMBERS+1
NUMBERS = NUMBERS + 1;
// 1063 ->FIN
goto U_102B;
// 1064
// 1065 MULTI:
U_1036:;
// 1066 FP = FP+1
FP = FP + 1;
// 1067 ATOMTYPE = NUMBITS
ATOMTYPE = 112;
// 1068 ->Q1
goto U_1038;
// 1069 QUOTEMARK:
U_1027:;
// 1070 ATOMTYPE = STRINGBIT
ATOMTYPE = 128;
// 1071 Q1: K = BYTEINTEGER(FP); J = -1; L = NEXTLINE
U_1038:;
K = *_imp_BYTEINTEGER(FP);
J = -1;
L = NEXTLINE;
// 1072 ATOMVAL = 0
ATOMVAL = 0;
// 1073 %CYCLE
L_00F1:;
// 1074 FP = FP+1; SC = BYTEINTEGER(FP)
FP = FP + 1;
SC = *_imp_BYTEINTEGER(FP);
// 1075 %IF SC = NL %START
if (SC != 10) goto L_00F2;
// 1076 NEXTLINE = NEXTLINE+1
NEXTLINE = NEXTLINE + 1;
// 1077 ->TERM %IF FP >= FMAX
if (FP < FMAX) goto L_00F3;
goto U_102D;
L_00F3:;
// 1078 %FINISH
L_00F2:;
// 1079 %IF SC = K %START
if (SC != K) goto L_00F4;
// 1080 %EXIT %IF SC # BYTEINTEGER(FP+1)
if (SC == *_imp_BYTEINTEGER(FP + 1)) goto L_00F5;
goto L_00F6;
L_00F5:;
// 1081 FP = FP+1
FP = FP + 1;
// 1082 %FINISH
L_00F4:;
// 1083 ATOMVAL = ATOMVAL<<8+SC
ATOMVAL = (ATOMVAL << 8) + SC;
// 1084 J = J+1; ->STRINGERR %IF J = 255
J = J + 1;
if (J != 255) goto L_00F7;
goto U_1030;
L_00F7:;
// 1085 %REPEAT
goto L_00F1;
L_00F6:;
// 1086 %IF ATOMTYPE = STRINGBIT %START; !IE NOT MULTI
if (ATOMTYPE != 128) goto L_00F8;
// 1087 ATOMVAL = J<<8+ATOMVAL&255
ATOMVAL = (J << 8) + (ATOMVAL & 255);
// 1088 ATOMTYPE = STRINGBIT+NUMBITS %IF J = 0
if (J != 0) goto L_00F9;
ATOMTYPE = 128 + 112;
L_00F9:;
// 1089 %FINISH
L_00F8:;
// 1090 SC = 0
SC = 0;
// 1091 ->NN
goto U_1037;
// 1092
// 1093 HEX:J = 4; ->RAD
U_1033:;
J = 4;
goto U_1039;
// 1094 OCT:J = 3; ->RAD
U_1034:;
J = 3;
goto U_1039;
// 1095 BIN:J = 1
U_1035:;
J = 1;
// 1096 RAD:FP = FP+1
U_1039:;
FP = FP + 1;
// 1097 ATOMTYPE = NUMBITS; ATOMVAL = 0
ATOMTYPE = 112;
ATOMVAL = 0;
// 1098 %CYCLE
L_00FA:;
// 1099 FP = FP+1; SC = BYTEINTEGER(FP)
FP = FP + 1;
SC = *_imp_BYTEINTEGER(FP);
// 1100 %EXIT %IF SC = ''''
if (SC != 39) goto L_00FB;
goto L_00FC;
L_00FB:;
// 1101 K = SC-'0'
K = SC - 48;
// 1102 K = K+('0'-'A'+10) %IF K >= 'A'-'0'
if (K < 65 - 48) goto L_00FD;
K = K + (48 - 65 + 10);
L_00FD:;
// 1103 ->ERR %IF K>>J # 0
if ((unsigned int)K >> J == 0) goto L_00FE;
goto U_1029;
L_00FE:;
// 1104 ATOMVAL = ATOMVAL<<J+K
ATOMVAL = (ATOMVAL << J) + K;
// 1105 %REPEAT
goto L_00FA;
L_00FC:;
// 1106 SC = 0
SC = 0;
// 1107 ->NN
goto U_1037;
// 1108
// 1109 %END; !CODE ATOM
} /* end of CODEATOM */
// 1110
// 1111 %ROUTINE POP CONTEXT
void POPCONTEXT(void) {
// 1112 {%SHORTROUTINE}
// 1113 %INTEGER I
int I;
// 1114 DPOS = C_LOCAL; FPOS1 = FPOS
DPOS = C.LOCAL;
FPOS1 = FPOS;
// 1115 %WHILE DPOS # DLIM %CYCLE
L_00FF:;
if (DPOS == DLIM) goto L_0100;
// 1116 I = INTEGER(DPOS)
I = *_imp_INTEGER(DPOS);
// 1117 %IF I # RECFORMAT %START
if (I == 4) goto L_0101;
// 1118 REPORT(15) %IF I&1 # 0 %AND I&6 # 0
if (I & 1 == 0) goto L_0102;
if (I & 6 == 0) goto L_0102;
REPORT(15);
L_0102:;
// 1119 %FINISH %ELSE %START
goto L_0103;
L_0101:;
// 1120 DPOS = INTEGER(DPOS+4) %IF INTEGER(DPOS+4) # 0
if (*_imp_INTEGER(DPOS + 4) == 0) goto L_0104;
DPOS = *_imp_INTEGER(DPOS + 4);
L_0104:;
// 1121 %FINISH
L_0103:;
// 1122 DPOS = BYTEINTEGER(DPOS+12)&(\3)+DPOS+16
DPOS = (*_imp_BYTEINTEGER(DPOS + 12) & (~3)) + DPOS + 16;
// 1123 %REPEAT
goto L_00FF;
L_0100:;
// 1124 REPORT(C_STACK&1+9) %AND C_STACK=C_STACK>>2 %WHILE C_STACK # 0
L_0105:;
if (C.STACK == 0) goto L_0106;
REPORT((C.STACK & 1) + 9);
C.STACK = (unsigned int)C.STACK >> 2;
goto L_0105;
L_0106:;
// 1125 DLIM = C_LOCAL
DLIM = C.LOCAL;
// 1126 C = HOLD(LEVEL); LEVEL = LEVEL-1
C = HOLD[LEVEL - 1];
LEVEL = LEVEL - 1;
// 1127 %CYCLE I = ADDR(INDEX(0)),4,ADDR(INDEX(255))
// %for I = _imp_ADDR(/*?*/&INDEX[0]), 4, _imp_ADDR(/*?*/&INDEX[255]) %cycle
{
int _initial = _imp_ADDR(/*?*/ &INDEX[0]), _final = _imp_ADDR(/*?*/ &INDEX[255]);
if (invalid_for_loop(_initial, 4, _final))
_imp_signal(5, 1, 0, "Illegal cycle I = _imp_ADDR(/*?*/&INDEX[0]), 4, _imp_ADDR(/*?*/&INDEX[255])");
I = _initial - (4);
L_0107:
if (I == _final) goto L_0108;
I += 4;
// 1128 INTEGER(I) = INTEGER(INTEGER(I)+8) %WHILE INTEGER(I) >= DLIM
L_010A:;
if (*_imp_INTEGER(I) < DLIM) goto L_010B;
*_imp_INTEGER(I) = *_imp_INTEGER(*_imp_INTEGER(I) + 8);
goto L_010A;
L_010B:;
// 1129 %REPEAT
goto L_0107;
}
L_0108:;
// 1130 %END
return;
} /* end of POPCONTEXT */
// 1131
// 1132 %ROUTINE DEFINE(%INTEGER DISP,VAL)
void DEFINE(int DISP, int VAL) {
// 1133 {%SHORTROUTINE}
// 1134 %WHILE IDENTS # DLIM %CYCLE
L_010C:;
if (IDENTS == DLIM) goto L_010D;
// 1135 %IF DISP # 0 %THEN INTEGER(IDENTS+4) = VAL %C
if (DISP == 0) goto L_010E;
*_imp_INTEGER(IDENTS + 4) = VAL;
goto L_010F;
L_010E:;
*_imp_BYTEINTEGER(IDENTS + 2) = VAL;
L_010F:;
// 1136+ %ELSE BYTEINTEGER(IDENTS+2) = VAL
// 1137 IDENTS = BYTEINTEGER(IDENTS+12)&(\3)+IDENTS+16
IDENTS = (*_imp_BYTEINTEGER(IDENTS + 12) & (~3)) + IDENTS + 16;
// 1138 %REPEAT
goto L_010C;
L_010D:;
// 1139 %END
return;
} /* end of DEFINE */
// 1140
// 1141
// 1142 %END;
return;
case_A_dispatch:
if (A_index < 0 || A_index > 127)
_imp_signalf(6, 3, A_index, "->A(%d) out of bounds at %s line %d", A_index, A_file, A_line);
goto *A[A_index - 0];
case_A_missing:
_imp_signalf(8, 2, A_index, "switch jump to undefined label A(%d): at %s line %d", A_index, A_file, A_line);
case_X_dispatch:
if (X_index < 0 || X_index > 4)
_imp_signalf(6, 3, X_index, "->X(%d) out of bounds at %s line %d", X_index, X_file, X_line);
goto *X[X_index - 0];
} /* end of CHECKINNER */
// ?RA1 unused
// ?AS1 unused
// 1143 ; !CHECKINNER
// 1143
// 1144 %EXTERNALROUTINE CHECK(%STRING(63) PARAM)
void CHECK(_imp_string63 PARAM) {
// 1145 %RECORDFORMAT FINF(%INTEGER CONAD,FILESIZE, %BYTEINTEGER RUP, %C
struct FINF {
union {
struct {
int CONAD;
int FILESIZE;
unsigned char RUP;
unsigned char EEP;
unsigned char MODE;
unsigned char CONS;
unsigned char ARCH;
_imp_string6 TRAN;
short int FILETYPE;
short int NUMIPERMS;
int DATASTART;
int DATAEND;
int PLISTPTR;
};
};
};
// 1146+ EEP,MODE,CONS,ARCH, %STRING(6) TRAN, %C
// 1147+ %SHORTINTEGER FILETYPE,NUMIPERMS, %C
// 1148+ %INTEGER DATASTART,DATAEND, PLISTPTR)
// 1149 {%EXTERNAL}%ROUTINE{SPEC} DEFINE(%STRING(63) S)
void DEFINE(_imp_string63 S) {
// 1150 %end
return;
} /* end of DEFINE */
// ?S unused
// 1151 {%SYSTEM}%ROUTINE{SPEC} CONNECT(%STRING(15) S, %INTEGER A,M,P, %C
void CONNECT(_imp_string15 S, int A, int M, int P, struct FINF *R, int *F) {
// 1152+ %RECORD(FINF)%NAME R, %INTEGERNAME F)
// 1153 %end
return;
} /* end of CONNECT */
// ?F unused
// ?R unused
// ?P unused
// ?M unused
// ?A unused
// ?S unused
// 1154 {%EXTERNAL}%STRING(255)%FN{SPEC} SSFMESSAGE
_imp_string255 SSFMESSAGE(void) {
// 1155 %result="error" ;! I thought I had added this one to the perms..?
return *(_imp_string255 *)/*?*/ _imp_str_literal_ptr("error");
// 1156 %end
} /* end of SSFMESSAGE */
// 1157
// 1158 %RECORD(FINF) R
struct FINF R;
// 1159 %INTEGER I,J,FLAG
int I;
int J;
int FLAG;
// 1160 %STRING(63) OPTIONS,OUT
_imp_string63 OPTIONS;
_imp_string63 OUT;
// 1161 OUT = "" %UNLESS PARAM -> PARAM.("/").OUT
if (_imp_resolve(*({
_imp_string63 tmp = PARAM;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &PARAM, *({
_imp_string tmp = _imp_str_literal("/");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &OUT))
goto L_0110;
_imp_strncpy(/*?*/ &OUT, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 63);
L_0110:;
// 1162 OPTIONS = "" %UNLESS PARAM -> PARAM.(",").OPTIONS
if (_imp_resolve(*({
_imp_string63 tmp = PARAM;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &PARAM, *({
_imp_string tmp = _imp_str_literal(",");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &OPTIONS))
goto L_0111;
_imp_strncpy(/*?*/ &OPTIONS, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 63);
L_0111:;
// 1163 CONNECT(PARAM,0,0,0,R,FLAG)
CONNECT(
*({
__typeof__(_imp_string63) tmp = PARAM /*q*/;
(_imp_string15 *)&tmp;
})
,
0, 0, 0, /*?*/ &R, /*?*/ &FLAG);
// 1164 PRINTSTRING(SSFMESSAGE) %AND %RETURN %IF FLAG # 0
if (FLAG == 0) goto L_0112;
_imp_PRINTSTRING(
*({
__typeof__(_imp_string255) tmp = SSFMESSAGE() /*q*/;
(_imp_string255 *)&tmp;
})
);
return;
L_0112:;
// 1165 %IF OUT # "" %START
if (_imp_strcmp((_imp_string *)/*?*/ &OUT, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) == 0) goto L_0113;
// 1166 DEFINE("ST19,".OUT)
DEFINE(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("ST19,"), (_imp_string *)/*?*/ &OUT);
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string63 *)&tmp;
})
);
// 1167 SELECT OUTPUT(19)
_imp_SELECTOUTPUT(19);
// 1168 %FINISH
L_0113:;
// 1169 I = 0
I = 0;
// 1170 %WHILE I < LENGTH(OPTIONS) %CYCLE
L_0114:;
if (I >= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &OPTIONS)) goto L_0115;
// 1171 I = I+1; J = CHARNO(OPTIONS,I)
I = I + 1;
J = *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &OPTIONS, I);
// 1172 FLAG = FLAG!8 %IF J = 'D'
if (J != 68) goto L_0116;
FLAG = FLAG | 8;
L_0116:;
// 1173 FLAG = FLAG!4 %IF J = 'S'
if (J != 83) goto L_0117;
FLAG = FLAG | 4;
L_0117:;
// 1174 %REPEAT
goto L_0114;
L_0115:;
// 1175 CHECKINNER(R_CONAD+R_DATASTART,R_DATAEND-R_DATASTART,FLAG)
CHECKINNER(R.CONAD + R.DATASTART, R.DATAEND - R.DATASTART, /*?*/ &FLAG);
// 1176 PRINT STRING(" OK") %AND NEWLINE %IF FLAG >= 0
if (FLAG < 0) goto L_0118;
_imp_PRINTSTRING(_imp_str_literal(" OK"));
_imp_NEWLINE();
L_0118:;
// 1177 %END; !CHECK
return;
} /* end of CHECK */
// 1178
// 1179 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 1180 %end
_imp_stop(0);
return 0;
end_0:;
}
// 1181
// 1182 %ENDOFFILE