ack/lang/a68s/liba68s/rundecs.p

1802 lines
61 KiB
OpenEdge ABL
Raw Permalink Normal View History

1988-10-04 13:41:01 +00:00
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*)