0000  #
0001  (*+02()
0002  #define FINC PCOUNT := PCOUNT+1
0003  #define FDEC PCOUNT := PCOUNT-1
0004  #define FTST PCOUNT<1
0006  #define FPINC(THISP)THISP.PCOUNT := THISP.PCOUNT+1
0007  #define FPDEC(THISP)THISP.PCOUNT := THISP.PCOUNT-1
0008  #define FPTST(THISP)THISP.PCOUNT<1
0009  #define FPTWO(THISP)THISP.PCOUNT>=2
0010  #define FINCD(THISP,I)THISP.PCOUNT := THISP.PCOUNT+I
0011  ()+02*)
0012  (*+01()
0013  #define FINC FIRSTWORD := FIRSTWORD+INCRF
0014  #define FDEC FIRSTWORD := FIRSTWORD-INCRF;
0015  #define FTST FIRSTWORD<ONEF
0016  #define FPINC(THISP)THISP.FIRSTWORD := THISP.FIRSTWORD+INCRF
0017  #define FPDEC(THISP)THISP.FIRSTWORD := THISP.FIRSTWORD-INCRF
0018  #define FPTST(THISP)THISP.FIRSTWORD<ONEF
0019  #define FPTWO(THISP)THISP.FIRSTWORD>TWOF
0020  #define FINCD(THISP,I))THISP.FIRSTWORD := THISP.FIRSTWORD+I
0021  ()+01*)
0022  (*+05()
0023  #define FINC FIRSTWORD := FIRSTWORD+INCRF
0024  #define FDEC FIRSTWORD := FIRSTWORD-INCRF;
0025  #define FTST FIRSTWORD<ONEF
0026  #define FPINC(THISP)THISP.FIRSTWORD := THISP.FIRSTWORD+INCRF
0027  #define FPDEC(THISP)THISP.FIRSTWORD := THISP.FIRSTWORD-INCRF
0028  #define FPTST(THISP)THISP.FIRSTWORD<ONEF
0029  #define FPTWO(THISP)THISP.FIRSTWORD>TWOF
0030  #define FINCD(THISP,I))THISP.FIRSTWORD := THISP.FIRSTWORD+I
0031  ()+05*)
00100 (*+01() (*$L-*) ()+01*)
00110 (*+02() (*$U+*)(*$W-*)(*$G-*)(*$D+*)(*$R-*)(*$L+*)(*$E+*) ()+02*)
00120 (*+02() (*$I32*) (* MAKE SETS ABLE TO HOLD 32 BITS *) ()+02*)
00150     (*  COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER  *)
00200 (**)
00250 (*+01()
00300 (*-52() PROGRAM RA68 (INPUT/+,OUTPUT+/); ()-52*)
00350 (*+52() PROGRAM RA68 (INPUT+,OUTPUT+/); ()+52*)
00400 (*$G-,P-,T-,W2000 OPTIONS: COMPILE ONLY, NO IMMEDIATE GO,
00450                           SET SIZE OF STACK/HEAP
00500                           NO POINTER CHECK; ^'S TAKE UP 17 BITS *)
00550 ()+01*)
00555 (*+02()
00560 (*+71() PROGRAM RUN68 (INPUT,OUTPUT); ()+71*)
00565 ()+02*)
00600 (*+03()
00650 (*$E+;D-;NL*)
00700 PROGRAM RUN68;
00750 ()+03*)
00800 (**)
00850 (**)
00900 CONST (* CONST    CONST    CONST    CONST    CONST    CONST    CONST*)
00950 (**)
01000        (**************)
01050        (* WORD SIZES *)
01100        (**************)
01150 (**)
01200 (*+01()
01250   SZWORD=1; SZADDR=1; SZINT=1; SZREAL=1; SZLONG=2; SZNAK=1; SZPDS=1; SZPROC=1; SZTERMSET=2;
01300   CHARPERWORD=10 ; SZIDBLOCK=1 ;
01350   (*-41() STACKSZWORD = 1 ; STACKSZADDR = 1 ; STACKSZINT = 1 ; ()-41*)
01400 ()+01*)
01450 (*+02()
01500    (*+12() (*-19()
01550      SZWORD=2; SZADDR=2; SZINT=2; SZREAL=4; SZLONG=4; SZNAK=4; SZPDS=6; SZPROC=2; SZTERMSET=16;
01600      CHARPERWORD=2 ; SZIDBLOCK=12;
01650      (*-41() STACKSZWORD = 2 ; STACKSZADDR = 2 ; STACKSZINT = 2 ; ()-41*)
01700    ()-19*)
01705    (*+19()
01710      SZWORD=2; SZADDR=4; SZINT=2; SZREAL=8; SZLONG=4; SZNAK=4; SZPDS=6; SZPROC=8; SZTERMSET=16;
01720      CHARPERWORD=2 ; SZIDBLOCK=12;
01730      (*-41() STACKSZWORD = 2 ; STACKSZADDR = 4 ; STACKSZINT = 2 ; ()-41*)
01735      (*+41() STACKSZWORD =-2 ; STACKSZADDR =-4 ; STACKSZINT =-2 ; ()+41*)
01740    ()+19*) ()+12*)
01741 (*+13()
01742      SZWORD=4; SZADDR=4; SZINT=4; SZREAL=8; SZLONG=4; SZNAK=8; SZPDS=12; SZPROC=8; SZTERMSET=16;
01743      CHARPERWORD=4; SZIDBLOCK=12;
01744      (*-41() STACKSZWORD = 4 ; STACKSZADDR = 4 ; STACKSZINT = 4 ; ()-41*)
01745      (*+41() STACKSZWORD = -4 ; STACKSZADDR = -4 ; STACKSZINT = -4 ; ()+41*)
01746 ()+13*)
01750 ()+02*)
01800 (*+03()
01850   SZWORD=1; SZADDR=1; SZINT=1; SZREAL=3; SZNAK=3; SZPDS=3; (*??*) (*SZLONG??*) SZPROC=1; SZTERMSET=1;
01900   CHARPERWORD=2 ;
01950   (*-41() STACKSZWORD = 1 ; STACKSZADDR = 1 ; STACKSZINT = 1 ; ()-41*)
02000 ()+03*)
02050 (*+04()
02100   SZWORD=2; SZADDR=4; SZINT=4; SZREAL=4; SZLONG=4; SZNAK=6; (*SZPDS??*) SZPROC=4; SZTERMSET=1;
02150   CHARPERWORD=2 ;
02200   (*-41() STACKSZWORD = 2 ; STACKSZADDR = 4 ; STACKSZINT = 4 ; ()-41*)
02250 ()+04*)
02300 (*+05()
02350   SZWORD=2; SZADDR=2; SZINT=2; SZREAL=4; SZLONG=4; SZNAK=4; SZPDS=6; SZPROC=4; SZTERMSET=16;
02400   CHARPERWORD=4 ; SZIDBLOCK=5 ;
02450   (*-41() STACKSZWORD = 2 ; STACKSZADDR = 2 ; STACKSZINT = 2 ; ()-41*)
02500   (*+41() STACKSZWORD = -2 ; STACKSZADDR = -2 ; STACKSZINT = -2 ; ()+41*)
02550 ()+05*)
02600 (*+11() CHARSPACE = 64 ; ()+11*)
02700 (**)
02750        (***************************************)
02800        (* INCREASING AND DECREASING PCOUNTS   *)
02850        (***************************************)
02900 (**)
02950 (*+11()
03000   INCRF=00004000000000000000B;  (*INCREMENT FOR PCOUNTS WHEN USING FIRSTWORD*)
03050   INCRF2=00010000000000000000B;
03100   ONEF=00004000000000000000B;  (*FOR TESTING PCOUNTS*)
03150   TWOF=00010000000000000000B;
03200 ()+11*)
03250 (*+12() (*+03()
03300   INCRF=32;  (*INCREMENT FOR PCOUNTS WHEN USING FIRSTWORD*)
03350   INCRF2=64;
03400   ONEF=32;  (*FOR TESTING PCOUNTS*)
03450   TWOF=64;
03500  ()+03*)
03510  (*+02()
03520   INCRF=1;
03525   INCRF2=2;
03530   ONEF=1;
03535   TWOF=2;
03540  ()+02*)()+12*)
03550 (*+13() (*+05()
03600   INCRF = 65536 ;  (* INCREMENT FOR PCOUNTS WHEN USING FIRST WORD *)
03650   INCRF2 = 131072 ;
03700   ONEF = 65536 ;  (* FOR TESTING PCOUNTS *)
03750   TWOF = 131072 ;
03760 ()+05*)
03765 (*+02()
03766   INCRF = 1;
03767   INCRF2 = 2;
03768   ONEF = 1;
03769   TWOF = 2;
03770 ()+02*)
03800 ()+13*)
03850 (**)
03855        (*************************************)
03900        (* SIZE OF OBJECTS * VARIABLE SIZE * *)
03950        (*************************************)
04000 (**)
04050 (*+11()
04100   STRUCTCONST=1;
04150   ELSCONST=2;
04200   STRINGCONST=1;
04250   NEXTOFFSET=2;  (*OFFSET OF NEXT WITHIN OBJECT*)
04300   MULTCONST=4;
04310   REFRCONST=MULTCONST;
04320   RECRCONST=MULTCONST;
04350   REFSLNCONST=MULTCONST;
04400   SORTSHIFT=4398046511104;
04450 ()+11*)
04500 (*+12() (*+03()
04550   STRUCTCONST=3;
04600   ELSCONST=4;
04650   STRINGCONST=4;
04700   NEXTOFFSET=7;  (*OFFSET OF NEXT WITHIN OBJECT*)
04750   MULTCONST=11;
04800   REFSLNCONST=11;
04805 ()+03*)
04807 (*+02()
04810   STRUCTCONST=10;
04815   ELSCONST=20;
04820   STRINGCONST=6;
04825   NEXTOFFSET=20;  (*OFFSET OF NEXT WITHIN OBJECT*)
04830   MULTCONST=38;
04831   REFRCONST=MULTCONST;
04832   RECRCONST=MULTCONST;
04835   REFSLNCONST=MULTCONST;
04840  (* SORTSHIFT IS NOT USET IN THE EM MACHINE AS THERE IS NO DEFINITION OF THE UNDERLYING HARDWARE *)
04845 ()+02*)
04850 ()+12*)
04900 (*+13()
04901 (*+05()
04950   STRUCTCONST = 6 ;
05000   ELSCONST = 10;
05050   STRINGCONST = 10;
05100   NEXTOFFSET = 12 ;  (* OFFSET OF NEXT WITHIN OBJECT *)
05150   MULTCONST = 18 ;
05160   REFSLNCONST = MULTCONST ;
05170   REFRCONST = MULTCONST ;
05180   RECRCONST = MULTCONST ;
05210   SORTSHIFT = 1;
05211 ()+05*)
05212 (*-05()
05213   STRUCTCONST = 12;
05214   ELSCONST = 20;
05215   STRINGCONST = 20;
05216   NEXTOFFSET = 24;
05217   MULTCONST = 36;
05218   REFSLNCONST = MULTCONST;
05219   REFRCONST = MULTCONST;
05220   RECRCONST = MULTCONST;
05221 (*-02() SORTSHIFT = 1; ()-02*)
05222 ()-05*)
05250 ()+13*)
05300 (**)
05350        (*************************************)
05400        (*                 * FIXED SIZE *    *)
05450        (*************************************)
05500 (**)
05550 (*+11()
05600   ROUTINESIZE=2;
05650   PROUTINESIZE=2;
05700   REF1SIZE=3;
05750   REF2SIZE=4;
05800   CREFSIZE=2;
05850   REFNSIZE=2;
05950   REFSL1SIZE=2;
06100   RECNSIZE=3;
06150   UNSSIZE=2;
06200   UNPSIZE=1;
06250   AFILESIZE=8;
06300   COVERSIZE=15;
06350 ()+11*)
06400 (*+12() (*+03()
06450   ROUTINESIZE=4;
06500   PROUTINESIZE=3;
06550   REF1SIZE=3;
06600   REF2SIZE=5;
06650   CREFSIZE=4;
06700   REFNSIZE=3;
06800   REFSL1SIZE=6;
06950   RECNSIZE=8;
07000   UNSSIZE=4;
07050   UNPSIZE=4;
07100   AFILESIZE=24;
07150   COVERSIZE=20;
07155 ()+03*)
07157 (*+02() (*SIZE OF FIELDS OF OBJECT IN BYTES*)
07160   ROUTINESIZE=14;
07162   PROUTINESIZE=14;
07164   REF1SIZE=18;
07166   REF2SIZE=24;
07168   CREFSIZE=18;
07170   REFNSIZE=16;
07174   REFSL1SIZE=16;
07178   RECNSIZE=24;
07180   AFILESIZE=46;
07182   COVERSIZE=88;
07198 ()+02*)
07200 ()+12*)
07250 (*+13()
07251 (*-05()
07252   ROUTINESIZE = 12;
07253   PROUTINESIZE = 16;
07254   REF1SIZE = 20;
07255   REF2SIZE = 24;
07256   CREFSIZE = 16;
07257   REFNSIZE = 16;
07258   REFSL1SIZE = 20;
07259   RECNSIZE = 28;
07260   UNSSIZE = 12;
07261   UNPSIZE = 12;
07262   AFILESIZE = 64;
07263   COVERSIZE = 104;
07264 ()-05*)
07265 (*+05()
07300   ROUTINESIZE = 6 ;
07350   PROUTINESIZE = 8;
07400   REF1SIZE = 10;
07450   REF2SIZE = 12;
07500   CREFSIZE = 8 ;
07550   REFNSIZE = 8 ;
07650   REFSL1SIZE=10;
07800   RECNSIZE = 14 ;
07850   UNSSIZE = 6 ;
07900   UNPSIZE = 6 ;
07950   AFILESIZE = 32 ;
08000   COVERSIZE = 52 ;
08001 ()+05*)
08050 ()+13*)
08100  (**)
08150 (*+11()
08200   LFMOFFSET=0; (*OFFSETS WITHIN AFILE*)
08250   PFMOFFSET=1;
08300   PMOFFSET=2;
08350   LMOFFSET=3;
08400   TERMOFFSET=5;
08450 ()+11*)
08500 (*+12() (*+03()
08550   LFMOFFSET=2; (*OFFSETS WITHIN AFILE*)
08600   PFMOFFSET=3;
08650   PMOFFSET=4;
08700   LMOFFSET=5;
08750   TERMOFFSET=7;
08755 ()+03*)
08757 (*+02()
08760   LFMOFFSET=0; (*OFFSETS WITHIN AFILE*)
08765   PFMOFFSET=4;
08770   PMOFFSET=8;
08775   LMOFFSET=12;
08780   TERMOFFSET=20;
08800 ()+02*) ()+12*)
08850 (*+13()
08851 (*-05()
08852   LFMOFFSET = 0;
08853   PFMOFFSET = 4;
08854   PMOFFSET = 8;
08855   LMOFFSET = 12;
08856   TERMOFFSET = 20;
08857 ()-05*)
08858 (*+05()
08900   LFMOFFSET = 0 ;  (* OFFSETS WITHIN A FILE *)
08950   PFMOFFSET = 2 ;
09000   PMOFFSET = 4 ;
09050   LMOFFSET = 6 ;
09100   TERMOFFSET = 10 ;
09101 ()+05*)
09150 ()+13*)
09155 (*+01() BUFFOFFSET=32; ()+01*) (*OFFSET OF THE ACTUAL BUFFER WITHIN A FETROOM *)
09160 (*+02() BUFFOFFSET=18; ()+02*)
09200 (**)
09250        (*************************)
09300        (* ENVIRONMENT ENQUIRIES *)
09350        (*************************)
09400 (**)
09450   ERRORCHAR='*';
09500 (*-50() MAXABSCHAR=127; ()-50*)
09550 (*+50() MAXABSCHAR=63; ()+50*)
09600 (*+11()
09650   BITSWIDTH=60;
09700   BYTESWIDTH=10;
09750   MINBOUND=-4194303;
09800   MAXBOUND=+4194303;
09810   HIOFFSET=377377B;
09850   INTWIDTH=16;
09900   REALWIDTH=16;
09950   EXPWIDTH=3;
10000   INTSPACE=17;   (*INTWIDTH+1*)
10050   REALSPACE=23;  (*REALWIDTH+EXPWIDTH+4*)
10100   COMPLSPACE=48; (*2*REALWIDTH+2*EXPWIDTH+10*)
10150   MAXINT=7777777777777777B;
10200   FAKEPI=17206220773250420551B;
10250 ()+11*)
10300 (*+12()
10350   BITSWIDTH=16;
10400   BYTESWIDTH=2;
10450   MINBOUND=-32767;
10500   MAXBOUND=+32767;
10550   INTWIDTH=5;
10600   REALWIDTH=16; (*NEEDS ATTENTION*)
10650   EXPWIDTH=3;
10700   INTSPACE=6;   (*INTWIDTH+1*)
10750   REALSPACE=23;  (*REALWIDTH+EXPWIDTH+4*)
10800   COMPLSPACE=48; (*2*REALWIDTH+2*EXPWIDTH+10*)
10850   MAXINT = 32767;
10860   HIOFFSET=32511;
10900 ()+12*)
10950 (*+13()
11000   BITSWIDTH = 32 ;
11050   BYTESWIDTH = 4 ;
11100   MINBOUND = -2147483647 ;
11150   MAXBOUND = +2147483647 ;
11200   INTWIDTH = 10 ;
11250   REALWIDTH = 16 ;
11300   EXPWIDTH = 3 ;
11350   INTSPACE = 11 ;
11400   REALSPACE = 23 ;
11450   COMPLSPACE = 48 ;
11500   MAXINT = 2147483647;
11505   HIOFFSET=2147483391;
11510   (*+05() FAKEPI = 1073291771 ; FAKEPI1 = 1413754136 ; ()+05*)
11550 ()+13*)
11600 (*+01()
11650   INTUNDEF=60000000000200400000B;
11700   MINREALEXP = -294 ;
11750   MAXREALEXP = 324 ;
11800   TRUEVAL = -1;
11850 ()+01*)
11860 (*+02() MINREALEXP = -10000 ; MAXREALEXP = 10000; TRUEVAL=1; LONGUNDEF=0.0;()+02*)
11865 (* INTUNDEF IS A VARIABLE IN THE 02 MACHINE (-32768) *)
11900 (*+03() INTUNDEF=100000B; ()+03*)
11950 (*+05()
12000   INTUNDEF= - 2147483647 - 1 ;
12050   LONGUNDEF = 0.0 ;
12100   MINREALEXP = -10000 ;
12150   MAXREALEXP = 10000 ;
12200   TRUEVAL=1;
12250 ()+05*)
12300 (**)
12350        (**************************************)
12400        (* ERROR NUMBERS (PROBABLY TEMPORARY) *)
12450        (**************************************)
12500 (**)
12550   RASSIG=1;
12600   RSEL=2;
12650   RDEREF=3;
12700   RASSIGNIL=4;
12750   RSELNIL=5;
12800   RDEREFNIL=6;
12850   IDREL=7;
12900   RPOWNEG=8;
12950   RBYTESPACK=9;
13000   RCLOWER=13; RCUPPER=14; RLWUPB=15;
13050   RSL1ERROR=16; RSL2ERROR=17; RSLICE=18; RSLICENIL=19;
13100   RMULASS=20; RROUTIN=21;
13150   RCHARERROR=22;
13200   RSCOPE=23;      (*THE COMPASS FOR TASSTPT KNOWS THIS*)
13250   RARG=24;
13300   RDUMMY=25;
13350   BADIDF=32;
13400   NOWRITE=33; NOESTAB=34; POSMIN=35; POSMAX=36;
13450   NOTOPEN=38; NOREAD=39; NOSET=40;
13500   NORESET=41; NOSHIFT=43; NOBIN=44;
13550   NOALTER=45; NOMOOD=46;  WRONGMULT=47;
13600   NODIGIT=49;NOLOGICAL=50;
13650   NOPHYSICAL=51; WRONGCHAR=52; WRONGVAL=53; SMALLLINE=56;
13700 (**)
13750        (*******************)
13800        (* VARIOUS OFFSETS *)
13850        (*******************)
13900 (**)
13950 (*+01()
14000   FIRSTIBOFFSET=531B; (*OFFSET OF GLOBAL VARIABLE FIRSTIB*)
14050   INPUTEFET=264B; (*OFFSET OF FETROOM FOR INPUT*)
14100   OUTPUTEFET=23B; (*OFFSET OF FETROOM FOR OUTPUT*)
14150 ()+01*)
14200 (*+03()
14250 (*THESE NEED ATTENTION ------------------------------------------------*)
14300   FIRSTIBOFFSET=531B; (*OFFSET OF GLOBAL VARIABLE FIRSTIB*)
14350   INPUTEFET=264B; (*OFFSET OF FETROOM FOR INPUT*)
14400   OUTPUTEFET=23B; (*OFFSET OF FETROOM FOR OUTPUT*)
14450 ()+03*)
14500 (*+05()
14550   (* THESE NEED ATTENTION ----------------------------------------------*)
14600   FIRSTIBOFFSET = 0 ; (* OFFSET OF GLOBAL VARIABLE FIRSTIB *)
14750 ()+05*)
14800 (*-05() (*-02() MAXSIZE=110B; (*MAXIMUM SIZE OF NONSTOWED OBJECT - MUST BE < 1ST PROGRAM ADDRESS*) ()-02*) ()-05*)
14810 (*+02() MAXSIZE = 16; (* MAXIMUM SIZE OF NONSTOWED OBJECT - MUST BE < FIRST DATA ADDRESS *) ()+02*)
14850 (*+05() MAXSIZE = 8 ; (* MAXIMUM SIZE OF NONSTOWED OBJECT - MUST BE < FIRST DATA ADDRESS *) ()+05*)
14900 (*+11()
14950   RECOFFSET=0;  (*OFFSET OF RECGEN WITHIN RANGEBLOCK*)
15000   (*-41()
15050   IBCONST = 10;
15100   RGCONST = 4 ;
15150   ()-41*)
15200 ()+11*)
15250 (*+12() (*-02()
15300   RECOFFSET=2;  (*OFFSET OF RECGEN WITHIN RANGEBLOCK*)
15350   (*-41()
15400   IBCONST = 18;
15450   RGCONST = 6 ;
15500   ()-41*) ()-02*)
15505 (*+02() (*+19()
15510   RECOFFSET=6; (*OFFSET OF RECGEN WITHIN A RANGEBLOCK*)
15515   (*+41()
15520   IBCONST = -12;
15525   RGCONST = -20;
15527   ()+41*)
15529   (*-41()   (*EDUCATED GUESSES*)
15530   IBCONST = 12;
15533   RGCONST = 20;
15535   ()-41*) ()+19*)
15537 (*-19()   (*LESS EDUCATED GUESSES*)
15539   RECOFFSET=4;
15541   (*+41()
15542   IBCONST = -8;
15543   RGCONST = -12;
15544   ()+41*)
15546   (*-41()
15547   IBCONST = 8;
15548   RGCONST = 12;
15549   ()-41*) ()-19*)
15550 ()+02*)
15560 ()+12*)
15600 (*+13()
15700   (*-41()
15750   IBCONST = 20 ;
15800   RGCONST = 24 ;
15850   ()-41*)
15900   (*+41()
15901   (*+05()
15650   RECOFFSET = 4 ;  (* OFFSET OF RECGEN WITHIN RANGEBLOCK *)
15950   IBCONST = -12 ;
16000   RGCONST = -12 ;
16001   ()+05*)
16002   (*-05()
16003   RECOFFSET = 8;
16005   IBCONST=-20;
16006   RGCONST=-24;
16007   ()-05*)
16050   ()+41*)
16100 ()+13*)
16150   (*+01() PARAMOFFSET = 0 ; DLOFFSET = +1 ; ()+01*)
16160   (*+02() PARAMOFFSET = (*+12() -14 ()+12*) (*+13() -16 ()+13*);
16170           DLOFFSET = (*+12() (*+19() -8 ()+19*) (*-19() -4 ()-19*) ()+12*) (*+13() -8 ()+13*) ; ()+02*)
16200   (*+05() PARAMOFFSET = -12 ; DLOFFSET = -6 ; ()+05*)
16250 (**)
16300     (**********************)
16350     (* TRANSPUT CONSTANTS *)
16400     (**********************)
16450 (*+01()
16500  FORREAD = 123B ; FORWRITE = 123B ; ONLINE = 10B ;
16550 ()+01*)
16560 (*+02()
16570  FORREAD = 1 ; FORWRITE = 2 ; ONLINE = 0 ;
16580  DATAINBUF = 4 ; EOLINTEXTFIL = 8 ; EXTERNFIL = 32 ; STATICNAME = 64 ;
16590 ()+02*)
16600 (*+05()
16650  FORREAD = 1 ; FORWRITE = 2 ; ONLINE = 0 ;
16700  DATAINBUF = 4 ; EOLINTEXTFIL = 8 ; EXTERNFIL = 32 ; STATICNAME = 64 ;
16750 ()+05*)
16800 (**)
16850 TYPE (* TYPE    TYPE    TYPE    TYPE    TYPE    TYPE    TYPE    TYPE *)
16900 (**)
16950   SEVERAL = 0..10;
17000   (*-01() ALFA = PACKED ARRAY [ 1..10 ] OF CHAR ; ()-01*)
17050 (**)
17100   ACCURATEPI = RECORD
17150     CASE SEVERAL OF
17160 (*-01() (*-05() 0: (); ()-05*) ()-01*)
17200 (*+01() 0: (FAKEPI:INTEGER); ()+01*)
17210 (*+05() 0: ( FAKEPI, FAKEPI1: INTEGER ) ; ()+05*)
17250         1: (ACTUALPI:REAL);
17260         2,3,4,5,6,7,8,9,10: ();
17300     END;
17350 (**)
17400        (******************)
17450        (* ALGOL 68 MODES *)
17500        (******************)
17550 (*+01() A68INT=INTEGER; A68LONG = RECORD V1: INTEGER; V2: INTEGER END; ()+01*)
17600 (*+02()
17650 (*+12() A68INT=INTEGER; A68LONG=REAL; ()+12*)
17655 (*+13() A68INT=INTEGER; A68LONG=REAL; ()+13*)
17700 ()+02*)
17750 (*+03() A68INT=INTEGER; A68LONG=REAL; ()+03*)
17800 (*+04() A68INT=LONG;    A68LONG=LONG; ()+04*)
17850 (*+05() A68INT = INTEGER ; A68LONG = REAL ; ()+05*)
17900 (**)
17950 (*+01() ASPROC = INTEGER; (*SCALAR TYPE TO ENCOMPASS A PASCAL PROCEDURE PARAMETER*) ()+01*)
18000 (*+02() (*+12() (*-19() ASPROC = LONG; ()-19*)
18005                 (*+19() ASPROC = REAL; ()+19*) ()+12*)
18010         (*+13() ASPROC = REAL; ()+13*) ()+02*)
18050 (*+03() ASPROC = INTEGER; ()+03*)
18100 (*+04() ASPROC = INTEGER; ()+04*)
18150 (*+05() ASPROC = REAL   ; ()+05*)
18200 (**)
18250        (**************************************)
18300        (* SIZE OF FIELDS IN OBJECTS          *)
18350        (**************************************)
18400 (**)
18450 (*+11()
18500   PCOUNTRANGE=0..8191;
18550   CCOUNTRANGE=0..4095;
18600   OFFSETRANGE=-4095..4095;
18650   SIZERANGE=0..4095;
18700   DEPTHRANGE=0..4095;
18750   ELSRANGE=0..377777B;
18800   OFFSETPCOUNT=0..33554431;
18850   CHAN=0..377777B;
18900   BYTE=0..63;
18950 ()+11*)
19000 (*+12() (*+03()
19050   PCOUNTRANGE=0..2047;
19100   CCOUNTRANGE=0..511;
19150   OFFSETRANGE=-255..255;
19200   SIZERANGE=0..511;
19250   DEPTHRANGE=0..127;
19300   ELSRANGE=INTEGER;
19350   OFFSETPCOUNT=INTEGER;
19400   CHAN=ASPROC; (*MUST BE A GOOD IMITATION OF A PROCEDURE*)
19440   BYTE=0..255;
19450 ()+03*)
19460 (*+02()
19465   PCOUNTRANGE=0..2047;
19467   CCOUNTRANGE=0..511;
19469   OFFSETRANGE=INTEGER;
19471   SIZERANGE=0..511;
19475   DEPTHRANGE=0..255;
19477   ELSRANGE=INTEGER;
19479   OFFSETPCOUNT=INTEGER;
19481   CHAN=ASPROC; (*MUST BE A GOOD IMITATION OF A PROCEDURE*)
19483   BYTE=0..255;
19499 ()+02*)
19500 ()+12*)
19550 (*+13()
19600   PCOUNTRANGE = 0..32767 ;
19650   CCOUNTRANGE = 0..32767 ;
19700   OFFSETRANGE =-127..127;
19750   SIZERANGE   = 0..255;
19800   DEPTHRANGE = 0..255 ;
19850   ELSRANGE = INTEGER ;
19900   OFFSETPCOUNT = INTEGER ;
19950   CHAN = ASPROC ;  (* MUST BE A GOOD IMITATION OF A PROCEDURE *)
20000   BYTE = 0..255 ;
20050 ()+13*)
20100   BOUNDSRANGE=MINBOUND..MAXBOUND;
20150   VECCHARS = PACKED ARRAY [1..1000] OF CHAR ;
20200 (**)
20250        (**********************)
20300        (*      POINTERS      *)
20350        (**********************)
20400 (**)
20445      (*FOR MANIPULATING INVOCATION BLOCK POINTERS*)
20450   IPOINT = (*+12() (*-19()INTEGER()-19*) (*+19()LONG()+19*)  ()+12*) (*+13() INTEGER ()+13*) ;
20500   PROCPOINT = ^PROCBLOCK;
20550   DPOINT = ^DEEBLOCK;
20600   UNDRESSP = ^UNDRESS;
20650   OBJECTP = ^OBJECT;
20700   OBJECTPP = ^OBJECTP;
20750   INTPOINT = ^INTEGER;
20800   CHARPOINT = ^CHAR;
20850 (**)
20900        (**********************)
20950        (*      TRANSPUT      *)
21000        (**********************)
21050 (**)
21100 (*+05()
21150   CFILE = PACKED RECORD
21200     PTR : ^ CHAR ;
21250     CNT : INTEGER ;
21300     BASE : ^ CHAR ;
21350     FLAG : 0..32767 ;
21400     FILEDES : BYTE
21450   END ;
21460   PCFILE = ^CFILE;
21500 ()+05*)
21550 (**)
21600   STATUSFIELD=(OPENED, LINEOVERFLOW, PAGEOVERFLOW, PFE, LFE, NOTINITIALIZED, NOTRESET,
21650                READMOOD, WRITEMOOD, CHARMOOD, BINMOOD, LAZY, NOTSET, CARRIAGE, STARTUP);
21700   POSSFIELD=(RESETPOSS, SETPOSS, GETPOSS, PUTPOSS, BINPOSS, ESTABPOSS, ASSPOSS);
21750   FETROOM = PACKED RECORD (*THE OBJECT CREATED BY THE PASCAL SYSTEM FOR A PASCAL FILE*)
21800 (*+01()
21850     LINECOUNTER: INTEGER;
21900     CHARBUFFER: ARRAY [1..10] OF INTEGER;
21950     SENTINEL: INTEGER;
22000     BUFELPTR: INTEGER;
22050     EOFB: 0..3B; DISP: 0..177B; RMSTUFF: 0..77777777777B; LRL: 0..777777B;
22100 (*-52()
22150     LFN: PACKED ARRAY [1..7] OF CHAR; STATUS: 0..777B;
22200     DT: PACKED ARRAY [1..2] OF CHAR; FILL1: 0..17777777777B; FIRST: ^INTEGER;
22250     FILL2: 0..177777777777777B; INN: ^INTEGER;
22300     FILL3: 0..177777777777777B; OUT: ^INTEGER;
22350     FILL4: 0..177777777777777B; LIMIT: ^INTEGER;
22400     RESTOFFET: ARRAY [1..13] OF INTEGER;
22450 ()-52*)
22500 (*+52()
22550     FILL1: 0..37B; BUFLGT: 0..1777777B; BUFADR: 0..777777B; BUFEND: 0..777777B;
22600     OUT: INTEGER;
22650     LFN: PACKED ARRAY [1..7] OF CHAR; STATUS: 0..777B;
22700     RESTOFFIT: ARRAY [1..15] OF INTEGER;
22750 ()+52*)
22800     BUFFER: ARRAY [0..128] OF INTEGER;
22850 ()+01*)
22855 (*+02()
22860     PTR: ^CHAR;     (* THE POINTER F^ ,POINTS INTO BUFADR *)
22862     FLAGS: INTEGER; (* VARIOUS FLAGS USED BY PC RUNTIME SYSTEM *)
22864     FNAME: ^CHAR;   (* THE FILE NAME, SHOULD REALLY BE STRING *)
22866     UFD: INTEGER;   (* UNIX FILE DESCRIPTOR *)
22868     SIZE: INTEGER;  (* THE ELEMENT SIZE *)
22870     COUNT: INTEGER; (* NUMBER OF BYTES LEFT IN BUFFER *)
22872     BUFLEN: INTEGER;(* EFFECTIVE LENGTH OF BUFFER *)
22874     BUFADR: PACKED ARRAY [1..512] OF CHAR; (* THE I/O BUFFER *)
22876     (* THE LAST LINE PRESUMES ONLY FILE OF CHAR ALLOWED IN ALGOL68S *)
22878     (* THUS SIZE WILL ALWAYS BE 1, THESE NEED CHANGING IF THIS IS NOT TRUE *)
22880 ()+02*)
22900 (*+03()
22950     FILENUMBER: INTEGER;
23000     EOFFLAG: INTEGER;
23050     BUFFERSIZE: INTEGER;
23100     BLOCKNUMBER: INTEGER;
23150     BLOCKSLEFT: INTEGER;
23200     FILESTATUS: INTEGER;
23250     EOLFLAG: INTEGER;
23300     CURRBYTE: INTEGER;
23350     CURRLIMIT: INTEGER;
23400     PASBUFVAR: INTEGER;
23450     BUFFER: ARRAY [0..255] OF INTEGER;
23500 ()+03*)
23550 (*+05()
23600     XOBJ: CHARPOINT ;
23650     XFILE: PCFILE ;
23700     XFLAG: INTEGER ;
23750     XOBJSIZE: INTEGER ;
23800     XBUF: CHAR ;
23850 ()+05*)
23900   END ;
23950   FETROOMP=^FETROOM;
24000   STATUSSET=SET OF STATUSFIELD;
24050   POSSSET=SET OF POSSFIELD;
24100 (*+01() LFNTYPE = ALFA ; ()+01*)
24150 (*-01() LFNTYPE = OBJECTP ; (* ACTUALLY A STRING *) ()-01*)
24200 (*-01() TERMSET=SET OF CHAR; ()-01*)
24250 (*+01() TERMSET=SET OF ':'..'<'; ()+01*)
24300 (*-01() FYL = TEXT; ()-01*)
24350 (*+01() FYL = SEGMENTED FILE OF CHAR; ()+01*)
24400   INTSTR = PACKED ARRAY [1..INTSPACE] OF CHAR;
24450   REASTR = PACKED ARRAY [1..REALSPACE] OF CHAR;
24500   CMPXSTR= PACKED ARRAY [1..COMPLSPACE] OF CHAR;
24550   GETBUFTYPE=PACKED ARRAY [0..199] OF CHAR; (*FOR INPUTTING STRINGS - SEE GETT*)
24600   MINT = (*+01()INTEGER()+01*) (*+02()REAL()+02*) (*+05()REAL()+05*) ;
24650          (*A MODE WHOSE VALUES ARE THE NON-NEGATIVE INTEGERS UP TO 10*POWOF2.
24700            THE OPERATIONS OF ADDITION, SUBTRACTION, AND MULTIPLICATION BY
24750            10 AND BY INTEGRAL POWERS OF 2 ARE ASSUMED TO WORK*)
24800 (**)
24850        (**********************)
24900        (*       SORTS        *)
24950        (**********************)
25000 (**)
25050   STRUCTYPE=(
25100       STRING,   (*MUST BE FIRST BECAUSE THE COMPILER KNOWS ABOUT IT*)
25150       ROUTINE,  (*THE COMPASS CODE FOR CALL KNOWS ABOUT THIS*)
25200       REFSLN,   (*THE COMPASS CODE FOR TRIMS KNOWS ABOUT THIS*)
25250       REFN,     (*THE COMPASS FOR NASSTPT KNOWS ABOUT THIS *)
25300       RECN,
25400       REF1,
25450       REF2,
25500       CREF,
25550       STRUCT,
25600       IELS,
25650       MULT,
25700       REFSL1,
25750       REFR,
25800       RECR,
25850       UNDEF,
25900       NILL,
25950       PASCROUT,
26000       AFILE,
26050       COVER);
26100 (**)
26150                 (*********************************)
26200                 (*   THE THING                   *)
26250                 (*********************************)
26300 (**)
26350   PDS = PACKED RECORD
26400     UI, LI: BOUNDSRANGE;
26450 (*+01() FILL: 0..3B; ()+01*)
26500     DI: SIZERANGE
26550     END;
26600 (**)
26650   UNDRESS = RECORD
26700     CASE SEVERAL OF
26750     0: (FIRSTPTR: OBJECTP; FILL0: INTEGER);
26800     1: (FIRSTWORD: INTEGER);
26850     2: (FIRSTINT: A68INT);
26900     3: (FIRSTLONG: A68LONG);
26950     4: (FIRSTREAL: REAL);
27000     5: (FIRSTTERMSET: TERMSET) ;
27050     6 , 7 , 8 , 9 , 10 : () ;
27100     END;
27150 (**)
27200 (*+11()
27250   OBJECT = PACKED RECORD
27300     CASE SEVERAL OF
27350     0: (FIRSTPTR: OBJECTP; FILL0: INTEGER);
27400     1: (FIRSTWORD: INTEGER;
27410         SECONDWORD: INTEGER);
27450     2: (PCOUNT: PCOUNTRANGE;
27500         CASE SORT: STRUCTYPE OF
27550         STRUCT:
27650         ( OSCOPE: DEPTHRANGE;
27700           LENGTH: SIZERANGE;
27725           DBLOCK: DPOINT;
27750           RE: REAL;
27800           IM: REAL);
27850         MULT:
27950          (OSCOPEM: DEPTHRANGE;
28000           FILLM1: SIZERANGE;
28025           PVALUE: OBJECTP;
28037           IHEAD: OBJECTP;         (*1*)
28040           FILLM5: 0..1;
28050           FILLM2: ELSRANGE;
28150           FILLM3:OBJECTP;
28200           FILLM4: OBJECTP;          (*2*)
28250           BPTR: OBJECTP;
28300           FPTR: OBJECTP; (*AT BOTTOM OF WORD TO MATCH RECEGN*)
28350           LBADJ: BOUNDSRANGE;   (*3*) (*(DIST FROM EL[0,...,0] TO 1ST REAL EL) - ELSCONST*)
28400           MDBLOCK: DPOINT;
28450           SIZE: DEPTHRANGE;
28500           ROWS: 0..7;
28550           DESCVEC: ARRAY [0..7] OF PDS); (*4*)
28600         IELS:
28700          (OSCOPEE: DEPTHRANGE;
28750           CCOUNT: CCOUNTRANGE;
28775           DBLOCKE: DPOINT;
28850           IHEADE: OBJECTP;    (*1*)
28860           FILLE2: 0..1;
28900           D0: ELSRANGE;
28925           FILLE1: OBJECTP  (*BOTTOM OF 1*) );
28950         ROUTINE:
29050          (OSCOPER: DEPTHRANGE;
29100           FILLR: SIZERANGE;
29125           PROCBL: PROCPOINT;
29150           ENVCHAIN: IPOINT;    (*1*)
29200           FILLR1: INTEGER      (*2*) );
29250         PASCROUT:
29350         ( OSCOPEP: DEPTHRANGE;
29400           PPARAMS: SIZERANGE ;
29405           FILLPR: OBJECTP ;
29410           PPROCBL: ASPROC  (*1*) );
29450         REF1:
29550         ( OSCOPERF1: DEPTHRANGE;
29600           FILLRF11: SIZERANGE;
29605           PVALUEF1: DPOINT;
29610           FILLRF12: OBJECTP;  (*1*)
29615           FILLRF13: 0..1;
29620           OFFSETRF1: ELSRANGE;
29630           ANCESTORF1: OBJECTP;
29650           VALUE: A68INT       (*2*) );
29700         REF2:
29800         ( OSCOPERF2: DEPTHRANGE;
29850           FILLRF21: SIZERANGE;
29855           PVALUEF2: DPOINT;
29860           FILLRF22: OBJECTP;    (*1*)
29865           FILLRF23: 0..1;
29870           OFFSETRF2: ELSRANGE;
29880           ANCESTORF2: OBJECTP;
29900           LONGVALUE: A68LONG ); (*2*)
29950         REFN:
30050          (OSCOPEFN: DEPTHRANGE;
30100           FILLFN: SIZERANGE;
30125           PVALUEFN: OBJECTP;
30130           FILLFN1:OBJECTP;   (*1*)
30132           FILLFN2: 0..1;
30135           OFFSETFN:ELSRANGE;
30140           ANCESTORFN:OBJECTP);
30150         CREF:
30250          (OSCOPECF: DEPTHRANGE;
30300           FILLCREF: SIZERANGE ;
30325           PVALUECF : DPOINT ;
30330           IPTR :UNDRESSP;   (*1*)
30332           FILLCF1: 0..1;
30335           OFFSETCF:ELSRANGE;
30350           ANCESTORCF: OBJECTP ) ;
30400         REFR:
30500         ( OSCOPERR: DEPTHRANGE;
30550           CCOUNTR: CCOUNTRANGE;
30575           PVALUERR: OBJECTP;
30650           FILLRR0: OBJECTP;      (*1*)
30660           FILLRR4: 0..1;
30700           FILLRR1: ELSRANGE;
30705           ANCESTOR: OBJECTP;
30710           FILLRR2: OBJECTP;      (*2*)
30750           FILLRR3: OBJECTP;
30760           LBADJRR: BOUNDSRANGE;    (*3*)
30768           MDBLOCKRR: DPOINT;
30776           SIZERR: DEPTHRANGE;
30784           ROWSNRR:0..7;
30792           DESCVECRR:ARRAY [0..7] OF PDS); (*4*)
30800         REFSL1:
30900          (OSCOPEL: DEPTHRANGE;
30950           CCOUNTL: CCOUNTRANGE;
30975           DBLOCKL: DPOINT;
31050           FILLL2: OBJECTP;   (*1*)
31060           FILLL1: 0..1;
31100           OFFSET: ELSRANGE;
31125           ANCSTRL: OBJECTP;
31150           FILLL3: INTEGER    (*2*) );
31200         REFSLN:
31300          (OSCOPEN: DEPTHRANGE;
31350           CCOUNTN: CCOUNTRANGE;
31375           FILLN4: OBJECTP;
31450           FILLN: OBJECTP;         (*1*)
31460           FILLN5: 0..1;
31500           FILLN0: ELSRANGE;
31525           ANCSTRN: OBJECTP;
31550           FILLN1: OBJECTP;        (*2*)
31600           FILLN2: OBJECTP;
31650           FILLN3: OBJECTP;
31700           LBADJN: BOUNDSRANGE;    (*3*)
31750           MDBLOCKN: DPOINT;
31800           SIZEN: DEPTHRANGE;
31850           ROWSN: 0..7;
31900           DESCVECN: ARRAY [0..7] OF PDS); (*4*)
32300         RECR:
32400         ( OSCOPECR: DEPTHRANGE;
32450           CCOUNTCR: CCOUNTRANGE;
32475           PVALUECR: OBJECTP;
32550           FILLCR0: OBJECTP;    (*1*)
32560           FILLCR3: 0..1;
32600           FILLCR1: ELSRANGE;
32625           ANCSTRCR: OBJECTP;
32650           FILLCR2: OBJECTP;    (*2*)
32700           PREV: OBJECTP;
32750           NEXT: OBJECTP;
32800           LBADJCR: BOUNDSRANGE;    (*3*)
32810           MDBLOCKCR: DPOINT;
32820           SIZECR: DEPTHRANGE;
32830           ROWSNCR:0..7;
32840           DESCVECCR:ARRAY [0..7] OF PDS); (*4*)
32850         RECN:
32950         ( OSCOPECN: DEPTHRANGE;
33000           FILLCN: SIZERANGE;
33025           PVALUECN :OBJECTP;
33050           FILLCN1: OBJECTP;  (*1*)
33070           FILLCN4: 0..1;
33080           OFFSETCN:ELSRANGE;
33090           ANCESTORCN:OBJECTP;
33100           FILLCN2: OBJECTP;  (*2*)
33150           PREVCN: OBJECTP;
33200           NEXTCN: OBJECTP;
33250           FILLCN3: INTEGER);  (*3*)
33300         STRING:
33400         ( FILLST1: DEPTHRANGE;
33450           STRLENGTH: SIZERANGE;
33475           FILLST: DPOINT;
33500           CHARVEC: VECCHARS (*1*) );
33550         UNDEF, NILL:
33650         ( OSCOPEUN: DEPTHRANGE;
33700           STRLNGUN: SIZERANGE;
33705           PVALUEUN: OBJECTP;
33710           FILLUN1: OBJECTP;     (*1*)
33715           FILLUN2: 0..1;
33725           OFFSETUN: ELSRANGE;
33750           ANCESTORUN: OBJECTP;
33800           FILLUN3: OBJECTP;     (*2*)
33850           FILLUN4: OBJECTP;
33860           FILLUN5: OBJECTP;
33870           FILLUN6: BOUNDSRANGE; (*3*)
33880           FILLUN7: DPOINT;
33890           FILLUN8: DEPTHRANGE;
33895           ROWSUN: 0..7;
33900           DESCVECUN: ARRAY [0..7] OF PDS); (*4*)
33950         AFILE: (*ACTUALLY, AFILES WILL BE STORED AS STRUCTS, BUT THESE FIELD SELECTORS SHOULD WORK*)
34050         ( OSCOPEF: DEPTHRANGE;
34100           LENGTHF: SIZERANGE;
34125           DBLOCKF: DPOINT;
34150           FILLF1: 0..77777777777777B; (*1*)
34200           LOGICALFILEMENDED: OBJECTP;
34250           FILLF2: 0..77777777777777B; (*2*)
34300           PHYSICALFILEMENDED: OBJECTP;
34350           FILLF3: 0..77777777777777B; (*3*)
34400           PAGEMENDED: OBJECTP;
34450           FILLF4: 0..77777777777777B; (*4*)
34500           LINEMENDED: OBJECTP;
34550           FILLF5: 0..77777777777777B; (*5*)
34600           PCOVER: OBJECTP;
34650           TERM: TERMSET; (*6*)
34700           TERM1: TERMSET); (*7*)
34750         COVER:
34850         ( OSCOPEV: DEPTHRANGE;
34900           FILLV: SIZERANGE;
34925           CHANNEL: CHAN;
34950           STATUS: STATUSSET;
35000           POSSIBLES: POSSSET;
35050           COFCPOS, LOFCPOS, POFCPOS: INTEGER;
35100           CHARBOUND, LINEBOUND, PAGEBOUND: INTEGER;
35150           DOPUTS,DOGETS,DONEWLINE,DONEWPAGE,DOSET,DORESET: ASPROC;
35200           CASE ASSOC: BOOLEAN OF
35250           FALSE:  (FILLC: 0..77777777777777B;
35300                    BOOK:FETROOMP);
35350            TRUE:  (ASSREF:OBJECTP;
35400                    CPOSELS:ELSRANGE;
35450                    OFFSETDI:SIZERANGE));
35500     );
35550     3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 : () ;
35600       END;
35650 ()+11*)
35700 (*+12()
35720 (*+03()
35750   OBJECT = PACKED RECORD
35800     CASE SEVERAL OF
35850     0: (FIRSTPTR: OBJECTP; FILL0: INTEGER);
35900     1: (FIRSTWORD: INTEGER);
35950     2: (PCOUNT: PCOUNTRANGE;
36000         SORT: STRUCTYPE;
36050         CASE STRUCTYPE OF
36100         STRUCT:
36150          (OSCOPE: DEPTHRANGE;
36200           LENGTH: SIZERANGE;
36250           DBLOCK: DPOINT;
36300           RE: REAL;
36350           IM: REAL);
36400         MULT:
36450          (SCOPEM: DEPTHRANGE;
36500           FILLM1: CCOUNTRANGE;
36550           PVALUEM: OBJECTP;
36600           D0: ELSRANGE;
36650           ELS: OBJECTP;
36700           IHEAD: OBJECTP;
36750           BPTR: OBJECTP;
36800           FPTR: OBJECTP;
36850           LBADJ: BOUNDSRANGE;    (*(DIST FROM EL[0,...,0] TO 1ST REAL EL) - ELSCONST*)
36900           MDBLOCK: DPOINT;
36950           SIZE: SIZERANGE;
37000           ROWS: 0..7;
37050           DESCVEC: ARRAY [0..7] OF PDS);
37100         IELS:
37150          (OSCOPEE: DEPTHRANGE;
37200           CCOUNT: CCOUNTRANGE;
37250           DBLOCKE: DPOINT;
37300           FILLE2: OBJECTP;
37350           D0E: ELSRANGE; );
37400         ROUTINE:
37450          (SCOPER: DEPTHRANGE;
37500           FILLR: SIZERANGE;
37550           PROCBL: PROCPOINT;
37600           ENVCHAIN: IPOINT);
37650         PASCROUT:
37700          (SCOPEP: DEPTHRANGE;
37750           PPARAMS: SIZERANGE;
37800           PPROCBL: ASPROC );
37850         REF1:
37900          (SCOPERF1: DEPTHRANGE;
37950           FILLRF11: SIZERANGE;
37955           PVALUERF1: OBJECTP;
37957           FILLRF12: ELSRANGE;
37960           ANCESTRF1: OBJECTP;
38000           VALUE: A68INT);
38050         REF2:
38100          (SCOPERF2: DEPTHRANGE;
38150           FILLRF21: SIZERANGE;
38160           PVALUERF2: OBJECTP;
38170           FILLRF22: ELSRANGE;
38180           ANCESTRF2: OBJECTP;
38200           LONGVALUE: A68LONG);
38250         REFN:
38300          (SCOPEFN: DEPTHRANGE;
38350           FILLFN: SIZERANGE;
38400           PVALUE: OBJECTP;
38410           OFFSETFN: ELSRANGE;
38420           ANCESTFN: OBJECTP);
38450         CREF:
38500          (SCOPEC: DEPTHRANGE;
38550           FILLCREF: SIZERANGE;
38600           PVALUEC : OBJECTP ;
38605           FILLC2: ELSRANGE;
38610           ANCESTCREF: OBJECTP ;
38650           IPTR: UNDRESSP);
38700         REFR:
38750          (SCOPERR: DEPTHRANGE;
38800           CCOUNTR: CCOUNTRANGE;
38850           PVALUER: OBJECTP;
38900           FILLRR1: ELSRANGE;
38950           ANCESTOR: OBJECTP;
39000           FILLRR2: OBJECTP;
39005           FILLRR3: OBJECTP;
39010           FILLRR4: OBJECTP;
39015           LBADJR: BOUNDSRANGE;
39020           MDBLOCKR: DPOINT;
39025           SIZER: SIZERANGE;
39030           ROWSR: 0..7;
39035           DESCVECR: ARRAY [0..7] OF PDS);
39050         REFSL1:
39100          (SCOPEL: DEPTHRANGE;
39150           CCOUNTL: CCOUNTRANGE;
39200           DBLOCKL: DPOINT;
39250           OFFSET: ELSRANGE;
39300           ANCSTRL: OBJECTP);
39400         REFSLN:
39450          (SCOPEN: DEPTHRANGE;
39500           CCOUNTN: CCOUNTRANGE;
39550           FILLN0: OBJECTP;
39600           FILLN1: ELSRANGE;
39650           ANCSTRN: OBJECTP;
39700           FILLN15: OBJECTP;
39750           FILLN2: OBJECTP;
39800           FILLN3: OBJECTP;
39850           LBADJN: BOUNDSRANGE;
39900           MDBLOCKN: DPOINT;
39950           SIZEN: SIZERANGE;
40000           ROWSN: 0..7;
40050           DESCVECN: ARRAY [0..7] OF PDS);
40400         RECR:
40450          (SCOPECR: DEPTHRANGE;
40500           CCOUNTCR: CCOUNTRANGE;
40550           PVALUECR: OBJECTP;
40600           FILLCR1: ELSRANGE;
40650           ANCSTRCR: OBJECTP;
40700           FILLCR2: OBJECTP;
40750           PREV: OBJECTP;
40800           NEXT: OBJECTP;
40810           LBADJCR: BOUNDSRANGE;
40820           MDBLOCKCR: DPOINT;
40830           SIZECR: SIZERANGE;
40840           ROWSCR: 0..7;
40845           DESCVECCR: ARRAY [0..7] OF PDS);
40850         RECN:
40900          (SCOPECN: DEPTHRANGE;
40950           FILLCN: SIZERANGE;
41000           PVALUECN :OBJECTP;
41050           OFFSETCN: ELSRANGE;
41100           ANCESTCN: OBJECTP;
41150           FILLCN3: OBJECTP;
41200           PREVCN: OBJECTP;
41250           NEXTCN: OBJECTP);
41300         STRING:
41350          (FILLST1: DEPTHRANGE;
41400           STRLENGTH: ELSRANGE;
41550           CHARVEC: VECCHARS);
41600         UNDEF, NILL:
41650          (SCOPEUN: DEPTHRANGE;
41700           STRLNGUN: ELSRANGE;
41750           PVALUEUN: OBJECTP;
41800           OFFSETUN: ELSRANGE;
41810           ANCESTUN: OBJECTP;
41850           FILLUN1: OBJECTP;
41860           FILLUN2: OBJECTP;
41870           FILLUN3:OBJECTP;
41880           FILLUN4: BOUNDRANGE;
41885           FILLUN5: DPOINT;
41890           FILLUN6: SIZERANGE;
41895           ROWSUN: 0..7;
41900           DESCVECUN: ARRAY [0..7] OF PDS);
41950         AFILE: (*ACTUALLY, AFILES WILL BE STORED AS STRUCTS, BUT THESE FIELD SELECTORS SHOULD WORK*)
42000          (SCOPEF: DEPTHRANGE;
42050           LENGTHF: SIZERANGE;
42100           DBLOCKF: DPOINT;
42150           LOGICALFILEMENDED: OBJECTP;
42200           PHYSICALFILEMENDED: OBJECTP;
42250           PAGEMENDED: OBJECTP;
42300           LINEMENDED: OBJECTP;
42350           PCOVER: OBJECTP;
42400           TERM: TERMSET);
42450         COVER:
42500          (SCOPEV: DEPTHRANGE;
42550           FILLV: SIZERANGE;
42600           CHANNEL: CHAN;
42650           STATUS: STATUSSET;
42700           POSSIBLES: POSSSET;
42750           COFCPOS, LOFCPOS, POFCPOS: INTEGER;
42800           CHARBOUND, LINEBOUND, PAGEBOUND: INTEGER;
42850           DOPUTS,DOGETS,DONEWLINE,DONEWPAGE,DOSET,DORESET: ASPROC;
42900           CASE ASSOC: BOOLEAN OF
42950           FALSE:  (FILLC: SIZERANGE;
42955                    BOOK:FETROOMP);
42960            TRUE:  (OFFSETDI:SIZERANGE;
42965                    ASSREF:OBJECTP;
42970                    CPOSELS:ELSRANGE) );
42975     );
42980     3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 : () ;
42985       END;
42990 ()+03*)
43000 (*+02()
43002   OBJECT = PACKED RECORD
43004     CASE SEVERAL OF
43006     0: (FIRSTPTR: OBJECTP; FILL0: INTEGER);
43008     1: (FIRSTWORD: INTEGER);
43010     2: (PCOUNT: PCOUNTRANGE;
43012         SORT: STRUCTYPE;
43014         CASE STRUCTYPE OF
43016         STRUCT:
43018          (OSCOPE: DEPTHRANGE;
43020           LENGTH: SIZERANGE;
43022           DBLOCK: DPOINT;
43024           RE: REAL;
43026           IM: REAL);
43028         MULT:
43030          (SCOPEM: DEPTHRANGE;
43032           FILLM1: CCOUNTRANGE;
43034           PVALUEM: OBJECTP;
43036           D0: ELSRANGE;
43038           ELS: OBJECTP;
43040           IHEAD: OBJECTP;
43042           BPTR: OBJECTP;
43044           FPTR: OBJECTP;
43046           LBADJ: BOUNDSRANGE;    (*(DIST FROM EL[0,...,0] TO 1ST REAL EL) - ELSCONST*)
43048           MDBLOCK: DPOINT;
43050           SIZE: SIZERANGE;
43052           ROWS: 0..7;
43054           DESCVEC: ARRAY [0..7] OF PDS);
43056         IELS:
43058          (OSCOPEE: DEPTHRANGE;
43060           CCOUNT: CCOUNTRANGE;
43062           DBLOCKE: DPOINT;
43066           D0E: ELSRANGE;
43067           FILLE: OBJECTP;
43068           IHEADE: OBJECTP);
43069         ROUTINE:
43070          (SCOPER: DEPTHRANGE;
43072           FILLR: SIZERANGE;
43074           PROCBL: PROCPOINT;
43076           ENVCHAIN: IPOINT);
43078         PASCROUT:
43080          (SCOPEP: DEPTHRANGE;
43082           PPARAMS: SIZERANGE;
43084           PPROCBL: ASPROC );
43086         REF1:
43088          (SCOPERF1: DEPTHRANGE;
43090           FILLRF1: SIZERANGE;
43091           PVALUER1: OBJECTP;
43092           ANCESTR1: OBJECTP;
43093           OFFSETR1: ELSRANGE;
43094           VALUE: A68INT);
43095         REF2:
43096          (SCOPERF2: DEPTHRANGE;
43098           FILLRF2: SIZERANGE;
43099           PVALUER2: OBJECTP;
43100           ANCESTR2: OBJECTP;
43101           OFFSETR2: ELSRANGE;
43102           LONGVALUE: A68LONG);
43103         REFN:
43104          (SCOPEFN: DEPTHRANGE;
43106           FILLFN: SIZERANGE;
43108           PVALUE: OBJECTP;
43109           ANCESTRN: OBJECTP;
43110           OFFSETRN: ELSRANGE);
43111         CREF:
43112          (SCOPEC: DEPTHRANGE;
43114           FILLCREF: SIZERANGE;
43116           PVALUEC : OBJECTP ;
43117           ANCESTC : OBJECTP ;
43118           IPTR: UNDRESSP);
43120         REFR:
43122          (SCOPERR: DEPTHRANGE;
43124           CCOUNTR: CCOUNTRANGE;
43126           PVALUER: OBJECTP;
43127           ANCESTOR: OBJECTP;
43128           FILLRR1: ELSRANGE;
43129           FILLRR2: OBJECTP;
43130           FILLRR3: OBJECTP;
43131           FILLRR4: OBJECTP;
43132           LBADJRR: BOUNDSRANGE;
43133           MDBLOCKRR: DPOINT;
43134           SIZERR: SIZERANGE;
43135           ROWSRR: 0..7;
43136           DESCVECRR: ARRAY [0..7] OF PDS);
43137         REFSL1:
43138          (SCOPEL: DEPTHRANGE;
43139           CCOUNTL: CCOUNTRANGE;
43140           DBLOCKL: DPOINT;
43142           ANCSTRL: OBJECTP;
43144           OFFSET: ELSRANGE);
43148         REFSLN:
43150          (SCOPEN: DEPTHRANGE;
43152           CCOUNTN: CCOUNTRANGE;
43154           FILLN1: OBJECTP;
43156           ANCSTRN: OBJECTP;
43158           FILLN2: ELSRANGE;
43160           FILLN3: OBJECTP;
43162           FILLN4: OBJECTP;
43164           FILLN5: OBJECTP;
43166           LBADJN: BOUNDSRANGE;
43168           MDBLOCKN: DPOINT;
43170           SIZEN: SIZERANGE;
43172           ROWSN: 0..7;
43174           DESCVECN: ARRAY [0..7] OF PDS);
43176         RECR:
43178          (SCOPECR: DEPTHRANGE;
43180           CCOUNTCR: CCOUNTRANGE;
43182           PVALUECR: OBJECTP;
43184           ANCSTRCR: OBJECTP;
43185           FILLCR1: ELSRANGE;
43186           PREV: OBJECTP;
43187           NEXT: OBJECTP;
43188           FILLCR2: OBJECTP;
43189           LBADJCR: BOUNDSRANGE;
43190           MDBLOCKCR: DPOINT;
43191           SIZECR: SIZERANGE;
43192           ROWSCR: 0..7;
43193           DESCVECCR: ARRAY [0..7] OF PDS);
43194         RECN:
43196          (SCOPECN: DEPTHRANGE;
43198           FILLCN: SIZERANGE;
43200           PVALUECN :OBJECTP;
43202           ANCESTCN: OBJECTP;
43204           OFFSETCN: ELSRANGE;
43208           PREVCN: OBJECTP;
43210           NEXTCN: OBJECTP);
43212         STRING:
43214          (FILLST1: DEPTHRANGE;
43216           STRLENGTH: ELSRANGE;
43222           CHARVEC: VECCHARS);
43226         UNDEF, NILL:
43228          (SCOPEUN: DEPTHRANGE;
43230           STRLNGUN: ELSRANGE;
43232           PVALUEUN: OBJECTP;
43234           ANCESTUN: OBJECTP;
43236           OFFSETUN: ELSRANGE;
43238           FILLUN2: OBJECTP;
43240           FILLUN3: OBJECTP;
43242           FILLUN4: OBJECTP;
43244           FILLUN5: BOUNDSRANGE;
43246           FILLUN6: DPOINT;
43248           FILLUN7: SIZERANGE;
43250           ROWSUN: 0..7;
43252           DESCVECUN: ARRAY [0..7] OF PDS);
43260         AFILE: (*ACTUALLY, AFILES WILL BE STORED AS STRUCTS, BUT THESE FIELD SELECTORS SHOULD WORK*)
43262          (SCOPEF: DEPTHRANGE;
43264           LENGTHF: SIZERANGE;
43266           DBLOCKF: DPOINT;
43268           LOGICALFILEMENDED: OBJECTP;
43270           PHYSICALFILEMENDED: OBJECTP;
43272           PAGEMENDED: OBJECTP;
43274           LINEMENDED: OBJECTP;
43276           PCOVER: OBJECTP;
43278           TERM: TERMSET);
43300         COVER:
43302          (SCOPEV: DEPTHRANGE;
43304           FILLV: SIZERANGE;
43306           CHANNEL: CHAN;
43308           STATUS: STATUSSET;
43310           POSSIBLES: POSSSET;
43312           COFCPOS, LOFCPOS, POFCPOS: INTEGER;
43314           CHARBOUND, LINEBOUND, PAGEBOUND: INTEGER;
43316           DOPUTS,DOGETS,DONEWLINE,DONEWPAGE,DOSET,DORESET: ASPROC;
43318           CASE ASSOC: BOOLEAN OF
43320           FALSE:  (FILLC: SIZERANGE;
43322                    BOOK:FETROOMP);
43324            TRUE:  (OFFSETDI:SIZERANGE;
43326                    ASSREF:OBJECTP;
43328                    CPOSELS:ELSRANGE) );
43330     );
43350     3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 : () ;
43360       END;
43370 ()+02*)
43400 ()+12*)
43410 (*+13()
43450   OBJECT = PACKED RECORD
43500     CASE SEVERAL OF
43550     0: (FIRSTPTR: OBJECTP; FILL0: INTEGER);
43600     1: (FIRSTWORD: INTEGER);
43650     2: (PCOUNT: PCOUNTRANGE;
43700         SORT: STRUCTYPE;
43750         CASE STRUCTYPE OF
43800         STRUCT:
43850          (OSCOPE: DEPTHRANGE;
43900           DBLOCK: DPOINT ;      (*1*)
44050           LENGTH: CCOUNTRANGE;  (*2*)
44100           RE: REAL;
44150           IM: REAL);
44200         MULT:
44250          (OSCOPEM: DEPTHRANGE;
44300           PVALUEM: OBJECTP;          (*1*)
44325           FILLM: ELSRANGE;           (*2*)
44337           IHEAD: OBJECTP;            (*3*)
44350           ROWS: 0..7 ;               (*4*)
44400           SIZE: SIZERANGE ;
44450           FILLM1: CCOUNTRANGE ;
44650           BPTR: OBJECTP;             (*5*)
44700           FPTR: OBJECTP;             (*6*)
44750           LBADJ: BOUNDSRANGE;        (*7*)   (*(DIST FROM EL[0,...,0] TO 1ST REAL EL) - ELSCONST*)
44800           MDBLOCK: DPOINT;           (*8*)
44850           DESCVEC: ARRAY [0..7] OF PDS);
44900         IELS:
44950          (OSCOPEE: DEPTHRANGE;
45000           DBLOCKE: DPOINT;           (*1*)
45050           D0: ELSRANGE;              (*2*)
45075           IHEADE: OBJECTP;           (*3*)
45100           FILLE: CCOUNTRANGE;        (*4*)
45150           CCOUNT: CCOUNTRANGE ) ;
45250         ROUTINE:
45300          (OSCOPER: DEPTHRANGE;
45350           PROCBL: PROCPOINT;              (*1*)
45400           ENVCHAIN: IPOINT);              (*2*)
45450         PASCROUT:
45500          (OSCOPEP: DEPTHRANGE;
45600           PPARAMS: SIZERANGE;              (*1*)
45625           PPROCBL: ASPROC ) ;              (*2*)
45650         REF1:
45700          (OSCOPERF1: DEPTHRANGE;
45710           PVALUEF1: OBJECTP;               (*1*)
45720           ANCSTRF1: OBJECTP;             (*2*)
45730           OFFSETF1: ELSRANGE;              (*3*)
45750           VALUE: A68INT);                  (*4*)
45800         REF2:
45850          (SCOPERF2: DEPTHRANGE;
45866           PVALUEF2: OBJECTP;               (*1*)
45882           ANCSTRF2: OBJECTP;             (*2*)
45890           OFFSETF2: ELSRANGE;              (*3*)
45900           LONGVALUE: A68LONG);             (*4*)
45950         REFN:
46000          (OSCOPEFN: DEPTHRANGE;
46050           PVALUE: OBJECTP;                 (*1*)
46060           ANCSTRFN: OBJECTP;              (*2*)
46070           OFFSETN: ELSRANGE ) ;            (*3*)
46100         CREF:
46150          (SCOPEC: DEPTHRANGE;
46200           PVALUEC : DPOINT ;                (*1*)
46210           ANCSTRC: OBJECTP;               (*2*)
46250           IPTR: UNDRESSP);                  (*3*)
46300         REFR:
46350          (OSCOPERR: DEPTHRANGE;
46400           PVALUER: OBJECTP;                 (*1*)
46410           ANCESTOR: OBJECTP;                (*2*)
46420           FILLRR: INTEGER;                  (*3*)
46450           ROWSRR: 0..7 ;                    (*4*)
46500           SIZERR: SIZERANGE ;
46550           CCOUNTR: CCOUNTRANGE ;
46600           FILLRR2: OBJECTP ;                (*5*)
46700           FILLRR1: OBJECTP ;                (*6*)
46710           LBADJRR: BOUNDSRANGE;             (*7*)
46720           MDBLOCKRR: DPOINT;                (*8*)
46730           DESCVECRR: ARRAY[0..7] OF PDS ) ;
46750         REFSL1:
46800          (OSCOPEL: DEPTHRANGE;
46850           DBLOCKL: DPOINT;               (*1*)
46875           ANCSTRL: OBJECTP;              (*2*)
46885           OFFSET: ELSRANGE;              (*3*)
46900           FILLL: 0..7 ;                  (*4*)
46950           FILLL1: SIZERANGE ;
47000           CCOUNTL: CCOUNTRANGE);
47200         REFSLN:
47250          (OSCOPEN: DEPTHRANGE;
47300           FILLN: OBJECTP;                (*1*)
47325           ANCSTRN: OBJECTP;              (*2*)
47340           FILLN1: INTEGER;               (*3*)
47350           ROWSN: 0..7 ;                  (*4*)
47400           SIZEN: SIZERANGE ;
47450           CCOUNTN: CCOUNTRANGE ;
47650           FILLN2: OBJECTP;               (*5*)
47700           FILLN3: OBJECTP;               (*6*)
47750           LBADJN: BOUNDSRANGE;           (*7*)
47800           MDBLOCKN: DPOINT;              (*8*)
47850           DESCVECN: ARRAY [0..7] OF PDS);
48200         RECR:
48250          (OSCOPECR: DEPTHRANGE;
48300           PVALUECR: OBJECTP;                    (*1*)
48325           ANCSTRCR: OBJECTP;                    (*2*)
48340           FILLCR0: INTEGER;                     (*3*)
48350           ROWSCR: 0..7 ;                        (*4*)
48400           SIZECR: SIZERANGE ;
48450           CCOUNTCR: CCOUNTRANGE ;
48650           PREV: OBJECTP;                        (*5*)
48700           NEXT: OBJECTP;                        (*6*)
48712           LBADJCR: BOUNDSRANGE;                 (*7*)
48724           MDBLOCKCR: DPOINT;                    (*8*)
48736           DESCVECCR: ARRAY [0..7] OF PDS);
48750         RECN:
48800          (OSCOPECN: DEPTHRANGE;
48850           PVALUECN :OBJECTP;                    (*1*)
48860           ANCSTRCN: OBJECTP;                   (*2*)
48950           OFFSETCN: ELSRANGE;                   (*3*)
49000           FILLCN2: INTEGER;                     (*4*)
49100           PREVCN: OBJECTP;                      (*5*)
49150           NEXTCN: OBJECTP);                     (*6*)
49200         STRING:
49250          (FILLSTG: DEPTHRANGE;
49275           FILLSTG1: ARRAY [1..3] OF INTEGER;    (*1*)
49325           FILLSTG2: CCOUNTRANGE;                (*4*)
49350           STRLENGTH: CCOUNTRANGE;
49400           CHARVEC: VECCHARS);                   (*5*)
49450         UNDEF, NILL:
49500          (OSCOPEUN: DEPTHRANGE;
49550           PVALUEUN: OBJECTP;
49560           ANCSTRUN: OBJECTP;
49570           OFFSETUN: ELSRANGE;
49580           ROWSUN: 0..7;
49600           STRLNGUN: CCOUNTRANGE;
49650           FILLUN: ARRAY [1..4] OF INTEGER;
49700           DESCVECUN: ARRAY [0..7] OF PDS);
49750         AFILE: (*ACTUALLY, AFILES WILL BE STORED AS STRUCTS, BUT THESE FIELD SELECTORS SHOULD WORK*)
49800          (SCOPEF: DEPTHRANGE;
49850           DBLOCKF: DPOINT;
49900           FILLAF: 0..7 ;
49950           FILLAF1: SIZERANGE ;
50000           LENGTHF: CCOUNTRANGE ;
50050           LOGICALFILEMENDED: OBJECTP;
50100           PHYSICALFILEMENDED: OBJECTP;
50150           PAGEMENDED: OBJECTP;
50200           LINEMENDED: OBJECTP;
50250           PCOVER: OBJECTP;
50300           TERM: TERMSET);
50350         COVER:
50400          (SCOPEV: DEPTHRANGE;
50450           CHANNEL: CHAN;
50500           STATUS: STATUSSET;
50550           POSSIBLES: POSSSET;
50600           COFCPOS, LOFCPOS, POFCPOS: INTEGER;
50650           CHARBOUND, LINEBOUND, PAGEBOUND: INTEGER;
50700           DOPUTS,DOGETS,DONEWLINE,DONEWPAGE,DOSET,DORESET: ASPROC;
50750           CASE ASSOC: BOOLEAN OF
50800           FALSE:  (FILLC: SIZERANGE;
50850                    BOOK:FETROOMP);
50900            TRUE:  (OFFSETDI:SIZERANGE;
50950                    ASSREF:OBJECTP;
51000                    CPOSELS:ELSRANGE) );
51050     );
51100     3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 : () ;
51150       END;
51200 ()+13*)
51250 (**)
51300 (**)
51350 (**)
51400 (**)
51450 (**)
51500 (**)
51550 (**)
51600 (**)
51650 (**)
51700 (**)
51750 (**)
51800 (**)
51850 (**)
51900 (**)
51950 (**)
52000 (**)
52050 (**)
52100 (**)
52150 (**)
52200 (**)
52250 (**)
52300 (**)
52350 (**)
52400 (**)
52450 (**)
52500 (**)
52550 (**)
52600 (**)
52650 (**)
52700 (**)
52750 (**)
52800 (**)
52850 (**)
52900 (**)
52950 (**)
53000        (*********************)
53050        (* INVOCATION BLOCKS *)
53100        (*********************)
53150 (**)
53200 (*+11() ADDRESS = 0..777777B; ()+11*)
53250 (*+12() ADDRESS = (*-19()INTEGER;()-19*) (*+19()LONG;()+19*) ()+12*)
53300 (*+13() ADDRESS = INTEGER ; ()+13*)
53350   CONVBLE = (POINT, INT);
53400   SIMPILE =
53450     RECORD CASE CONVBLE OF
53500     INT: (SIM: IPOINT);
53550     POINT: (PIL: OBJECTP)
53600     END;
53650 (**)
53700 (**)
53750   BITMAP = PACKED RECORD
53800 (*+11()
53850     FILL: 0..77777777777777B;
53900     MASK: -17777B..+17777B;
53950 ()+11*)
54000 (*+12() (*+03()
54050     MASK: -3777B..+3777B; (*DIFFICULTIES ON NORD*)
54055 ()+03*)
54060 (*+02()
54070     MASK: INTEGER;
54075     COUNT: INTEGER;
54080 ()+02*)
54100 ()+12*)
54150 (*+13() (*+02()
54200     MASK: -32768..+32767 ;
54210     COUNT: -32768..32767;
54250 ()+02*)
54300 (*-02() COUNT: 0..15 ; 
54301 ()-02*) ()+13*)
54350     END;
54400   PIDBLK = ^IDBLK;
54450     IDBLK=PACKED RECORD
54451       CASE SEVERAL OF
54500       1: (ALF: (*+01() ALFA; ()+01*) (*-01() PACKED ARRAY [1..10] OF CHAR; ()-01*) );
54550       2: (A,B,C,D,E,F,G,H,I,J:BYTE;
54551           IDSIZE: BYTE;
54600           XMODE: BYTE);
54601       3,4,5,6,7,8,9,10: ();
54650       END;
54700   PRANGE = ^RANGEBLOCK;
54750   RANGEBLOCK =
54800     RECORD
54850     FIRSTW: PACKED RECORD
54860 (*+11() FILL: 0..177B;
54870         LOOPCOUNT: 0..377777B;
54880         FILL1: 0..1;
54890 ()+11*)
55000 (*-11() LOOPCOUNT: INTEGER;    ()-11*)
55050         RGIDBLK: PIDBLK;
55100 (*+11() FILL2: 0..1; ()+11*)
55150         RECGEN: OBJECTP
55200         END;
55250     RGSCOPE: DEPTHRANGE;
55300     RIBOFFSET: PRANGE;
55350     (*-41() RGNEXTFREE: INTPOINT ; ()-41*)
55400     (*+41() RGLASTUSED: INTPOINT ; ()+41*)
55450     END;
55500   INVBLOCK =     (*THIS RECORD IS FOR INFORMATION ONLY. IT IS NOT USED BY THE RUN-TIME SYSTEM*)
55550     RECORD
55600 (*+01()
55650     PASCAL: PACKED RECORD
55700       STATICCHAIN: IPOINT;
55750       A68BIT: BOOLEAN;PUTBIT: BOOLEAN;GETBIT: BOOLEAN; FILL2: 0..17777777B; DYN: ^INVBLOCK; RETURN: ADDRESS
55800       END;
55850 ()+01*)
55900 (*+03()
55950     PASCAL: PACKED RECORD
56000       WORD1,WORD2,WORD3: INTEGER;
56050       OLDB,OLDPC,OLDEP: INTEGER;
56100       STATICCHAIN, DYN: IPOINT;
56150       OLDLNR: INTEGER;
56200       (* WE NEED A68BIT AT LEAST - HOPEFULLY PUTBIT AND GETBIT ALSO ----------*)
56250       END;
56300 ()+03*)
56350     SPARE: INTEGER;
56400     SCOPE: DEPTHRANGE;
56450     NPARAMS: INTEGER;
56500     BITPATTERN: BITMAP;
56550     TRACE: OBJECTP;
56600     LEVEL: INTEGER;
56650     PROCBL: PROCPOINT;
56700     LINENO: INTEGER;
56750     FIRSTRG: RANGEBLOCK;
56800     END;
56850 (**)
56900        (*********************)
56950        (*   OTHER BLOCKS    *)
57000        (*********************)
57050 (**)
57100   PROCBLOCK =
57150     RECORD
57200     XBASE: ADDRESS;
57250     LEVEL: INTEGER;
57300     SCOFFSET: INTEGER;
57350     SCOPELEVEL: INTEGER;
57400     IBSIZE: INTEGER;
57450     PARAMS:INTEGER;
57500     ROUTNAME: IDBLK;
57550     IDBLOCK: PIDBLK;
57600     END;
57650 (* *)
57700   DEEBLOCK =
57750     ARRAY[0..999] OF INTEGER;
57800 (**)
57850   PDESC=
57900     RECORD
57950     PSIZE: OFFSETRANGE;
58000     ACCOFFS: BOUNDSRANGE;
58050     PROWS: 0..7;
58100     PDESCVEC: ARRAY [0..7] OF RECORD
58150         PP, PD, PL, PND: INTEGER;
58200         END
58250     END;
58300 (**)
58350   NAKED =
58400     PACKED RECORD
58450 (*+11() BIT0: BOOLEAN;  (*THIS BIT MUST ALWAYS BE ZERO, FOR BENEFIT OF COMPILED CODE*) ()+11*)
58500     STOWEDVAL: OBJECTP;
58550 (*+11() FILL: 0..177777777B; ()+11*)
58600     CASE SEVERAL OF
58650     0: (POSITION: ELSRANGE);
58700     1: (POINTER: UNDRESSP); (*SPECIAL FORM, AS USED IN DISPLAYS*)
58750     2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 : () ;
58800     END;
58850 (*+01() ASNAKED = INTEGER; ()+01*) (*OR WHATEVER SCALAR TYPE CAN ENCOMPASS A NAKED*)
58900 (*-01() ASNAKED = REAL; (*MOST MACHINES REQUIRE TWO WORDS FOR THIS*) ()-01*)
58950   NAKEGER =
59000     RECORD CASE CONVBLE OF
59050     INT: (ASNAK: ASNAKED);
59100     POINT: (NAK: NAKED);
59150     END;
59152 (**)
59160   PPROC = (*REPRESENTATION OF PASCAL PROCEDURE/FUNCTION VALUE*)
59162     PACKED RECORD
59163 (*+01() FILLER:0..77777777B; ()+01*)
59164 (*-02() ENV: ADDRESS;
59165         PROCADD: ADDRESS; ()-02*)
59166 (*+02() PROCADD: ADDRESS;
59167         ENV: ADDRESS; ()+02*)
59168     END;
59170 (**)
59200   REALTEGER =
59250     RECORD CASE SEVERAL OF
59300     0: (INT: INTEGER (*-01(); INT2: INTEGER ()-01*));
59350 (*-01() 1: (LONG: A68LONG); ()-01*)
59400     2: (REA: REAL);
59450     3: (ALF: PACKED ARRAY [ 1..BYTESWIDTH ] OF CHAR);
59500     4: (CH: CHAR);
59550     5: (PTR: OBJECTP);
59600     6: (PROCC: ASPROC);
59610     7: (PROCVAL: PPROC);
59650     8 , 9 , 10 : () ;
59700     END;
59750 (*+01()
59800   MESS = PACKED ARRAY [1..50] OF CHAR; (*FOR PASCPMD*)
59850   W66 = PACKED RECORD
59900       FILL1: 0..77777777B; JOPR: 0..7777B; FILL2: 0..77777777B;
59950       END;
60000 ()+01*)
60040 (**)
60050   BYLPP = ^BYLP;
60051   NOBYLPP = ^NOBYLP;
60052   BYLP = RECORD
60054 (*-41()
60056     LOOPTYP: INTEGER;
60058     BYPART: A68INT;
60060     FROMPART: A68INT;
60062     TOPART: A68INT;
60064 ()-41*)
60066 (*+41()
60068     TOPART: A68INT;
60070     FROMPART: A68INT;
60072     BYPART: A68INT;
60074     LOOPTYP: INTEGER;
60076 ()+41*)
60078     END;
60080   NOBYLP = RECORD
60082 (*-41()
60084     LOOPTYP: INTEGER;
60086     FROMPART: A68INT;
60088     TOPART: A68INT;
60090 ()-41*)
60092 (*+41()
60094     TOPART: A68INT;
60096     FROMPART: A68INT;
60097     LOOPTYP: INTEGER;
60098 ()+41*)
60099     END;
60100 (**)
60150 VAR (* VAR    VAR    VAR    VAR    VAR    VAR    VAR    VAR    VAR *)
60200 (**)
60250   UNINT: INTEGER;
60300   UNDEFIN: OBJECTP;
60350   PASCPARAMS: SIZERANGE ;
60400   PASCPROC: ASPROC;
60450 (*-02() (*THE ABOVE VARIABLES MUST BE DECLARED FIRST BECAUSE THE COMPILED CODE
60500           AND/OR MACHINE CODE ROUTINES KNOW ABOUT THEM*) ()-02*)
60550   PASCADDR: PROCPOINT; (*A68-STYLE PROCBLOCK REPRESENTING PASCAL ROUTINE*)
60600   ALLCHAR (*+01() , ALLCHAR1 ()+01*): TERMSET;
60650   HALFPI: ACCURATEPI;
60700   COMPLEX: DPOINT;  (*FOR WIDENING TO .COMPL*)
60750   FILEBLOCK: DPOINT;
60800 (*-01()
60850   SOURDESC, SLICDESC: OBJECTP; (*GLOBAL VARIABLES FOR SLICING*)
60900   SOURDEX, SLICDEX: 0..7;         (*DITTO*)
60950   ADJACC: BOUNDSRANGE;            (*DITTO*)
61000   REVISEDLB: BOUNDSRANGE;         (*DITTO*)
61050   SLICEPDS: PDS;                  (*DITTO*)
61150 ()-01*)
61200   PUTSTRING, HIGHPCOUNT: OBJECTP;
61250   SPARE2, NILPTR: OBJECTP;
61300   BITP: BITMAP;
61350 (*-54() SPARE1: IPOINT; ()-54*)
61400 (*+54() EXCEPTDB: DPOINT; ()+54*)
61410 (*+02() INTUNDEF: INTEGER; ()+02*)
61450   CPUCLOCK: INTEGER;
61500     (*THIS IS MERELY TO MAP OUT ENOUGH SPACE BEFORE THE NEXT VARIABLES, WHICH ARE ALSO KNOWN TO THE A68 PROGRAM*)
61550   FIRSTIB: INVBLOCK; (*FIRSTIBOFFSET MUST ACCESS THIS VARIABLE*)
61600 (*+01()
61650   LASTRANDOM: INTEGER; (*START OF STANDARD-PRELUDE*)
61700   STIN: OBJECTP;
61750   STOUT: OBJECTP;
61800   STBACK: OBJECTP;
61850 ()+01*)
61900 (**)
61905 (*+02()
61910  FUNCTION TIMESTE (T:REAL; E:INTEGER) :REAL; EXTERN;
61945 ()+02*)
61950 (**)
62000 (*+01() (*$E+*) ()+01*)
62050 (**)
62100 (**)
62150 (*+01() (*$X4*) ()+01*)
62200 (**)
62400 (*+01() PROCEDURE A68 ; ()+01*)
62450 (*+05()
62500 PROCEDURE A68( BITPATTERN: BITMAP ; LOCRG: DEPTHRANGE; PROCBL: PROCPOINT; STATICP: IPOINT);
62550 ()+05*)
62560 (*+02()
62570 PROCEDURE A68(UNINTCOPY: INTEGER; UNDEFINCOPY: OBJECTP; BITPATTERN: BITMAP;
62575               LOCRG: DEPTHRANGE; PROCBL: PROCPOINT; STATICP: IPOINT);
62580 ()+02*)
62600 (*THIS REPRESENTS THE A68 PROCEDURE (OR MAIN PROGRAM) FROM WHICH RUN-TIME ROUTINES (OCODES)
62650   GET CALLED. ALL RUN-TIME ROUTINES ARE DECLARED WITHIN A68, AND THE COMPILER ARRANGES THAT
62700   THEIR STATIC LINKS WILL ALWAYS POINT TO THE CALLING A68 ROUTINE. THUS THE VARIABLES ABOUT
62750   TO BE DECLARED ARE ALL ACCESSIBLE, AND WILL ACTUALLY BE PART OF THE INVOCATION BLOCK OF
62800   THE CALLING A68 PROCEDURE.
62850 *)
62900 (*+01()
62950   VAR SCOPE: DEPTHRANGE;
63000       SPARE: INTEGER;
63050       BITPATTERN: BITMAP;
63100       TRACE: OBJECTP;
63150       LEVEL: INTEGER;
63200       PROCBL: PROCPOINT;
63250       LINENO: INTEGER;
63300       FIRSTRG: RANGEBLOCK;
63350 ()+01*)
63400 (*+05()
63450   VAR
63500     SCOPE: INTEGER ;
63550     TRACE: OBJECTP ;
63600     LEVEL: INTEGER ;
63650     LINENO: INTEGER ;
63700     FIRSTRG: RANGEBLOCK ;
63750     (*THIS IS MERELY TO MAP OUT ENOUGH SPACE BEFORE THE NEXT VARIABLES, WHICH ARE ALSO KNOWN TO THE A68 PROGRAM*)
63800      LASTRANDOM: INTEGER; (*START OF STANDARD-PRELUDE*)
63850     STIN: OBJECTP;
63900     STOUT: OBJECTP;
63950     STBACK: OBJECTP;
64000 ()+05*)
64002 (*+02()
64004   VAR
64006     SCOPE: INTEGER ;
64008     TRACE: OBJECTP ;
64010     LEVEL: INTEGER ;
64012     LINENO: INTEGER ;
64014     FIRSTRG: RANGEBLOCK ;
64016     (*THIS IS MERELY TO MAP OUT ENOUGH SPACE BEFORE THE NEXT VARIABLES, WHICH ARE ALSO KNOWN TO THE A68 PROGRAM*)
64018     LASTRANDOM: INTEGER; (*START OF STANDARD-PRELUDE*)
64020     STIN: OBJECTP;
64021     STOUT: OBJECTP;
64022     STBACK: OBJECTP;
64024     MAXREAL: REAL
64025     SMALLREAL: REAL;
64026     PI: REAL;
64026 ()+02*)
64050 (**)
64100 (*ALL THE PROCEDURES AND FUNCTIONS WHICH FOLLOW ARE WITHIN A68*)
64150 (**)
64200 (**)
64300 FUNCTION ME: IPOINT; EXTERN; (*STACK FRAME POINTER OF CALLER*)
64350 FUNCTION STATIC(IB: IPOINT): IPOINT; EXTERN; (*FOLLOW STATIC CHAIN*)
64400  (*+05() FUNCTION A68STATIC(IB: IPOINT): IPOINT; EXTERN; (*FOLLOW ALGOL 68S STATIC CHAIN*) ()+05*)
64450 FUNCTION DYNAMIC(IB: IPOINT): IPOINT; EXTERN; (*FOLLOW DYNAMIC CHAIN*)
64452 (*+02() FUNCTION ARGBASE(IB: IPOINT): IPOINT; EXTERN; ()+02*)
64500 FUNCTION ISA68(IB: IPOINT): BOOLEAN; EXTERN; (*IB IS FRAME FOR A68 PROC*)
64550 FUNCTION ISPUT(IB: IPOINT): BOOLEAN; EXTERN; (*IB IS FRAME FOR CALL OF PUTT*)
64600 FUNCTION ISGET(IB: IPOINT): BOOLEAN; EXTERN; (*IB IS FRAME FOR CALL OF GETT*)
64650 PROCEDURE SETMYSTATIC(IB: IPOINT); EXTERN; (*SETS STATIC CHAIN OF CALLER*)
