1
0
mirror of https://github.com/pkimpel/retro-b5500.git synced 2026-02-11 02:50:16 +00:00

1. Commit updated ALGOLXEM compiler source and additional test cases from recent debugging effort.

2. Rename original NEATUP source from UTIL.NEATUP.alg_m to NEATUP.alg_m.
This commit is contained in:
paul.kimpel@digm.com
2012-05-06 16:38:23 +00:00
parent e781dc1d34
commit e128c9fa8a
7 changed files with 743 additions and 264 deletions

View File

@@ -0,0 +1,43 @@
$ SET LIST $ PRT DEBUGN 00001000120504PK
% DEFINE AND CALL-BY-NAME PARAMETER TEST. 00002000120504PK
% 2012-05-04 P.KIMPEL 00003000120504PK
00004000120504PK
BEGIN 00005000120504PK
DEFINE 00006000120504PK
FS = 2 #, 00007000120504PK
FP = 5 #, 00008000120504PK
FQ = 7 #, 00009000120504PK
LONGISH = REAL THISISSOMEDEFINETEXTTHATISMUCHLONGERTHANONEWORD #; 00010000120504PK
INTEGER 00011000120504PK
TEMP; 00012000120504PK
00012500120504PK
LONGISH; 00013000120504PK
00015000120504PK
PROCEDURE VARIABLE(P1); 00016000120504PK
REAL P1; 00017000120504PK
BEGIN 00018000120504PK
LABEL EXIT; 00019000120504PK
INTEGER I; 00020000120504PK
00021000120504PK
IF P1 > FQ THEN 00022000120504PK
GO TO EXIT; 00023000120504PK
00024000120504PK
IF P1 = FS THEN 00025000120504PK
I:= P1 00026000120504PK
ELSE 00027000120504PK
IF P1 = FP THEN 00028000120504PK
BEGIN 00029000120504PK
I:= 17; 00030000120504PK
P1:= 0; 00031000120504PK
END 00032000120504PK
ELSE 00033000120504PK
GO TO EXIT; 00034000120504PK
00035000120504PK
EXIT: 00036000120504PK
END VARIABLE; 00037000120504PK
00038000120504PK
VARIABLE(FP); 00039000120504PK
VARIABLE(TEMP); 00040000120504PK
VARIABLE(THISISSOMEDEFINETEXTTHATISMUCHLONGERTHANONEWORD); 00041000120504PK
VARIABLE(TEMP+THISISSOMEDEFINETEXTTHATISMUCHLONGERTHANONEWORD); 00042000120504PK
END. 00043000120504PK

View File

