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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user