From 79041747335dbbda95fe2def8791fdda1a143341 Mon Sep 17 00:00:00 2001 From: "paul.kimpel@digm.com" Date: Fri, 20 Apr 2012 17:46:34 +0000 Subject: [PATCH] 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. --- SYMBOL/ALGOL.alg_m | 27 +- tests/ALGOLXEM/CASESW.alg_m | 55 + tests/ALGOLXEM/TEST-ONE.alg_m | 2 + tests/ALGOLXEM/TEST-TWO.alg_m | 5 + tools/CODEDUMP55.alg_m | 207 ++ tools/xem/ALGOLXEM.alg_m | 4761 ++++++++++++++++++++++----------- 6 files changed, 3442 insertions(+), 1615 deletions(-) create mode 100644 tests/ALGOLXEM/CASESW.alg_m create mode 100644 tests/ALGOLXEM/TEST-ONE.alg_m create mode 100644 tests/ALGOLXEM/TEST-TWO.alg_m create mode 100644 tools/CODEDUMP55.alg_m diff --git a/SYMBOL/ALGOL.alg_m b/SYMBOL/ALGOL.alg_m index ba0791f..1ce5ed3 100644 --- a/SYMBOL/ALGOL.alg_m +++ b/SYMBOL/ALGOL.alg_m @@ -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 diff --git a/tests/ALGOLXEM/CASESW.alg_m b/tests/ALGOLXEM/CASESW.alg_m new file mode 100644 index 0000000..35ef56b --- /dev/null +++ b/tests/ALGOLXEM/CASESW.alg_m @@ -0,0 +1,55 @@ +$ SET LIST $ PRT DEBUGN 00000100120418PK +% CASE VS. SWITCH 10/01/70 ROSE & PK 00002000 +BEGIN 00003000 +INTEGER I, J, K; 00004000 +FILE OUT PR 18 (2,15); 00005000 +BEGIN %%% INNER BLOCK %%% 00006000 +REAL X, Y, Z; 00007000 +LABEL L1, L2, L3; 00008000 +SWITCH S ~ L1, L2, L3; 00008500 +ALPHA ARRAY A[0:I], B[0:2|I]; 00009000120418PK +FORMAT F1 (X20,O,X5,2O); 00010000 + 00011000 +STREAM PROCEDURE MOVEPRT (PRT25, A, N1, N2); 00012000 + VALUE N1, N2; 00013000 +BEGIN 00014000 + SI ~ LOC PRT25; SI ~ SI - 21; 00015000 + DI ~ A; 00016000 + N1(2(DS ~ 32 WDS)); N2(DS ~ WDS); 00017000 +END MOVEPRT; 00018000 + 00019000 +STREAM PROCEDURE BINOCT (N1, N2, S, D); 00020000 + VALUE N1, N2; 00021000 +BEGIN 00022000 + SI ~ S; 00023000 + DI ~ D; 00024000 + N1(32(32(DS~ 3 RESET; 3(IF SB THEN DS ~ SET ELSE DS ~ RESET; 00025000 + SKIP SB)))); 00026000 + N2(16(DS ~ 3 RESET; 3(IF SB THEN DS ~ SET ELSE DS ~ RESET; 00027000 + SKIP SB))); 00028000 +END BINOCT; 00029000 + 00030000 +L1: 00031000 + J ~ 3; GO TO S[J]; 00032000 +L2: 00033000 + CASE J MOD 10 OF 00034000 + BEGIN 00035000 + J ~ 3; 00036000 + K ~ J; 00037000 + X ~ K +J; 00038000 + Y ~ X ~ SQRT(X); 00039000 + ; 00040000 + Z ~ 2|Y + 6.0; 00041000120418PK + ; 00042000 + K ~ 5000; 00043000 + END CASE; 00044000 +L3: 00045000 + MOVEPRT (I, A[*], I DIV 64, I MOD 64); 00046000 + BINOCT (I DIV 64, I MOD 64, A[*], B[*]); 00047000 + FOR J ~ 0 STEP 1 UNTIL I DO 00048000 + BEGIN 00049000 + BINOCT (0, 1, J, Y); 00050000 + WRITE (PR, F1, Y, B[J|2], B[J|2+1]); 00051000120418PK + END; 00052000 + END INNER BLOCK; 00053000 +END. 00054000 diff --git a/tests/ALGOLXEM/TEST-ONE.alg_m b/tests/ALGOLXEM/TEST-ONE.alg_m new file mode 100644 index 0000000..53c6c3c --- /dev/null +++ b/tests/ALGOLXEM/TEST-ONE.alg_m @@ -0,0 +1,2 @@ +$ SET $ LIST PRT DEBUGN 00000010120419PK +BEGIN END. 00000100 diff --git a/tests/ALGOLXEM/TEST-TWO.alg_m b/tests/ALGOLXEM/TEST-TWO.alg_m new file mode 100644 index 0000000..cbda38c --- /dev/null +++ b/tests/ALGOLXEM/TEST-TWO.alg_m @@ -0,0 +1,5 @@ +$ SET LIST $ PRT DEBUGN 00000100120417PK +BEGIN 00000200 +INTEGER I, J; 00000300 +J:= I+5; 00000400 +END. 00000500 diff --git a/tools/CODEDUMP55.alg_m b/tools/CODEDUMP55.alg_m new file mode 100644 index 0000000..1bc2333 --- /dev/null +++ b/tools/CODEDUMP55.alg_m @@ -0,0 +1,207 @@ + $ SET LINEINFO 00000100 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00001000 +%% CODEDUMP55 %%00001100 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00001200 +% 00001300 +% MCP E-MODE PROGRAM TO DUMP A B-5500 CODE FILE IN OCTAL AND TO 00001400 +% INTERPRET SEGMENT 0 AND THE SEGMENT DICTIONARY. 00001500 +% 00001600 +% TO USE, EQUATE FILE CODE TO THE B5500 CODE FILE. OUTPUT IS TO THE 00001700 +% PRINTER FILE LINE. 00001800 +% 00049900 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00050000 +% 2012-04-19 P.KIMPEL 00050010 +% ORIGINAL VERSION. 00050011 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00099000 +BEGIN 00100000 +DEFINE 00100100 + SECTORSIZE = 30 #, 00100200 + UNITSOF(V,U) = (((V)+(U-1)) DIV (U)) #, 00100300 + INCREMENTSOF(V,U) = (UNITSOF(V,U)*U) #; 00100400 + 00110000 +INTEGER 00120100 + CODERECSIZE, 00120200 + PRTSIZE, 00120300 + SEGDICTSIZE; 00120400 + 00130000 +REAL 00130100 + T7; 00130200 + 00150000 +ARRAY 00150100 + A[0:29], 00150200 + PRT[0:29], 00150300 + SEGDICT[0:29], 00150400 + SEGZERO[0:29]; 00150500 + 00170000 +FILE 00170100 + CODE (KIND=DISK, DEPENDENTSPECS, DEPENDENTINTMODE), 00170200 + LINE (KIND=PRINTER, MAXRECSIZE=132, FRAMESIZE=8, FILEUSE=IO); 00170300 + 00300000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00300100 +PROCEDURE DUMPSECTOR(SECTOR, BUF, BUFX); 00300200 + VALUE SECTOR, BUFX; 00300300 + INTEGER SECTOR, BUFX; 00300400 + ARRAY BUF[0]; 00300500 + BEGIN 00300600 + INTEGER 00300700 + ENDX, 00300800 + X, 00300900 + Y; 00301000 + 00301100 + ENDX:= BUFX+SECTORSIZE-1; 00301200 + WRITE(LINE, , 00301300 + SECTOR, FOR X:= BUFX STEP 6 UNTIL ENDX DO [ 00301400 + X, FOR Y:=0 STEP 1 UNTIL 5 DO BUF[X+Y]]); 00301500 + END DUMPSECTOR; 00301600 + 00810000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00810100 +PROCEDURE DUMPPRT(PRTLOC, PRTSIZE, PRT); 00810200 + VALUE PRTLOC, PRTSIZE; 00810300 + INTEGER PRTLOC, PRTSIZE; 00810400 + ARRAY PRT[0]; 00810500 + BEGIN 00810600 + INTEGER 00810700 + BUFX, 00810800 + SECTOR; 00810900 + 00811000 + WRITE(LINE, <"PRT:">); 00811100 + SECTOR:= PRTLOC; 00811200 + IF SIZE(PRT) < PRTSIZE THEN 00811300 + RESIZE(PRT, INCREMENTSOF(PRTSIZE, SECTORSIZE)); 00811400 + 00811500 + WHILE BUFX < PRTSIZE DO 00811600 + BEGIN 00811700 + READ(CODE[SECTOR], CODERECSIZE, PRT[BUFX]); 00811800 + DUMPSECTOR(SECTOR, PRT, BUFX); 00811900 + BUFX:=*+SECTORSIZE; 00812000 + SECTOR:= *+1; 00812100 + END WHILE; 00812200 + END DUMPPRT; 00812300 + 00820000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00820100 +PROCEDURE DUMPSEGDICT(DICTLOC, DICTSIZE, DICT, PRT); 00820200 + VALUE DICTLOC, DICTSIZE; 00820300 + INTEGER DICTLOC, DICTSIZE; 00820400 + ARRAY DICT, PRT[0]; 00820500 + BEGIN 00820600 + INTEGER 00820700 + BUFX, 00820800 + PRTX, 00820900 + SECTOR, 00821000 + SECTOREND, 00821050 + SEGSECTORS; 00821100 + REAL 00821200 + P, 00821300 + W; 00821400 + 00821500 + WRITE(LINE, <"SEGMENT DICTIONARY:">); 00821600 + SECTOR:= DICTLOC; 00821700 + IF SIZE(DICT) < DICTSIZE THEN 00821800 + RESIZE(DICT, INCREMENTSOF(DICTSIZE, SECTORSIZE)); 00821900 + 00822000 + WHILE BUFX < DICTSIZE DO 00822100 + BEGIN 00822200 + READ(CODE[SECTOR], CODERECSIZE, DICT[BUFX]); 00822300 + BUFX:= *+SECTORSIZE; 00822400 + END WHILE; 00822500 + 00822600 + FOR BUFX:= 0 STEP 1 WHILE BUFX < DICTSIZE DO 00822700 + BEGIN 00822800 + W:= DICT[BUFX]; 00822900 + IF W IS 0 THEN 00823000 + WRITE(LINE, , BUFX) 00823100 + ELSE 00823200 + BEGIN 00823300 + SECTOR:= W.[14:15]; 00823400 + SEGSECTORS:= UNITSOF(W.[29:15], SECTORSIZE); 00823500 + SECTOREND:= SECTOR+SEGSECTORS-1; 00823600 + PRTX:= W.[39:10]; 00823700 + WRITE(LINE, ); 00841100 + SECTOR:= FPBLOC; 00841200 + 00841300 + WHILE BUFX < FPBSIZE DO 00841400 + BEGIN 00841500 + READ(CODE[SECTOR], CODERECSIZE, BUF); 00841600 + DUMPSECTOR(SECTOR, BUF, 0); 00841700 + BUFX:=*+SECTORSIZE; 00841800 + SECTOR:= *+1; 00841900 + END WHILE; 00842000 + END DUMPFPB; 00842100 + 00900000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00900100 +%% OUTER BLOCK 00900200 + 00900300 +OPEN(CODE); 00900400 +CODERECSIZE:= CODE.MAXRECSIZE; 00900500 +REPLACE POINTER(A,8) BY " " FOR 132; 00900600 +REPLACE POINTER(A,8) BY "CODEDUMP55: ", CODE.LTITLE; 00900700 +REPLACE POINTER(A[17],8)-5 BY " ", 00900800 + (T7:= TIME(7)).[47:12] FOR 4 DIGITS, "-", 00900900 + T7.[35:6] FOR 2 DIGITS, "-", 00901000 + T7.[29:6] FOR 2 DIGITS, " ", 00901100 + T7.[23:6] FOR 2 DIGITS, ":", 00901200 + T7.[17:6] FOR 2 DIGITS; 00901300 +WRITE(LINE[SPACE 2], 132, A); 00901400 + 00910000 +READ(CODE[0], CODERECSIZE, SEGZERO); 00910100 + 00910200 +WRITE(LINE, <"SEGMENT DICTIONARY AT SECTOR ",I6," FOR ",I6,/, 00910300 + "PRT AT SECTOR ",I6," FOR ",I6,/, 00910400 + "FPB AT SECTOR ",I6," FOR ",I6,/, 00910500 + "STARTING SEGMENT NUMBER ",I6,/, 00910600 + "NUMBER OF FILES ",I6,/, 00910700 + "CORE ESTIMATE ",I6,/>, 00910800 + SEGZERO[0], SEGZERO[1], SEGZERO[2], SEGZERO[3], 00910900 + SEGZERO[4], SEGZERO[5], SEGZERO[6], 00911000 + SEGZERO[7].[14:15], SEGZERO[7].[29:15]*64); 00911100 + 00911200 +SEGDICTSIZE:= SEGZERO[1]; 00911300 +PRTSIZE:= SEGZERO[3]; 00911400 +DUMPPRT(SEGZERO[2], PRTSIZE, PRT); 00911500 +DUMPFPB(SEGZERO[4], SEGZERO[5], A); 00911600 +DUMPSEGDICT(SEGZERO[0], SEGDICTSIZE, SEGDICT, PRT); 00911700 + 00999800 +END. 00999900 diff --git a/tools/xem/ALGOLXEM.alg_m b/tools/xem/ALGOLXEM.alg_m index d44015b..17f6c74 100644 --- a/tools/xem/ALGOLXEM.alg_m +++ b/tools/xem/ALGOLXEM.alg_m @@ -1,4 +1,5 @@ - $SET OMIT LISTA = LIST 00001000=00000999= + $ SET ALGOL 00000100120415PK + $SET OMIT LISTOMITTED = LIST 00001000=00000999= %#######################################################################00002000=00001000= % 00003000=00001010= % B-5700 ALGOL/TSPOL SYMBOLIC 00004000=00001020= @@ -445,7 +446,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00025000 617 INCLUDECARD: + COPY CAN NOT BE USED UNLESS $ IS IN COLUMN ONE 00445000=00417000= 618 BLOCK: AUXMEM APPEARS IMMEDIATELY BEFORE IDENTIFIER (NO TYPE) 00446000=00418000= ; 00447000=00490000= - $POP OMIT LISTA 00448000=00499999= + $POP OMIT 00448000=00499999= BEGIN 00449000=00500000= COMMENT OUTERMOST BLOCK; 00450000=00500000= INTEGER 00505000=00501000= @@ -488,95 +489,1287 @@ REAL 00645000 RR9, 00690000=00507000= RR10, 00695000=00507000= RR11; 00700000=00507000= - COMMENT SOME OF THE RRI ARE USED TO PASS FILE INFORMATION TO 00705000=00508000= - THE MAIN BLOCK; 00710000=00509000= - 00715000=00510000= - COMMENT EXAMIN RETURNS THE CHARACTER AT ABSOLUTE ADDRESS NCR; 00720000=00510000= -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00725000=00511000= -REAL STREAM PROCEDURE EXAMIN(NCR); 00730000=00511000= -VALUE 00735000=00511000= - NCR; 00740000=00511000= - BEGIN COMMENT RETURNS THE CHARACTER AT ABS CHARACTER ADDRESS NCR; 00745000=00512000= - SI:= NCR; % POINT SI TO ADDRESS CONTAINED IN NCR 00750000=00512000= - DI:= LOC EXAMIN; % POINT DI TO PROCEDURE RESULT CELL 00755000=00512000= - DI:= DI+7; % MOVE DI TO LAST CHAR OF PROCEDURE RESULT CELL 00760000=00512000= - DS:= CHR % MOVE & RETURN CHAR AT ADDRESS IN NCR 00765000=00512000= - END; 00770000=00512000= -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00775000=00512100= -REAL STREAM PROCEDURE EXAMINELAST(AC, CT); 00780000=00512100= -VALUE 00785000=00512100= - CT; 00790000=00512100= - BEGIN COMMENT RETURNS THE CHARACTER AT ABS CHARACTER ADDRESS AC+CT; 00795000=00512200= - SI:= AC; 00800000=00512300= - SI:= SI+CT; 00805000=00512300= - DI:= LOC EXAMINELAST; 00810000=00512400= - DI:= DI+7; 00815000=00512400= - DS:= 1 CHR; 00820000=00512500= - END EXAMINELAST; 00825000=00512600= -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00826000 - COMMENT MOVECHARACTERS MOVES N CHARACTERS FROM THE SK-TH CHARACTER 00830000=00513000= - IN SORCE TO THE DK-TH CHARACTER IN DEST, 0<=N<=63,0<=SK<=127; 00835000=00514000= -STREAM PROCEDURE MOVECHARACTERS(N, SORCE, SK, DEST, DK); 00850000=00515000= -VALUE 00855000=00516000= - N, 00860000=00516000= - SK, 00865000=00516000= - DK; 00870000=00516000= - BEGIN 00875000=00517000= - SI:= LOC SK; % POINT SI TO SK 00880000=00517000= - SI:= SI+6; % MOVE SI TO CHAR 6 OF SK 00885000=00517000= - IF SC ^= 6"0" THEN % IF CHAR 6 IS NOT ALL ZERO BITS (I.E., IF THE 00890000=00518000= - BEGIN % SORCE OFFSET IS >= 64) 00895000=00518000= - SI:= SORCE; % POINT SI AT SORCE 00900000=00518000= - 2(SI:= SI+32); % ADVANCE SI BY 2*32 = 64 CHARACTERS 00905000=00518000= - SORCE:= SI % STORE UPDATED SORCE ADDRESS IN STACK CELL 00910000=00518000= - END; 00915000=00518000= - SI:= LOC DK; % NOW DO THE SAME THING FOR THE DEST OFFSET... 00920000=00519000= - SI:= SI+6; 00925000=00519000= - DI:= DEST; 00930000=00519000= - IF SC ^= 6"0" THEN % IF DEST OFFSET >= 64 00935000=00520000= - 2(DI:= DI+32); % ADVANCE DI BY 64 CHARACTERS 00940000=00520000= - SI:= SORCE; % RESTORE SI FROM SAVED ADDRESS IN STACK CELL 00945000=00521000= - SI:= SI+SK; % ADVANCE SI BY SK MOD 64 00950000=00521000= - DI:= DI+DK; % ADVANCE DI BY SK MOD 64 00955000=00521000= - DS:= N CHR; % TRANSFER N MOD 64 CHARACTERS 00960000=00521000= - END MOVECHARACTERS; 00965000=00522000= -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00970000=00523000= -INTEGER STREAM PROCEDURE GETF(Q); 00975000=00523000= -VALUE 00980000=00523000= - Q; 00985000=00523000= - BEGIN 00990000=00524000= - SI:= LOC GETF; % POINT SI TO RETURN VALUE CELL 00995000=00524000= - SI:= SI-7; % MOVE SI TO BIT 6 OF MSCW 01000000=00524000= - DI:= LOC Q; % POINT DI TO Q 01005000=00524000= - DI:= DI+5; % MOVE DI TO BIT 30 OF Q 01010000=00524000= - SKIP 3 DB; % MOVE DI TO BIT 33 OF Q [START OF ADDR FIELD] 01015000=00525000= - 9(IF SB THEN DS:= SET ELSE DS:= RESET;SKIP SB); MOVE rR FROM MSCW TO Q01020000=00525000= - DI:= LOC Q; % POINT DI TO Q 01025000=00526000= - SI:= Q; % LOAD SI FROM VALUE OF Q (R+Q = R+3 FROM ONLY CALL) 01030000=00526000= - DS:= WDS; % COPY FPB DESCRIPTOR FROM M[R+3] TO Q 01035000=00526000= - SI:= Q; % LOAD SI WITH ADDR OF FPB 01040000=00526000= - GETF:= SI % RETURN FPB MEMORY ADDRESS AS RESULT 01045000=00527000= - END GETF; 01050000=00527000= -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%01055000=00528000= - COMMENT START SETTING UP FILE PARAMETERS; 01060000=00528000= - % 6"Y08" = 3"700010" => CHAR 7 OF WORD 8 OF FPB 01061000 - % FPB HAS 5-WORD ENTRIES, SO WORD 8 IS WORD 3 OF 2ND FILE 01062000 - % FIRST FILE IS "CODE", SECOND FILE IS "CARD" 01063000 - % CHAR 7 OF WORD 3 IS FILE TYPE: 12 => "DISK SERIAL" 01064000 -IF EXAMIN(RR11:= GETF(3)+6"Y08") ^= 12 THEN % IF "CARD" IS NOT TYPE DISK01065000=00529000= - RR1:= 5 % BUFFERS=5, UNBLOCKED 01070000=00529000= -ELSE % FILE "CARD" IS TYPE "DISK SERIAL" 01075000=00529000= - BEGIN 01080000=00530000= - RR1:= 2; % BUFFERS=2 01085000=00530000= - RR2:= 150 % BLOCKSIZE=150 WORDS 01090000=00530000= - END; 01095000=00530000= -IF EXAMIN(RR11+5) ^= 12 THEN % IF FILE "LINE" IS NOT TYPE DISK01100000=00531000= - RR3:= 4 % BLOCKSIZE=4 WORDS (FOR DATACOM?) 01105000=00531000= -ELSE % FILE "LINE" IS TYPE "DISK SERIAL" 01110000=00531000= - BEGIN 01115000=00532000= - RR3:= 2; % BUFFERS=5 01120000=00532000= - RR4:= 150 % BLOCKSIZE=150 WORDS 01125000=00532000= - END; 01130000=00532000= + 00710000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00710100 +%% STREAM PROCEDURE EMULATION & BIC TRANSLATION MODULE %%00710200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00710300 + 00710400 +DEFINE 00710500 + WOFF = [14:15] #, % STREAM INDEX WORD OFFSET 00710600 + COFF = [17:3] #, % STREAM INDEX CHAR OFFSET 00710700 + STREAMLOCALS = ARRAY REFERENCE MBASE, SBASE[0] #; 00710800 + 00715000 +REAL 00715100 + AREG, % STREAM SOURCE WORD BUFFER 00715200 + YREG, % STREAM SOURCE CHAR BUFFER 00715300 + MREG, % STREAM SOURCE WORD INDEX 00715400 + GREG, % STREAM SOURCE CHAR INDEX 00715500 + HREG, % STREAM SOURCE BIT INDEX 00715600 + BREG, % STREAM DEST WORD 00715700 + ZREG, % STREAM DEST CHAR BUFFER 00715800 + NREG, % STREAM DEST ALIGNMENT INDEX 00715900 + SREG, % STREAM DEST WORD INDEX 00716000 + KREG, % STREAM DEST CHAR INDEX 00716100 + VREG, % STREAM DEST BIT INDEX 00716200 + TALLY; 00716300 + 00717000 +BOOLEAN 00717100 + TFFF; % TRUE/FALSE FLIP-FLOP 00717200 + 00718000 +ARRAY 00718100 + STREAMTEMPS[0:15], % STREAM TEMP SOURCE 00718200 + STREAMTEMPD[0:15], % STREAM TEMP DESTINATION 00718300 + EBCDICBUFF[0:21]; % EBCDIC I/O BUFFER 00718400 + 00730000 +VALUE ARRAY 00730100 + BICCOLLATE ( % INDEX BY INTERNAL CODE TO GET COLLATION VALUE 00730200 + 3"65", % 00 0 DIGIT-ZERO 00730210 + 3"66", % 01 1 00730220 + 3"67", % 02 2 00730230 + 3"70", % 03 3 00730240 + 3"71", % 04 4 00730250 + 3"72", % 05 5 00730260 + 3"73", % 06 6 00730270 + 3"74", % 07 7 00730280 + 3"75", % 10 8 00730290 + 3"76", % 11 9 00730300 + 3"23", % 12 # 00730310 + 3"24", % 13 @ 00730320 + 3"77", % 14 ? 00730330 + 3"25", % 15 : 00730340 + 3"26", % 16 > 00730350 + 3"27", % 17 } GEQ 00730360 + 3"30", % 20 + 00730370 + 3"31", % 21 A 00730380 + 3"32", % 22 B 00730390 + 3"33", % 23 C 00730400 + 3"34", % 24 D 00730410 + 3"35", % 25 E 00730420 + 3"36", % 26 F 00730430 + 3"37", % 27 G 00730440 + 3"40", % 30 H 00730450 + 3"41", % 31 I 00730460 + 3"01", % 32 . 00730470 + 3"02", % 33 [ 00730480 + 3"06", % 34 & 00730490 + 3"03", % 35 ( 00730500 + 3"04", % 36 < 00730510 + 3"05", % 37 ~ LEFT-ARROW 00730520 + 3"42", % 40 | TIMES 00730530 + 3"43", % 41 J 00730540 + 3"44", % 42 K 00730550 + 3"45", % 43 L 00730560 + 3"46", % 44 M 00730570 + 3"47", % 45 N 00730580 + 3"50", % 46 O LETTER-O 00730590 + 3"51", % 47 P 00730600 + 3"52", % 50 Q 00730610 + 3"53", % 51 R 00730620 + 3"07", % 52 $ 00730630 + 3"10", % 53 * 00730640 + 3"14", % 54 - 00730650 + 3"11", % 55 ) 00730660 + 3"12", % 56 ; 00730670 + 3"13", % 57 { LEQ 00730680 + 3"00", % 60 BLANK 00730690 + 3"15", % 61 / 00730700 + 3"55", % 62 S 00730710 + 3"56", % 63 T 00730720 + 3"57", % 64 U 00730730 + 3"60", % 65 V 00730740 + 3"61", % 66 W 00730750 + 3"62", % 67 X 00730760 + 3"63", % 70 Y 00730770 + 3"64", % 71 Z 00730780 + 3"16", % 72 , 00730790 + 3"17", % 73 % 00730800 + 3"54", % 74 ! NEQ 00730810 + 3"20", % 75 = 00730820 + 3"21", % 76 ] 00730830 + 3"22"); % 77 " 00730840 + 00740000 +TRUTHSET 00740100 + BICALPHA( % STREAM PROCEDURE "SC IN ALPHA" CHARACTER SET 00740200 + 48"11" OR % 21 A 00740210 + 48"12" OR % 22 B 00740220 + 48"13" OR % 23 C 00740230 + 48"14" OR % 24 D 00740240 + 48"15" OR % 25 E 00740250 + 48"16" OR % 26 F 00740260 + 48"17" OR % 27 G 00740270 + 48"18" OR % 30 H 00740280 + 48"19" OR % 31 I 00740290 + 48"21" OR % 41 J 00740300 + 48"22" OR % 42 K 00740310 + 48"23" OR % 43 L 00740320 + 48"24" OR % 44 M 00740330 + 48"25" OR % 45 N 00740340 + 48"26" OR % 46 O LETTER-O 00740350 + 48"27" OR % 47 P 00740360 + 48"28" OR % 50 Q 00740370 + 48"29" OR % 51 R 00740380 + 48"32" OR % 62 S 00740390 + 48"33" OR % 63 T 00740400 + 48"34" OR % 64 U 00740410 + 48"35" OR % 65 V 00740420 + 48"36" OR % 66 W 00740430 + 48"37" OR % 67 X 00740440 + 48"38" OR % 70 Y 00740450 + 48"39" OR % 71 Z 00740460 + 48"00" OR % 00 0 DIGIT-ZERO 00740470 + 48"01" OR % 01 1 00740480 + 48"02" OR % 02 2 00740490 + 48"03" OR % 03 3 00740500 + 48"04" OR % 04 4 00740510 + 48"05" OR % 05 5 00740520 + 48"06" OR % 06 6 00740530 + 48"07" OR % 07 7 00740540 + 48"08" OR % 10 8 00740550 + 48"09" OR % 11 9 00740560 + 48"0C"); % 14 ? 00740570 + 00745000 +TRANSLATETABLE 00745100 + BICTOEBCDIC ( % 00745200 + EBCDIC TO 48"FF", 00745210 + 48"00" TO "0", % DIGIT-ZERO 00745220 + 48"01" TO "1", 00745230 + 48"02" TO "2", 00745240 + 48"03" TO "3", 00745250 + 48"04" TO "4", 00745260 + 48"05" TO "5", 00745270 + 48"06" TO "6", 00745280 + 48"07" TO "7", 00745290 + 48"08" TO "8", 00745300 + 48"09" TO "9", 00745310 + 48"0A" TO "#", 00745320 + 48"0B" TO "@", 00745330 + 48"0C" TO "?", 00745340 + 48"0D" TO ":", 00745350 + 48"0E" TO ">", 00745360 + 48"0F" TO "}", % GEQ 00745370 + 48"10" TO "+", 00745380 + 48"11" TO "A", 00745390 + 48"12" TO "B", 00745400 + 48"13" TO "C", 00745410 + 48"14" TO "D", 00745420 + 48"15" TO "E", 00745430 + 48"16" TO "F", 00745440 + 48"17" TO "G", 00745450 + 48"18" TO "H", 00745460 + 48"19" TO "I", 00745470 + 48"1A" TO ".", 00745480 + 48"1B" TO "[", 00745490 + 48"1C" TO "&", 00745500 + 48"1D" TO "(", 00745510 + 48"1E" TO "<", 00745520 + 48"1F" TO "~", % LEFT-ARROW 00745530 + 48"20" TO "|", % TIMES 00745540 + 48"21" TO "J", 00745550 + 48"22" TO "K", 00745560 + 48"23" TO "L", 00745570 + 48"24" TO "M", 00745580 + 48"25" TO "N", 00745590 + 48"26" TO "O", % LETTER-O 00745600 + 48"27" TO "P", 00745610 + 48"28" TO "Q", 00745620 + 48"29" TO "R", 00745630 + 48"2A" TO "$", 00745640 + 48"2B" TO "*", 00745650 + 48"2C" TO "-", 00745660 + 48"2D" TO ")", 00745670 + 48"2E" TO ";", 00745680 + 48"2F" TO "{", % LEQ 00745690 + 48"30" TO " ", % BLANK 00745700 + 48"31" TO "/", 00745710 + 48"32" TO "S", 00745720 + 48"33" TO "T", 00745730 + 48"34" TO "U", 00745740 + 48"35" TO "V", 00745750 + 48"36" TO "W", 00745760 + 48"37" TO "X", 00745770 + 48"38" TO "Y", 00745780 + 48"39" TO "Z", 00745790 + 48"3A" TO ",", 00745800 + 48"3B" TO "%", 00745810 + 48"3C" TO "!", % NEQ 00745820 + 48"3D" TO "=", 00745830 + 48"3E" TO "]", 00745840 + 48"3F" TO """), % QUOTE 00745850 + EBCDICTOBIC ( 00746000 + EBCDIC TO 48"0C", % 6"?" 00746010 + "0" TO 48"00", % DIGIT-ZERO 00746020 + "1" TO 48"01", 00746030 + "2" TO 48"02", 00746040 + "3" TO 48"03", 00746050 + "4" TO 48"04", 00746060 + "5" TO 48"05", 00746070 + "6" TO 48"06", 00746080 + "7" TO 48"07", 00746090 + "8" TO 48"08", 00746100 + "9" TO 48"09", 00746110 + "#" TO 48"0A", 00746120 + "@" TO 48"0B", 00746130 + "?" TO 48"0C", 00746140 + ":" TO 48"0D", 00746150 + ">" TO 48"0E", 00746160 + "}" TO 48"0F", % GEQ 00746170 + "+" TO 48"10", 00746180 + "A" TO 48"11", 00746190 + "B" TO 48"12", 00746200 + "C" TO 48"13", 00746210 + "D" TO 48"14", 00746220 + "E" TO 48"15", 00746230 + "F" TO 48"16", 00746240 + "G" TO 48"17", 00746250 + "H" TO 48"18", 00746260 + "I" TO 48"19", 00746270 + "." TO 48"1A", 00746280 + "[" TO 48"1B", 00746290 + "&" TO 48"1C", 00746300 + "(" TO 48"1D", 00746310 + "<" TO 48"1E", 00746320 + "~" TO 48"1F", % LEFT-ARROW 00746330 + "|" TO 48"20", % TIMES 00746340 + "J" TO 48"21", 00746350 + "K" TO 48"22", 00746360 + "L" TO 48"23", 00746370 + "M" TO 48"24", 00746380 + "N" TO 48"25", 00746390 + "O" TO 48"26", % LETTER-O 00746400 + "P" TO 48"27", 00746410 + "Q" TO 48"28", 00746420 + "R" TO 48"29", 00746430 + "$" TO 48"2A", 00746440 + "*" TO 48"2B", 00746450 + "-" TO 48"2C", 00746460 + ")" TO 48"2D", 00746470 + ";" TO 48"2E", 00746480 + "{" TO 48"2F", % LEQ 00746490 + " " TO 48"30", % BLANK 00746500 + "/" TO 48"31", 00746510 + "S" TO 48"32", 00746520 + "T" TO 48"33", 00746530 + "U" TO 48"34", 00746540 + "V" TO 48"35", 00746550 + "W" TO 48"36", 00746560 + "X" TO 48"37", 00746570 + "Y" TO 48"38", 00746580 + "Z" TO 48"39", 00746590 + "," TO 48"3A", 00746600 + "%" TO 48"3B", 00746610 + "!" TO 48"3C", % NEQ 00746620 + "=" TO 48"3D", 00746630 + "]" TO 48"3E", 00746640 + """ TO 48"3F"); % QUOTE 00746650 + 00750000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00750100 +DEFINE STREAMSETSI(A, X) = 00750200 + BEGIN COMMENT 00750300 + SETS THE SOURCE INDEX REGISTERS TO AN ARRAY. EMULATES RSA. 00750400 + ; 00750500 + MBASE:= A; 00750600 + MREG:= (X).WOFF; 00750700 + GREG:= (X).COFF; 00750800 + HREG:= 0; 00750900 + END STREAMSETSI #; 00751000 + 00751100 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00751200 +DEFINE STREAMSETLOCSI(WD) = 00751300 + BEGIN COMMENT 00751400 + SETS THE SOURCE INDEX REGISTERS TO A SCALAR, WHICH IS STORED 00751500 + AND OPERATED ON IN STREAMTEMPS[*]. EMULATES RSA. 00751600 + ; 00751700 + STREAMTEMPS[0]:= (WD); 00751800 + MBASE:= STREAMTEMPS; 00751900 + MREG:= GREG:= HREG:= 0; 00752000 + END STREAMSETLOCSI #; 00752100 + 00752200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00752300 +DEFINE STREAMGETSI = 00752400 + COMMENT 00752500 + STREAMGETSI CONSTRUCTS A BINARY WORD FROM THE SOURCE INDEX 00752600 + REGISTERS. EMULATES SSA (SORT OF). 00752700 + ; 00752800 + (0 & (MREG)WOFF & (GREG)COFF) #; 00752900 + 00753000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00753100 +DEFINE STREAMGETSC = 00753200 + COMMENT 00753300 + STREAMGETSC RETURNS THE CURRENT SOURCE CHARACTER. MOSTLY USED 00753400 + INTERNAL TO THE STREAM EMULATION PROCEDURES. 00753500 + ; 00753600 + (MBASE[MREG].[47-GREG*6:6]) #; 00753700 + 00753800 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00753900 +DEFINE STREAMTESTSB = 00754000 + COMMENT 00754100 + TESTS THE BIT AT THE CURRENT SOURCE INDEX AND RETURNS TRUE 00754200 + IF IT IS SET. DOES NOT ADVANCE THE SOURCE INDEX. EMULATES BIT. 00754300 + ; 00754400 + (TFFF:= BOOLEAN(MBASE[MREG].[47-GREG*6-HREG:1])) #; 00754500 + 00754600 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00754700 +DEFINE STREAMADJUSTSICHAR = 00754800 + BEGIN COMMENT 00754900 + ADJUSTS THE SOURCE INDEX FORWARD TO THE NEXT CHARACTER BOUNDARY, 00755000 + IF NECESSARY. USED INTERALLY BY THE EMULATION PROCEDURES. 00755100 + ; 00755200 + IF HREG > 0 THEN 00755300 + BEGIN 00755400 + HREG:= 0; 00755500 + IF GREG < 7 THEN 00755600 + GREG:= *+1 00755700 + ELSE 00755800 + BEGIN 00755900 + GREG:= 0; 00756000 + MREG:= *+1; 00756100 + END; 00756200 + END; 00756300 + END STREAMADJUSTSICHAR #; 00756400 + 00756500 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00756600 +DEFINE STREAMADJUSTSIWORD = 00756700 + BEGIN COMMENT 00756800 + ADJUSTS THE SOURCE INDEX FORWARD TO THE NEXT WORD BOUNDARY, 00756900 + IF NECESSARY. USED INTERNALLY BY THE EMULATION PROCEDURES. 00757000 + ; 00757100 + IF GREG > 0 OR HREG > 0 THEN 00757200 + BEGIN 00757300 + GREG:= HREG:= 0; 00757400 + MREG:= *+1; 00757500 + END; 00757600 + END STREAMADJUSTSIWORD #; 00757700 + 00760000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00760100 +DEFINE STREAMSETDI(A, X) = 00760200 + BEGIN COMMENT 00760300 + SETS THE DESTINATION INDEX REGISTERS TO AN ARRAY. EMULATES RDA. 00760400 + ; 00760500 + SBASE:= A; 00760600 + SREG:= (X).WOFF; 00760700 + KREG:= (X).COFF; 00760800 + VREG:= 0; 00760900 + END STREAMSETDI #; 00761000 + 00761100 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00761200 +DEFINE STREAMSETLOCDI(WD) = 00761300 + BEGIN COMMENT 00761400 + SETS THE DESTINATION INDEX REGISTERS TO A SCALAR, WHICH IS STORED 00761500 + AND OPERATED ON IN STREAMTEMPD[*]. EMULATES RDA. 00761600 + ; 00761700 + STREAMTEMPD[0]:= (WD); 00761800 + SBASE:= STREAMTEMPD; 00761900 + SREG:= KREG:= VREG:= 0; 00762000 + END STREAMSETLOCDI #; 00762100 + 00762200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00762300 +DEFINE STREAMGETDI = 00762400 + COMMENT 00762500 + STREAMGETSI CONSTRUCTS A BINARY WORD FROM THE DESTINATION INDEX 00762600 + REGISTERS. EMULATES SDA (SORT OF). 00762700 + ; 00762800 + (0 & (SREG)WOFF & (KREG)COFF) #; 00762900 + 00763000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00763100 +DEFINE STREAMGETDC = 00763200 + COMMENT 00763300 + STREAMGETSC RETURNS THE CURRENT DESTINATION CHARACTER. MOSTLY 00763400 + USED INTERNAL TO THE STREAM EMULATION PROCEDURES. 00763500 + ; 00763600 + (SBASE[SREG].[47-KREG*6:6]) #; 00763700 + 00763800 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00763900 +DEFINE STREAMADJUSTDICHAR = 00764000 + BEGIN COMMENT 00764100 + ADJUSTS THE DESTINATION INDEX FORWARD TO THE NEXT CHARACTER 00764200 + BOUNDARY, IF NECESSARY. USED INTERALLY BY THE EMULATION 00764300 + PROCEDURES. 00764400 + ; 00764500 + IF VREG > 0 THEN 00764600 + BEGIN 00764700 + VREG:= 0; 00764800 + IF KREG < 7 THEN 00764900 + KREG:= *+1 00765000 + ELSE 00765100 + BEGIN 00765200 + KREG:= 0; 00765300 + SREG:= *+1; 00765400 + END; 00765500 + END; 00765600 + END STREAMADJUSTDICHAR #; 00765700 + 00765800 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00765900 +DEFINE STREAMADJUSTDIWORD = 00766000 + BEGIN COMMENT 00766100 + ADJUSTS THE DESTINATON INDEX FORWARD TO THE NEXT WORD BOUNDARY, 00766200 + IF NECESSARY. USED INTERNALLY BY THE EMULATION PROCEDURES. 00766300 + ; 00766400 + IF KREG > 0 OR VREG > 0 THEN 00766500 + BEGIN 00766600 + KREG:= VREG:= 0; 00766700 + SREG:= *+1; 00766800 + END; 00766900 + END STREAMADJUSTDIWORD #; 00767000 + 00770000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00770100 +DEFINE STREAMSETTALLY(V) = 00770200 + BEGIN COMMENT 00770300 + SETS THE TALLY REGISTER TO THE LOW-ORDER 6 BITS OF "V". 00770400 + EMULATES SEC. 00770500 + ; 00770600 + TALLY:= (V).[5:6]; 00770700 + END #; 00770800 + 00770900 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00771000 +DEFINE STREAMINCTALLY(V) = 00771100 + BEGIN COMMENT 00771200 + INCREMENTS THE TALLY REGISTER BY THE LOW-ORDER 6 BITS OF "V", 00771300 + TRUNCATING THE RESULT TO 6 BITS (WHICH IS ALL THE TALLY HOLDS). 00771400 + EMULATES INC. 00771500 + ; 00771600 + STREAMSETTALLY(TALLY+(V).[5:6]); 00771700 + END #; 00771800 + 00790000 + $ BEGINSEGMENT 00790100 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00790200 +PROCEDURE STREAMSKIPSI(CHARS); 00790300 + VALUE CHARS; 00790400 + REAL CHARS; 00790500 + BEGIN COMMENT 00790600 + INCREMENTS THE SOURCE INDEX FORWARD OR BACKWARD BY THE 00790700 + SPECIFIED NUMBER OF CHARACTERS. EMULATES SFS/SRS, BUT IS NOT 00790800 + LIMITED TO A COUNT OF 63. 00790900 + ; 00791000 + REAL 00791100 + X; 00791200 + 00791300 + STREAMADJUSTSICHAR; 00791400 + X:= (GREG.[2:3] & (MREG)[17:15]) + CHARS; 00791500 + MREG:= X.[17:15]; 00791600 + GREG:= X.[2:3]; 00791700 + END STREAMSKIPSI; 00791800 + 00794000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00794100 +PROCEDURE STREAMSKIPDI(CHARS); 00794200 + VALUE CHARS; 00794300 + REAL CHARS; 00794400 + BEGIN COMMENT 00794500 + INCREMENTS THE DESTINATION INDEX FORWARD OR BACKWARD BY THE 00794600 + SPECIFIED NUMBER OF CHARACTERS. EMULATES SFD/SRD, BUT IS NOT 00794700 + LIMITED TO A COUNT OF 63. 00794800 + ; 00794900 + REAL 00795000 + X; 00795100 + 00795200 + STREAMADJUSTDICHAR; 00795300 + X:= (KREG.[2:3] & (SREG)[17:15]) + CHARS; 00795400 + SREG:= X.[17:15]; 00795500 + KREG:= X.[2:3]; 00795600 + END STREAMSKIPDI; 00795700 + 00798000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00798100 +DEFINE STREAMLOADDIFROMDC = 00798200 + STREAMLOADDIFROMDCQQ(SBASE) #; 00798300 +PROCEDURE STREAMLOADDIFROMDCQQ(SBASE); 00798400 + ARRAY SBASE[0]; 00798500 + BEGIN COMMENT 00798600 + LOADS THE VALUE OF THE DESTINATION INDEX FROM THE CURRENT 00798700 + LOCATION OF THE DESTINATION INDEX. EMULATES TDA (SORT OF). 00798800 + ; 00798900 + STREAMADJUSTDICHAR; 00799000 + VREG:= STREAMGETDC; 00799100 + STREAMSKIPDI(+1); 00799200 + VREG:= STREAMGETDC & (VREG)[11:6]; 00799300 + STREAMSKIPDI(+1); 00799400 + VREG:= STREAMGETDC & (VREG)[17:6]; 00799500 + KREG:= VREG.COFF; 00799600 + SREG:= VREG.WOFF; 00799700 + VREG:= 0; 00799800 + END STREAMLOADDIFROMDC; 00799900 + 00800000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00800100 +DEFINE STREAMTRANSFERCHR(N) = 00800200 + STREAMTRANSFERCHRQQ(MBASE, SBASE, N) #; 00800300 +PROCEDURE STREAMTRANSFERCHRQQ(MBASE, SBASE, N); 00800400 + VALUE N; 00800500 + ARRAY MBASE, SBASE[0]; 00800600 + REAL N; 00800700 + BEGIN COMMENT 00800800 + TRANSFERS "N" 6-BIT CHARACTERS FROM SOURCE TO DESTINATION. 00800900 + EMULATES TRS, BUT IS NOT LIMITED TO A COUNT OF 63. 00801000 + ; 00801100 + REAL 00801200 + NC; % CHARS LEFT TO TRANSFER 00801300 + 00801400 + STREAMADJUSTSICHAR; 00801500 + AREG:= MBASE[MREG]; 00801600 + STREAMADJUSTDICHAR; 00801700 + BREG:= SBASE[SREG]; 00801800 + NC:= N; 00801900 + WHILE NC > 0 DO 00802000 + BEGIN 00802100 + BREG:= * & AREG[47-KREG*6 : 47-GREG*6 : 6]; 00802200 + NC:= *-1; 00802300 + IF GREG < 7 THEN 00802400 + GREG:= *+1 00802500 + ELSE 00802600 + BEGIN 00802700 + GREG:= 0; 00802800 + MREG:= *+1; 00802900 + IF NC > 0 THEN 00803000 + AREG:= MBASE[MREG]; 00803100 + END; 00803200 + 00803300 + IF KREG < 7 THEN 00803400 + KREG:= *+1 00803500 + ELSE 00803600 + BEGIN 00803700 + SBASE[SREG]:= BREG; 00803800 + KREG:= 0; 00803900 + SREG:= *+1; 00804000 + IF NC > 0 THEN 00804100 + BREG:= SBASE[SREG]; 00804200 + END; 00804300 + END WHILE; 00804400 + 00804500 + IF KREG > 0 THEN 00804600 + SBASE[SREG]:= BREG; 00804700 + END STREAMTRANSFERCHR; 00804800 + 00804900 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00805000 +DEFINE STREAMTRANSFERWDS(N) = 00805100 + STREAMTRANSFERWDSQQ(MBASE, SBASE, N) #; 00805200 +PROCEDURE STREAMTRANSFERWDSQQ(MBASE, SBASE, N); 00805300 + VALUE N; 00805400 + ARRAY MBASE, SBASE[0]; 00805500 + REAL N; 00805600 + BEGIN COMMENT 00805700 + TRANSFERS "N" 48-BIT WORDS FROM SOURCE TO DESTINATION. 00805800 + EMULATES TRW, BUT IS NOT LIMITED TO A COUNT OF 63. 00805900 + ; 00806000 + STREAMADJUSTSIWORD; 00806100 + STREAMADJUSTDIWORD; 00806200 + IF N = 1 THEN 00806300 + SBASE[SREG]:= MBASE[MREG] 00806400 + ELSE 00806500 + REPLACE POINTER(SBASE[SREG]) BY 00806600 + POINTER(MBASE[MREG]) FOR N WORDS; 00806700 + 00806800 + SREG:= *+N; 00806900 + MREG:= *+N; 00807000 + END STREAMTRANSFERWDS; 00807100 + 00807200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00807300 +DEFINE STREAMSMEARLIT(N, CHAR) = 00807400 + STREAMSMEARLITQQ(SBASE, N, CHAR) #; 00807500 +PROCEDURE STREAMSMEARLITQQ(SBASE, N, CHAR); 00807600 + VALUE N, CHAR; 00807700 + ARRAY SBASE[0]; 00807800 + REAL N, CHAR; 00807900 + BEGIN COMMENT 00808000 + REPETITIVELY TRANSFERS THE 6-BIT CHARACTER "CHAR" TO THE 00808100 + DESTINATION "N" TIMES. USED WHERE TRP MIGHT BE EXECUTED, BUT 00808200 + FOR THE SPECIAL CASE OF A 1-CHARACTER PATTERN. THIS ROUTINE IS 00808300 + FUNCTIONALLY EQUIVALENT TO STREAMTRANSFERLIT(1, CHAR) WHEN N=1. 00808400 + ; 00808500 + REAL 00808600 + NC; % CHARS LEFT TO SMEAR 00808700 + 00808800 + STREAMADJUSTDICHAR; 00808900 + BREG:= SBASE[SREG]; 00809000 + NC:= N; 00809100 + WHILE NC > 0 DO 00809200 + BEGIN 00809300 + BREG:= * & CHAR[47-KREG*6 : 5 : 6]; 00809400 + NC:= *-1; 00809500 + IF KREG < 7 THEN 00809600 + KREG:= *+1 00809700 + ELSE 00809800 + BEGIN 00809900 + SBASE[SREG]:= BREG; 00810000 + KREG:= 0; 00810100 + SREG:= *+1; 00810200 + IF NC > 0 THEN 00810300 + BREG:= SBASE[SREG]; 00810400 + END; 00810500 + END WHILE; 00810600 + 00810700 + IF KREG > 0 THEN 00810800 + SBASE[SREG]:= BREG; 00810900 + END STREAMSMEARLIT; 00811000 + 00811100 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00811200 +DEFINE STREAMTRANSFERLIT(N, S) = 00811300 + STREAMTRANSFERLITQQ(SBASE, N, S) #; 00811400 +PROCEDURE STREAMTRANSFERLITQQ(SBASE, N, S); 00811500 + VALUE N, S; 00811600 + ARRAY SBASE[0]; 00811700 + REAL N, S; % N MUST BE <= 8, S IS RIGHT-JUSTIFIED IN ITS WORD 00811800 + BEGIN COMMENT 00811900 + TRANSFERS A LITERAL STRING OF 6-BIT CHARACTERS IN "S" TO THE 00812000 + DESTINATION. "N" IS THE NUMBER OF CHARACTERS TO TRANSFER, WHICH 00812100 + IS LIMITED TO 8. "S" IS CONSIDERED TO BE IN THE "N" LOW-ORDER 00812200 + CHARACTERS OF THE "S" WORD. SORT OF EMULATES TRP, EXCEPT THE 00812300 + SOURCE ISN'T REALLY IN THE PROGRAM STRING AND IS LIMITED TO 00812400 + A 48-BIT SOURCE STRING. CALL MULTIPLE TIMES FOR LONGER STRINGS. 00812500 + ; 00812600 + REAL 00812700 + NC; 00812800 + 00812900 + STREAMADJUSTDICHAR; 00813000 + BREG:= SBASE[SREG]; 00813100 + NC:= N; 00813200 + WHILE NC > 0 DO 00813300 + BEGIN 00813400 + BREG:= * & (S)[47-KREG*6 : NC*6-1 : 6]; 00813500 + NC:= *-1; 00813600 + IF KREG < 7 THEN 00813700 + KREG:= *+1 00813800 + ELSE 00813900 + BEGIN 00814000 + SBASE[SREG]:= BREG; 00814100 + KREG:= 0; 00814200 + SREG:= *+1; 00814300 + IF NC > 0 THEN 00814400 + BREG:= SBASE[SREG]; 00814500 + END; 00814600 + END WHILE; 00814700 + 00814800 + IF KREG > 0 THEN 00814900 + SBASE[SREG]:= BREG; 00815000 + END STREAMTRANSFERLIT; 00815100 + 00815200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00815300 +DEFINE STREAMTRANSFERDEC(N) = 00815400 + STREAMTRANSFERDECQQ(MBASE, SBASE, N) #; 00815500 +PROCEDURE STREAMTRANSFERDECQQ(MBASE, SBASE, N); 00815600 + VALUE N; 00815700 + ARRAY MBASE, SBASE[0]; 00815800 + REAL N; 00815900 + BEGIN COMMENT 00816000 + CONVERTS THE WORD AT THE SOURCE INDEX TO "N" DECIMAL DIGITS AND 00816100 + TRANSFERS THEM TO THE DESTINATION AS 6-BIT CHARACTER CODES. 00816200 + EMULATES OCV. LIMITED TO 8-DIGIT CONVERSION. 00816300 + ; 00816400 + REAL 00816500 + DIGITS; 00816600 + 00816700 + STREAMADJUSTSIWORD; 00816800 + STREAMADJUSTDICHAR; 00816900 + IF N = 0 THEN 00817000 + TFFF:= TRUE 00817100 + ELSE 00817200 + BEGIN 00817300 + IF N > 8 THEN 00817400 + N:= 8; 00817500 + 00817600 + AREG:= MBASE[MREG]; 00817700 + IF AREG = 0 THEN 00817800 + AREG:= 0 % WIPE OUT ANY SIGN BIT 00817900 + ELSE 00818000 + DIGITS:= SCALERIGHTF(AREG.[38:39], 12); 00818100 + 00818200 + MREG:= *+1; 00818300 + TFFF:= (DIGITS.[47:(12-N)*4] = 0); % TRUE => NO DECIMAL OVERFLOW 00818400 + WHILE N > 1 DO 00818500 + BEGIN 00818600 + STREAMSMEARLIT(1, DIGITS.[N*4-1:4]); 00818700 + N:= *-1; 00818800 + END WHILE; 00818900 + 00819000 + STREAMSMEARLIT(1, DIGITS.[3:4] & (AREG)[5:46:1]); % SET THE SIGN 00819100 + END; 00819200 + END STREAMTRANSFERDEC; 00819300 + 00819400 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00819500 +DEFINE STREAMTRANSFEROCT(N) = 00819600 + STREAMTRANSFEROCTQQ(MBASE, SBASE, N) #; 00819700 +PROCEDURE STREAMTRANSFEROCTQQ(MBASE, SBASE, N); 00819800 + VALUE N; 00819900 + ARRAY MBASE, SBASE[0]; 00820000 + REAL N; 00820100 + BEGIN COMMENT 00820200 + CONVERTS "N" 6-BIT CHARACTERS FROM THE SOURCE TO A BINARY VALUE 00820300 + AND STORES THE RESULT AT THE DESTINATION WORD. EMULATES ICV. 00820400 + LIMITED TO 8-DIGIT CONVERSION. 00820500 + ; 00820600 + REAL 00820700 + VAL; 00820800 + 00820900 + STREAMADJUSTDIWORD; 00821000 + STREAMADJUSTSICHAR; 00821100 + AREG:= MBASE[MREG]; 00821200 + IF N > 8 THEN 00821300 + N:= 8; 00821400 + 00821500 + WHILE N > 0 DO 00821600 + BEGIN 00821700 + VAL:= VAL*10 + AREG.[45-GREG*6:4]; 00821800 + N:= *-1; 00821900 + IF N = 0 THEN 00822000 + IF AREG.[47-GREG*6:2] = 2 THEN % SIGN IS NEGATIVE 00822100 + IF VAL ^= 0 THEN 00822200 + VAL:= -VAL; 00822300 + 00822400 + IF GREG < 7 THEN 00822500 + GREG:= *+1 00822600 + ELSE 00822700 + BEGIN 00822800 + GREG:= 0; 00822900 + MREG:= *+1; 00823000 + IF N > 0 THEN 00823100 + AREG:= MBASE[MREG]; 00823200 + END; 00823300 + END WHILE; 00823400 + 00823500 + SBASE[SREG]:= VAL; 00823600 + SREG:= *+1; 00823700 + END STREAMTRANSFEROCT; 00823800 + 00823900 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00824000 +DEFINE STREAMTRANSFERFILL(N) = 00824100 + STREAMTRANSFERFILLQQ(SBASE, N) #; 00824200 +PROCEDURE STREAMTRANSFERFILLQQ(SBASE, N); 00824300 + VALUE N; 00824400 + ARRAY SBASE[0]; 00824500 + REAL N; 00824600 + BEGIN COMMENT 00824700 + PERFORMS LEADING-ZERO SUPPRESSION STARTING AT THE DESTINATION 00824800 + INDEX LOCATION. LEAVES THE DESTINATION INDEX POINTING TO THE 00824900 + FIRST NON-SUPPRESSED CHARACTER. EMULATES TBN. 00825000 + ; 00825100 + REAL 00825200 + NC; % CHARS LEFT TO EXAMINE 00825300 + 00825400 + STREAMADJUSTDICHAR; 00825500 + TFFF:= TRUE; 00825600 + BREG:= SBASE[SREG]; 00825700 + NC:= N; 00825800 + WHILE NC > 0 DO 00825900 + BEGIN 00826000 + IF BICCOLLATE[STREAMGETDC] <= BICCOLLATE[6"0"] THEN 00826100 + BEGIN 00826200 + BREG:= * & (6" ")[47-KREG*6 : 5 : 6]; 00826300 + NC:= *-1; 00826400 + IF KREG < 7 THEN 00826500 + KREG:= *+1 00826600 + ELSE 00826700 + BEGIN 00826800 + SBASE[SREG]:= BREG; 00826900 + KREG:= 0; 00827000 + SREG:= *+1; 00827100 + IF NC > 0 THEN 00827200 + BREG:= SBASE[SREG]; 00827300 + END; 00827400 + END 00827500 + ELSE 00827600 + BEGIN 00827700 + NC:= 0; 00827800 + TFFF:= FALSE; 00827900 + IF KREG > 0 THEN 00828000 + SBASE[SREG]:= BREG; 00828100 + END; 00828200 + END WHILE; 00828300 + END STREAMTRANSFERFILL; 00828400 + 00830000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00830100 +PROCEDURE STREAMSKIPSB(N); 00830200 + VALUE N; 00830300 + REAL N; 00830400 + BEGIN COMMENT 00830500 + INCREMENTS THE SOURCE INDEX FORWARD BY "N" BITS. 00830600 + EMULATES BSS. 00830700 + ; 00830800 + THRU N DO 00830900 + BEGIN 00831000 + IF HREG < 5 THEN 00831100 + HREG:= *+1 00831200 + ELSE 00831300 + BEGIN 00831400 + HREG:= 0; 00831500 + IF GREG < 7 THEN 00831600 + GREG:= *+1 00831700 + ELSE 00831800 + BEGIN 00831900 + GREG:= 0; 00832000 + MREG:= *+1; 00832100 + END; 00832200 + END; 00832300 + END THRU; 00832400 + END STREAMSKIPSB; 00832500 + 00832600 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00832700 +PROCEDURE STREAMSKIPDB(N); 00832800 + VALUE N; 00832900 + REAL N; 00833000 + BEGIN COMMENT 00833100 + INCREMENTS THE DESTINATION INDEX FORWARD BY "N" BITS. 00833200 + EMULATES BSD. 00833300 + ; 00833400 + THRU N DO 00833500 + BEGIN 00833600 + IF VREG < 5 THEN 00833700 + VREG:= *+1 00833800 + ELSE 00833900 + BEGIN 00834000 + VREG:= 0; 00834100 + IF KREG < 7 THEN 00834200 + KREG:= *+1 00834300 + ELSE 00834400 + BEGIN 00834500 + KREG:= 0; 00834600 + SREG:= *+1; 00834700 + END; 00834800 + END; 00834900 + END THRU; 00835000 + END STREAMSKIPDB; 00835100 + 00835200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00835300 +DEFINE STREAMSETDB(N, TRUTH) = 00835400 + STREAMSETDBQQ(SBASE, N, TRUTH) #; 00835500 +PROCEDURE STREAMSETDBQQ(SBASE, N, TRUTH); 00835600 + VALUE N, TRUTH; 00835700 + ARRAY SBASE[0]; 00835800 + REAL N; 00835900 + REAL TRUTH; 00836000 + BEGIN COMMENT 00836100 + SETS OR RESETS "N" DESTINATION BITS, DEPENDING ON "TRUTH". 00836200 + EMULATES BIR/BIS. 00836300 + ; 00836400 + REAL 00836500 + NC; 00836600 + 00836700 + BREG:= SBASE[SREG]; 00836800 + NC:= N; 00836900 + WHILE NC > 0 DO 00837000 + BEGIN 00837100 + BREG:= * & (TRUTH)[47-KREG*6-VREG:1]; 00837200 + NC:= *-1; 00837300 + IF VREG < 5 THEN 00837400 + VREG:= *+1 00837500 + ELSE 00837600 + BEGIN 00837700 + VREG:= 0; 00837800 + IF KREG < 7 THEN 00837900 + KREG:= *+1 00838000 + ELSE 00838100 + BEGIN 00838200 + SBASE[SREG]:= BREG; 00838300 + KREG:= 0; 00838400 + SREG:= *+1; 00838500 + IF NC > 0 THEN 00838600 + BREG:= SBASE[SREG]; 00838700 + END; 00838800 + END; 00838900 + END WHILE; 00839000 + 00839100 + IF VREG > 0 OR KREG > 0 THEN 00839200 + SBASE[SREG]:= BREG; 00839300 + END STREAMSETDB; 00839400 + 00850000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00850100 +DEFINE STREAMCOMPARELSS(N) = 00850200 + STREAMCOMPARELSSQQ(MBASE, SBASE, N) #; 00850300 +BOOLEAN PROCEDURE STREAMCOMPARELSSQQ(MBASE, SBASE, N); 00850400 + VALUE N; 00850500 + ARRAY MBASE, SBASE[0]; 00850600 + REAL N; 00850700 + BEGIN COMMENT 00850800 + COMPARES "N" CHARACTERS BETWEEN SOURCE AND DESTINATION FOR A 00850900 + LESS-THAN CONDITION. ADVANCES BOTH INDEXES BY "N". 00851000 + EMULATES CLS. 00851100 + ; 00851200 + STREAMADJUSTSICHAR; 00851300 + STREAMADJUSTDICHAR; 00851400 + TFFF:= FALSE; 00851500 + WHILE N > 0 DO 00851600 + BEGIN 00851700 + IF STREAMGETSC = STREAMGETDC THEN 00851800 + BEGIN 00851900 + STREAMSKIPSI(+1); 00852000 + STREAMSKIPDI(+1); 00852100 + N:= *-1; 00852200 + END 00852300 + ELSE 00852400 + BEGIN 00852500 + IF BICCOLLATE[STREAMGETSC] < BICCOLLATE[STREAMGETDC] THEN 00852600 + TFFF:= TRUE; 00852700 + 00852800 + STREAMSKIPSI(+N); 00852900 + STREAMSKIPDI(+N); 00853000 + N:= 0; 00853100 + END; 00853200 + END WHILE; 00853300 + 00853400 + STREAMCOMPARELSSQQ:= TFFF; 00853500 + END STREAMCOMPARELSS; 00853600 + 00860000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00860100 +DEFINE STREAMCOMPAREEQL(N) = 00860200 + STREAMCOMPAREEQLQQ(MBASE, SBASE, N) #; 00860300 +BOOLEAN PROCEDURE STREAMCOMPAREEQLQQ(MBASE, SBASE, N); 00860400 + VALUE N; 00860500 + ARRAY MBASE, SBASE[0]; 00860600 + REAL N; 00860700 + BEGIN COMMENT 00860800 + COMPARES "N" CHARACTERS BETWEEN SOURCE AND DESTINATION FOR AN 00860900 + EQUAL CONDITION. ADVANCES BOTH INDEXES BY "N". 00861000 + EMULATES CEQ. 00861100 + ; 00861200 + STREAMADJUSTSICHAR; 00861300 + STREAMADJUSTDICHAR; 00861400 + TFFF:= TRUE; 00861500 + WHILE N > 0 DO 00861600 + BEGIN 00861700 + IF STREAMGETSC = STREAMGETDC THEN % COLLATING SEQ IS IMMATERIAL 00861800 + BEGIN 00861900 + STREAMSKIPSI(+1); 00862000 + STREAMSKIPDI(+1); 00862100 + N:= *-1; 00862200 + END 00862300 + ELSE 00862400 + BEGIN 00862500 + TFFF:= FALSE; 00862600 + STREAMSKIPSI(+N); 00862700 + STREAMSKIPDI(+N); 00862800 + N:= 0; 00862900 + END; 00863000 + END WHILE; 00863100 + 00863200 + STREAMCOMPAREEQLQQ:= TFFF; 00863300 + END STREAMCOMPAREEQL; 00863400 + 00875000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00875100 +DEFINE STREAMCOMPAREGEQ(N) = 00875200 + STREAMCOMPAREGEQQQ(MBASE, SBASE, N) #; 00875300 +BOOLEAN PROCEDURE STREAMCOMPAREGEQQQ(MBASE, SBASE, N); 00875400 + VALUE N; 00875500 + ARRAY MBASE, SBASE[0]; 00875600 + REAL N; 00875700 + BEGIN COMMENT 00875800 + COMPARES "N" CHARACTERS BETWEEN SOURCE AND DESTINATION FOR A 00875900 + GREATER-THAN-OR-EQUAL CONDITION. ADVANCES BOTH INDEXES BY "N". 00876000 + EMULATES CEG. 00876100 + ; 00876200 + STREAMADJUSTSICHAR; 00876300 + STREAMADJUSTDICHAR; 00876400 + TFFF:= TRUE; 00876500 + WHILE N > 0 DO 00876600 + BEGIN 00876700 + IF STREAMGETSC = STREAMGETDC THEN 00876800 + BEGIN 00876900 + STREAMSKIPSI(+1); 00877000 + STREAMSKIPDI(+1); 00877100 + N:= *-1; 00877200 + END 00877300 + ELSE 00877400 + BEGIN 00877500 + IF BICCOLLATE[STREAMGETSC] < BICCOLLATE[STREAMGETDC] THEN 00877600 + TFFF:= FALSE; 00877700 + 00877800 + STREAMSKIPSI(+N); 00877900 + STREAMSKIPDI(+N); 00878000 + N:= 0; 00878100 + END; 00878200 + END WHILE; 00878300 + 00878400 + STREAMCOMPAREGEQQQ:= TFFF; 00878500 + END STREAMCOMPAREGEQ; 00878600 + 00880000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00880100 +DEFINE STREAMSCLSS(CHR) = 00880200 + STREAMSCLSSQQ(MBASE, CHR) #; 00880300 +BOOLEAN PROCEDURE STREAMSCLSSQQ(MBASE, CHR); 00880400 + VALUE CHR; 00880500 + ARRAY MBASE[0]; 00880600 + REAL CHR; 00880700 + BEGIN COMMENT 00880800 + COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 00880900 + LESS-THAN CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 00881000 + EMULATES TLS. 00881100 + ; 00881200 + STREAMADJUSTSICHAR; 00881300 + STREAMSCLSSQQ:= TFFF:= (BICCOLLATE[STREAMGETSC] < BICCOLLATE[CHR]); 00881400 + END STREAMSCLSS; 00881500 + 00881600 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00881700 +DEFINE STREAMSCLEQ(CHR) = 00881800 + STREAMSCLEQQQ(MBASE, CHR) #; 00881900 +BOOLEAN PROCEDURE STREAMSCLEQQQ(MBASE, CHR); 00882000 + VALUE CHR; 00882100 + ARRAY MBASE[0]; 00882200 + REAL CHR; 00882300 + BEGIN COMMENT 00882400 + COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 00882500 + LESS-THAN CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 00882600 + EMULATES TLS. 00882700 + ; 00882800 + STREAMADJUSTSICHAR; 00882900 + STREAMSCLEQQQ:= TFFF:= (BICCOLLATE[STREAMGETSC] < BICCOLLATE[CHR]); 00883000 + END STREAMSCLEQ; 00883100 + 00883200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00883300 +DEFINE STREAMSCEQL(CHR) = 00883400 + STREAMSCEQLQQ(MBASE, CHR) #; 00883500 +BOOLEAN PROCEDURE STREAMSCEQLQQ(MBASE, CHR); 00883600 + VALUE CHR; 00883700 + ARRAY MBASE[0]; 00883800 + REAL CHR; 00883900 + BEGIN COMMENT 00884000 + COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR AN 00884100 + EQUAL CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 00884200 + EMULATES TEQ. 00884300 + ; 00884400 + STREAMADJUSTSICHAR; 00884500 + STREAMSCEQLQQ:= TFFF:= (STREAMGETSC=CHR); % COLLATING SEQ IMMATERIAL 00884600 + END STREAMSCEQL; 00884700 + 00884800 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00884900 +DEFINE STREAMSCNEQ(CHR) = 00885000 + STREAMSCNEQQQ(MBASE, CHR) #; 00885100 +BOOLEAN PROCEDURE STREAMSCNEQQQ(MBASE, CHR); 00885200 + VALUE CHR; 00885300 + ARRAY MBASE[0]; 00885400 + REAL CHR; 00885500 + BEGIN COMMENT 00885600 + COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 00885700 + NOT-EQUAL CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 00885800 + EMULATES TNE. 00885900 + ; 00886000 + STREAMADJUSTSICHAR; 00886100 + STREAMSCNEQQQ:= TFFF:= (STREAMGETSC^=CHR); % COLLATING SEQ IMMATERIAL 00886200 + END STREAMSCNEQ; 00886300 + 00886400 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00886500 +DEFINE STREAMSCGEQ(CHR) = 00886600 + STREAMSCGEQQQ(MBASE, CHR) #; 00886700 +BOOLEAN PROCEDURE STREAMSCGEQQQ(MBASE, CHR); 00886800 + VALUE CHR; 00886900 + ARRAY MBASE[0]; 00887000 + REAL CHR; 00887100 + BEGIN COMMENT 00887200 + COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 00887300 + GREATER-THAN-OR-EQUAL CONDITION. DOES NOT ADVANCE THE SOURCE 00887400 + INDEX. EMULATES TEG. 00887500 + ; 00887600 + STREAMADJUSTSICHAR; 00887700 + STREAMSCGEQQQ:= TFFF:= (BICCOLLATE[STREAMGETSC] >= BICCOLLATE[CHR]); 00887800 + END STREAMSCGEQ; 00887900 + 00888000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00888100 +DEFINE STREAMSCGTR(CHR) = 00888200 + STREAMSCGTRQQ(MBASE, CHR) #; 00888300 +BOOLEAN PROCEDURE STREAMSCGTRQQ(MBASE, CHR); 00888400 + VALUE CHR; 00888500 + ARRAY MBASE[0]; 00888600 + REAL CHR; 00888700 + BEGIN COMMENT 00888800 + COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 00888900 + GREATER-THAN CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 00889000 + EMULATES TGR. 00889100 + ; 00889200 + STREAMADJUSTSICHAR; 00889300 + STREAMSCGTRQQ:= TFFF:= (BICCOLLATE[STREAMGETSC] > BICCOLLATE[CHR]); 00889400 + END STREAMSCGTR; 00889500 + 00890000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00890100 +DEFINE STREAMSCALPHA = 00890200 + STREAMSCALPHAQQ(MBASE) #; 00890300 +BOOLEAN PROCEDURE STREAMSCALPHAQQ(MBASE); 00890400 + ARRAY MBASE[0]; 00890500 + BEGIN COMMENT 00890600 + TESTS THE CURRENT SOURCE CHARACTER FOR MEMBERSHIP IN THE "ALPHA" 00890700 + SET (0-9, A-Z, AND ODDLY, "?"). DOES NOT ADVANCE THE SOURCE INDEX.00890800 + EMULATES TAN. 00890900 + ; 00891000 + STREAMADJUSTSICHAR; 00891100 + STREAMSCALPHAQQ:= TFFF:= (STREAMGETSC IN BICALPHA); 00891200 + END STREAMSCALPHA; 00891300 + $ ENDSEGMENT 00899900 + 00900000 + $ BEGINSEGMENT 00900050 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00900100 +PROCEDURE PACKEBCDICTOBIC(S, SX, D, DX, N); 00900200 + VALUE SX, DX, N; 00900300 + ARRAY S, D[0]; 00900400 + REAL SX, DX, N; 00900500 + BEGIN COMMENT 00900600 + PACKS 8-BIT EBCDIC CHARACTERS TO 6-BIT BIC CHARACTERS FROM 00900700 + ARRAY S TO ARRAY D. SX IS THE 8-BIT CHARACTER OFFSET INTO S AND 00900800 + DX IS THE 6-BIT CHARACTER OFFSET INTO D. N IS THE NUMBER OF 00900900 + CHARACTERS TO PACK. PACKING PROCEEDS IN A FORWARD DIRECTION SO 00901000 + THAT SOURCE AND DESTINATION CAN REFER TO THE SAME LOCATION. 00901100 + THE SOURCE DATA IS UNCONDITIONALLY OVERWRITTEN WITH 8-BIT BIC. 00901200 + ; 00901300 + REAL 00901400 + NC, % NR CHARS LEFT TO PACK 00901500 + SA, % SOURCE ACCUMULATOR WORD, 00901600 + SB, % SOURCE BIT NBR 00901700 + SW, % SOURCE WORD INDEX 00901800 + DA, % DESTINATION ACCUMULATOR WORD 00901900 + DB, % DESTINATION BIT NBR 00902000 + DW; % DESTINATION WORD INDEX 00902100 + 00902200 + SW:= SX DIV 6; 00902300 + SB:= 45-(SX MOD 6)*8; 00902400 + DW:= DX DIV 8; 00902500 + DB:= 47-(DX MOD 8)*6; 00902600 + REPLACE POINTER(S[SX],8) BY POINTER(S[SX],8) FOR N WITH EBCDICTOBIC; 00902700 + SA:= S[SW]; 00902800 + DA:= D[DW]; 00902900 + NC:= N; 00903000 + WHILE NC > 0 DO 00903100 + BEGIN 00903200 + DA:= * & (SA)[DB:SB:6]; 00903300 + NC:= *-1; 00903400 + IF NC > 0 THEN 00903500 + BEGIN 00903600 + IF SB > 7 THEN 00903700 + SB:= *-8 00903800 + ELSE 00903900 + BEGIN 00904000 + SB:= 45; 00904100 + SA:= S[SW:= *+1]; 00904200 + END; 00904300 + 00904500 + IF DB > 5 THEN 00904600 + DB:= *-6 00904700 + ELSE 00904800 + BEGIN 00904900 + D[DW]:= DA; 00905000 + DB:= 47; 00905100 + DA:= D[DW:= *+1]; 00905200 + END; 00905300 + END; 00905350 + END WHILE; 00905400 + 00905500 + D[DW]:= DA; 00905600 + END PACKEBCDICTOBIC; 00905700 + 00905800 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00905900 +PROCEDURE UNPACKBICTOEBCDIC(S, SX, D, DX, N); 00906000 + VALUE SX, DX, N; 00906100 + ARRAY S, D[0]; 00906200 + REAL SX, DX, N; 00906300 + BEGIN COMMENT 00906400 + UNPACKS 6-BIT BIC CHARACTERS TO 8-BIT EBCDIC CHARACTERS FROM 00906500 + ARRAY S TO ARRAY D. SX IS THE 6-BIT CHARACTER OFFSET INTO S AND 00906600 + DX IS THE 8-BIT CHARACTER OFFSET INTO D. N IS THE NUMBER OF 00906700 + CHARACTERS TO UNPACK. UNPACKING PROCEEDS IN A REVERSE DIRECTION 00906800 + SO THAT SOURCE AND DESTINATION CAN REFER TO THE SAME LOCATION. 00906900 + ; 00907000 + REAL 00907100 + NC, % NR CHARS LEFT TO UNPACK 00907200 + SA, % SOURCE ACCUMULATOR WORD, 00907300 + SB, % SOURCE BIT NBR 00907400 + SW, % SOURCE WORD INDEX 00907500 + DA, % DESTINATION ACCUMULATOR WORD 00907600 + DB, % DESTINATION BIT NBR 00907700 + DW; % DESTINATION WORD INDEX 00907800 + 00907900 + SW:= (SX+N-1) DIV 8; 00908000 + SB:= 47-((SX+N-1) MOD 8)*6; 00908100 + DW:= (DX+N-1) DIV 6; 00908200 + DB:= 47-((DX+N-1) MOD 6)*8; 00908300 + SA:= S[SW]; 00908400 + DA:= D[DW]; 00908500 + NC:= N; 00908600 + WHILE NC > 0 DO 00908700 + BEGIN 00908800 + DA:= * & (SA.[SB:6])[DB:8]; 00908900 + NC:= *-1; 00909000 + IF NC > 0 THEN 00909100 + BEGIN 00909200 + IF SB < 47 THEN 00909300 + SB:= *+6 00909400 + ELSE 00909500 + BEGIN 00909600 + SB:= 5; 00909700 + SA:= S[SW:= *-1]; 00909800 + END; 00909900 + 00910100 + IF DB < 47 THEN 00910200 + DB:= *+8 00910300 + ELSE 00910400 + BEGIN 00910500 + D[DW]:= DA; 00910600 + DB:= 7; 00910700 + DA:= D[DW:= *-1]; 00910800 + END; 00910900 + END; 00910950 + END WHILE; 00911000 + 00911100 + D[DW]:= DA; 00911200 + REPLACE POINTER(D[DX],8) BY POINTER(D[DX],8) FOR N WITH BICTOEBCDIC; 00911300 + END UNPACKBICTOEBCDIC; 00911400 + 00920000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00920100 +REAL PROCEDURE BIC2EBC(B); 00920200 + VALUE B; 00920300 + REAL B; 00920400 + BEGIN COMMENT 00920500 + CONVERTS THE LOW-ORDER SIX 6-BIT BIC CHARACTERS IN W TO THEIR 00920600 + 8-BIT EBCDIC EQUIVALENTS AND RETURNS THE RESULTING WORD. 00920700 + ; 00920800 + 00921100 + EBCDICBUFF[0]:= B.[5:6] & (B)[13:11:6] & (B)[21:17:6] & (B)[29:23:6] 00921200 + & (B)[37:29:6] & (B)[45:35:6]; 00921300 + REPLACE POINTER(EBCDICBUFF,8) BY 00921400 + POINTER(EBCDICBUFF,8) FOR 6 WITH BICTOEBCDIC; 00921450 + BIC2EBC:= EBCDICBUFF[0]; 00921500 + END BIC2EBC; 00921600 + $ ENDSEGMENT 00921700 + 01090000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%01090100 +%% END STREAM PROCEDURE EMULATION MODULE %%01090200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%01090300 + 01100000=00510000= + COMMENT EXAMIN RETURNS THE CHARACTER AT ABSOLUTE ADDRESS NCR; 01100100=00510000= +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%01100200=00511000= +REAL PROCEDURE EXAMIN(A, NCR); 01100300=00511000= +VALUE 01100400=00511000= + NCR; 01100500=00511000= +REAL 01100520 + NCR; 01100540 +ARRAY 01100560 + A[0]; 01100580 + BEGIN 01100600=00512000= + STREAMLOCALS; 01100650 + STREAMSETSI(A, NCR); 01100700=00512000= + EXAMIN:= STREAMGETSC; 01100800=00512000= + END; 01101100=00512000= +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%01101200=00512100= +REAL PROCEDURE EXAMINELAST(A, AC, CT); 01101300=00512100= +VALUE 01101400=00512100= + AC, CT; 01101500=00512100= +ARRAY 01101520 + A[0]; 01101540 +REAL 01101560 + AC, CT; 01101580 + BEGIN 01101600=00512200= + STREAMLOCALS; 01101650 + STREAMSETSI(A, AC); 01101700=00512300= + STREAMSKIPSI(+CT); 01101800=00512300= + EXAMINELAST:= STREAMGETSC; 01101900=00512400= + END EXAMINELAST; 01102200=00512600= +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%01102300 + COMMENT MOVECHARACTERS MOVES N CHARACTERS FROM THE SK-TH CHARACTER 01102400=00513000= + IN SORCE TO THE DK-TH CHARACTER IN DEST, 0<=N<=63,0<=SK<=127; 01102500=00514000= +PROCEDURE MOVECHARACTERS(N, SORCE, SX, SK, DEST, DX, DK); 01102600=00515000= +VALUE 01102700=00516000= + N, SX, SK, DX, DK; 01102800=00516000= +REAL 01102850 + N, SX, SK, DX, DK; 01102900 +ARRAY 01102950 + SORCE, DEST[0]; 01103000 + BEGIN 01103100=00517000= + STREAMLOCALS; 01103200 + STREAMSETDI(DEST, DX); 01104200=00519000= + STREAMSETSI(SORCE, SX); 01104500=00521000= + STREAMSKIPSI(+SK); 01104600=00521000= + STREAMSKIPDI(+DK); 01104700=00521000= + STREAMTRANSFERCHR(N); 01104800=00521000= + END MOVECHARACTERS; 01104900=00522000= 01254900 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%01254920 %% INNER BLOCK OF COMPILER %%01254940 @@ -650,7 +1843,7 @@ COMMENT IF A NEW COMPILER-DEFINED OPTION IS ADDED, CHANGE USEROPINX 01565000 CHECKTOG = OPTIONWORD.[CHECKBIT:1] #, 01585000=01001220= DEBUGTOG = OPTIONWORD.[DEBUGBIT:1] #, 01590000=01001230= DECKTOG = OPTIONWORD.[DECKBIT:1] #, 01595000=01001240= - FORMATTOG = OPTIONWORD.[FORMATBIT:1] #, 01600000=01001250= + FORMATOG = OPTIONWORD.[FORMATBIT:1] #, 01600000=01001250= INTOG = OPTIONWORD.[INTBIT:1] #, 01605000=01001260= LISTATOG = OPTIONWORD.[LISTABIT:1] #, 01610000=01001270= LISTOG = OPTIONWORD.[LISTBIT:1] #, 01615000=01001280= @@ -702,7 +1895,7 @@ COMMENT SEQTOG INDICATES RESEQUENCING IS TO BE DONE; 01690000 SPECIAL[0:31]; 01865000=01003000= COMMENT THIS ARRAY HOLDS THE INTERNAL CODE FOR THE SPECIAL 01870000=01004000= CHARACTORS: IT IS FILLED DURING INITIALIZATION; 01875000=01005000= - SAVE ALPHA ARRAY 01880000=01006000= + ALPHA ARRAY 01880000=01006000= IDARRAY[0:127]; 01882000 ARRAY 01885000=01007000= INFO[0:31, 0:255]; 01890000=01007000= @@ -850,7 +2043,7 @@ XLUN; % THIS VARIABLE CONTROLS THE ASSIGNING OF 02295000 TION (IN [35:6]), AND THE FIRST 5 CHARACTERS OF ALPHA. 02600000=01014000= SUCCEDING WORDS CONTAIN THE REMAINING CHARACTORS OF ALPHA,02605000=01015000= FOLLOWED BY ANY ADDITIONAL INFORMATION. THE ELBAT WORD 02610000=01016000= - AND THE ALPHA FOR ANY QUANTITY ARE NOT SPLUT ACROSS A ROW 02615000=01017000= + AND THE ALPHA FOR ANY QUANTITY ARE NOT SPLIT ACROSS A ROW 02615000=01017000= OF INFO. FOR PURPOSES OF FINDING AN IDENTIFIER OR 02620000=01018000= RESERVED WORD THE QUANTITIES ARE SCATTERED INTO 125 02625000=01019000= DIFERENT LISTS OR STACKES. WHICH STACK CONTAINS A QUANTITY02630000=01020000= @@ -899,7 +2092,7 @@ COMMENT INFO FORMAT 02675000 NOW S[L] POINTS TO THE ENTRY FOR B AND IT POINTS TO THE 02845000=01062000= ENTRY FOR A. 02850000=01063000= SIMILARLY,AFTER C IS ENTERED 02855000=01064000= - A[L] POINTS TO C,WHOSE ENTRY POINTS TO B WHOSE ENTRY 02860000=01065000= + S[L] POINTS TO C,WHOSE ENTRY POINTS TO B WHOSE ENTRY 02860000=01065000= POINTS TO A. 02865000=01066000= THE SECOND WORD OF EACH ENTRY IN INFO IS MADE UP AS FOLLOWS: 02870000=01067000= FWDPT =[46:1],THIS TELLS WHETHER A PROCEDURE WAS DECLARED 02875000=01068000= @@ -1032,7 +2225,7 @@ COMMENT INFO FORMAT 02675000 UNKNOWNID = 00 #, COMMENT 000; 03510000=01177000= STLABID = 01 #, COMMENT 001; 03515000=01178000= LOCLID = 02 #, COMMENT 002; 03520000=01179000= - DEFINEID = 03 #, COMMENT 003; 03525000=01180000= + DEFINEDID = 03 #, COMMENT 003; 03525000=01180000= LISTID = 04 #, COMMENT 004; 03530000=01181000= FRMTID = 05 #, COMMENT 005; 03535000=01182000= SUPERFRMTID = 06 #, COMMENT 006; 03540000=01183000= @@ -1056,7 +2249,7 @@ COMMENT INFO FORMAT 02675000 ALFAID = 23 #, COMMENT 027; 03630000=01200000= INTID = 24 #, COMMENT 030; 03635000=01201000= BOOARRAYID = 25 #, COMMENT 031; 03640000=01202000= - REALARAYID = 26 #, COMMENT 032; 03645000=01203000= + REALARRAYID = 26 #, COMMENT 032; 03645000=01203000= ALFARRAYID = 27 #, COMMENT 033; 03650000=01204000= INTARRAYID = 28 #, COMMENT 034; 03655000=01205000= LABELID = 29 #, COMMENT 035; 03660000=01206000= @@ -1213,7 +2406,7 @@ COMMENT INFO FORMAT 02675000 ELBAT[0:76]; 04415000=01319000= INTEGER 04420000=01319000= I, 04425000=01319000= - NEXTELBT; 04430000=01319000= + NXTELBT; 04430000=01319000= COMMENT ELBAT IS AN ARRAY HOLDING ELBAT WORDS FOR RECENTLY SCANNED 04435000=01320000= QUANTITIES. THE TABLE ROUTINE MAINTAINS THIS ARRAY. 04440000=01321000= (ELBAT IS TABLE SPELLED BACKWARDS.) THE TABLE ROUTINE 04445000=01322000= @@ -1233,6 +2426,8 @@ COMMENT INFO FORMAT 02675000 NCR, 04515000=01330000= LCR, 04520000=01330000= CLCR; 04530000=01330000= + ARRAY REFERENCE 04540000 + SBUFF[0]; % CURRENT SOURCE INPUT BUFFER 04540100 COMMENT FCR CONTAINS ABSOLUTE ADDRESS OF THE FIRST CHARACTOR OF 04545000=01332000= THE CARD IMAGE CURRENTLY BEING SCANNED. NCR THE ADDRESS 04550000=01333000= OF THE NEXT CHARACTOR TO BE SCANNED, AND LCR THE LAST 04555000=01334000= @@ -1540,7 +2735,7 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 REAL 06070000=01489000= P, COMMENT CONTAINS NUMBER OF FORMALS FOR STREAM PROCS; 06075000=01489000= Z; COMMENT CONTAINS 1ST WORD OF INFO FOR STREAM FUNCTIONS; 06080000=01490000= - SAVE ALPHA ARRAY 06090000=01491000= + ALPHA ARRAY 06090000=01491000= DEFINEARRAY[0:34]; 06092000 COMMENT THESE VARIABLES ARE USED TO CONTROL ACTION OF THE DEFINE. 06095000=01492000= DEFINECTR COUNTS DEPTH OF NESTING OF DEFINE-# PAIRS. 06100000=01493000= @@ -1610,24 +2805,28 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 DEFINE 06460000=01556100= CHUNK = 180 #; 06465000=01556100= FILE 06470000=01556200= - OUT CODE DISK[20:CHUNK](4, 30, SAVE ABS(SAVETIME)); 06475000=01556200= + CODE(KIND=DISK, MAXRECSIZE=30, FRAMESIZE=48, 06475000=01556200= + AREAS=20, AREASIZE=CHUNK, FILEUSE=OUT, PROTECTION=SAVE); 06475100 FILE 06480000=01557000= - IN CARD(RR1, 10, RR2); 06485000=01557000= - SAVE FILE OUT 06490000=01559000= - LINE DISK SERIAL[20:2400](RR3, 15, RR4, SAVE 10); 06492000 + CARD(KIND=READER, DEPENDENTSPECS, FILEUSE=IN); 06485000=01557000= + FILE 06490000=01559000= + LINE(KIND=PRINTER, MAXRECSIZE=20, FRAMESIZE=48, FILEUSE=OUT); 06492000 ARRAY 06495000=01559010= - LIN[0:20]; 06500000=01559010= - COMMENT PRINT OUTPUT BUILT IN LIN; 06505000=01559010= + LIN[0:20]; COMMENT PRINT OUTPUT BUILT IN LIN; 06500000=01559010= INTEGER 06510000=01559020= DA; 06515000=01559020= - SAVE ARRAY 06605000=01561056= - CBUF[0:9]; % INPUT BUFFERS. 06606000 - BOOLEAN 06610000=01561060= - REMOTOG; 06615000=01561060= + INTEGER 06520000 + CARDRECSIZE; % FRAMESIZE UNITS 06520100 + ARRAY 06605000=01561056= + CBUFF[0:9]; % INPUT BUFFER. 06606000 + ARRAY 06608000 + CODEBUFF[0:29]; % CODE FILE RECORD AREA 06608100 FILE 06640000=01561085= - DSK1 DISK SERIAL[20:816](2, 10, 30); 06645000=01561085= + DSK1(KIND=DISK, MAXRECSIZE=10, BLOCKSIZE=30, FRAMESIZE=48, 06645000=01561085= + AREAS=20, AREASIZE=816); 06645100 FILE 06650000=01561087= - DSK2 DISK SERIAL[20:450](2, 30, 30); 06655000=01561087= + DSK2(KIND=DISK, MAXRECSIZE=30, FRAMESIZE=48, 06655000=01561087= + AREAS=20, AREASIZE=450); 06655100 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07176000 REAL 07180000=01562000= C; 07185000=01562000= @@ -1657,7 +2856,7 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 INTERPTI = 469 #, 07305000=01579100= SORTI = 473 #, 07310000=01579200= DIALER = 559 #, 07315000=01579300= - FILEATTINT = 563 #, 07320000=01579350= + FILATTINT = 563 #, 07320000=01579350= POWERALL = 567 #, 07325000=01579355= SPECIALMATH = 570 #, 07330000=01580000= SORTA = 673 #; 07335000=01580000= @@ -1717,9 +2916,9 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 OLDNINFOO, COMMENT REMEMBERS OLD VALUE OF GLOBALNINFOO; 07605000=01620400= FIRSTX, COMMENT RELATIVE ADD OF FIRST EXECUTABLE CODE 07610000=01621000= IN BLOCK,INITIALIZED TO 4095 EACH TIME; 07615000=01622000= - SAVEL, COMMENT SAVE LOCATION FOR FIXUPS IN BLOCK; 07620000=01623000= - INTEGER NCII; 07625000=01624000= - COMMENT THIS CONTAINS THE COUNT OF CONSTANTS 07630000=01624000= + SAVEL; COMMENT SAVE LOCATION FOR FIXUPS IN BLOCK; 07620000=01623000= + INTEGER 07625000=01624000= + NCII; COMMENT THIS CONTAINS THE COUNT OF CONSTANTS 07625100=01624000= ENTERED IN INFO AT ANY GIVEN TIME; 07635000=01625000= REAL 07640000=01625100= FILETHING; 07645000=01625100= @@ -1792,58 +2991,52 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 TRB = 53#; COMMENT (XX65) 7.4.7.3 TRANSFER BITS; 07980000=01682000= REAL 07985000=01683000= MAXSTACK, 07990000=01683000= - STACKCTR; 07995000=01683000= + STACKCTR; 07995000=01683000= INTEGER 08000000=01684000= - MAXROW; 08005000=01684000= - COMMENT THIS CONTAINS THE MAXIMUM ROW SIZE OF ALL NON-SAVE 08010000=01685000= + MAXROW;COMMENT THIS CONTAINS THE MAXIMUM ROW SIZE OF ALL NON-SAVE 08005000=01684000= ARRAYS DECLARED. ITS USE IS LIKE THAT OF MAXSAVE; 08015000=01686000= INTEGER 08020000=01687000= - SEGSIZEMAX; 08025000=01687000= - COMMENT CONTAINS MAX SEGMENT SIZE; 08030000=01687000= + SEGSIZEMAX; COMMENT CONTAINS MAX SEGMENT SIZE; 08025000=01687000= INTEGER 08035000=01688000= F; 08040000=01688000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08042000 - STREAM PROCEDURE MOVECODE(EDOC, TEDOC); 08045000=01688010= - BEGIN % SWAPS THE EDOC AND TEDOC ARRAYS. 08050000=01688020= - LOCAL T1, T2, T3; 08055000=01688020= - SI:= EDOC; % POINT SI TO EDOC DOPE VECTOR 08060000=01688030= - T1:= SI; % SAVE ADDR EDOC DOPE VECTOR IN T1 08065000=01688030= - SI:= TEDOC; % POINT SI TO TEDOC DOPE VECTOR 08070000=01688030= - T2:= SI; % SAVE ADDR TEDOC DOPE VECTOR IN T2 08075000=01688030= - SI:= LOC EDOC; % POINT SI TO EDOC PARAM CELL 08080000=01688030= - SI:= SI+3; % MOVE SI 3 CHAR TO BIT 18 08085000=01688030= - DI:= LOC T3; % POINT DI TO T3 STACK CELL 08090000=01688030= - DI:= DI+5; % MOVE DI 5 CHAR TO BIT 30 IN T3 08095000=01688040= - SKIP 3 DB; % MOVE DI TO BIT 33 [START OF DESCR ADDR FIELD] 08100000=01688040= - 15(IF SB THEN DS:= 1 SET ELSE DS:= 1 RESET;SKIP 1 SB); 08105000=01688050= - % MOVE 15 BITS FROM EDOC STACK CELL TO T3 STACK CELL 08106000 - SI:= LOC EDOC; % POINT SI TO EDOC PARAM CELL 08110000=01688050= - DI:= LOC T2; % POINT DI TO T2 STACK CELL 08115000=01688050= - DS:= 5 CHR; % MOVE 5 CHAR (30 BITS) FROM EDOC DESC TO T2 08120000=01688050= - 3(IF SB THEN DS:= 1 SET ELSE DS:= 1 RESET;SKIP 1 SB); % MOVE 3 MORE 08125000=01688060= - DI:= T3; % POINT DI TO ADDR IN T3 08130000=01688060= - SI:= LOC T2; % POINT SI TO T2 STACK CELL 08135000=01688060= - DS:= WDS; % MOVE T2 TO ADDRESS IN T3 08140000=01688060= - DI:= LOC T3; 08145000=01688070= - DI:= DI+5; 08150000=01688070= - SKIP 3 DB; 08155000=01688070= - SI:= LOC TEDOC; 08160000=01688070= - SI:= SI+3; 08165000=01688070= - 15(IF SB THEN DS:= 1 SET ELSE DS:= 1 RESET;SKIP 1 SB); 08170000=01688080= - SI:= LOC TEDOC; 08175000=01688080= - DI:= LOC T1; 08180000=01688090= - DS:= 5 CHR; 08185000=01688090= - 3(IF SB THEN DS:= 1 SET ELSE DS:= 1 RESET;SKIP 1 SB); 08190000=01688090= - DI:= T3; 08195000=01688100= - SI:= LOC T1; 08200000=01688100= - DS:= WDS 08205000=01688110= + PROCEDURE MOVECODE(EDOC, TEDOC); 08045000=01688010= + ARRAY 08045100 + EDOC, TEDOC[0,0]; 08045200 + BEGIN COMMENT 08050000=01688020= + THIS IS UGLY. ORIGINALLY "MOVECODE" WAS A STREAM PROCEDURE THAT 08050100 + SWAPPED THE MOM DESCRIPTORS FOR THE TWO ARRAY PARAMETERS, 08050200 + EFFECTIVELY EXCHANGING THEM IN MEMORY. THERE ISN'T ANY GOOD 08050300 + WAY TO DO THAT ON AN E-MODE SYSTEM, AND WE CAN'T USE ARRAY 08050400 + REFERENCE VARIABLES, BECAUSE TEDOC IS LOCALLY DECLARED IN THE 08050500 + BLOCK OF THE CALLER. THAT WOULD REQUIRE UP-LEVEL ADDRESSING, 08050600 + WHICH IS FORBIDDEN. FURTHER, IN THE CASE OF THE "BLOCK" ROUTINE,08050700 + TEDOC IS RECURSIVELY ALLOCATED AS "BLOCK" DESCENDS INTO THE 08050800 + LEXICAL STRUCTURE OF THE PROGRAM. WITHOUT A LOT OF MESSY 08050900 + REDESIGN WORK, THE ONLY WAY TO IMPLEMENT THIS IN E-MODE IS TO 08051000 + ACTUALLY MOVE THE DATA BETWEEN THE TWO ARRAYS. UGH. 08051100 + ; 08051200 + INTEGER 08055000=01688020= + I; 08055100 + ARRAY 08055200 + TEMP[0:127]; 08055300 + 08060000=01688030= + FOR I:= 0 STEP 1 UNTIL 7 DO 08065000=01688030= + BEGIN 08070000=01688030= + REPLACE POINTER(TEMP,0) BY 08075000=01688030= + POINTER(EDOC[I,*],0) FOR 128 WORDS; 08075100 + REPLACE POINTER(EDOC[I,*],0) BY 08075200 + POINTER(TEDOC[I,*],0) FOR 128 WORDS; 08075300 + REPLACE POINTER(TEDOC[I,*],0) BY 08075400 + POINTER(TEMP,0) FOR 128 WORDS; 08075500 + END FOR; 08075600 END; 08210000=01688110= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08212000 REAL 08215000=01689000= NLO, 08220000=01689000= - NHI, 08225000=01689000= - TLO, 08230000=01689000= - THI; 08235000=01689000= + NHI, 08225000=01689000= + TLO, 08230000=01689000= + THI; 08235000=01689000= BOOLEAN 08240000=01690000= DPTOG; 08245000=01690000= COMMENT THE ABOVE THINGS ARE TEMP STORAGE FOR DOUBLE NOS;08250000=01691000= @@ -1851,10 +3044,10 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 FZERO = 896 #; 08260000=01692000= REAL 08265000=01693000= T1, 08270000=01693000= - T2, 08275000=01693000= - N, 08280000=01693000= - K, 08285000=01693000= - AKKUM; 08290000=01693000= + T2, 08275000=01693000= + N, 08280000=01693000= + K, 08285000=01693000= + AKKUM; 08290000=01693000= BOOLEAN 08295000=01694000= STOPGSP; 08300000=01694000= INTEGER 08305000=01695000= @@ -1870,7 +3063,7 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 PRT CELL HAS A PERMANENT ASSIGNMENT; 08355000=01702000= INTEGER 08360000=01703000= PRTI, 08365000=01703000= - PRTIMAX; 08370000=01703000= + PRTIMAX; 08370000=01703000= COMMENT PRTIMAX GIVES NEXT PRT CELL AVAILABLE FOR PERMANENT ASSIGN-08375000=01704000= MENT. PRTI GIVES NEXT PRT CELL POSSIBLY AVAILABLE FOR 08380000=01705000= TEMPORARY ASSIGNMENT; 08385000=01706000= @@ -1933,7 +3126,7 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 REAL PROCEDURE TAKE(X); 08670000=01718100= VALUE 08675000=01718100= X; 08680000=01718100= - INTEGER 08685000=01718100= + REAL 08685000=01718100= X; 08690000=01718100= FORWARD; 08695000=01718100= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08700000=01718100= @@ -1963,86 +3156,53 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 USED BY LISTELEMENT TO COMPUTE VALUES TO STORE IS LSTRTN; 08820000=01725000= PROCEDURE SCANNER; 08825000=01730000= FORWARD; 08830000=01730000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08835000=01730000= - COMMENT MKABS CONVERTS A DESCRIPTOR TO AN ABSOLTE ADDRESS; 08840000=01732000= - REAL STREAM PROCEDURE MKABS(A); 08845000=01733000= - BEGIN 08855000=01734000= - DI:= A; 08860000=01734000= - MKABS:= DI 08865000=01734000= - END MKABS; 08870000=01734000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08872000 - STREAM PROCEDURE MOVE(W)"WORDS FROM"(A)"TO"(B); 08875000=01735000= - VALUE 08880000=01735000= - W; 08885000=01735000= + PROCEDURE MOVE(W)"WORDS FROM"(A, AX)"TO"(B, BX); 08875000=01735000= + VALUE 08875100 + W, AX, BX; 08875200 + ARRAY 08875300 + A, B[0]; 08875400 + REAL 08875500 + W, AX, BX; 08875600 BEGIN 08890000=01736000= - LOCAL T; 08895000=01736000= - SI:= LOC W; 08900000=01736100= - DI:= LOC T; 08905000=01736100= - SI:= SI+6; 08910000=01736100= - DI:= DI+7; 08915000=01736100= - DS:= CHR; 08920000=01736100= - SI:= A; 08925000=01736200= - DI:= B; 08930000=01736200= - T(DS:= 32 WDS;DS:= 32 WDS); 08935000=01736200= - DS:= W WDS; 08940000=01736200= + REPLACE POINTER(B[BX],0) BY POINTER(A[AX],0) FOR (W) WORDS; 08895000=01736000= END MOVE; 08945000=01736300= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08946000 - STREAM PROCEDURE ZEROUT(DEST, NDIV32, NMOD32); 08950000=01737000= - VALUE 08955000=01737050= - NDIV32, 08960000=01737050= - NMOD32; 08965000=01737050= + DEFINE ZEROUT(DEST, DX, NDIV32, NMOD32) = 08950000=01737000= BEGIN 08970000=01737100= - DI:= DEST; 08975000=01737100= - NDIV32(32(DS:= 8 LIT 6"0")); 08980000=01737150= - NMOD32(DS:= 8 LIT 6"0"); 08985000=01737200= - END; 08990000=01737250= + REPLACE POINTER(DEST[DX],0) BY 6"00000000" FOR 08975000=01737100= + ((NDIV32)*32+(NMOD32)) WORDS; 08980000 + END #; 08990000=01737250= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08995000=01737300= COMMENT "BLANKET" BLANKS OUT N+1 WORDS IN "THERE"; 09000000=01737300= - STREAM PROCEDURE BLANKET(N, THERE); 09005000=01737350= - VALUE 09010000=01737350= - N; 09015000=01737350= + DEFINE BLANKET(N, THERE) = 09005000=01737350= BEGIN 09020000=01737400= - DI:= THERE; 09025000=01737450= - DS:= 8 LIT 6" "; 09030000=01737450= - SI:= THERE; 09035000=01737450= - DS:= N WDS; 09040000=01737450= - END BLANKET; 09045000=01737500= + REPLACE POINTER(THERE,0) BY 6" " FOR (N)+1 WORDS; 09025000=01737450= + END BLANKET #; 09045000=01737500= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09045100 PROCEDURE STEPIT; 09050000=01741000= FORWARD; 09055000=01741000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09060000=01741000= COMMENT SEQCHANGE WILL CONV A MACHING NO. TO PROPER OUTPUT FORM; 09065000=01741100= - STREAM PROCEDURE CHANGESEQ(VAL, OLDSEQ); 09070000=01741200= + PROCEDURE CHANGESEQ(VAL, BUFF, OLDSEQ); 09070000=01741200= VALUE 09075000=01741200= - OLDSEQ; 09080000=01741200= + VAL, OLDSEQ; 09080000=01741200= + ARRAY 09080100 + BUFF[0]; 09080200 + REAL 09080300 + VAL, OLDSEQ; 09080400 BEGIN 09085000=01741300= - DI:= OLDSEQ; 09090000=01741400= - SI:= VAL; 09095000=01741400= - DS:= 8 DEC 09100000=01741500= + STREAMLOCALS; 09085100 + STREAMSETDI(BUFF, OLDSEQ); 09090000=01741400= + STREAMSETLOCSI(VAL); 09095000=01741400= + STREAMTRANSFERDEC(8); 09100000=01741500= END; 09105000=01741500= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09106000 - STREAM PROCEDURE SEQUENCEWARNING(L); 09110000=01742100= + DEFINE SEQUENCEWARNING(L) = 09110000=01742100= BEGIN 09115000=01742110= - DI:= L; 09120000=01742110= - DI:= DI-8; 09125000=01742110= - DS:= 24 LIT 6"SEQUENCE WARNING<<<<<<<<"; 09130000=01742110= - END; 09135000=01742110= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09140000=01742200= - BOOLEAN STREAM PROCEDURE NONBLANK(FCR); 09145000=01742200= - VALUE 09150000=01742200= - FCR; 09155000=01742200= - COMMENT NONBLANK SCANS CARD FOR ALL BLANKS-- 09160000=01742300= - TRUE IF ANY VISIBLE CHARACTER ; 09165000=01742400= - BEGIN 09170000=01742500= - LABEL 09175000=01742600= - NED; 09180000=01742600= - SI:= FCR; 09185000=01742700= - TALLY:= 0; 09190000=01742800= - 2(36(IF SC ^= 6" " THEN JUMP OUT 2 TO NED;SI:= SI+1)); 09195000=01742900= - TALLY:= 63; 09200000=01743000= -NED: 09205000=01743100= - TALLY:= TALLY+1; 09210000=01743100= - NONBLANK:= TALLY 09215000=01743300= - END NONBLANK; 09220000=01743300= + REPLACE POINTER(L,8)-8 BY 09120000=01742110= + 6"SEQUENCE", 6" WARNING", 6"<<<<<<<<"; 09130000=01742110= + END #; 09135000=01742110= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09222000 INTEGER 09225000=01750000= FAULTLEVEL; COMMENT THIS IS FOR THE RUN0TIME ERROR KLUDGE-- 09230000=01750000= @@ -2065,36 +3225,33 @@ NED: 09205000 BEGIN 09620000=01821000= INTEGER 09625000=01822000= H, 09630000=01822000= - MIN, 09635000=01822000= - Q; 09640000=01822000= - ALPHA 09645000=01822000= + MN, 09635000=01822000= + Q; 09640000=01822000= + REAL 09645000=01822000= N1, 09650000=01822000= - N2; 09655000=01822000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09660000=01823000= - ALPHA STREAM PROCEDURE DATER(DATE); 09665000=01823000= - VALUE 09670000=01823000= - DATE; 09675000=01823000= - BEGIN 09680000=01824000= - DI:= LOC DATER; 09685000=01825000= - SI:= LOC DATE; 09690000=01825000= - SI:= SI+2; 09695000=01825000= - 2(DS:= 2 CHR;DS:= LIT 6"/"); 09700000=01826000= - DS:= 2 CHR; 09705000=01826000= - END OF DATER; 09710000=01827000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09712000 + N2; 09655000=01822000= + POINTER 09655100 + P; 09655200 H:= TIME1 DIV 216000; 09715000=01828000= - MIN:= (TIME1 DIV 3600) MOD 60; 09720000=01828000= - N1:= CODE.MFID; 09725000=01828500= - N2:= CODE.FID; 09730000=01828500= + MN:= (TIME1 DIV 3600) MOD 60; 09720000=01828000= + REPLACE P:POINTER(CODEBUFF,8) BY CODE.TITLE; 09725000=01828500= + N2:= MIN(OFFSET(P)-1, 118); 09730000=01828500= WRITE(LINE, 09735000=01829100= $ SET OMIT = NOT ALGOL 09735100=01829900= + = 12 THEN "PM." ELSE "AM.", 09735700=01835000= + (120-N2) DIV 2, N2, POINTER(CODEBUFF,8), (120-N2) DIV 2, N2);09740000=01835550= NOHEADING:= FALSE; 09760000=01837000= END OF DATIME; 09765000=01837000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09770000=01837000= @@ -2146,23 +3303,26 @@ NED: 09205000 INDEX; 10515000=02001750= BEGIN 10520000=02001755= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10522000 - STREAM PROCEDURE MOVEREFINFO(S, D, N); 10525000=02001760= + PROCEDURE MOVEXREFINFO(S, SX, D, DX, N); 10525000=02001760= VALUE 10530000=02001765= - N; 10535000=02001765= + SX, DX, N; 10535000=02001765= + ARRAY 10535100 + S, D[0]; 10535200 + REAL 10535300 + SX, DX, N; 10535400 BEGIN 10540000=02001770= - SI:= D; 10545000=02001775= - DI:= D; 10550000=02001775= - DS:= 8 LIT 6" "; 10555000=02001775= - DS:= 7 WDS; % BLANK RECORD 10560000=02001775= - SI:= S; 10565000=02001780= - SI:= SI+3; 10570000=02001780= - DI:= D; 10575000=02001780= - DS:= N CHR; % MOVE IDENTIFIER 10580000=02001780= + STREAMLOCALS; 10540100 + STREAMSETDI(D, DX); 10545000=02001775= + STREAMSMEARLIT(8*8, 6" "); % BLANK RECORD 10550000=02001775= + STREAMSETSI(S, SX); 10565000=02001780= + STREAMSKIPSI(+3); 10570000=02001780= + STREAMSETDI(D, DX); 10575000=02001780= + STREAMTRANSFERCHR(N); % MOVE IDENTIFIER 10580000=02001780= END OF MOVEXREFINFO; 10585000=02001785= - % 10590000=02001790= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10590000=02001790= IF XREFINFO[INDEX].IDNOF ^= 0 THEN % DUMP IT 10595000=02001795= BEGIN 10600000=02001800= - MOVEXREFINFO(INFO[INDEX.LINKR, INDEX.LINKC+1], XREFAY1[*], 10605000=02001810= + MOVEXREFINFO(INFO[INDEX.LINKR,*], INDEX.LINKC+1, XREFAY1[*], 0, 10605000=02001810= TAKE(INDEX+1).[35:6]); 10610000=02001810= XREFAY1[8]:= XREFINFO[INDEX]; 10615000=02001815= XREFAY1[9]:= TAKE(INDEX); % ELBAT WORD 10620000=02001820= @@ -2171,110 +3331,191 @@ NED: 09205000 END; 10635000=02001825= END OF CROSSREFDUMP; 10640000=02001830= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10645000=02001830= - REAL STREAM PROCEDURE CONV(ACCUM, SKP, N); 10650000=02001831= + REAL PROCEDURE CONV(ACCUM, AX, SKP, N); 10650000=02001831= VALUE 10660000=02001831= - SKP, 10665000=02001831= - N; 10670000=02001831= + AX, SKP, N; 10665000=02001831= + ARRAY 10665100 + ACCUM[0]; 10665200 + REAL 10665300 + AX, SKP, N; 10665400 BEGIN 10675000=02001832= - SI:= ACCUM; 10680000=02001833= - SI:= SI+SKP; 10685000=02001833= - SI:= SI+3; 10690000=02001833= - DI:= LOC CONV; 10695000=02001833= - DS:= N OCT 10700000=02001834= + STREAMLOCALS; 10675100 + STREAMSETSI(ACCUM, AX); 10680000=02001833= + STREAMSKIPSI(+SKP); 10685000=02001833= + STREAMSKIPSI(+3); 10690000=02001833= + STREAMSETDI(STREAMTEMPD, 0); 10695000=02001833= + STREAMTRANSFEROCT(N); 10700000=02001834= + CONV:= STREAMTEMPD[0]; 10700100 END CONV; 10705000=02001834= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10710000=02001836= COMMENT OCTIZE REFORMATS ACCUM FOR OCTAL CONSTANTS; 10715000=02001836= - BOOLEAN STREAM PROCEDURE OCTIZE(S, D, SKP, CNT); 10725000=02001838= + BOOLEAN PROCEDURE OCTIZE(S, SX, D, DX, SKP, CNT); 10725000=02001838= VALUE 10730000=02001838= - SKP, 10735000=02001838= - CNT; 10740000=02001838= + SX, DX, SKP, CNT; 10735000=02001838= + ARRAY 10735100 + S, D[0]; 10735200 + REAL 10735300 + SX, DX, SKP, CNT; 10735400 BEGIN 10745000=02001840= - SI:= S; 10750000=02001842= - SI:= SI+3; 10755000=02001842= - DI:= D; 10760000=02001842= - SK(DS:= 3 RESET); % RIGHT JUSTIFY. 10765000=02001842= - CNT(IF SC >= 6"8" THEN TALLY:= 1 ELSE IF SC < 6"0" THEN TALLY:= 1; 10770000=02001846= - SKIP 3 SB;3(IF SB THEN DS:= SET ELSE DS:= RESET;SKIP SB)); 10775000=02001846= -% 10780000=02001848= -% 10785000=02001850= - OCTIZE:= TALLY;% "1" = NON OCTAL CHARACTER. 10790000=02001852= + STREAMLOCALS; 10745050 + TALLY:= 0; 10745100 + STREAMSETSI(S, SX); 10750000=02001842= + STREAMSKIPSI(+3); 10755000=02001842= + STREAMSETDI(D, DX); 10760000=02001842= + THRU SKP DO 10765000=02001842= + STREAMSETDB(3, 0); % RIGHT JUSTIFY. 10765100 + 10765200 + THRU CNT DO 10770000=02001846= + BEGIN 10770100 + IF STREAMSCGEQ(6"8") THEN 10770200 + TALLY:= 1 10770300 + ELSE 10770400 + IF STREAMSCLSS(6"0") THEN 10770500 + TALLY:= 1; 10770600 + 10770700 + STREAMSKIPSB(3); 10775000=02001846= + THRU 3 DO 10775100 + BEGIN 10775200 + IF STREAMTESTSB THEN 10775300 + STREAMSETDB(1, 1) 10775400 + ELSE 10775500 + STREAMSETDB(1, 0); 10775600 + 10775700 + STREAMSKIPSB(1); 10775800 + END; 10775900 + END THRU; 10776000 + 10785000=02001850= + OCTIZE:= BOOLEAN(TALLY); % "1" = NON OCTAL CHARACTER. 10790000=02001852= END OCTIZE; 10795000=02001854= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10800000=02001856= COMMENT HEXIZE REFORMATS ACCUM FOR HEXADECIMAL CONSTANTS; 10805000=02001856= - BOOLEAN STREAM PROCEDURE HEXIZE(S, D, SKP, CNT); 10810000=02001858= + BOOLEAN PROCEDURE HEXIZE(S, SX, D, DX, SKP, CNT); 10810000=02001858= VALUE 10820000=02001858= - SKP, 10825000=02001858= - CNT; 10830000=02001858= + SX, DX, SKP, CNT; 10825000=02001858= + ARRAY 10830000=02001858= + S, D[0]; 10830100 + REAL 10830200 + SX, DX, SKP, CNT; 10830300 BEGIN 10835000=02001860= - LOCAL T1, T2, TEMP2, TEMP1; 10840000=02001860= + STREAMLOCALS; 10835100 + REAL 10840000=02001860= + T1, 10840100 + T2, 10840200 + TEMP2, 10840300 + TEMP1; 10840400 LABEL 10845000=02001860= AGIN; 10850000=02001860= - 10855000=02001862= COMMENT LOCAL VARIABLES ARE LOCATED IN REVERSE ORDER FROM THE 10860000=02001862= WAY THEY ARE DECLARED IN STREAM PROCEDURES; 10865000=02001864= - DI:= LOC TEMP1; 10870000=02001866= - CNT(DS:= LIT 6"1"); % IN CASE A CHAR=A,B,C,D,OR F. 10875000=02001866= - SI:= S; 10880000=02001868= - SI:= SI+3; 10885000=02001868= - DI:= LOC TEMP1; % WE MAY OVERFLOW INTO TEMP2. 10890000=02001868= - CNT(IF SC < 6"0" THEN IF SC >= 6"A" THEN IF SC <= 6"F" THEN 10895000=02001870= - % WORK HARD. 10900000=02001870= - BEGIN T1:= SI;T2:= DI;DI:= T1;SI:= T2; % FLIP, MAN. 10905000=02001874= - DS:= 3 RESET;SI:= T1;DI:= T2; % FLIP BACK. 10910000=02001876= - DS:= 1 ADD;DI:= DI-1;SKIP 2 DB;DS:= 1 SET;SKIP 3 DB;GO AGIN; 10915000=02001882= - END; 10920000=02001882= - IF SC < 6"0" THEN 10925000=02001884= - TALLY:= 1; 10930000=02001884= - DS:= CHR; % < 0 = NON-HEX CHARACTER. 10935000=02001884= -AGIN: 10940000=02001888= - ); 10945000=02001888= - SI:= LOC TEMP1; 10950000=02001890= - DI:= D; 10955000=02001890= - SKP(DS:= 4 RESET); % RIGHT ADJUST CONSTANT. 10960000=02001890= - CNT(SKIP 2 SB;4(IF SB THEN DS:= SET ELSE DS:= RESET;SKIP SB)); 10965000=02001894= + TALLY:= 0; 10865100 + STREAMSETDI(STREAMTEMPD, 0); 10870000=02001866= + THRU CNT DO 10875000=02001866= + STREAMSMEARLIT(1, 6"1"); % IN CASE A CHAR=A,B,C,D,OR F. 10875100 + 10875200 + STREAMSETSI(S, SX); 10880000=02001868= + STREAMSKIPSI(+3); 10885000=02001868= + STREAMSETDI(STREAMTEMPD, 0); 10890000=02001868= + THRU CNT DO 10895000=02001870= + BEGIN 10895100 + IF STREAMSCLSS(6"0") THEN 10895200 + IF STREAMSCGEQ(6"A") THEN 10895300 + IF STREAMSCLEQ(6"F") THEN 10895400 + BEGIN % WORK HARD. 10900000=02001870= + T1:= STREAMGETSI; 10905000=02001874= + T2:= STREAMGETDI; 10905100 + STREAMSETDI(S, T1); 10905200 + STREAMSETSI(STREAMTEMPD, T2); % FLIP, MAN. 10905300 + STREAMSETDB(3, 0); 10910000=02001876= + STREAMSETSI(S, T1); 10910100 + STREAMSETDI(STREAMTEMPD, T2); % FLIP BACK. 10910200 + STREAMSMEARLIT(1, STREAMGETSC+STREAMGETDC); % DS:= 1 ADD ?? 10915000=02001882= + STREAMSKIPDI(-1); 10915100 + STREAMSKIPDB(2); 10915200 + STREAMSETDB(1, 1); 10915300 + STREAMSKIPDB(3); 10915400 + GO AGIN; 10915500 + END; 10920000=02001882= + 10920100 + IF STREAMSCLSS(6"0") THEN 10925000=02001884= + TALLY:= 1; 10930000=02001884= + 10930100 + STREAMTRANSFERCHR(1); % < 0 = NON-HEX CHARACTER.10935000=02001884= + AGIN: 10940000=02001888= + END THRU; 10945000=02001888= + 10945100 + STREAMSETSI(STREAMTEMPD, 0); 10950000=02001890= + STREAMSETDI(D, DX); 10955000=02001890= + THRU SKP DO 10960000=02001890= + STREAMSETDB(4, 0); % RIGHT ADJUST CONSTANT. 10960100 + 10960200 + THRU CNT DO 10965000=02001894= + BEGIN 10965100 + STREAMSKIPSB(2); 10965200 + THRU 4 DO 10965300 + BEGIN 10965400 + IF STREAMTESTSB THEN 10965500 + STREAMSETDB(1, 1) 10965600 + ELSE 10965700 + STREAMSETDB(1, 0); 10965800 + 10965900 + STREAMSKIPDB(1); 10966000 + END; 10966100 + END; 10966200 % FINAL CONVERT. 10970000=02001894= - HEXIZE:= TALLY;% "1" IF PROGRAMMER GOOFED. 10975000=02001896= + HEXIZE:= BOOLEAN(TALLY); % "1" IF PROGRAMMER GOOFED. 10975000=02001896= END HEXIZE; 10980000=02001898= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10985000=02002000= COMMENT PUTSEQNO PUTS THE SEQUENCE NUMBER OF THE CARD-IMAGE 10990000=02002000= CURRENTLY BEING SCANNED INTO THE INFO TABLE IN CASE 10995000=02003000= IT IS NEEDED FOR FUTURE REFERENCE; 11000000=02004000= - STREAM PROCEDURE PUTSEQNO(INFO, LCR); 11005000=02005000= + PROCEDURE PUTSEQNO(INFO, IX, BUFF, LCR); 11005000=02005000= VALUE 11010000=02005000= - LCR; 11015000=02005000= + IX, LCR; 11015000=02005000= + ARRAY 11015100 + INFO, BUFF[0]; 11015200 + REAL 11015300 + IX, LCR; 11015400 BEGIN 11020000=02006000= - DI:= INFO; 11025000=02006000= - SI:= LCR; 11030000=02006000= - DS:= WDS; 11035000=02006000= + STREAMLOCALS; 11020100 + STREAMSETDI(INFO, IX); 11025000=02006000= + STREAMSETSI(BUFF, LCR); 11030000=02006000= + STREAMTRANSFERWDS(1); 11035000=02006000= END PUTSEQNO; 11040000=02006000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11045000=02007000= COMMENT TURNONSTOPLIGHT TURNS THE LIGHT "RED" ON THE "CORNER". 11050000=02007000= I.E., THE PURPOSE OF THIS ROUTINE IS TO INSERT A PER- 11055000=02008000= CENT SIGN IN COLUMN 73 AS AN END OF CARD SENTINEL FOR 11060000=02009000= THE SCANNER; 11065000=02010000= - STREAM PROCEDURE TURNONSTOPLIGHT(RED, CORNER); 11070000=02011000= + PROCEDURE TURNONSTOPLIGHT(RED, BUFF, CORNER); 11070000=02011000= VALUE 11075000=02011000= - RED, 11080000=02011000= - CORNER; 11085000=02011000= + RED, CORNER; 11080000=02011000= + ARRAY 11080100 + BUFF[0]; 11080200 + REAL 11080300 + RED, CORNER; 11080400 BEGIN 11090000=02012000= - DI:= CORNER; 11095000=02012000= - SI:= LOC CORNER; 11100000=02012000= - SI:= SI-1; 11105000=02012000= - DS:= CHR 11110000=02012000= + STREAMLOCALS; 11090100 + STREAMSETDI(BUFF, CORNER); 11095000=02012000= + STREAMSETLOCSI(RED); 11100000=02012000= + STREAMSKIPSI(+7); 11105000=02012000= + STREAMTRANSFERCHR(1); 11110000=02012000= END; 11115000=02012000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12660000=02061000= COMMENT EQUAL COMPARES COUNT CHARACTERS LOCATED AT A AND B FOR 12665000=02061000= EQUALITY. THIS ROUTINE IS USED IN THE LOOK-UP OF ALPHA 12670000=02061500= QUANTITIES IN THE DIRECTORY; 12675000=02062000= - BOOLEAN STREAM PROCEDURE EQUAL(COUNT, A, B); 12680000=02062500= + BOOLEAN PROCEDURE EQUAL(COUNT, A, AX, B, BX); 12680000=02062500= VALUE 12690000=02062500= - COUNT; 12695000=02062500= + COUNT, AX, BX; 12695000=02062500= + REAL 12695100 + COUNT, AX, BX; 12695200 + ARRAY 12695300 + A, B[0]; 12695400 BEGIN 12700000=02063000= - TALLY:= 1; 12705000=02063500= - SI:= A; 12710000=02063500= - DI:= B; 12715000=02063500= - IF COUNT SC = DC THEN 12720000=02064000= - EQUAL:= TALLY 12725000=02064500= + STREAMLOCALS; 12700100 + STREAMSETSI(A, AX); 12710000=02063500= + STREAMSETDI(B, BX); 12715000=02063500= + EQUAL:= STREAMCOMPAREEQL(COUNT); 12720000=02064000= END EQUAL; 12730000=02064500= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12732000 PROCEDURE READACARD; 12735000=02065000= @@ -2334,81 +3575,81 @@ COMMENT "SCNN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 12795000 PASSED TO "SCNN" IN ORDER TO OBTAIN THE MOST USEFULL STACK 13005000=02088000= ARRANGEMENT. 13010000=02088500= ; 13015000=02089000= - STREAM PROCEDURE SCNN(NCR, COUNTV, ACCUM, COMCOUNT, RESULT, 13020000=02090000= - RESULTV, COUNT, ST2, NCRV, ST1); 13025000=02090000= + PROCEDURE SCNN(SBUFF, NCR, COUNTV, ACCUM, AX, COMCOUNT, 13020000=02090000= + RESULT, RESULTV, COUNT, ST2, NCRV, ST1); 13025000=02090000= VALUE 13030000=02090500= - COUNTV, 13035000=02090500= - COMCOUNT, 13040000=02090500= - RESULTV, 13045000=02090500= - ST2, 13050000=02090500= - NCRV, 13055000=02090500= - ST1; 13060000=02090500= + COUNTV, AX, COMCOUNT, RESULTV, ST2, NCRV, ST1; 13035000=02090500= + ARRAY 13035100 + SBUFF, ACCUM[0]; 13035200 + REAL 13035300 + NCR, COUNTV, AX, COMCOUNT, RESULT, RESULTV, COUNT, ST2, NCRV, ST1;13035400 BEGIN 13065000=02091000= + STREAMLOCALS; 13065100 LABEL 13070000=02091500= DEBLANK, 13075000=02091500= - NUMBERS, 13080000=02091500= - IDBLDR, 13085000=02091500= - GNC, 13090000=02091500= - K, 13095000=02091500= - EXIT, 13100000=02091500= - FINIS, 13105000=02091500= - L, 13110000=02091500= - ERROR, 13115000=02092000= - COMMENTS, 13120000=02092000= - COMMANTS; 13125000=02092000= - DI:= RESULT; 13130000=02092500= - DI:= DI+7; 13135000=02092500= - SI:= NCRV; 13140000=02092500= - 13145000=02093000= + DEBLANKONLY, 13075100 + NUMBERS, 13080000=02091500= + IDBLDR, 13085000=02091500= + GNC, 13090000=02091500= + K, 13095000=02091500= + EXIT, 13100000=02091500= + FINIS, 13105000=02091500= + L, 13110000=02091500= + ERROR, 13115000=02092000= + COMMENTS, 13120000=02092000= + COMMANTS; 13125000=02092000= + TALLY:= 0; 13125100 + STREAMSETSI(SBUFF, NCRV); 13140000=02092500= COMMENT SETUP "DI" FOR A CHANGE IN "RESULT" AND "SI" FOR A LOOK AT 13150000=02093000= THE BUFFER; 13155000=02093500= - CI:= CI+RESULTV; % SWITCH ON VALUE OF RESULT; 13160000=02094000= - GO DEBLANK; % 0 IS INITIAL CODE. 13165000=02094500= - GO IDBLDR; % 1 IS ID CODE. 13170000=02095000= - GO FINIS; % 2 IS SPECIAL CHARACTER CODE. 13175000=02095500= - GO NUMBERS; % 3 IS NUMBER CODE. 13180000=02096000= - GO FINIS; % 4 IS ERROR CODE. 13185000=02096500= - GO GNC; % 5 IS GET NEXT CHARACTER CODE. 13190000=02097000= - GO COMMANTS; % 6 IS COMMENT CODE. 13195000=02097500= - % 7 IS DEBLANK ONLY CODE. 13200000=02098000= - IF SC = 6" " THEN 13205000=02098500= + GO TO CASE RESULTV OF ( % SWITCH ON VALUE OF RESULT; 13160000=02094000= + DEBLANK, % 0 IS INITIAL CODE. 13165000=02094500= + IDBLDR, % 1 IS ID CODE. 13170000=02095000= + FINIS, % 2 IS SPECIAL CHARACTER CODE. 13175000=02095500= + NUMBERS, % 3 IS NUMBER CODE. 13180000=02096000= + FINIS, % 4 IS ERROR CODE. 13185000=02096500= + GNC, % 5 IS GET NEXT CHARACTER CODE. 13190000=02097000= + COMMANTS, % 6 IS COMMENT CODE. 13195000=02097500= + DEBLANKONLY);% 7 IS DEBLANK ONLY CODE. 13200000=02098000= + DEBLANKONLY: 13204000 + IF STREAMSCEQL(6" ") THEN 13205000=02098500= K: 13210000=02099000= BEGIN 13215000=02099000= - SI:= SI+1; 13220000=02099000= - IF SC = 6" " THEN 13225000=02099000= + STREAMSKIPSI(+1); 13220000=02099000= + IF STREAMSCEQL(6" ") THEN 13225000=02099000= GO K 13230000=02099000= END; 13235000=02099000= GO FINIS; 13240000=02099500= DEBLANK: 13245000=02100500= - IF SC = 6" " THEN 13250000=02100500= + IF STREAMSCEQL(6" ") THEN 13250000=02100500= L: 13255000=02101000= BEGIN 13260000=02101000= - SI:= SI+1; 13265000=02101000= - IF SC = 6" " THEN 13270000=02101000= + STREAMSKIPSI(+1); 13265000=02101000= + IF STREAMSCEQL(6" ") THEN 13270000=02101000= GO L 13275000=02101000= END; 13280000=02101000= 13285000=02101500= COMMENT IF WE ARRIVE HERE WE HAVE A NON-BLANK CHARACTER; 13290000=02101500= - NCRV:= SI; 13295000=02102000= - IF SC >= 6"0" THEN 13300000=02102500= + NCRV:= STREAMGETSI; 13295000=02102000= + IF STREAMSCGEQ(6"0") THEN 13300000=02102500= GO NUMBERS; 13305000=02102500= - IF SC = ALPHA THEN 13310000=02103000= + IF STREAMSCALPHA THEN 13310000=02103000= GO IDBLDR; 13315000=02103000= 13320000=02103500= COMMENT IF WE ARRIVE HERE WE HAVE A SPECIAL CHARACTER (OR GNC); 13325000=02103500= GNC: 13330000=02104500= - DS:= LIT 6"2"; 13335000=02104500= + RESULT:= 6"2"; 13335000=02104500= TALLY:= 1; 13340000=02104500= - SI:= SI+1; 13345000=02104500= + STREAMSKIPSI(+1); 13345000=02104500= GO EXIT; 13350000=02104500= COMMANTS: 13355000=02105500= - IF SC ^= 6";" THEN 13360000=02105500= + IF STREAMSCNEQ(6";") THEN 13360000=02105500= BEGIN 13365000=02106000= COMMENTS: 13370000=02107000= - SI:= SI+1; 13375000=02107000= - IF SC > 6"%" THEN 13380000=02107500= + STREAMSKIPSI(+1); 13375000=02107000= + IF STREAMSCGTR(6"%") THEN 13380000=02107500= GO COMMENTS; 13385000=02107500= - IF SC < 6";" THEN 13390000=02108000= + IF STREAMSCLSS(6";") THEN 13390000=02108000= GO COMMENTS; 13395000=02108000= 13400000=02108500= COMMENT CHARACTERS BETWEEN % AND SEMICOLON ARE HANDLED BY WORD- 13405000=02108500= @@ -2417,15 +3658,20 @@ COMMENT CHARACTERS BETWEEN % AND SEMICOLON ARE HANDLED BY WORD- 13405000 GO FINIS; 13420000=02110000= IDBLDR: 13425000=02111000= TALLY:= 63; 13430000=02111000= - DS:= LIT 6"1"; 13435000=02111000= - COMCOUNT(TALLY:= TALLY+1;IF SC = ALPHA THEN SI:= SI+1 ELSE JUMP 13440000=02112000= - OUT TO EXIT); 13445000=02112000= - TALLY:= TALLY+1; 13450000=02112500= - IF SC = ALPHA THEN 13455000=02113000= + RESULT:= 6"1"; 13435000=02111000= + THRU COMCOUNT DO 13440000=02112000= + BEGIN 13440100 + STREAMINCTALLY(+1); 13440200 + IF STREAMSCALPHA THEN 13440300 + STREAMSKIPSI(+1) 13440400 + ELSE 13440500 + GO EXIT 13445000=02112000= + END; 13445100 + STREAMINCTALLY(+1); 13450000=02112500= + IF STREAMSCALPHA THEN 13455000=02113000= BEGIN 13460000=02113500= ERROR: 13465000=02114500= - DI:= DI-1; 13470000=02114500= - DS:= LIT 6"4"; 13475000=02114500= + RESULT:= 6"4"; 13475000=02114500= GO EXIT; 13480000=02114500= END 13485000=02115500= ELSE 13490000=02115500= @@ -2434,40 +3680,41 @@ COMMENT IF WE ARRIVE AT ERROR WE HAVE MORE THAN 63 CHARACTERS 13505000 IN AN IDENTIFIER OR NUMBER; 13510000=02116500= NUMBERS: 13515000=02117500= TALLY:= 63; 13520000=02117500= - DS:= LIT 6"3"; 13525000=02117500= - COMCOUNT 13530000=02118500= - (TALLY:= TALLY+1;IF SC < 6"0" THEN JUMP OUT TO EXIT;SI:= SI+1); 13535000=02118500= + RESULT:= 6"3"; 13525000=02117500= + THRU COMCOUNT DO 13530000=02118500= + BEGIN 13535000=02118500= + STREAMINCTALLY(+1); 13535100 + IF STREAMSCLSS(6"0") THEN 13535200 + GO EXIT; 13535300 + STREAMSKIPSI(+1) 13535400 + END; 13535500 GO ERROR; 13540000=02119000= EXIT: 13545000=02120000= ST1:= TALLY; % "ST1" CONTAINS THE NUMBER OF CHARACTERS WE ARE 13550000=02120000= % GOING TO MOVE INTO THE "ACCUMULATOR". 13555000=02120500= - TALLY:= TALLY+COUNTV; 13560000=02121000= + STREAMINCTALLY(COUNTV); 13560000=02121000= ST2:= TALLY; 13565000=02121000= - DI:= COUNT; 13570000=02121500= - SI:= LOC ST2; 13575000=02121500= - DS:= WDS; 13580000=02121500= + COUNT:= ST2; 13570000=02121500= COMMENT THIS CODE UPDATED "COUNT'; 13590000=02122000= - DI:= ACCUM; 13595000=02122500= - SI:= SI-3; 13600000=02122500= - DS:= 3 CHR; 13605000=02122500= + STREAMSETDI(ACCUM, AX); 13595000=02122500= + STREAMSETLOCSI(ST2); 13600000=02122500= + STREAMSKIPSI(+5); 13600100=02122500= + STREAMTRANSFERCHR(3); 13605000=02122500= COMMENT THIS CODE PLACES "COUNT" IN "ACCUM" AS WELL; 13615000=02123000= - DI:= DI+COUNTV; % POSITION "DI" PAST CHARACTERS ALREADY 13620000=02123500= + STREAMSKIPDI(+COUNTV); % POSITION "DI" PAST CHARACTERS ALREADY 13620000=02123500= % IN THE "ACCUMULATOR", IF ANY. 13625000=02124000= - SI:= NCRV; 13630000=02124500= - DS:= ST1 CHR; 13635000=02124500= + STREAMSETSI(SBUFF, NCRV); 13630000=02124500= + STREAMTRANSFERCHR(ST1); 13635000=02124500= COMMENT MOVE CHARACTERS INTO "ACCUM"; 13645000=02125000= FINIS: 13650000=02126000= - DI:= NCR; 13655000=02126000= - ST1:= SI; 13660000=02126000= - SI:= LOC ST1; 13665000=02126000= - DS:= WDS; 13670000=02126000= + NCR:= STREAMGETSI; 13655000=02126000= COMMENT RESET "NCR" TO LOCATION OF NEXT CHARACTER TO BE SCANNED; 13680000=02126500= END OF SCNN; 13685000=02127000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13686000 LABEL 13690000=02127500= L; % 13695000=02127500= -L: SCNN(NCR, COUNT, ACCUM[1], 63-COUNT, RESULT, RESULT, COUNT, 0 13700000=02129000= - , NCR, 0); 13705000=02129000= +L: SCNN(SBUFF, NCR, COUNT, ACCUM, 1, 63-COUNT, RESULT, RESULT, COUNT, 13700000=02129000= + 0, NCR, 0); 13705000=02129000= IF NCR = LCR THEN 13710000=02129500= BEGIN 13715000=02130000= READACARD; 13720000=02130500= @@ -2477,74 +3724,90 @@ L: SCNN(NCR, COUNT, ACCUM[1], 63-COUNT, RESULT, RESULT, COUNT, 0 13700000 END SCANNER; 13775000=02137000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13780000=02137000= DEFINE 13785000=02181000= - WRITELINE = IF SINGLTOG THEN 13790000=02181000= - WRITE(LINE, 15, LIN[*]) 13795000=02181250= + WRITELINE = BEGIN 13790000=02181000= + UNPACKBICTOEBCDIC(LIN, 0, EBCDICBUFF, 0, 15*8); 13790100 + IF SINGLTOG THEN 13790200 + WRITE(LINE, 20, EBCDICBUFF[*]) 13795000=02181250= ELSE 13800000=02181250= - WRITE(LINE[DBL], 15, LIN[*]) #, 13805000=02181500= + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]) 13805000=02181500= + END #, 13805100 PRINTCARD = BEGIN 13850000=02182500= - EDITLINE(LIN, FCR, L.[11:10], SGNO, L.[2:2], 13855000=02182760= - MEDIUM, OMITTING); 13860000=02182760= + EDITLINE(LIN, SBUFF, FCR, L.[11:10], SGNO, 13855000=02182760= + L.[2:2], MEDIUM, OMITTING); 13860000=02182760= IF NOHEADING THEN 13865000=02183000= DATIME; 13870000=02183000= WRITELINE; 13875000=02183000= END #; 13880000=02183250= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13882000 - STREAM PROCEDURE EDITLINE(LINE, NGR, R, S, L, SYMBOL, OMIT); 13885000=02183500= + PROCEDURE EDITLINE(LINE, SBUFF, NCR, R, S, L, SYMBOL, OMIT); 13885000=02183500= VALUE 13890000=02183750= - NCR, 13895000=02183750= - R, 13900000=02183750= - S, 13905000=02183750= - L, 13910000=02183750= - SYMBOL, 13915000=02183750= - OMIT; 13920000=02183750= + NCR, R, S, L, SYMBOL, OMIT; 13895000=02183750= + ARRAY 13920100 + LINE[0], SBUFF[0]; 13920200 + REAL 13920300 + NCR, R, S, L, SYMBOL; 13920400 + BOOLEAN 13920500 + OMIT; 13920600 BEGIN 13925000=02184000= - DI:= LINE; 13930000=02184250= - DS:= 16 LIT 6" "; 13935000=02184250= - SI:= NCR; 13940000=02184500= - DS:= 9 WDS; 13945000=02184500= - DS:= 8 LIT 6" "; 13950000=02184750= - DS:= WDS; % SEQUENCE NUMBER. 13955000=02185000= - DS:= LIT 6" "; 13960000=02185250= - SI:= LOC SYMBOL; 13965000=02185250= - SI:= SI+6; 13970000=02185250= - DS:= 2 CHR; 13975000=02185500= - DS:= LIT 6" "; 13980000=02185500= - SI:= LOC R; 13985000=02185750= - SI:= SI+4; 13990000=02185750= - IF SC = 6" " THEN 13995000=02186000= - DS:= 12 LIT 6" " 14000000=02186000= + STREAMLOCALS; 13925100 + STREAMSETDI(LINE, 0); 13930000=02184250= + STREAMSMEARLIT(16, 6" "); 13935000=02184250= + STREAMSETSI(SBUFF, NCR); 13940000=02184500= + STREAMTRANSFERWDS(9); 13945000=02184500= + STREAMSMEARLIT(8, 6" "); 13950000=02184750= + STREAMTRANSFERWDS(1); % SEQUENCE NUMBER. 13955000=02185000= + STREAMSMEARLIT(1, 6" "); 13960000=02185250= + STREAMSETLOCSI(SYMBOL); 13965000=02185250= + STREAMSKIPSI(+6); 13970000=02185250= + STREAMTRANSFERCHR(2); 13975000=02185500= + STREAMSMEARLIT(1, 6" "); 13980000=02185500= + STREAMSETLOCSI(R); 13985000=02185750= + STREAMSKIPSI(+4); 13990000=02185750= + IF STREAMSCEQL(6" ") THEN 13995000=02186000= + STREAMSMEARLIT(12, 6" ") 14000000=02186000= ELSE 14005000=02186000= BEGIN 14010000=02186250= - SI:= LOC S; 14015000=02186300= - DS:= 4 DEC; 14020000=02186300= - DS:= LIT 6":"; 14025000=02186300= - SI:= LOC R; 14030000=02186400= - DS:= 4 DEC; 14035000=02186400= - DS:= LIT 6":"; 14040000=02186400= - SI:= LOC L; 14045000=02186500= - DS:= 1 DEC; 14050000=02186500= - DS:= LIT 6" "; 14055000=02186500= + STREAMSETLOCSI(S); 14015000=02186300= + STREAMTRANSFERDEC(4); 14020000=02186300= + STREAMSMEARLIT(1, 6":"); 14025000=02186300= + STREAMSETLOCSI(R); 14030000=02186400= + STREAMTRANSFERDEC(4); 14035000=02186400= + STREAMSMEARLIT(1, 6":"); 14040000=02186400= + STREAMSETLOCSI(L); 14045000=02186500= + STREAMTRANSFERDEC(1); 14050000=02186500= + STREAMSMEARLIT(1, 6" "); 14055000=02186500= END; 14060000=02186600= - OMIT(DI:= DI-12;DS:= 12 LIT 6" :OMIT: ";DI:= LINE;DS:= 8 LIT 14065000=02186760= - 6" :OMIT:"); 14070000=02186760= + THRU REAL(OMIT) DO 14065000=02186760= + BEGIN 14065100 + STREAMSKIPDI(-12); 14065200 + STREAMTRANSFERLIT(8, 6" :OMIT:"); 14065300 + STREAMTRANSFERLIT(4, 6" "); 14065400 + STREAMSETDI(LINE, 0); 14065500 + STREAMTRANSFERLIT(8, 6" :OMIT:"); 14065600 + END; 14065700 END EDITLINE; 14075000=02187000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14080000=02187250= COMMENT COMPARE COMPARES SEQUENCE NUMBERS OF TAPE AND CARD. IF 14085000=02187250= TAPE IS SMALLER THEN RESULT = 0 ELSE IF CARD IS SMALLER 14090000=02187500= RESULT = 1 ELSE RESULT = 2; 14095000=02187750= - REAL STREAM PROCEDURE COMPARE(TAPE, CARD); 14100000=02188000= + REAL PROCEDURE COMPARE(TAPE, TX, CARD, CX); 14100000=02188000= VALUE 14110000=02188000= - TAPE, 14115000=02188000= - CARD; 14120000=02188000= + TX, CX; 14115000=02188000= + ARRAY 14115100 + TAPE, CARD[0]; 14115200 + REAL 14115300 + TX, CX; 14115400 BEGIN 14125000=02188250= - SI:= TAPE; 14130000=02188500= - DI:= CARD; 14135000=02188500= - IF 8 SC >= DC THEN 14140000=02188750= + STREAMLOCALS; 14125050 + TALLY:= 0; 14125100 + STREAMSETSI(TAPE, TX); 14130000=02188500= + STREAMSETDI(CARD, CX); 14135000=02188500= + IF STREAMCOMPAREGEQ(8) THEN 14140000=02188750= BEGIN 14145000=02189000= - SI:= SI-8; 14150000=02189250= - DI:= DI-8; 14155000=02189250= + STREAMSKIPSI(-8); 14150000=02189250= + STREAMSKIPDI(-8); 14155000=02189250= TALLY:= 1; 14160000=02189250= - IF 8 SC = DC THEN 14165000=02189500= + IF STREAMCOMPAREEQL(8) THEN 14165000=02189500= TALLY:= 2 14170000=02189750= END; 14175000=02189750= COMPARE:= TALLY; 14180000=02190000= @@ -2572,7 +3835,7 @@ COMMENT COMPARE COMPARES SEQUENCE NUMBERS OF TAPE AND CARD. IF 14085000 END 14285000=02193000= ELSE 14290000=02193000= GTI1:= TOTALNO:= TOTALNO+ADDVALUE; 14295000=02193000= - CHANGESEQ(GTI1, LCR); 14300000=02193250= + CHANGESEQ(GTI1, SBUFF, LCR); 14300000=02193250= END; 14305000=02193500= IF OMITTING THEN 14330000=02194250= IF NOT LISTATOG THEN 14335000=02194250= @@ -2591,16 +3854,19 @@ AWAY: 14390000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14400000=02196500= PROCEDURE BEGINPRINT; 14405000=02196510= BEGIN 14410000=02196520= - STREAM PROCEDURE STUFF(N, L); 14415000=02196530= + PROCEDURE STUFF(N, L); 14415000=02196530= VALUE 14420000=02196530= N; 14425000=02196530= + REAL 14425100 + N; 14425200 + ARRAY 14425300 + L[0]; 14425400 BEGIN 14430000=02196540= - DI:= L; 14435000=02196550= - DS:= 8 LIT 6" "; 14440000=02196550= - SI:= L; 14445000=02196550= - DS:= 13 WDS; 14450000=02196550= - SI:= LOC N; 14455000=02196560= - DS:= 8 DEC; 14460000=02196560= + STREAMLOCALS; 14430100 + STREAMSETDI(L, 0); 14435000=02196550= + STREAMSMEARLIT(14*8, 6" "); 14440000=02196550= + STREAMSETLOCSI(N); 14455000=02196560= + STREAMTRANSFERDEC(8); 14460000=02196560= END; 14465000=02196570= STUFF(BEGINSTACK[BSPOINT], LIN); 14470000=02196580= IF NOHEADING THEN 14475000=02196590= @@ -2645,37 +3911,44 @@ COMMENT READACARD READS CARDS FROM EITHER THE CARD READER OR THE 14510000 ERR(611); % ERR LIMIT EXCEEDED - STOP. 15090000=02211500= USETHESWITCH: 15095000=02212000= GO TO USESWITCH[LASTUSED]; 15100000=02212000= - MOVE(1, TEXT[LASTUSED.LINKR, LASTUSED.LINKC], 15105000=02212500= - DEFINEARRAY[DEFINEINDEX-2]); 15110000=02212500= + MOVE(1, TEXT[LASTUSED.LINKR,*], LASTUSED.LINKC, 15105000=02212500= + DEFINEARRAY, DEFINEINDEX-2); 15110000=02212500= LASTUSED:= LASTUSED+1; 15115000=02212750= NCR:= LCR-1; 15120000=02213000= GO TO XIT; 15125000=02213250= FIRSTTIME: 15130000=02213750= - READ(CARD, 10, CBUFF[*]); 15135000=02213750= - FCR:= NCR:= (LCR:= MKABS(CBUFF[9]))-9; 15140000=02214000= + READ(CARD, CARDRECSIZE, EBCDICBUFF[*]); 15135000=02213750= + PACKEBCDICTOBIC(EBCDICBUFF, 0, CBUFF, 0, 10*8); 15135100 + FCR:= NCR:= (LCR:= 9)-9; 15140000=02214000= + SBUFF:= CBUFF; 15140200 MEDIUM:= 6"C "; 15145000=02214100= - IF EXAMIN(FCR) ^= 6"$" AND LISTER THEN 15150000=02214200= + IF EXAMIN(SBUFF, FCR) ^= 6"$" AND LISTER THEN 15150000=02214200= PRINTCARD; 15155000=02214200= - PUTSEQNO(INFO[LASTSEQROW, LASTSEQENCE], LCR); 15160000=02214250= - CARDNUMBER:= CONV(INFO[LASTSEQROW, LASTSEQUENCE-1], 5, 8); 15165000=02214260= - TURNONSTOPLIGHT(6"%", LCR); 15170000=02214500= + PUTSEQNO(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR); 15160000=02214250= + CARDNUMBER:= CONV(INFO[LASTSEQROW,*], LASTSEQUENCE-1, 5, 8); 15165000=02214260= + TURNONSTOPLIGHT(6"%", SBUFF, LCR); 15170000=02214500= GO XIT; 15175000=02214750= 15180000=02215000= COMMENT WE HAVE JUST INITIALIZED CARD INPUT; 15185000=02215000= CARDONLY: 15190000=02215500= - READ(CARD, 10, CBUFF[*]); 15205000=02215500= - LCR:= MKABS(CBUFF[9]); 15210000=02215750= + READ(CARD, CARDRECSIZE, EBCDICBUFF[*]); 15205000=02215500= + PACKEBCDICTOBIC(EBCDICBUFF, 0, CBUFF, 0, 10*8); 15205100 + LCR:= 9; 15210000=02215750= + SBUFF:= CBUFF; 15210100 GO EXIT; 15215000=02215750= CARDLAST: 15220000=02216250= - READ(CARD, 10, CBUFF[*])[EOF]; 15235000=02216250= - CLCR:= MKABS(CBUFF[9]); 15240000=02216500= + READ(CARD, CARDRECSIZE, EBCDICBUFF[*])[EOF]; 15235000=02216250= + PACKEBCDICTOBIC(EBCDICBUFF, 0, CBUFF, 0, 10*8); 15235100 + CLCR:= 9; 15240000=02216500= + SBUFF:= CBUFF; 15240100 GO COMPAR; 15245000=02216750= EOF: 15250000=02217250= DEFINEARRAY[25]:= 6"ND;END."&6"E"[46:4:5]; 15255000=02217250= DEFINEARRAY[34]:= 6"9999"&6"9999"[46:22:23]; 15260000=02217500= - CLCR:= MKABS(DEFINEARRAY[34]); 15265000=02217750= - PUTSEQNO(DEFINEARRAY[33], CLCR-8); 15270000=02218000= - TURNONSTOPLIGHT(6"%", CLCR-8); 15275000=02218250= + CLCR:= 34; 15265000=02217750= + SBUFF:= DEFINEARRAY; 15265100 + PUTSEQNO(DEFINEARRAY, 33, SBUFF, CLCR-8); 15270000=02218000= + TURNONSTOPLIGHT(6"%", DEFINEARRAY, CLCR-8); 15275000=02218250= % 15280000=02218400= GO COMPAR; 15285000=02218500= COMMENT THIS RELEASES THE PREVIOUS CARD FROM THE CARD READER AND 15295000=02218750= @@ -2700,8 +3973,8 @@ COMPAR: 15540000 ; 15545000=02224500= EXIT: 15565000=02225250= NCR:= FCR:= LCR-9; COMMENT SETS UP NCR AND FCR; 15570000=02225250= - IF CHECKTOG AND EXAMIN(FCR) ^= 6"$" THEN %$=CARDS DON"T COUNT. 15585000=02225750= - IF COMPARE(MKABS(INFO[LASTSEQROW, LASTSEQUENCE]), LCR) = 1 THEN 15590000=02226000= + IF CHECKTOG AND EXAMIN(SBUFF, FCR) ^= 6"$" THEN %$=CARDS DON"T COUNT15585000=02225750= + IF COMPARE(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR) = 1 THEN 15590000=02226000= IF SEQERRTOG THEN 15595000=02226250= BEGIN 15600000=02226250= FLAG(610); 15605000=02226250= @@ -2718,21 +3991,21 @@ EXIT: 15565000 PRINTCARD; 15660000=02227500= NUMSEQUENCEERRORS:= NUMSEQUENCEERRORS+1; 15665000=02227600= END; 15670000=02227750= - IF EXAMIN(FCR) = 6"$" THEN 15675000=02228250= + IF EXAMIN(SBUFF, FCR) = 6"$" THEN 15675000=02228250= BEGIN 15680000=02228500= IF LISTPTOG OR PRINTDOLLARTOG THEN 15685000=02228750= PRINTCARD; 15690000=02228750= - NCR:= NCR+32768; 15695000=02229000= + NCR:= NCR+32768; % INC BY ONE CHAR 15695000=02229000= DOLLARCARD; 15700000=02229000= 15720000=02229250= COMMENT DONT FORGET THAT NCR IS NOT WORD MODE, BUT CHAR. MODE POINTER; 15725000=02229250= GO USETHESWITCH; 15730000=02229500= END; 15735000=02229750= - IF EXAMIN(FCR) = 6" " THEN 15740000=02230000= - IF DOLLAR2TOG:= EXAMIN(FCR+32768) = 6"$" THEN 15745000=02230100= + IF EXAMIN(SBUFF, FCR) = 6" " THEN 15740000=02230000= + IF DOLLAR2TOG:= EXAMIN(SBUFF, FCR+32768) = 6"$" THEN 15745000=02230100= BEGIN 15750000=02230250= OUTPUTSOURCE; 15755000=02230500= - NCR:= NCR+65536; 15760000=02230750= + NCR:= NCR+65536; % INC BY TWO CHARS 15760000=02230750= DOLLARCARD; 15765000=02230750= END; 15780000=02231250= CARDCOUNT:= CARDCOUNT+1; 15855000=02234500= @@ -2741,17 +4014,17 @@ COMMENT DONT FORGET THAT NCR IS NOT WORD MODE, BUT CHAR. MODE POINTER; 15725000 DOLLAR2TOG:= FALSE; 15870000=02234650= GO USETHESWITCH; 15875000=02234650= END; 15880000=02234650= - PUTSEQNO(INFO[LASTSEQROW, LASTSEQUENCE], LCR); 15885000=02234750= + PUTSEQNO(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR); 15885000=02234750= CARDNUMBER:= 15890000=02234800= IF SEQTOG THEN 15895000=02234800= TOTALNO+ADDVALUE 15900000=02234800= ELSE 15905000=02234800= - CONV(INFO[LASTSEQROW, LASTSEQUENCE-1], 5, 8); 15910000=02234900= + CONV(INFO[LASTSEQROW,*], LASTSEQUENCE-1, 5, 8); 15910000=02234900= OUTPUTSOURCE; 15915000=02235000= IF OMITTING THEN 15920000=02235250= GO USETHESWITCH; 15925000=02235250= % 15930000=02235500= - TURNONSTOPLIGHT(6"%", LCR); 15935000=02235750= + TURNONSTOPLIGHT(6"%", SBUFF, LCR); 15935000=02235750= IF BUILDLINE THEN 15940000=02236000= IF LASTADDRESS ^= (LASTADDRESS:= L.[11:10]) THEN 15945000=02236250= BEGIN 15950000=02236500= @@ -2771,17 +4044,17 @@ XIT: 15990000 T; 16770000=02249000= INTEGER 16775000=02249000= N; 16780000=02249000= - TL0:= 0; 16785000=02250000= - THI:= T:= CONV(ACCUM[1], TCOUNT, N:= (COUNT-TCOUNT) MOD 8); 16790000=02251000= + TLO:= 0; 16785000=02250000= + THI:= T:= CONV(ACCUM, 1, TCOUNT, N:= (COUNT-TCOUNT) MOD 8); 16790000=02251000= FOR N:= TCOUNT+N STEP 8 UNTIL COUNT-1 DO 16795000=02252000= IF DPTOG THEN 16800000=02253000= BEGIN 16805000=02254000= - DOUBLE(THI, TLO, 100000000.0, 0, *, CONV(ACCUM[1], N, 8), 0, 16810000=02256000= - +, := , THI, TLO); 16815000=02256000= + THI:= FIRSTWORD( 16810000=02256000= + DOUBLE(THI, TLO)*100000000.0 + CONV(ACCUM, 1, N, 8), TLO); 16815000=02256000= T:= THI; 16820000=02257000= END 16825000=02259000= ELSE 16830000=02259000= - T:= T*100000000+CONV(ACCUM[1], N, 8); 16835000=02259000= + T:= T*100000000+CONV(ACCUM, 1, N, 8); 16835000=02259000= CONVERT:= T; 16840000=02260000= END; 16845000=02261000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16902000 @@ -2793,57 +4066,106 @@ XIT: 15990000 JEDEN, 16930000=02264100= DWA; 16935000=02264100= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16936000 - STREAM PROCEDURE OCTALWORDS(S, D, N); 16940000=02264400= + PROCEDURE OCTALWORDS(S, SX, D, DX, N); 16940000=02264400= VALUE 16945000=02264400= - N; 16950000=02264400= + SX, DX, N; 16950000=02264400= + ARRAY 16950100 + S, D[0]; 16950200 + REAL 16950300 + SX, DX, N; 16950400 BEGIN 16955000=02264450= - SI:= S; 16960000=02264500= - DI:= D; 16965000=02264500= - N(2(8(DS:= 3 RESET;3 16970000=02264600= - (IF SB THEN DS:= 1 SET ELSE DS:= 1 RESET;SKIP 1 SB));DS:= 1 LIT 16975000=02264600= - 6" ");DS:= 2 LIT 6" "); 16980000=02264600= + STREAMLOCALS; 16955100 + STREAMSETSI(S, SX); 16960000=02264500= + STREAMSETDI(D, DX); 16965000=02264500= + THRU N DO 16970000=02264600= + BEGIN 16970100 + THRU 2 DO 16970200 + BEGIN 16970300 + THRU 8 DO 16970400 + BEGIN 16970500 + STREAMSETDB(3, 0); 16970600 + THRU 3 DO 16970700 + BEGIN 16975000=02264600= + IF STREAMTESTSB THEN 16975100 + STREAMSETDB(1, 1) 16975200 + ELSE 16975300 + STREAMSETDB(1, 0); 16975400 + 16975500 + STREAMSKIPSB(1); 16975600 + END; 16975700 + END; 16975800 + 16975900 + STREAMSMEARLIT(1, 6" "); 16976000 + END; 16976100 + 16976200 + STREAMSMEARLIT(2, 6" "); 16976300 + END; 16976400 END OF OCTALWORDS; 16985000=02264650= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16986000 - STREAM PROCEDURE ALPHAWORDS(S, D, N); 16990000=02264700= + PROCEDURE ALPHAWORDS(S, SX, D, DX, N); 16990000=02264700= VALUE 16995000=02264700= - N; 17000000=02264700= + SX, DX, N; 17000000=02264700= + ARRAY 17000100 + S, D[0]; 17000200 + REAL 17000300 + SX, DX, N; 17000400 BEGIN 17005000=02264750= - SI:= S; 17010000=02264800= - DI:= D; 17015000=02264800= - N(2(4(DS:= 1 LIT 6" ";DS:= 1 CHR);DS:= 1 LIT 6" ");DS:= 2 LIT 6" "17020000=02264850= - ); 17025000=02264850= + STREAMLOCALS; 17005100 + STREAMSETSI(S, SX); 17010000=02264800= + STREAMSETDI(D, DX); 17015000=02264800= + THRU N DO 17020000=02264850= + BEGIN 17020100 + THRU 2 DO 17020200 + BEGIN 17020300 + THRU 4 DO 17020400 + BEGIN 17020500 + STREAMSMEARLIT(1, 6" "); 17020600 + STREAMTRANSFERCHR(1) 17020700 + END; 17020800 + 17020900 + STREAMSMEARLIT(1, 6" ") 17021000 + END; 17021100 + 17021200 + STREAMSMEARLIT(2, 6" ") 17021300 + END; 17025000=02264850= END OF ALPHAWORDS; 17030000=02264900= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17032000 IF NOHEADING THEN 17035000=02264950= DATIME; 17040000=02264950= - WRITE(LINE[DBL], < //"ELBAT">); 17045000=02264950= + WRITE(LINE[SPACE 2], < //"ELBAT">); 17045000=02264950= FOR JEDEN:= 0 STEP 6 UNTIL 71 DO 17050000=02265000= BEGIN 17055000=02265050= BLANKET(14, A); 17060000=02265100= - OCTALWORDS(ELBAT[JEDEN], A, 6); 17065000=02265100= - WRITE(LINE[DBL], 15, A[*]); 17070000=02265150= + OCTALWORDS(ELBAT, JEDEN, A, 0, 6); 17065000=02265100= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 17069900 + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 17070000=02265150= END; 17075000=02265200= BLANKET(14, A); 17080000=02265250= - OCTALWORDS(ELBAT[72], A, 4); 17085000=02265250= - WRITE(LINE[DBL], 15, A[*]); 17090000=02265300= + OCTALWORDS(ELBAT, 72, A, 0, 4); 17085000=02265250= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 17089900 + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 17090000=02265300= FOR JEDEN:= 0 STEP 1 UNTIL NEXTINFO DIV 256 DO 17095000=02265350= BEGIN 17100000=02265400= - WRITE(LINE[DBL], < //"INFO[", I2, ",*]">, JEDEN); 17105000=02265450= + WRITE(LINE[SPACE 2], < //"INFO[", I2, ",*]">, JEDEN); 17105000=02265450= FOR DWA:= 0 STEP 6 UNTIL 251 DO 17110000=02265500= BEGIN 17115000=02265550= BLANKET(14, A); 17120000=02265600= - ALPHAWORDS(INFO[JEDEN, DWA], A, 6); 17125000=02265600= - WRITE(LINE, 15, A[*]); 17130000=02265650= + ALPHAWORDS(INFO[JEDEN,*], DWA, A, 0, 6); 17125000=02265600= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 17129900 + WRITE(LINE, 20, EBCDICBUFF[*]); 17130000=02265650= BLANKET(14, A); 17135000=02265700= - OCTALWORDS(INFO[JEDEN, DWA], A, 6); 17140000=02265700= - WRITE(LINE[DBL], 15, A[*]); 17145000=02265750= + OCTALWORDS(INFO[JEDEN,*], DWA, A, 0, 6); 17140000=02265700= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 17144900 + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 17145000=02265750= END; 17150000=02265800= BLANKET(14, A); 17155000=02265850= - ALPHAWORDS(INFO[JEDEN, 252], A, 4); 17160000=02265850= - WRITE(LINE, 15, A[*]); 17165000=02265900= + ALPHAWORDS(INFO[JEDEN,*], 252, A, 0, 4); 17160000=02265850= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 17164900 + WRITE(LINE, 20, EBCDICBUFF[*]); 17165000=02265900= BLANKET(14, A); 17170000=02265950= - OCTALWORDS(INFO[JEDEN, 252], A, 4); 17175000=02265950= - WRITE(LINE[DBL], 15, A[*]); 17180000=02266000= + OCTALWORDS(INFO[JEDEN, *], 252, A, 0, 4); 17175000=02265950= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 17179900 + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 17180000=02266000= END; 17185000=02266050= END OF DUMPINFO; 17190000=02266100= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17195000=02266100= @@ -2890,7 +4212,8 @@ COMMENT DOLLARCARD HANDLES THE COMPILER CONTROL CARDS. 17235000 REAL 17400000=02310000= ID; 17405000=02310000= OPINX:= 2*BIT-4; 17410000=02311000= - WHILE ID:= OPTIONS[OPINX:= OPINX+2] ^= D0 IF Q = ID THEN 17415000=02313000= + WHILE ID:= OPTIONS[OPINX:= OPINX+2] ^= 0 DO 17415000=02313000= + IF Q = ID THEN 17415100=02313000= GO FOUND; 17420000=02313000= ; 17425000=02313000= OPTIONS[OPINX]:= Q; % NEW USER-DEFINED OPTION. 17430000=02314000= @@ -2948,7 +4271,7 @@ FOUND: 17435000 GO ALONG; 17690000=02336000= XMODE2: 17695000=02337000= % RESET. 17700000=02337000= - OPTIONS[OPINX+1]:= REAL(FALSE & SETTINGS[46:45:46]); 17705000=02338000= + OPTIONS[OPINX+1]:= REAL(FALSE & SETTING[46:45:46]); 17705000=02338000= IF XBIT < USEROPINX THEN 17710000=02339000= OPTIONWORD:= OPTIONWORD & FALSE[XBIT:1]; 17715000=02339000= GO ALONG; 17720000=02340000= @@ -3001,21 +4324,21 @@ FOUND: 17435000 WHATISIT; 17955000=02365000= INTEGER 17960000=02365100= SRESULT, 17965000=02365100= - SCOUNT; 17970000=02365100= + SCOUNT; 17970000=02365100= INTEGER 17975000=02365200= SAVEINX; 17980000=02365200= DOLLARTOG:= TRUE; 17985000=02366000= - MOVE(10, ACCUM[0], DEFINEARRY[0]); % SAVE INFORMATION FOR 17990000=02366100= + MOVE(10, ACCUM, 0, DEFINEARRAY, 0); % SAVE INFORMATION FOR 17990000=02366100= SCOUNT:= COUNT; 17995000=02366200= SRESULT:= RESULT; % "TABLE" TO RESUME SCAN. 18000000=02366200= XMODE:= 0; 18005000=02367000= - PUTSEQNO(INFO[LASTSEQROW, LASTSEQUENCE], LCR); 18010000=02368000= - TURNONSTOPLIGHT(6"%", LCR); 18015000=02369000= + PUTSEQNO(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR); 18010000=02368000= + TURNONSTOPLIGHT(6"%", SBUFF, LCR); 18015000=02369000= SKANAGAIN: 18020000=02371000= SKAN; 18025000=02371000= AGAIN: 18030000=02373000= GO OPTIONLENGTH[MIN(COUNT, 10)]; 18035000=02373000= -LENGTH: 18040000=02375000= +LENGTH1: 18040000=02375000= IF Q = 6"1%0000" THEN 18045000=02375000= GO EXIT; 18050000=02375000= IF Q = 6"1$0000" THEN 18055000=02376000= @@ -3110,7 +4433,7 @@ LENGTH4: 18275000 IF Q = 6"4PAGE0" THEN 18785000=02462000= BEGIN 18790000=02463000= IF LISTER THEN 18795000=02464000= - WRITE(LINE[PAGE]); 18800000=02464000= + WRITE(LINE[SKIP 1]); 18800000=02464000= GO SKANAGAIN; 18805000=02465000= END; 18810000=02466000= IF Q = 6"4INFO0" THEN 18815000=02467000= @@ -3163,7 +4486,7 @@ LENGTH5: 18920000 FLAG(600); 19100000=02501000= GO AGAIN 19105000=02501000= END; 19110000=02501000= - ERRMAX:= CONV(ACCUM[1], 0, ACCUM[1].[35:6]); 19115000=02502000= + ERRMAX:= CONV(ACCUM, 1, 0, ACCUM[1].[35:6]); 19115000=02502000= GO SKANAGAIN; 19120000=02503000= END; 19125000=02504000= IF Q = 6"5PUNCH" THEN 19130000=02505000= @@ -3219,7 +4542,7 @@ LENGTH6: 19235000 END; 19380000=02528000= IF Q = 6"6DEBUG" THEN 19385000=02529000= BEGIN 19390000=02530000= - SWITCHIT(DEBUGIT); 19395000=02531000= + SWITCHIT(DEBUGBIT); 19395000=02531000= IF DEBUGTOG THEN 19400000=02533000= IF WOP[0] = 0 THEN 19405000=02534000= BEGIN 19410000=02535000= @@ -3285,7 +4608,7 @@ LENGTH9: 19680000 WHATISIT: 19710000=02579000= IF RESULT = 3 THEN 19715000=02579000= BEGIN 19720000=02580000= - BASENUM:= CONV(ACCUM[1], 0, ACCUM[1].[35:6]); 19725000=02581000= + BASENUM:= CONV(ACCUM, 1, 0, ACCUM[1].[35:6]); 19725000=02581000= TOTALNO:= -10; 19730000=02582000= NEWBASE:= TRUE; 19735000=02583000= GO SKANAGAIN; 19740000=02584000= @@ -3296,7 +4619,7 @@ WHATISIT: 19710000 BEGIN 19765000=02589000= SKAN; 19770000=02590000= IF RESULT = 3 THEN 19775000=02591000= - ADDVALUE:= CONV(ACCUM[1], 0, ACCUM[1].[35:6]); 19780000=02592000= + ADDVALUE:= CONV(ACCUM, 1, 0, ACCUM[1].[35:6]); 19780000=02592000= FLAG(600); % NUMBER EXPECTED. 19785000=02593000= END; 19790000=02594000= GO SKANAGAIN; 19795000=02595000= @@ -3312,7 +4635,7 @@ COMMENT DID NOT RECOGNIZE OPTION; 19810000 GO AGAIN; 19845000=02601000= EXIT: 19850000=02602500= LISTER:= DEBUGTOG OR LISTOG OR LISTATOG; 19855000=02602500= - MOVE(10, DEFINEARRAY[0], ACCUM[0]); % RESTORE INFORMATION FOR 19860000=02602600= + MOVE(10, DEFINEARRAY, 0, ACCUM, 0); % RESTORE INFORMATION FOR 19860000=02602600= COUNT:= SCOUNT; 19865000=02602700= RESULT:= SRESULT; % "TABLE" TO RESUME SCAN. 19870000=02602700= DOLLARTOG:= FALSE; 19875000=02603000= @@ -3357,39 +4680,39 @@ COMMENT TABLE IS THE ROUTINE THAT MOST CODE IN THE COMPILER 19895000 BEGIN 20070000=02636000= LABEL 20075000=02637000= PERCENT, 20080000=02637000= - SPECIALCHAR, 20085000=02637000= - COMPLETE, 20090000=02637000= - COLON, 20095000=02637000= - DOT, 20100000=02637000= - ATSIGN, 20105000=02637000= - QUOTE, 20110000=02638000= - STRNGXT, 20115000=02638000= - MOVEIT, 20120000=02638000= - ARGH, 20125000=02638000= - FINISHNUMBER, 20130000=02639000= - SCANAGAIN, 20135000=02639000= - FPART, 20140000=02639000= - EPART, 20145000=02639000= - IPART, 20150000=02639000= - IDENT, 20155000=02639000= - ROSE, 20160000=02639000= - COMPOST, 20165000=02639000= - DOLLAR, 20170000=02639000= - RTPAREN, 20175000=02640000= - CROSSHATCH; 20180000=02640000= + SPECIALCHAR, 20085000=02637000= + COMPLETE, 20090000=02637000= + COLON, 20095000=02637000= + DOT, 20100000=02637000= + ATSIGN, 20105000=02637000= + QUOTE, 20110000=02638000= + STRNGXT, 20115000=02638000= + MOVEIT, 20120000=02638000= + ARGH, 20125000=02638000= + FINISHNUMBER, 20130000=02639000= + SCANAGAIN, 20135000=02639000= + FPART, 20140000=02639000= + EPART, 20145000=02639000= + IPART, 20150000=02639000= + IDENT, 20155000=02639000= + ROSE, 20160000=02639000= + COMPOST, 20165000=02639000= + DOLLAR, 20170000=02639000= + RTPAREN, 20175000=02640000= + CROSSHATCH; 20180000=02640000= SWITCH 20190000=02641000= SPECIALSWITCH:= PERCENT, 20195000=02641000= - DOLLAR, 20200000=02641000= - DOT, 20205000=02641000= - ATSIGN, 20210000=02641000= - COLON, 20215000=02641000= - QUOTE, 20220000=02642000= - RTPAREN, 20225000=02642000= - CROSSHATCH; 20230000=02642000= + DOLLAR, 20200000=02641000= + DOT, 20205000=02641000= + ATSIGN, 20210000=02641000= + COLON, 20215000=02641000= + QUOTE, 20220000=02642000= + RTPAREN, 20225000=02642000= + CROSSHATCH; 20230000=02642000= SWITCH 20240000=02643000= RESULTSWITCH:= IDENT, 20245000=02643000= - SPECIALCHAR, 20250000=02643000= - IPART; 20255000=02643000= + SPECIALCHAR, 20250000=02643000= + IPART; 20255000=02643000= WHILE P >= NXTELBT DO 20260000=02645000= BEGIN 20265000=02645000= SCANAGAIN: 20270000=02647000= @@ -3402,10 +4725,10 @@ COMMENT TABLE IS THE ROUTINE THAT MOST CODE IN THE COMPILER 19895000 GO SCANAGAIN; 20305000=02650000= SPECIALCHAR: 20310000=02652000= GT1:= ACCUM[1].[29:6]-2; 20315000=02652000= - ENDTOG:= GT1 = 57 AND ENDTOG; 20320000=02653000= + ENDTOG:= GT1 = 57 AND ENDTOG; % 57+2 = "%" 20320000=02653000= 20325000=02654000= COMMENT OBTAIN ACTUAL CHARACTER FROM ACCUM; 20330000=02654000= - SPECIAL[GT1 & GT1[5:6:3]]; 20335000=02655000= + T:= SPECIAL[GT1 & GT1[5:6:3]]; 20335000=02655000= COMMENT NOTICE COMPRESSION TECHNIQUE USED TO SHORTEN TABLE OF 20335100=02656000= ELBAT WORDS FOR SPECIAL CHARACTERS; 20335200=02657000= IF GT1:= T.INCR = 0 THEN 20335300=02658000= @@ -3418,7 +4741,7 @@ COLON: 20340400 RESULT:= 7; 20340500=02663000= SCANNER; COMMENT ELIMINATE BLANKS - CHECKING 20345000=02663000= FOR := IN PLACE OF ~; 20345100=02664000= - IF EXAMIN(NCR) = 6"=" THEN 20345200=02665000= + IF EXAMIN(SBUFF, NCR) = 6"=" THEN 20345200=02665000= BEGIN 20345300=02666000= RESULT:= 0; 20345400=02666000= SCANNER; 20345500=02666000= @@ -3427,7 +4750,7 @@ COLON: 20340400 RESULT:= 2; 20360000=02667000= GO COMPLETE; 20365000=02667000= DOT: 20370000=02680000= - IF EXAMIN(NCR) > 9 OR ENDTOG THEN 20375000=02680000= + IF EXAMIN(SBUFF, NCR) > 9 OR ENDTOG THEN 20375000=02680000= GO COMPLETE; 20380000=02680000= NHI:= NLO:= 0; 20385000=02681000= C:= 0; 20390000=02682000= @@ -3436,7 +4759,7 @@ COLON: 20340400 ATSIGN: 20405000=02684000= % RESULT:=0; SCANNER; 20410000=02684000= % IF COUNT>17 THEN GO ARGH; 20415000=02685000= -% IF OCTIZE(ACCUM[1],COUNT-1,17-COUNT,C) THEN GO ARGH 20420000=02686000= +% IF OCTIZE(ACCUM, 1, COUNT-1, 17-COUNT, C) THEN GO ARGH 20420000=02686000= % ELSE GO NUMBEREND; 20425000=02687000= NHI:= C:= 1; 20430000=02688000= NLO:= FSAVE:= 0; 20435000=02688000= @@ -3456,10 +4779,10 @@ COMMENT DOT AND ATSIGN ENTER NUMBER CONVERSION AT CORRECT SPOT; 20450000 RESULT:= 5; 20505000=02694000= SCANNER; 20510000=02694000= IF COUNT = T THEN 20515000=02695000= - IF EXAMIN(NCR) ^= 6""" THEN 20520000=02696000= + IF EXAMIN(SBUFF, NCR) ^= 6""" THEN 20520000=02696000= GO ARGH; 20525000=02696000= END 20530000=02697000= - UNTIL EXAMIN(NCR) = 6"""; 20535000=02697000= + UNTIL EXAMIN(SBUFF, NCR) = 6"""; 20535000=02697000= IF NOT STREAMTOG AND COUNT = 8 AND BOOLEAN(ACCUM[1].[29:1]) THEN 20540000=02697500= BEGIN 20545000=02697600= Q:= ACCUM[1]; 20550000=02697600= @@ -3478,9 +4801,12 @@ COMMENT DOT AND ATSIGN ENTER NUMBER CONVERSION AT CORRECT SPOT; 20450000 T:= C:= 0; 20615000=02701000= T.CLASS:= STRNGCON; 20620000=02702000= IF COUNT < 8 OR(COUNT = 8 AND NOT BOOLEAN(ACCUM[1].[29:1])) THEN 20625000=02703050= - % FLAG BIT NOT SET, FULL WORD CONST. 20630000=02703050= + BEGIN % FLAG BIT NOT SET, FULL WORD CONST. 20630000=02703050= MOVEIT: 20635000=02705000= - MOVECHARACTERS(COUNT, ACCUM[1], 3, C, 8-COUNT) 20640000=02705100= + EBCDICBUFF[0]:= C; 20635100 + MOVECHARACTERS(COUNT, ACCUM, 1, 3, EBCDICBUFF, 0, 8-COUNT); 20640000=02705100= + C:= EBCDICBUFF[0]; 20640100 + END 20640200 ELSE 20645000=02705100= T.CLASS:= STRING; 20650000=02705100= T.INCR:= COUNT; 20655000=02705200= @@ -3497,13 +4823,16 @@ COMMENT CROSSHATCH HANDLES TWO SITUATIONS: 20675000 CROSSHATCH: 20710000=02715000= IF DEFINECTR ^= 0 THEN 20715000=02715000= GO COMPLETE; 20720000=02715000= - PUTSEQNO(GT1, LCR); 20725000=02716000= - TURNONSTOPLIGHT(0, LCR); 20730000=02717000= + PUTSEQNO(EBCDICBUFF, 0, SBUFF, LCR); 20725000=02716000= + GT1:= EBCDICBUFF[0]; % COMPENSATE FOR SCALAR PARAM 20725100 + TURNONSTOPLIGHT(0, SBUFF, LCR); 20730000=02717000= IF DEFINEINDEX = 0 THEN 20735000=02718000= GO ARGH; 20740000=02718000= LCR:= (GT1:= DEFINEARRAY[DEFINEINDEX-1]) DIV 262144; 20745000=02719000= NCR:= GT1 MOD 262144; 20750000=02720000= LASTUSED:= (T:= DEFINEARRAY[DEFINEINDEX:= DEFINEINDEX-3]).[14:15];20755000=02721000= + IF DEFINEINDEX <= 0 THEN 20755100 + SBUFF:= CBUFF; % REVERT BACK TO CARD BUFFER 20755200 IF(GT2:= T.[29:15]) ^= 0 THEN % THIS WAS A PARAMETRIC DEFINE 20760000=02721500= BEGIN % PURGING PARAMETERS FROM DEFSTACKHEAD 20765000=02722000= GT2:= TAKE(GT2).LINK; % GET POINTER TO NEW DEFSTACKHEAD 20770000=02722500= @@ -3518,7 +4847,7 @@ COMMENT CROSSHATCH HANDLES TWO SITUATIONS: 20675000 DOLLAR: 20815000=02729000= COMMENT THIS CODE HANDLES CONTROL CARDS; 20820000=02729000= 20825000=02730000= - GT1:= EXAMIN(NCR) = 6"$"; 20830000=02730000= + GT1:= EXAMIN(SBUFF, NCR); 20830000=02730000= DOLLARCARD; 20845000=02730000= PERCENT: 20850000=02731000= IF NCR ^= FCR THEN 20855000=02731000= @@ -3535,7 +4864,7 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 20940000 RTPAREN: 20945000=02744000= RESULT:= 7; 20950000=02744000= SCANNER; 20955000=02744000= - IF EXAMIN(NCR) = 6""" THEN 20960000=02745000= + IF EXAMIN(SBUFF, NCR) = 6""" THEN 20960000=02745000= BEGIN 20965000=02746000= RESULT:= 0; 20970000=02747000= SCANNER; 20975000=02747000= @@ -3543,12 +4872,12 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 20940000 RESULT:= 5; 20985000=02749000= SCANNER 20990000=02750000= END 20995000=02750000= - UNTIL EXAMIN(NCR) = 6"""; 21000000=02750000= + UNTIL EXAMIN(SBUFF, NCR) = 6"""; 21000000=02750000= RESULT:= 0; 21005000=02751000= SCANNER; 21010000=02751000= RESULT:= 7; 21015000=02752000= SCANNER; 21020000=02752000= - IF EXAMIN(NCR) ^= 6"(" THEN 21025000=02753000= + IF EXAMIN(SBUFF, NCR) ^= 6"(" THEN 21025000=02753000= GO ARGH; 21030000=02753000= RESULT:= 0; 21035000=02754000= SCANNER; 21040000=02754000= @@ -3563,7 +4892,7 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 20940000 RESULT:= 7; 21085000=02759000= SCANNER; % DEBLANK. 21090000=02759000= IF DEFINECTR = 0 THEN 21095000=02760000= - IF(C = 3 OR C = 4) AND EXAMIN(NCR) = 6""" THEN 21100000=02761000= + IF(C = 3 OR C = 4) AND EXAMIN(SBUFF, NCR) = 6""" THEN 21100000=02761000= %OCTAL OR HEX STRING.21105000=02761000= IF NOT(ACCUM[0].CLASS = FILEID AND 21110000=02761501= INFO[LASTINFO.LINKR, LASTINFO.LINKC] = ACCUM[0]) 21115000=02761501= @@ -3583,21 +4912,21 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 20940000 GO SCANAGAIN 21185000=02768000= END; 21190000=02768000= END 21195000=02769000= - UNTIL EXMAIN(NCR) = 6"""; 21200000=02769000= + UNTIL EXAMIN(SBUFF, NCR) = 6"""; 21200000=02769000= Q:= ACCUM[1]; 21205000=02770000= RESULT:= 5; 21210000=02770000= SCANNER; 21215000=02770000= COUNT:= COUNT-1; 21220000=02770000= IF C = 3 THEN % OCTAL STRING. 21225000=02771000= - IF OCTIZE(ACCUM[1], ACCUM[4], 16-COUNT, COUNT) THEN 21230000=02772000= + IF OCTIZE(ACCUM, 1, ACCUM, 4, 16-COUNT, COUNT) THEN 21230000=02772000= FLAG(521) % NON-OCTAL CHARACTER IN STRING. 21235000=02773000= ELSE 21240000=02774000= ELSE 21245000=02774000= - IF HEXIZE(ACCUM[1], ACCUM[4], 12-COUNT, COUNT) THEN 21250000=02774000= + IF HEXIZE(ACCUM, 1, ACCUM, 4, 12-COUNT, COUNT) THEN 21250000=02774000= FLAG(521); % NON-HEX CHARACTER IN HEX STRING. 21255000=02775000= T.INCR:= COUNT:= (C*COUNT-1) DIV 6+1; % # OF CHARS. 21260000=02776100= T.CLASS:= STRNGCON; 21265000=02776200= - MOVECHARACTERS(1, ACCUM[4], 0, ACCUM[1], 3); 21270000=02776300= + MOVECHARACTERS(1, ACCUM, 4, 0, ACCUM, 1, 3); 21270000=02776300= IF BOOLEAN(ACCUM[1].[29:1]) THEN% FLAG BIT SET. 21275000=02776400= IF STREAMTOG THEN 21280000=02776500= T.CLASS:= STRING 21285000=02776700= @@ -3605,9 +4934,9 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 20940000 FLAG(254) 21295000=02776900= ELSE 21300000=02776900= C:= ACCUM[4]; % GET FULL WORD EQUIVALENT OF STRING. 21305000=02777000= - MOVECHARACTERS(COUNT, ACCUM[4], 8-COUNT, ACCUM[1], 3); 21310000=02777050= + MOVECHARACTERS(COUNT, ACCUM, 4, 8-COUNT, ACCUM, 1, 3); 21310000=02777050= GO TO COMPLETE; 21315000=02777100= - MOVECHARACTERS(8, ACCUM[4], 0, ACCUM[1], 3); 21320000=02781000= + MOVECHARACTERS(8, ACCUM, 4, 0, ACCUM, 1, 3); 21320000=02781000= GO COMPLETE; 21325000=02782000= END OCTAL OR HEX STRING; 21330000=02783000= IF DPTOG THEN 21335000=02784000= @@ -3615,24 +4944,24 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 20940000 NHI:= THI; 21345000=02785000= NLO:= TLO; 21350000=02785000= END; 21355000=02785000= - IF EXAMIN(NCR) = 6"." THEN 21360000=02786000= + IF EXAMIN(SBUFF, NCR) = 6"." THEN 21360000=02786000= BEGIN 21365000=02787000= RESULT:= 0; 21370000=02788000= SCANNER; 21375000=02788000= C:= 1.0*C; 21380000=02789000= FPART: 21385000=02790000= TCOUNT:= COUNT; 21390000=02790000= - IF EXAMIN(NCR) <= 9 THEN 21395000=02791000= + IF EXAMIN(SBUFF, NCR) <= 9 THEN 21395000=02791000= BEGIN 21400000=02792000= RESULT:= 0; 21405000=02793000= SCANNER; 21410000=02793000= IF DPTOG THEN 21415000=02794000= BEGIN 21420000=02795000= - DOUBLE(CONVERT, TLO, TEN[(COUNT-TCOUNT) MOD 12], 0, /, 21425000=02797000= - := , THI, TLO); 21430000=02797000= + THI:= FIRSTWORD( 21425000=02797000= + DOUBLE(CONVERT, TLO)/TEN[(COUNT-TCOUNT) MOD 12], TLO); 21430000=02797000= FOR T:= 12 STEP 12 UNTIL COUNT-TCOUNT DO 21435000=02798000= - DOUBLE(THI, TLO, TEN[12], 0, /, := , THI, TLO); 21440000=02799000= - DOUBLE(THI, TLO, NHI, NLO, +, := , NHI, NLO); 21445000=02800000= + THI:= FIRSTWORD(DOUBLE(THI, TLO)/TEN[12], TLO); 21440000=02799000= + NHI:= FIRSTWORD(DOUBLE(THI, TLO) + DOUBLE(NHI, NLO), NLO); 21445000=02800000= C:= NHI 21450000=02802000= END 21455000=02803000= ELSE 21460000=02803000= @@ -3641,7 +4970,7 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 20940000 END; 21475000=02805000= RESULT:= 7; 21480000=02806000= SCANNER; 21485000=02806000= - IF EXAMIN(NCR) = 6"@" THEN 21490000=02807000= + IF EXAMIN(SBUFF, NCR) = 6"@" THEN 21490000=02807000= BEGIN 21495000=02808000= RESULT:= 0; 21500000=02809000= SCANNER; 21505000=02809000= @@ -3650,7 +4979,7 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 20940000 C:= C*1.0; 21520000=02811000= RESULT:= 7; 21525000=02812000= SCANNER; 21530000=02812000= - IF T:= EXAMIN(NCR) > 9 THEN 21535000=02813000= + IF T:= EXAMIN(SBUFF, NCR) > 9 THEN 21535000=02813000= IF T = 6"-" OR T = 6"+" THEN 21540000=02814000= BEGIN 21545000=02815000= RESULT:= 0; 21550000=02816000= @@ -3681,17 +5010,16 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 20940000 IF GT1 < 0 THEN 21675000=02830000= BEGIN 21680000=02831000= GT1:= -GT1; 21685000=02832000= - DOUBLE(NHI, NLO, TEN[GT1 MOD 12], 0, /, := , NHI, NLO) 21690000=02833000= - ; 21695000=02833000= + NHI:= FIRSTWORD(DOUBLE(NHI, NLO)/TEN[GT1 MOD 12], NLO); 21690000=02833000= FOR GT2:= 12 STEP 12 UNTIL GT1 DO 21700000=02834000= - DOUBLE(NHI, NLO, TEN[12], 0, /, := , NHI, NLO); 21705000=02835000= + NHI:= FIRSTWORD(DOUBLE(NHI, NLO)/TEN[12], NLO); 21705000=02835000= END 21710000=02837000= ELSE 21715000=02837000= BEGIN 21720000=02837000= - DOUBLE(NHI, NLO, TEN[GT1 MOD 12], 0, *, := , NHI, NLO) 21725000=02838000= + NHI:= FIRSTWORD(DOUBLE(NHI, NLO)*TEN[GT1 MOD 12], NLO) 21725000=02838000= ; 21730000=02838000= FOR GT2:= 12 STEP 12 UNTIL GT1 DO 21735000=02839000= - DOUBLE(NHI, NLO, TEN[12], 0, *, := , NHI, NLO); 21740000=02840000= + NHI:= FIRSTWORD(DOUBLE(NHI, NLO)*TEN[12], NLO); 21740000=02840000= END 21745000=02842000= ELSE 21750000=02842000= C:= 21755000=02842000= @@ -3738,7 +5066,7 @@ COMMENT THE CODE BETWEEN IDENT AND COMPOST DOES A LOOKUP IN INFO. 21870000 GO COMPLETE 21960000=02871000= END 21965000=02872000= END; 21970000=02872000= - IF EXAMINELAST(ACCUM[1], COUNT+2) = 12 THEN 21975000=02873000= + IF EXAMINELAST(ACCUM, 1, COUNT+2) = 12 THEN 21975000=02873000= T:= DEFSTACKHEAD 21980000=02874000= ELSE 21985000=02874000= T:= STACKHEAD[SCRAM]; 21990000=02874000= @@ -3759,19 +5087,19 @@ COMMENT THE CODE BETWEEN IDENT AND COMPOST DOES A LOOKUP IN INFO. 21870000 GO ROSE; 22065000=02879000= IF COUNT <= 5 THEN 22070000=02880000= GO COMPOST; 22075000=02880000= - IF NOT EQUAL(COUNT-5, ACCUM[2], INFO[GT1, GT2+2]) THEN 22080000=02881000= + IF NOT EQUAL(COUNT-5, ACCUM, 2, INFO[GT1,*], GT2+2) THEN 22080000=02881000= GO ROSE; 22085000=02881000= COMPOST: 22090000=02882000= T:= T & GT1[12:4:5] & GT2[7:7:8]; 22095000=02882000= IF GT1 ^= 1 AND NOT MACROID THEN % NOT RESERVED WORD 22100000=02882100= - XREFIT(T, LINK, CARDNUMBER, NORMALREF); % BUILD XREF ENTRY 22105000=02882200= + XREFIT(T.LINK, CARDNUMBER, NORMALREF); % BUILD XREF ENTRY 22105000=02882200= 22110000=02883000= COMMENT CHECK HERE FOR COMMENTS AND DEFINED IDS; 22115000=02883000= IF NOT ENDTOG THEN 22120000=02884000= BEGIN 22125000=02885000= IF GT1:= T.CLASS = COMMENTV THEN 22130000=02886000= BEGIN 22135000=02887000= - WHILE EXAMIN(NCR) ^= 6";" DO 22140000=02888000= + WHILE EXAMIN(SBUFF, NCR) ^= 6";" DO 22140000=02888000= BEGIN 22145000=02889000= RESULT:= 6; 22150000=02889000= COUNT:= 0; 22155000=02889000= @@ -3788,7 +5116,7 @@ COMMENT CHECK HERE FOR COMMENTS AND DEFINED IDS; 22115000 GO COMPLETE; 22210000=02894000= 22215000=02895000= COMMENT SETUP FOR DEFINED IDS - SEE DEFINEGEN FOR MORE DETAILS; 22220000=02895000= - IF BOOLEAN(T, MON) THEN % THIS IS A PARAMETRIC DEFINE 22225000=02896000= + IF BOOLEAN(T.MON) THEN % THIS IS A PARAMETRIC DEFINE 22225000=02896000= GT1:= GIT(T:= FIXDEFINEINFO(T)) 22230000=02897000= ELSE 22235000=02897000= GT1:= 0; 22240000=02897000= @@ -3800,9 +5128,11 @@ COMMENT SETUP FOR DEFINED IDS - SEE DEFINEGEN FOR MORE DETAILS; 22220000 DEFINEARRAY[DEFINEINDEX]:= LASTUSED & GT1[29:14:15]; 22270000=02900000= LASTUSED:= T.DYNAM; 22275000=02901000= DEFINEARRAY[DEFINEINDEX+2]:= 262144*LCR+NCR; 22280000=02902000= - LCR:= (NCR:= MKABS(DEFINEARRAY[DEFINEINDEX+1]))+1; 22285000=02903000= - PUTSEQNO(GT4, LCR); 22290000=02904000= - TURNONSTOPLIGHT(6"%", LCR); 22295000=02905000= + LCR:= (NCR:= DEFINEINDEX+1)+1; 22285000=02903000= + SBUFF:= DEFINEARRAY; % SWITCH SOURCE TO DEFINEARRAY 22285100 + PUTSEQNO(EBCDICBUFF, 0, SBUFF, LCR); 22290000=02904000= + GT4:= EBCDICBUFF[0]; % COMPENSATE FOR SCALAR PARAM 22290100 + TURNONSTOPLIGHT(6"%", SBUFF, LCR); 22295000=02905000= DEFINEINDEX:= DEFINEINDEX+3; 22300000=02905000= GO PERCENT; 22305000=02906000= COMPLETE: 22325000=02910000= @@ -3825,7 +5155,7 @@ COMMENT SETUP FOR DEFINED IDS - SEE DEFINEGEN FOR MORE DETAILS; 22220000 BEGIN 22410000=02914000= 22415000=02915000= COMMENT ELBAT IS FULL: ADJUST IT; 22420000=02915000= - MOVE(10, ELBAT[65], ELBAT); 22425000=02916000= + MOVE(10, ELBAT, 65, ELBAT, 0); 22425000=02916000= I:= I-65; 22430000=02917000= P:= P-65; 22435000=02917000= NXTELBT:= 10; 22440000=02917000= @@ -3842,19 +5172,21 @@ COMMENT SPECIAL HANDLING OF CONSTANTS FOR SAKE OF FOR STATEMENTS; 22470000 COMMENT ALLOW DEFINE; 22495000=02926000= END TABLE; 22500000=02927000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22505000=02927000= - INTEGER PROCEDURE MOVEANDBLOCK(FROM, SIZE, NAME) VALUE SIZE, 22510000=02927110= - NAME; 22515000=02927110= + INTEGER PROCEDURE MOVEANDBLOCK(FROM, SIZE, NAME); 22510000=02927110= + VALUE 22510100=02927110= + SIZE, 22510200=02927110= + NAME; 22515000=02927110= REAL 22520000=02927110= SIZE, 22525000=02927110= - NAME; 22530000=02927110= + NAME; 22530000=02927110= ARRAY 22535000=02927110= FROM[0, 0]; 22540000=02927110= BEGIN 22545000=02927120= INTEGER 22550000=02927130= NSEGS, 22555000=02927130= - I, 22560000=02927130= - J, 22565000=02927130= - K; 22570000=02927130= + I, 22560000=02927130= + J, 22565000=02927130= + K; 22570000=02927130= ARRAY 22575000=02927140= A[0:14]; 22580000=02927140= SWITCH FORMAT 22585000=02927150= @@ -3868,25 +5200,62 @@ COMMENT SPECIAL HANDLING OF CONSTANTS FOR SAKE OF FOR STATEMENTS; 22470000 (/,"SEGMENT ZERO",I*,/), 22625000=02927220= (/,"SEGMENT NUMBER",I5," IS CODE FILE SEGMENT",I5,/); 22630000=02927230= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22632000 - STREAM PROCEDURE OCTALWORDS(N, W, S, D); 22635000=02927240= + PROCEDURE OCTALWORDS(N, W, S, SX, D, DX); 22635000=02927240= VALUE 22640000=02927240= - N, 22645000=02927240= - W; 22650000=02927240= + N, W, SX, DX; 22645000=02927240= + REAL 22645100 + N, W, SX, DX; 22645200 + ARRAY 22645300 + S, D[0]; 22645400 BEGIN 22655000=02927250= - DI:= D; 22660000=02927260= - DS:= LIT 6" "; 22665000=02927260= - SI:= LOC N; 22670000=02927270= - SI:= SI+6; 22675000=02927270= - 4(DS:= 3 RESET;3(IF SB THEN DS:= SET ELSE DS:= RESET;SKIP SB)); 22680000=02927272= - DI:= DI-4; 22685000=02927280= - DS:= 3 FILL; 22690000=02927280= - DI:= D; 22695000=02927290= - DI:= DI+5; 22700000=02927290= - DS:= 4 LIT 6" "; 22705000=02927290= - SI:= S; 22710000=02927300= - W(2(8 22715000=02927350= - (DS:= 3 RESET;3(IF SB THEN DS:= SET ELSE DS:= RESET;SKIP SB);); 22720000=02927350= - DS:= LIT 6" ");DS:= 2 LIT 6" "); 22725000=02927350= + STREAMLOCALS; 22655100 + STREAMSETDI(D, DX); 22660000=02927260= + STREAMSMEARLIT(1, 6" "); 22665000=02927260= + STREAMSETLOCSI(N); 22670000=02927270= + STREAMSKIPSI(+6); 22675000=02927270= + THRU 4 DO 22680000=02927272= + BEGIN 22680100 + STREAMSETDB(3, 0); 22680200 + THRU 3 DO 22680300 + BEGIN 22680400 + IF STREAMTESTSB THEN 22680500 + STREAMSETDB(1, 1) 22680600 + ELSE 22680700 + STREAMSETDB(1, 0); 22680800 + 22680900 + STREAMSKIPSB(1); 22681000 + END; 22681100 + END; 22681200 + 22681300 + STREAMSKIPDI(-4); 22685000=02927280= + STREAMTRANSFERFILL(3); 22690000=02927280= + STREAMSETDI(D, DX); 22695000=02927290= + STREAMSKIPDI(+5); 22700000=02927290= + STREAMSMEARLIT(4, 6" "); 22705000=02927290= + STREAMSETSI(S, DX); 22710000=02927300= + THRU W DO 22715000=02927350= + BEGIN 22715100 + THRU 2 DO 22715200 + BEGIN 22715300 + THRU 8 DO 22715400 + BEGIN 22720000=02927350= + STREAMSETDB(3, 0); 22720100 + THRU 3 DO 22720200 + BEGIN 22720300 + IF STREAMTESTSB THEN 22720400 + STREAMSETDB(1, 1) 22720500 + ELSE 22720600 + STREAMSETDB(1, 0); 22720700 + 22720800 + STREAMSKIPSB(1) 22720900 + END; 22721000 + END; 22721100 + 22721200 + STREAMSMEARLIT(1, 6" ") 22725000=02927350= + END; 22725100 + 22725200 + STREAMSMEARLIT(2, 6" ") 22725300 + END; 22725400 END OF OCTALWORDS; 22730000=02927360= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22732000 %********** S T A R T ********** 22735000=02927370= @@ -3905,17 +5274,15 @@ COMMENT SPECIAL HANDLING OF CONSTANTS FOR SAKE OF FOR STATEMENTS; 22470000 BEGIN 22800000=02927500= IF(K:= (128-(J MOD 128))) < 30 THEN 22805000=02927510= BEGIN 22810000=02927520= - MOVE(K, FROM[J DIV 128, J MOD 128], CODE(0)); 22815000=02927530= - MOVE(30-K, FROM[(J DIV 128)+1, 0], CODE(K)); 22820000=02927540= + MOVE(K, FROM[J DIV 128,*], J MOD 128, CODEBUFF, 0); 22815000=02927530= + MOVE(30-K, FROM[(J DIV 128)+1,*], 0, CODEBUFF, K); 22820000=02927540= END 22825000=02927570= ELSE 22830000=02927570= - MOVE(30, FROM[J DIV 128, J MOD 128], CODE(0)); 22835000=02927570= + MOVE(30, FROM[J DIV 128,*], J MOD 128, CODEBUFF, 0); 22835000=02927570= IF J+30 > SIZE THEN % ZERO OUT UNUSED SECTION 22840000=02927580= BEGIN 22845000=02927590= K:= 0; 22850000=02927600= - MOVE(1, K, CODE(SIZE-J)); 22855000=02927610= - IF(SIZE-J) < 29 THEN % MORE THAN ONE WORD 22860000=02927612= - MOVE(29-SIZE+J, CODE(SIZE-J), CODE(SIZE-J+1)); 22865000=02927620= + REPLACE POINTER(CODEBUFF[SIZE-J],0) BY 0 FOR 30-SIZE+J WORDS; 22855000=02927610= END; 22870000=02927630= IF CODEFILE THEN 22875000=02927640= BEGIN 22880000=02927650= @@ -3923,12 +5290,13 @@ COMMENT SPECIAL HANDLING OF CONSTANTS FOR SAKE OF FOR STATEMENTS; 22470000 BEGIN 22890000=02927670= BLANKET(14, A); 22895000=02927680= OCTALWORDS(J+K, IF(J:= K+5) <= SIZE THEN 5 ELSE SIZE-J-K, 22900000=02927700= - CODE(K), A); 22905000=02927700= - WRITE(LINE, 15, A[*]); 22910000=02927710= + CODEBUFF, K, A, 0); 22905000=02927700= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 22909900 + WRITE(LINE, 20, EBCDICBUFF[*]); 22910000=02927710= END; 22915000=02927720= WRITE(LINE); 22920000=02927722= END; 22925000=02927730= - WRITE(CODE[DA]); 22930000=02927740= + WRITE(CODE[DA], 30, CODEBUFF); 22930000=02927740= DA:= DA+1; 22935000=02927740= END; 22940000=02927750= END; 22945000=02927760= @@ -3946,13 +5314,13 @@ COMMENT NEXTENT IS THE PROCEDURE WHICH SCANS FOR THE FORMAT GENERATOR. 22965000 COUNT:= ACCUM[1]:= 0; 23005000=02934000= LASTELCLASS:= ELCLASS; 23010000=02934000= DEBLANK: 23015000=02936000= - IF EXAMIN(NCR) = 6" " THEN 23020000=02936000= + IF EXAMIN(SBUFF, NCR) = 6" " THEN 23020000=02936000= BEGIN 23025000=02937000= RESULT:= 7; 23030000=02938000= SCANNER; 23035000=02938000= END; 23040000=02939000= - IF EXAMIN(NCR) <= 9 THEN% WE HAVE A NO. (WORD MODE COLLATING SEQ.) 23045000=02940000= - BEGIN 23050000=02941000= + IF EXAMIN(SBUFF, NCR) <= 9 THEN 23045000=02940000= + BEGIN % WE HAVE A NO. (WORD MODE COLLATING SEQ.)23050000=02941000= RESULT:= 3; 23055000=02942000= SCANNER; 23060000=02942000= TCOUNT:= 0; 23065000=02942000= @@ -3964,7 +5332,7 @@ DEBLANK: 23015000 FLAG(140) % INTEGER > 1023. 23095000=02944000= END 23100000=02946000= ELSE 23105000=02946000= - IF EXAMIN(NCR) = 6"%" THEN 23110000=02946000= + IF EXAMIN(SBUFF, NCR) = 6"%" THEN 23110000=02946000= BEGIN 23115000=02947000= READACARD; 23120000=02948000= COUNT:= ACCUM[1]:= 0; 23125000=02948000= @@ -4183,10 +5551,10 @@ COMMENT#################################################################23780000 PROCEDURE GOGEN(LABELBAT, BRANCHTYPE); 24190000=03023000= VALUE 24195000=03024000= LABELBAT, 24200000=03024000= - BRANCHTYPE; 24205000=03024000= + BRANCHTYPE; 24205000=03024000= REAL 24210000=03025000= LABELBAT, 24215000=03025000= - BRANCHTYPE; 24220000=03025000= + BRANCHTYPE; 24220000=03025000= FORWARD; 24225000=03025000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24230000=03025000= BOOLEAN PROCEDURE SIMPGO; 24235000=03026000= @@ -4233,12 +5601,12 @@ COMMENT#################################################################23780000 PROCEDURE EMITB(BRANCH, FROM, TOWARDS); 24440000=03036000= VALUE 24445000=03036000= BRANCH, 24450000=03036000= - FROM, 24455000=03036000= - TOWARDS; 24460000=03036000= - INTEGER 24465000=03037000= + FROM, 24455000=03036000= + TOWARDS; 24460000=03036000= + REAL 24465000=03037000= BRANCH, 24470000=03037000= - FROM, 24475000=03037000= - TOWARDS; 24480000=03037000= + FROM, 24475000=03037000= + TOWARDS; 24480000=03037000= FORWARD; 24485000=03037000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24490000=03037000= PROCEDURE VARIABLE(FROM); 24495000=03038000= @@ -4314,7 +5682,7 @@ COMMENT#################################################################23780000 PROCEDURE FORSTMT; 24845000=03052000= FORWARD; 24850000=03052000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24855000=03052000= - PROCEDURE F; 24860000=03054000= + PROCEDURE E; 24860000=03054000= FORWARD; 24865000=03054000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24870000=03054000= PROCEDURE ENTRY(TYPE); 24875000=03055000= @@ -4451,7 +5819,7 @@ COMMENT#################################################################23780000 PROCEDURE EMITL(LITERAL); 25530000=04003000= VALUE 25535000=04003000= LITERAL; 25540000=04003000= - INTEGER 25545000=04003000= + REAL 25545000=04003000= LITERAL; 25550000=04003000= EMIT(0 & LITERAL[11:9:10]); 25555000=04004000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25560000=04004000= @@ -4460,7 +5828,7 @@ COMMENT#################################################################23780000 PROCEDURE EMITO(OPERATOR); 25575000=04006000= VALUE 25580000=04006000= OPERATOR; 25585000=04006000= - INTEGER 25590000=04006000= + REAL 25590000=04006000= OPERATOR; 25595000=04006000= EMIT(1 & OPERATOR[11:9:10]); 25600000=04007000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25605000=04007000= @@ -4471,7 +5839,7 @@ COMMENT#################################################################23780000 VALUE 25630000=04010000= REPEAT, 25635000=04010000= OPERATOR; 25640000=04010000= - INTEGER 25645000=04011000= + REAL 25645000=04011000= REPEAT, 25650000=04011000= OPERATOR; 25655000=04011000= BEGIN 25660000=04012000= @@ -4486,7 +5854,7 @@ COMMENT#################################################################23780000 PROCEDURE EMITV(ADDRESS); 25705000=04017000= VALUE 25710000=04017000= ADDRESS; 25715000=04017000= - INTEGER 25720000=04017000= + REAL 25720000=04017000= ADDRESS; 25725000=04017000= BEGIN 25730000=04018000= IF ADDRESS > 1023 THEN 25735000=04018000= @@ -4500,12 +5868,12 @@ COMMENT#################################################################23780000 PROCEDURE EMITN(ADDRESS); 25775000=04022000= VALUE 25780000=04022000= ADDRESS; 25785000=04022000= - INTEGER 25790000=04022000= + REAL 25790000=04022000= ADDRESS; 25795000=04022000= BEGIN 25800000=04023000= IF ADDRESS > 1023 THEN 25805000=04023000= EMITO(PRTE); 25810000=04023000= - EMIT(3 & ADDRESS[11:9:10] 25815000=04024000= + EMIT(3 & ADDRESS[11:9:10]) 25815000=04024000= END EMITN; 25820000=04024000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25825000=04024000= 25830000=04025000= @@ -4515,10 +5883,10 @@ COMMENT#################################################################23780000 PROCEDURE EMITPAIR(ADDRESS, OPERATOR); 25850000=04028000= VALUE 25855000=04029000= ADDRESS, 25860000=04029000= - OPERATOR; 25865000=04029000= - INTEGER 25870000=04030000= + OPERATOR; 25865000=04029000= + REAL 25870000=04030000= ADDRESS, 25875000=04030000= - OPERATOR; 25880000=04030000= + OPERATOR; 25880000=04030000= BEGIN 25885000=04031000= EMITL(ADDRESS); 25890000=04032000= IF ADDRESS > 1023 THEN 25895000=04033000= @@ -4654,12 +6022,12 @@ COMMENT#################################################################23780000 PROCEDURE EMITB(BRANCH, FROM, TOWARDS); 26545000=04114000= VALUE 26550000=04115000= BRANCH, 26555000=04115000= - FROM, 26560000=04115000= - TOWARDS; 26565000=04115000= - INTEGER 26570000=04116000= + FROM, 26560000=04115000= + TOWARDS; 26565000=04115000= + REAL 26570000=04116000= BRANCH, 26575000=04116000= - FROM, 26580000=04116000= - TOWARDS; 26585000=04116000= + FROM, 26580000=04116000= + TOWARDS; 26585000=04116000= BEGIN 26590000=04117000= INTEGER 26595000=04118000= TL; 26600000=04118000= @@ -4682,19 +6050,39 @@ COMMENT#################################################################23780000 OCTAL, NAMELY : 26685000=04127000= 1. 4 CHARACTERS FOR THE L REGISTER. 26690000=04128000= 2.16 CHARACTERS FOR THE WORD BEING EMITTED. ; 26695000=04129000= - STREAM PROCEDURE DEBUGWORD(SFQ, CODE, FEIL); 26700000=04130000= + PROCEDURE DEBUGWORD(SEQ, CODE, FEIL); 26700000=04130000= VALUE 26705000=04130000= - SEQ, 26710000=04130000= - CODE; 26715000=04130000= + SEQ, CODE; 26710000=04130000= + REAL 26710100 + SEQ, CODE; 26710200 + ARRAY 26710300 + FEIL[0]; 26710400 BEGIN 26720000=04131000= - DI:= FEIL; 26725000=04132000= - SI:= LOC SEQ; 26730000=04132000= - SI:= SI+4; 26735000=04132000= - DS:= 4 CHR; 26740000=04132000= - DS:= 2 LIT 6" "; 26745000=04133000= - SI:= LOC CODE; 26750000=04134000= - 16(DS:= 3 RESET;3(IF SB THEN DS:= SET ELSE DS:= RESET;SKIP 1 SB)); 26755000=04136000= - 49(DS:= 2 LIT 6" "); 26760000=04137000= + STREAMLOCALS; 26720100 + STREAMSETDI(FEIL, 0); 26725000=04132000= + STREAMSETLOCSI(SEQ); 26730000=04132000= + STREAMSKIPSI(+4); 26735000=04132000= + STREAMTRANSFERCHR(4); 26740000=04132000= + STREAMTRANSFERLIT(2, 6" "); 26745000=04133000= + STREAMSETLOCSI(CODE); 26750000=04134000= + THRU 16 DO 26755000=04136000= + BEGIN 26755100 + STREAMSETDB(3, 0); 26755200 + THRU 3 DO 26755300 + BEGIN 26755400 + IF STREAMTESTSB THEN 26755500 + STREAMSETDB(1, 1) 26755600 + ELSE 26755700 + STREAMSETDB(1, 0); 26755800 + 26755900 + STREAMSKIPSB(1); 26756000 + END 26756100 + END; 26756200 + 26756300 + THRU 49 DO 26760000=04137000= + BEGIN 26760100 + STREAMSMEARLIT(2, 6" ") 26760200 + END; 26760300 END; 26765000=04138000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26766000 COMMENT EMITWORD PLACES THE PARAMETER,"WORD",INTO EDOC. IF 26770000=04139000= @@ -4708,10 +6096,10 @@ COMMENT#################################################################23780000 BEGIN 26810000=04143000= ADJUST; 26815000=04144000= IF L >= 4092 THEN 26820000=04145000= - ERR(200); 26825000=04145000= + ERR(200) 26825000=04145000= ELSE 26830000=04146000= BEGIN 26835000=04146000= - MOVE(1, WORD, EDOC[L.[11:3], L.[8:7]]); 26840000=04147000= + EDOC[L.[11:3], L.[8:7]]:= WORD; 26840000=04147000= IF DEBUGTOG THEN 26845000=04148000= BEGIN 26850000=04149000= DEBUGWORD(B2D(L), WORD, LIN); 26855000=04149000= @@ -4736,9 +6124,9 @@ COMMENT#################################################################23780000 BEGIN 26950000=04165000= INTEGER 26955000=04166000= J, 26960000=04166000= - TEMPL, 26965000=04166000= - D, 26970000=04166000= - LINK; 26975000=04166000= + TEMPL, 26965000=04166000= + D, 26970000=04166000= + LINK; 26975000=04166000= BOOLEAN 26980000=04167000= CREL; 26985000=04167000= LABEL 26990000=04168000= @@ -4819,7 +6207,7 @@ COMMENT#################################################################23780000 LINKTOG:= FALSE; 27365000=04222000= INFO[0, 255-N+1]:= L-1; 27370000=04223000= END; 27375000=04224000= -FINSIHED: 27380000=04225000= +FINISHED: 27380000=04225000= END EMITNUM; 27385000=04225000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%27390000=04225000= COMMENT SEARCH PERFORMS A BINARY SEARCH ON THE COP AND WOP 27395000=04226000= @@ -4871,17 +6259,23 @@ L: SEARCH:= Q[I+1]; 27555000 IS PRECISILY = EDOC[(L DIV 4) DIV 128,(< DIV 4)MOD 128] 27625000=04267000= SYLLABLE POSITION=(L MOD 4 ). WHERE L IS THE SYLLABLE 27630000=04268000= NUMBER RELATIVE TO THE BEGINNING OF THE SEGMENT; 27635000=04269000= - STREAM PROCEDURE PACK(WORD, POSITION, SYLLABLE); 27640000=04270000= + PROCEDURE PACK(WORD, WX, POSITION, SYLLABLE); 27640000=04270000= VALUE 27645000=04271000= - POSITION, 27650000=04271000= - SYLLABLE; 27655000=04271000= + WX, POSITION, SYLLABLE; 27650000=04271000= + REAL 27650100 + WX, POSITION, SYLLABLE; 27650200 + ARRAY 27650300 + WORD[0]; 27650400 BEGIN 27660000=04272000= - DI:= WORD; 27665000=04273000= - DI:= DI+POSITION; 27670000=04273000= - DI:= DI:= POSITION; 27675000=04273000= - SI:= LOC SYLLABLE; 27680000=04274000= - SI:= SI+6; 27685000=04274000= - DS:= 2 CHR; 27690000=04275000= + STREAMLOCALS; 27660100 + STREAMSETDI(WORD, WX); 27665000=04273000= + STREAMSKIPDI(+POSITION); 27670000=04273000= + STREAMSKIPDI(+POSITION); 27675000=04273000= + STREAMSETLOCSI(SYLLABLE); 27680000=04274000= + STREAMSKIPSI(+6); 27685000=04274000= + STREAMTRANSFERCHR(2); 27690000=04275000= + % PERHAPS WE SHOULD JUST DO 27690100 + % WORD[WX]:= * & (SYLLABLE)[47-POSITION*12:12]; 27690200 END PACK; 27695000=04276000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%27696000 PROCEDURE DEBUG(S); 27700000=04277000= @@ -4891,19 +6285,23 @@ L: SEARCH:= Q[I+1]; 27555000 S; 27720000=04278000= IF STREAMTOG THEN 27725000=04279000= IF SINGLTOG THEN 27730000=04279100= - WRITE(LINE, BUG, B2D(L), COP[S.[5:6]], B2D(S.[11:6]), B2D(S)) 27735000=04279200= + WRITE(LINE, BUG, BIC2EBC(B2D(L)), BIC2EBC(COP[S.[5:6]]), 27735000=04279200= + BIC2EBC(B2D(S.[11:6])), BIC2EBC(B2D(S))) 27735100 ELSE 27755000=04280000= - WRITE(LINE[DBL], BUG, B2D(L), COP[S.[5:6]], B2D(S.[11:6]), 27760000=04281000= - B2D(S)) 27765000 + WRITE(LINE[SPACE 2], BUG, BIC2EBC(B2D(L)), 27760000=04281000= + BIC2EBC(COP[S.[5:6]]), BIC2EBC(B2D(S.[11:6])), 27760100 + BIC2EBC(B2D(S))) 27765000 ELSE 27770000=04283000= IF SINGLTOG THEN 27775000=04284100= - WRITE(LINE, BUG, B2D(L), 27780000=04284500= - IF T1:= S.[1:2] = 1 THEN BUGGER(S.[11:10]) ELSE WOP[T1], 27785000=04284500= - IF T1 = 1 THEN WOP[1] ELSE B2D(S.[11:10]), B2D(S)) 27790000=04284500= + WRITE(LINE, BUG, BIC2EBC(B2D(L)), 27780000=04284500= + BIC2EBC(IF T1:=S.[1:2]=1 THEN BUGGER(S.[11:10]) ELSE WOP[T1]),27785000=04284500= + BIC2EBC(IF T1 = 1 THEN WOP[1] ELSE B2D(S.[11:10])), 27790000=04284500= + BIC2EBC(B2D(S))) 27790100 ELSE 27795000=04284500= - WRITE(LINE[DBL], BUG, B2D(L), 27800000=04287000= - IF T1:= S.[1:2] = 1 THEN BUGGER(S.[11:10]) ELSE WOP[T1], 27805000=04287000= - IF T1 = 1 THEN WOP[1] ELSE B2D(S.[11:10]), B2D(S)); 27810000=04287000= + WRITE(LINE[SPACE 2], BUG, BIC2EBC(B2D(L)), 27800000=04287000= + BIC2EBC(IF T1:=S.[1:2]=1 THEN BUGGER(S.[11:10]) ELSE WOP[T1]),27805000=04287000= + BIC2EBC(IF T1 = 1 THEN WOP[1] ELSE B2D(S.[11:10])), 27810000=04287000= + BIC2EBC(B2D(S))); 27810100 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%27812000 COMMENT EMIT PLACES SYLLABLES INTO EDOC, CALLS DEBUG FOR 27815000=04288000= DEBUGGING OUTPUT ON THE PRINTER, AND CHECKS FOR SEGMENTS 27820000=04289000= @@ -4917,7 +6315,7 @@ L: SEARCH:= Q[I+1]; 27555000 IF L < 4092 THEN 27860000=04293000= BEGIN 27865000=04294000= LINKTOG:= TRUE; 27870000=04295000= - PACK(EDOC[L.[11:3], L.[8:7]], L.[1:2], S); 27875000=04296000= + EDOC[L.[11:3], L.[8:7]].[47-(L.[1:2]*12):12]:= S; % WAS PACK(...);27875000=04296000= IF DEBUGTOG THEN 27880000=04297000= DEBUG(S); 27885000=04297000= L:= L+1; 27890000=04298000= @@ -4970,9 +6368,9 @@ NORMAL: 28120000 IF T ^= 0 THEN 28125000=04312000= BEGIN 28130000=04313000= IF DIALA ^= A THEN 28135000=04314000= - EMIT((DIALA:= A) DIV 6)*512+(A:= A MOD 6)*64+DIA); 28140000=04315000= + EMIT(((DIALA:= A) DIV 6)*512+(A:= A MOD 6)*64+DIA); 28140000=04315000= IF DIALB ^= B THEN 28145000=04316000= - EMIT((DIALB:= B) DIV 6)*512+(B:= B MOD 6)*64+DIB); 28150000=04317000= + EMIT(((DIALB:= B) DIV 6)*512+(B:= B MOD 6)*64+DIB); 28150000=04317000= EMIT(TRB+64*T); 28155000=04318000= DIALA:= DIALB:= 0; 28160000=04319000= COMMENT THE PRECEEDING STATEMENT CAN BE REMOVED FOR OPTIMIZING 28165000=04320000= @@ -5030,7 +6428,7 @@ EXIT: 28180000 EMIT21(E, FALSE); 28425000=04526200= GO TO EXIT 28430000=04526200= END; 28435000=04526200= - IF STACK ^= 0 THEN 28440000=04527000= + IF STACKCT ^= 0 THEN 28440000=04527000= GO TO IZ; 28445000=04527000= IF B = 15 THEN 28450000=04528000= BEGIN 28455000=04529000= @@ -5061,7 +6459,7 @@ IZ: IF(S:= (48-A-B) MOD 6)+B <= 39 THEN 28575000 BEGIN 28580000=04549000= EMIT21(E, FALSE); 28585000=04549000= EMIT(T2:= (T1:= A DIV 6)*512+(A MOD 6)*64+DIA); 28590000=04550000= - EMIT((A+B-1) DIV 6-T1+1)*512+64*S+37); 28595000=04551000= + EMIT(((A+B-1) DIV 6-T1+1)*512+64*S+37); 28595000=04551000= GO TO EXIT; 28600000=04552000= END; 28605000=04553000= EMIT(0); 28610000=04554000= @@ -5107,7 +6505,7 @@ EXIT: 28625000 28810000=05001000= COMMENT STEPI AND STEPIT ARE SHORT CALLS ON TABLE; 28815000=05001000= PROCEDURE STEPIT; 28820000=05002000= - ELCASS:= TABLE(I:= I+1); 28825000=05002000= + ELCLASS:= TABLE(I:= I+1); 28825000=05002000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28830000=05002000= INTEGER PROCEDURE STEPI; 28835000=05003000= STEPI:= ELCLASS:= TABLE(I:= I+1); 28840000=05003000= @@ -5117,7 +6515,7 @@ EXIT: 28625000 REAL PROCEDURE TAKE(INDEX); 28860000=05005000= VALUE 28865000=05005000= INDEX; 28870000=05005000= - INTEGER 28875000=05005000= + REAL % B5500 DIDN'T INTEGERIZE PARAM ON CALL? 28875000=05005000= INDEX; 28880000=05005000= TAKE:= INFO[INDEX.LINKR, INDEX.LINKC]; 28885000=05006000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28890000=05006000= @@ -5126,10 +6524,10 @@ EXIT: 28625000 PROCEDURE PUT(WORD, INDEX); 28905000=05008000= VALUE 28910000=05008000= WORD, 28915000=05008000= - INDEX; 28920000=05008000= + INDEX; 28920000=05008000= REAL 28925000=05008000= WORD, 28930000=05008000= - INDEX; 28935000=05008000= + INDEX; 28935000=05008000= INFO[INDEX.LINKR, INDEX.LINKC]:= WORD; 28940000=05009000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28945000=05009000= 28950000=05010000= @@ -5144,68 +6542,85 @@ EXIT: 28625000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28992000 COMMENT WRITERROR IS THE STREAM PROCEDURE WHICH ACTUALLY PRODUCES 28995000=05014000= THE ERROR MESSAGE ON THE PRINTER; 29000000=05015000= - STREAM PROCEDURE 29005000=05016000= - WRITERROR(RMT, ERRNUM, ACCUM, LINE, COUNT, LSTSEQ); 29010000=05016000= + PROCEDURE WRITERROR( 29005000=05016000= + RMT, ERRNUM, ACCUM, AX, LINE, COUNT, LSTSEQ, QX); 29010000=05016000= VALUE 29015000=05017000= - ERRNUM, 29020000=05017000= - COUNT; 29025000=05017000= + RMT, ERRNUM, AX, COUNT, QX; 29020000=05017000= + BOOLEAN 29020100 + RMT; 29020200 + REAL 29020300 + ERRNUM, AX, COUNT, QX; 29020400 + ARRAY 29020500 + ACCUM, LINE, LSTSEQ[0]; 29020600 BEGIN 29030000=05018000= - DI:= LINE; 29035000=05019000= - 11(DS:= 8 LIT 6" "); % BLANK LINE 29040000=05019000= - SI:= LSTSEQ; 29045000=05020000= - SI:= SI-8; 29050000=05020000= - DS:= WDS; 29055000=05020000= - DS:= 24 LIT 6" <<<<<<<<<<<<<<<<<<<<"; % SET FLAG 29060000=05021000= - SI:= LSTSEQ; 29065000=05023000= - DI:= LSTSEQ; 29070000=05023000= - DI:= DI-8; 29075000=05023000= - DS:= WDS; 29080000=05023000= - DI:= LINE; 29085000=05024000= - SI:= RMT; 29090000=05024000= - SI:= SI+7; 29095000=05024000= - IF SC = 6"1" THEN 29100000=05024100= + STREAMLOCALS; 29030050 + LABEL 29030100 + JUMPOUT; 29030200 + 29030300 + TALLY:= 0; 29030400 + STREAMSETDI(LINE, 0); 29035000=05019000= + STREAMSMEARLIT(11*8, 6" "); % BLANK LINE 29040000=05019000= + STREAMSETSI(LSTSEQ, QX); 29045000=05020000= + STREAMSKIPSI(-8); 29050000=05020000= + STREAMTRANSFERWDS(1); 29055000=05020000= + STREAMTRANSFERLIT(8, 6" <<<<"); 29060000=05021000= + STREAMTRANSFERLIT(8, 6"<<<<<<<<"); 29060100 + STREAMTRANSFERLIT(8, 6"<<<<<<<<"); % SET FLAG 29060200 + STREAMSETSI(LSTSEQ, QX); 29065000=05023000= + STREAMSETDI(LSTSEQ, QX); 29070000=05023000= + STREAMSKIPDI(-8); 29075000=05023000= + STREAMTRANSFERWDS(1); 29080000=05023000= + STREAMSETDI(LINE, 0); 29085000=05024000= + IF RMT THEN 29100000=05024100= BEGIN 29105000=05024200= - SI:= LSTSEQ; 29110000=05024200= - DS:= 10 LIT 6"NEAR LINE "; 29115000=05024200= - 7(IF SC > 6"0" THEN JUMP OUT;SI:= SI+1;TALLY:= TALLY+1); 29120000=05024400= - RMT:= TALLY; 29125000=05024500= - DS:= 8 CHR; 29130000=05024500= - DI:= DI-RMT; 29135000=05024500= + STREAMSETSI(LSTSEQ, QX); 29110000=05024200= + STREAMTRANSFERLIT(8, 6"NEAR LIN"); 29115000=05024200= + STREAMTRANSFERLIT(2, 6"E "); 29115100 + THRU 7 DO 29120000=05024400= + BEGIN 29120100 + IF STREAMSCGTR(6"0") THEN 29120200 + GO JUMPOUT; 29120300 + 29120400 + STREAMSKIPSI(+1); 29120500 + STREAMINCTALLY(+1); 29120600 + END; 29120700 + 29120800 + JUMPOUT: 29120900 + RMT:= BOOLEAN(TALLY); 29125000=05024500= + STREAMTRANSFERCHR(8); 29130000=05024500= + STREAMSKIPDI(-REAL(RMT)); 29135000=05024500= END 29140000=05024600= ELSE 29145000=05024600= - DI:= DI+7; 29150000=05024600= - DS:= 14 LIT 6" ERROR NUMBER "; 29155000=05025000= - SI:= LOC ERRNUM; 29160000=05026000= - DS:= 3 DEC; 29165000=05026000= - COMMENT CONVERT ERRNUM; 29170000=05026000= - DS:= 4 LIT 6" -- "; 29175000=05027000= - SI:= ACCUM; 29180000=05028000= - SI:= SI+3; 29185000=05028000= - DS:= COUNT CHR; 29190000=05028000= + STREAMSKIPDI(+7); 29150000=05024600= + 29150100 + STREAMTRANSFERLIT(8, 6" ERROR N"); 29155000=05025000= + STREAMTRANSFERLIT(6, 6"UMBER "); 29155100 + STREAMSETLOCSI(ERRNUM); 29160000=05026000= + STREAMTRANSFERDEC(3); COMMENT CONVERT ERRNUM; 29165000=05026000= + STREAMTRANSFERLIT(4, 6" -- "); 29175000=05027000= + STREAMSETSI(ACCUM, AX); 29180000=05028000= + STREAMSKIPSI(+3); 29185000=05028000= + STREAMTRANSFERCHR(COUNT); 29190000=05028000= COMMENT PLACE ALPHA IN BUFFER; 29195000=05029000= - DS:= LIT 6"." 29200000=05031000= + STREAMSMEARLIT(1, 6".") 29200000=05031000= END WRITERROR; 29205000=05031000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29206000 IF ERRORTOG THEN % DO NOTHING IF WE SUPPRESS MSSGS. 29210000=05032000= BEGIN 29215000=05033000= SPECTOG:= FALSE; 29220000=05034000= - ERRORCOUNT:= ERRORCOUNT+1; 29225000=05035000= - COMMENT COUNT ERRORS; 29230000=05035000= - IF NOT (LISTER OR REMOTOG) THEN 29235000=05036000= + ERRORCOUNT:= ERRORCOUNT+1; COMMENT COUNT ERRORS; 29225000=05035000= + IF NOT (LISTER) THEN 29235000=05036000= BEGIN 29240000=05037000= - EDITLINE(LIN, FCR, 6" ", 0, 0, MEDIUM, 0); 29245000=05038000= - MOVE(1, INFO[LASTSEQROW, LASTSEQUENCE], LIN[12]); 29250000=05039000= + EDITLINE(LIN, SBUFF, FCR, 6" ", 0, 0, MEDIUM, FALSE); 29245000=05038000= + MOVE(1, INFO[LASTSEQROW,*], LASTSEQUENCE, LIN, 12); 29250000=05039000= IF NOHEADING THEN 29255000=05039500= DATIME; 29260000=05039500= WRITELINE; 29265000=05039500= END; 29270000=05041000= COMMENT PRINT CARDIMAGE IF WE ARE NOT LISTING; 29275000=05042000= - ACCUM[1]:= Q; 29280000=05043000= - COMMENT RESTORE ACCUMULATOR; 29285000=05043000= - WRITERROR(REMOTOG, ERRNUM, ACCUM[1], LIN, Q.[35:6], 29290000=05045000= - INFO[LASTSEQROW, LASTSEQUENCE]); 29295000=05045000= - IF REMOTOG THEN 29300000=05045900= - WRITE(REMOTE, 10, LIN[*]); 29305000=05045900= + ACCUM[1]:= Q; COMMENT RESTORE ACCUMULATOR; 29280000=05043000= + WRITERROR(FALSE, ERRNUM, ACCUM, 1, LIN, Q.[35:6], 29290000=05045000= + INFO[LASTSEQROW,*], LASTSEQUENCE); 29295000=05045000= IF NOT NOHEADING THEN 29310000=05046000= BEGIN 29315000=05046000= WRITE(LINE); 29320000=05046000= @@ -5384,7 +6799,7 @@ COMMENT PROCEDURE PASSLIST WILL BRING THE LIST PROGRAM DESCRIPTOR 30225000 COMMENT PASSLIST ASSUMES I IS POINTING AT LIST ID; 30260000=05187550= CHECKER(ELBAT[I]); 30265000=05187560= LISTADDRESS:= ELBAT[I].ADDRESS; 30270000=05187570= - IF FLCLASS = SUPERLISTID THEN % SUBSCRIPTED LIST ID. 30275000=05187580= + IF ELCLASS = SUPERLISTID THEN % SUBSCRIPTED LIST ID. 30275000=05187580= BEGIN 30280000=05187590= BANA; 30285000=05187600= EMITN(LISTADDRESS); 30290000=05187600= @@ -5476,40 +6891,62 @@ COMMENT PASSLIST ASSUMES I IS POINTING AT LIST ID; 30260000 UNTIL BOOLEAN(T.FORMAL) 30720000=05236000= END STREAMWORDS; 30725000=05236000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30730000=05236000= - STREAM PROCEDURE DEBUGDESC(LIN, PRT, TYP, RELAD, SGNO); 30735000=05237000= + PROCEDURE DEBUGDESC(LIN, PRT, TYP, RELAD, SGNO); 30735000=05237000= VALUE 30740000=05237500= - PRT, 30745000=05237500= - TYP, 30750000=05237500= - RELAD, 30755000=05237500= - SGNO; 30760000=05237500= + PRT, TYP, RELAD, SGNO; 30745000=05237500= + ARRAY 30745100 + LIN[0]; 30745200 + REAL 30745300 + PRT, TYP, RELAD, SGNO; 30745400 BEGIN 30765000=05238000= - LOCAL COUNT; 30770000=05238000= - DI:= LIN; 30775000=05238500= - DS:= 6 LIT 6" PRT("; 30780000=05238500= - SI:= LOC PRT; 30785000=05238500= - SI:= SI+4; 30790000=05238500= + STREAMLOCALS; 30765100 + REAL 30770000=05238000= + COUNT; 30770100 + LABEL 30770200 + JUMPOUT; 30770300 + 30770400 + STREAMSETDI(LIN, 0); 30775000=05238500= + STREAMTRANSFERLIT(6, 6" PRT("); 30780000=05238500= + STREAMSETLOCSI(PRT); 30785000=05238500= + STREAMSKIPSI(+4); 30790000=05238500= TALLY:= 4; 30795000=05238500= - 3(IF SC = 6"0" THEN % DONT PRINT LEADING ZEROES. 30800000=05239000= - BEGIN SI:= SI+1;TALLY:= TALLY+63 30805000=05239500= - END ELSE JUMP OUT); 30810000=05239500= + THRU 3 DO 30800000=05239000= + BEGIN 30800100 + IF STREAMSCEQL(6"0") THEN % DONT PRINT LEADING ZEROES. 30800200 + BEGIN 30805000=05239500= + STREAMSKIPSI(+1); 30805100 + STREAMINCTALLY(+63); % SUBTRACT 1 FROM TALLY 30805200 + END 30810000=05239500= + ELSE 30810100 + GO JUMPOUT 30810200 + END; 30810300 + 30810400 + JUMPOUT: 30810500 COUNT:= TALLY; 30820000=05240000= - DS:= COUNT CHR; 30825000=05240000= - DS:= 31 LIT 6") = SEGMENT DESCRIPTOR, TYPE = "; 30830000=05240500= - SI:= LOC TYP; 30835000=05241000= - SI:= SI+7; 30840000=05241000= - DS:= CHR; % TYPE. 30845000=05241000= - DS:= 21 LIT 6", RELATIVE ADDRESS = "; 30850000=05241500= - SI:= LOC RELAD; 30855000=05242000= - SI:= SI+4; 30860000=05242000= - DS:= 4 CHR; % REL. ADDR. 30865000=05242000= - DS:= 19 LIT 6", SEGMENT NUMBER = "; 30870000=05242500= - SI:= LOC SGNO; 30875000=05243000= - SI:= SI+4; 30880000=05243000= - DS:= 4 CHR; 30885000=05243000= - DS:= LIT 6"."; 30890000=05243000= + STREAMTRANSFERCHR(COUNT); 30825000=05240000= + STREAMTRANSFERLIT(8, 6") = SEGM"); 30830000=05240500= + STREAMTRANSFERLIT(8, 6"ENT DESC"); 30830100 + STREAMTRANSFERLIT(8, 6"RIPTOR, "); 30830200 + STREAMTRANSFERLIT(7, 6"TYPE = "); 30830300 + STREAMSETLOCSI(TYP); 30835000=05241000= + STREAMSKIPSI(+7); 30840000=05241000= + STREAMTRANSFERCHR(1); % TYPE. 30845000=05241000= + STREAMTRANSFERLIT(8, 6", RELATI"); 30850000=05241500= + STREAMTRANSFERLIT(8, 6"VE ADDRE"); 30850100 + STREAMTRANSFERLIT(5, 6"SS = "); 30850200 + STREAMSETLOCSI(RELAD); 30855000=05242000= + STREAMSKIPSI(+4); 30860000=05242000= + STREAMTRANSFERCHR(4); % REL. ADDR. 30865000=05242000= + STREAMTRANSFERLIT(8, 6", SEGMEN"); 30870000=05242500= + STREAMTRANSFERLIT(8, 6"T NUMBER"); 30870100 + STREAMTRANSFERLIT(3, 6" = "); 30870200 + STREAMSETLOCSI(SGNO); 30875000=05243000= + STREAMSKIPSI(+4); 30880000=05243000= + STREAMTRANSFERCHR(4); 30885000=05243000= + STREAMSMEARLIT(1, 6"."); 30890000=05243000= END DEBUGDESC; 30895000=05243500= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30896000 - REAL PROCEDURE ELSEPROGDESCBLDR(TYPE, RELAD, SPAC); 30900000=05245000= + REAL PROCEDURE PROGDESCBLDR(TYPE, RELAD, SPAC); 30900000=05245000= COMMENT THIS PROCEDURE BUILDS PDPRT AS DESCRIBED ABOVE, IT IS 30905000=05246000= CONCERNED WITH TYPE 1 ENTRIES.THE INFORMATION FURNISHED 30910000=05247000= BY PDPRT ALLOWS A DRUM DESCRIPTOR TO BE BUILT FOR EACH 30915000=05248000= @@ -5525,12 +6962,12 @@ COMMENT PASSLIST ASSUMES I IS POINTING AT LIST ID; 30260000 PDINX IS THE INDEX FOR PDPRT.IT IS GLOBAL AND 0 INITIALLY; 30965000=05258000= VALUE 30970000=05259000= TYPE, 30975000=05259000= - RELAD, 30980000=05259000= - SPAC; 30985000=05259000= + RELAD, 30980000=05259000= + SPAC; 30985000=05259000= REAL 30990000=05259000= TYPE, 30995000=05259000= - RELAD, 31000000=05259000= - SPAC; 31005000=05259000= + RELAD, 31000000=05259000= + SPAC; 31005000=05259000= BEGIN 31010000=05260000= IF SPAC = 0 THEN 31015000=05260000= SPAC:= GETSPACE(TRUE, -2); % DESCR. 31020000=05260000= @@ -5628,21 +7065,9 @@ EXIT: 31300000 VALUE 31480000=05307000= L; 31485000=05307000= REAL 31490000=05307000= - ; 31495000=05307000= + L; 31495000=05307000= BEGIN 31500000=05308000= - INTEGER 31505000=05309000= - STREAM PROCEDURE GETSYL(W, S); 31510000=05309000= - VALUE 31515000=05309000= - S; 31520000=05309000= - BEGIN 31525000=05310000= - DI:= LOC GETSYL; 31530000=05310000= - DI:= DI+6; 31535000=05310000= - SI:= W; 31540000=05311000= - SI:= SI+S; 31545000=05311000= - SI+SI+S; 31550000=05311000= - DS:= 2 CHR 31555000=05311000= - END; 31560000=05311000= - GET:= GETSYL(EDOC[L.[11:3], L.[8:7]], L.[1:2]) 31565000=05312000= + GET:= EDOC[L.[11:3], L.[8:7]].[47-(L.[1:2]*12):12]; 31565000=05312000= END GET; 31570000=05312000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31575000=05312000= 31580000=05313000= @@ -5659,20 +7084,26 @@ EXIT: 31300000 EMITO(LOD) 31635000=05316000= END CALLSWITCH; 31640000=05316000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31645000=05316000= - REAL STREAM PROCEDURE GETALPHA(INFOINDEX, SIZE); 31650000=05317000= + REAL PROCEDURE GETALPHA(INFOINDEX, IX, SIZE); 31650000=05317000= VALUE 31660000=05318000= - SIZE; 31665000=05318000= + IX, SIZE; 31665000=05318000= + ARRAY 31665100 + INFOINDEX[0]; 31665200 + REAL 31665300 + IX, SIZE; 31665400 BEGIN 31670000=05319000= COMMENT GETALPHA PICKS ALPHA CHARACTERS OUT OF INFO AND 31675000=05319000= FORMATS THE ID WORD THAT IS PASSED TO PRINTI. THE FIRST 31680000=05320000= CHARACTER CONTAINS THE SIZE. THE NEXT CHARACTER CONTAINS THE 31685000=05321000= ALPHA LEFT JUSTIFIED WITH TRAILING ZEROS; 31690000=05322000= - DI:= LOC GETALPHA; 31695000=05323000= - DS:= 8 LIT 6"0 "; 31700000=05323000= - D:= DI-7; 31705000=05323000= - SI:= INFOINDEX; 31710000=05324000= - SI:= SI+3; 31715000=05324000= - DS:= SIZE CHR; 31720000=05324000= + STREAMLOCALS; 31690100 + STREAMSETDI(STREAMTEMPD, 0); 31695000=05323000= + STREAMTRANSFERLIT(8, 6"0 "); 31700000=05323000= + STREAMSKIPDI(-7); 31705000=05323000= + STREAMSETSI(INFOINDEX, IX); 31710000=05324000= + STREAMSKIPSI(+3); 31715000=05324000= + STREAMTRANSFERCHR(SIZE); 31720000=05324000= + GETALPHA:= STREAMTEMPD[0]; 31724000 END GETALPHA; 31725000=05325000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31726000 PROCEDURE WRITEPRT(PORS, N, GS); 31730000=05325010= @@ -5688,108 +7119,142 @@ EXIT: 31300000 LABEL 31780000=05325030= EXIT; 31785000=05325030= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31786000 - STREAM PROCEDURE FILLIT(LIN, PORS, CELL, N, ID); 31790000=05325040= + PROCEDURE FILLIT(LIN, PORS, CELL, N, ID, IDX); 31790000=05325040= VALUE 31795000=05325050= - PORS, 31800000=05325050= - CELL, 31805000=05325050= - N; 31810000=05325050= + PORS, CELL, N, IDX; 31800000=05325050= + ARRAY 31800100 + LIN, ID[0]; 31800200 + REAL PORS, CELL, N, IDX; 31800300 BEGIN 31815000=05325060= - LOCAL COUNT; 31820000=05325070= + STREAMLOCALS; 31815100 + REAL 31820000=05325070= + COUNT; 31820100 LABEL 31825000=05325080= M0, 31830000=05325080= - M1, 31835000=05325080= - M2, 31840000=05325080= - M3, 31845000=05325080= - M4, 31850000=05325080= - M5, 31855000=05325080= - M6, 31860000=05325080= - M7, 31865000=05325080= - XIT; 31870000=05325080= - SI:= LOC PORS; 31875000=05325090= - SI:= SI+3; 31880000=05325090= - DI:= LIN; % "PRT" OR "STACK". 31885000=05325090= - IF SC = 6"P" THEN 31890000=05325100= + M1, 31835000=05325080= + M2, 31840000=05325080= + M3, 31845000=05325080= + M4, 31850000=05325080= + M5, 31855000=05325080= + M6, 31860000=05325080= + M7, 31865000=05325080= + XIT, 31870000=05325080= + JUMPOUT; 31871000=05325080= + 31871100 + STREAMSETLOCSI(PORS); 31875000=05325090= + STREAMSKIPSI(+3); 31880000=05325090= + STREAMSETDI(LIN, 0); % "PRT" OR "STACK". 31885000=05325090= + IF STREAMSCEQL(6"P") THEN 31890000=05325100= BEGIN 31895000=05325110= - DS:= 3 CHR; 31900000=05325110= - DS:= LIT 6"("; 31905000=05325110= + STREAMTRANSFERCHR(3); 31900000=05325110= + STREAMSMEARLIT(1, 6"("); 31905000=05325110= END 31910000=05325120= ELSE 31915000=05325120= BEGIN 31920000=05325120= - DS:= 5 CHR; 31925000=05325130= - DS:= LIT 6"("; 31930000=05325130= - SI:= LOC CELL; 31935000=05325130= - SI:= SI+5; 31940000=05325130= - IF SC >= 6"6" THEN 31945000=05325140= - DS:= 2 LIT 6"F-" 31950000=05325140= + STREAMTRANSFERCHR(5); 31925000=05325130= + STREAMSMEARLIT(1, 6"("); 31930000=05325130= + STREAMSETLOCSI(CELL); 31935000=05325130= + STREAMSKIPSI(+5); 31940000=05325130= + IF STREAMSCGEQ(6"6") THEN 31945000=05325140= + STREAMTRANSFERLIT(2, 6"F-") 31950000=05325140= ELSE 31955000=05325140= - DS:= 2 LIT 6"F+"; 31960000=05325140= - COUNT:= DI; 31965000=05325150= - DI:= LOC CELL; 31970000=05325150= - DI:= DI+4; 31975000=05325150= - DS:= 11 RESET; 31980000=05325160= - DI:= COUNT; 31985000=05325160= + STREAMTRANSFERLIT(2, 6"F+"); 31960000=05325140= + 31960100 + COUNT:= STREAMGETDI; 31965000=05325150= + STREAMSETLOCDI(CELL); 31970000=05325150= + STREAMSKIPDI(+4); 31975000=05325150= + STREAMSETDB(11, 0); 31980000=05325160= + CELL:= STREAMTEMPD[0]; 31980100 + STREAMSETDI(LIN, COUNT); 31985000=05325160= END; 31990000=05325170= - SI:= LOC CELL; 31995000=05325180= - SI:= SI+4; 32000000=05325180= + 31990100 + STREAMSETLOCSI(CELL); 31995000=05325180= + STREAMSKIPSI(+4); 32000000=05325180= TALLY:= 4; % LOCATION. 32005000=05325180= - 3(IF SC = 6"0" THEN % DONT PRINT LEADING ZEROES. 32010000=05325190= - BEGINSI:= SI+1;TALLY:= TALLY+63 32015000=05325200= - ENDELSE 32020000=05325200= - JUMP OUT); 32025000=05325200= + THRU 3 DO 32010000=05325190= + BEGIN 32010100 + IF STREAMSCEQL(6"0") THEN % DONT PRINT LEADING ZEROES. 32010200 + BEGIN 32015000=05325200= + STREAMSKIPSI(+1); 32015100 + STREAMINCTALLY(+63); % DECREMENT TALLY 32015200 + END 32020000=05325200= + ELSE 32020100 + GO JUMPOUT 32025000=05325200= + END; 32025100 + 32025200 + JUMPOUT: 32025300 COUNT:= TALLY; 32030000=05325210= - DS:= COUNT CHR; 32035000=05325210= + STREAMTRANSFERCHR(COUNT); 32035000=05325210= TALLY:= 0; 32040000=05325210= COUNT:= TALLY; 32045000=05325210= - DS:= 4 LIT 6") = "; 32050000=05325220= - CELL:= DI; % SAVE OUR PLACE. 32055000=05325220= - CI:= CI+N; 32060000=05325230= - GO M0; 32065000=05325240= - GO M1; 32070000=05325250= - GO M2; 32075000=05325260= - GO M3; 32080000=05325270= - GO M4; 32085000=05325280= - GO M5; 32090000=05325290= - GO M6; 32095000=05325300= - GO M7; 32100000=05325310= - M0: SI:= ID; 32105000=05325320= - SI:= SI+2; 32110000=05325320= - DI:= LOC COUNT; 32115000=05325320= - DI:= DI+7; 32120000=05325330= - DS:= CHR; 32125000=05325330= - DI:= CELL; 32130000=05325330= - DS:= COUNT CHR; 32135000=05325330= + STREAMTRANSFERLIT(4, 6") = "); 32050000=05325220= + CELL:= STREAMGETDI; % SAVE OUR PLACE. 32055000=05325220= + GO TO CASE N OF ( 32060000=05325230= + M0, 32065000=05325240= + M1, 32070000=05325250= + M2, 32075000=05325260= + M3, 32080000=05325270= + M4, 32085000=05325280= + M5, 32090000=05325290= + M6, 32095000=05325300= + M7); 32100000=05325310= + M0: STREAMSETSI(ID, IDX); 32105000=05325320= + STREAMSKIPSI(+2); 32110000=05325320= + STREAMSETLOCDI(COUNT); 32115000=05325320= + STREAMSKIPDI(+7); 32120000=05325330= + STREAMTRANSFERCHR(1); 32125000=05325330= + COUNT:= STREAMTEMPD[0]; 32125100 + STREAMSETDI(LIN, CELL); 32130000=05325330= + STREAMTRANSFERCHR(COUNT); 32135000=05325330= GO XIT; 32140000=05325340= - M1: DI:= CELL; 32145000=05325350= - DS:= 19 LIT 6"*TEMPORARY STORAGE*"; 32150000=05325350= + M1: STREAMSETDI(LIN, CELL); 32140100=05325330= + STREAMTRANSFERLIT(8, 6"*TEMPORA"); 32150000=05325350= + STREAMTRANSFERLIT(8, 6"RY STORA"); 32150100 + STREAMTRANSFERLIT(3, 6"GE*"); 32150200 GO XIT; 32155000=05325350= - M2: DI:= CELL; 32160000=05325360= - DS:= 36 LIT 6"*LIST, LABEL, OR SEGMENT DESCRIPTOR*"; 32165000=05325370= + M2: STREAMSETDI(LIN, CELL); 32155100=05325330= + STREAMTRANSFERLIT(8, 6"*LIST, L"); 32165000=05325370= + STREAMTRANSFERLIT(8, 6"ABEL, OR"); 32165100 + STREAMTRANSFERLIT(8, 6" SEGMENT"); 32165200 + STREAMTRANSFERLIT(8, 6" DESCRIP"); 32165300 + STREAMTRANSFERLIT(4, 6"TOR*"); 32165400 GO XIT; 32170000=05325370= - M3: DI:= CELL; 32175000=05325380= - DS:= 27 LIT 6"*CASE STATEMENT DESCRIPTOR*"; 32180000=05325380= + M3: STREAMSETDI(LIN, CELL); 32170100=05325330= + STREAMTRANSFERLIT(8, 6"*CASE ST"); 32180000=05325380= + STREAMTRANSFERLIT(8, 6"ATEMENT "); 32180100 + STREAMTRANSFERLIT(8, 6"DESCRIPT"); 32180200 + STREAMTRANSFERLIT(3, 6"OR*"); 32180300 GO XIT; 32185000=05325380= - M4: DI:= CELL; 32190000=05325390= - DS:= 19 LIT 6"*FORMAT DESCRIPTOR*"; 32195000=05325390= + M4: STREAMSETDI(LIN, CELL); 32185100=05325330= + STREAMTRANSFERLIT(8, 6"*FORMAT "); 32195000=05325390= + STREAMTRANSFERLIT(8, 6"DESCRIPT"); 32195100 + STREAMTRANSFERLIT(3, 6"OR*"); 32195200 GO XIT; 32200000=05325390= - M5: DI:= CELL; 32205000=05325400= - DS:= 24 LIT 6"*OUTER BLOCK DESCRIPTOR*"; 32210000=05325400= + M5: STREAMSETDI(LIN, CELL); 32200100=05325330= + STREAMTRANSFERLIT(8, 6"*OUTER B"); 32210000=05325400= + STREAMTRANSFERLIT(8, 6"LOCK DES"); 32210100 + STREAMTRANSFERLIT(8, 6"CRIPTOR*"); 32210200 GO XIT; 32215000=05325400= - M6: DI:= CELL; 32220000=05325410= - DS:= 20 LIT 6"*SEGMENT DESCRIPTOR*"; 32225000=05325410= + M6: STREAMSETDI(LIN, CELL); 32215100=05325330= + STREAMTRANSFERLIT(8, 6"*SEGMENT"); 32225000=05325410= + STREAMTRANSFERLIT(8, 6" DESCRIP"); 32225100 + STREAMTRANSFERLIT(4, 6"TOR*"); 32225200 GO XIT; 32230000=05325410= - M7: DI:= CELL; 32235000=05325420= - DS:= 18 LIT 6"*LABEL DESCRIPTOR*"; 32240000=05325420= + M7: STREAMSETDI(LIN, CELL); 32230100=05325330= + STREAMTRANSFERLIT(8, 6"*LABEL D"); 32240000=05325420= + STREAMTRANSFERLIT(8, 6"ESCRIPTO"); 32240100 + STREAMTRANSFERLIT(2, 6"R*"); 32240200 XIT: 32245000=05325440= END FILLIT; 32250000=05325440= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32252000 - ELSEBLANKET(14, LIN); 32255000=05325450= + BLANKET(14, LIN); 32255000=05325450= IF N = 1 THEN 32260000=05325460= - FILLIT(LIN, PORS, GS, 0, ACCUM[1]) 32265000=05325470= + FILLIT(LIN, PORS, GS, 0, ACCUM, 1) 32265000=05325470= ELSE 32270000=05325470= IF N > 1 THEN 32275000=05325470= - FILLIT(LIN, PORS, GS, 0, INFO[N.LINKR, N.LINKC]) 32280000=05325480= + FILLIT(LIN, PORS, GS, 0, INFO[N.LINKR,*], N.LINKC) 32280000=05325480= ELSE 32285000=05325480= - FILLIT(LIN, PORS, GS, ABS(N), N); 32290000=05325480= + FILLIT(LIN, PORS, GS, ABS(N), EBCDICBUFF, -1); % ID NOT USED 32290000=05325480= IF NOHEADING THEN 32295000=05325490= DATIME; 32300000=05325490= WRITELINE; 32305000=05325490= @@ -5815,15 +7280,8 @@ EXIT: 31300000 L2, 32405000=05334000= EXIT; 32410000=05334000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32415000=05341000= - BOOLEAN STREAM PROCEDURE MASK(K); 32420000=05341000= - VALUE 32425000=05341000= - K; 32430000=05341000= - BEGIN 32435000=05342000= - DI:= LOC MASK; 32440000=05342000= - DI:= DI+2; 32445000=05342000= - SKIP K DB; 32450000=05342000= - DS:= SET 32455000=05342000= - END MASK; 32460000=05342000= + DEFINE MASK(K) = 32420000=05341000= + BOOLEAN(0 & (1)[35-ABS(K):1]) #; 32435000=05342000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32462000 BOOLEAN 32465000=05343000= M, 32470000=05343000= @@ -5843,7 +7301,7 @@ EXIT: 31300000 IF MODE = 0 THEN 32540000=05351000= BEGIN 32545000=05351000= Q:= SPRT[ROW:= PRTI.[9:5]]; 32550000=05352000= - M:= MASK(COL:= PRTI.[4:4]-35); 32555000=05353000= + M:= MASK(COL:= PRTI.[4:5]-35); 32555000=05353000= COL:= COL+35; 32560000=05354000= L1: IF REAL(M AND Q) ^= 0 THEN 32565000=05356000= BEGIN 32570000=05356000= @@ -5916,7 +7374,7 @@ EXIT: 32735000 IF BOOLEAN(ELBW.FORMAL) THEN 32905000=05390100= HVCHECK:= TRUE 32910000=05390100= ELSE 32915000=05390100= - IFTAKE(GT1:= GIT(ELBW) ^= 1 THEN ERR(357) 32920000=05391000= + IF TAKE(GT1:= GIT(ELBW)) ^= 1 THEN ERR(357) 32920000=05391000= ELSE 32925000=05391000= IF ARRAYCHECK(TAKE(GT1+1)) THEN 32930000=05392000= ERR(358) 32935000=05392000= @@ -6133,7 +7591,7 @@ MAXANDMIN, 33885000 EMITV(T3.ADDRESS); 33990000=06062155= GO L1; 33995000=06062155= END; 34000000=06062160= - L2: AEPX; 34005000=06062165= + L2: AEXP; 34005000=06062165= IF ELCLASS ^= COMMA THEN 34010000=06062165= ERRX(80); 34015000=06062165= STEPIT; 34020000=06062165= @@ -6910,11 +8368,13 @@ EXIT: 37775000 PROCEDURE PLUG(C, A, S); 37875000=06283000= VALUE 37880000=06283000= C, 37885000=06283000= - A, 37890000=06283000= - S; 37895000=06283000= + A, 37890000=06283000= + S; 37895000=06283000= BOOLEAN 37900000=06283000= C, 37905000=06283000= - S:REAL A; 37910000=06283000= + S; 37910000=06283000= + REAL 37910100 + A; 37910200 BEGIN 37915000=06283200= IF C THEN 37920000=06283400= EMITNUM(A) 37925000=06283600= @@ -6968,7 +8428,7 @@ COMMENT SET UP CODE FOR RELATIONAL OPERATOR TO BE 37990000 STACKCT:= 1; 38165000=06289200= EMIT(OPERATOR); 38170000=06289200= IF MANY THEN 38175000=06289400= - EMITO(LND); 38180000=06289400= + EMITO(LND) 38180000=06289400= ELSE 38185000=06289600= BEGIN 38190000=06289600= EMIT(0); 38195000=06289600= @@ -6976,7 +8436,7 @@ COMMENT SET UP CODE FOR RELATIONAL OPERATOR TO BE 37990000 END; 38205000=06289600= MANY:= TRUE; 38210000=06289800= END 38215000=06290000= - UNTIL ELCASS ^= RELOP 38220000=06290200= + UNTIL ELCLASS ^= RELOP 38220000=06290200= END RELATION; 38225000=06290200= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38230000=06290200= 38235000=06292000= @@ -6996,7 +8456,7 @@ COMMENT SET UP CODE FOR RELATIONAL OPERATOR TO BE 37990000 COMMENT COMPILE 1ST EXPRSS; 38305000=06299000= STACKCT:= 0; 38310000=06299500= ELSEBRANCH:= BUMPL; 38315000=06300000= - EMITB(BFC, THEBRANCH, L); 38320000=06301000= + EMITB(BFC, THENBRANCH, L); 38320000=06301000= IF ELCLASS ^= ELSEV THEN 38325000=06302000= ERR(155) 38330000=06302000= ELSE 38335000=06302000= @@ -7233,7 +8693,7 @@ EXIT: 39315000 BEGIN 39490000=06370000= EMITN(512); 39495000=06371000= EMITV(513); 39500000=06372000= - COMENT PICK UP BLOCKCTR AT ENTRY FROM F+1; 39505000=06373000= + COMMENT PICK UP BLOCKCTR AT ENTRY FROM F+1; 39505000=06373000= IF TLEVEL:= TLEVEL-SUBLEVEL-1 ^= 0 THEN 39510000=06375000= BEGIN 39515000=06375000= EMITL(TLEVEL); 39520000=06376000= @@ -7397,7 +8857,7 @@ EXIT: 40190000 ANOTHER: 40310000=07009000= ERRORTOG:= TRUE; 40315000=07009000= COMMENT ALLOW ERROR MESSAGES; 40320000=07009000= - STEPTIT; 40325000=07010000= + STEPIT; 40325000=07010000= IF STREAMTOG THEN 40330000=07011000= STREAMSTMT 40335000=07011000= ELSE 40340000=07011000= @@ -7423,14 +8883,15 @@ ANOTHER: 40310000 GO ANOTHER 40440000=07024000= END; 40445000=07024000= FLAG(120); 40450000=07025000= - FCR:= (LCR:= MKABS(CBUFF[9]))-9; 40455000=07025010= + FCR:= (LCR:= 9)-9; 40455000=07025010= + SBUFF:= CBUFF; 40455100 IF LISTER THEN 40460000=07025020= PRINTCARD; 40465000=07025020= END; 40475000=07025030= IF ELCLASS = PERIOD THEN 40480000=07026000= BEGIN 40485000=07027000= GT5:= 6"ND;END."&6"E"[46:4:5]; 40490000=07028000= - MOVE(1, GT5, CBUFF[0]); 40495000=07029000= + CBUFF[0]:= GT5; 40495000=07029000= LASTUSED:= 4; 40500000=07030000= ELBAT[I:= I-2]:= SPECIAL[20]; 40505000=07031000= ELCLASS:= SEMICOLON 40510000=07032000= @@ -7451,123 +8912,119 @@ ANOTHER: 40310000 PROCEDURE ACTUALPARAPART(FBIT, SBIT, INDEX); 40585000=07045000= VALUE 40590000=07046000= FBIT, 40595000=07046000= - SBIT, 40600000=07046000= - INDEX; 40605000=07046000= + SBIT, 40600000=07046000= + INDEX; 40605000=07046000= BOOLEAN 40610000=07047000= FBIT, 40615000=07047000= - SBIT; 40620000=07047000= + SBIT; 40620000=07047000= INTEGER 40625000=07048000= INDEX; 40630000=07048000= BEGIN 40635000=07049000= INTEGER 40640000=07050000= PCTR, 40645000=07050000= - ACLASS, 40650000=07050000= - SCLASS; 40655000=07050000= - COMMENT 40660000=07051000= + ACLASS, 40650000=07050000= + SCLASS; COMMENT 40655000=07050000= PCTR IS A COUNT OF THE NUMBER OF PARAMETERS 40665000=07052000= COMPILED. 40670000=07053000= ACLASS IS THE CLASS OF THE ACTUAL PARAMETER- 40675000=07054000= - SCLASS IS TEH CLASS OF THE FORMAL PARAMETER. 40680000=07055000= + SCLASS IS THE CLASS OF THE FORMAL PARAMETER. 40680000=07055000= THEY ARE PUT IN A NORMALIZED FORM IN ORDER 40685000=07056000= TO ALLOW INTEGER, REAL, AND ALPHA TO HAVE 40690000=07057000= SIMILAR MEANINGS; 40695000=07058000= REAL 40700000=07059000= - WHOLE; 40705000=07059000= - COMMENT WHOLE CONTAINS THE ELBAT WORD OF THE ACTUAL 40710000=07060000= + WHOLE; COMMENT WHOLE CONTAINS THE ELBAT WORD OF THE ACTUAL 40705000=07059000= PARAMETERS; 40715000=07061000= BOOLEAN 40720000=07062000= - VBIT; 40725000=07062000= - COMMENT VBIT TELLS WHETHER OR NOT THE PARAMETER IS TO40730000=07063000= + VBIT; COMMENT VBIT TELLS WHETHER OR NOT THE PARAMETER IS TO40725000=07062000= BE CALLED BY VALUE OR BY NAME; 40735000=07064000= LABEL 40740000=07065000= ANOTHER, 40745000=07065000= - NORMAL, 40750000=07065000= - VE, 40755000=07065000= - STORE, 40760000=07065000= - LRTS, 40765000=07065000= - LOWBD, 40770000=07065000= - FINISHBOO, 40775000=07066000= - LODPOINT, 40780000=07066000= - NSBS, 40785000=07066000= - BS, 40790000=07066000= - COMMON, 40795000=07066000= - LP, 40800000=07066000= - GOBBLE, 40805000=07066000= - BSXX, 40810000=07066000= - BSX, 40815000=07066000= - EXIT, 40820000=07067000= - CERR, 40825000=07067000= - FGEN; 40830000=07067000= + NORMAL, 40750000=07065000= + VE, 40755000=07065000= + STORE, 40760000=07065000= + LRTS, 40765000=07065000= + LOWBD, 40770000=07065000= + FINISHBOO, 40775000=07066000= + LODPOINT, 40780000=07066000= + NSBS, 40785000=07066000= + BS, 40790000=07066000= + COMMON, 40795000=07066000= + LP, 40800000=07066000= + GOBBLE, 40805000=07066000= + BSXX, 40810000=07066000= + BSX, 40815000=07066000= + EXIT, 40820000=07067000= + CERR, 40825000=07067000= + FGEN; 40830000=07067000= LABEL 40835000=07069000= L4, 40840000=07069000= - L5, 40845000=07069000= - L6, 40850000=07069000= - L7, 40855000=07069000= - L8, 40860000=07069000= - L9, 40865000=07069000= - L10, 40870000=07069000= - L11, 40875000=07069000= - L12, 40880000=07069000= - L13, 40885000=07069000= - L14, 40890000=07069000= - L15, 40895000=07069000= - L16, 40900000=07069000= - L17, 40905000=07070000= - L18, 40910000=07070000= - L19, 40915000=07070000= - L20, 40920000=07070000= - L21, 40925000=07070000= - L22, 40930000=07070000= - L23, 40935000=07070000= - L24, 40940000=07070000= - L25, 40945000=07070000= - L26, 40950000=07070000= - L27, 40955000=07070000= - L28, 40960000=07070000= - L29, 40965000=07070000= - L30, 40970000=07071000= - L31, 40975000=07071000= - L32, 40980000=07071000= - L33; 40985000=07071000= + L5, 40845000=07069000= + L6, 40850000=07069000= + L7, 40855000=07069000= + L8, 40860000=07069000= + L9, 40865000=07069000= + L10, 40870000=07069000= + L11, 40875000=07069000= + L12, 40880000=07069000= + L13, 40885000=07069000= + L14, 40890000=07069000= + L15, 40895000=07069000= + L16, 40900000=07069000= + L17, 40905000=07070000= + L18, 40910000=07070000= + L19, 40915000=07070000= + L20, 40920000=07070000= + L21, 40925000=07070000= + L22, 40930000=07070000= + L23, 40935000=07070000= + L24, 40940000=07070000= + L25, 40945000=07070000= + L26, 40950000=07070000= + L27, 40955000=07070000= + L28, 40960000=07070000= + L29, 40965000=07070000= + L30, 40970000=07071000= + L31, 40975000=07071000= + L32, 40980000=07071000= + L33; 40985000=07071000= SWITCH 40990000=07072000= S:= L4, 40995000=07073000= - L5, 41000000=07073000= - L6, 41005000=07073000= - L7, 41010000=07073000= - L8, 41015000=07073000= - L9, 41020000=07073000= - L10, 41025000=07073000= - L11, 41030000=07073000= - L12, 41035000=07073000= - L13, 41040000=07073000= - L14, 41045000=07073000= - L15, 41050000=07073000= - L16, 41055000=07073000= - L17, 41060000=07074000= - L18, 41065000=07074000= - L19, 41070000=07074000= - L20, 41075000=07074000= - L21, 41080000=07074000= - L22, 41085000=07074000= - L23, 41090000=07074000= - L24, 41095000=07074000= - L25, 41100000=07074000= - L26, 41105000=07074000= - L27, 41110000=07074000= - L28, 41115000=07074000= - L29, 41120000=07074000= - L30, 41125000=07075000= - L31, 41130000=07075000= - L32, 41135000=07075000= - L33; 41140000=07075000= + L5, 41000000=07073000= + L6, 41005000=07073000= + L7, 41010000=07073000= + L8, 41015000=07073000= + L9, 41020000=07073000= + L10, 41025000=07073000= + L11, 41030000=07073000= + L12, 41035000=07073000= + L13, 41040000=07073000= + L14, 41045000=07073000= + L15, 41050000=07073000= + L16, 41055000=07073000= + L17, 41060000=07074000= + L18, 41065000=07074000= + L19, 41070000=07074000= + L20, 41075000=07074000= + L21, 41080000=07074000= + L22, 41085000=07074000= + L23, 41090000=07074000= + L24, 41095000=07074000= + L25, 41100000=07074000= + L26, 41105000=07074000= + L27, 41110000=07074000= + L28, 41115000=07074000= + L29, 41120000=07074000= + L30, 41125000=07075000= + L31, 41130000=07075000= + L32, 41135000=07075000= + L33; 41140000=07075000= REAL 41145000=07076000= T1, 41150000=07076000= - T2, 41155000=07076000= - T3, 41160000=07076000= - T4, 41165000=07076000= - T5, 41170000=07076000= - T6; 41175000=07076000= - COMMENT EXAMINE LATER WITH EYE 41180000=07076000= + T2, 41155000=07076000= + T3, 41160000=07076000= + T4, 41165000=07076000= + T5, 41170000=07076000= + T6; COMMENT EXAMINE LATER WITH EYE 41175000=07076000= TO REDUCING TOTAL NUMBER; 41185000=07077000= PCTR:= 1; 41190000=07078000= ANOTHER: 41195000=07079000= @@ -7583,10 +9040,10 @@ ANOTHER: 41195000 END 41245000=07082000= COMMENT IF PROCEDURE IS FORMAL ALL CALLS ARE BY NAME AND NO CHECK 41250000=07082000= IS MADE FOR CORRESPONDENCE OF ACTUAL AND FORMAL PARA 41255000=07083000= - METERS SETTING SCLASS TO LOCID HELPS TO COMPRESS CHECK; 41260000=07084000= + METERS SETTING SCLASS TO LOCID HELPS TO COMPRESS CHECK 41260000=07084000= ELSE 41265000=07085000= BEGIN 41270000=07085000= - VBIT:= BOOLEAN(GT1:= TAKE(INDEX+PCTR)).V0; 41275000=07086000= + VBIT:= BOOLEAN(GT1:= TAKE(INDEX+PCTR)).VO; 41275000=07086000= IF SCLASS:= GT1.CLASS <= INTARRAYID AND SCLASS >= BOOSTRPROCID 41280000=07089000= THEN 41285000=07089000= IF GT1:= (SCLASS-BOOSTRPROCID) MOD 4 ^= 0 THEN 41290000=07090000= @@ -7600,7 +9057,7 @@ ANOTHER: 41195000 COMMENT THE ACTUAL PARAMETER HAS MORE THAN ONE LOGICAL QUANTITY - 41330000=07097000= HENCE A DIFFERENT ANALYSIS IS REQUIRED; 41335000=07098000= BEGIN 41340000=07099000= - IF ACLASS <= IDMAX OR ACLESS = SUPERLISTID THEN 41345000=07099000= + IF ACLASS <= IDMAX OR ACLASS = SUPERLISTID THEN 41345000=07099000= CHECKER(WHOLE); 41350000=07099500= IF ACLASS < BOOARRAYID OR ACLASS > INTARRAYID THEN 41355000=07101000= BEGIN 41360000=07101000= @@ -7678,7 +9135,7 @@ ANOTHER: 41195000 END 41720000=07119000= COMMENT AN INDEXED FILE MAY BE PASSED BY NAME ONLY AND ONLY TO A 41725000=07119000= STREAM PROCEDURE THE STREAM PROCEDURE MAY NOT DO A 41730000=07120000= - RELEASE ON THIS DESCRIPTOR; 41735000=07121000= + RELEASE ON THIS DESCRIPTOR 41735000=07121000= ELSE 41740000=07122000= GO TO COMMON 41745000=07122000= END; 41750000=07122000= @@ -7985,7 +9442,7 @@ LP: IF T1:= TAKE(WHOLE:= GIT(WHOLE)).[7:8] = 0 THEN 43175000 TB1:= TRUE; 43255000=07287000= FOR T2:= 1 STEP 1 UNTIL T1 DO 43260000=07289000= BEGIN 43265000=07289000= - IF BOOLEAN(T3:= TAKE(WHOLE+T2)).V0 THEN 43270000=07291000= + IF BOOLEAN(T3:= TAKE(WHOLE+T2)).VO THEN 43270000=07291000= IF T4:= T3.CLASS < BOOARRAYID OR T4 > INTARRAYID THEN 43275000=07293000= BEGIN 43280000=07293000= COMMENT THE T2-TH PARAMETER TO THE PROCEDURE BEING PASSED IS VALUE; 43285000=07294000= @@ -8153,7 +9610,7 @@ EXIT: 44020000 BEGIN 44095000=07392000= REAL 44100000=07393000= HOLE, 44105000=07393000= - ADDRESS; 44110000=07393000= + ADDRESS; 44110000=07393000= LABEL 44115000=07394000= EXIT; 44120000=07394000= SCATTERELBAT; 44125000=07395000= @@ -8189,8 +9646,7 @@ EXIT: 44020000 EMITV(ADDRESS); 44275000=07413000= COMMENT MONITOR CODE GOES HERE; 44280000=07414000= IF HOLE < 0 THEN 44285000=07416000= - BEGIN 44290000=07416000= - COMMENT THIS IS A MONITORED FUNCTION DESIGNATOR44295000=07416000= + BEGIN COMMENT THIS IS A MONITORED FUNCTION DESIGNATOR44290000=07416000= ; 44300000=07417000= EMITL(JUNK); 44305000=07418000= EMITO(SND); 44310000=07418000= @@ -8293,7 +9749,7 @@ COMMENT RELSESTMT COMPILES THE RELEASE STATEMENT: 44620000 BEGIN 44795000=07465250= STACKCT:= STACKCT-1; 44800000=07465250= EMITPAIR(38, COM); 44805000=07465500= - EMIT0(DEL); 44810000=07465500= + EMITO(DEL); 44810000=07465500= GO PARENCHECK; 44815000=07465500= END 44820000=07466000= ELSE 44825000=07466000= @@ -8312,7 +9768,7 @@ COMMENT RELSESTMT COMPILES THE RELEASE STATEMENT: 44620000 GO PARENCHECK; 44890000=07467000= END; 44895000=07467250= END; 44900000=07467500= - IF FLCLASS ^= FILEID AND ELCLASS ^= SUPERFILEID THEN 44905000=07467750= + IF ELCLASS ^= FILEID AND ELCLASS ^= SUPERFILEID THEN 44905000=07467750= % DATACOM RELEASE. 44910000=07467750= BEGIN 44915000=07468000= AEXP; 44920000=07468000= @@ -8418,9 +9874,9 @@ EXIT: 45090000 IF ELCLASS = SWITCHID THEN 45420000=07507000= TB1:= FALSE 45425000=07507000= ELSE 45430000=07507000= - GO GOCMP; 45435000=07507000= + GO GOMCP; 45435000=07507000= IF NOT LOCAL(ELBAT[I]) THEN 45440000=07508000= - GO GOCMP; 45445000=07508000= + GO GOMCP; 45445000=07508000= IF TB1 THEN 45450000=07509000= BEGIN 45455000=07509000= GOGEN(ELBAT[I], BFW); 45460000=07509000= @@ -8435,7 +9891,7 @@ EXIT: 45090000 EMITO(MKS); 45505000=07514000= PASSALPHA(ELBW); 45510000=07514000= EMITPAIR(GNAT(CHARI), LOD); 45515000=07515000= - PASSMONFILE(TAKE(GIT(ELBW)), SWITMONFILE); 45520000=07516000= + PASSMONFILE(TAKE(GIT(ELBW)).SWITMONFILE); 45520000=07516000= EMITNUM(0 & CARDNUMBER[46:43:44]); 45525000=07516100= EMITV(GNAT(PRINTI)); 45530000=07517000= END; 45535000=07518000= @@ -8570,7 +10026,7 @@ EXIT: 45955000 EMITB(BFC, T1, L); 46180000=07579000= GO EXIT 46185000=07579000= END; 46190000=07579000= - STEPTIT; 46195000=07580000= + STEPIT; 46195000=07580000= IF SIMPGO THEN 46200000=07582000= BEGIN 46205000=07582000= T2:= L; 46210000=07583000= @@ -8887,7 +10343,7 @@ COMMENT THE FOLLOWING PROCEDURE HANDLES THE FILL STATEMENT. 47480000 ERROR(305); 47765000=07666000= GO GOOFUP 47770000=07666000= END; %>102347775000=07666000= - MOVE(T3, A[T2], A[T]); 47780000=07666500= + MOVE(T3, A, T2, A, T); 47780000=07666500= T:= T+T3; 47785000=07666500= END; 47790000=07667000= GO CHECK; 47795000=07667500= @@ -8895,7 +10351,7 @@ COMMENT THE FOLLOWING PROCEDURE HANDLES THE FILL STATEMENT. 47480000 IF(BOO:= ELCLASS = ADOP) THEN 47805000=07668500= STEPIT; 47810000=07668500= IF ELCLASS ^= LITNO AND ELCLASS ^= NONLITNO THEN 47815000=07669000= - IF ELCASS ^= STRING AND (ELCASS ^= STRNGCON OR BOO) THEN 47820000=07669500= + IF ELCLASS ^= STRING AND (ELCLASS ^= STRNGCON OR BOO) THEN 47820000=07669500= BEGIN 47825000=07670000= ERROR(302); 47830000=07670000= GO GOOFUP 47835000=07670000= @@ -8910,18 +10366,18 @@ COMMENT THE FOLLOWING PROCEDURE HANDLES THE FILL STATEMENT. 47480000 GO GOOFUP 47880000=07672500= END; % > 1023. 47885000=07672500= T3:= 6" "; 47890000=07673000= - MOVE(1, T3, A[T2]); 47895000=07673000= - MOVECHARACTERS(COUNT, ACCUM[1], 3, A[T], 0); 47900000=07673500= + A[T2]:= T3; 47895000=07673000= + MOVECHARACTERS(COUNT, ACCUM, 1, 3, A, T, 0); 47900000=07673500= T:= T2; 47905000=07674000= END 47910000=07675000= ELSE 47915000=07675000= - MOVE(1, C, A[T]); 47920000=07675000= + A[T]:= C; 47920000=07675000= END 47925000=07676000= ELSE 47930000=07676000= IF COUNT <= 19 AND ACCUM[1].[29:18] = 6"OCT" THEN 47935000=07676000= BEGIN % GET RID OF "OCT" FOR OCTIZE. 47940000=07676500= - MOVECHARACTERS(COUNT-3, ACCUM[1], 6, ACCUM[1], 3); 47945000=07677000= - IF OCTIZE(ACCUM[1], A[T], 19-COUNT, COUNT-3) THEN 47950000=07677500= + MOVECHARACTERS(COUNT-3, ACCUM, 1, 6, ACCUM, 1, 3); 47945000=07677000= + IF OCTIZE(ACCUM, 1, A, T, 19-COUNT, COUNT-3) THEN 47950000=07677500= FLAG(303); % NON-OCTAL CHARACTER. 47955000=07678000= END 47960000=07679000= ELSE 47965000=07679000= @@ -8985,7 +10441,7 @@ COMMENT THE FOLLOWING PROCEDURE HANDLES THE FILL STATEMENT. 47480000 ELSE 48255000=07696000= BEGIN 48260000=07696000= FOR J:= 0 STEP 32 UNTIL T DO 48265000=07696500= - MOVE(32, FILLTEMP[J], EDOC[J.[9:3], J.[6:7]]); 48270000=07697000= + MOVE(32, FILLTEMP, J, EDOC[J.[9:3],*], J.[6:7]); 48270000=07697000= SEGMENT(T, SGAVL, SGNO); 48275000=07697500= END; 48280000=07698000= MOVECODE(TEDOC, EDOC); 48285000=07698500= @@ -9004,75 +10460,75 @@ EXIT: 48305000 BEGIN 48350000=07715000= LABEL 48355000=07716000= AGAIN, 48360000=07716000= - LERR, 48365000=07716000= - LDEC, 48370000=07716000= - LPROC, 48375000=07716000= - LSPROC, 48380000=07716000= - LVAR, 48385000=07716000= - LAB, 48390000=07716000= - LREAD, 48395000=07716000= - LWRITE, 48400000=07717000= - LSPACE, 48405000=07717000= - LCLOSE, 48410000=07717000= - LLOCK, 48415000=07717000= - LRWND, 48420000=07717000= - LDBL, 48425000=07717000= - LFOR, 48430000=07717000= - LWHILE, 48435000=07717000= - LDO, 48440000=07717000= - LFILL, 48445000=07717000= - LIF, 48450000=07718000= - LGO, 48455000=07718000= - LRELSE, 48460000=07718000= - LBEG, 48465000=07718000= - LBRK, 48470000=07718000= - EXIT; 48475000=07718000= + LERR, 48365000=07716000= + LDEC, 48370000=07716000= + LPROC, 48375000=07716000= + LSPROC, 48380000=07716000= + LVAR, 48385000=07716000= + LAB, 48390000=07716000= + LREAD, 48395000=07716000= + LWRITE, 48400000=07717000= + LSPACE, 48405000=07717000= + LCLOSE, 48410000=07717000= + LLOCK, 48415000=07717000= + LRWND, 48420000=07717000= + LDBL, 48425000=07717000= + LFOR, 48430000=07717000= + LWHILE, 48435000=07717000= + LDO, 48440000=07717000= + LFILL, 48445000=07717000= + LIF, 48450000=07718000= + LGO, 48455000=07718000= + LRELSE, 48460000=07718000= + LBEG, 48465000=07718000= + LBRK, 48470000=07718000= + EXIT; 48475000=07718000= SWITCH 48480000=07719000= S:= LPROC, 48485000=07720000= - LERR, 48490000=07720000= - LSPROC, 48495000=07720000= - LERR, 48500000=07720000= - LERR, 48505000=07720000= - LERR, 48510000=07720000= - LERR, 48515000=07721000= - LPROC, 48520000=07721000= - LPROC, 48525000=07721000= - LPROC, 48530000=07721000= - LPROC, 48535000=07721000= - LVAR, 48540000=07721000= - LVAR, 48545000=07721000= - LVAR, 48550000=07722000= - LVAR, 48555000=07723000= - LVAR, 48560000=07723000= - LVAR, 48565000=07723000= - LVAR, 48570000=07723000= - LVAR, 48575000=07723000= - LAB, 48580000=07723000= - LERR, 48585000=07723000= - LERR, 48590000=07724000= - LERR, 48595000=07724000= - LERR, 48600000=07724000= - LERR, 48605000=07724000= - LDEC, 48610000=07724000= - LREAD, 48615000=07724000= - LWRITE, 48620000=07724000= - LSPACE, 48625000=07725000= - LCLOSE, 48630000=07725000= - LLOCK, 48635000=07725000= - LRWND, 48640000=07725000= - LDBL, 48645000=07725000= - LFOR, 48650000=07725000= - LWHILE, 48655000=07725000= - LDO, 48660000=07726000= - EXIT, 48665000=07726000= - EXIT, 48670000=07726000= - EXIT, 48675000=07726000= - LFILL, 48680000=07726000= - EXIT, 48685000=07726000= - LIF, 48690000=07726000= - LGO, 48695000=07727000= - LRELSE, 48700000=07727000= - LBEG; 48705000=07727000= + LERR, 48490000=07720000= + LSPROC, 48495000=07720000= + LERR, 48500000=07720000= + LERR, 48505000=07720000= + LERR, 48510000=07720000= + LERR, 48515000=07721000= + LPROC, 48520000=07721000= + LPROC, 48525000=07721000= + LPROC, 48530000=07721000= + LPROC, 48535000=07721000= + LVAR, 48540000=07721000= + LVAR, 48545000=07721000= + LVAR, 48550000=07722000= + LVAR, 48555000=07723000= + LVAR, 48560000=07723000= + LVAR, 48565000=07723000= + LVAR, 48570000=07723000= + LVAR, 48575000=07723000= + LAB, 48580000=07723000= + LERR, 48585000=07723000= + LERR, 48590000=07724000= + LERR, 48595000=07724000= + LERR, 48600000=07724000= + LERR, 48605000=07724000= + LDEC, 48610000=07724000= + LREAD, 48615000=07724000= + LWRITE, 48620000=07724000= + LSPACE, 48625000=07725000= + LCLOSE, 48630000=07725000= + LLOCK, 48635000=07725000= + LRWND, 48640000=07725000= + LDBL, 48645000=07725000= + LFOR, 48650000=07725000= + LWHILE, 48655000=07725000= + LDO, 48660000=07726000= + EXIT, 48665000=07726000= + EXIT, 48670000=07726000= + EXIT, 48675000=07726000= + LFILL, 48680000=07726000= + EXIT, 48685000=07726000= + LIF, 48690000=07726000= + LGO, 48695000=07727000= + LRELSE, 48700000=07727000= + LBEG; 48705000=07727000= COMMENT THESE ADDITIONS ARE BEING MADE TO FORCE 48710000=07727010= CONSTANTCLEAN ACTION WHEN IT APPEARS THAT CONSTANTS WILL BE 48715000=07727020= GENERATED IN THE STACK WHICH ARE TOO FAR AWAY AND CREL 48720000=07727030= @@ -9103,7 +10559,7 @@ AGAIN: 48800000 FAULTSTMT; 48845000=07729100= GO EXIT 48850000=07729100= END; 48855000=07729100= - IF ELCLASS = FILEDID OR ECLASS = SUPERFILEID THEN 48860000=07729190= + IF ELCLASS = FILEID OR ELCLASS = SUPERFILEID THEN 48860000=07729190= BEGIN 48865000=07729200= GT1:= FILEATTRIBUTEHANDLER(FS); 48870000=07729200= GO EXIT 48875000=07729200= @@ -9114,7 +10570,7 @@ LERR: 48890000 GO TO EXIT; 48900000=07730000= LDEC: 48905000=07731000= FLAG(146); 48910000=07731000= - IF TABLE(I-2) = ENV AND MODE > 0 THEN 48915000=07733000= + IF TABLE(I-2) = ENDV AND MODE > 0 THEN 48915000=07733000= BEGIN 48920000=07733000= I:= I-2; 48925000=07733000= ELCLASS:= ENDV; 48930000=07733000= @@ -9186,7 +10642,7 @@ LBEG: 49240000 BLOCK(FALSE) 49260000=07755000= END 49265000=07756000= ELSE 49270000=07756000= - COMPOUNDTIAL; 49275000=07756000= + COMPOUNDTAIL; 49275000=07756000= EXIT: 49280000=07757000= END STMT; 49285000=07757000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%49290000=07757000= @@ -9315,7 +10771,7 @@ EXIT: 49280000 ERR(105); 49905000=07845000= GO TO XXX; 49910000=07845000= END; 49915000=07845000= - IF STEPI ^= FILEID AND ELCLASS ^= SUPERFILED THEN 49920000=07846000= + IF STEPI ^= FILEID AND ELCLASS ^= SUPERFILEID THEN 49920000=07846000= GO TO E 49925000=07847000= ELSE 49930000=07847000= BEGIN 49935000=07848000= @@ -9376,6 +10832,7 @@ EXIT: 49280000 END 50210000=07859900= ELSE 50215000=07859900= $ SET OMIT = NOT TSPOL 50220000=07859900= + $ POP OMIT % NOT SURE ABOUT THIS... 50220100 BEGIN 50225000=07900000= ERROR(100); 50230000=07900000= GO TO XXX 50235000=07900000= @@ -9519,21 +10976,21 @@ EXIT: 50860000 BEGIN 50925000=08009000= OWN REAL 50930000=08010000= B, 50935000=08010000= - STMTSTART, 50940000=08010000= - REGO, 50945000=08010000= - RETURNSTORE, 50950000=08010000= - ADDRES, 50955000=08010000= - V, 50960000=08010000= - VRET, 50965000=08011000= - BRET; 50970000=08011000= + STMTSTART, 50940000=08010000= + REGO, 50945000=08010000= + RETURNSTORE, 50950000=08010000= + ADDRES, 50955000=08010000= + V, 50960000=08010000= + VRET, 50965000=08011000= + BRET; 50970000=08011000= OWN BOOLEAN 50975000=08012000= SIGNA, 50980000=08012000= - SIGNB, 50985000=08012000= - SIGNC, 50990000=08012000= - INT, 50995000=08013000= - CONSTANA, 51000000=08013000= - CONSTANB, 51005000=08013000= - CONSTANC; 51010000=08013000= + SIGNB, 50985000=08012000= + SIGNC, 50990000=08012000= + INT, 50995000=08013000= + CONSTANA, 51000000=08013000= + CONSTANB, 51005000=08013000= + CONSTANC; 51010000=08013000= DEFINE 51015000=08014000= SIMPLEB = SIGNC #, 51020000=08014000= FORMALV = SIGNA #, 51025000=08015000= @@ -9592,7 +11049,7 @@ EXIT: 50860000 BOOLEAN PROCEDURE SIMPLE(B, A, S); 51290000=08027000= BOOLEAN 51295000=08027000= B, 51300000=08027000= - S; 51305000=08027000= + S; 51305000=08027000= REAL 51310000=08027000= A; 51315000=08027000= BEGIN 51320000=08028000= @@ -9650,9 +11107,8 @@ EXIT: 50860000 CHECKER(VRET:= ALL); 51580000=08054000= ADDRES:= ALL.ADDRESS; 51585000=08055000= FORMALV:= ALL.[38:2] = 2; 51590000=08056000= - IF T:= ALL.CLASS > INTARRAYID OR T < BOOID OR GT1:= (T-BOOID) MOD 51595000=08058000= - 4 < 1 51600000=08058000= - THEN 51605000=08058000= + IF T:= ALL.CLASS > INTARRAYID OR T < BOOID OR 51595000=08057000= + GT1:= (T-BOOID) MOD 4 < 1 THEN 51600000=08058000= ERR(REAL(T ^= 0)*51+100); 51610000=08059000= INT:= GT1 = 3; 51615000=08060000= SIMPI:= T <= INTID 51620000=08061000= @@ -9750,7 +11206,7 @@ EXIT: 50860000 END 52080000=08099000= ELSE 52085000=08099000= BACKFIX:= V+REAL(SIMPLEV)-1; 52090000=08099000= - DIALA+DIALB:= 0; 52095000=08100000= + DIALA:= DIALB:= 0; 52095000=08100000= AEXP; 52100000=08101000= DIALA:= DIALB:= 0; 52105000=08101000= COMMENT PICK UP FIRST ARITHMETIC EXPRESSION; 52110000=08102000= @@ -9761,7 +11217,7 @@ EXIT: 50860000 COMMENT LEAVE ROOM FOR FORWARD JUMP; 52135000=08107000= IF FORMALV THEN 52140000=08108000= CALL(DESC); 52145000=08108000= - CALL(OPOC); 52150000=08108000= + CALL(OPDC); 52150000=08108000= COMMENT FETCH INDEX; 52155000=08109000= IF I > 70 THEN 52160000=08110000= BEGIN 52165000=08110000= @@ -9798,8 +11254,7 @@ EXIT: 50860000 EMITO(REAL(SIGNB)*32+ADD); 52320000=08126000= EMITB(BFW, BACKFIX, L); 52325000=08127000= IF ELCLASS = UNTILV THEN 52330000=08129000= - BEGIN 52335000=08129000= - COMMENT STEP-UNTIL ELEMENT; 52340000=08129000= + BEGIN COMMENT STEP-UNTIL ELEMENT; 52335000=08129000= STORE(TRUE); 52345000=08130000= IF FORMALV THEN 52350000=08130000= CALL(OPDC); 52355000=08130000= @@ -9895,9 +11350,9 @@ EXIT: 50860000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%52805000=08172000= REAL 52810000=08173000= T1, 52815000=08173000= - T2, 52820000=08173000= - T3, 52825000=08173000= - T4; 52830000=08173000= + T2, 52820000=08173000= + T3, 52825000=08173000= + T4; 52830000=08173000= NXTELBT:= 1; 52835000=08174000= I:= 0; 52840000=08174000= STEPIT; 52845000=08175000= @@ -9917,7 +11372,7 @@ EXIT: 50860000 IF FORCLASS(STEPV) THEN 52915000=08182000= IF SIMPLE(CONSTANB, B, SIGNB) THEN 52920000=08183000= IF FORCLASS(UNTILV) THEN 52925000=08184000= - IF SIMPLE(CONSTANC, C, SIGNC) THEN 52930000=08185000= + IF SIMPLE(CONSTANC, Q, SIGNC) THEN 52930000=08185000= IF FORCLASS(DOV) THEN 52935000=08186000= BEGIN 52940000=08187000= PLUG(CONSTANA, A); 52945000=08188000= @@ -9928,8 +11383,11 @@ EXIT: 50860000 CONSTANTCLEAN; 52970000=08190000= STMTSTART:= L; 52975000=08191000= STEPIT; 52980000=08192000= - T1:= (((4096*RETURNSTORE+STMTSTART)*2+REAL(CONSTANB))*52985000=08195000= - 2+REAL(CONSTANC))*2+REAL(SIGNB))*2+REAL(SIGNC); 52990000=08197000= + T1:= ((((4096*RETURNSTORE + STMTSTART)*2 + 52985000=08193000= + REAL(CONSTANB))*2 + 52985100=08194000= + REAL(CONSTANC))*2 + 52985200=08195000= + REAL(SIGNB))*2 + 52985300=08196000= + REAL(SIGNC); 52985400=08197000= T2:= VRET; 52995000=08198000= T3:= B; 53000000=08199000= T4:= Q; 53005000=08200000= @@ -10181,7 +11639,7 @@ EXIT: 53560000 HOLD; 54235000=08385800= COMMENT L MAY GET CUT BACK TO HERE; 54240000=08385800= IF STEPI = LEFTPAREN THEN 54245000=08387000= - REVERSETOG:= SEEKTOG:= FALSE; 54250000=08387000= + REVERSETOG:= SEEKTOG:= FALSE 54250000=08387000= ELSE 54255000=08388000= BEGIN 54260000=08388000= COMMENT THIS HAD BETTER SAY REVERSE; 54265000=08388000= @@ -10195,8 +11653,8 @@ EXIT: 53560000 ERR(420); 54305000=08392000= GO TO EXIT; 54310000=08393000= END; 54315000=08394000= - IF CHECK(LEFTPAREN, 421);; 54320000=08395000= - GO TO EXIT; 54325000=08396000= + IF CHECK(LEFTPAREN, 421) THEN 54320000=08395000= + GO TO EXIT; 54325000=08396000= COMMENT ERROR 421 MEANS MISSING LEFT 54330000=08397000= PARENTHESIS IN READ REVERSE STATEMENT; 54335000=08398000= END; 54340000=08399000= @@ -10209,7 +11667,7 @@ EXIT: 53560000 ERR(422); 54375000=08401040= GO TO EXIT 54380000=08401040= END; 54385000=08401040= - WAYI:= TRUE; 54390000=08401045= + MAYI:= TRUE; 54390000=08401045= HOLD:= L; 54395000=08401045= EMIT(11); 54400000=08401050= EMIT(4); 54405000=08401050= @@ -10765,37 +12223,32 @@ EXIT: 56945000 - - - - - - - - - - - - - - 57165000=08567000= (CHARI,POWERSOFTEN,FILE,CHANNEL SKIP,LINE SKIP,0,N,ARRAY 57170000=08568000= ROW DESCRIPTOR) 57175000=08569000= - ** ** ** ** ** ** ** ** ** ** ** ** ** ** 57180000=08570000= - LABEL EXIT; 57185000=08571000= - COMMENT EXIT APPEARS AFTER THE LAST 57190000=08571000= + ** ** ** ** ** ** ** ** ** ** ** ** ** **; 57180000=08570000= + LABEL 57185000=08571000= + EXIT; COMMENT EXIT APPEARS AFTER THE LAST 57185100 EXECUTABLE STATEMENT IN WRITESTMT; 57195000=08572000= LABEL 57200000=08573000= - CHKSECOND; 57205000=08573000= - COMMENT I IS NOW POINTING AT THE COMMA 57210000=08573000= + CHKSECOND; COMMENT I IS NOW POINTING AT THE COMMA 57205000=08573000= SEPARATING THE FIRST AND SECOND 57215000=08574000= PARAMETERS; 57220000=08575000= LABEL 57225000=08576000= - ONEPARENSH; 57230000=08576000= - COMMENT I IS POINT AT THE RIGHT 57235000=08576000= + ONEPARENSH; COMMENT I IS POINT AT THE RIGHT 57230000=08576000= PARENTHESIS AT THIS POINT AND I HAVE 57240000=08577000= JUST DISCOVERED THAT THIS IS THE ONE 57245000=08578000= PARAMETER CASE; 57250000=08579000= DEFINE 57255000=08580000= - ACCUM1 = RR1 #; 57260000=08580000= - COMMENT ACCUM1 IS USED AS A 57265000=08580000= + ACCUM1 = RR1 #; COMMENT ACCUM1 IS USED AS A 57260000=08580000= TEMPORARY CELL FOR ACCUM[1]; 57270000=08581000= %VOID 57275000=08582000= %VOID 57280000=08583000= %VOID 57285000=08584000= %VOID 57290000=08585000= LABEL 57295000=08586000= - PASSLIST; 57300000=08586000= - COMMENT I IS POINTING AT THE COMMA 57305000=08586000= + PASSLIST; COMMENT I IS POINTING AT THE COMMA 57300000=08586000= PRECEEDING THE LIST WHEN THIS LABEL IS 57310000=08587000= REACHED; 57315000=08588000= LABEL 57320000=08589000= - EMITCALL; 57325000=08589000= - COMMENT I IS POINTING AT THE STATEMENT 57330000=08589000= + EMITCALL; COMMENT I IS POINTING AT THE STATEMENT 57325000=08589000= DELIMITER. THE CODE AT EMITCALL EMITS THE57335000=08590000= CODE TO CALL INTERPTO; 57340000=08591000= LABEL 57345000=08591100= @@ -10803,8 +12256,7 @@ EXIT: 56945000 LABEL 57355000=08591200= WRITXFORM; 57360000=08591200= INTEGER 57365000=08591500= - LISTADDRESS; 57370000=08591500= - COMMENT TEMP TO HOLD LIST ADD DESC; 57375000=08591500= + LISTADDRESS; COMMENT TEMP TO HOLD LIST ADD DESC; 57370000=08591500= BOOLEAN 57380000=08591600= LOCKTOG, 57385000=08591600= ARC; 57390000=08591600= @@ -11522,8 +12974,7 @@ EXIT: 60380000 EMIT(0); 60950000=08913000= EMITL(REAL(TRUE AND NOT OPTOG)); 60955000=08913000= EMIT(0); 60960000=08913000= - FILE 60965000=08914000= - := BUMPL; 60970000=08914000= + FILER:= BUMPL; 60965000=08914000= IF NOT HVCHECK(ELBAT[I]) THEN 60975000=08914000= GO QUIT; 60980000=08914000= EMITPAIR(ELBAT[I].ADDRESS, LOD); 60985000=08915000= @@ -11576,29 +13027,28 @@ QUIT: 61150000 DEFINE 61220000=08931000= RDS = 1, 280 #; 61225000=08931000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%61226000 - STREAM PROCEDURE STUFFILE(IDLOC, FN, SFN); 61230000=08932000= + PROCEDURE STUFFILE(IDARRAY, IDLOC, FN, SFN); 61230000=08932000= VALUE 61235000=08933000= - FN, 61240000=08933000= - SFN; 61245000=08933000= + FN, SFN; 61240000=08933000= + ARRAY 61240100 + IDARRAY[0]; 61240200 + REAL 61240300 + IDLOC, FN, SFN; 61240400 BEGIN 61250000=08934000= - DI:= IDLOC; 61255000=08934000= - DI:= DI+5; 61260000=08934000= - DI:= DC; 61265000=08934000= - SI:= LOC FN; 61270000=08935000= - SI:= SI+5; 61275000=08935000= - DS:= 3 CHR; 61280000=08935000= - SI:= SI+7; 61285000=08935000= - DS:= 11 LIT 6"0000000DSRT"; 61290000=08936000= - DS:= CHR; 61295000=08936000= - SI:= SI-1; 61300000=08936000= - DS:= 7 LIT 6" 5DSRT"; 61305000=08937000= - DS:= CHR; 61310000=08937000= - SFN:= DI; 61315000=08937000= - SI:= LOC SFN; 61320000=08937000= - DI:= IDLOC; 61325000=08938000= - DI:= DI+5; 61330000=08938000= - SI:= SI+5; 61335000=08938000= - DS:= 3 CHR; 61340000=08938000= + STREAMLOCALS; 61250100 + STREAMSETDI(IDARRAY, IDLOC); 61255000=08934000= + STREAMSETLOCSI(FN); 61270000=08935000= + STREAMSKIPSI(+5); 61275000=08935000= + STREAMTRANSFERCHR(3); 61280000=08935000= + STREAMSETLOCSI(SFN); 61284000 + STREAMSKIPSI(+7); 61285000=08935000= + STREAMTRANSFERLIT(8, 6"0000000D"); 61290000=08936000= + STREAMTRANSFERLIT(3, 6"SRT"); 61290100 + STREAMTRANSFERCHR(1); 61295000=08936000= + STREAMSKIPSI(-1); 61300000=08936000= + STREAMTRANSFERLIT(7, 6" 5DSRT"); 61305000=08937000= + STREAMTRANSFERCHR(1); 61310000=08937000= + IDLOC:= STREAMGETDI; 61315000=08937000= END STUFFILE; 61345000=08939000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%61346000 BOOLEAN PROCEDURE INPROCHECK(ELBW); 61350000=08940000= @@ -11624,12 +13074,12 @@ QUIT: 61150000 BEGIN 61450000=08946000= SFILENO:= FILENO; 61455000=08946000= FOR J:= 1 STEP 1 UNTIL 7 DO 61460000=08947000= - IF MKABS(IDARRAY[127]) < IDLOC.[14:15]+3 THEN 61465000=08948000= - FLAG(40) 61470000=08948000= + IF 127 < IDLOC.[14:15]+3 THEN 61465000=08948000= + FLAG(40) % PPB SIZE EXCEEDED 61470000=08948000= ELSE 61475000=08948000= BEGIN 61480000=08949000= - STUFFILE 61485000=08950000= - (IDLOC, (IF J <= 2 THEN 12 ELSE 2) & FILENO[17:11:12], J); 61490000=08950000= + STUFFILE(IDARRAY, IDLOC, 61485000=08950000= + (IF J <= 2 THEN 12 ELSE 2) & FILENO[17:11:12], J); 61490000=08950000= FILENO:= FILENO+1; 61495000=08951000= END; 61500000=08952000= END; 61505000=08952000= @@ -11690,7 +13140,7 @@ QUIT: 61150000 IF NOT COMMACHECK THEN 61780000=08972000= GO QUIT; 61785000=08972000= % INPUT OPTION. 61790000=08972500= - IF ELCLASS = FILEID OR ELCLASS = SUPEFILEID THEN 61795000=08973000= + IF ELCLASS = FILEID OR ELCLASS = SUPERFILEID THEN 61795000=08973000= BEGIN 61800000=08974000= EMITPAIR(0, XCH); 61805000=08974000= PASSFILE; 61810000=08974000= @@ -11796,59 +13246,74 @@ QUIT: 62270000 PROCEDURE PROGRAM; 62310000=09003000= BEGIN 62315000=09004000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%62316000 - STREAM PROCEDURE MDESC(WD, TOLOC); 62320000=09005000= - VALUE 62325000=09005000= - WD; 62330000=09005000= + DEFINE MDESC(WD, TOLOC) = 62320000=09005000= BEGIN 62335000=09006000= - DI:= LOC WD; 62340000=09006000= - DS:= SET; 62345000=09006000= - SI:= LOC WD; 62350000=09006000= - DI:= TOLOC; 62355000=09006000= - DS:= WDS 62360000=09006000= - END; 62365000=09006000= + TOLOC:= (WD) & (1)[47:1]; 62340000=09006000= + END #; 62365000=09006000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%62370000=09007000= COMMENT THE FOLLOWING PROCEDURE PRINTS OUT THE PRT, NAME, AND 62375000=09007000= SEGMENT NUMBER OF THE INTRINSIC PROCEDURES USED IN THE 62380000=09008000= OBJECT PROGRAM; 62385000=09009000= - STREAM PROCEDURE WRTINTRSC(SGNO, ALFA, PRT, FIL); 62390000=09010000= + PROCEDURE WRTINTRSC(SGNO, ALFA, AX, PRT, FIL); 62390000=09010000= VALUE 62395000=09011000= - SGNO, 62400000=09011000= - PRT; 62405000=09011000= + SGNO, AX, PRT; 62400000=09011000= + REAL 62400100 + SGNO, AX, PRT; 62400200 + ARRAY 62400300 + ALFA, FIL[0]; 62400400 BEGIN 62410000=09012000= - LOCAL COUNT, DEST; 62415000=09012000= - DI:= FIL; 62420000=09013000= - DS:= 4 LIT 6"PRT("; 62425000=09013000= - SI:= LOC PRT; 62430000=09013000= - SI:= SI+4; 62435000=09013000= + STREAMLOCALS; 62410100 + REAL 62415000=09012000= + COUNT, 62415100 + DEST; 62415200 + LABEL 62415300 + JUMPOUT; 62415400 + 62415500 + STREAMSETDI(FIL, 0); 62420000=09013000= + STREAMTRANSFERLIT(4, 6"PRT("); 62425000=09013000= + STREAMSETLOCSI(PRT); 62430000=09013000= + STREAMSKIPSI(+4); 62435000=09013000= TALLY:= 4; 62440000=09013000= - 3(IF SC = 6"0" THEN % DONT PRINT LEADING ZEROES. 62445000=09014000= - BEGINSI:= SI+1;TALLY:= TALLY+63 62450000=09015000= - ENDELSE 62455000=09015000= - JUMP OUT); 62460000=09015000= + THRU 3 DO 62445000=09014000= + BEGIN 62445100 + IF STREAMSCEQL(6"0") THEN % DONT PRINT LEADING ZEROES. 62445200 + BEGIN 62450000=09015000= + STREAMSKIPSI(+1); 62450100 + STREAMINCTALLY(+63); % DECREMENT TALLY 62450200 + END 62455000=09015000= + ELSE 62455100 + GO JUMPOUT 62460000=09015000= + END; 62460100 + 62460200 + JUMPOUT: 62464000 COUNT:= TALLY; 62465000=09016000= - DS:= COUNT CHR; 62470000=09016000= - DS:= 4 LIT 6") = "; 62475000=09016000= - SI:= ALFA; 62480000=09017000= - SI:= SI+2; 62485000=09017000= - DEST:= DI; % SAVE DI. 62490000=09017000= - DI:= LOC COUNT; 62495000=09018000= - DS:= 7 LIT 6"0"; 62500000=09018000= - DS:= CHR; % NO OF CHARS IN NAME. 62505000=09018000= - DI:= DEST; 62510000=09019000= - DS:= COUNT CHR; % INT. NAME. 62515000=09019000= - DS:= 29 LIT 6" INTRINSIC, SEGMENT NUMBER = "; 62520000=09020000= - SI:= LOC SGNO; 62525000=09021000= - DS:= 4 DEC; 62530000=09021000= - DS:= LIT 6"."; 62535000=09021000= - DI:= DI-5; 62540000=09022000= - DS:= 4 FILL; % JUNK LEADING BLANKS. 62545000=09022000= + STREAMTRANSFERCHR(COUNT); 62470000=09016000= + STREAMTRANSFERLIT(4, 6") = "); 62475000=09016000= + STREAMSETSI(ALFA, AX); 62480000=09017000= + STREAMSKIPSI(+2); 62485000=09017000= + DEST:= STREAMGETDI; % SAVE DI. 62490000=09017000= + STREAMSETLOCDI(COUNT); 62495000=09018000= + STREAMSMEARLIT(7, 6"0"); 62500000=09018000= + STREAMTRANSFERCHR(1); % NO OF CHARS IN NAME. 62505000=09018000= + COUNT:= STREAMTEMPD[0]; 62505100 + STREAMSETDI(FIL, DEST); 62510000=09019000= + STREAMTRANSFERCHR(COUNT); % INT. NAME. 62515000=09019000= + STREAMTRANSFERLIT(8, 6" INTRINS"); 62520000=09020000= + STREAMTRANSFERLIT(8, 6"IC, SEGM"); 62520100 + STREAMTRANSFERLIT(8, 6"ENT NUMB"); 62520200 + STREAMTRANSFERLIT(5, 6"ER = "); 62520300 + STREAMSETLOCSI(SGNO); 62525000=09021000= + STREAMTRANSFERDEC(4); 62530000=09021000= + STREAMTRANSFERLIT(1, 6"."); 62535000=09021000= + STREAMSKIPDI(-5); 62540000=09022000= + STREAMTRANSFERFILL(4); % JUNK LEADING BLANKS. 62545000=09022000= END WRTINTRSC; 62550000=09023000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%62552000 DEFINE 62555000=09024000= STARTINTRSC = 426 #; 62560000=09024000= LABEL 62565000=09025000= L1; 62570000=09025000= - IDLOC:= ELSEMKABS(IDARRAY[0]); 62575000=09026000= + IDLOC:= 0; 62575000=09026000= IDLOCTEMP:= IDLOC; 62580000=09027000= FILL OPTIONS[*] WITH 6"5CHECK", 0, % 0, 1 62585000=09027002= 6"6DEBUG", 0, % 2, 3 62590000=09027004= @@ -11881,18 +13346,22 @@ QUIT: 62270000 6"8CODEF", 0, % 56,57 62725000=09027058= 0; 62730000=09027100= LISTOG:= LISTER:= BOOLEAN(1-ERRORCOUNT.[1:1]); 62735000=09028000= + SINGLTOG:= TRUE; % DEFAULT TO SINGLE-SPACED LISTING 62735100 OPTIONS[13]:= REAL(LISTER); 62740000=09028005= + SAVETIME:= 30; % ON THE B5500, THE MCP WOULD SET THIS 62742000 62745000=09028010= COMMENT LISTOG IS NOT SET BY DEFAULT ON TIMESHARING; 62750000=09028010= NOHEADING:= TRUE; 62755000=09028050= - BUILDLINE.[0:1]:= SEQXEQTOG:= REMOTOG:= BOOLEAN(ERRORCOUNT.[0:1]); 62760000=09028150= + BUILDLINE.[0:1]:= SEQXEQTOG:= BOOLEAN(ERRORCOUNT.[0:1]); 62760000=09028150= ERRORCOUNT:= 0; 62765000=09028900= ERRMAX:= 999; % MAY BE CHANGED IN DOLLARCARD. 62770000=09028910= BASENUM:= 10000; 62775000=09028920= ADDVALUE:= 1000; 62780000=09028920= NEWBASE:= TRUE; 62785000=09028920= - 62790000=09028930= COMMENT DEFAULT VALUES FOR "$SEQ" OPTION; 62795000=09028930= + 62795100 + OPEN(CARD); 62795200 + CARDRECSIZE:= CARD.MAXRECSIZE; 62795300 LASTUSED:= 4; % FOR INITIALIZATION. 62800000=09029000= SGNO:= 1; 62805000=09030000= SGAVL:= 2; 62810000=09030000= @@ -12118,16 +13587,16 @@ FILL INFO[2,*] WITH 3"0030000120000000", 6"2LB000", % THESE ENTRIES ARE 63760000 3"0130000002040000", 6"3DLN00", 3"0000000010100000",%59463910000=09214320= 3"0130000002140000", 6"4DSIN0", 3"0000000010500000",%59763915000=09214325= 3"0130000002240000", 6"4DCOS0", 3"0000000010700000",%60063920000=09214330= - 3"0130000002360000", 6"7DARCT",6"AN0000000",3"0000000011300000",%60363925000=09214340= - 3"0130000002460000", 6"6DLOG1",6"000000000",3"0000000010400000",%60763930000=09214345= - 3"0130000002560000", 6"8DARCT",6"AN2000000",3"0000000011500000",%61163935000=09214350= + 3"0130000002360000", 6"7DARCT",6"AN000000", 3"0000000011300000",%60363925000=09214340= + 3"0130000002460000", 6"6DLOG1",6"00000000", 3"0000000010400000",%60763930000=09214345= + 3"0130000002560000", 6"8DARCT",6"AN200000", 3"0000000011500000",%61163935000=09214350= 3"0130000002640000", 6"4DMOD0", 3"0000000006500000",%61563940000=09214355= 3"0130000002740000", 6"4CABS0", 3"0000000005300000",%61863945000=09214360= - 3"0130000003060000", 6"7ARCTA",6"N20000000",3"0000000011400000",%62163950000=09214365= - 3"0130000003160000", 6"6DROUN",6"D00000000",3"0000000006100000",%62563955000=09214370= + 3"0130000003060000", 6"7ARCTA",6"N2000000", 3"0000000011400000",%62163950000=09214365= + 3"0130000003160000", 6"6DROUN",6"D0000000", 3"0000000006100000",%62563955000=09214370= 3"0130000000040000", 6"5LOG10", 3"0000000010300000",%62963960000=09214375= 3"0130000000040000", 6"5COTAN", 3"0000000011200000",%63263965000=09214380= - 3"0130000000060000", 6"6ARCSI",6"N00000000",3"0000000011600000",%63563970000=09214385= + 3"0130000000060000", 6"6ARCSI",6"N0000000", 3"0000000011600000",%63563970000=09214385= 3"0130000000040000", 6"5ARCOS", 3"0000000011700000",%63963975000=09214390= 3"0130000000040000", 6"4SINH0", 3"0000000012000000",%64263980000=09214395= 3"0130000000040000", 6"4COSH0", 3"0000000012100000",%64563985000=09214400= @@ -12135,7 +13604,7 @@ FILL INFO[2,*] WITH 3"0030000120000000", 6"2LB000", % THESE ENTRIES ARE 63760000 3"0130000000040000", 6"3ERF00", 3"0000000012500000",%65163995000=09214410= 3"0130000000040000", 6"5GAMMA", 3"0000000012600000",%65464000000=09214415= 3"0130000000040000", 6"5LNGAM", 3"0000000012700000",%65764005000=09214420= - 3"0130000000040000", 6"3TAN00", 3"0000000011100000",%66064010000=09214425= + 3"0130000000040000", 6"3TAN00", 3"0000000011100007",%66064010000=09214425= 3"0130000260000000", 6"4FAST0", %66364015000=09214426= 3"0130000270000000", 6"4SLOW0", %66564020000=09214427= 3"0130000240000000", 6"7PROTE",6"CT000000", %66764025000=09214428= @@ -12149,8 +13618,9 @@ FILL INFO[2,*] WITH 3"0030000120000000", 6"2LB000", % THESE ENTRIES ARE 63760000 3 UNTIL 603, 607 STEP 4 UNTIL 615, 618, 621 STEP 4 UNTIL 629, 632,64065000=09214515= 635, 639 STEP 3 UNTIL 660, 663 STEP 2 UNTIL 667, 671 64070000=09214520= DO 64075000=09214520= - PUT(TAKE(NEXTINFO) & STACKHEAD[GT2:= TAKE(NEXTINFO+1) MOD 125] 64080000=09214530= - [12:12:13], LASTINFO:= STACKHEAD[GT2]:= NEXTINFO); 64085000=09214530= + PUT(TAKE(NEXTINFO) & 64080000=09214530= + STACKHEAD[GT2:= TAKE(NEXTINFO+1) MOD 125][12:12:13], 64080100=09214530= + LASTINFO:= STACKHEAD[GT2]:= NEXTINFO); 64080200=09214530= NEXTINFO:= LASTINFO:= LASTSEQROW*256+LASTSEQUENCE+1; 64090000=09214980= BUILDLINE.[2:1]:= TRUE; 64095000=09214985= PUTNBUMP(0); 64100000=09214990= @@ -12233,7 +13703,7 @@ FILL INFO[2,*] WITH 3"0030000120000000", 6"2LB000", % THESE ENTRIES ARE 63760000 COMPLETE TO LOOK LIKE A WORD MODE 64485000=09270000= PROGRAM DESCRIPTOR; 64490000=09271000= EMITL(0); 64495000=09272000= - EMIT0(MKS); 64500000=09272000= + EMITO(MKS); 64500000=09272000= GT1:= PROGDESCBLDR(3, 0, 0); 64505000=09273000= GT1:= GETSPACE(TRUE, -5); % SEG.#2 DESCR. 64510000=09274000= ERRORTOG:= TRUE; 64520000=09275000= @@ -12269,7 +13739,7 @@ L1: GT1:= GT1+(GT2:= INFO[GT1.LINKR, GT1.LINKC]).[14:2]; 64650000 BEGIN 64720000=09300100= GT3:= GT3+1; 64725000=09300100= BLANKET(14, LIN); % BLANK BUFFER. 64730000=09300150= - WRTINTRSC(SGNO, INFO[GT3.LINKR, GT3.LINKC], 64735000=09301000= + WRTINTRSC(SGNO, INFO[GT3.LINKR,*], GT3.LINKC, 64735000=09301000= B2D(GT2.[9:10]), LIN); 64740000=09301000= IF NOHEADING THEN 64745000=09302000= DATIME; 64750000=09302000= @@ -12293,7 +13763,7 @@ COMMENT IF THE POWERS-OF-TEN TABLE HAS BEEN USED, IT IS WRITTEN OUT 64825000 BEGIN 64840000=09312000= SGAVL:= (SGNO:= SGAVL)+1; 64845000=09312000= GT2:= PROGDESCBLDR(2, 0, GT2.ADDRESS); 64850000=09313000= - MOVE(69, TEN, EDOC[0, 0]); 64855000=09314000= + MOVE(69, TEN, 0, EDOC[0,*], 0); 64855000=09314000= BUILDLINE:= BOOLEAN(2*REAL(BUILDLINE)); 64860000=09314100= SEGMENT(-69, SGNO, 0); 64865000=09315000= BUILDLINE:= BUILDLINE.[1:1]; 64870000=09315100= @@ -12356,9 +13826,9 @@ COMMENT ADD IN CORE ESTIMATE FOR SORT; 65130000 COMMENT AT THIS POINT GTI1 HAS THE NEEDED TOTAL CORE REQD; 65155000=09361210= 65160000=09393000= COMMENT WRITE OUT FILE PARAMETER BLOCK; 65165000=09393000= - GTI1:= MIN((IDLOC-IDLOCTEMP).[14:15]+1, 128); % AHA 65170000=09394000= - MOVE(GT1, IDARRAY[0], EDOC[0, 0]); 65175000=09395000= - ZEROUT(IDARRAY[0], 0, 30); 65180000=09395500= + GT1:= MIN((IDLOC-IDLOCTEMP).[14:15]+1, 128); % AHA 65170000=09394000= + MOVE(GT1, IDARRAY, 0, EDOC[0,*], 0); 65175000=09395000= + ZEROUT(IDARRAY, 0, 0, 30); 65180000=09395500= IDARRAY[4]:= MOVEANDBLOCK(EDOC, GT1, 0); 65185000=09396000= IDARRAY[5]:= GT1; 65190000=09397000= 65195000=09398000= @@ -12382,14 +13852,14 @@ COMMENT PASS NUMBER OF FILES; 65270000 COMMENT WRITE DISK SEGMENT ZERO; 65285000=09406000= GT1:= DA; 65290000=09407000= DA:= 0; 65295000=09407000= - MOVE(30, IDARRAY[0], PRT[0, 0]); 65300000=09407000= + MOVE(30, IDARRAY, 0, PRT[0,*], 0); 65300000=09407000= GT2:= MOVEANDBLOCK(PRT, 30, 6); 65305000=09407010= DA:= GT1; 65310000=09407010= IF CODEFILE THEN 65315000=09407020= WRITE(LINE); 65320000=09407020= IF SAVETIME >= 0 AND ERRORCOUNT = 0 THEN 65325000=09407050= - LOCK(CODE, SAVE); 65330000=09407100= - CLOSE(CARD, RELEASE); % RELEASE PRIMARY INPUT FILE. 65335000=09407200= + LOCK(CODE, CRUNCH); 65330000=09407100= + CLOSE(CARD); % RELEASE PRIMARY INPUT FILE. 65335000=09407200= IF LISTER OR NOT NOHEADING THEN 65350000=09408000= BEGIN 65355000=09409000= FORMAT PAN("NUMBER OF ERRORS DETECTED =",I4,". COMPILAT" 65360000=09409200= @@ -12399,18 +13869,21 @@ COMMENT WRITE DISK SEGMENT ZERO; 65285000 I4/"ESTIMATED CORE STORAGE REQUIRED =",I6," WORDS.", 65380000=09413000= /"ESTIMATED AUXILIARY MEMORY REQUIRED =",I6," WORDS.", 65385000=09414000= /"NUMBER OF CARD-IMAGES PROCESSED =",F7.0); 65390000=09414100= - FORMAT SERR("THERE WERE ",V8," SEQUENCE ERRORS"); 65395000=09414101= + FORMAT SERR("THERE WERE ",V6," SEQUENCE ERRORS"); 65395000=09414101= + EBCDICBUFF[0]:= GT1; 65395100 MOVECHARACTERS 65400000=09415000= - (4, INFO[LASTSEQROW, LASTSEQUENCE-1], 0, GT1, 4); 65405000=09415000= + (4, INFO[LASTSEQROW,*], LASTSEQUENCE-1, 0, EBCDICBUFF, 0, 4); 65405000=09415000= + GT1:= EBCDICBUFF[0]; 65405100 + EBCDICBUFF[0]:= GT2; 65405200 MOVECHARACTERS 65410000=09416000= - (4, INFO[LASTSEQROW, LASTSEQUENCE-1], 4, GT2, 4); 65415000=09416000= + (4, INFO[LASTSEQROW,*], LASTSEQUENCE-1, 4, EBCDICBUFF, 0, 4); 65415000=09416000= + GT2:= EBCDICBUFF[0]; 65415100 IF CHECKTOG THEN 65420000=09416001= - WRITE(LINE[DBL], SERR, 65425000=09416006= + WRITE(LINE[SPACE 2], SERR, 65425000=09416006= IF NUMSEQUENCEERRORS = 0 THEN 6"A" ELSE 6"I", IF 65430000=09416006= - NUMSEQUENCEERRORS = 0 THEN 6" NO" ELSE NUMSEQUENCEERRORS)65435000=09416006= - ; 65440000=09416006= - WRITE(LINE[DBL], PAN, ERRORCOUNT, (TIME(1)-TIME1)/60, GT1, 65445000=09419000= - GT2, PRTIMAX, AKKUM, 65450000=09419000= + NUMSEQUENCEERRORS = 0 THEN " NO" ELSE NUMSEQUENCEERRORS); 65435000=09416006= + WRITE(LINE[SPACE 2], PAN, ERRORCOUNT, (TIME(1)-TIME1)/60, 65445000=09419000= + BIC2EBC(GT1), BIC2EBC(GT2), PRTIMAX, AKKUM, 65450000=09419000= IF DA <= CHUNK THEN DA ELSE((DA+CHUNK-1) DIV CHUNK)*CHUNK, 65455000=09419000= SGAVL-1, GTI1, AUXMEMREQ, CARDCOUNT); 65460000=09419000= END 65465000=09420000= @@ -12504,9 +13977,12 @@ COMMENT WRITE DISK SEGMENT ZERO; 65285000 W; 65905000=10068000= REAL 65910000=10068000= W; 65915000=10068000= - BEGIN 65920000=10069000= - MOVE(1, W, EDOC(F.[9:3], F.[6:7]]);IF DEBUGTOG THEN BEGIN 65925000=10075000= - DEBUGWORD(B2D(F), W, LIN);WRITELINE 65930000=10075000= + BEGIN 65920000=10071000= + EDOC[F.[9:3], F.[6:7]]:= W; 65921000=10071000= + IF DEBUGTOG THEN 65925000=10075000= + BEGIN 65925100=10075000= + DEBUGWORD(B2D(F), W, LIN); 65930000=10075000= + WRITELINE 65930100=10075000= END; 65935000=10075000= IF(F:= F+1) > 1024 THEN 65940000=10076000= FLAG(307); 65945000=10076000= @@ -12552,22 +14028,13 @@ COMMENT WRITE DISK SEGMENT ZERO; 65285000 WHIPOUT(W) 66145000=10099000= END EMITFORMAT; 66150000=10099000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%66155000=10099000= - STREAM PROCEDURE PACKALPHA(PLACE, LETTER, CTR); 66160000=10100000= + PROCEDURE PACKALPHA(PLACE, LETTER, CTR); 66160000=10100000= VALUE 66165000=10101000= - LETTER, 66170000=10101000= - CTR; 66175000=10101000= + LETTER, CTR; 66170000=10101000= + REAL 66170100 + PLACE, LETTER, CTR; 66170200 BEGIN 66180000=10102000= - DI:= PLACE; 66185000=10102000= - DS:= LIT 6"B"; 66190000=10102000= - SI:= LOC CTR; 66195000=10103000= - SI:= SI+7; 66200000=10103000= - DS:= CHR; 66205000=10103000= - SI:= PLACE; 66210000=10104000= - SI:= SI+3; 66215000=10104000= - DS:= 5 CHR; 66220000=10104000= - SI:= LOC LETTER; 66225000=10105000= - SI:= SI+7; 66230000=10105000= - DS:= CHR 66235000=10105000= + PLACE:= LETTER & (6"B")[47:6] & (CTR)[41:6] & (PLACE)[35:30]; 66185000=10102000= END PACKALPHA; 66240000=10105000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%66242000 INTEGER 66245000=10106000= @@ -12645,7 +14112,7 @@ COMMENT WRITE DISK SEGMENT ZERO; 65285000 CODE:= RRIGHT 66605000=10127200= END 66610000=10128000= ELSE 66615000=10128000= - IF ELCLASS = 6"0" THEN 66620000=10129000= + IF ELCLASS = 6"O" THEN 66620000=10129000= BEGIN 66625000=10129000= CODE:= RO; 66630000=10129000= W:= 8 66635000=10129000= @@ -12827,12 +14294,12 @@ COMMENT WRITE DISK SEGMENT ZERO; 65285000 BEGIN 67515000=10167200= CODE:= RV; 67520000=10167200= COUNT:= ACCUM[1]:= 0; 67525000=10167300= - IF EXAMIN(NCR) = 6" " THEN 67530000=10167400= + IF EXAMIN(SBUFF, NCR) = 6" " THEN 67530000=10167400= BEGIN 67535000=10167500= RESULT:= 7; 67540000=10167500= SCANNER 67545000=10167500= END; 67550000=10167500= - IF EXAMIN(NCR) = 6"." THEN 67555000=10167600= + IF EXAMIN(SBUFF, NCR) = 6"." THEN 67555000=10167600= BEGIN 67560000=10167700= NEXTENT; 67565000=10167700= IF GETINT THEN 67570000=10167800= @@ -12863,7 +14330,7 @@ EXIT: 67690000 END FORMATPHRASE; 67695000=10174000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%67700000=10174000= 67705000=10175000= - COMMENT GETINT DOES A CALL ON NEXTEND AND CHECKS TO SEE IF AN INTEGER 67710000=10175000= + COMMENT GETINT DOES A CALL ON NEXTENT AND CHECKS TO SEE IF AN INTEGER 67710000=10175000= WAS THE RESULT: IF NOT ERROR - OTHERWISE MAKE SIGN PLUS; 67715000=10176000= BOOLEAN PROCEDURE GETINT; 67720000=10177000= BEGIN 67725000=10178000= @@ -12887,8 +14354,8 @@ EXIT: 67690000 NUMBER; 67815000=10185000= INTEGER 67820000=10185000= P1, 67825000=10185000= - P2, 67830000=10185000= - NUMBER; 67835000=10185000= + P2, 67830000=10185000= + NUMBER; 67835000=10185000= BEGIN 67840000=10186000= IF NUMBER < 0 THEN 67845000=10187000= BEGIN 67850000=10187000= @@ -12962,29 +14429,35 @@ EXIT: 67690000 COMMENT CHARCOUNT CONTAINS NUMBER OFCHARACTORS OF THE DEFINE THAT WE68185000=10231000= HAVE PUT INTO INFO. REMCOUNT CONTAINS NUMBER OF CHARACT- 68190000=10232000= ORS REMAINING IN THIS ROW OF INFO; 68195000=10233000= - PROCEDURE PUTOGETHER(CHAR); 68200000=10234000= - REAL 68205000=10234000= - CHAR; 68210000=10234000= + PROCEDURE PUTOGETHER(CHAR, CX); 68200000=10234000= + VALUE 68200100 + CX; 68200200 + ARRAY 68205000=10234000= + CHAR[0]; 68210000=10234000= + REAL CX; 68210100 BEGIN 68215000=10235000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%68216000 - STREAM PROCEDURE PACKINFO(INFO, ISKIP, COUNT, ASKIP, ACCUM); 68220000=10236000= + PROCEDURE PACKINFO(INFO, IX, ISKIP, COUNT, ASKIP, ACCUM, AX); 68220000=10236000= VALUE 68225000=10237000= - ISKIP, 68230000=10237000= - COUNT, 68235000=10237000= - ASKIP; 68240000=10237000= + IX, ISKIP, COUNT, ASKIP, AX; 68230000=10237000= + ARRAY 68230100 + INFO, ACCUM[0]; 68230200 + REAL 68230300 + IX, ISKIP, COUNT, ASKIP, AX; 68230400 BEGIN 68245000=10238000= - DI:= INFO; 68250000=10238000= - DI:= DI+ISKIP; 68255000=10238000= - SI:= ACCUM; 68260000=10239000= - SI:= SI+ASKIP; 68265000=10239000= - SI:= SI+3; 68270000=10239000= - DS:= COUNT CHR 68275000=10240000= + STREAMLOCALS; 68245100 + STREAMSETDI(INFO, IX); 68250000=10238000= + STREAMSKIPDI(+ISKIP); 68255000=10238000= + STREAMSETSI(ACCUM, AX); 68260000=10239000= + STREAMSKIPSI(+ASKIP); 68265000=10239000= + STREAMSKIPSI(+3); 68270000=10239000= + STREAMTRANSFERCHR(COUNT); 68275000=10240000= END PACKINFO; 68280000=10240000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%68282000 INTEGER 68285000=10241000= COUNT, 68290000=10241000= SKIPCOUNT; 68295000=10241000= - IF(COUNT:= CHAR.[35:6])+CHARCOUNT > 2047 THEN 68300000=10243000= + IF(COUNT:= CHAR[CX].[35:6])+CHARCOUNT > 2047 THEN 68300000=10243000= BEGIN 68305000=10243000= FLAG(142); 68310000=10243000= TB1:= TRUE 68315000=10243000= @@ -12999,11 +14472,11 @@ EXIT: 67690000 ELSE 68360000=10249000= REMCOUNT:= REMCOUNT-COUNT; 68365000=10249000= GT1:= CHARCOUNT DIV 8 + NEXTTEXT; 68370000=10250000= - PACKINFO(TEXT[GT1.LINKR, GT1.LINKC], CHARCOUNT.[2:3], 68375000=10252000= - COUNT, 00, CHAR); 68380000=10252000= + PACKINFO(TEXT[GT1.LINKR,*], GT1.LINKC, CHARCOUNT.[2:3], 68375000=10252000= + COUNT, 0, CHAR, CX); 68380000=10252000= IF SKIPCOUNT ^= 0 THEN 68385000=10253000= - PACKINFO 68390000=10255000= - (TEXT[NEXTTEXT.LINKR+1, 0], 0, SKIPCOUNT, COUNT, CHAR); 68395000=10255000= + PACKINFO(TEXT[NEXTTEXT.LINKR+1,*], 0, 68390000=10255000= + 0, SKIPCOUNT, COUNT, CHAR, CX); 68395000=10255000= CHARCOUNT:= CHARCOUNT+SKIPCOUNT+COUNT 68400000=10256000= END 68405000=10257000= END PUTOGETHER; 68410000=10257000= @@ -13048,7 +14521,8 @@ SKSC: 68580000 IF K = 0 THEN 68605000=10263800= FINAL: 68610000=10263900= BEGIN 68615000=10263900= - PUTOGETHER(6"1#0000"); 68620000=10263900= + EBCDICBUFF[0]:= 6"1#0000"; 68615100 + PUTOGETHER(EBCDICBUFF, 0); 68620000=10263900= GO TO EXIT 68625000=10263900= END 68630000=10264000= ELSE 68635000=10264000= @@ -13075,7 +14549,7 @@ SKSC: 68580000 IF J ^= 0 THEN 68740000=10264600= FOR N:= 1 STEP 1 UNTIL J DO 68745000=10264650= BEGIN 68750000=10264700= - IF EQUAL(ACCUM[1].[35:6]+3, ACCUM[1].DEFINFO[(N-1)*10]) THEN 68755000=10264760= + IF EQUAL(ACCUM[1].[35:6]+3, ACCUM, 1, DEFINFO, (N-1)*10) THEN 68755000=10264760= BEGIN 68760000=10264800= DEFINEPARAM(DINFO+1, N); 68765000=10264810= GO PACKIN; 68770000=10264820= @@ -13085,16 +14559,20 @@ PACKIN: 68785000 IF RESULT = 4 THEN 68790000=10266000= BEGIN 68795000=10266000= COMMENT INSERT " MARKS - 2130706432 IS DECIMAL FOR 1"0000; 68800000=10267000= - PUTOGETHER(2130706432); 68805000=10268000= - PUTOGETHER(ACCUM[1]); 68810000=10269000= - PUTOGETHER(2130706432) 68815000=10270000= + EBCDICBUFF[0]:= 2130706432; 68800100 + PUTOGETHER(EBCDICBUFF, 0); 68805000=10268000= + PUTOGETHER(ACCUM, 1); 68810000=10269000= + EBCDICBUFF[0]:= 2130706432; 68810100 + PUTOGETHER(EBCDICBUFF, 0) 68815000=10270000= END 68820000=10271000= ELSE 68825000=10271000= BEGIN 68830000=10271000= IF BOOLEAN(RESULT) AND BOOLEAN(LASTRESULT) THEN 68835000=10273000= - PUTOGETHER(6"1 0000"); 68840000=10273000= - COMMENT INSERT BLANK; 68845000=10273000= - PUTOGETHER(ACCUM[1]) 68850000=10274000= + BEGIN 68835100 + EBCDICBUFF[0]:= 6"1 0000"; 68835200 + PUTOGETHER(EBCDICBUFF, 0); COMMENT INSERT BLANK; 68840000=10273000= + END; 68845000 + PUTOGETHER(ACCUM, 1) 68850000=10274000= END; 68855000=10274000= IF TB1 THEN 68860000=10275000= GO TO EXIT; 68865000=10275000= @@ -13934,10 +15412,11 @@ STARTCALL: 72530000 GO TO EXIT; 73035000=10877000= COMMENT ERROR 414 MEANS ILLEGAL DUMP LIST ELEMENT. THIS 73040000=10878000= CODE HANDLES LABELS; 73045000=10879000= - PUT(TAKEFRST & (LABELCTR[LABELCTRINX:= LABELCTRINX+1]-IF DUMPETEMP 73050000=10882000= - := TAKEFRST.DUMPEE = 0 THEN GETSPACE(FALSE, -7) 73055000=10882000= - % LABEL DESCRIPTOR. 73060000=10882000= -ELSE DUMPETEMP)[DUMPE], GIT(ELBATWORD)); 73065000=10883000= + PUT(TAKEFRST & (LABELCTR[LABELCTRINX:= LABELCTRINX+1]:= % := OR - ?73050000=10882000= + IF DUMPETEMP:= TAKEFRST.DUMPEE = 0 THEN 73050100=10882000= + GETSPACE(FALSE, -7) % LABEL DESCRIPTOR. 73060000=10882000= + ELSE 73065000=10883000= + DUMPETEMP)[DUMPE], GIT(ELBATWORD)); 73065100=10884000= EMITV(LABELCTR[LABELCTRINX]); 73070000=10885000= PUT(TAKE(ELBATWORD) & ELBATWORD[46:46:34], ELBATWORD); 73075000=10886000= EMITL(3); 73080000=10887000= @@ -14052,13 +15531,13 @@ EXIT: 73495000 BEGIN 73625000=10955000= LABEL 73630000=10956000= LX, 73635000=10956000= - EXIT, 73640000=10956000= - BEF; 73645000=10956000= + EXIT, 73640000=10956000= + BEF; 73645000=10956000= REAL 73650000=10957000= K, 73655000=10957000= - N, 73660000=10957000= - T1, 73665000=10957000= - TL; 73670000=10957000= + N, 73660000=10957000= + T1, 73665000=10957000= + TL; 73670000=10957000= TL:= L; 73675000=10958000= EMIT(0); 73680000=10959000= EMITV(JUNK); 73685000=10959000= @@ -14069,11 +15548,9 @@ EXIT: 73495000 EMITO(LOR); 73710000=10960000= EMITV(JUNK); 73715000=10960000= EMITO(DUP); 73720000=10961000= - EMITO(ADD); 73725000=10961000= - COMMENT WE HAVE GENERATED TEST 73730000=10961000= + EMITO(ADD); COMMENT WE HAVE GENERATED TEST 73725000=10961000= AND PREPARATION FOR SWITCH-JUMP; 73735000=10962000= - GOTOG:= FALSE; 73740000=10963000= - COMMENT IF WE COMPILE JUMP OUT WE KNOW; 73745000=10963000= + GOTOG:= FALSE; COMMENT IF WE COMPILE JUMP OUT WE KNOW; 73740000=10963000= IF BEFORE THEN 73750000=10964000= BEGIN 73755000=10964000= STEPIT; 73760000=10964000= @@ -14093,8 +15570,7 @@ LX: IF STEPI = LABELID AND ELBAT[I].LVL = LEVEL THEN 73775000 L:= BUMPL; 73830000=10971000= N:= N-1; 73835000=10971000= FOR K:= 0 STEP 1 UNTIL N DO 73840000=10973000= - BEGIN 73845000=10973000= - COMMENT SAVE LINKS TO LABELS IN EDOC; 73850000=10973000= + BEGIN COMMENT SAVE LINKS TO LABELS IN EDOC; 73845000=10973000= EMIT((GT1:= INFO[0, K]).[12:1]); 73855000=10974000= EMIT(GT1) 73860000=10975000= END; 73865000=10975000= @@ -14108,8 +15584,7 @@ LX: IF STEPI = LABELID AND ELBAT[I].LVL = LEVEL THEN 73775000 PUT(TAKE(LASTINFO) & (PD:= PROGDESCBLDR(ADES, TL, PD))[31:10:11] 73905000=10978600= , LASTINFO); % GET PRT LOC AND SAVE 73910000=10978600= FOR K:= 0 STEP 1 UNTIL N DO 73915000=10980000= - BEGIN 73920000=10980000= - COMMENT EMIT CODE FOR SIMPLE LABELS SEEN; 73925000=10980000= + BEGIN COMMENT EMIT CODE FOR SIMPLE LABELS SEEN; 73920000=10980000= ADJUST; 73930000=10981000= T1:= L; 73935000=10981000= EMITL(GNAT(GT1:= INFO[0, K])); 73940000=10982000= @@ -14416,7 +15891,7 @@ EXIT: 75370000 MACROID:= TRUE; 75445000=12107000= P:= GIT(FIXDEFINEINFO:= T); 75450000=12108000= STOPDEFINE:= TRUE; 75455000=12111000= - FL:= TABLE(NXTELBT); 75460000=12112000= + EL:= TABLE(NXTELBT); 75460000=12112000= NXTELBT:= NXTELBT-1; 75465000=12113000= IF EL ^= LEFTPAREN AND EL ^= LFTBRKET THEN 75470000=12114000= FLAG(175) % [ OR ( EXPECTED. 75475000=12115000= @@ -14454,31 +15929,34 @@ COMMENT DEFINEPARAM GENERATES EVERYTHING (EXCEPT THE ELBAT 75580000 INTEGER 75635000=12153000= J; 75640000=12153000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%75642000 - STREAM PROCEDURE MAKEPARAM(INF, ACC, C, Q, N); 75645000=12154000= + PROCEDURE MAKEPARAM(INF, IX, ACC, AX, C, Q, N); 75645000=12154000= VALUE 75650000=12154000= - C, 75655000=12154000= - Q, 75660000=12154000= - N; 75665000=12154000= + IX, AX, C, Q, N; 75655000=12154000= + ARRAY 75655100 + INF, ACC[0]; 75655200 + REAL 75655300 + IX, AX, C, Q, N; 75655400 BEGIN 75670000=12155000= - DI:= ACC; 75675000=12156000= - DI:= DI+3; 75680000=12156000= - SI:= INF; 75685000=12157000= - SI:= SI+3; 75690000=12157000= - DS:= C CHR; 75695000=12157000= - SI:= LOC N; 75700000=12158000= - SI:= SI+7; 75705000=12158000= - DS:= 1 CHR; 75710000=12158000= - SI:= LOC Q; 75715000=12159000= - SI:= SI+6; 75720000=12159000= - DS:= 1 CHR; 75725000=12159000= - DI:= ACC; 75730000=12160000= - DI:= DI+2; 75735000=12160000= - DS:= 1 CHR; 75740000=12160000= + STREAMLOCALS; 75670100 + STREAMSETDI(ACC, AX); 75675000=12156000= + STREAMSKIPDI(+3); 75680000=12156000= + STREAMSETSI(INF, IX); 75685000=12157000= + STREAMSKIPSI(+3); 75690000=12157000= + STREAMTRANSFERCHR(C); 75695000=12157000= + STREAMSETLOCSI(N); 75700000=12158000= + STREAMSKIPSI(+7); 75705000=12158000= + STREAMTRANSFERCHR(1); 75710000=12158000= + STREAMSETLOCSI(Q); 75715000=12159000= + STREAMSKIPSI(+6); 75720000=12159000= + STREAMTRANSFERCHR(1); 75725000=12159000= + STREAMSETDI(ACC, AX); 75730000=12160000= + STREAMSKIPDI(+2); 75735000=12160000= + STREAMTRANSFERCHR(1); 75740000=12160000= END MAKEPARAM; 75745000=12161000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%75746000 ACCUM[1]:= 0; 75750000=12161500= - MAKEPARAM(INFO[DINFO.LINKR, DINFO.LINKC], ACCUM[1], 75755000=12163000= - J:= INFO[DINFO.LINKR, DINFO.LINKC].[35:6], 7770+J, N); 75760000=12163000= + MAKEPARAM(INFO[DINFO.LINKR,*], DINFO.LINKC, ACCUM, 1, 75755000=12163000= + J:= INFO[DINFO.LINKR, DINFO.LINKC].[35:6], 770+J, N); 75760000=12163000= SCRAM:= ACCUM[1] MOD 125; 75765000=12164000= COUNT:= J+2; 75770000=12165000= END DEFINEPARAM; 75775000=12166000= @@ -14492,78 +15970,85 @@ COMMENT DEFINEPARAM GENERATES EVERYTHING (EXCEPT THE ELBAT 75580000 IOT; 75815000=13003000= BEGIN 75820000=13004000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%75822000 - STREAM PROCEDURE GET7(ACCUM, RESULT); 75825000=13005000= + PROCEDURE GET7(ACCUM, AX, RESULT); 75825000=13005000= + VALUE 75825100 + AX; 75825200 + ARRAY 75825300 + ACCUM[0]; 75825400 + REAL 75825500 + AX, RESULT; 75825600 BEGIN 75830000=13006000= - LOCAL T, T1; 75835000=13007000= + STREAMLOCALS; 75830100 + REAL 75835000=13007000= + T, 75835100 + T1; 75835200 LABEL 75840000=13007000= EXIT; 75845000=13007000= - SI:= ACCUM; 75850000=13008000= - SI:= SI+2; 75855000=13008000= - DI:= LOC T; 75860000=13008000= - DI:= DI+7; 75865000=13008000= - DS:= CHR; 75870000=13009000= - T1:= SI; 75875000=13009000= - SI:= LOC T; 75880000=13009000= - SI:= SI+7; 75885000=13009000= - DI:= RESULT; 75890000=13010000= - DS:= 8 LIT 6"0 "; 75895000=13010000= - DI:= DI-7; 75900000=13010000= - IF SC >= 6"0" THEN 75905000=13012000= - IF SC < 6"8" THEN 75910000=13013000= + 75845100 + STREAMSETSI(ACCUM, AX); 75850000=13008000= + STREAMSKIPSI(+2); 75855000=13008000= + STREAMSETLOCDI(T); 75860000=13008000= + STREAMSKIPDI(+7); 75865000=13008000= + STREAMTRANSFERCHR(1); 75870000=13009000= + T:= STREAMTEMPD[0]; 75870100 + T1:= STREAMGETSI; 75875000=13009000= + STREAMSETLOCSI(T); 75880000=13009000= + STREAMSKIPSI(+7); 75885000=13009000= + STREAMSETLOCDI(RESULT); 75890000=13010000= + STREAMTRANSFERLIT(8, 6"0 "); 75895000=13010000= + STREAMSKIPDI(-7); 75900000=13010000= + IF STREAMSCGEQ(6"0") THEN 75905000=13012000= + IF STREAMSCLSS(6"8") THEN 75910000=13013000= BEGIN 75915000=13014000= - SI:= T1; 75920000=13015000= - DS:= T CHR; 75925000=13015000= + STREAMSETSI(ACCUM, T1); 75920000=13015000= + STREAMTRANSFERCHR(T); 75925000=13015000= GO TO EXIT 75930000=13016000= END; 75935000=13016000= - SI:= T1; 75940000=13017000= - DS:= 7 CHR; 75945000=13017000= + 75939000 + STREAMSETSI(ACCUM, T1); 75940000=13017000= + STREAMTRANSFERCHR(7); 75945000=13017000= EXIT: 75950000=13019000= + RESULT:= STREAMTEMPD[0]; 75950100 END; 75955000=13019000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%75956000 - STREAM PROCEDURE ENTERID 75960000=13020000= - (IDLOC, FILENO, TYPE, MULFID, FILID, FILID1, N); 75965000=13020000= + PROCEDURE ENTERID 75960000=13020000= + (IDARRAY, IDLOC, FILENO, TYPE, MULFID, FILID, INFO, FILID1, N); 75965000=13020000= VALUE 75970000=13021000= - FILENO, 75975000=13021000= - TYPE, 75980000=13021000= - MULFID, 75985000=13021000= - FILID, 75990000=13021000= - N; 75995000=13021000= + FILENO, TYPE, MULFID, FILID, FILID1, N; 75975000=13021000= + ARRAY 75975100 + IDARRAY, INFO[0]; 75975200 + REAL 75975300 + IDLOC, FILENO, TYPE, MULFID, FILID, FILID1, N; 75975400 BEGIN 76000000=13022000= - DI:= IDLOC; 76005000=13023000= - DI:= DI+5; 76010000=13023000= - DI:= DC; 76015000=13023000= - SI:= LOC FILENO; 76020000=13024000= - SI:= SI+6; 76025000=13024000= - DS:= 2 CHR; 76030000=13025000= - SI:= LOC TYPE; 76035000=13025000= - SI:= SI+7; 76040000=13026000= - DS:= CHR; 76045000=13026000= - SI:= LOC MULFID; 76050000=13027000= - SI+SI+1; 76055000=13027000= - DS:= 7 CHR; 76060000=13028000= - SI:= LOC FILID; 76065000=13029000= - SI:= SI+1; 76070000=13029000= - DS:= 7 CHR; 76075000=13030000= - SI:= LOC N; 76080000=13031000= - SI:= SI+7; 76085000=13031000= - DS:= CHR; 76090000=13032000= - SI:= FILID1; 76095000=13033000= - SI:= SI+3; 76100000=13033000= - DS:= N CHR; 76105000=13034000= - N:= DI; 76110000=13034000= - DI:= IDLOC; 76115000=13035000= - DI:= DI+5; 76120000=13035000= - SI:= LOC N; 76125000=13036000= - SI:= SI+5; 76130000=13036000= - DS:= 3 CHR 76135000=13038000= + STREAMLOCALS; 76000100 + STREAMSETDI(IDARRAY, IDLOC); 76005000=13023000= + STREAMSETLOCSI(FILENO); 76020000=13024000= + STREAMSKIPSI(+6); 76025000=13024000= + STREAMTRANSFERCHR(2); 76030000=13025000= + STREAMSETLOCSI(TYPE); 76035000=13025000= + STREAMSKIPSI(+7); 76040000=13026000= + STREAMTRANSFERCHR(1); 76045000=13026000= + STREAMSETLOCSI(MULFID); 76050000=13027000= + STREAMSKIPSI(+1); 76055000=13027000= + STREAMTRANSFERCHR(7); 76060000=13028000= + STREAMSETLOCSI(FILID); 76065000=13029000= + STREAMSKIPSI(+1); 76070000=13029000= + STREAMTRANSFERCHR(7); 76075000=13030000= + STREAMSETLOCSI(N); 76080000=13031000= + STREAMSKIPSI(+7); 76085000=13031000= + STREAMTRANSFERCHR(1); 76090000=13032000= + STREAMSETSI(INFO, FILID1); 76095000=13033000= + STREAMSKIPSI(+3); 76100000=13033000= + STREAMTRANSFERCHR(N); 76105000=13034000= + IDLOC:= STREAMGETDI; 76110000=13034000= END; 76140000=13038000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%76142000 REAL 76145000=13039000= MULFID, 76150000=13039000= - FILID, 76155000=13039000= - TYPE, 76160000=13039000= - M, 76165000=13039000= - K; 76170000=13039000= + FILID, 76155000=13039000= + TYPE, 76160000=13039000= + M, 76165000=13039000= + K; 76170000=13039000= DEFINE 76175000=13039400= CALL5 = EMITL(0); 76180000=13039400= EMITL(IOT); 76185000=13039400= @@ -14575,8 +16060,8 @@ COMMENT DEFINEPARAM GENERATES EVERYTHING (EXCEPT THE ELBAT 75580000 ACCUM1; 76215000=13039500= INTEGER 76220000=13039550= CURRENT, 76225000=13039550= - IOTEMP, 76230000=13039550= - IOTEMPO; 76235000=13039550= + IOTEMP, 76230000=13039550= + IOTEMPO; 76235000=13039550= LABEL 76240000=13040000= START; 76245000=13040000= JUMPCHKX; 76250000=13041000= @@ -14630,7 +16115,7 @@ COMMENT DEFINEPARAM GENERATES EVERYTHING (EXCEPT THE ELBAT 75580000 J:= K; 76490000=13080000= P2:= P3:= P4:= FALSE; 76495000=13080000= GTA1[0]:= 0; 76500000=13080000= - GET7(ACCUM[1], FILID); 76505000=13080000= + GET7(ACCUM, 1, FILID); 76505000=13080000= MULFID:= 0; 76510000=13081000= TYPE:= 2; 76515000=13081000= ENTER(FILEID); 76520000=13081000= @@ -14700,21 +16185,21 @@ COMMENT DEFINEPARAM GENERATES EVERYTHING (EXCEPT THE ELBAT 75580000 END; 76840000=13088130= IF ELCLASS = STRNGCON THEN 76845000=13089000= BEGIN 76850000=13090000= - GET7(ACCUM[1], G); 76855000=13091000= + GET7(ACCUM, 1, G); 76855000=13091000= IF STEPI = STRNGCON THEN 76860000=13093000= BEGIN 76865000=13094000= - GET7(ACCUM[1], FILID); 76870000=13095000= + GET7(ACCUM, 1, FILID); 76870000=13095000= STEPIT; 76875000=13096000= MULFID:= G 76880000=13098000= END 76885000=13100000= ELSE 76890000=13100000= FILID:= G; 76895000=13100000= END; 76900000=13101000= - IF MKABS(IDARRAY[127])-IDLOC.[14:15] < (26+KOUNT).[6:4] THEN 76905000=13101200= - FLAG(040) 76910000=13101200= + IF 127-IDLOC.[14:15] < (26+KOUNT).[6:4] THEN 76905000=13101200= + FLAG(040) % PPB SIZE EXCEEDED 76910000=13101200= ELSE 76915000=13101200= - ENTERID(IDLOC, FILENO, TYPE, MULFID, FILID, 76920000=13103000= - INFO[(LASTINFO+1).LINKR, (LASTINFO+1).LINKC], KOUNT); 76925000=13103000= + ENTERID(IDARRAY, IDLOC, FILENO, TYPE, MULFID, FILID, 76920000=13103000= + INFO[(LASTINFO+1).LINKR,*], (LASTINFO+1).LINKC, KOUNT); 76925000=13103000= IF ELCLASS ^= LEFTPAREN THEN 76930000=13105000= FLAG(26); 76935000=13105000= ARRAYFLAG:= BOOLEAN(3); 76940000=13106000= @@ -14974,7 +16459,7 @@ OVER: 77600000 BEGIN 78210000=13280000= GT1:= 161; 78215000=13280000= RECOV: 78220000=13281000= - MOVE(9, INFO[POINTAH.LINKR, POINTAH.LINKC], ACCUM); 78225000=13281000= + MOVE(9, INFO[POINTAH.LINKR,*], POINTAH.LINKC, ACCUM, 0); 78225000=13281000= Q:= ACCUM[1]; 78230000=13282000= FLAG(GT1); 78235000=13282000= ERRORTOG:= TRUE 78240000=13282000= @@ -14983,7 +16468,7 @@ OVER: 77600000 XREFDUMP(POINTAH); % DUMP XREF INFO 78255000=13283500= GT2:= TAKE(POINTAH+1); 78260000=13284000= GT3:= GT2.PURPT; 78265000=13285000= - STACKHEAD(0 & GT2[35:35:36]) MOD 125]:= TAKE(POINTAH).LINK; 78270000=13286000= + STACKHEAD[(0 & GT2[35:35:36]) MOD 125]:= TAKE(POINTAH).LINK; 78270000=13286000= POINTAH:= POINTAH-GT3 78275000=13288000= END 78280000=13289000= END; 78285000=13289000= @@ -15017,10 +16502,10 @@ COMMENT 78320000 ACCUM[0].INCR:= WORDCOUNT; 78425000=13307000= ACCUM[0].LINK:= STACKHEAD[SCRAM]; 78430000=13308000= STACKHEAD[SCRAM]:= NEXTINFO; 78435000=13308000= - ACCUM[1].PURPT:= NEXTINFO:= LASTINFO; 78440000=13309000= - MOVE(WORDCOUNT, ACCUM, INFO[NEXTINFO.LINKR, NEXTINFO.LINKC]); 78445000=13310000= + ACCUM[1].PURPT:= NEXTINFO-LASTINFO; 78440000=13309000= + MOVE(WORDCOUNT, ACCUM, 0, INFO[NEXTINFO.LINKR,*], NEXTINFO.LINKC); 78445000=13310000= IF XREF THEN % MAKE DECLARATION REFERENCE 78450000=13310050= - IF(ACCUM[0].CLASS ^= DEFINEID OR NOT BOOLEAN(ACCUM[0].FORMAL)) 78455000=13310080= + IF(ACCUM[0].CLASS ^= DEFINEDID OR NOT BOOLEAN(ACCUM[0].FORMAL)) 78455000=13310080= THEN % NOT DEFINE PARAMETER 78460000=13310080= BEGIN 78465000=13310100= XREFINFO[NEXTINFO]:= 78470000=13310300= @@ -15057,7 +16542,7 @@ COMMENT 78620000 ENTRY ASSUMES THAT I IS POINTING AT AN IDENTIFIER WHICH 78625000=13318000= IS BEING DECLARED AND MAKES UP THE ELBAT ENTRY FOR IT 78630000=13319000= ACCORD TO TYPE .IF THE ENTRY IS AN ARRAY AND NOT 78635000=13320000= - A SPECIFICATION THEN A DESCRIPTOR IS PALCED IN THE STACK 78640000=13321000= + A SPECIFICATION THEN A DESCRIPTOR IS PLACED IN THE STACK 78640000=13321000= FOR THE UPCOMING COMMUNICATE TO GET STORAGE FOR THE ARRAY(S) ;78645000=13322000= BEGIN 78650000=13323000= BOOLEAN 78655000=13323010= @@ -15274,7 +16759,6 @@ COMMENT 79160000 P3:= TRUE; 79710000=13461000= IF SPECTOG THEN 79715000=13462000= FLAG(13); 79720000=13462000= -% IF REMOTOG THEN FLAG(508); % NOT ALLOWED IN XALGOL ON TSS. 79725000=13463000= END 79730000=13466000= ELSE 79735000=13466000= IF T1 = AUXMEMV THEN 79740000=13466000= @@ -15305,7 +16789,7 @@ TWO: 79830000 T1:= 0; 79865000=13478000= IF SPECTOG THEN 79870000=13478000= GO TO BETA2; 79875000=13478000= - APROGS:= L; 79880000=13479000= + ARPROGS:= L; 79880000=13479000= IF TABLE(I+1) = COLON AND TABLE(I) = LITNO THEN 79885000=13480000= BEGIN 79890000=13481000= LLITOG:= TRUE; 79895000=13482000= @@ -15344,7 +16828,7 @@ TWO: 79830000 END; 80060000=13510000= IF ELCLASS:= TABLE(I:= I+2) = LITNO THEN 80065000=13511000= BEGIN 80070000=13512000= - IF T:= TABLE(I:= I+1) = COMMA OR T:= RTBRKET THEN 80075000=13515000= + IF T:= TABLE(I:= I+1) = COMMA OR T = RTBRKET THEN 80075000=13515000= BEGIN 80080000=13516000= EMITL(T4:= ELBAT[I-1].ADDRESS); 80085000=13517000= ULITOG:= TRUE; 80090000=13518000= @@ -15356,7 +16840,7 @@ TWO: 79830000 ULITOG:= FALSE; 80120000=13523000= AEXP; 80125000=13524000= EMITL(JUNK); 80130000=13525000= - EMITL(ISN); 80135000=13526000= + EMITO(ISN); 80135000=13526000= CSZ: 80140000=13527000= IF LLITOG AND ULITOG THEN 80145000=13527000= BEGIN 80150000=13528000= @@ -15457,7 +16941,7 @@ START: 80570000 NEXTINFO:= NEXTINFO+1 80625000=13595000= END; 80630000=13595000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%80635000=13595000= - PROCEDURE JUMPCHX; 80640000=13596000= + PROCEDURE JUMPCHKX; 80640000=13596000= 80645000=13597000= COMMENT THIS PROCEDURE IS CALLED AT THE START OF ANY EXECUTABLE CODE 80650000=13597000= WHICH THE BLOCK MIGHT EMIT.IT DETERMINES WHETHER ANY JUMPS 80655000=13598000= @@ -15503,7 +16987,7 @@ COMMENT JUMPCHKNX DETERMINES WHETHER ANY EXECUTABLE CODE HAS BEEN 80760000 IF SINGLTOG THEN 80855000=13633100= WRITE(LINE, PRINTSEGNO, SGAVL) 80860000=13633200= ELSE 80865000=13633200= - WRITE(LINE[DBL], PRINTSEGNO, SGAVL); 80870000=13633200= + WRITE(LINE[SPACE 2], PRINTSEGNO, SGAVL); 80870000=13633200= END SEGMENTSTART; 80875000=13633300= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%80880000=13633300= PROCEDURE SEGMENT(SIZE, NO, NOO); 80885000=13634000= @@ -15540,7 +17024,7 @@ COMMENT JUMPCHKNX DETERMINES WHETHER ANY EXECUTABLE CODE HAS BEEN 80760000 END; 81040000=13651000= LDICT[NO.[9:3], NO.[6:7]]:= 81045000=13653000= IF BUILDLINE THEN 81050000=13653000= - MOVENADBLOCK(ENIL, ENILPTR+1, 4) & SIZE[29:14:15] 81055000=13655000= + MOVEANDBLOCK(ENIL, ENILPTR+1, 4) & SIZE[29:14:15] 81055000=13655000= ELSE 81060000=13655000= -1; 81065000=13655000= END OF SEGMENT; 81070000=13656000= @@ -15865,12 +17349,12 @@ COMMENT SOP IS TRUE IF THE BLOCK WAS CALLED BY ITSELF THROUGH THE 82370000 LOCBEGIN = PRTI #, 82665000=14023000= LBP = [11:12] #, 82670000=14023100= SPACEITDOWN = BEGIN 82675000=14023100= - WRITE(LINE[DBL]); 82680000=14023100= - WRITE(LINE[DBL]) 82685000=14023100= + WRITE(LINE[SPACE 2]); 82680000=14023100= + WRITE(LINE[SPACE 2]) 82685000=14023100= END #; 82690000=14023100= ARRAY 82695000=14024000= TEDOC[0:7, 0:127], 82700000=14024000= - LOCALS[0:NLOCS]; 82705000=14024000= + LOCALS[0:NLOCS]; 82705000=14024000= ARRAY 82710000=14024100= TENIL[0:7, 0:127]; 82715000=14024100= INTEGER 82720000=14024200= @@ -15884,22 +17368,22 @@ COMMENT SOP IS TRUE IF THE BLOCK WAS CALLED BY ITSELF THROUGH THE 82370000 COMMENT PREVIOUS FORWARD DECLARATION INDICATOR; 82760000=14025100= INTEGER 82765000=14026000= PINFOO, 82770000=14026000= - BLKAD; 82775000=14026000= + BLKAD; 82775000=14026000= COMMENT LOCAL TO BLOCK TO SAVE WHERE A PROCEDURE IS EMTERED 82780000=14027000= IN INFO; 82785000=14028000= REAL 82790000=14029000= MAXSTACKO, 82795000=14029000= - LASTINFOT, 82800000=14029000= - RELAD, 82805000=14029000= - LO, 82810000=14029000= - TSUBLEVEL, 82815000=14029000= - STACKCTRO; 82820000=14029000= + LASTINFOT, 82800000=14029000= + RELAD, 82805000=14029000= + LO, 82810000=14029000= + TSUBLEVEL, 82815000=14029000= + STACKCTRO; 82820000=14029000= INTEGER 82825000=14030000= - SNGOO, 82830000=14030000= - LOD, 82835000=14030000= - SAVELO, 82840000=14030000= - PRTIO, 82845000=14030000= - NINFOO; 82850000=14030000= + SGNOO, 82830000=14030000= + LOLD, 82835000=14030000= + SAVELO, 82840000=14030000= + PRTIO, 82845000=14030000= + NINFOO; 82850000=14030000= INTEGER 82855000=14031000= NCIIO; 82860000=14031000= INTEGER 82865000=14032000= @@ -15910,11 +17394,11 @@ COMMENT SOP IS TRUE IF THE BLOCK WAS CALLED BY ITSELF THROUGH THE 82370000 FIRSTXO; 82890000=14033000= BOOLEAN 82895000=14034000= FUNCTOGO, 82900000=14034000= - AJUMPO, 82905000=14034000= - FAULTOGO; 82910000=14034000= + AJUMPO, 82905000=14034000= + FAULTOGO; 82910000=14034000= BOOLEAN 82915000=14034100= SAVEPRTOGO, 82920000=14034100= - NEXTSAVE; 82925000=14034100= + NEXTSAVE; 82925000=14034100= BEGINCTR:= BEGINCTR+1; 82930000=14035000= IF SOP THEN 82935000=14036000= BLKAD:= PROADO 82940000=14044000= @@ -15933,7 +17417,7 @@ COMMENT SOP IS TRUE IF THE BLOCK WAS CALLED BY ITSELF THROUGH THE 82370000 ENILPTR:= 0; 83005000=14049200= ENILSPOT:= 0 & CARDNUMBER[37:27:28]; 83010000=14049300= ENILPTR:= 1; 83015000=14049300= - MOVE(NLOCS, LOCBEGIN, LOCALS); 83020000=14050000= + %% MOVE(NLOCS, LOCBEGIN, 0, LOCALS, 0); %% WON'T WORK AND NOT USED! 83020000=14050000= FIRSTXO:= FIRSTX; 83025000=14051000= FIRSTX:= 4095; 83030000=14052000= IF LEVEL < 31 THEN 83035000=14053000= @@ -16220,35 +17704,35 @@ SWITCHDEC: 84285000 ENTRY(SWITCHID); 84440000=14217000= STOPGSP:= STOPENTRY:= FALSE; 84445000=14217000= IF SPECTOG THEN 84450000=14217000= - GO TO START: 84455000=14219000= - IF ELCLASS = ASSIGNOP THEN 84460000=14220000= - BEGIN 84465000=14221000= - JUMPCHKNX; 84470000=14222000= - PUTNBUMP(L); 84475000=14222000= - G:= L; 84480000=14222000= - IF FORMALF:= SWITCHGEN(TB1, GT1) THEN 84485000=14224000= - BEGIN 84490000=14225000= - JUMPCHKX; 84495000=14227000= - STUFFF(GT1); 84500000=14228000= - IF MODE > 0 THEN 84505000=14230000= - IF TB1 THEN 84510000=14231000= - GT1:= GT2 84515000=14231000= - ELSE 84520000=14231000= - GT1:= GETSPACE(FALSE, LASTINFO+1); % SWITCH. 84525000=14232000= - EMITSTORE(GT1, STD) 84530000=14234000= - END; 84535000=14234000= - END 84540000=14237000= - ELSE 84545000=14237000= - BEGIN 84550000=14237000= - IF ELCLASS ^= FORWARDV THEN 84555000=14238000= - FLAG(33); 84560000=14238000= - PUT(-TAKE(LASTINFO+1), LASTINFO+1); 84565000=14239000= - PUTNBUMP(GT1:= GETSPACE(TRUE, LASTINFO+1)); %SWITCH. 84570000=14240000= - IF MODE > 0 THEN 84575000=14241000= - GT1:= GETSPACE(FALSE, -1); %TEMP. STOR. 84580000=14241000= - STEPIT; 84585000=14242000= - FORMALF:= TRUE 84590000=14244000= - END; 84595000=14244000= + GO TO START; 84455000=14219000= + IF ELCLASS = ASSIGNOP THEN 84460000=14220000= + BEGIN 84465000=14221000= + JUMPCHKNX; 84470000=14222000= + PUTNBUMP(L); 84475000=14222000= + G:= L; 84480000=14222000= + IF FORMALF:= SWITCHGEN(TB1, GT1) THEN 84485000=14224000= + BEGIN 84490000=14225000= + JUMPCHKX; 84495000=14227000= + STUFFF(GT1); 84500000=14228000= + IF MODE > 0 THEN 84505000=14230000= + IF TB1 THEN 84510000=14231000= + GT1:= GT2 84515000=14231000= + ELSE 84520000=14231000= + GT1:= GETSPACE(FALSE, LASTINFO+1); % SWITCH. 84525000=14232000= + EMITSTORE(GT1, STD) 84530000=14234000= + END; 84535000=14234000= + END 84540000=14237000= + ELSE 84545000=14237000= + BEGIN 84550000=14237000= + IF ELCLASS ^= FORWARDV THEN 84555000=14238000= + FLAG(33); 84560000=14238000= + PUT(-TAKE(LASTINFO+1), LASTINFO+1); 84565000=14239000= + PUTNBUMP(GT1:= GETSPACE(TRUE, LASTINFO+1)); %SWITCH. 84570000=14240000= + IF MODE > 0 THEN 84575000=14241000= + GT1:= GETSPACE(FALSE, -1); %TEMP. STOR. 84580000=14241000= + STEPIT; 84585000=14242000= + FORMALF:= TRUE 84590000=14244000= + END; 84595000=14244000= PUT(TAKE(LASTINFO) & REAL(FORMALF)[38:0:1] & GT1[31:10:11], 84600000=14245000= LASTINFO); 84605000=14245000= IF TB1 THEN 84610000=14246000= @@ -16275,7 +17759,7 @@ DEFINEDEC: 84650000 DO BEGIN 84715000=14257000= STOPDEFINE:= TRUE; 84720000=14258000= STEPIT; 84725000=14259000= - MOVE(9, ACCUM[1], GTA1); 84730000=14259000= + MOVE(9, ACCUM, 1, GTA1, 0); 84730000=14259000= K:= COUNT+1; 84735000=14259010= J:= GTA1[0]; 84740000=14259010= ENTRY(DEFINEDID); 84745000=14259010= @@ -16297,7 +17781,7 @@ DEFINEDEC: 84650000 ERR(172); 84825000=14259075= GO START 84830000=14259075= END; 84835000=14259075= - MOVE(9, ACCUM[1], DEFINFO[(J-1)*10]); 84840000=14259080= + MOVE(9, ACCUM, 1, DEFINFO, (J-1)*10); 84840000=14259080= DEFINEPARAM(DINFO+1, J); 84845000=14259085= ACCUM[0]:= 0 & DEFINEDID CLASS & 1 FORMAL; 84850000=14259090= LINKA:= LASTINFO; 84855000=14259094= @@ -16426,7 +17910,8 @@ PROCEDUREDEC: 85360000 TYPEV:= STRPROCID 85470000=14282000= ELSE 85475000=14282000= BEGIN 85480000=14283000= - IF TYPEV:= PROCID+G > INSTRPROCID OR TYPEV < BOOSTRPROCID THEN85485000=14286000= + IF TYPEV:= PROCID+G > INTSTRPROCID OR 85485000=14286000= + TYPEV < BOOSTRPROCID THEN 85485100 FLAG(004); 85490000=14286000= IF NOT SPECTOG THEN 85495000=14287000= FUNCTOG:= TRUE; 85500000=14288000= @@ -16443,7 +17928,7 @@ PROCEDUREDEC: 85360000 TYPEV:= PROCID 85555000=14294100= END 85560000=14295000= ELSE 85565000=14295000= - IF TYPEV < BOOPROCID OR TYPEV > INTRPROCID THEN 85570000=14295000= + IF TYPEV < BOOPROCID OR TYPEV > INTPROCID THEN 85570000=14295000= FLAG(005) 85575000=14295100= ELSE 85580000=14295100= BEGIN 85585000=14295100= @@ -16505,7 +17990,7 @@ COMMENT CHECK TO SEE IF DECLARED FORWARD PREVIOUSLY ;85665000 STREAMWORDS; 85865000=14324000= IF ELCLASS = SEMICOLON THEN 85870000=14325000= GO TO START1; 85875000=14325000= - IF ECLASS ^= LEFTPAREN THEN 85880000=14326000= + IF ELCLASS ^= LEFTPAREN THEN 85880000=14326000= FLAG(007); 85885000=14326000= 85890000=14327000= COMMENT: THE FOLLOWING 8 STATEMENTS FOOL THE SCANNER AND BLOCK,PUTTING 85895000=14327000= @@ -16520,9 +18005,7 @@ COMMENT: THE FOLLOWING 8 STATEMENTS FOOL THE SCANNER AND BLOCK,PUTTING 85895000 IF FWDTOG THEN 85940000=14333100= BEGIN 85945000=14333100= IF GT1:= TAKE(MARK).[7:8] ^= PJ THEN % 85950000=14333100= - FLAG(48); 85955000=14333200= - COMMENT WRONG NUMBER OF PARAMETERS; 85960000=14333200= - 85965000=14333300= + FLAG(48); COMMENT WRONG NUMBER OF PARAMETERS; 85955000=14333200= COMMENT SO THAT WE DONT CLOBBER INFO; 85970000=14333300= END 85975000=14334000= ELSE 85980000=14334000= @@ -16614,7 +18097,7 @@ HF: BEGIN 86270000 END 86410000=14407000= ELSE 86415000=14407000= BEGIN 86420000=14407000= - I+I+1; 86425000=14408000= + I:= I+1; 86425000=14408000= ENTRY(LOCLID) 86430000=14410000= END 86435000=14411000= END; 86440000=14411000= @@ -16657,7 +18140,7 @@ HF: BEGIN 86270000 IF (GT3:= TAKE(GIT(J))).LASTGT ^= 0 AND GT3.LOC = 0 86625000=14438000= THEN 86630000=14438000= BEGIN 86635000=14439000= - MOVE(9, INFO[0, J], ACCUM[0]); 86640000=14440000= + MOVE(9, INFO[0,*], J, ACCUM, 0); 86640000=14440000= Q:= ACCUM[1]; 86645000=14441000= FLAG(267); 86650000=14442000= ERRORTOG:= TRUE; 86655000=14443000= @@ -16766,7 +18249,7 @@ CALLSTATEMENT: 87135000 II, 87170000=14507030= SSCRAM, 87175000=14507030= SCOUNT; 87180000=14507030= - MOVE(10, ACCUM, INFO[31, 240]); 87185000=14507040= + MOVE(10, ACCUM, 0, INFO[31,*], 240); 87185000=14507040= II:= I; 87190000=14507050= SSCRAM:= SCRAM; 87195000=14507050= SCOUNT:= COUNT; 87200000=14507050= @@ -16776,7 +18259,7 @@ CALLSTATEMENT: 87135000 BEGIN 87220000=14507090= ELBAT[76]:= INFO[0, I] & I[12:12:13]; 87225000=14507095= COUNT:= INFO[0, I+1].[35:6]; 87230000=14507100= - MOVE(COUNT, INFO[0, I], ACCUM); 87235000=14507105= + MOVE(COUNT, INFO[0,*], I, ACCUM, 0); 87235000=14507105= I:= 76; 87240000=14507110= SCATTERELBAT; 87245000=14507110= FORMALF:= TRUE; 87250000=14507120= @@ -16787,7 +18270,7 @@ CALLSTATEMENT: 87135000 I:= II; 87275000=14507160= SCRAM:= SSCRAM; 87280000=14507160= COUNT:= SCOUNT; 87285000=14507160= - MOVE(10, INFO[31, 240], ACCUM); 87290000=14507170= + MOVE(10, INFO[31,*], 240, ACCUM, 0); 87290000=14507170= BUP:= PJ; 87295000=14507180= FLAG(12); 87300000=14507180= SPECTOG:= TRUE; 87305000=14507180= @@ -16883,7 +18366,7 @@ CALLSTATEMENT: 87135000 MOVECODE(TENIL, ENIL); 87755000=14594000= MOVECODE(TEDOC, EDOC); 87760000=14595000= L:= LOLD; 87765000=14595000= - DOUBLE(SGNO, SGNOO, := , SGNOO, SGNO); 87770000=14596000= + SGNO :=: SGNOO; % ORIGINALLY A CLEVER USE OF DOUBLE 87770000=14596000= IF NOT SOP AND LEVEL ^= 1 THEN 87775000=14598000= BEGIN 87780000=14599000= ADJUST; 87785000=14600000= @@ -16971,8 +18454,8 @@ CALLSTATEMENT: 87135000 EMITV(IF BOOLEAN(L.[1:1]) THEN CPLUS2 ELSE CPLUS1); 88195000=15033000= LTEMP:= BUMPL; 88200000=15033000= EMITWORD(GETALPHA( 88205000=15037000= - INFO[(INDEX:= ELBATWORD.LINK+1).LINKR, INDEX.LINKC], IF SIZEALPHA 88210000=15037000= - := TAKE(INDEX).ALPHASIZE > 7 THEN 7 ELSE SIZEALPHA)); 88215000=15037000= + INFO[(INDEX:= ELBATWORD.LINK+1).LINKR,*], INDEX.LINKC, 88210000=15037000= + IF SIZEALPHA:= TAKE(INDEX).ALPHASIZE > 7 THEN 7 ELSE SIZEALPHA)); 88215000=15037000= EMITB(BFW, LTEMP, L); 88220000=15037000= END PASSALPHA; 88225000=15038000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%88230000=15038000= @@ -17040,7 +18523,8 @@ COMMENT 211 VARIABLE-FUNCTION IDENTIFIER USED OUTSIDE OF ITS SCOPE*; 88530000 END 88540000=15085000= ELSE 88545000=15085000= CHECKER(TALL); 88550000=15085000= - REMEMBERSEQNO:= CARDNUMBER IF TALL.CLASS <= INTID THEN 88555000=15086000= + REMEMBERSEQNO:= CARDNUMBER; 88555000=15085100= + IF TALL.CLASS <= INTID THEN 88558000=15086000= BEGIN 88560000=15087000= LABEL 88565000=15088000= L1, 88570000=15088000= @@ -17291,10 +18775,10 @@ COMMENT **** MONITOR FUNCTION M1 GOES HERE ; 89760000 COMMENT THIS IS SPECIAL MONITORED; 89795000=15243000= TESTVARB:= (NODIM:= TAKE(INC:= GIT(TALL)).NODIMPART)+INC; 89800000=15245000= DO 89805000=15246000= - IF BOOLEAN(LWRBND:= TAKE(INC:= INC+1)). OPBIT THEN 89810000=15248000= - EMITL(LWRBND, SPMONADR) 89815000=15249000= + IF BOOLEAN(LWRBND:= TAKE(INC:= INC+1)).OPBIT THEN 89810000=15248000= + EMITL(LWRBND.SPMONADR) 89815000=15249000= ELSE 89820000=15249000= - EMITV(LWRBND, SPMONADR) 89825000=15250000= + EMITV(LWRBND.SPMONADR) 89825000=15250000= UNTIL INC >= TESTVARB 89830000=15251000= END; 89835000=15251000= END; 89840000=15252000= @@ -17322,7 +18806,7 @@ COMMENT **** MONITOR FUNCTION M1 GOES HERE ; 89760000 COMMENT 203 VARIABLE- THE NUMBER OF SUBSCRIPTS USED IN A ROW * 89950000=15257000= ROW DESIGNATOR DOES NOT MATCH THE ARRAY * 89955000=15258000= DECLARATION. *;89960000=15259000= - IF STEPI = RTBRKET THEN 89965000=15260000= + IF STEPI ^= RTBRKET THEN 89965000=15260000= BEGIN 89970000=15261000= ERR(204); 89975000=15261000= GO EXIT 89980000=15261000= @@ -17366,7 +18850,7 @@ COMMENT ***** MONITOR FUNCTION M2 GOES HERE ; 90085000 STEPIT; 90170000=15274000= GO TO EXIT; 90175000=15275000= END OF ROW DESIGNATOR PORTION; 90180000=15276000= - AEXP: 90185000=15278000= + AEXP; 90185000=15278000= COMMENT ***** MONITOR FUNCTION M3 GOES HERE ; 90190000=15278000= 90195000=15279000= IF TALL < 0 THEN 90200000=15279000= @@ -17577,7 +19061,7 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 COMMENT 7.5.3.8 TEST BIT ; 91225000=16015000= JFC = 37 #, 91230000=16016000= COMMENT 7.5.5.3 JUMP FORWARD CONDITIONAL ; 91235000=16016000= - SFD = 06 #, 91240000=16017000= + SED = 06 #, 91240000=16017000= COMMENT 7.5.7.8 SET DESTINATION ADDRESS ; 91245000=16017000= RSA = 43 #, 91250000=16018000= COMMENT 7.5.7.4 RECALL SOURCE ADDRESS ; 91255000=16018000= @@ -17862,7 +19346,7 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 GO EXIT 92650000=16208000= END; 92655000=16208000= IF STEPI = DCV THEN 92660000=16209000= - EMITC(ADDR, ELBAT[I-1], COMPARECODE) 92665000=16210000= + EMITC(ADDR, ELBAT[I-1].COMPARECODE) 92665000=16210000= ELSE 92670000=16210000= IF ELCLASS = STRNGCON THEN 92675000=16210000= BEGIN 92680000=16211000= @@ -17973,7 +19457,7 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 BEGIN 93205000=16264000= IF GT1.LEVEL ^= NESTLEVEL-JUMPLEVEL THEN 93210000=16265000= FLAG(257); 93215000=16265000= - EMIT(GT2, LASTGT); 93220000=16266000= + EMIT(GT2.LASTGT); 93220000=16266000= END; 93225000=16267000= END; 93230000=16268000= JUMPLEVEL:= 0; 93235000=16269000= @@ -18045,7 +19529,7 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 IF TCLASS = LOCLID THEN 93565000=16317000= BEGIN 93570000=16318000= XMARK(ASSIGNREF); 93575000=16318500= - IF SIV > STEPI OR ELCASS > TALLYV THEN 93580000=16319000= + IF SIV > STEPI OR ELCLASS > TALLYV THEN 93580000=16319000= GO TO L; 93585000=16319000= INDEX:= 32+ELCLASS-SIV; 93590000=16320000= ADDR:= ELBAT[I-2].ADDRESS; 93595000=16321000= @@ -18091,7 +19575,9 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 END; 93795000=16347000= J:= 8; 93800000=16348000= TCLASS:= 0; 93805000=16348000= - L1: MOVECHARACTERS(2, MACRO[INDEX], J:= J-2, TCLASS, 6); 93810000=16349000= + L1: EBCDICBUFF[0]:= TCLASS; 93810000=16349000= + MOVECHARACTERS(2, MACRO, INDEX, J:= J-2, EBCDICBUFF, 0, 6); 93810100 + TCLASS:= EBCDICBUFF[0]; 93810200 IF TCLASS ^= 0 THEN 93815000=16350000= BEGIN 93820000=16351000= EMITC(IF TCLASS >= 64 THEN ADDR ELSE 0, TCLASS); 93825000=16352000= @@ -18153,8 +19639,12 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 GO TO EXIT 94105000=16384500= END; 94110000=16384500= IF ELCLASS = LITNO OR ELCLASS = NONLITNO THEN 94115000=16384700= - MOVECHARACTERS(COUNT:= IF ADDR < 8 THEN ADDR ELSE 8, C, 94120000=16384900= - 8-COUNT, ACCUM[1], 3); 94125000=16384900= + BEGIN 94115100 + EBCDICBUFF[0]:= C; 94115200 + MOVECHARACTERS(COUNT:= IF ADDR < 8 THEN ADDR ELSE 8, 94120000=16384900= + EBCDICBUFF, 0, 8-COUNT, ACCUM, 1, 3); 94125000=16384900= + C:= EBCDICBUFF[0]; 94125100 + END; 94125200 IF ADDR MOD 2 ^= 0 THEN 94130000=16385000= BEGIN 94135000=16386000= EMIT(ACCUM[1].[29:6]); 94140000=16387000= @@ -18163,8 +19653,13 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 FOR K:= J+2 STEP 2 UNTIL ADDR DO 94155000=16389000= BEGIN 94160000=16390000= FOR L:= 6, 7 DO 94165000=16391000= - MOVECHARACTERS(1, ACCUM[1], 94170000=16393000= - 2+(IF J:= J+1 > COUNT THEN J:= 1 ELSE J), T, L); 94175000=16393000= + BEGIN 94165100 + EBCDICBUFF[0]:= T; 94165200 + MOVECHARACTERS(1, ACCUM, 1, 94170000=16393000= + 2+(IF J:= J+1 > COUNT THEN J:= 1 ELSE J), 94175000=16393000= + EBCDICBUFF, 0, L); 94175100 + T:= EBCDICBUFF[0]; 94175200 + END; 94175300 EMIT(T); 94180000=16394000= END 94185000=16396000= END 94190000=16397000= @@ -18336,7 +19831,7 @@ FINI: 95005000 TIME1:= TIME(1); 95020000=17000000= PROGRAM; 95025000=17000000= ENDOFITALL: 95030000=17001000= - IF(XREF OR DEFINING.[46:1) AND XLUN > 0 THEN 95035000=17001000= + IF(XREF OR DEFINING.[46:1]) AND XLUN > 0 THEN 95035000=17001000= BEGIN 95040000=17002000= DEFINE 95045000=17002000= LSS = < #, 95050000=17002000= @@ -18377,7 +19872,7 @@ ENDOFITALL: 95030000 TIMINGS[I, J]:= TIME(J)-TIMINGS[I, J]; 95225000=17002075= END; 95230000=17002080= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%95235000=17002080= - WRITE(LINE[PAGE]); 95240000=17002520= + WRITE(LINE[SKIP 1]); 95240000=17002520= SAVETIMES(0); % SAVE TIMES FOR START OF IDENTIFIER SORT. 95245000=17002525= LASTADDRESS:= 0; 95250000=17002530= FOR XREFPT:= XREFPT STEP 1 UNTIL 29 DO 95255000=17003000= @@ -18388,13 +19883,14 @@ ENDOFITALL: 95030000 FOR I:= 0 STEP 1 UNTIL 8191 DO 95280000=17004700= XREFINFO[I]:= 0; 95285000=17004710= BEGIN 95290000=17005000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%95290100 BOOLEAN PROCEDURE INPUT1(A); 95295000=17006000= ARRAY 95300000=17007000= A[0]; 95305000=17007000= BEGIN 95310000=17008000= LABEL 95315000=17009000= L, 95320000=17009000= - EOF; 95325000=17009000= + EOF; 95325000=17009000= READ(DSK1, 10, A[*])[EOF]; 95330000=17010000= GO TO L; 95335000=17011000= EOF: 95340000=17012000= @@ -18428,30 +19924,26 @@ ENDOFITALL: 95030000 END; 95480000=17027000= END; 95485000=17028000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%95490000=17028000= - BOOLEAN STREAM PROCEDURE COMPS1(A, B); 95495000=17029000= + BOOLEAN PROCEDURE COMPS1(A, B); 95495000=17029000= + ARRAY 95495100 + A, B[0]; 95495200 BEGIN 95505000=17030000= - SI:= A; 95510000=17031000= - DI:= B; 95515000=17032000= - IF 63 SC < DC THEN 95520000=17033000= + STREAMLOCALS; 95505050 + TALLY:= 0; 95505100 + STREAMSETSI(A, 0); 95510000=17031000= + STREAMSETDI(B, 0); 95515000=17032000= + IF STREAMCOMPARELSS(63) THEN 95520000=17033000= TALLY:= 1 95525000=17033200= ELSE 95530000=17033200= BEGIN 95535000=17033300= - SI:= A; 95540000=17033400= - DI:= B; 95545000=17033500= - IF 63 SC = DC THEN 95550000=17033600= + STREAMSETSI(A, 0); 95540000=17033400= + STREAMSETDI(B, 0); 95545000=17033500= + IF STREAMCOMPAREEQL(63) THEN 95550000=17033600= TALLY:= 2; 95555000=17033700= END; 95560000=17033800= - COMPS1:= TALLY; 95565000=17034000= + 95560100 + COMPS1:= BOOLEAN(TALLY); 95565000=17034000= END; 95570000=17035000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%95572000 - STREAM PROCEDURE HVS1(A); 95575000=17036000= - BEGIN 95580000=17037000= - DI:= A; 95585000=17038000= - DS:= 8 LIT 6"9"; 95590000=17039000= - SI:= A; 95595000=17040000= - DS:= 7 WDS; 95600000=17041000= - DS:= 8 LIT 3"777777777"; % ID,NO, AND SEG.NO. FIELDS 95605000=17041100= - END; 95610000=17042000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%95612000 BOOLEAN PROCEDURE COMP1(A, B); 95615000=17042100= ARRAY 95620000=17042200= @@ -18459,85 +19951,148 @@ ENDOFITALL: 95030000 B[0]; 95630000=17042200= IF REAL(COMP1:= COMPS1(A, B)) = 2 THEN % IDS EQUAL 95635000=17042300= COMP1:= A[8].IDNOF < B[8].IDNOF; 95640000=17042350= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%95645000=17042350= - PROCEDURE HV1(A); 95650000=17042400= - ARRAY 95655000=17042500= - A[0]; 95660000=17042500= - HVS1(A); 95665000=17042600= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%95670000=17042600= XLUN:= 0; 95675000=17043000= REWIND(DSK1); 95680000=17044000= - SORT(OUTPUT1, INPUT1, 0, HV1, COMP1, 10, IF TOTALNO < 1000 95685000=17045100= - THEN 7000 ELSE 10000); 95690000=17045100= + SORT(OUTPUT1, INPUT1, 0, COMP1, 10, 95685000=17045100= + IF TOTALNO < 1000 THEN 12000 ELSE 60000); 95690000=17045100= END; 95695000=17046000= BEGIN 95700000=17047000= ARRAY 95705000=17047100= IDTYPE[0:(IDMAX+4)*4-1]; 95710000=17047100= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%95712000 - STREAM PROCEDURE SETUPHEADING(S, D, SEG, SEQNO, FWDTOG, 95715000=17047350= - LBLTOG, FWDSEQNO, TYPE, OWNTOG, PARAMTOG, VALTOG); 95720000=17047350= + PROCEDURE SETUPHEADING(S, D, SEG, SEQNO, FWDTOG, 95715000=17047350= + LBLTOG, FWDSEQNO, TYPE, TX, OWNTOG, PARAMTOG, VALTOG); 95720000=17047350= VALUE 95725000=17047400= - SEQG, 95730000=17047400= - SEQNO, 95735000=17047400= - FWDTOG, 95740000=17047400= - LBLTOG, 95745000=17047400= - FWDSEQNO, 95750000=17047400= - OWNTOG, 95755000=17047400= - PARAMTOG, 95760000=17047450= - VALTOG; 95765000=17047450= + SEG, SEQNO, FWDTOG, LBLTOG, FWDSEQNO, TX, 95730000=17047400= + OWNTOG, PARAMTOG, VALTOG; 95730050 + ARRAY 95730100 + S, D, TYPE[0]; 95730200 + REAL 95730300 + SEG, SEQNO, FWDTOG, LBLTOG, FWDSEQNO, TX, 95730400 + OWNTOG, PARAMTOG, VALTOG; 95730500 BEGIN 95770000=17047500= - SI:= S; 95775000=17047700= - DI:= D; 95780000=17047800= - 63(IF SC = 6" " THEN JUMP OUT ELSE DS:= CHR); 95785000=17047900= - DS:= 6 LIT 6" -- "; 95790000=17048000= - OWNTOG(DS:= 4 LIT 6"OWN "); 95795000=17048100= - SI:= TYPE; 95800000=17049300= - 32(IF SC = 6"." THEN JUMP OUT ELSE DS:= CHR); 95805000=17049400= - PARAMTOG(DS:= 6 LIT 6" -- ";DS:= 4 LIT 6"NAME"; 95810000=17049440= - VALTOG(DI:= DI-4;DS:= 5 LIT 6"VALUE");DS:= 10 LIT 95815000=17049440= - 6" PARAMETER"); 95820000=17049440= - DS:= 26 LIT 6" -- DECLARED IN SEGMENT "; 95825000=17049500= - SI:= LOC SEG; 95830000=17049600= - S:= DI; 95835000=17049700= - DS:= 4 DEC; 95840000=17049800= - DI:= DI-4; 95845000=17049800= - DS:= 3 FILL; % CONV AND ZERO SUPPR 95850000=17049800= - DI:= DI+8; % TO FORCE STORE OF LAST WORD 95855000=17049900= - SI:= S; 95860000=17050000= - DI:= S; 95865000=17050100= - 4(IF SC ^= 6" " THEN DS:= CHR ELSE SI:= SI+1); 95870000=17050200= - DS:= 4 LIT 6" AT "; 95875000=17050300= - SI:= LOC SEQNO; 95880000=17050400= - DS:= 8 DEC; 95885000=17050500= - FWDTOG(DS:= 17 LIT 6" -- FORWARD AT "; 95890000=17050800= - SI:= LOC FWDSEQNO;DS:= 8 DEC); 95892000=17050800= - LBLTOG(DS:= 16 LIT 6" -- OCCURS AT "; 95895000=17051100= - SI:= LOC FWDSEQNO;DS:= 8 DEC); 95896000=17051100= + STREAMLOCALS; 95770050 + REAL 95770100 + SAVEDI; 95770200 + LABEL 95770300 + JUMPOUT1, 95770400 + JUMPOUT2; 95770500 + 95770600 + STREAMSETSI(S, 0); 95775000=17047700= + STREAMSETDI(D, 0); 95780000=17047800= + THRU 63 DO 95785000=17047900= + BEGIN 95785100 + IF STREAMSCEQL(6" ") THEN 95785200 + GO JUMPOUT1 95785300 + ELSE 95785400 + STREAMTRANSFERCHR(1); 95785500 + END; 95785600 + 95785700 + JUMPOUT1: 95785800 + STREAMTRANSFERLIT(6, 6" -- "); 95790000=17048000= + THRU OWNTOG DO 95795000=17048100= + STREAMTRANSFERLIT(4, 6"OWN "); 95795100 + 95795200 + STREAMSETSI(TYPE, TX); 95800000=17049300= + THRU 32 DO 95805000=17049400= + BEGIN 95805100 + IF STREAMSCEQL(6".") THEN 95805200 + GO JUMPOUT2 95805300 + ELSE 95805400 + STREAMTRANSFERCHR(1); 95805500 + END; 95805600 + 95805700 + JUMPOUT2: 95805800 + THRU PARAMTOG DO 95810000=17049440= + BEGIN 95810100 + STREAMTRANSFERLIT(6, 6" -- "); 95810200 + STREAMTRANSFERLIT(4, 6"NAME"); 95810300 + THRU VALTOG DO 95815000=17049440= + BEGIN 95815100 + STREAMSKIPDI(-4); 95815200 + STREAMTRANSFERLIT(5, 6"VALUE") 95815300 + END; 95815400 + 95815500 + STREAMTRANSFERLIT(8, 6" PARAMET"); 95815600 + STREAMTRANSFERLIT(2, 6"ER"); 95815700 + END; 95815800 + 95815900 + STREAMTRANSFERLIT(8, 6" -- DE"); 95825000=17049500= + STREAMTRANSFERLIT(8, 6"CLARED I"); 95825100 + STREAMTRANSFERLIT(8, 6"N SEGMEN"); 95825200 + STREAMTRANSFERLIT(2, 6"T "); 95825300 + STREAMSETLOCSI(SEG); 95830000=17049600= + SAVEDI:= STREAMGETDI; % DI POINTS TO D 95835000=17049700= + STREAMTRANSFERDEC(4); 95840000=17049800= + STREAMSKIPDI(-4); 95845000=17049800= + STREAMTRANSFERFILL(3); % CONV AND ZERO SUPPR 95850000=17049800= + % DI:= DI+8; % TO FORCE STORE OF LAST WORD [NOT NEEDED] 95855000=17049900= + STREAMSETSI(D, SAVEDI); 95860000=17050000= + STREAMSETDI(D, SAVEDI); 95865000=17050100= + THRU 4 DO 95870000=17050200= + BEGIN 95870100 + IF STREAMSCNEQ(6" ") THEN 95870200 + STREAMTRANSFERCHR(1) 95870300 + ELSE 95870400 + STREAMSKIPSI(+1) 95870500 + END; 95870600 + 95870700 + STREAMTRANSFERLIT(4, 6" AT "); 95875000=17050300= + STREAMSETLOCSI(SEQNO); 95880000=17050400= + STREAMTRANSFERDEC(8); 95885000=17050500= + THRU FWDTOG DO 95890000=17050800= + BEGIN 95890100 + STREAMTRANSFERLIT(8, 6" -- FO"); 95890200 + STREAMTRANSFERLIT(8, 6"RWARD AT"); 95890300 + STREAMTRANSFERLIT(1, 6" "); 95890400 + STREAMSETLOCSI(FWDSEQNO); 95892000=17050800= + STREAMTRANSFERDEC(8) 95892100 + END; 95892200 + 95892300 + THRU LBLTOG DO 95895000=17051100= + BEGIN 95895100 + STREAMTRANSFERLIT(8, 6" -- OC"); 95895200 + STREAMTRANSFERLIT(8, 6"CURS AT "); 95895300 + STREAMSETLOCSI(FWDSEQNO); 95896000=17051100= + STREAMTRANSFERDEC(8); 95896100 + END; 95896200 END OF SETUPHEADING; 95900000=17051200= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%95902000 - STREAM PROCEDURE ADDASEQNO(SEQNO, N, STARS, D); 95905000=17051400= + PROCEDURE ADDASEQNO(SEQNO, N, STARS, D); 95905000=17051400= VALUE 95910000=17051500= - SEQNO, 95915000=17051500= - N, 95920000=17051500= - STARS; 95925000=17051500= + SEQNO, N, STARS; 95915000=17051500= + REAL 95915100 + SEQNO, N, STARS; 95915200 + ARRAY 95915300 + D[0]; 95915400 BEGIN 95930000=17051600= - DI:= D; 95935000=17051700= - DI:= DI+8; 95940000=17051800= - N(DI:= DI+10); 95945000=17051900= - STARS(DO:= DI-1;DS:= LIT 6"*"); 95950000=17052000= - SI:= LOC SEQNO; 95955000=17052100= - DS:= 8 DEC; 95960000=17052200= - DS:= LIT 6" "; 95965000=17052300= - STARS(DI:= DS-1;DS:= LIT 6"*"); 95970000=17052400= + STREAMLOCALS; 95930100 + STREAMSETDI(D, 0); 95935000=17051700= + STREAMSKIPDI(+8); 95940000=17051800= + THRU N DO 95945000=17051900= + STREAMSKIPDI(+10); 95945100 + 95945200 + THRU STARS DO 95950000=17052000= + BEGIN 95950100 + STREAMSKIPDI(-1); 95950200 + STREAMTRANSFERLIT(1, 6"*") 95950300 + END; 95950400 + 95950500 + STREAMSETLOCSI(SEQNO); 95955000=17052100= + STREAMTRANSFERDEC(8); 95960000=17052200= + STREAMTRANSFERLIT(1, 6" "); 95965000=17052300= + THRU STARS DO 95970000=17052400= + BEGIN 95970100 + STREAMSKIPDI(-1); 95970200 + STREAMTRANSFERLIT(1, 6"*") 95970300 + END; 95970400 END; 95975000=17052500= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%95976000 - STREAM PROCEDURE BLANKET(D); 95980000=17052600= + DEFINE BLANKET(D) = 95980000=17052600= BEGIN 95985000=17052700= - DI:= D; 95990000=17052800= - DS:= 8 LIT 6" "; 95995000=17052900= - SI:= D; 96000000=17053000= - DS:= 16 WDS; 96005000=17053100= - END OF BLANKET; 96010000=17053200= + REPLACE POINTER(D,0) BY 6" " FOR 17 WORDS; 95990000=17052800= + END OF BLANKET #; 96010000=17053200= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%96012000 PROCEDURE PRINTXREFSTATISTICS; 96015000=17053300= BEGIN 96020000=17053400= @@ -18552,8 +20107,8 @@ ENDOFITALL: 95030000 (X5,I4,":",2I1," I/O TIME",/); 96065000=17054300= INTEGER 96070000=17054400= I, 96075000=17054400= - J, 96080000=17054400= - K; 96085000=17054400= + J, 96080000=17054400= + K; 96085000=17054400= WRITE(LINE, STATS[0]); 96090000=17054500= FOR I:= 0 STEP 1 UNTIL 2 DO 96095000=17054600= BEGIN 96100000=17054700= @@ -18572,7 +20127,7 @@ ENDOFITALL: 95030000 BOOLEAN 96165000=17069400= FIRSTTIME; % TRUE ON FIRST CALL OF OUTPUT PROCEDURE. 96170000=17069400= ARRAY 96175000=17069500= - PAY[0:17]; 96180000=17069500= + PAY[0:21]; 96180000=17069500= REAL 96185000=17069600= LASTADDRESS; 96190000=17069600= BOOLEAN PROCEDURE INPUT2(A); 96195000=17070000= @@ -18599,39 +20154,42 @@ ENDOFITALL: 95030000 BLANKET(PAY); 96300000=17083000= XREFAY1[8]:= XREFPT:= LASTADDRESS:= 0; 96305000=17084000= FILL IDTYPE[*] WITH 96310000=17084020= - 6"UNKNOWN. ", % 0 96312000=17084020= - 6"STREAM LABEL. ", % 1 96315000=17084030= - 6"STREAM VARIABLE. ", % 2 96320000=17084040= - 6"DEFINE. ", % 3 96325000=17084050= - 6"LIST. ", % 4 96330000=17084060= - 6"FORMAT. ", % 5 96335000=17084070= - 6"SWITCH FORMAT. ", % 6 96340000=17084080= - 6"FILE. ", % 7 96345000=17084090= - 6"SWITCH FILE. ", % 8 96350000=17084100= - 6"SWITCH LABEL. ", % 9 96355000=17084110= - 6"PROCEDURE. ", % 10 96360000=17084120= - 6"INTRINSIC. ", % 11 96365000=17084130= - 6"STREAM PROCEDURE. ", % 12 96370000=17084140= - 6"BOOLEAN STREAM PROCEDURE. ", % 13 96375000=17084150= - 6"REAL STREAM PROCEDURE. ", % 14 96380000=17084160= - 6"ALPHA STREAM PROCEDURE. ", % 15 96385000=17084170= - 6"INTEGER STREAM PROCEDURE. ", % 16 96390000=17084180= - 6"BOOLEAN PROCEDURE. ", % 17 96395000=17084182= - 6"REAL PROCEDURE. ", % 18 96400000=17084184= - 6"ALPHA PROCEDURE. ", % 19 96405000=17084186= - 6"INTEGER PROCEDURE. ", % 20 96410000=17084188= - 6"BOOLEAN. ", % 21 96415000=17084190= - 6"REAL. ", % 22 96420000=17084200= - 6"ALPHA. ", % 23 96425000=17084210= - 6"INTEGER. ", % 24 96430000=17084220= - 6"BOOLEAN ARRAY. ", % 25 96435000=17084230= - 6"REAL ARRAY. ", % 26 96440000=17084240= - 6"ALPHA ARRAY. ", % 27 96445000=17084250= - 6"INTEGER ARRAY. ", % 28 96450000=17084260= - 6"LABEL. ", % 29 96455000=17084270= - 6"FIELD. ", % 30 (CLASS = 125) 96460000=17084275= - 6"FAULT. ", % 32 (CLASS = 126) 96465000=17084280= - 6"SWITCH LIST. "; % 31 (CLASS = 127) 96470000=17084290= + 6"UNKNOWN.",6" ",6" ",6" ", % 0 96312000=17084020= + 6"STREAM L",6"ABEL. ",6" ",6" ", % 1 96315000=17084030= + 6"STREAM V",6"ARIABLE.",6" ",6" ", % 2 96320000=17084040= + 6"DEFINE. ",6" ",6" ",6" ", % 3 96325000=17084050= + 6"LIST. ",6" ",6" ",6" ", % 4 96330000=17084060= + 6"FORMAT. ",6" ",6" ",6" ", % 5 96335000=17084070= + 6"SWITCH F",6"ORMAT. ",6" ",6" ", % 6 96340000=17084080= + 6"FILE. ",6" ",6" ",6" ", % 7 96345000=17084090= + 6"SWITCH F",6"ILE. ",6" ",6" ", % 8 96350000=17084100= + 6"SWITCH L",6"ABEL. ",6" ",6" ", % 9 96355000=17084110= + 6"PROCEDUR",6"E. ",6" ",6" ", % 10 96360000=17084120= + 6"INTRINSI",6"C. ",6" ",6" ", % 11 96365000=17084130= + 6"STREAM P",6"ROCEDURE",6". ",6" ", % 12 96370000=17084140= + 6"BOOLEAN ",6"STREAM P",6"ROCEDURE",6". ", % 13 96375000=17084150= + 6"REAL STR",6"EAM PROC",6"EDURE. ",6" ", % 14 96380000=17084160= + 6"ALPHA ST",6"REAM PRO",6"CEDURE. ",6" ", % 15 96385000=17084170= + 6"INTEGER ",6"STREAM P",6"ROCEDURE",6". ", % 16 96390000=17084180= + 6"BOOLEAN ",6"PROCEDUR",6"E. ",6" ", % 17 96395000=17084182= + 6"REAL PRO",6"CEDURE. ",6" ",6" ", % 18 96400000=17084184= + 6"ALPHA PR",6"OCEDURE.",6" ",6" ", % 19 96405000=17084186= + 6"INTEGER ",6"PROCEDUR",6"E. ",6" ", % 20 96410000=17084188= + 6"BOOLEAN.",6" ",6" ",6" ", % 21 96415000=17084190= + 6"REAL. ",6" ",6" ",6" ", % 22 96420000=17084200= + 6"ALPHA. ",6" ",6" ",6" ", % 23 96425000=17084210= + 6"INTEGER.",6" ",6" ",6" ", % 24 96430000=17084220= + 6"BOOLEAN ",6"ARRAY. ",6" ",6" ", % 25 96435000=17084230= + 6"REAL ARR",6"AY. ",6" ",6" ", % 26 96440000=17084240= + 6"ALPHA AR",6"RAY. ",6" ",6" ", % 27 96445000=17084250= + 6"INTEGER ",6"ARRAY. ",6" ",6" ", % 28 96450000=17084260= + 6"LABEL. ",6" ",6" ",6" ", % 29 96455000=17084270= + 6"FIELD. ",6" ",6" ",6" ", % 30 96460000=17084275= + % (CLASS = 125)96460100 + 6"FAULT. ",6" ",6" ",6" ", % 32 96465000=17084280= + % (CLASS = 126)96465100 + 6"SWITCH L",6"IST. ",6" ",6" "; % 31 96470000=17084290= + % (CLASS = 127)96470100 L: 96475000=17086000= END; 96480000=17086000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%96485000=17086000= @@ -18647,12 +20205,12 @@ ENDOFITALL: 95030000 PRINTER = LINE #; 96535000=17091000= LABEL 96540000=17091100= EOF2, 96545000=17091100= - SKIP; 96550000=17091100= + SKIP; 96550000=17091100= OWN BOOLEAN 96555000=17091110= B2, 96560000=17091110= - FWDTOG, 96565000=17091110= - LBLTOG, 96570000=17091110= - WAITINGFORFWDREF; 96575000=17091110= + FWDTOG, 96565000=17091110= + LBLTOG, 96570000=17091110= + WAITINGFORFWDREF; 96575000=17091110= DEFINE 96580000=17091115= MATCH(A, B) = REAL(BOOLEAN(A) EQV BOOLEAN(B)) = 96585000=17091116= REAL(NOT FALSE) #; 96590000=17091116= @@ -18674,7 +20232,8 @@ ENDOFITALL: 95030000 IF B THEN % END OF SORT - LIST OUT REST OF SEQ. NO. 96670000=17091300= IF XREFPT ^= 0 THEN % WE GOT SOME TO LIST OUT 96675000=17091400= BEGIN 96680000=17091500= - WRITE(LINE[DBL], 15, PAY[*]); 96685000=17091510= + UNPACKBICTOEBCDIC(PAY, 0, EBCDICBUFF, 0, 15*8); 96684900 + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 96685000=17091510= LINECOUNT:= LINECOUNT+1; 96690000=17091520= END 96695000=17091600= ELSE % NOTHING TO LIST OUT 96700000=17091600= @@ -18708,10 +20267,11 @@ ENDOFITALL: 95030000 GO TO SKIP; 96840000=17094150= IF XREFPT > 0 THEN % THERE IS STUFF TO PRINT 96845000=17094200= BEGIN 96850000=17094240= + UNPACKBICTOEBCDIC(PAY, 0, EBCDICBUFF, 0, 15*8); 96850100 IF SINGLTOG THEN 96855000=17094250= - WRITE(LINE, 15, PAY[*]) 96860000=17094350= + WRITE(LINE, 20, EBCDICBUFF[*]) 96860000=17094350= ELSE 96865000=17094350= - WRITE(LINE[DBL], 15, PAY[*]); 96870000=17094400= + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 96870000=17094400= LINECOUNT:= LINECOUNT+1; 96875000=17094410= END 96880000=17094500= ELSE 96885000=17094500= @@ -18720,16 +20280,17 @@ ENDOFITALL: 95030000 XREFPT:= 0; 96900000=17094600= BLANKET(PAY[*]); 96905000=17094650= SETUPHEADING(XREFAY1[*], PAY[*], XREFAY1[8].SEGNOF, 96910000=17095320= - A[0].SEQNOF, FWDTOG, LBLTOG, FWDSEQNO, 96915000=17095320= - IDTYPE[(IF(I:= XREFAY1[9].CLASS) >= FIELDID THEN 96920000=17095320= + A[0].SEQNOF, REAL(FWDTOG), REAL(LBLTOG), FWDSEQNO, 96915000=17095320= + IDTYPE, (IF(I:= XREFAY1[9].CLASS) >= FIELDID THEN 96920000=17095320= (IDMAX+I-FIELDID+1) 96925000=17095320= - ELSE IF I > IDMAX THEN 0 ELSE I)*4], 96925100 + ELSE IF I > IDMAX THEN 0 ELSE I)*4, 96925100 REAL(I >= BOOID AND XREFAY1[9].[38:2] = 1), 96930000=17095320= REAL((I >= BOOID OR I = LOCLID) AND 96935000=17095320= BOOLEAN(XREFAY1[9].[38:1])), 96940000=17095320= XREFAY1[9].[37:1]); 96940100 FWDTOG:= LBLTOG:= FALSE; 96945000=17095400= - WRITE(LINE, 15, PAY[*]); 96950000=17095500= + UNPACKBICTOEBCDIC(PAY, 0, EBCDICBUFF, 0, 15*8); 96949900 + WRITE(LINE, 20, EBCDICBUFF[*]); 96950000=17095500= LINECOUNT:= LINECOUNT+1; 96955000=17095510= BLANKET(PAY[*]); 96960000=17095550= END 96965000=17095700= @@ -18739,7 +20300,8 @@ ENDOFITALL: 95030000 ADDASEQNO(A[0].SEQNOF, XREFPT, A[0].[42:1], PAY[*]); 96985000=17096000= IF(XREFPT:= XREFPT+1) = 11 THEN %FULL 96990000=17096100= BEGIN 96995000=17096200= - WRITE(LINE, 15, PAY[*]); 97000000=17096300= + UNPACKBICTOEBCDIC(PAY, 0, EBCDICBUFF, 0, 15*8); 96999900 + WRITE(LINE, 20, EBCDICBUFF[*]); 97000000=17096300= LINECOUNT:= LINECOUNT+1; 97005000=17096350= XREFPT:= 0; 97010000=17096400= BLANKET(PAY[*]); 97015000=17096450= @@ -18754,16 +20316,11 @@ ENDOFITALL: 95030000 SKIP: 97060000=17096850= LASTADDRESS:= A[0]; 97065000=17096850= END OF OUTPUT2; 97070000=17096900= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%97075000=17096900= - PROCEDURE HV2(A); 97080000=17112000= - ARRAY 97085000=17113000= - A[0]; 97090000=17113000= - A[0]:= 3"777777777777777"; % BIGGEST FLOATING PT. NO. 97095000=17114000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%97100000=17114000= BOOLEAN PROCEDURE COMP2(A, B); 97105000=17115000= ARRAY 97110000=17116000= A, 97115000=17116000= - B[0]; 97120000=17116000= + B[0]; 97120000=17116000= COMP2:= 97125000=17117000= IF A[0].REFIDNOF < B[0].REFIDNOF THEN % DIF IDS 97130000=17117000= TRUE 97135000=17117200= @@ -18789,7 +20346,7 @@ ENDOFITALL: 95030000 FIRSTTIME:= TRUE; % LET OUTPUT PROCEDURE KNOW ABOUT FIRST CAL 97235000=17117920= XREFPT:= 29; 97240000=17118000= REWIND(DSK2); 97245000=17118000= - SORT(OUTPUT2, INPUT2, 0, HV2, COMP2, 1, 6000); 97250000=17119000= + SORT(OUTPUT2, INPUT2, 0, COMP2, 1, 12000); 97250000=17119000= UPDATETIMES(2); % UPDATE TIMES FOR PRINTING CROSS REFERENCE 97255000=17119100= PRINTXREFSTATISTICS; 97260000=17119200= END; 97265000=17120000=