@@ -0,0 +1,21 @@
$ SET LIST $ RESET PRT DEBUGN 00000010120506PK
% DONALD KNUTH-S "MAN OR BOY TEST" 00000100120506PK
% FROM ALGOL BULLETIN 17.2.4, JULY 1964, PAGE 7. 00000200120506PK
00000900120506PK
BEGIN 00002000120506PK
FILE OUT OUTPUT 18 (1, 15); 00003000120506PK
REAL PROCEDURE A(K, X1, X2, X3, X4, X5); 00004000120506PK
VALUE K; INTEGER K; 00005000120506PK
REAL X1, X2, X3, X4, X5; 00006000120506PK
BEGIN 00007000120506PK
REAL PROCEDURE B; 00008000120506PK
BEGIN 00009000120506PK
K:= K-1; 00010000120506PK
B:= A:= A(K, B, X1, X2, X3, X4); 00011000120506PK
END B; 00012000120506PK
00013000120506PK
IF K { 0 THEN A:= X4+X5 ELSE B 00014000120506PK
END A; 00015000120506PK
00016000120506PK
WRITE(OUTPUT, /, A(10, 1, -1, -1, 1, 0)); 00017000120506PK
END. 00018000120506PK

View File

@@ -0,0 +1,21 @@
$ SET $ LIST PRT DEBUGN 00001000120505PK
% TEST FOR MULTIPLE INVOCATIONS OF A SWITCH DECLARATION. 00002000120505PK
% 2012-05-05 P.KIMPEL 00003000120505PK
00004000120505PK
BEGIN 00005000120505PK
LABEL L1, L2; 00006000120505PK
INTEGER I, J; 00007000120505PK
SWITCH SW ~ L2, L1; 00008000120505PK
00009000120505PK
L1: 00010000120505PK
FOR I ~ 0 STEP 1 UNTIL 3 DO 00011000120505PK
BEGIN 00012000120505PK
J:= I; 00013000120505PK
WHEN(I); 00014000120505PK
GO TO SW[J]; 00015000120505PK
END FOR; 00016000120505PK
00017000120505PK
L2: 00018000120505PK
I ~ J; 00019000120505PK
GO TO SW[I]; 00020000120505PK
END. 00021000120505PK

190
tests/ALGOLXEM/ORTHO.alg_m Normal file
View File

@@ -0,0 +1,190 @@
$ SET LIST $ PRT DEBUGN 00000010120430PK
% -ORTHO- TEST, 3/3/70 00000100120429PK
BEGIN 00000200
INTEGER STARTT; 00000300120429PK
FORMAT FT (//"DATE: "A6" PROC TIME: "F8.2" I/O TIME: "F8.2" ELAPSED: " 00000400120429PK
F8.2" SEC"); 00000500120429PK
INTEGER I, J, N, M, P, R, AI, AUI, ZEI, MUI; 00000600120429PK
REAL SUM, GMDT, FN; 00000700120429PK
FILE IN PARAMS (1,10); 00000800120429PK
FILE OUT FLUSH 18 (5,17); 00000900120429PK
00001000120429PK
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00002000120429PK
PROCEDURE ORTHO (W, Y, Z, N, FN, M, P, R, AI, AUI, MUI, ZEI, X, DEV, 00003000
COF, STD, CV, VCV, GMDT, Q, Q2, E, EP, A, GF, ENF); 00004000
VALUE N, M, P, R, AI, AUI, MUI, ZEI; 00005000
REAL FN, GMDT; 00006000
REAL ARRAY STD, GF, W, ENF [1]; 00007000
REAL ARRAY Y, Z, X, DEV, COF, CV, Q, Q2, E, EP, A [1, 1]; 00008000
REAL ARRAY VCV [1, 1, 1]; 00009000
INTEGER N, M, P, R, AI, AUI, ZEI, MUI; 00010000
00011000120429PK
COMMENT 00012000
ORTHO IS TAKEN FROM ACM ALGORITHM 127 [COMM. ACM, VOL.5, 00013000
OCTOBER 1962, P. 511, AUTHOR: PHILIP J. WALSH]; 00014000
00015000120429PK
BEGIN 00016000
INTEGER NPP, NPM, M1, N2, M2, R1, RBAR, P2, BEI, RHI, I18, GAI, SII, I,00017000
J, DEI, NUI, E1Z2, E1Z1, K, THI, ALI, OMI, NII; 00018000
REAL ARRAY PK, XP [1:N+P], QK[1:M+1]; 00019000
REAL DENOM, SUM, DK2, DK, FI, SS, SSQ; 00020000
LABEL BOX1, AT1, AT2, BOX2, AU1, AU2, BOX3, BOX4, BOX5, BOX6, MU1, 00021000
MU2, BOX7, OM1, OM2, BOX8, DE1, BOX8A, BOX8B, DE2, BOX8C, BOX8D, 00022000
BOX9, TH1, TH2, TH3, BOX10, AL1, AL2, BOX11, NU1, NU2, BOX12, 00023000
BE1, BE2, BOX13, GA1, GA2, BOX14, RH1, ZE1, ZE2, RH2, SI1, SI2, 00024000
FINAL; 00025000
SWITCH AT ~ AT1, AT2; SWITCH ZE ~ ZE1, ZE2; 00026000120429PK
SWITCH AU ~ AU1, AU2; SWITCH MU ~ MU1, MU2; 00027000120429PK
SWITCH BE ~ BE1, BE2; SWITCH RH ~ RH1, RH2; SWITCH GA ~ GA1, GA2; 00028000120429PK
SWITCH SI ~ SI1, SI2; SWITCH DE ~ DE1, DE2; SWITCH NU ~ NU1, NU2; 00029000120429PK
SWITCH TH ~ TH1, TH2, TH3; SWITCH AL ~ AL1, AL2; 00030000120429PK
SWITCH OM ~ OM1, OM2; 00031000120429PK
NPP ~ N+P; NPM ~ N+M; M1 ~ M-1; N2 ~ N+1; M2 ~ M+1; 00032000120429PK
R1 ~ 0; RBAR ~ R; P2 ~ P+1; DENOM ~ IF N=M THEN 1.0 00033000120429PK
ELSE SQRT(N-M); BEI ~ RHI ~ I18 ~ 1; 00034000120429PK
IF (P ! 0) THEN GAI ~ SII ~ 2 ELSE GAI ~ SII ~ 1; 00035000120501PK
BOX1: GO TO AT[AI]; 00036000
AT1: FOR J ~ 1 STEP 1 UNTIL N DO BEGIN 00037000120429PK
X[2,J] ~ Z[1,J]; X[1,J] ~ 1.0 END; 00038000120429PK
FOR I ~ 2 STEP 1 UNTIL M1 DO BEGIN 00039000120429PK
FOR J ~ 1 STEP 1 UNTIL N DO 00040000120429PK
X[I+1,J] ~ X[I,J] | X[2,J] END; GO TO BOX2; 00041000120429PK
AT2: FOR I ~ 1 STEP 1 UNTIL M DO BEGIN 00042000120429PK
FOR J ~ 1 STEP 1 UNTIL N DO 00043000120429PK
X[I,J] ~ Z[I,J] END; 00044000120429PK
BOX2: IF P = 0 THEN GO TO BOX3 ELSE GO TO AU[AUI]; 00045000
AU1: FOR I ~ 1 STEP 1 UNTIL M DO BEGIN 00046000120429PK
FOR J ~ N2 STEP 1 UNTIL NPP DO 00047000120429PK
X[I,J] ~ 0.0; X[I,N+I] ~ 1.0 END; GO TO BOX3; 00048000120429PK
AU2: FOR I ~ 1 STEP 1 UNTIL M DO BEGIN 00049000120429PK
FOR J ~ N2 STEP 1 UNTIL NPP DO 00050000120429PK
X[I,J] ~ Z[I,J] END; 00051000120429PK
BOX3: DEI ~ NUI ~ E1Z1 ~ E1Z2 ~ K ~ 1; 00052000120429PK
BOX4: THI ~ 1; 00053000120429PK
BOX5: ALI ~ OMI ~ 1; IF P = 0 THEN GO TO BOX6 ELSE 00054000120429PK
FOR J ~ 1 STEP 1 UNTIL P DO PK[N+J] ~ 0.0; 00055000120429PK
BOX6: GO TO MU[MUI]; 00056000
MU1: FOR I ~ 1 STEP 1 UNTIL N DO PK[I] ~ X[K,I]; 00057000120429PK
GO TO BOX7; 00058000
MU2: FOR I ~ 1 STEP 1 UNTIL N DO 00059000120429PK
PK[I] ~ X[K,I] | W[I]; GO TO BOX7; 00060000120429PK
BOX7: GO TO OM[OMI]; 00061000
OM1: FOR I ~ 1 STEP 1 UNTIL K DO BEGIN SUM ~ 0.0; 00062000120429PK
FOR J ~ 1 STEP 1 UNTIL NPP DO 00063000120429PK
SUM ~ SUM + PK[J] | X[I,J]; QK[I] ~ SUM END; 00064000120429PK
GO TO BOX8; 00065000
OM2: DK2 ~ 0.0; FOR I ~ 1 STEP 1 UNTIL NPP DO 00066000120429PK
DK2 ~ DK2 + PK[I] | X[K,I]; 00067000120429PK
DK ~ SQRT(DK2); 00068000120429PK
GF[I18] ~ DK; I18 ~ I18 + 1; 00069000120429PK
FOR I ~ 1 STEP 1 UNTIL NPP DO 00070000120429PK
X[K,I] ~ X[K,I]/DK;; 00071000120429PK
OMI ~ 1; GO TO BOX6; 00072000120429PK
BOX8: GO TO DE[DEI]; 00073000
DE1: E1Z1 ~ -E1Z1; IF E1Z1 < 0 THEN GO TO BOX8B ELSE 00074000120429PK
GO TO BOX8A; 00075000
BOX8A: FOR I ~ 1 STEP 1 UNTIL K-1 DO 00076000120429PK
QK[I] ~ -QK[I]; QK[K] ~ 1.0; 00077000120429PK
FOR I ~ 1 STEP 1 UNTIL NPP DO BEGIN 00078000120429PK
SUM ~ 0.0; FOR J ~ 1 STEP 1 UNTIL K DO 00079000120429PK
SUM ~ SUM + X[J,I] | QK[J]; 00080000120429PK
XP[I] ~ SUM END; GO TO BOX9; 00081000120429PK
BOX8B: ENF[I18] ~ SQRT(QK[K]); GO TO BOX8A; 00082000120429PK
DE2: E1Z2 ~ -E1Z2; IF E1Z2 < 0 THEN GO TO BOX8C ELSE 00083000120429PK
GO TO BOX8A; 00084000
BOX8C: FOR I ~ 1 STEP 1 UNTIL M DO BEGIN 00085000120429PK
Q[R1,I] ~ QK[I]; Q2[R1,I] ~ QK[I] | QK[I] END; 00086000120429PK
Q[R1,M2] ~ QK[M2]; E[R1,1] ~ Q[R1,M2] - Q2[R1,1]; 00087000120429PK
FOR J ~ 2 STEP 1 UNTIL M DO 00088000120429PK
E[R1,J] ~ E[R1,J-1] - Q2[R1,J]; 00089000120429PK
FI ~ 1.0; 00090000120429PK
FOR I ~ 1 STEP 1 UNTIL M DO BEGIN 00091000120429PK
IF (FN - FI) > 0.0 THEN BEGIN IF E[R1,I] < 0.0 THEN 00093000
BEGIN EP[R1,I] ~ -SQRT(ABS(E[R1,I])/(FN - FI)); 00094000120429PK
GO TO BOX8D; END 00095000
ELSE EP[R1,I] ~ SQRT(E[R1,I]/(FN - FI)); 00096000120429PK
GO TO BOX8D; END ELSE E[R1,I] ~ -1.0; 00097000120429PK
BOX8D: FI ~ FI + 1.0; END; GO TO BOX8A; 00098000120429PK
BOX9: GO TO TH[THI]; 00099000
TH1: FOR I ~ 1 STEP 1 UNTIL NPP DO 00100000120429PK
X[K,I] ~ XP[I]; GO TO BOX10; 00101000120429PK
TH2: FOR I ~ 1 STEP 1 UNTIL N DO 00102000120429PK
DEV[R1,I] ~ XP[I]; 00103000120429PK
FOR I ~ 1 STEP 1 UNTIL P DO 00104000120429PK
COF[R1,I] ~ -XP[N+I]; THI ~ 3; GO TO TH1; 00105000120429PK
TH3: GO TO BOX11; 00106000
BOX10: GO TO AL[ALI]; 00107000
AL1: OMI ~ ALI ~ 2; GO TO BOX6; 00108000120429PK
AL2: IF K < M THEN BEGIN K ~ K + 1; GO TO BOX4; END 00109000120429PK
ELSE GO TO BOX12; 00110000
BOX11: GO TO NU[NUI]; 00111000
NU1: NUI ~ 2; GO TO BOX14; 00112000120429PK
NU2: SS ~ DK/DENOM; SSQ ~ SS | SS; 00113000120429PK
STD[R1] ~ SS; GO TO BOX14; 00114000120429PK
BOX12: GO TO BE[BEI]; 00115000
BE1: FOR I ~ 1 STEP 1 UNTIL M DO BEGIN 00116000120429PK
FOR J ~ 1 STEP 1 UNTIL P DO 00117000120429PK
A[I,J] ~ X[I,N+J] END; 00118000120429PK
GMDT ~ 1.0; FOR I ~ 1 STEP 1 UNTIL M DO 00119000120429PK
GMDT ~ GMDT | (GF[I]/ENF[I]); 00120000120429PK
GMDT ~ GMDT | GMDT; DEI ~ BEI ~ THI ~ 2; 00121000120429PK
K ~ K + 1; GO TO BOX13; 00122000120429PK
BE2: GO TO BOX11; 00123000
BOX13: GO TO GA[GAI]; 00124000
GA1: GO TO BOX11; 00125000
GA2: FOR I ~ 1 STEP 1 UNTIL P DO BEGIN 00126000120429PK
FOR J ~ I STEP 1 UNTIL P DO BEGIN 00127000120429PK
SUM ~ 0.0; 00128000120429PK
FOR NII ~ 1 STEP 1 UNTIL M DO 00129000120429PK
SUM ~ SUM + A[NII,I] | A[NII,J]; 00130000120429PK
CV[I,J] ~ SUM END END; 00131000120429PK
FOR I ~ 1 STEP 1 UNTIL P DO 00132000120429PK
CV[P2,I] ~ SQRT(CV[I,I]); GAI ~ 1; GO TO BOX11; 00133000120429PK
BOX14: GO TO RH[RHI]; 00134000
RH1: IF RBAR = 0 THEN GO TO FINAL ELSE RBAR ~ RBAR - 1; 00135000120429PK
R1 ~ R1 + 1; THI ~ RHI ~ 2; GO TO ZE[ZEI]; 00136000120429PK
ZE1: FOR I ~ 1 STEP 1 UNTIL N DO 00137000120429PK
X[M2,I] ~ Y[R1,I]; 00138000120429PK
FOR I ~ 1 STEP 1 UNTIL P DO 00139000120429PK
X[M2,N+I] ~ 0.0; GO TO BOX5; 00140000120429PK
ZE2: FOR I ~ 1 STEP 1 UNTIL NPP DO 00141000120429PK
X[M2,I] ~ Y[R1,I]; GO TO BOX5; 00142000120429PK
RH2: GO TO SI[SII]; 00143000
SI1: GO TO RH1; 00144000
SI2: FOR I ~ 1 STEP 1 UNTIL P DO BEGIN 00145000120429PK
FOR J ~ I STEP 1 UNTIL P DO 00146000120429PK
VCV[R1,I,J] ~ SSQ | CV[I,J] END; 00147000120429PK
FOR I ~ 1 STEP 1 UNTIL P DO 00148000120429PK
VCV[R1, P2, I] ~ SS | CV[P2,I]; GO TO RH1; 00149000120429PK
FINAL: END ORTHO ; 00150000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00151000120429PK
00152000120429PK
STARTT ~ TIME(1); 00901000120429PK
READ (PARAMS, /, N, M, P); 00902000120429PK
CLOSE(PARAMS); 00903000120429PK
R ~ 1; AI ~ 2; AUI ~ 1; 00904000120429PK
ZEI ~ 1; MUI ~ 2; FN ~ N; 00905000120430PK
00906000120429PK
BEGIN %INNER BLOCK 00907000120429PK
LABEL DUMPIT; 00908000120429PK
REAL ARRAY W[1:N], Y[1:R, 1:N+P], Z[1:M, 1:N+P], 00909000120429PK
X[1:M+1, 1:N+P], DEV[1:R, 1:N], COF[1:R, 1:P], STD[1:R], 00910000120429PK
CV[1:P+1, 1:P], VCV[1:R, 1:P+1, 1:P], Q[1:R, 1:M+1], 00911000120429PK
Q2, E, EP [1:R, 1:M], A[1:M, 1:P], GF[1:M+R], ENF[1:M]; 00912000120429PK
DUMP FLUSH (N, M, P, R, AI, AUI, ZEI, MUI, 00913000120429PK
GMDT, FN, 00914000120429PK
W, Y, Z, X, DEV, COF, STD, CV, VCV, Q, Q2, A, GF, ENF, E, 00915000120429PK
EP) DUMPIT:1; 00916000120429PK
FOR I ~ 1 STEP 1 UNTIL N DO 00917000120429PK
BEGIN 00918000120429PK
W[I] ~ 1.0; SUM ~ 0.0; 00919000120429PK
FOR J ~ 1 STEP 1 UNTIL M DO 00920000120429PK
SUM ~ SUM + J|(Z[J,I] ~ I*J); 00921000120429PK
Y[1,I] ~ SUM; 00922000120429PK
END; 00922500120430PK
ORTHO (W, Y, Z, N, FN, M, P, R, AI, AUI, MUI, ZEI, X, DEV, 00923000120429PK
COF, STD, CV, VCV, GMDT, Q, Q2, E, EP, A, GF, ENF); 00924000120429PK
00924500120430PK
DUMPIT: END INNER BLOCK; 00925000120429PK
WRITE(FLUSH, FT, TIME(0), TIME(2)/60, TIME(3)/60, (TIME(1)-STARTT)/60); 00926000120429PK
END. 00999000

198
tools/NEATUPINFO.alg_m Normal file
View File

@@ -0,0 +1,198 @@
BEGIN 00000100120323PK
INTEGER 00000200120323PK
W, 00000300120323PK
X; 00000400120323PK
FILE 00000500120323PK
DISK(KIND=DISK, MAXRECSIZE=90, BLOCKSIZE=1800, FRAMESIZE=8, 00000600120323PK
AREAS=1, AREASIZE=1000, FLEXIBLE, 00000700120323PK
TITLE="DATA/MISC/B5500/NEATUPINFO."); 00000750120323PK
00000800120323PK
EBCDIC VALUE ARRAY LEXICONTEXT 0000090081/10/14.1
("TRANSLATETABLELOCKCOMMENTSLEFTCOMMENTSINDENTTHENIFINDE", 0000100081/10/14.1
"NTELSEIFDEFINEINDENTBEGINOFFSETELSEOFFSETLINELENGTHONE", 0000110081/10/14.1
"PERLINEATUPLISTPROCINDENTNEATUPSEQDECINDENTREFERENCEPR", 0000120081/10/14.1
"OCEDUREINTERRUPTINTERLOCKTRUTHSETDATABASECOMPLEXBOOLEA", 0000130081/10/14.1
"NPOINTERPICTUREINTEGERMONITORMESSAGELIBRARYLAYOUTFORMA", 0000140081/10/14.1
"TEXPORTNUMBERSTRINGSWITCHEBCDICDOUBLEDIRECTMARGINEVENT", 0000150081/10/14.1
"ASCIIARRAYRESETALPHAVALUEQUEUEFIELDLABELWHILEUNTILCASE", 0000160081/10/14.1
"THRUSTEPLONGFILEREALWORDOMITPAGEPOPBCLANDOWNHEXNOTNEQM", 0000170081/10/14.1
"ODLSSEQLENDIVLEQIMPGTRGEQVBY"); 0000180081/10/14.1
VALUE ARRAY COARSEINDEX( 0000190081/10/14.1
4"000000000003",4"000004000008",4"00000900000B",4"00000C000013", 0000200081/10/14.1
4"00001400001B",4"00001C00001F",4"000020000021",4"000022000022", 0000210081/10/14.1
4"00002300002B",4"000001000000",4"000001000000",4"00002C000036", 0000220081/10/14.1
4"00003700003A",4"00003B000040",4"000041000046",4"00004700004C", 0000230081/10/14.1
4"00004D00004D",4"00004E000050",4"000051000054",4"000055000058", 0000240081/10/14.1
4"000059000059",4"00005A00005A",4"00005B00005C",4"000001000000", 0000250081/10/14.1
4"000001000000",4"000001000000",4"000001000000",4"000001000000", 0000260081/10/14.1
4"000001000000",4"000001000000",4"000001000000",4"000001000000", 0000270081/10/14.1
4"000001000000",4"000001000000",4"000001000000"); 0000280081/10/14.1
VALUE ARRAY INFOARRAY( 0000290081/10/14.1
4"0C30841A0012",4"145030144000",4"14502E149000",4"14502C153000", 0000300081/10/14.1
4"0820881CA002",4"0C303219D000",4"14508604A002",4"1C70340D2000", 0000310081/10/14.1
4"2CB00204A001",4"10408A176002",4"1C70380CB000",4"1C7036012000", 0000320081/10/14.1
4"08208E12D002",4"0C308C1BA002",4"18603C03E000",4"18604012D000", 0000330081/10/14.1
4"18603E133000",4"20803A0C3000",4"24900408E001",4"30C00603E001", 0000340081/10/14.1
4"0C30941B5022",4"0C30921B8182",4"0C30961C7012",4"104090038182", 0000350081/10/14.1
4"14504413F000",4"186042127000",4"18604610F000",4"28A008055001", 0000360081/10/14.1
4"0C3098109042",4"10404A186000",4"145048162008",4"18604C109000", 0000370081/10/14.1
4"0C309C1C3022",4"0C309A1C6022",4"0C304E1A6000",4"0820A0026022", 0000380081/10/14.1
4"08209E030002",4"0C30A21C0012",4"18600A026001",4"1C70500E7000", 0000390081/10/14.1
4"2490540A9000",4"2490520B2008",4"30C00C032001",4"30C00E026001", 0000400081/10/14.1
4"0C30A41BD022",4"0C30A61B2022",4"104060182000",4"10405E00E008", 0000410081/10/14.1
4"10405C077000",4"145056167000",4"186058103008",4"1C705A0FC000", 0000420081/10/14.1
4"28A01405F001",4"30C01200E001",4"30C01001A001",4"0C30A81AF002", 0000430081/10/14.1
4"186016139001",4"1C70640EE000",4"1C70620F5004",4"0C30AC1A9012", 0000440081/10/14.1
4"0C30AA1AC022",4"186066115000",4"186018071001",4"24901C085001", 0000450081/10/14.1
4"28A01A071001",4"082068069000",4"0820B00F3012",4"0820AE04F002", 0000460081/10/14.1
4"0C306A1A3000",4"10401E192001",4"28A020069001",4"0C302419A001", 0000470081/10/14.1
4"104022196001",4"1C706C0E0000",4"1C706E0D9000",4"2490700A0000", 0000480081/10/14.1
4"28A02607B001",4"14507215D00C",4"10407418A000",4"14502814E001", 0000490081/10/14.1
4"249076097000",4"0C302A052001",4"1040B417E002",4"18607811B000", 0000500081/10/14.1
4"18607A121000",4"1040B202C102",4"1040B617A042",4"20807E0BB000", 0000510081/10/14.1
4"38E07C000000",4"1450B8171082",4"145080158000",4"10408218E008", 0000520081/10/14.1
4"1450BA16C042"); 0000530081/10/14.1
DEFINE 0000540081/10/14.1
ALPHAC = 22 #, 0000550081/10/14.1
ANDC = 66 #, 0000560081/10/14.1
ARRAYC = 23 #, 0000570081/10/14.1
ASCIIC = 24 #, 0000580081/10/14.1
BCLC = 25 #, 0000590081/10/14.1
BEGINC = 67 #, 0000600081/10/14.1
BEGINOFFSETC = 1 #, 0000610081/10/14.1
BOOLEANC = 26 #, 0000620081/10/14.1
BYC = 68 #, 0000630081/10/14.1
CASEC = 69 #, 0000640081/10/14.1
COMMENTC = 27 #, 0000650081/10/14.1
COMPLEXC = 28 #, 0000660081/10/14.1
DATABASEC = 29 #, 0000670081/10/14.1
DECINDENTC = 2 #, 0000680081/10/14.1
DEFINEC = 30 #, 0000690081/10/14.1
DEFINEINDENTC = 3 #, 0000700081/10/14.1
DIRECTC = 31 #, 0000710081/10/14.1
DIVC = 70 #, 0000720081/10/14.1
DOC = 71 #, 0000730081/10/14.1
DOUBLEC = 32 #, 0000740081/10/14.1
EBCDICC = 33 #, 0000750081/10/14.1
ELSEC = 72 #, 0000760081/10/14.1
ELSEOFFSETC = 4 #, 0000770081/10/14.1
ENDC = 73 #, 0000780081/10/14.1
EQLC = 74 #, 0000790081/10/14.1
EQVC = 75 #, 0000800081/10/14.1
EVENTC = 34 #, 0000810081/10/14.1
EXPORTC = 35 #, 0000820081/10/14.1
FIELDC = 36 #, 0000830081/10/14.1
FILEC = 37 #, 0000840081/10/14.1
FORC = 76 #, 0000850081/10/14.1
FORMATC = 38 #, 0000860081/10/14.1
GEQC = 77 #, 0000870081/10/14.1
GTRC = 78 #, 0000880081/10/14.1
HEXC = 39 #, 0000890081/10/14.1
IFC = 79 #, 0000900081/10/14.1
IMPC = 81 #, 0000910081/10/14.1
INC = 80 #, 0000920081/10/14.1
INDENTC = 5 #, 0000930081/10/14.1
INDENTELSEIFC = 6 #, 0000940081/10/14.1
INDENTTHENIFC = 7 #, 0000950081/10/14.1
INTEGERC = 40 #, 0000960081/10/14.1
INTERLOCKC = 41 #, 0000970081/10/14.1
INTERRUPTC = 42 #, 0000980081/10/14.1
LABELC = 43 #, 0000990081/10/14.1
LAYOUTC = 44 #, 0001000081/10/14.1
LEFTCOMMENTSC = 8 #, 0001010081/10/14.1
LEQC = 82 #, 0001020081/10/14.1
LIBRARYC = 45 #, 0001030081/10/14.1
LINELENGTHC = 10 #, 0001040081/10/14.1
LISTC = 46 #, 0001050081/10/14.1
LOCKC = 47 #, 0001060081/10/14.1
LOCKCOMMENTSC = 9 #, 0001070081/10/14.1
LONGC = 48 #, 0001080081/10/14.1
LSSC = 83 #, 0001090081/10/14.1
MARGINC = 11 #, 0001100081/10/14.1
MESSAGEC = 49 #, 0001110081/10/14.1
MODC = 84 #, 0001120081/10/14.1
MONITORC = 50 #, 0001130081/10/14.1
NEATUPC = 12 #, 0001140081/10/14.1
NEATUPLISTC = 13 #, 0001150081/10/14.1
NEATUPSEQC = 14 #, 0001160081/10/14.1
NEQC = 85 #, 0001170081/10/14.1
NOTC = 86 #, 0001180081/10/14.1
NUMBERC = 51 #, 0001190081/10/14.1
OFC = 87 #, 0001200081/10/14.1
OMITC = 15 #, 0001210081/10/14.1
ONC = 52 #, 0001220081/10/14.1
ONEPERLINEC = 16 #, 0001230081/10/14.1
ORC = 88 #, 0001240081/10/14.1
OWNC = 53 #, 0001250081/10/14.1
PAGEC = 17 #, 0001260081/10/14.1
PICTUREC = 54 #, 0001270081/10/14.1
POINTERC = 55 #, 0001280081/10/14.1
POPC = 18 #, 0001290081/10/14.1
PROCEDUREC = 56 #, 0001300081/10/14.1
PROCINDENTC = 19 #, 0001310081/10/14.1
QUEUEC = 57 #, 0001320081/10/14.1
REALC = 58 #, 0001330081/10/14.1
REFERENCEC = 59 #, 0001340081/10/14.1
RESETC = 20 #, 0001350081/10/14.1
SETC = 21 #, 0001360081/10/14.1
STEPC = 90 #, 0001370081/10/14.1
STRINGC = 60 #, 0001380081/10/14.1
SWITCHC = 61 #, 0001390081/10/14.1
THENC = 89 #, 0001400081/10/14.1
THRUC = 91 #, 0001410081/10/14.1
TRANSLATETABLEC = 62 #, 0001420081/10/14.1
TRUTHSETC = 63 #, 0001430081/10/14.1
UNTILC = 92 #, 0001440081/10/14.1
VALUEC = 64 #, 0001450081/10/14.1
WHILEC = 93 #, 0001460081/10/14.1
WORDC = 65 #; 0001470081/10/14.1
DEFINE 0001480081/10/14.1
ALGOL = 0 #, 0001490081/10/14.1
BOOLEANOP = 0 #, 0001500081/10/14.1
DCALGOL = 1 #, 0001510081/10/14.1
DECLARATOR = 0 #, 0001520081/10/14.1
ESPOL = 2 #, 0001530081/10/14.1
ESPOLORDCALGOL = 3 #, 0001540081/10/14.1
ITERATIONOP = 2 #, 0001550081/10/14.1
LINEENDER = 4 #, 0001560081/10/14.1
MYOPTION = 1 #, 0001570081/10/14.1
RELATIONOP = 1 #, 0001580081/10/14.1
RESWORD = 2 #, 0001590081/10/14.1
TERMINATOR = 3 #; 0001600081/10/14.1
DEFINE 0001610081/10/14.1
COARSEFINISHF = [23:24] # 0001620081/10/14.1
,COARSESTARTF = [47:24] # 0001630081/10/14.1
,INFODEFINEVALUE(INX) = INFOARRAY[INX].[35:11] # 0001640081/10/14.1
,DEFINEVALUE(INX) = INFOARRAY[INX].[35:11] # 0001650081/10/14.1
,INFOMINSIZE(INX) = INFOARRAY[INX].[47:6] # 0001660081/10/14.1
,MINSIZE(INX) = INFOARRAY[INX].[47:6] # 0001670081/10/14.1
,INFOLEXPTR(INX) = INFOARRAY[INX].[24:13] # 0001680081/10/14.1
,INFOTEXTSIZE(INX) = INFOARRAY[INX].[41:6] # 0001690081/10/14.1
,ITEMTYPE(INX) = INFOARRAY[INX].[1:2] # 0001700081/10/14.1
,DECLANGUAGE(INX) = INFOARRAY[INX].[3:2] # 0001710081/10/14.1
,RESWORDTYPE(INX,BIT) = BOOLEAN(INFOARRAY[INX].[4+BIT:1]) # 0001720081/10/14.1
,ITEMKEY(INX) = INFOARRAY[INX].[35:11] # 0001730081/10/14.1
,INFOENTRYSIZE = 1 #; 0001740081/10/14.1
DEFINE HASH(R,PTR) = 0001750081/10/14.1
(R:=(R:=REAL(PTR,1)).[3:4]-1-R.[5:1]+9*R.[5:2])#; 0001760081/10/14.1
0001770081/10/14.1
WRITE(DISK, <"COARSE INDEX:">); 00017800120323PK
FOR X:= 0 STEP 1 WHILE X < SIZE(COARSEINDEX) DO 00017900120323PK
BEGIN 00018000120323PK
W:= COARSEINDEX[X]; 00018100120323PK
WRITE(DISK, <I3,":",2I4>, X, W.COARSESTARTF, W.COARSEFINISHF); 00018200120323PK
END; 00018300120323PK
00018400120323PK
WRITE(DISK, </,"INFOARRAY:">); 00018450120323PK
FOR X:= 0 STEP 1 WHILE X < SIZE(INFOARRAY) DO 00018500120323PK
BEGIN 00018600120323PK
WRITE(DISK, <I3,":",4I3,I6,I5,2I3,X1,A*>, 00018700120323PK
X, HASH(W, LEXICONTEXT[INFOLEXPTR(X)]), 00018800120323PK
ITEMTYPE(X), DECLANGUAGE(X), INFOARRAY[X].[11:8], 00018900120323PK
DEFINEVALUE(X), INFOLEXPTR(X), 00019000120323PK
INFOMINSIZE(X), INFOTEXTSIZE(X), INFOTEXTSIZE(X), 00019100120323PK
LEXICONTEXT[INFOLEXPTR(X)]); 00019200120323PK
END; 00019300120323PK
00019320120323PK
CLOSE(DISK, CRUNCH); 00019340120323PK
END. 00019400120323PK

File diff suppressed because it is too large Load Diff