1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-04-30 21:38:54 +00:00

1. Commit ALGOLXEM compiler source after conversion to E-mode and initial debugging. It's actually starting to work, folks...

2. Commit test cases used to debug ALGOLXEM under new "tests" directory.
3. Commit new CODEDUMP55.alg_m utility to prepare a semi-formatted dump of a B5500 code file.
4. Commit further typographical corrections to B5500 Algol compiler source uncovered during conversion and debugging of ALGOLXEM.
This commit is contained in:
Paul Kimpel
2012-04-20 17:46:34 +00:00
parent e3eeac9b93
commit 3c717579ae
3 changed files with 3380 additions and 1615 deletions

View File

@@ -720,7 +720,7 @@ DEFINE % %116-01007400
TION (IN [12:6]), AND THE FIRST 5 CHARACTERS OF ALPHA. 01014000
SUCCEDING WORDS CONTAIN THE REMAINING CHARACTORS OF ALPHA,01015000
FOLLOWED BY ANY ADDITIONAL INFORMATION. THE ELBAT WORD 01016000
AND THE ALPHA FOR ANY QUANTITY ARE NOT SPLUT ACROSS A ROW 01017000
AND THE ALPHA FOR ANY QUANTITY ARE NOT SPLIT ACROSS A ROW 01017000
OF INFO. FOR PURPOSES OF FINDING AN IDENTIFIER OR 01018000
RESERVED WORD THE QUANTITIES ARE SCATTERED INTO 125 01019000
DIFERENT LISTS OR STACKES. WHICH STACK CONTAINS A QUANTITY01020000
@@ -768,7 +768,7 @@ COMMENT INFO FORMAT 01028000
NOW S[L] POINTS TO THE ENTRY FOR B AND IT POINTS TO THE 01062000
ENTRY FOR A. 01063000
SIMILARLY,AFTER C IS ENTERED 01064000
A[L] POINTS TO C,WHOSE ENTRY POINTS TO B WHOSE ENTRY 01065000
S[L] POINTS TO C,WHOSE ENTRY POINTS TO B WHOSE ENTRY 01065000
POINTS TO A. 01066000
THE SECOND WORD OF EACH ENTRY IN INFO IS MADE UP AS FOLLOWS: 01067000
FWDPT =[1:1],THIS TELLS WHETHER A PROCEDURE WAS DECLARED 01068000
@@ -4448,7 +4448,7 @@ INTEGER PROCEDURE GETSPACE(PERMANENT,L); VALUE PERMANENT,L; 05331000
PRTIMAX ~ (GS ~ PRTIMAX)+1 END 05350000
ELSE IF MODE = 0 THEN BEGIN 05351000
Q ~ SPRT[ROW ~ PRTI.[38:5]]; 05352000
M ~ MASK(COL ~ PRTI.[43:4]-35); 05353000
M ~ MASK(COL ~ PRTI.[43:5]-35); 05353000
COL ~ COL+35; 05354000
L1: IF REAL(M AND Q) ! 0 05355000
THEN BEGIN 05356000
@@ -5245,7 +5245,7 @@ FCR:= (LCR:=MKABS(TBUFF[9]))-9 END; %104-07025030
PCTR IS A COUNT OF THE NUMBER OF PARAMETERS 07052000
COMPILED. 07053000
ACLASS IS THE CLASS OF THE ACTUAL PARAMETER- 07054000
SCLASS IS TEH CLASS OF THE FORMAL PARAMETER. 07055000
SCLASS IS THE CLASS OF THE FORMAL PARAMETER. 07055000
THEY ARE PUT IN A NORMALIZED FORM IN ORDER 07056000
TO ALLOW INTEGER, REAL, AND ALPHA TO HAVE 07057000
SIMILAR MEANINGS; 07058000
@@ -6283,6 +6283,7 @@ PROCEDURE CMPLXSTMT; FORWARD ; 07777777
GO TO XXX 07859090
END ELSE 07859100
$ SET OMIT = NOT TSPOL 07859900
$ POP OMIT % [NOT IN ORIGINAL LISTING] 07899000
BEGIN ERROR(100); GO TO XXX END; 07900000
IF STEPI ! LEFTPAREN THEN 07901000
BEGIN ERR(105); GO TO XXX END; 07902000
@@ -6533,7 +6534,7 @@ PROCEDURE KLUDGE(T); VALUE T; INTEGER T; 07930000
IF FORCLASS(STEPV) THEN 08182000
IF SIMPLE(CONSTANB,B,SIGNB) THEN 08183000
IF FORCLASS(UNTILV) THEN 08184000
IF SIMPLE(CONSTANC,C,SIGNC) THEN 08185000
IF SIMPLE(CONSTANC,Q,SIGNC) THEN 08185000
IF FORCLASS(DOV) THEN 08186000
BEGIN 08187000
PLUG(CONSTANA,A); 08188000
@@ -8033,7 +8034,7 @@ FILL INFO[2,*] WITH OCT0030000120000000, "2LB000", % THESE ENTRIES ARE 09214105
OCT0130000000040000, "3ERF00", OCT0000000012500000,%651 09214410
OCT0130000000040000, "5GAMMA", OCT0000000012600000,%654 09214415
OCT0130000000040000, "5LNGAM", OCT0000000012700000,%657 09214420
OCT0130000000040000, "3TAN00", OCT0000000011100000,%660 09214425
OCT0130000000040000, "3TAN00", OCT0000000011100007,%660 09214425
OCT0130000260000000, "4FAST0", %663 09214426
OCT0130000270000000, "4SLOW0", %665 09214427
OCT0130000240000000, "7PROTE", "CT000000", %667 09214428
@@ -8257,7 +8258,7 @@ COMMENT ADD IN CORE ESTIMATE FOR SORT; 09361181
IF GTI1 } 32000 THEN GTI1~ 32000; 09361200
COMMENT AT THIS POINT GTI1 HAS THE NEEDED TOTAL CORE REQD; 09361210
COMMENT WRITE OUT FILE PARAMETER BLOCK; 09393000
GTI1~MIN((IDLOC-IDLOCTEMP).[33:15]+1, 128);% AHA 09394000
GT1~MIN((IDLOC-IDLOCTEMP).[33:15]+1, 128);% AHA 09394000
MOVE(GT1,IDARRAY[0],EDOC[0,0]); 09395000
ZEROUT(IDARRAY[0],0,30); 09395500
IDARRAY[4]:=MOVEANDBLOCK(EDOC,GT1,0); %106-09396000
@@ -8452,7 +8453,7 @@ END END END PROGRAM; 09420000
REPEAT~F-SKIP; F~SKIP; 10127000
WHIPOUT(EDOC[F.[38:3],F.[41:7]]&REPEAT[28:38:10]); 10127100
F~SKIP+REPEAT; S~TRUE; CODE~RRIGHT END 10127200
ELSE IF ELCLASS = "0" 10128000
ELSE IF ELCLASS = "O" 10128000
THEN BEGIN CODE~RO; W~8 END 10129000
ELSE IF ELCLASS = "D" 10130000
THEN BEGIN CODE~RD; W~8 END 10131000
@@ -8557,7 +8558,7 @@ END END END PROGRAM; 09420000
L2: NEXTENT; GO TO EXIT; 10172000
EX: FORMATPHRASE ~ TRUE; ERR(136); 10173000
EXIT: END FORMATPHRASE; 10174000
COMMENT GETINT DOES A CALL ON NEXTEND AND CHECKS TO SEE IF AN INTEGER 10175000
COMMENT GETINT DOES A CALL ON NEXTENT AND CHECKS TO SEE IF AN INTEGER 10175000
WAS THE RESULT: IF NOT ERROR - OTHERWISE MAKE SIGN PLUS; 10176000
BOOLEAN PROCEDURE GETINT; 10177000
BEGIN NEXTENT; IF ELCLASS ~ - ELCLASS < 0 THEN 10178000
@@ -9999,7 +10000,7 @@ COMMENT 13294000
KOUNT~COUNT; 13306000
ACCUM[0].INCR~WORDCOUNT; 13307000
ACCUM[0].LINK ~STACKHEAD[SCRAM];STACKHEAD[SCRAM]~NEXTINFO; 13308000
ACCUM[1].PURPT~NEXTINFO~LASTINFO; 13309000
ACCUM[1].PURPT~NEXTINFO-LASTINFO; 13309000
MOVE(WORDCOUNT,ACCUM,INFO[NEXTINFO.LINKR,NEXTINFO.LINKC]); 13310000
IF XREF THEN % MAKE DECLARATION REFERENCE %116-13310050
IF (ACCUM[0].CLASS ! DEFINEDID OR NOT %116-13310075
@@ -10032,7 +10033,7 @@ COMMENT 13317000
ENTRY ASSUMES THAT I IS POINTING AT AN IDENTIFIER WHICH 13318000
IS BEING DECLARED AND MAKES UP THE ELBAT ENTRY FOR IT 13319000
ACCORD TO TYPE .IF THE ENTRY IS AN ARRAY AND NOT 13320000
A SPECIFICATION THEN A DESCRIPTOR IS PALCED IN THE STACK 13321000
A SPECIFICATION THEN A DESCRIPTOR IS PLACED IN THE STACK 13321000
FOR THE UPCOMING COMMUNICATE TO GET STORAGE FOR THE ARRAY(S) ;13322000
BEGIN 13323000
BOOLEAN SVTOG;% 13323010
@@ -10252,7 +10253,7 @@ TWO:IF STEPI=ADOP THEN 13474000
ULITOG~FALSE; 13523000
AEXP; 13524000
EMITL(JUNK); 13525000
EMITL(ISN); 13526000
EMITO(ISN); 13526000
CSZ: IF LLITOG AND ULITOG THEN 13527000
BEGIN 13528000
L~ARPROGS; 13529000
@@ -11652,7 +11653,7 @@ COMMENT **** MONITOR FUNCTION M1 GOES HERE ; 15238000
COMMENT 203 VARIABLE- THE NUMBER OF SUBSCRIPTS USED IN A ROW * 15257000
ROW DESIGNATOR DOES NOT MATCH THE ARRAY * 15258000
DECLARATION. *;15259000
IF STEPI = RTBRKET THEN 15260000
IF STEPI ! RTBRKET THEN 15260000
BEGIN ERR(204);GO EXIT END; 15261000
COMMENT 204 VARIABLE- COMPILER EXPECTS A ] IN A ROW DESIGNATER *;15262000
IF P1 ! FA THEN 15262500