From 4cb379d4f2397bdfd5486f5ba07722f3e0eb46dc Mon Sep 17 00:00:00 2001 From: Paul Kimpel Date: Mon, 20 Aug 2012 01:42:06 +0000 Subject: [PATCH] Commit ESPOLXEM mods as of 2012-08-19 (just before attempting initial compile on E-mode), plus corresponding corrections to ESPOL source. --- SYMBOL/ESPOL.alg_m | 36 +- tools/xem/ESPOLXEM.alg_m | 6185 ++++++++++++++++++++++---------------- 2 files changed, 3655 insertions(+), 2566 deletions(-) diff --git a/SYMBOL/ESPOL.alg_m b/SYMBOL/ESPOL.alg_m index e57020c..d92f65a 100644 --- a/SYMBOL/ESPOL.alg_m +++ b/SYMBOL/ESPOL.alg_m @@ -977,7 +977,7 @@ DEFINE MCPTYPE = 63#, 01561410 DCINTYPE = 62#, 01561420 TSSINTYPE = 61#; 01561430 COMMENT ESPOL CODE FILES ARE UNIQUELY TYPED IN THEIR FILE 01561440 - HEADERS. HEADER[4],[36:6] IS THE FIELD USED TO CONTAIN 01561450 + HEADERS. HEADER[4].[36:6] IS THE FIELD USED TO CONTAIN 01561450 THE TYPE; 01561460 FILE OUT DECK 0 (2,10); 01561500 FILE STUFF DISK SERIAL[20:150](2,10,30,SAVE 15); 01561600 @@ -1439,7 +1439,7 @@ L: 02128000 DEFINE WRITELINE = IF SINGLTOG THEN WRITE(LINE,15,LIN[*]) 02181000 ELSE WRITE(LINE[DBL],15,LIN[*])#, 02181250 PRINTCARD = BEGIN 02182500 - EDITLINE(LIN,FCR,L DIV 4,L,[46:2],MEDIUM,OMITTING); 02182750 + EDITLINE(LIN,FCR,L DIV 4,L.[46:2],MEDIUM,OMITTING); 02182750 IF NOHEADING THEN DATIME; WRITELINE; 02183000 END #; 02183250 STREAM PROCEDURE EDITLINE(LINE,NCR,R,L,SYMBOL,OMIT); 02183500 @@ -1943,7 +1943,7 @@ LENGTH6: 02518000 39, "RTN ", 40, "COC ", 48, "SUB ", 64, "MUL ", 67, "LND ", 68, "STD ",02541000 69, "NEQ ", 71, "XIT ", 72, "MKS ",128, "DIV ",130, "COM ",131, "LQV ",02542000 132, "SND ",133, "XCH ",134, "CHS ",167, "RTS ",168, "CDC ",260, "LOD ",02543000 -261, "DUP ",278, "LBC ",294,"LFC ",322,"ZP1 ",384, "IDV ",532, "ISD", 02544000 +261, "DUP ",278, "LBC ",294,"LFC ",322,"ZP1 ",384, "IDV ",532, "ISD ", 02544000 533, "LEQ ",534, "BBW ",548, "ISN ",549, "LSS ",550, "BFW ",581, "EQL ",02545000 582, "SSP ",790, "LBU ",806, "LFU ",896, "RDV ", 02546000 1003,"SCI ",1004,"SAN ",1019,"SCS ", 02547000 @@ -3178,7 +3178,7 @@ IF NOT(STREAMTOG AND (LEVEL>2))THEN 05344400 BEGIN ARRAY A[0:14]; 05413000 REAL I,J,K,T; 05414000 REAL P,Q; 05414100 - STREAM PROCEDURE NESTFORM(I,N,L,A) VALUE I,N; 05415000 + STREAM PROCEDURE NESTFORM(I,N,L,A); VALUE I,N; 05415000 BEGIN LOCAL S; 05416000 DI~A; 15(DS~8 LIT " "); 05417000 DI~LOC S; DI~DI+7; SI~L; SI~SI+10; DS~CHR; 05418000 @@ -3402,7 +3402,7 @@ IF NOT(STREAMTOG AND (LEVEL>2))THEN 05344400 GO TO EXIT; 06149000 END; 06150000 IF ELCLASS = UNKNOWNID THEN ERR(100); 06151000 - L1:L2:L3:L4:L5:L6:L8:L9:L10:L12:L13:L16:L17:L20,L21:L24:L25:L28:L29: 06152000 + L1:L2:L3:L4:L5:L6:L8:L9:L10:L12:L13:L16:L17:L20:L21:L24:L25:L28:L29: 06152000 L32: 06153000 ERR(103); GO TO EXIT; 06154000 L7: 06155000 @@ -4054,7 +4054,7 @@ L33:L34:L35:L36:L37:L39: 07730000 COMMENT PLUG EMITS EITHER AN OPERAND CALL ON A VARIABLE OR A CALL ON A 08018000 CONSTANT DEPENDING ON THE REQUIREMENTS; 08019000 PROCEDURE PLUG(C,A); VALUE C,A; REAL A; BOOLEAN C; 08020000 - IF C THEN EMITNUM(A) ELSE EMITV(A,ADDRESS); 08021000 + IF C THEN EMITNUM(A) ELSE EMITV(A.ADDRESS); 08021000 COMMENT SIMPLE DETERMINES IF AN ARITHMETIC EXPRESSION IS + OR - A 08022000 CONSTANT OR A SIMPLE VARIABLE. IT MAKES A THROUGH REPORT 08023000 ON ITS ACTIVITY. IT ALSO MAKES PROVISION FOR THE RESCAN 08024000 @@ -4274,7 +4274,7 @@ REAL PROCEDURE REED; 08999000 J:=-1; 08999125 READ(CODISK[NO])[EOF]; 08999150 REED:=I:=FETCH(MKABS(CODISK(1))); 08999175 - K:=MKABS(CODE(0))-1); 08999200 + K:=MKABS(CODE(0))-1; 08999200 WHILE I-J>30 DO 08999225 BEGIN 08999250 MOVE(30,CODISK(0),K); K:=K+30; J:=J+30; 08999275 @@ -4498,10 +4498,10 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 09081000 OCT1310100130000002, "3NOP00", %507 09121500 OCT0650006550000002, "6SCOPO", "N......."; %509 09121600 FILL INFO[2,*] WITH 09121650 - OCT131030000020004., "3RDF00", %512 09121700 + OCT131030000020004, "3RDF00", %512 09121700 OCT0000, COMMENT LITC 0; 09121800 OCT2141, COMMENT FXS ; 09121900 - OCT131030000020004., "3RDS00", %516 09122000 + OCT131030000020004, "3RDS00", %516 09122000 OCT0004, COMMENT LITC 1; 09122100 OCT2141, COMMENT FXS ; 09122200 OCT1310456000000002, "3RDV00", %520 09122300 @@ -4727,7 +4727,7 @@ FILL OPTIONS[*] WITH "5CHECK",0, % 0,1 09251208 SI ~ LSQ; DS ~ WDS; SI ~FIEL; DS ~ 3 WDS; 09366000 DI ~ FIEL; DS~ 28 LIT"NUMBER OF ERRORS DETECTED = "; 09367000 SI ~ LOC NER; DS ~ 3 DEC; DS ~ 22 LIT ". COMPILATION TIME = "; 09368000 - SI ~ LOC T; DS ~ 4 DEC; DS + 9 LIT " SECONDS."; END; 09369000 + SI ~ LOC T; DS ~ 4 DEC; DS ~ 9 LIT " SECONDS."; END; 09369000 STREAM PROCEDURE PEN(FIL,PRTSIZ,BASE,CORE,DISK); 09370000 VALUE PRTSIZ,BASE,CORE,DISK; 09371000 BEGIN DI~FIL; DS ~ 9 LIT"PRT SIZE="; SI~LOC PRTSIZ; 09372000 @@ -4737,7 +4737,7 @@ STREAM PROCEDURE PEN(FIL,PRTSIZ,BASE,CORE,DISK); 09370000 SI~LOC DISK; DS~5 DEC; DS~61 LIT " "; 09376000 END PEN; 09377000 STREAM PROCEDURE FINALAX(LINE,N,SEQ); VALUE N; 09378000 - BEGIN DS ~ LINE; 15(DS ~ 8 LIT " "); 09379000 + BEGIN DI ~ LINE; 15(DS ~ 8 LIT " "); 09379000 DI ~ LINE; DS ~ 31 LIT "NUMBER OF ACCIDENTAL ENTRIES = "; 09380000 SI ~ LOC N; DS ~ 3 DEC; DI ~ DI+8; 09381000 SI ~ SEQ; SI ~ SI-16; DS ~ 8 CHR; 09382000 @@ -4750,7 +4750,7 @@ STREAM PROCEDURE PEN(FIL,PRTSIZ,BASE,CORE,DISK); 09370000 SCRAM := (TIME(1)-TIME1)/60; 09385000 PAN(SCRAM,LIN[0],ERRORCOUNT,INFO[LASTSEQROW,LASTSEQUENCE-1]) 09386000 ; 09386500 - WRITELINE 09387000 + WRITELINE; 09387000 PEN(LIN[0],PRTIMAX,T:=(L+3)DIV 4,T:=CORADR+T, 09388000 ((T+29)DIV 30+DISKADR)|30); 09389000 WRITELINE; 09389500 @@ -4806,7 +4806,7 @@ IF ERRORCOUNT ! 0 THEN I~0/0 ELSE 09391000 END; 09393470 END PUSHEE; 09393480 STREAM PROCEDURE FIXHDR(F,N); VALUE N; 09393700 - BEGIN SI~F; SI~SI-24; DS~LOC F; DS~WDS; 09393710 + BEGIN SI~F; SI~SI-24; DI~LOC F; DS~WDS; 09393710 SI~F; 14(SI~SI+8); DI~LOC F; DS~WDS; 09393720 DI~F; DI~DI+38; SI~ LOC N; 09393730 SI~SI+7; DS~CHR; 09393740 @@ -5288,7 +5288,7 @@ PROCEDURE ARRAE; 13376000 INTEGER SAVEINFO; 13378000 LABEL BETA1; 13379000 TYPEV~REALARRAYID; 13380000 - IF T1~GTA1[J~J-1]=0 THEN J~J+1; 13381000 + IF T1~GTA1[J~J-1]=0 THEN J~J+1 13381000 ELSE 13382000 IF T1=OWNV THEN 13383000 BEGIN 13384000 @@ -5665,7 +5665,7 @@ INTEGERDEC:P3~TRUE;ENTER(INTID);GO TO START; 14141000 END; 14154000 DO UNTIL FALSE; 14155000 ARRAYDEC: ARRAE; GO TO START; 14156000 -FILEDEC: INDEX: OUTDEC: 14158000 +FILEDEC: INDEC: OUTDEC: 14158000 GOTSCHK:GOTSTORAGE~ NOT SPECTOG OR GOTSTORAGE;GO TO START; 14160000 NAMEDEC: IF T1~GTA1[J~J-1]!ARRAYV THEN J~J+1; 14161000 TYPEV~NAMEID; 14161010 @@ -5749,7 +5749,7 @@ GO TO START; 14253000 REAL J,K; 14254100 BOOLEAN STREAM PROCEDURE PARM(S,D,K,J); VALUE K,J; 14254200 BEGIN SI~S;SI~SI+2; DI~D;DI~DI+2; 14254300 - IF K SC!DC THEN TALLY~1 14254400 + IF K SC!DC THEN TALLY~1; 14254400 DI~LOC J;DI~DI+7; 14254500 IF SC!DC THEN TALLY~1; 14254600 PARM~TALLY; 14254700 @@ -6622,7 +6622,7 @@ PROCEDURE LABELS; 16156000 ELSE BEGIN ERR(250); GO TO EXIT END; 16205000 IF STEPI ! SCV THEN BEGIN ERR(263);GO TO EXIT END; 16206000 IFSC: IF STEPI ! RELOP THEN BEGIN ERR(264);GO TO EXIT END; 16207000 - IF STEPI = DCV THEN EMITC( ADDR,ELBAT[I-1].COMPARECODE); 16208000 + IF STEPI = DCV THEN EMITC( ADDR,ELBAT[I-1].COMPARECODE) 16208000 ELSE 16209000 IF ELCLASS = STRNGCON THEN 16210000 EMITC(ACCUM[1].[18:6],ELBAT[I-1].TESTCODE) 16211000 @@ -6632,7 +6632,7 @@ PROCEDURE LABELS; 16156000 ELSE BEGIN ERR(265); GO TO EXIT END; 16214000 GO TO IFTOG ; 16215000 IFSB: EMITC(1,BIT); 16216000 - IFTOG: IF STEP ! THENV THEN BEGIN ERR(266); GO TO EXIT END; 16217000 + IFTOG: IF STEPI ! THENV THEN BEGIN ERR(266); GO TO EXIT END; 16217000 FIX1 ~ L; 16218000 EMIT(JFC); 16219000 IF STEPI!ELSEV THEN% 16220000 diff --git a/tools/xem/ESPOLXEM.alg_m b/tools/xem/ESPOLXEM.alg_m index e11745a..e268aca 100644 --- a/tools/xem/ESPOLXEM.alg_m +++ b/tools/xem/ESPOLXEM.alg_m @@ -98,7 +98,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00125000 054 ARRAYDEC: FILL PART OF SAVE ARRAY DEC LONGER THAN SIZE 00490000=00069540= 056 ARRAYDEC: ILLEGAL DIMENSION INDICATOR IN ARRAY DEC 00495000=00069560= 057 SEGMENTSTART:SAVE STORAGE NOT ALLOWED WITH INTRINSIC OPTION 00500000=00069570= - 098 IOSTMT: ILLEGAL SPECIFIER IN SCOPE STMT: MUST BE }15. 00505000=00069580= + 098 IOSTMT: ILLEGAL SPECIFIER IN SCOPE STMT: MUST BE >=15. 00505000=00069580= 099 INLINE: EXTRA : IN STREAM HEAD. 00510000=00069590= 100 ANYWHERE: UNDECLARED IDENTIFIER. 00515000=00070000= 101 CHECKER: AN ATTEMPT HAS BEEN MADE TO ADDRESS AN 00520000=00071000= @@ -233,7 +233,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00125000 266 IFS: MISSING THEN INIF STATEMENT. 01165000=00200000= 267 FREDFIX: THERE ARE GO TO STATEMENTS IN WHICH THE LABEL IS 01170000=00201000= UNDEFINED. 01175000=00202000= - 268 EMITC: A REPEAT INDEX }64 WAS SPECIFIED OR TOO MANY 01180000=00203000= + 268 EMITC: A REPEAT INDEX >=64 WAS SPECIFIED OR TOO MANY 01180000=00203000= FORMAL PARAMETERS,LOCALS AND LABELS. 01185000=00204000= 269 TABLE: A CONSTANT IS SPECIFIED WHICH IS TOO LARGE 01190000=00205000= OR TOO SMALL. 01195000=00206000= @@ -354,12 +354,10 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00125000 BEGIN 01770000=00500000= COMMENT OUTERMOST BLOCK; 01775000=00500000= INTEGER 01780000=00501000= - ERRORCOUNT; 01785000=00501000= - COMMENT NUMBER OF ERROR MSGS. MCP WILL TYPE 01790000=00501000= + ERRORCOUNT; COMMENT NUMBER OF ERROR MSGS. MCP WILL TYPE 01790000=00501000= SYNTX ERR AT EOJ IF THIS IS NON-ZERO. MUST BE @R+25; 01795000=00502000= INTEGER 01800000=00503000= - SAVETIME; 01805000=00503000= - COMMENT SAVE-FACTOR FOR CODE FILE, GIVEN BY MCP. 01810000=00503000= + SAVETIME; COMMENT SAVE-FACTOR FOR CODE FILE, GIVEN BY MCP. 01810000=00503000= IF COMPILE & GO =0, FOR SYNTAX, =-1. MUST BE AT R+26;01815000=00504000= INTEGER 01820000=00504100= CARDNUMBER; % SEQ # OF CARD BEING PROCESSED. 01825000=00504100= @@ -381,75 +379,1266 @@ REAL 01860000 RR9, 01905000=00507000= RR10, 01910000=00507000= RR11; 01915000=00507000= - COMMENT SOME OF THE RRI ARE USED TO PASS FILE INFORMATION 01920000=00508000= - TO THE MAIN BLOCK; 01925000=00509000= - 01930000=00510000= - COMMENT EXAMIN RETURNS THE CHARACTER AT ABSOLUTE ADDRESS NCR; 01935000=00510000= -REAL STREAM PROCEDURE EXAMIN(NCR); 01940000=00511000= -VALUE 01950000=00511000= - NCR; 01955000=00511000= - BEGIN 01960000=00512000= - SI:= NCR; 01965000=00512000= - DI:= LOC EXAMIN; 01970000=00512000= - DI:= DI+7; 01975000=00512000= - DS:= CHR 01980000=00512000= - END; 01985000=00512000= -INTEGER STREAM PROCEDURE GETF(Q); 01990000=00523000= -VALUE 02000000=00523000= - Q; 02005000=00523000= - BEGIN 02010000=00524000= - SI:= LOC GETF; 02015000=00524000= - SI:= SI-7; 02020000=00524000= - DI:= LOC Q; 02025000=00524000= - DI:= DI+5; 02030000=00524000= - SKIP 3 DB; 02035000=00525000= - (IF SB THEN DS:= SET ELSE DS:= RESET;SKIP SB); 02040000=00525000= - DI:= LOC Q; 02045000=00526000= - SI:= Q; 02050000=00526000= - DS:= WDS; 02055000=00526000= - SI:= Q; 02060000=00526000= - GETF:= SI 02065000=00527000= - END GETF; 02070000=00527000= - 02075000=00528000= -COMMENT START SETTING UP FILE PARAMETERS; 02080000=00528000= -IF EXAMIN(RR11:= GETF(3)+6"Y08") ^= 12 THEN 02085000=00529000= - RR1:= 5 02090000=00529000= -ELSE 02095000=00529000= - BEGIN 02100000=00530000= - RR1:= 2; 02105000=00530000= - RR2:= 150 02110000=00530000= - END; 02115000=00530000= -IF EXAMIN(RR11+5) ^= 12 THEN 02120000=00531000= - RR3:= 4 02125000=00531000= -ELSE 02130000=00531000= - BEGIN 02135000=00532000= - RR3:= 2; 02140000=00532000= - RR4:= 150 02145000=00532000= - END; 02150000=00532000= -IF EXAMIN(RR11+10) = 12 THEN 02155000=00533000= - BEGIN 02160000=00534000= - RR5:= 2; 02165000=00534000= - RR6:= 10; 02170000=00534000= - RR7:= 150 02175000=00534000= - END 02180000=00535000= -ELSE 02185000=00535000= - BEGIN 02190000=00535000= - RR5:= 1; 02195000=00535000= - RR6:= 56; 02200000=00535000= - RR7:= 10 02205000=00535000= - END; 02210000=00535000= -IF EXAMIN(RR11+15) = 12 THEN 02215000=00536000= - BEGIN 02220000=00537000= - RR8:= 10; 02225000=00537000= - RR9:= 150 02230000=00537000= - END 02235000=00538000= -ELSE 02240000=00538000= - BEGIN 02245000=00538000= - RR8:= 56; 02250000=00538000= - RR9:= 10 02255000=00538000= - END; 02260000=00538000= - BEGIN 02265000=01000000= - COMMENT MAIN BLOCK; 02270000=01000000= + 02000000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02000100 +%% STREAM PROCEDURE EMULATION & BIC TRANSLATION MODULE %%02000200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02000300 + 02000400 +DEFINE 02000500 + WOFF = [14:15] #, % STREAM INDEX WORD OFFSET 02000600 + COFF = [17:3] #, % STREAM INDEX CHAR OFFSET 02000700 + STREAMLOCALS = ARRAY REFERENCE MBASE, SBASE[0] #; 02000800 + 02015000 +REAL 02015100 + AREG, % STREAM SOURCE WORD BUFFER 02015200 + YREG, % STREAM SOURCE CHAR BUFFER 02015300 + MREG, % STREAM SOURCE WORD INDEX 02015400 + GREG, % STREAM SOURCE CHAR INDEX 02015500 + HREG, % STREAM SOURCE BIT INDEX 02015600 + BREG, % STREAM DEST WORD 02015700 + ZREG, % STREAM DEST CHAR BUFFER 02015800 + NREG, % STREAM DEST ALIGNMENT INDEX 02015900 + SREG, % STREAM DEST WORD INDEX 02016000 + KREG, % STREAM DEST CHAR INDEX 02016100 + VREG, % STREAM DEST BIT INDEX 02016200 + TALLY; % STREAM TALLY REGISTER 02016300 + 02017000 +BOOLEAN 02017100 + TFFF; % TRUE/FALSE FLIP-FLOP 02017200 + 02018000 +ARRAY 02018100 + STREAMTEMPS[0:15], % STREAM TEMP SOURCE 02018200 + STREAMTEMPD[0:15], % STREAM TEMP DESTINATION 02018300 + EBCDICBUFF[0:21]; % EBCDIC I/O BUFFER 02018400 + 02030000 +VALUE ARRAY 02030100 + BICCOLLATE ( % INDEX BY INTERNAL CODE TO GET COLLATION VALUE 02030200 + 3"65", % 00 0 DIGIT-ZERO 02030300 + 3"66", % 01 1 02030310 + 3"67", % 02 2 02030320 + 3"70", % 03 3 02030330 + 3"71", % 04 4 02030340 + 3"72", % 05 5 02030350 + 3"73", % 06 6 02030360 + 3"74", % 07 7 02030370 + 3"75", % 10 8 02030380 + 3"76", % 11 9 02030390 + 3"23", % 12 # 02030400 + 3"24", % 13 @ 02030410 + 3"77", % 14 ? 02030420 + 3"25", % 15 : 02030430 + 3"26", % 16 > 02030440 + 3"27", % 17 } GEQ 02030450 + 3"30", % 20 + 02030460 + 3"31", % 21 A 02030470 + 3"32", % 22 B 02030480 + 3"33", % 23 C 02030490 + 3"34", % 24 D 02030500 + 3"35", % 25 E 02030510 + 3"36", % 26 F 02030520 + 3"37", % 27 G 02030530 + 3"40", % 30 H 02030540 + 3"41", % 31 I 02030550 + 3"01", % 32 . 02030560 + 3"02", % 33 [ 02030570 + 3"06", % 34 & 02030580 + 3"03", % 35 ( 02030590 + 3"04", % 36 < 02030600 + 3"05", % 37 ~ LEFT-ARROW 02030610 + 3"42", % 40 | TIMES 02030620 + 3"43", % 41 J 02030630 + 3"44", % 42 K 02030640 + 3"45", % 43 L 02030650 + 3"46", % 44 M 02030660 + 3"47", % 45 N 02030670 + 3"50", % 46 O LETTER-O 02030680 + 3"51", % 47 P 02030690 + 3"52", % 50 Q 02030700 + 3"53", % 51 R 02030710 + 3"07", % 52 $ 02030720 + 3"10", % 53 * 02030730 + 3"14", % 54 - 02030740 + 3"11", % 55 ) 02030750 + 3"12", % 56 ; 02030760 + 3"13", % 57 { LEQ 02030770 + 3"00", % 60 BLANK 02030780 + 3"15", % 61 / 02030790 + 3"55", % 62 S 02030800 + 3"56", % 63 T 02030810 + 3"57", % 64 U 02030820 + 3"60", % 65 V 02030830 + 3"61", % 66 W 02030840 + 3"62", % 67 X 02030850 + 3"63", % 70 Y 02030860 + 3"64", % 71 Z 02030870 + 3"16", % 72 , 02030880 + 3"17", % 73 % 02030890 + 3"54", % 74 ! NEQ 02030900 + 3"20", % 75 = 02030910 + 3"21", % 76 ] 02030920 + 3"22"); % 77 " 02030930 + 02040000 +TRUTHSET 02040100 + BICALPHA( % STREAM PROCEDURE "SC IN ALPHA" CHARACTER SET 02040200 + 48"11" OR % 21 A 02043000 + 48"12" OR % 22 B 02043010 + 48"13" OR % 23 C 02043020 + 48"14" OR % 24 D 02043030 + 48"15" OR % 25 E 02043040 + 48"16" OR % 26 F 02043050 + 48"17" OR % 27 G 02043060 + 48"18" OR % 30 H 02043070 + 48"19" OR % 31 I 02043080 + 48"21" OR % 41 J 02043090 + 48"22" OR % 42 K 02043100 + 48"23" OR % 43 L 02043110 + 48"24" OR % 44 M 02043120 + 48"25" OR % 45 N 02043130 + 48"26" OR % 46 O LETTER-O 02043140 + 48"27" OR % 47 P 02043150 + 48"28" OR % 50 Q 02043160 + 48"29" OR % 51 R 02043170 + 48"32" OR % 62 S 02043180 + 48"33" OR % 63 T 02043190 + 48"34" OR % 64 U 02043200 + 48"35" OR % 65 V 02043210 + 48"36" OR % 66 W 02043220 + 48"37" OR % 67 X 02043230 + 48"38" OR % 70 Y 02043240 + 48"39" OR % 71 Z 02043250 + 48"00" OR % 00 0 DIGIT-ZERO 02043260 + 48"01" OR % 01 1 02043270 + 48"02" OR % 02 2 02043280 + 48"03" OR % 03 3 02043290 + 48"04" OR % 04 4 02043300 + 48"05" OR % 05 5 02043310 + 48"06" OR % 06 6 02043320 + 48"07" OR % 07 7 02043330 + 48"08" OR % 10 8 02043340 + 48"09" OR % 11 9 02043350 + 48"0C"); % 14 ? 02043360 + 02045000 +TRANSLATETABLE 02045100 + BICTOEBCDIC ( % 02045200 + EBCDIC TO 48"FF", 02045300 + 48"00" TO "0", % DIGIT-ZERO 02045310 + 48"01" TO "1", 02045320 + 48"02" TO "2", 02045330 + 48"03" TO "3", 02045340 + 48"04" TO "4", 02045350 + 48"05" TO "5", 02045360 + 48"06" TO "6", 02045370 + 48"07" TO "7", 02045380 + 48"08" TO "8", 02045390 + 48"09" TO "9", 02045400 + 48"0A" TO "#", 02045410 + 48"0B" TO "@", 02045420 + 48"0C" TO "?", 02045430 + 48"0D" TO ":", 02045440 + 48"0E" TO ">", 02045450 + 48"0F" TO "}", % GEQ 02045460 + 48"10" TO "+", 02045470 + 48"11" TO "A", 02045480 + 48"12" TO "B", 02045490 + 48"13" TO "C", 02045500 + 48"14" TO "D", 02045510 + 48"15" TO "E", 02045520 + 48"16" TO "F", 02045530 + 48"17" TO "G", 02045540 + 48"18" TO "H", 02045550 + 48"19" TO "I", 02045560 + 48"1A" TO ".", 02045570 + 48"1B" TO "[", 02045580 + 48"1C" TO "&", 02045590 + 48"1D" TO "(", 02045600 + 48"1E" TO "<", 02045610 + 48"1F" TO "~", % LEFT-ARROW 02045620 + 48"20" TO "|", % TIMES 02045630 + 48"21" TO "J", 02045640 + 48"22" TO "K", 02045650 + 48"23" TO "L", 02045660 + 48"24" TO "M", 02045670 + 48"25" TO "N", 02045680 + 48"26" TO "O", % LETTER-O 02045690 + 48"27" TO "P", 02045700 + 48"28" TO "Q", 02045710 + 48"29" TO "R", 02045720 + 48"2A" TO "$", 02045730 + 48"2B" TO "*", 02045740 + 48"2C" TO "-", 02045750 + 48"2D" TO ")", 02045760 + 48"2E" TO ";", 02045770 + 48"2F" TO "{", % LEQ 02045780 + 48"30" TO " ", % BLANK 02045790 + 48"31" TO "/", 02045800 + 48"32" TO "S", 02045810 + 48"33" TO "T", 02045820 + 48"34" TO "U", 02045830 + 48"35" TO "V", 02045840 + 48"36" TO "W", 02045850 + 48"37" TO "X", 02045860 + 48"38" TO "Y", 02045870 + 48"39" TO "Z", 02045880 + 48"3A" TO ",", 02045890 + 48"3B" TO "%", 02045900 + 48"3C" TO "!", % NEQ 02045910 + 48"3D" TO "=", 02045920 + 48"3E" TO "]", 02045930 + 48"3F" TO """), % QUOTE 02045940 + EBCDICTOBIC ( 02046000 + EBCDIC TO 48"0C", % 6"?" 02046100 + "0" TO 48"00", % DIGIT-ZERO 02046200 + "1" TO 48"01", 02046210 + "2" TO 48"02", 02046220 + "3" TO 48"03", 02046230 + "4" TO 48"04", 02046240 + "5" TO 48"05", 02046250 + "6" TO 48"06", 02046260 + "7" TO 48"07", 02046270 + "8" TO 48"08", 02046280 + "9" TO 48"09", 02046290 + "#" TO 48"0A", 02046300 + "@" TO 48"0B", 02046310 + "?" TO 48"0C", 02046320 + ":" TO 48"0D", 02046330 + ">" TO 48"0E", 02046340 + "}" TO 48"0F", % GEQ 02046350 + "+" TO 48"10", 02046360 + "A" TO 48"11", 02046370 + "B" TO 48"12", 02046380 + "C" TO 48"13", 02046390 + "D" TO 48"14", 02046400 + "E" TO 48"15", 02046410 + "F" TO 48"16", 02046420 + "G" TO 48"17", 02046430 + "H" TO 48"18", 02046440 + "I" TO 48"19", 02046450 + "." TO 48"1A", 02046460 + "[" TO 48"1B", 02046470 + "&" TO 48"1C", 02046480 + "(" TO 48"1D", 02046490 + "<" TO 48"1E", 02046500 + "~" TO 48"1F", % LEFT-ARROW 02046510 + "|" TO 48"20", % TIMES 02046520 + "J" TO 48"21", 02046530 + "K" TO 48"22", 02046540 + "L" TO 48"23", 02046550 + "M" TO 48"24", 02046560 + "N" TO 48"25", 02046570 + "O" TO 48"26", % LETTER-O 02046580 + "P" TO 48"27", 02046590 + "Q" TO 48"28", 02046600 + "R" TO 48"29", 02046610 + "$" TO 48"2A", 02046620 + "*" TO 48"2B", 02046630 + "-" TO 48"2C", 02046640 + ")" TO 48"2D", 02046650 + ";" TO 48"2E", 02046660 + "{" TO 48"2F", % LEQ 02046670 + " " TO 48"30", % BLANK 02046680 + "/" TO 48"31", 02046690 + "S" TO 48"32", 02046700 + "T" TO 48"33", 02046710 + "U" TO 48"34", 02046720 + "V" TO 48"35", 02046730 + "W" TO 48"36", 02046740 + "X" TO 48"37", 02046750 + "Y" TO 48"38", 02046760 + "Z" TO 48"39", 02046770 + "," TO 48"3A", 02046780 + "%" TO 48"3B", 02046790 + "!" TO 48"3C", % NEQ 02046800 + "=" TO 48"3D", 02046810 + "]" TO 48"3E", 02046820 + """ TO 48"3F"); % QUOTE 02046830 + 02050000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02050100 +DEFINE STREAMSETSI(A, X) = 02050200 + BEGIN COMMENT 02050300 + SETS THE SOURCE INDEX REGISTERS TO AN ARRAY. EMULATES RSA. 02050400 + ; 02050500 + MBASE:= A; 02050600 + MREG:= (X).WOFF; 02050700 + GREG:= (X).COFF; 02050800 + HREG:= 0; 02050900 + END STREAMSETSI #; 02051000 + 02051100 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02051200 +DEFINE STREAMSETLOCSI(WD) = 02051300 + BEGIN COMMENT 02051400 + SETS THE SOURCE INDEX REGISTERS TO A SCALAR, WHICH IS STORED 02051500 + AND OPERATED ON IN STREAMTEMPS[*]. EMULATES RSA. 02051600 + ; 02051700 + STREAMTEMPS[0]:= (WD); 02051800 + MBASE:= STREAMTEMPS; 02051900 + MREG:= GREG:= HREG:= 0; 02052000 + END STREAMSETLOCSI #; 02052100 + 02052200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02052300 +DEFINE STREAMGETSI = 02052400 + COMMENT 02052500 + STREAMGETSI CONSTRUCTS A BINARY WORD FROM THE SOURCE INDEX 02052600 + REGISTERS. EMULATES SSA (SORT OF). 02052700 + ; 02052800 + (0 & (MREG)WOFF & (GREG)COFF) #; 02052900 + 02053000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02053100 +DEFINE STREAMGETSC = 02053200 + COMMENT 02053300 + STREAMGETSC RETURNS THE CURRENT SOURCE CHARACTER. MOSTLY USED 02053400 + INTERNAL TO THE STREAM EMULATION PROCEDURES. 02053500 + ; 02053600 + (MBASE[MREG].[47-GREG*6:6]) #; 02053700 + 02053800 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02053900 +DEFINE STREAMTESTSB = 02054000 + COMMENT 02054100 + TESTS THE BIT AT THE CURRENT SOURCE INDEX AND RETURNS TRUE 02054200 + IF IT IS SET. DOES NOT ADVANCE THE SOURCE INDEX. EMULATES BIT. 02054300 + ; 02054400 + (TFFF:= BOOLEAN(MBASE[MREG].[47-GREG*6-HREG:1])) #; 02054500 + 02054600 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02054700 +DEFINE STREAMADJUSTSICHAR = 02054800 + BEGIN COMMENT 02054900 + ADJUSTS THE SOURCE INDEX FORWARD TO THE NEXT CHARACTER BOUNDARY, 02055000 + IF NECESSARY. USED INTERALLY BY THE EMULATION PROCEDURES. 02055100 + ; 02055200 + IF HREG > 0 THEN 02055300 + BEGIN 02055400 + HREG:= 0; 02055500 + IF GREG < 7 THEN 02055600 + GREG:= *+1 02055700 + ELSE 02055800 + BEGIN 02055900 + GREG:= 0; 02056000 + MREG:= *+1; 02056100 + END; 02056200 + END; 02056300 + END STREAMADJUSTSICHAR #; 02056400 + 02056500 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02056600 +DEFINE STREAMADJUSTSIWORD = 02056700 + BEGIN COMMENT 02056800 + ADJUSTS THE SOURCE INDEX FORWARD TO THE NEXT WORD BOUNDARY, 02056900 + IF NECESSARY. USED INTERNALLY BY THE EMULATION PROCEDURES. 02057000 + ; 02057100 + IF GREG > 0 OR HREG > 0 THEN 02057200 + BEGIN 02057300 + GREG:= HREG:= 0; 02057400 + MREG:= *+1; 02057500 + END; 02057600 + END STREAMADJUSTSIWORD #; 02057700 + 02060000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02060100 +DEFINE STREAMSETDI(A, X) = 02060200 + BEGIN COMMENT 02060300 + SETS THE DESTINATION INDEX REGISTERS TO AN ARRAY. EMULATES RDA. 02060400 + ; 02060500 + SBASE:= A; 02060600 + SREG:= (X).WOFF; 02060700 + KREG:= (X).COFF; 02060800 + VREG:= 0; 02060900 + END STREAMSETDI #; 02061000 + 02061100 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02061200 +DEFINE STREAMSETLOCDI(WD) = 02061300 + BEGIN COMMENT 02061400 + SETS THE DESTINATION INDEX REGISTERS TO A SCALAR, WHICH IS STORED 02061500 + AND OPERATED ON IN STREAMTEMPD[*]. EMULATES RDA. 02061600 + ; 02061700 + STREAMTEMPD[0]:= (WD); 02061800 + SBASE:= STREAMTEMPD; 02061900 + SREG:= KREG:= VREG:= 0; 02062000 + END STREAMSETLOCDI #; 02062100 + 02062200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02062300 +DEFINE STREAMGETDI = 02062400 + COMMENT 02062500 + STREAMGETSI CONSTRUCTS A BINARY WORD FROM THE DESTINATION INDEX 02062600 + REGISTERS. EMULATES SDA (SORT OF). 02062700 + ; 02062800 + (0 & (SREG)WOFF & (KREG)COFF) #; 02062900 + 02063000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02063100 +DEFINE STREAMGETDC = 02063200 + COMMENT 02063300 + STREAMGETSC RETURNS THE CURRENT DESTINATION CHARACTER. MOSTLY 02063400 + USED INTERNAL TO THE STREAM EMULATION PROCEDURES. 02063500 + ; 02063600 + (SBASE[SREG].[47-KREG*6:6]) #; 02063700 + 02063800 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02063900 +DEFINE STREAMADJUSTDICHAR = 02064000 + BEGIN COMMENT 02064100 + ADJUSTS THE DESTINATION INDEX FORWARD TO THE NEXT CHARACTER 02064200 + BOUNDARY, IF NECESSARY. USED INTERALLY BY THE EMULATION 02064300 + PROCEDURES. 02064400 + ; 02064500 + IF VREG > 0 THEN 02064600 + BEGIN 02064700 + VREG:= 0; 02064800 + IF KREG < 7 THEN 02064900 + KREG:= *+1 02065000 + ELSE 02065100 + BEGIN 02065200 + KREG:= 0; 02065300 + SREG:= *+1; 02065400 + END; 02065500 + END; 02065600 + END STREAMADJUSTDICHAR #; 02065700 + 02065800 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02065900 +DEFINE STREAMADJUSTDIWORD = 02066000 + BEGIN COMMENT 02066100 + ADJUSTS THE DESTINATON INDEX FORWARD TO THE NEXT WORD BOUNDARY, 02066200 + IF NECESSARY. USED INTERNALLY BY THE EMULATION PROCEDURES. 02066300 + ; 02066400 + IF KREG > 0 OR VREG > 0 THEN 02066500 + BEGIN 02066600 + KREG:= VREG:= 0; 02066700 + SREG:= *+1; 02066800 + END; 02066900 + END STREAMADJUSTDIWORD #; 02067000 + 02070000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02070100 +DEFINE STREAMSETTALLY(V) = 02070200 + BEGIN COMMENT 02070300 + SETS THE TALLY REGISTER TO THE LOW-ORDER 6 BITS OF "V". 02070400 + EMULATES SEC. 02070500 + ; 02070600 + TALLY:= (V).[5:6]; 02070700 + END #; 02070800 + 02070900 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02071000 +DEFINE STREAMINCTALLY(V) = 02071100 + BEGIN COMMENT 02071200 + INCREMENTS THE TALLY REGISTER BY THE LOW-ORDER 6 BITS OF "V", 02071300 + TRUNCATING THE RESULT TO 6 BITS (WHICH IS ALL THE TALLY HOLDS). 02071400 + EMULATES INC. 02071500 + ; 02071600 + STREAMSETTALLY(TALLY+(V).[5:6]); 02071700 + END #; 02071800 + 02071900 + $ BEGINSEGMENT 02072000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02072100 +PROCEDURE STREAMSKIPSI(CHARS); 02072200 + VALUE CHARS; 02072300 + REAL CHARS; 02072400 + BEGIN COMMENT 02072500 + INCREMENTS THE SOURCE INDEX FORWARD OR BACKWARD BY THE 02072600 + SPECIFIED NUMBER OF CHARACTERS. EMULATES SFS/SRS, BUT IS NOT 02072700 + LIMITED TO A COUNT OF 63. 02072800 + ; 02072900 + REAL 02073000 + X; 02073100 + 02073200 + STREAMADJUSTSICHAR; 02073300 + X:= (GREG.[2:3] & (MREG)[17:15]) + CHARS; 02073400 + MREG:= X.[17:15]; 02073500 + GREG:= X.[2:3]; 02073600 + END STREAMSKIPSI; 02073700 + 02073800 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02073900 +PROCEDURE STREAMSKIPDI(CHARS); 02074000 + VALUE CHARS; 02074100 + REAL CHARS; 02074200 + BEGIN COMMENT 02074300 + INCREMENTS THE DESTINATION INDEX FORWARD OR BACKWARD BY THE 02074400 + SPECIFIED NUMBER OF CHARACTERS. EMULATES SFD/SRD, BUT IS NOT 02074500 + LIMITED TO A COUNT OF 63. 02074600 + ; 02074700 + REAL 02074800 + X; 02074900 + 02075000 + STREAMADJUSTDICHAR; 02075100 + X:= (KREG.[2:3] & (SREG)[17:15]) + CHARS; 02075200 + SREG:= X.[17:15]; 02075300 + KREG:= X.[2:3]; 02075400 + END STREAMSKIPDI; 02075500 + 02075600 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02075700 +DEFINE STREAMLOADDIFROMDC = 02075800 + STREAMLOADDIFROMDCQQ(SBASE) #; 02075900 +PROCEDURE STREAMLOADDIFROMDCQQ(SBASE); 02076000 + ARRAY SBASE[0]; 02076100 + BEGIN COMMENT 02076200 + LOADS THE VALUE OF THE DESTINATION INDEX FROM THE CURRENT 02076300 + LOCATION OF THE DESTINATION INDEX. EMULATES TDA (SORT OF). 02076400 + ; 02076500 + STREAMADJUSTDICHAR; 02076600 + VREG:= STREAMGETDC; 02076700 + STREAMSKIPDI(+1); 02076800 + VREG:= STREAMGETDC & (VREG)[11:6]; 02076900 + STREAMSKIPDI(+1); 02077000 + VREG:= STREAMGETDC & (VREG)[17:6]; 02077100 + KREG:= VREG.COFF; 02077200 + SREG:= VREG.WOFF; 02077300 + VREG:= 0; 02077400 + END STREAMLOADDIFROMDC; 02077500 + 02100000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02100100 +DEFINE STREAMTRANSFERCHR(N) = 02100200 + STREAMTRANSFERCHRQQ(MBASE, SBASE, N) #; 02100300 +PROCEDURE STREAMTRANSFERCHRQQ(MBASE, SBASE, N); 02100400 + VALUE N; 02100500 + ARRAY MBASE, SBASE[0]; 02100600 + REAL N; 02100700 + BEGIN COMMENT 02100800 + TRANSFERS "N" 6-BIT CHARACTERS FROM SOURCE TO DESTINATION. 02100900 + EMULATES TRS, BUT IS NOT LIMITED TO A COUNT OF 63. 02101000 + ; 02101100 + REAL 02101200 + NC; % CHARS LEFT TO TRANSFER 02101300 + 02101400 + STREAMADJUSTSICHAR; 02101500 + AREG:= MBASE[MREG]; 02101600 + STREAMADJUSTDICHAR; 02101700 + BREG:= SBASE[SREG]; 02101800 + NC:= N; 02101900 + WHILE NC > 0 DO 02102000 + BEGIN 02102100 + BREG:= * & AREG[47-KREG*6 : 47-GREG*6 : 6]; 02102200 + NC:= *-1; 02102300 + IF GREG < 7 THEN 02102400 + GREG:= *+1 02102500 + ELSE 02102600 + BEGIN 02102700 + GREG:= 0; 02102800 + MREG:= *+1; 02102900 + IF NC > 0 THEN 02103000 + AREG:= MBASE[MREG]; 02103100 + END; 02103200 + 02103300 + IF KREG < 7 THEN 02103400 + KREG:= *+1 02103500 + ELSE 02103600 + BEGIN 02103700 + SBASE[SREG]:= BREG; 02103800 + KREG:= 0; 02103900 + SREG:= *+1; 02104000 + IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 02104100 + IF NC > 0 THEN 02104200 + BREG:= SBASE[SREG]; 02104300 + END; 02104400 + END WHILE; 02104500 + 02104600 + IF KREG > 0 THEN 02104700 + SBASE[SREG]:= BREG; 02104800 + END STREAMTRANSFERCHR; 02104900 + 02105000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02105100 +DEFINE STREAMTRANSFERWDS(N) = 02105200 + STREAMTRANSFERWDSQQ(MBASE, SBASE, N) #; 02105300 +PROCEDURE STREAMTRANSFERWDSQQ(MBASE, SBASE, N); 02105400 + VALUE N; 02105500 + ARRAY MBASE, SBASE[0]; 02105600 + REAL N; 02105700 + BEGIN COMMENT 02105800 + TRANSFERS "N" 48-BIT WORDS FROM SOURCE TO DESTINATION. 02105900 + EMULATES TRW, BUT IS NOT LIMITED TO A COUNT OF 63. 02106000 + ; 02106100 + STREAMADJUSTSIWORD; 02106200 + STREAMADJUSTDIWORD; 02106300 + IF N = 1 THEN 02106400 + SBASE[SREG]:= MBASE[MREG] 02106500 + ELSE 02106600 + REPLACE POINTER(SBASE[SREG],0) BY 02106700 + POINTER(MBASE[MREG],0) FOR N WORDS; 02106800 + 02106900 + SREG:= *+N; 02107000 + MREG:= *+N; 02107100 + END STREAMTRANSFERWDS; 02107200 + 02107300 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02107400 +DEFINE STREAMSMEARLIT(N, CHAR) = 02107500 + STREAMSMEARLITQQ(SBASE, N, CHAR) #; 02107600 +PROCEDURE STREAMSMEARLITQQ(SBASE, N, CHAR); 02107700 + VALUE N, CHAR; 02107800 + ARRAY SBASE[0]; 02107900 + REAL N, CHAR; 02108000 + BEGIN COMMENT 02108100 + REPETITIVELY TRANSFERS THE 6-BIT CHARACTER "CHAR" TO THE 02108200 + DESTINATION "N" TIMES. USED WHERE TRP MIGHT BE EXECUTED, BUT 02108300 + FOR THE SPECIAL CASE OF A 1-CHARACTER PATTERN. THIS ROUTINE IS 02108400 + FUNCTIONALLY EQUIVALENT TO STREAMTRANSFERLIT(1, CHAR) WHEN N=1. 02108500 + ; 02108600 + REAL 02108700 + NC; % CHARS LEFT TO SMEAR 02108800 + 02108900 + STREAMADJUSTDICHAR; 02109000 + BREG:= SBASE[SREG]; 02109100 + NC:= N; 02109200 + WHILE NC > 0 DO 02109300 + BEGIN 02109400 + BREG:= * & CHAR[47-KREG*6 : 5 : 6]; 02109500 + NC:= *-1; 02109600 + IF KREG < 7 THEN 02109700 + KREG:= *+1 02109800 + ELSE 02109900 + BEGIN 02110000 + SBASE[SREG]:= BREG; 02110100 + KREG:= 0; 02110200 + SREG:= *+1; 02110300 + IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 02110400 + IF NC > 0 THEN 02110500 + BREG:= SBASE[SREG]; 02110600 + END; 02110700 + END WHILE; 02110800 + 02110900 + IF KREG > 0 THEN 02111000 + SBASE[SREG]:= BREG; 02111100 + END STREAMSMEARLIT; 02111200 + 02111300 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02111400 +DEFINE STREAMTRANSFERLIT(N, S) = 02111500 + STREAMTRANSFERLITQQ(SBASE, N, S) #; 02111600 +PROCEDURE STREAMTRANSFERLITQQ(SBASE, N, S); 02111700 + VALUE N, S; 02111800 + ARRAY SBASE[0]; 02111900 + REAL N, S; % N MUST BE <= 8, S IS RIGHT-JUSTIFIED IN ITS WORD 02112000 + BEGIN COMMENT 02112100 + TRANSFERS A LITERAL STRING OF 6-BIT CHARACTERS IN "S" TO THE 02112200 + DESTINATION. "N" IS THE NUMBER OF CHARACTERS TO TRANSFER, WHICH 02112300 + IS LIMITED TO 8. "S" IS CONSIDERED TO BE IN THE "N" LOW-ORDER 02112400 + CHARACTERS OF THE "S" WORD. SORT OF EMULATES TRP, EXCEPT THE 02112500 + SOURCE ISN'T REALLY IN THE PROGRAM STRING AND IS LIMITED TO 02112600 + A 48-BIT SOURCE STRING. CALL MULTIPLE TIMES FOR LONGER STRINGS. 02112700 + ; 02112800 + REAL 02112900 + NC; 02113000 + 02113100 + STREAMADJUSTDICHAR; 02113200 + BREG:= SBASE[SREG]; 02113300 + NC:= N; 02113400 + WHILE NC > 0 DO 02113500 + BEGIN 02113600 + BREG:= * & (S)[47-KREG*6 : NC*6-1 : 6]; 02113700 + NC:= *-1; 02113800 + IF KREG < 7 THEN 02113900 + KREG:= *+1 02114000 + ELSE 02114100 + BEGIN 02114200 + SBASE[SREG]:= BREG; 02114300 + KREG:= 0; 02114400 + SREG:= *+1; 02114500 + IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 02114600 + IF NC > 0 THEN 02114700 + BREG:= SBASE[SREG]; 02114800 + END; 02114900 + END WHILE; 02115000 + 02115100 + IF KREG > 0 THEN 02115200 + SBASE[SREG]:= BREG; 02115300 + END STREAMTRANSFERLIT; 02115400 + 02115500 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02115600 +DEFINE STREAMTRANSFERDEC(N) = 02115700 + STREAMTRANSFERDECQQ(MBASE, SBASE, N) #; 02115800 +PROCEDURE STREAMTRANSFERDECQQ(MBASE, SBASE, N); 02115900 + VALUE N; 02116000 + ARRAY MBASE, SBASE[0]; 02116100 + REAL N; 02116200 + BEGIN COMMENT 02116300 + CONVERTS THE WORD AT THE SOURCE INDEX TO "N" DECIMAL DIGITS AND 02116400 + TRANSFERS THEM TO THE DESTINATION AS 6-BIT CHARACTER CODES. 02116500 + EMULATES OCV. LIMITED TO 8-DIGIT CONVERSION. 02116600 + ; 02116700 + REAL 02116800 + DIGITS; 02116900 + 02117000 + STREAMADJUSTSIWORD; 02117100 + STREAMADJUSTDICHAR; 02117200 + IF N = 0 THEN 02117300 + TFFF:= TRUE 02117400 + ELSE 02117500 + BEGIN 02117600 + IF N > 8 THEN 02117700 + N:= 8; 02117800 + 02117900 + AREG:= MBASE[MREG]; 02118000 + IF AREG = 0 THEN 02118100 + AREG:= 0 % WIPE OUT ANY SIGN BIT 02118200 + ELSE 02118300 + DIGITS:= SCALERIGHTF(AREG.[38:39], 12); 02118400 + 02118500 + MREG:= *+1; 02118600 + TFFF:= (DIGITS.[47:(12-N)*4] = 0); % TRUE => NO DECIMAL OVERFLOW 02118700 + WHILE N > 1 DO 02118800 + BEGIN 02118900 + STREAMSMEARLIT(1, DIGITS.[N*4-1:4]); 02119000 + N:= *-1; 02119100 + END WHILE; 02119200 + 02119300 + STREAMSMEARLIT(1, DIGITS.[3:4] & (AREG)[5:46:1]); % SET THE SIGN 02119400 + END; 02119500 + END STREAMTRANSFERDEC; 02119600 + 02119700 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02119800 +DEFINE STREAMTRANSFEROCT(N) = 02119900 + STREAMTRANSFEROCTQQ(MBASE, SBASE, N) #; 02120000 +PROCEDURE STREAMTRANSFEROCTQQ(MBASE, SBASE, N); 02120100 + VALUE N; 02120200 + ARRAY MBASE, SBASE[0]; 02120300 + REAL N; 02120400 + BEGIN COMMENT 02120500 + CONVERTS "N" 6-BIT CHARACTERS FROM THE SOURCE TO A BINARY VALUE 02120600 + AND STORES THE RESULT AT THE DESTINATION WORD. EMULATES ICV. 02120700 + LIMITED TO 8-DIGIT CONVERSION. 02120800 + ; 02120900 + REAL 02121000 + VAL; 02121100 + 02121200 + STREAMADJUSTDIWORD; 02121300 + STREAMADJUSTSICHAR; 02121400 + AREG:= MBASE[MREG]; 02121500 + IF N > 8 THEN 02121600 + N:= 8; 02121700 + 02121800 + WHILE N > 0 DO 02121900 + BEGIN 02122000 + VAL:= VAL*10 + AREG.[45-GREG*6:4]; 02122100 + N:= *-1; 02122200 + IF N = 0 THEN 02122300 + IF AREG.[47-GREG*6:2] = 2 THEN % SIGN IS NEGATIVE 02122400 + IF VAL ^= 0 THEN 02122500 + VAL:= -VAL; 02122600 + 02122700 + IF GREG < 7 THEN 02122800 + GREG:= *+1 02122900 + ELSE 02123000 + BEGIN 02123100 + GREG:= 0; 02123200 + MREG:= *+1; 02123300 + IF N > 0 THEN 02123400 + AREG:= MBASE[MREG]; 02123500 + END; 02123600 + END WHILE; 02123700 + 02123800 + SBASE[SREG]:= VAL; 02123900 + SREG:= *+1; 02124000 + END STREAMTRANSFEROCT; 02124100 + 02124200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02124300 +DEFINE STREAMTRANSFERFILL(N) = 02124400 + STREAMTRANSFERFILLQQ(SBASE, N) #; 02124500 +PROCEDURE STREAMTRANSFERFILLQQ(SBASE, N); 02124600 + VALUE N; 02124700 + ARRAY SBASE[0]; 02124800 + REAL N; 02124900 + BEGIN COMMENT 02125000 + PERFORMS LEADING-ZERO SUPPRESSION STARTING AT THE DESTINATION 02125100 + INDEX LOCATION. LEAVES THE DESTINATION INDEX POINTING TO THE 02125200 + FIRST NON-SUPPRESSED CHARACTER. EMULATES TBN. 02125300 + ; 02125400 + REAL 02125500 + NC; % CHARS LEFT TO EXAMINE 02125600 + 02125700 + STREAMADJUSTDICHAR; 02125800 + TFFF:= TRUE; 02125900 + BREG:= SBASE[SREG]; 02126000 + NC:= N; 02126100 + WHILE NC > 0 DO 02126200 + BEGIN 02126300 + IF BICCOLLATE[STREAMGETDC] <= BICCOLLATE[6"0"] THEN 02126400 + BEGIN 02126500 + BREG:= * & (6" ")[47-KREG*6 : 5 : 6]; 02126600 + NC:= *-1; 02126700 + IF KREG < 7 THEN 02126800 + KREG:= *+1 02126900 + ELSE 02127000 + BEGIN 02127100 + SBASE[SREG]:= BREG; 02127200 + KREG:= 0; 02127300 + SREG:= *+1; 02127400 + IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 02127500 + IF NC > 0 THEN 02127600 + BREG:= SBASE[SREG]; 02127700 + END; 02127800 + END 02127900 + ELSE 02128000 + BEGIN 02128100 + NC:= 0; 02128200 + TFFF:= FALSE; 02128300 + IF KREG > 0 THEN 02128400 + SBASE[SREG]:= BREG; 02128500 + END; 02128600 + END WHILE; 02128700 + END STREAMTRANSFERFILL; 02128800 + 02130000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02130100 +PROCEDURE STREAMSKIPSB(N); 02130200 + VALUE N; 02130300 + REAL N; 02130400 + BEGIN COMMENT 02130500 + INCREMENTS THE SOURCE INDEX FORWARD BY "N" BITS. 02130600 + EMULATES BSS. 02130700 + ; 02130800 + THRU N DO 02130900 + BEGIN 02131000 + IF HREG < 5 THEN 02131100 + HREG:= *+1 02131200 + ELSE 02131300 + BEGIN 02131400 + HREG:= 0; 02131500 + IF GREG < 7 THEN 02131600 + GREG:= *+1 02131700 + ELSE 02131800 + BEGIN 02131900 + GREG:= 0; 02132000 + MREG:= *+1; 02132100 + END; 02132200 + END; 02132300 + END THRU; 02132400 + END STREAMSKIPSB; 02132500 + 02132600 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02132700 +PROCEDURE STREAMSKIPDB(N); 02132800 + VALUE N; 02132900 + REAL N; 02133000 + BEGIN COMMENT 02133100 + INCREMENTS THE DESTINATION INDEX FORWARD BY "N" BITS. 02133200 + EMULATES BSD. 02133300 + ; 02133400 + THRU N DO 02133500 + BEGIN 02133600 + IF VREG < 5 THEN 02133700 + VREG:= *+1 02133800 + ELSE 02133900 + BEGIN 02134000 + VREG:= 0; 02134100 + IF KREG < 7 THEN 02134200 + KREG:= *+1 02134300 + ELSE 02134400 + BEGIN 02134500 + KREG:= 0; 02134600 + SREG:= *+1; 02134700 + END; 02134800 + END; 02134900 + END THRU; 02135000 + END STREAMSKIPDB; 02135100 + 02135200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02135300 +DEFINE STREAMSETDB(N, TRUTH) = 02135400 + STREAMSETDBQQ(SBASE, N, TRUTH) #; 02135500 +PROCEDURE STREAMSETDBQQ(SBASE, N, TRUTH); 02135600 + VALUE N, TRUTH; 02135700 + ARRAY SBASE[0]; 02135800 + REAL N; 02135900 + REAL TRUTH; 02136000 + BEGIN COMMENT 02136100 + SETS OR RESETS "N" DESTINATION BITS, DEPENDING ON "TRUTH". 02136200 + EMULATES BIR/BIS. 02136300 + ; 02136400 + REAL 02136500 + NC; 02136600 + 02136700 + BREG:= SBASE[SREG]; 02136800 + NC:= N; 02136900 + WHILE NC > 0 DO 02137000 + BEGIN 02137100 + BREG:= * & (TRUTH)[47-KREG*6-VREG:1]; 02137200 + NC:= *-1; 02137300 + IF VREG < 5 THEN 02137400 + VREG:= *+1 02137500 + ELSE 02137600 + BEGIN 02137700 + VREG:= 0; 02137800 + IF KREG < 7 THEN 02137900 + KREG:= *+1 02138000 + ELSE 02138100 + BEGIN 02138200 + SBASE[SREG]:= BREG; 02138300 + KREG:= 0; 02138400 + SREG:= *+1; 02138500 + IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 02138600 + IF NC > 0 THEN 02138700 + BREG:= SBASE[SREG]; 02138800 + END; 02138900 + END; 02139000 + END WHILE; 02139100 + 02139200 + IF VREG > 0 OR KREG > 0 THEN 02139300 + SBASE[SREG]:= BREG; 02139400 + END STREAMSETDB; 02139500 + 02150000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02150100 +DEFINE STREAMCOMPARELSS(N) = 02150200 + STREAMCOMPARELSSQQ(MBASE, SBASE, N) #; 02150300 +BOOLEAN PROCEDURE STREAMCOMPARELSSQQ(MBASE, SBASE, N); 02150400 + VALUE N; 02150500 + ARRAY MBASE, SBASE[0]; 02150600 + REAL N; 02150700 + BEGIN COMMENT 02150800 + COMPARES "N" CHARACTERS BETWEEN SOURCE AND DESTINATION FOR A 02150900 + LESS-THAN CONDITION. ADVANCES BOTH INDEXES BY "N". 02151000 + EMULATES CLS. 02151100 + ; 02151200 + STREAMADJUSTSICHAR; 02151300 + STREAMADJUSTDICHAR; 02151400 + TFFF:= FALSE; 02151500 + WHILE N > 0 DO 02151600 + BEGIN 02151700 + IF STREAMGETSC = STREAMGETDC THEN 02151800 + BEGIN 02151900 + STREAMSKIPSI(+1); 02152000 + STREAMSKIPDI(+1); 02152100 + N:= *-1; 02152200 + END 02152300 + ELSE 02152400 + BEGIN 02152500 + IF BICCOLLATE[STREAMGETSC] < BICCOLLATE[STREAMGETDC] THEN 02152600 + TFFF:= TRUE; 02152700 + 02152800 + STREAMSKIPSI(+N); 02152900 + STREAMSKIPDI(+N); 02153000 + N:= 0; 02153100 + END; 02153200 + END WHILE; 02153300 + 02153400 + STREAMCOMPARELSSQQ:= TFFF; 02153500 + END STREAMCOMPARELSS; 02153600 + 02160000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02160100 +DEFINE STREAMCOMPAREEQL(N) = 02160200 + STREAMCOMPAREEQLQQ(MBASE, SBASE, N) #; 02160300 +BOOLEAN PROCEDURE STREAMCOMPAREEQLQQ(MBASE, SBASE, N); 02160400 + VALUE N; 02160500 + ARRAY MBASE, SBASE[0]; 02160600 + REAL N; 02160700 + BEGIN COMMENT 02160800 + COMPARES "N" CHARACTERS BETWEEN SOURCE AND DESTINATION FOR AN 02160900 + EQUAL CONDITION. ADVANCES BOTH INDEXES BY "N". 02161000 + EMULATES CEQ. 02161100 + ; 02161200 + STREAMADJUSTSICHAR; 02161300 + STREAMADJUSTDICHAR; 02161400 + TFFF:= TRUE; 02161500 + WHILE N > 0 DO 02161600 + BEGIN 02161700 + IF STREAMGETSC = STREAMGETDC THEN % COLLATING SEQ IS IMMATERIAL 02161800 + BEGIN 02161900 + STREAMSKIPSI(+1); 02162000 + STREAMSKIPDI(+1); 02162100 + N:= *-1; 02162200 + END 02162300 + ELSE 02162400 + BEGIN 02162500 + TFFF:= FALSE; 02162600 + STREAMSKIPSI(+N); 02162700 + STREAMSKIPDI(+N); 02162800 + N:= 0; 02162900 + END; 02163000 + END WHILE; 02163100 + 02163200 + STREAMCOMPAREEQLQQ:= TFFF; 02163300 + END STREAMCOMPAREEQL; 02163400 + 02175000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02175100 +DEFINE STREAMCOMPAREGEQ(N) = 02175200 + STREAMCOMPAREGEQQQ(MBASE, SBASE, N) #; 02175300 +BOOLEAN PROCEDURE STREAMCOMPAREGEQQQ(MBASE, SBASE, N); 02175400 + VALUE N; 02175500 + ARRAY MBASE, SBASE[0]; 02175600 + REAL N; 02175700 + BEGIN COMMENT 02175800 + COMPARES "N" CHARACTERS BETWEEN SOURCE AND DESTINATION FOR A 02175900 + GREATER-THAN-OR-EQUAL CONDITION. ADVANCES BOTH INDEXES BY "N". 02176000 + EMULATES CEG. 02176100 + ; 02176200 + STREAMADJUSTSICHAR; 02176300 + STREAMADJUSTDICHAR; 02176400 + TFFF:= TRUE; 02176500 + WHILE N > 0 DO 02176600 + BEGIN 02176700 + IF STREAMGETSC = STREAMGETDC THEN 02176800 + BEGIN 02176900 + STREAMSKIPSI(+1); 02177000 + STREAMSKIPDI(+1); 02177100 + N:= *-1; 02177200 + END 02177300 + ELSE 02177400 + BEGIN 02177500 + IF BICCOLLATE[STREAMGETSC] < BICCOLLATE[STREAMGETDC] THEN 02177600 + TFFF:= FALSE; 02177700 + 02177800 + STREAMSKIPSI(+N); 02177900 + STREAMSKIPDI(+N); 02178000 + N:= 0; 02178100 + END; 02178200 + END WHILE; 02178300 + 02178400 + STREAMCOMPAREGEQQQ:= TFFF; 02178500 + END STREAMCOMPAREGEQ; 02178600 + 02180000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02180100 +DEFINE STREAMSCLSS(CHR) = 02180200 + STREAMSCLSSQQ(MBASE, CHR) #; 02180300 +BOOLEAN PROCEDURE STREAMSCLSSQQ(MBASE, CHR); 02180400 + VALUE CHR; 02180500 + ARRAY MBASE[0]; 02180600 + REAL CHR; 02180700 + BEGIN COMMENT 02180800 + COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 02180900 + LESS-THAN CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 02181000 + EMULATES TLS. 02181100 + ; 02181200 + STREAMADJUSTSICHAR; 02181300 + STREAMSCLSSQQ:= TFFF:= (BICCOLLATE[STREAMGETSC] < BICCOLLATE[CHR]); 02181400 + END STREAMSCLSS; 02181500 + 02181600 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02181700 +DEFINE STREAMSCLEQ(CHR) = 02181800 + STREAMSCLEQQQ(MBASE, CHR) #; 02181900 +BOOLEAN PROCEDURE STREAMSCLEQQQ(MBASE, CHR); 02182000 + VALUE CHR; 02182100 + ARRAY MBASE[0]; 02182200 + REAL CHR; 02182300 + BEGIN COMMENT 02182400 + COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 02182500 + LESS-THAN CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 02182600 + EMULATES TLS. 02182700 + ; 02182800 + STREAMADJUSTSICHAR; 02182900 + STREAMSCLEQQQ:= TFFF:= (BICCOLLATE[STREAMGETSC] < BICCOLLATE[CHR]); 02183000 + END STREAMSCLEQ; 02183100 + 02183200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02183300 +DEFINE STREAMSCEQL(CHR) = 02183400 + STREAMSCEQLQQ(MBASE, CHR) #; 02183500 +BOOLEAN PROCEDURE STREAMSCEQLQQ(MBASE, CHR); 02183600 + VALUE CHR; 02183700 + ARRAY MBASE[0]; 02183800 + REAL CHR; 02183900 + BEGIN COMMENT 02184000 + COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR AN 02184100 + EQUAL CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 02184200 + EMULATES TEQ. 02184300 + ; 02184400 + STREAMADJUSTSICHAR; 02184500 + STREAMSCEQLQQ:= TFFF:= (STREAMGETSC=CHR); % COLLATING SEQ IMMATERIAL 02184600 + END STREAMSCEQL; 02184700 + 02184800 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02184900 +DEFINE STREAMSCNEQ(CHR) = 02185000 + STREAMSCNEQQQ(MBASE, CHR) #; 02185100 +BOOLEAN PROCEDURE STREAMSCNEQQQ(MBASE, CHR); 02185200 + VALUE CHR; 02185300 + ARRAY MBASE[0]; 02185400 + REAL CHR; 02185500 + BEGIN COMMENT 02185600 + COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 02185700 + NOT-EQUAL CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 02185800 + EMULATES TNE. 02185900 + ; 02186000 + STREAMADJUSTSICHAR; 02186100 + STREAMSCNEQQQ:= TFFF:= (STREAMGETSC^=CHR); % COLLATING SEQ IMMATERIAL 02186200 + END STREAMSCNEQ; 02186300 + 02186400 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02186500 +DEFINE STREAMSCGEQ(CHR) = 02186600 + STREAMSCGEQQQ(MBASE, CHR) #; 02186700 +BOOLEAN PROCEDURE STREAMSCGEQQQ(MBASE, CHR); 02186800 + VALUE CHR; 02186900 + ARRAY MBASE[0]; 02187000 + REAL CHR; 02187100 + BEGIN COMMENT 02187200 + COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 02187300 + GREATER-THAN-OR-EQUAL CONDITION. DOES NOT ADVANCE THE SOURCE 02187400 + INDEX. EMULATES TEG. 02187500 + ; 02187600 + STREAMADJUSTSICHAR; 02187700 + STREAMSCGEQQQ:= TFFF:= (BICCOLLATE[STREAMGETSC] >= BICCOLLATE[CHR]); 02187800 + END STREAMSCGEQ; 02187900 + 02188000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02188100 +DEFINE STREAMSCGTR(CHR) = 02188200 + STREAMSCGTRQQ(MBASE, CHR) #; 02188300 +BOOLEAN PROCEDURE STREAMSCGTRQQ(MBASE, CHR); 02188400 + VALUE CHR; 02188500 + ARRAY MBASE[0]; 02188600 + REAL CHR; 02188700 + BEGIN COMMENT 02188800 + COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 02188900 + GREATER-THAN CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 02189000 + EMULATES TGR. 02189100 + ; 02189200 + STREAMADJUSTSICHAR; 02189300 + STREAMSCGTRQQ:= TFFF:= (BICCOLLATE[STREAMGETSC] > BICCOLLATE[CHR]); 02189400 + END STREAMSCGTR; 02189500 + 02190000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02190100 +DEFINE STREAMSCALPHA = 02190200 + STREAMSCALPHAQQ(MBASE) #; 02190300 +BOOLEAN PROCEDURE STREAMSCALPHAQQ(MBASE); 02190400 + ARRAY MBASE[0]; 02190500 + BEGIN COMMENT 02190600 + TESTS THE CURRENT SOURCE CHARACTER FOR MEMBERSHIP IN THE "ALPHA" 02190700 + SET (0-9, A-Z, AND ODDLY, "?"). DOES NOT ADVANCE THE SOURCE INDEX.02190800 + EMULATES TAN. 02190900 + ; 02191000 + STREAMADJUSTSICHAR; 02191100 + STREAMSCALPHAQQ:= TFFF:= (STREAMGETSC IN BICALPHA); 02191200 + END STREAMSCALPHA; 02191300 + $ ENDSEGMENT 02199900 + 02200000 + $ BEGINSEGMENT 02200100 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02200200 +PROCEDURE PACKEBCDICTOBIC(S, SX, D, DX, N); 02200300 + VALUE SX, DX, N; 02200400 + ARRAY S, D[0]; 02200500 + REAL SX, DX, N; 02200600 + BEGIN COMMENT 02200700 + PACKS 8-BIT EBCDIC CHARACTERS TO 6-BIT BIC CHARACTERS FROM 02200800 + ARRAY S TO ARRAY D. SX IS THE 8-BIT CHARACTER OFFSET INTO S AND 02200900 + DX IS THE 6-BIT CHARACTER OFFSET INTO D. N IS THE NUMBER OF 02201000 + CHARACTERS TO PACK. PACKING PROCEEDS IN A FORWARD DIRECTION SO 02201100 + THAT SOURCE AND DESTINATION CAN REFER TO THE SAME LOCATION. 02201200 + THE SOURCE DATA IS UNCONDITIONALLY OVERWRITTEN WITH 8-BIT BIC. 02201300 + ; 02201400 + REAL 02201500 + NC, % NR CHARS LEFT TO PACK 02201600 + SA, % SOURCE ACCUMULATOR WORD, 02201700 + SB, % SOURCE BIT NBR 02201800 + SW, % SOURCE WORD INDEX 02201900 + DA, % DESTINATION ACCUMULATOR WORD 02202000 + DB, % DESTINATION BIT NBR 02202100 + DW; % DESTINATION WORD INDEX 02202200 + 02202300 + SW:= SX DIV 6; 02202400 + SB:= 45-(SX MOD 6)*8; 02202500 + DW:= DX DIV 8; 02202600 + DB:= 47-(DX MOD 8)*6; 02202700 + REPLACE POINTER(S[SX],8) BY POINTER(S[SX],8) FOR N WITH EBCDICTOBIC; 02202800 + SA:= S[SW]; 02202900 + DA:= D[DW]; 02203000 + NC:= N; 02203100 + WHILE NC > 0 DO 02203200 + BEGIN 02203300 + DA:= * & (SA)[DB:SB:6]; 02203400 + NC:= *-1; 02203500 + IF NC > 0 THEN 02203600 + BEGIN 02203700 + IF SB > 7 THEN 02203800 + SB:= *-8 02203900 + ELSE 02204000 + BEGIN 02204100 + SB:= 45; 02204200 + SA:= S[SW:= *+1]; 02204300 + END; 02204400 + 02204500 + IF DB > 5 THEN 02204600 + DB:= *-6 02204700 + ELSE 02204800 + BEGIN 02204900 + D[DW]:= DA; 02205000 + DB:= 47; 02205100 + DA:= D[DW:= *+1]; 02205200 + END; 02205300 + END; 02205400 + END WHILE; 02205500 + 02205600 + D[DW]:= DA; 02205700 + END PACKEBCDICTOBIC; 02205800 + 02205900 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02206000 +PROCEDURE UNPACKBICTOEBCDIC(S, SX, D, DX, N); 02206100 + VALUE SX, DX, N; 02206200 + ARRAY S, D[0]; 02206300 + REAL SX, DX, N; 02206400 + BEGIN COMMENT 02206500 + UNPACKS 6-BIT BIC CHARACTERS TO 8-BIT EBCDIC CHARACTERS FROM 02206600 + ARRAY S TO ARRAY D. SX IS THE 6-BIT CHARACTER OFFSET INTO S AND 02206700 + DX IS THE 8-BIT CHARACTER OFFSET INTO D. N IS THE NUMBER OF 02206800 + CHARACTERS TO UNPACK. UNPACKING PROCEEDS IN A REVERSE DIRECTION 02206900 + SO THAT SOURCE AND DESTINATION CAN REFER TO THE SAME LOCATION. 02207000 + ; 02207100 + REAL 02207200 + NC, % NR CHARS LEFT TO UNPACK 02207300 + SA, % SOURCE ACCUMULATOR WORD, 02207400 + SB, % SOURCE BIT NBR 02207500 + SW, % SOURCE WORD INDEX 02207600 + DA, % DESTINATION ACCUMULATOR WORD 02207700 + DB, % DESTINATION BIT NBR 02207800 + DW; % DESTINATION WORD INDEX 02207900 + 02208000 + SW:= (SX+N-1) DIV 8; 02208100 + SB:= 47-((SX+N-1) MOD 8)*6; 02208200 + DW:= (DX+N-1) DIV 6; 02208300 + DB:= 47-((DX+N-1) MOD 6)*8; 02208400 + SA:= S[SW]; 02208500 + DA:= D[DW]; 02208600 + NC:= N; 02208700 + WHILE NC > 0 DO 02208800 + BEGIN 02208900 + DA:= * & (SA.[SB:6])[DB:8]; 02209000 + NC:= *-1; 02209100 + IF NC > 0 THEN 02209200 + BEGIN 02209300 + IF SB < 47 THEN 02209400 + SB:= *+6 02209500 + ELSE 02209600 + BEGIN 02209700 + SB:= 5; 02209800 + SA:= S[SW:= *-1]; 02209900 + END; 02210000 + 02210100 + IF DB < 47 THEN 02210200 + DB:= *+8 02210300 + ELSE 02210400 + BEGIN 02210500 + D[DW]:= DA; 02210600 + DB:= 7; 02210700 + DA:= D[DW:= *-1]; 02210800 + END; 02210900 + END; 02211000 + END WHILE; 02211100 + 02211200 + D[DW]:= DA; 02211300 + REPLACE POINTER(D[DX],8) BY POINTER(D[DX],8) FOR N WITH BICTOEBCDIC; 02211400 + END UNPACKBICTOEBCDIC; 02211500 + 02220000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02220100 +REAL PROCEDURE BIC2EBC(B); 02220200 + VALUE B; 02220300 + REAL B; 02220400 + BEGIN COMMENT 02220500 + CONVERTS THE LOW-ORDER SIX 6-BIT BIC CHARACTERS IN W TO THEIR 02220600 + 8-BIT EBCDIC EQUIVALENTS AND RETURNS THE RESULTING WORD. 02220700 + ; 02220800 + 02220900 + EBCDICBUFF[0]:= B.[5:6] & (B)[13:11:6] & (B)[21:17:6] & (B)[29:23:6] 02221000 + & (B)[37:29:6] & (B)[45:35:6]; 02221100 + REPLACE POINTER(EBCDICBUFF,8) BY 02221200 + POINTER(EBCDICBUFF,8) FOR 6 WITH BICTOEBCDIC; 02221300 + BIC2EBC:= EBCDICBUFF[0]; 02221400 + END BIC2EBC; 02221500 + $ ENDSEGMENT 02221600 + 02265000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02265100 +%% END STREAM PROCEDURE EMULATION MODULE %%02265200 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02265300 + 02267000=00510000= + COMMENT EXAMIN RETURNS THE CHARACTER AT ABSOLUTE ADDRESS NCR; 02267100=00510000= +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02267200=00511000= +REAL PROCEDURE EXAMIN(A, NCR); 02267300=00511000= +VALUE 02267400=00511000= + NCR; 02267500=00511000= +REAL 02267600 + NCR; 02267700 +ARRAY 02267800 + A[0]; 02267900 + BEGIN 02268000=00512000= + STREAMLOCALS; 02268100 + STREAMSETSI(A, NCR); 02268200=00512000= + EXAMIN:= STREAMGETSC; 02268300=00512000= + END; 02268400=00512000= + 02270000=00528000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02270100 + %% INNER BLOCK OF COMPILER %%02270200 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02270300 + BEGIN 02270400=01000000= + COMMENT MAIN BLOCK; 02270500=01000000= INTEGER 02275000=01000800= OPINX; % USED FOR INDEXING INTO OPTIONS ARRAY. 02280000=01000800= BOOLEAN 02285000=01000802= @@ -530,10 +1719,6 @@ COMMENT SEQTOG INDICATES RESEQUENCING IS TO BE DONE; 02620000 NOHEADING; % TRUE IF DATIME HAS NOT BEEN CALLED. 02660000=01001480= BOOLEAN 02665000=01001490= NEWBASE; % NEW BASENUM FOUND ON A NEW $-CARD. 02670000=01001490= - BOOLEAN 02675000=01001500= - LASTCRDPATCH; % NORMALLY FALSE, SET TO TRUE WHEN THE 02680000=01001500= - % LAST CARD FROM SYMBOLIC LIBRARY READ 02685000=01001510= - % IS PATCHED FROM THE CARD READER. 02690000=01001520= INTEGER 02695000=01001530= XMODE; % TELLS DOLLARCARD HOW TO SET OPTIONS. 02700000=01001530= BOOLEAN 02705000=01001540= @@ -560,9 +1745,9 @@ COMMENT SEQTOG INDICATES RESEQUENCING IS TO BE DONE; 02620000 OR RESERVED WORD. THE FIRST WORD OF A GIVEN ENTRY IS 02810000=01009000= THE INTERNAL CODE ( OR ELBAT WORD AS IT IS USUALLY 02815000=01010000= CALLED). THE SECOND WORD CONTAINS THE FORWARD BIT (IN 02820000=01011000= - [1:1]) FOR PROCEDURES, THE LINK TO PREVIOUS ENTRY (IN 02825000=01012000= - [4:8]). THE NUMBER OF CHARACTORS IN THE ALPHA REPRESENTA- 02830000=01013000= - TION (IN [12:6]), AND THE FIRST 5 CHARACTERS OF ALPHA. 02835000=01014000= + [46:1]) FOR PROCEDURES, THE LINK TO PREVIOUS ENTRY (IN 02825000=01012000= + [43:8]). THE NUMBER OF CHARACTORS IN THE ALPHA REPRESENTA-02830000=01013000= + TION (IN [35:6]), AND THE FIRST 5 CHARACTERS OF ALPHA. 02835000=01014000= SUCCEDING WORDS CONTAIN THE REMAINING CHARACTORS OF ALPHA,02840000=01015000= FOLLOWED BY ANY ADDITIONAL INFORMATION. THE ELBAT WORD 02845000=01016000= AND THE ALPHA FOR ANY QUANTITY ARE NOT SPLIT ACROSS A ROW 02850000=01017000= @@ -581,7 +1766,7 @@ COMMENT INFO FORMAT 02910000 FOLLOWING IS A DESCRIPTION OF THE FORMAT OF ALL TYPES OF ENTRIES 02915000=01029000= ENTERED IN INFO: 02920000=01030000= THE FIRST WORD OF ALL ENTRIES IS THE ELBAT WORD. 02925000=01031000= - THE INCR FIELD ([27:8]) CONTAINS AN INCREMENT WHICH WHEN 02930000=01032000= + THE INCR FIELD ([20:8]) CONTAINS AN INCREMENT WHICH WHEN 02930000=01032000= ADDED TO THE CURRENT INDEX INTO INFO YELDSAN INDEX TO ANY 02935000=01033000= ADDITIONAL INFO (IF ANY) FOR THIS ENTRY. 02940000=01034000= E.G. IF THE INDEX IS IX THEN INFO[(IX+INCR).LINKR,(IX+INCR). 02945000=01035000= @@ -604,9 +1789,9 @@ COMMENT INFO FORMAT 02910000 IF THE NEXT AVAILABLE INFO SPACE IS CALLED NEXTINFO 03030000=01052000= THEN A IS ENTERED AS FOLLOWS:(ASSUME AN ELBAT WORD T HAS BEEN 03035000=01053000= CONSTRUCTED FOR A) 03040000=01054000= - T.LINK~ S[L]. (WHICH IS ZERO AT FIRST). 03045000=01055000= - INFO[NEXTINFO]~T. S[L]~NEXTINFO. 03050000=01056000= - NEXTINFO~NEXTINFO+NUMBER OF WORDS IN THIS 03055000=01057000= + T.LINK:= S[L]. (WHICH IS ZERO AT FIRST). 03045000=01055000= + INFO[NEXTINFO]:=T. S[L]:=NEXTINFO. 03050000=01056000= + NEXTINFO:=NEXTINFO+NUMBER OF WORDS IN THIS 03055000=01057000= ENTRY. 03060000=01058000= NOW S[L] POINTS TO THE ENTRY FOR A IN INFO AND THE ENTRY 03065000=01059000= ITSELF CONTAINS THE STOP FLAG ZERO. 03070000=01060000= @@ -617,14 +1802,14 @@ COMMENT INFO FORMAT 02910000 S[L] POINTS TO C,WHOSE ENTRY POINTS TO B WHOSE ENTRY 03095000=01065000= POINTS TO A. 03100000=01066000= THE SECOND WORD OF EACH ENTRY IN INFO IS MADE UP AS FOLLOWS: 03105000=01067000= - FWDPT =[1:1],THIS TELLS WHETHER A PROCEDURE WAS DECLARED 03110000=01068000= + FWDPT =[46:1],THIS TELLS WHETHER A PROCEDURE WAS DECLARED 03110000=01068000= FORWARD. IT IS RESET AT THE TIME OF ITS ACTUAL 03115000=01069000= FULL DECLARATION. 03120000=01070000= - PURPT =[4:8] THIS GIVES A DECREMENT WHICH GIVES THE RELATIVE 03125000=01071000= + PURPT =[43:8] THIS GIVES A DECREMENT WHICH GIVES THE RELATIVE 03125000=01071000= INDEX TO THE PREVIOUS INFO ENTRY WHEN SUBTRACTED 03130000=01072000= FROM THE CURRENT ENTRY INDEX. 03135000=01073000= - [12:6] TELLS THE NUMBER OF CHARACTERS IN THE ENTRY.(<64) 03140000=01074000= - [18:30] CONTAINS THE FIRST FIVE ALPHA CHARACTERS OF THE ENTRY 03145000=01075000= + [35:6] TELLS THE NUMBER OF CHARACTERS IN THE ENTRY.(<64) 03140000=01074000= + [29:30] CONTAINS THE FIRST FIVE ALPHA CHARACTERS OF THE ENTRY 03145000=01075000= AND SUCCEEDING WORDS CONTAIN ALL OVERFLOW IF NEEDED. 03150000=01076000= THESE WORDS CONTAIN 8 CHARACTERS EACH,LEFT JUSTIFIED. 03155000=01077000= THUS,AN ENTRY FOR SYMBOL FOLLOWED BY AN ENTRY 03160000=01078000= @@ -652,61 +1837,61 @@ COMMENT INFO FORMAT 02910000 OTHER ENTRIES REQUIRE ADDITIONAL INFORMATION. 03270000=01100000= ARRAYS: 03275000=01101000= THE FIRST WORD OF ADDITIONAL INFO CONTAINS THE NUMBER OF 03280000=01102000= - DIMENSIONS(IN THE LOW ORDER PART).[40:8] 03285000=01103000= + DIMENSIONS(IN THE LOW ORDER PART).[7:8] 03285000=01103000= EACH SUCCEEDING WORD CONTAINS INFORMATION ABOUT EACH LOWER 03290000=01104000= BOUND IN ORDER OF APPEARANCE,ONE WORD FOR EACH LOWER BOUND. 03295000=01105000= THESE WORDS ARE MADE UP AS FOLLOWS: 03300000=01106000= - [23:12] =ADD OPERATOR SYLLABLE (0101) OR 03305000=01107000= + [24:12] =ADD OPERATOR SYLLABLE (0101) OR 03305000=01107000= SUB OPERATOR SYLLABLE (0301) CORRESPONDING 03310000=01108000= RESPECTIVELY TO WHETHER THE LOWER BOUND IS 03315000=01109000= TO BE ADDED TO THE SUBSCRIPT IN INDEXING OR 03320000=01110000= SUBTRACTED. 03325000=01111000= - [35:11] =11 BIT ADDRESS OF LOWER BOUND,IF THE LOWER BOUND 03330000=01112000= + [12:11] =11 BIT ADDRESS OF LOWER BOUND,IF THE LOWER BOUND 03330000=01112000= REQUIRES A PRT OR STACK CELL,OTHERWISE THE BIT 03335000=01113000= - 35 IS IGNORED AND THE NEXT TEN BITS([36:10]) 03340000=01114000= + 35 IS IGNORED AND THE NEXT TEN BITS([11:10]) 03340000=01114000= REPRESENT THE ACTUAL VALUE OF THE LOWER BOUND 03345000=01115000= - [46:2] =00 OR 10 DEPENDING ON WHETHER THE [35:11] VALUE 03350000=01116000= + [1:2] =00 OR 10 DEPENDING ON WHETHER THE [12:11] VALUE 03350000=01116000= IS A LITERAL OR OPERAND,RESPECTIVELY. 03355000=01117000= PROCEDURES: 03360000=01118000= THE FIRST WORD OF ADDITIONAL INFO CONTAINS THE NUMBER OF 03365000=01119000= - PARAMETERS [40:8] 03370000=01120000= + PARAMETERS [7:8] 03370000=01120000= IF A STREAM PROCEDURE THEN THIS WORD CONTAINS ALSO IN 03375000=01121000= - [13:11] ENDING PRT ADDRESS FOR LABELS, 03380000=01122000= - [ 7:6] NO OF LABELS REQUIRING PRT ADDRESSES, AND [1:6] NUMBER 03385000=01123000= + [34:11] ENDING PRT ADDRESS FOR LABELS, 03380000=01122000= + [40:6] NO OF LABELS REQUIRING PRT ADDRESSES, AND [46:6] NUMBER 03385000=01123000= OF LOCALS. 03390000=01124000= SUCCEEDING WORDS (ONE FOR EACH FORMAL PARAMETER,IN ORDER 03395000=01125000= OF APPEARANCE IN FORMAL PARAPART) ARE 03400000=01126000= ELBAT WORDS SPECIFYING TYPE OF EACH PARAMETER AND WHETHER 03405000=01127000= - VALUE OR NOT([10:1]). 03410000=01128000= - THE ADDRESS([16:11]) IS THE F- ADDRESS FOR EACH. 03415000=01129000= - IF THE PARAMETER IS AN ARRAY THEN THE INCR FIELD([27:8]) 03420000=01130000= + VALUE OR NOT([37:1]). 03410000=01128000= + THE ADDRESS([31:11]) IS THE F- ADDRESS FOR EACH. 03415000=01129000= + IF THE PARAMETER IS AN ARRAY THEN THE INCR FIELD([20:8]) 03420000=01130000= CONTAINS THE NUMBER OF DIMENSIONS,OTHERWISE INCR IS MEANINGLESS. 03425000=01131000= - LINK([35:13]) IS MEANINGLESS. 03430000=01132000= + LINK([12:13]) IS MEANINGLESS. 03430000=01132000= IF A STREAM PROCEDURE THEN THE CLASS OF EACH PARAMETER IS 03435000=01133000= THAT OF LOCAL ID OR FILE ID, DEPENDING ON WHETHER OR NOT A RELEASE03440000=01134000= IS DONE IN THE STREAM PROCEDURE. 03445000=01135000= LABELS: 03450000=01136000= AT DECLARATION TIME THE ADDITIONAL INFO CONTAINS 0. THE SIGN 03455000=01137000= BIT TELLS WHETHER OR NOT THE DEFINITION POINT HAS BEEN REACHED. 03460000=01138000= - IF SIGN = 0, THEN [36:12] CONTAINS AN ADDRESS IN CODEARRAY OF A 03465000=01139000= + IF SIGN = 0, THEN [11:12] CONTAINS AN ADDRESS IN CODEARRAY OF A 03465000=01139000= LIST OF FORWARD REFERENCES TO THIS LABEL. THE END OF LIST FLAG IS03470000=01140000= - 0. IF SIGN =0, THEN [36:12] CONTAINS L FOR THIS LABEL. 03475000=01141000= + 0. IF SIGN =0, THEN [11:12] CONTAINS L FOR THIS LABEL. 03475000=01141000= SWITCHES: 03480000=01142000= - THE FIELD [36:12] CONTAINS L FOR THE BEGINNING OF SWITCH DECLAR- 03485000=01143000= - ATION. [24:12] CONTAINS L FOR FIRST SIMPLE REFERENCE TO SWITCH. 03490000=01144000= + THE FIELD [11:12] CONTAINS L FOR THE BEGINNING OF SWITCH DECLAR- 03485000=01143000= + ATION. [23:12] CONTAINS L FOR FIRST SIMPLE REFERENCE TO SWITCH. 03490000=01144000= IF SWITCH IS NOT SIMPLE, IT IS MARKED FORMAL. HERE SIMPLE MEANS 03495000=01145000= NO POSSIBILITY OF JUMPING OUT OF A BLOCK. ;03500000=01146000= DEFINE 03505000=01147000= - MON = [1:1] #, 03510000=01148000= - CLASS = [2:7] #, 03515000=01149000= - FORMAL = [9:1] #, 03520000=01150000= - VO = [10:1] #, 03525000=01151000= - LVL = [11:5] #, 03530000=01152000= - ADDRESS = [16:11] #, 03535000=01153000= - INCR = [27:8] #, 03540000=01154000= - LINK = [35:13] #, 03545000=01155000= - LINKR = [35:5] #, 03550000=01156000= - LINKC = [40:8] #; 03555000=01156000= + MON = [46:1] #, 03510000=01148000= + CLASS = [45:7] #, 03515000=01149000= + FORMAL = [38:1] #, 03520000=01150000= + VO = [37:1] #, 03525000=01151000= + LVL = [36:5] #, 03530000=01152000= + ADDRESS = [31:11] #, 03535000=01153000= + INCR = [20:8] #, 03540000=01154000= + LINK = [12:13] #, 03545000=01155000= + LINKR = [12:5] #, 03550000=01156000= + LINKC = [7:8] #; 03555000=01156000= 03560000=01157000= COMMENT THESE DEFINES ARE USED TO PICK APART THE ELBAT WORD. 03565000=01157000= MON IS THE BIT WHICH IS ON IF THE QUANTITY IS MONITORED. 03570000=01158000= @@ -919,22 +2104,19 @@ COMMENT INFO FORMAT 02910000 FCR, 04605000=01330000= NCR, 04610000=01330000= LCR, 04615000=01330000= - TLCR, 04620000=01330000= CLCR; 04625000=01330000= - INTEGER 04630000=01331000= - MAXTLCR; 04635000=01331000= + ARRAY REFERENCE 04630000 + SBUFF[0]; % CURRENT SOURCE INPUT BUFFER 04635100 COMMENT FCR CONTAINS ABSOLUTE ADDRESS OF THE FIRST CHARACTOR OF 04640000=01332000= THE CARD IMAGE CURRENTLY BEING SCANNED, NCR THE ADDRESS 04645000=01333000= OF THE NEXT CHARACTOR TO BE SCANNED, AND LCR THE LAST 04650000=01334000= - CHARACTOR (COLUMN 73). TLCR AND CLCR CONTAIN ADDRESS OF 04655000=01335000= - THE LAST CHARACTER IN THE TAPE AND CARD BUFFERS. MAXTLCR 04660000=01336000= - IS THE MAXIMUM OF TLCR WHEN THE INPUT IS BLOCKED; 04665000=01337000= + CHARACTOR (COLUMN 73). CLCR CONTAIN ADDRESS OF 04655000=01335000= + THE LAST CHARACTER IN THE CARD BUFFERS; 04660000=01336000= ARRAY 04670000=01340000= TEN[-46:69]; 04675000=01340000= DEFINE 04680000=01342000= PRTBASE = 129 #, 04685000=01342000= - PRTOP = 896 #; 04690000=01342000= - COMMENT PAGE AND TOP OF PRT; 04695000=01342000= + PRTOP = 896 #; COMMENT PAGE AND TOP OF PRT; 04690000=01342000= ARRAY 04700000=01343000= PRT[PRTBASE:PRTOP]; 04705000=01343000= INTEGER 04710000=01344000= @@ -1073,8 +2255,7 @@ COMMENT INFO FORMAT 02910000 JOINFO, COMMENT POINTS TO PSEUDO LABEL FOR JUMP OUTS; 05395000=01482000= LPRT, COMMENT SHOWS LOCATION OF THE LAST LABEL IN THE PRT ; 05400000=01483000= NESTLEVEL, COMMENT COUNTS NESTING FOR GO TO AND JUMP OUTS; 05405000=01484000= - JUMPLEVEL; 05410000=01485000= - COMMENT NUMBER OF LEVELS TO BE JUMPED OUT; 05415000=01485000= + JUMPLEVEL; COMMENT NUMBER OF LEVELS TO BE JUMPED OUT; 05410000=01485000= 05420000=01486000= COMMENT THE REALS ABOVE ARE FOR STREAM STATEMENT; 05425000=01486000= ARRAY 05430000=01487000= @@ -1084,8 +2265,7 @@ COMMENT INFO FORMAT 02910000 P, COMMENT CONTAINS NUMBER OF FORMALS FOR STREAM PROCS; 05450000=01489000= Z; COMMENT CONTAINS 1ST WORD OF INFO FOR STREAM FUNCTIONS; 05455000=01490000= ARRAY 05465000=01490510= - NEWTAPBUF[0:9]; 05470000=01490510= - SAVE ARRAY DEFINEARRAY[0:23]; 05475000=01491000= + DEFINEARRAY[0:23]; % >>>>> can 0:23 be right ?? SB 0:34 ?? <<<<< 05475000=01491000= COMMENT THESE VARIABLES ARE USED TO CONTROL ACTION OF THE DEFINE. 05480000=01492000= DEFINECTR COUNTS DEPTH OF NESTING OF DEFINE-# PAIRS. 05485000=01493000= THE CROSSHATCH PART OF THE TABLE ROUTINE USES DEFINECTR 05490000=01494000= @@ -1111,41 +2291,41 @@ COMMENT INFO FORMAT 02910000 BOOLEAN 05595000=01525000= RRB2; COMMENT SEE COMMENT AT RRB1 DECLARATION; 05600000=01525000= DEFINE 05610000=01526000= - ARRAYMONFILE = [27:11] #; COMMENT ARRAYMONFILE IS THE DEFINE FOR 05615000=01526000= + ARRAYMONFILE = [20:11] #; COMMENT ARRAYMONFILE IS THE DEFINE FOR 05615000=01526000= THE ADDRESS OF THE FILE DESCRIPTOR IN 05625000=01527000= THE FIRST WORD OF ADDITIONAL INFO; 05630000=01528000= DEFINE 05635000=01529000= - SVARMONFILE = [37:11] #; COMMENT MONITORFILE IS THE DEFINE FOR 05640000=01529000= + SVARMONFILE = [10:11] #; COMMENT MONITORFILE IS THE DEFINE FOR 05640000=01529000= THE ADDRESS OF THE FILE DESCRIPTOR IN 05650000=01530000= INFO FOR MONITORED SIMPLE VARIABLES; 05655000=01531000= DEFINE 05660000=01532000= - NODIMPART = [40:8] #;COMMENT THE FIRST ADDITIONAL WORD OF INFO 05665000=01532000= + NODIMPART = [7:8] #;COMMENT THE FIRST ADDITIONAL WORD OF INFO 05665000=01532000= FOR ARRAYS CONTAINS THE NUMBER OF DIMENSIONS05675000=01533000= IN NODIMPART; 05680000=01534000= DEFINE 05685000=01535000= - LABLMONFILE = [13:11] #; COMMENT LABLMONFILE DESIGNATES THE BIT 05690000=01535000= + LABLMONFILE = [34:11] #; COMMENT LABLMONFILE DESIGNATES THE BIT 05690000=01535000= POSITION IN THE FIRST WORD OF ADDITIONAL 05700000=01536000= INFO THAT CONTAINS THE MONITOR FILE 05705000=01537000= ADDRESS FOR LABELS; 05710000=01538000= DEFINE 05715000=01539000= - SWITMONFILE = [13:11] #; COMMENT SWITMONFILE DESIGNATES THE BIT 05720000=01539000= + SWITMONFILE = [34:11] #; COMMENT SWITMONFILE DESIGNATES THE BIT 05720000=01539000= POSITION IN THE FIRST WORD OF ADDITIONAL 05730000=01540000= INFO THAT CONTAINS THE MONITOR FILE 05735000=01541000= ADDRESS FOR LABELS; 05740000=01542000= DEFINE 05745000=01543000= - FUNCMONFILE = [27:11] #; COMMENT FUNCMONFILE DESIGNATES THE BIT 05750000=01543000= + FUNCMONFILE = [20:11] #; COMMENT FUNCMONFILE DESIGNATES THE BIT 05750000=01543000= POSITION IN THE FIRST WORD OF ADDITIONAL 05760000=01544000= INFO THAT CONTAINS THE MONITOR FILE 05765000=01545000= ADDRESS FOR LABELS; 05770000=01546000= DEFINE 05775000=01547000= - DUMPEE = [2:11] #; 05780000=01547000= + DUMPEE = [45:11] #; 05780000=01547000= COMMENT THE DUMPEE FIELD IN THE FIRST 05785000=01547000= ADDITIONAL WORD OF INFO FOR LABELS CONTAINS 05790000=01548000= THE ADDRESS OF THE COUNTER THAT IS INCREMENTED 05795000=01549000= EACH TIME THE LABEL IS PASSED IF THAT LABEL 05800000=01550000= APPEARS IN A DUMP DECLARATION; 05805000=01551000= DEFINE 05810000=01552000= - DUMPOR = [24:11] #; 05815000=01552000= + DUMPOR = [23:11] #; 05815000=01552000= COMMENT THE DUMPOR FIELD IN THE FIRST 05820000=01552000= ADDITIONAL WORD OF INFO FOR LABELS CONTAINS 05825000=01553000= THE ADDRESS OF THE ROUTINE THAT IS GENERATED 05830000=01554000= @@ -1153,36 +2333,41 @@ COMMENT INFO FORMAT 02910000 THE PRINTI ROUTINE; 05840000=01556000= DEFINE 05845000=01556500= SUBOP = 48 #; 05850000=01556500= - FILE 05855000=01556900= - OUT CODE DISK SERIAL[1:1](1, 1023); 05860000=01556900= + ARRAY 05855000=01556900= + CODEBUFF[0:1023]; % CODE BUFFER (WAS A FILE) 05860000=01556900= FILE 05865000=01557000= - IN CARD(RR1, 10, RR2); 05870000=01557000= + CARD(KIND=DISK, DEPENDENTSPECS, FILEUSE=IN); 05870000=01557000= FILE 05875000=01558000= - OUT LINE DISK SERIAL[20:2400](RR3, 15, RR4, SAVE 10); 05880000=01558000= + LINE(KIND=PRINTER, MAXRECSIZE=20, FRAMESIZE=48, FILEUSE=OUT); 05880000=01558000= ARRAY 05885000=01559010= LIN[0:20]; COMMENT PRINT OUTPUT BUILT IN LIN; 05890000=01559010= INTEGER 05900000=01559020= DA; 05905000=01559020= - SAVE FILE OUT NEWTAPE DISK SERIAL[20:2400](RR5, RR6, RR7, SAVE 1); 05910000=01560000= - FILE 05915000=01561000= - IN TAPE 6"OCRDIMG"(2, RR8, RR9); 05920000=01561000= - SAVE ARRAY CBUFF, TBUFF[0:9]; % INPUT BUFFERS. 05925000=01561056= + INTEGER 05910000 + CARDRECSIZE, % FRAMESIZE UNITS 05910100 + CODELENGTH; % LENGTH OF DATA IN CODE[*] 05910500 + ARRAY 05911000=01561056= + CBUFF[0:9]; % INPUT BUFFER. 05912000 FILE 05930000=01561300= - OUT CODISK DISK SERIAL[20:600](2, 30, 300); 05935000=01561300= + CODISK(KIND=DISK, MAXRECSIZE=30, BLOCKSIZE=300, FRAMESIZE=48, 05935000=01561300= + AREAS=20, AREASIZE=600); 05936000 FILE 05940000=01561400= - OUT DISK DISK[1:2100]6"MCP"6"DISK"(3, 30, 300, SAVE 99); 05945000=01561400= + DISK(KIND=DISK, MAXRECSIZE=30, BLOCKSIZE=300, FRAMESIZE=48, 05945000=01561400= + AREAS=1, AREASIZE=2100, PROTECTION=SAVE, TITLE="MCP/DISK."); 05946000=01561400= DEFINE 05950000=01561410= MCPTYPE = 63 #, 05955000=01561420= DCINTYPE = 62 #, 05960000=01561430= TSSINTYPE = 61 #; 05965000=01561430= 05970000=01561440= COMMENT ESPOL CODE FILES ARE UNIQUELY TYPED IN THEIR FILE 05975000=01561440= - HEADERS. HEADER[4],[36:6] IS THE FIELD USED TO CONTAIN 05980000=01561450= + HEADERS. HEADER[4].[11:6] IS THE FIELD USED TO CONTAIN 05980000=01561450= THE TYPE; 05985000=01561460= FILE 05990000=01561500= - OUT DECK 0(2, 10); 05995000=01561500= + DECK(KIND=DISK, MAXRECSIZE=10, BLOCKSIZE=300, FRAMESIZE=48, 05995000=01561500= + AREAS=20, AREASIZE=990, PROTECTION=SAVE); 05995100 FILE 06000000=01561600= - STUFF DISK SERIAL[20:150](2, 10, 30, SAVE 15); 06005000=01561600= + STUFF(KIND=DISK, MAXRECSIZE=10, BLOCKSIZE=30, FRAMESIZE=48, 06005000=01561600= + AREAS=20, AREASIZE=150, PROTECTION=SAVE); 06006000 ARRAY 06010000=01561700= TWXA[0:16]; 06015000=01561700= REAL 06020000=01562000= @@ -1253,7 +2438,7 @@ COMMENT ESPOL CODE FILES ARE UNIQUELY TYPED IN THEIR FILE 05975000 FORWARD; 06360000=01627000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%06365000=01627000= DEFINE 06370000=01628000= - PURPT = [4:8] #, 06375000=01628000= + PURPT = [43:8] #, 06375000=01628000= SECRET = 2 #; 06380000=01628000= 06385000=01629000= COMMENT THESE DEFINES GIVE THE NAMES OF THE WORD MODE OPERATORS. THE 06390000=01629000= @@ -1362,12 +2547,12 @@ COMMENT ESPOL CODE FILES ARE UNIQUELY TYPED IN THEIR FILE 05975000 MENT. PRTI GIVES NEXT PRT CELL POSSIBLY AVAILABLE FOR 06920000=01705000= TEMPORARY ASSIGNMENT; 06925000=01706000= DEFINE 06930000=01707000= - ALPHASIZE = [12:6] #; 06935000=01707000= + ALPHASIZE = [35:6] #; 06935000=01707000= COMMENT ALPHASIZE IS THE DEFINE FOR THE BIT06940000=01707000= POSITION IN THE SECOND WORD OF INFO WHICH 06945000=01708000= CONTAINS THE LENGTH OF ALPHA; 06950000=01709000= DEFINE 06955000=01710000= - EDOCINDEX = L.[36:3], L.[39:7] #; 06960000=01710000= + EDOCINDEX = L.[11:3], L.[8:7] #; 06960000=01710000= COMMENT EDOCINDEX IS THE WORD 06965000=01710000= PORTION OF L SPLIT INTO A ROW AND06970000=01711000= COLUMN INDEX FOR EDOC; 06975000=01712000= @@ -1423,7 +2608,7 @@ COMMENT ESPOL CODE FILES ARE UNIQUELY TYPED IN THEIR FILE 05975000 FORWARD; 07225000=01719000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07230000=01719000= ARRAY 07235000=01720000= - CALLA[0:31, 0:255]; 07240000=01720000= + CALLA[0:31, 0:255]; 07240000=01720000= DEFINE 07245000=01721000= CALL[CALL1] = CALLA[(GT3:= CALL1).LINKR, GT3.LINKC] #; 07250000=01721000= REAL 07255000=01722000= @@ -1440,111 +2625,61 @@ COMMENT ESPOL CODE FILES ARE UNIQUELY TYPED IN THEIR FILE 05975000 07310000=01737300= COMMENT "BLANKET" BLANKS OUT N+1 WORDS IN "THERE"; 07315000=01737300= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07316000 - STREAM PROCEDURE BLANKET(N, THERE); 07320000=01737350= - VALUE 07325000=01737350= - N; 07330000=01737350= - BEGIN 07335000=01737400= - DI:= THERE; 07340000=01737450= - DS:= 8 LIT 6" "; 07345000=01737450= - SI:= THERE; 07350000=01737450= - DS:= N WDS; 07355000=01737450= - END BLANKET; 07360000=01737500= + DEFINE BLANKET(N, THERE) = 07320000=01737350= + BEGIN 07325000 + REPLACE POINTER(THERE,0) BY 6" " FOR (N)+1 WORDS; 07330000 + END BLANKET #; 07360000=01737500= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07362000 - STREAM PROCEDURE CHANGESEQ(VAL, OLDSEQ); 07365000=01741200= - VALUE 07370000=01741200= - OLDSEQ; 07375000=01741200= - BEGIN 07380000=01741300= - DI:= OLDSEQ; 07385000=01741300= - SI:= VAL; 07390000=01741300= - DS:= 8 DEC 07395000=01741300= + PROCEDURE CHANGESEQ(VAL, BUFF, OLDSEQ); 07365000=01741200= + VALUE 07366000=01741200= + VAL, OLDSEQ; 07368000=01741200= + ARRAY 07370000 + BUFF[0]; 07372000 + REAL 07374000 + VAL, OLDSEQ; 07376000 + BEGIN 07378000=01741300= + STREAMLOCALS; 07380000 + STREAMSETDI(BUFF, OLDSEQ); 07382000=01741400= + STREAMSETLOCSI(VAL); 07384000=01741400= + STREAMTRANSFERDEC(8); 07386000=01741500= END CHANGESEQ; 07400000=01741300= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07402000 - STREAM PROCEDURE SEQUENCEERROR(L); 07405000=01742100= + DEFINE SEQUENCEERROR(L) = 07405000=01742100= BEGIN 07410000=01742110= - DI:= L; 07415000=01742110= - DS:= 16 LIT 6"SEQUENCE ERROR "; 07420000=01742110= - END SEQUENCEERROR; 07425000=01742110= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07426000 - STREAM PROCEDURE GETVOID(VP, NCR, LCR, SEQ); 07430000=01756000= - VALUE 07435000=01756000= - NCR, 07440000=01756000= - LCR; 07445000=01756000= - BEGIN 07450000=01757000= - LABEL 07455000=01758000= - L, 07460000=01758000= - EXIT; 07465000=01758000= - LOCAL N; 07470000=01759000= - SI:= NCR; 07475000=01761000= - DI:= VP; 07480000=01761000= - DS:= 8 LIT 6"0"; 07485000=01761000= - 2(34(IF SC = 6" " THEN SI:= SI+1 ELSE JUMP OUT 2 TO L)); 07490000=01762000= - GO TO EXIT; % NO VOID RANGE GIVEN, RETURN ZERO. 07495000=01763000= -L: IF SC = 6"%" THEN 07500000=01764500= - GO TO EXIT; % STILL NO RANGE. 07505000=01764500= - IF SC = 6""" THEN 07510000=01765000= - BEGIN 07515000=01766000= - SI:= SI+1; 07520000=01767000= - DI:= LCR; 07525000=01767000= - DS:= 1 LIT 6"""; % STOPPER FOR SCAN 07530000=01767000= - NCR:= SI; % TEMP. STORAGE, SINCE NCR IS "LOCAL" TO GETVOID. 07535000=01768000= - 8 (IF SC = 6""" THEN JUMP OUT ELSE BEGIN TALLY:= TALLY+1;SI:= SI+ 07540000=01770000= - 1 07545000=01770000= - END); 07550000=01770000= - END 07555000=01772000= - ELSE 07560000=01772000= - BEGIN 07565000=01772000= - NCR:= SI; % TEMP. STORAGE, SINCE NCR IS "LOCAL" TO GETVOID. 07570000=01773000= - DI:= LCR; 07575000=01774000= - DS:= 1 LIT 6" "; % STOPPER FOR SCAN 07580000=01774000= - 8 (IF SC = 6" " THEN JUMP OUT ELSE BEGIN TALLY:= TALLY+1;SI:= SI+ 07585000=01776000= - 1 07590000=01776000= - END); 07595000=01776000= - END; 07600000=01777000= - SI:= NCR; 07605000=01780000= - DI:= VP; 07610000=01780000= - DI:= DI+8; % RESTORE POINTERS. 07615000=01780000= - N:= TALLY; 07620000=01781000= - DI:= DI-N; 07625000=01781000= - DS:= N CHR; 07630000=01781000= -EXIT: 07635000=01784000= - END OF GETVOID; 07640000=01784000= - REAL 07645000=01785000= - VOIDCR, 07650000=01785000= - VOIDPLACE, 07655000=01785000= - VOIDTCR, 07660000=01785000= - VOIDTPLACE; 07665000=01785000= + REPLACE POINTER(L,8) BY 07415000=01742110= + 6"SEQUENCE", 6" ERROR "; 07420000=01742110= + END SEQUENCEERROR #; 07425000=01742110= FORMAT 07670000=01802000= - BUG(X24, 4(A4, X2)); 07675000=01802000= + BUG(X24, 4(A4, X2)); 07675000=01802000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07676000 PROCEDURE DATIME; 07680000=01820000= BEGIN 07685000=01821000= INTEGER 07690000=01822000= H, 07695000=01822000= - MIN, 07700000=01822000= + MN, 07700000=01822000= Q; 07705000=01822000= - ALPHA 07710000=01822000= + REAL 07710000=01822000= N1, 07715000=01822000= N2; 07720000=01822000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07722000 - ALPHA STREAM PROCEDURE DATER(DATE); 07725000=01823000= - VALUE 07735000=01823000= - DATE; 07740000=01823000= - BEGIN 07745000=01824000= - DI:= LOC DATER; 07750000=01825000= - SI:= LOC DATE; 07755000=01825000= - SI:= SI+2; 07760000=01825000= - 2(DS:= 2 CHR;DS:= LIT 6"/"); 07765000=01826000= - DS:= 2 CHR; 07770000=01826000= - END OF DATER; 07775000=01827000= + POINTER 07725000 + P; 07730000 H:= TIME1 DIV 216000; 07780000=01828000= - MIN:= (TIME1 DIV 3600) MOD 60; 07785000=01828000= - N1:= DISK.MFID; 07790000=01828500= - N2:= DISK.FID; 07795000=01828500= - WRITE(LINE, < X22, 6"BURROUGHS B-5700 ESPOL COMPILER MARK ", 07800000=01835500= - 6"XVI.0.00", 6" ", A6, 6"DAY, ", O, 6", ", I2, 6":", A2, 07805000=01835500= - X1, A3, ////X45, A1, A6, 6"/", A1, A6, /X45, 15(6"=")//>, 07810000=01835500= - TIME(6), DATER(TIME(5)), 12*REAL(Q:= H MOD 12 = 0)+Q, 07815000=01835500= - Q:= MIN MOD 10+(MIN DIV 10)*64, IIF H >= 12 THEN 6"PM." ELSE 07820000=01835500= - 6"AM.", N1.[6:6], N1, N2.[6:6], N2); 07825000=01835500= + MN:= (TIME1 DIV 3600) MOD 60; 07785000=01828000= + REPLACE P:POINTER(EBCDICBUFF,8) BY DISK.TITLE; 07790000=01828500= + N2:= MIN(OFFSET(P)-1, 118); 07795000=01828500= + WRITE(LINE, 07800000=01835500= + = 12 THEN "PM." ELSE "AM.", 07820000=01835000= + (120-N2) DIV 2, N2, POINTER(EBCDICBUFF,8), 07825000=01835550= + (120-N2) DIV 2, N2); 07826000 NOHEADING:= FALSE; 07830000=01836000= END OF DATIME; 07835000=01837000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07840000=01837000= @@ -1552,187 +2687,222 @@ EXIT: 07635000 COMMENT THIS SECTION CONTAINS ALL CODE PERTAINENT TO READING CARDS 07850000=02000000= AND SCANNING THEM; 07855000=02001000= 07860000=02001836= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07862000 COMMENT OCTIZE REFORMATS ACCUM FOR OCTAL CONSTANTS; 07865000=02001836= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07866000 - BOOLEAN STREAM PROCEDURE OCTIZE(S, D, SKP, CNT); 07870000=02001838= - VALUE 07880000=02001838= - SKP, 07885000=02001838= - CNT; 07890000=02001838= - BEGIN 07895000=02001840= - SI:= S; 07900000=02001842= - SI:= SI+4; 07905000=02001842= - DI:= D; 07910000=02001842= - SKP(DS:= 3 RESET); % RIGHT JUSTIFY. 07915000=02001842= - CNT(IF SC >= 6"8" THEN TALLY:= 1 ELSE IF SC < 6"0" THEN TALLY:= 1; 07920000=02001846= - SKIP 3 SB;3(IF SB THEN DS:= SET ELSE DS:= RESET;SKIP SB)); 07925000=02001846= - SI:= D; 07930000=02001848= - IF SB THEN 07935000=02001848= - BEGIN 07940000=02001850= - TALLY:= 1; 07945000=02001850= - DI:= D; 07950000=02001850= - DS:= RESET 07955000=02001850= - END; % PREVENT FLAG BIT. 07960000=02001850= - OCTIZE:= TALLY;% "1" = NON OCTAL CHARACTER OR FLAG BIT. 07965000=02001852= + BOOLEAN PROCEDURE OCTIZE(S, SX, D, DX, SKP, CNT); 07870000=02001838= + VALUE 07872000=02001838= + SX, DX, SKP, CNT; 07874000=02001838= + ARRAY 07876000 + S, D[0]; 07878000 + REAL 07880000 + SX, DX, SKP, CNT; 07882000 + BEGIN 07884000=02001840= + STREAMLOCALS; 07886000 + TALLY:= 0; 07888000 + STREAMSETSI(S, SX); 07890000=02001842= + STREAMSKIPSI(+3); 07892000=02001842= + STREAMSETDI(D, DX); 07894000=02001842= + THRU SKP DO 07896000=02001842= + STREAMSETDB(3, 0); % RIGHT JUSTIFY. 07898000 + 07900000 + THRU CNT DO 07902000=02001846= + BEGIN 07904000 + IF STREAMSCGEQ(6"8") THEN 07906000 + TALLY:= 1 07908000 + ELSE 07910000 + IF STREAMSCLSS(6"0") THEN 07912000 + TALLY:= 1; 07914000 + 07916000 + STREAMSKIPSB(3); 07918000=02001846= + THRU 3 DO 07920000 + BEGIN 07922000 + IF STREAMTESTSB THEN 07924000 + STREAMSETDB(1, 1) 07926000 + ELSE 07928000 + STREAMSETDB(1, 0); 07930000 + 07932000 + STREAMSKIPSB(1); 07934000 + END; 07936000 + END THRU; 07938000 + 07940000=02001850= + OCTIZE:= BOOLEAN(TALLY); % "1" = NON OCTAL CHARACTER. 07942000=02001852= END OCTIZE; 07970000=02001854= - 07975000=02001856= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07976000 COMMENT HEXIZE REFORMATS ACCUM FOR HEXADECIMAL CONSTANTS; 07980000=02001856= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07982000 - BOOLEAN STREAM PROCEDURE HEXIZE(S, D, SKP, CNT); 07985000=02001858= - VALUE 07995000=02001858= - SKP, 08000000=02001858= - CNT; 08005000=02001858= - BEGIN 08010000=02001860= - LOCAL T1, T2, TEMP2, TEMP1; 08015000=02001860= - LABEL 08020000=02001860= - AGIN; 08025000=02001860= - 08030000=02001862= + BOOLEAN PROCEDURE HEXIZE(S, SX, D, DX, SKP, CNT); 07985000=02001858= + VALUE 07990000=02001858= + SX, DX, SKP, CNT; 07992000=02001858= + ARRAY 07994000=02001858= + S, D[0]; 07996000 + REAL 07998000 + SX, DX, SKP, CNT; 08000000 + BEGIN 08002000=02001860= + STREAMLOCALS; 08004000 + REAL 08006000=02001860= + T1, 08008000 + T2, 08010000 + TEMP2, 08012000 + TEMP1; 08014000 + LABEL 08016000=02001860= + AGIN; 08018000=02001860= COMMENT LOCAL VARIABLES ARE LOCATED IN REVERSE ORDER FROM THE 08035000=02001862= WAY THEY ARE DECLARED IN STREAM PROCEDURES; 08040000=02001864= - DI:= LOC TEMP1; 08045000=02001866= - CNT(DS:= LIT 6"1"); % IN CASE A CHAR=A,B,C,D,OR F. 08050000=02001866= - SI:= S; 08055000=02001868= - SI:= SI+3; 08060000=02001868= - DI:= LOC TEMP1; % WE MAY OVERFLOW INTO TEMP2. 08065000=02001868= - CNT(IF SC < 6"0" THEN IF SC >= 6"A" THEN IF SC <= 6"F" THEN 08070000=02001870= - % WORK HARD. 08075000=02001870= - BEGIN 08080000=02001874= - T1:= SI;T2:= DI;DI:= T1;SI:= T2; % FLIP, MAN. 08082000 - DS:= 3 RESET;SI:= T1;DI:= T2; % FLIP BACK. 08085000=02001876= - DS:= 1 ADD;DI:= DI-1;SKIP 2 DB;DS:= 1 SET;SKIP 3 DB;GO AGIN; 08090000=02001882= - END; 08095000=02001882= - IF SC < 6"0" THEN 08100000=02001884= - TALLY:= 1; 08105000=02001884= - DS:= CHR; % < 0 = NON-HEX CHARACTER. 08110000=02001884= -AGIN: 08115000=02001888= - ); 08120000=02001888= - SI:= LOC TEMP1; 08125000=02001890= - DI:= D; 08130000=02001890= - SKP(DS:= 4 RESET); % RIGHT ADJUST CONSTANT. 08135000=02001890= - CNT(SKIP 2 SB;4(IF SB THEN DS:= SET ELSE DS:= RESET;SKIP SB)); 08140000=02001894= - % FINAL CONVERT. 08145000=02001894= - SI:= D; 08150000=02001895= - IF SB THEN 08155000=02001895= - BEGIN 08160000=02001896= - TALLY:= 1; 08165000=02001896= - DI:= D; 08170000=02001896= - DS:= RESET 08175000=02001896= - END; % PREVENT FLAG BIT. 08180000=02001896= - HEXIZE:= TALLY;% "1" IF PROGRAMMER GOOFED. 08185000=02001897= + TALLY:= 0; 08042000 + STREAMSETDI(STREAMTEMPD, 0); 08044000=02001866= + THRU CNT DO 08046000=02001866= + STREAMSMEARLIT(1, 6"1"); % IN CASE A CHAR=A,B,C,D,OR F. 08048000 + 08050000 + STREAMSETSI(S, SX); 08052000=02001868= + STREAMSKIPSI(+3); 08054000=02001868= + STREAMSETDI(STREAMTEMPD, 0); 08056000=02001868= + THRU CNT DO 08058000=02001870= + BEGIN 08060000 + IF STREAMSCLSS(6"0") THEN 08062000 + IF STREAMSCGEQ(6"A") THEN 08064000 + IF STREAMSCLEQ(6"F") THEN 08066000 + BEGIN % WORK HARD. 08068000=02001870= + T1:= STREAMGETSI; 08070000=02001874= + T2:= STREAMGETDI; 08072000 + STREAMSETDI(S, T1); 08074000 + STREAMSETSI(STREAMTEMPD, T2); % FLIP, MAN. 08076000 + STREAMSETDB(3, 0); 08078000=02001876= + STREAMSETSI(S, T1); 08080000 + STREAMSETDI(STREAMTEMPD, T2); % FLIP BACK. 08082000 + STREAMSMEARLIT(1, STREAMGETSC+STREAMGETDC); % DS:= 1 ADD ?? 08084000=02001882= + STREAMSKIPDI(-1); 08086000 + STREAMSKIPDB(2); 08088000 + STREAMSETDB(1, 1); 08090000 + STREAMSKIPDB(3); 08092000 + GO AGIN; 08094000 + END; 08096000=02001882= + 08098000 + IF STREAMSCLSS(6"0") THEN 08100000=02001884= + TALLY:= 1; 08102000=02001884= + 08104000 + STREAMTRANSFERCHR(1); % < 0 = NON-HEX CHARACTER.08106000=02001884= + AGIN: 08108000=02001888= + END THRU; 08110000=02001888= + 08112000 + STREAMSETSI(STREAMTEMPD, 0); 08114000=02001890= + STREAMSETDI(D, DX); 08116000=02001890= + THRU SKP DO 08118000=02001890= + STREAMSETDB(4, 0); % RIGHT ADJUST CONSTANT. 08120000 + 08122000 + THRU CNT DO 08124000=02001894= + BEGIN 08126000 + STREAMSKIPSB(2); 08128000 + THRU 4 DO 08130000 + BEGIN 08132000 + IF STREAMTESTSB THEN 08134000 + STREAMSETDB(1, 1) 08136000 + ELSE 08138000 + STREAMSETDB(1, 0); 08140000 + 08142000 + STREAMSKIPDB(1); 08144000 + END; 08146000 + END; 08148000 + % FINAL CONVERT. 08150000=02001894= + HEXIZE:= BOOLEAN(TALLY); % "1" IF PROGRAMMER GOOFED. 08152000=02001896= END HEXIZE; 08190000=02001898= - 08195000=02002000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08196000 COMMENT PUTSEQNO PUTS THE SEQUENCE NUMBER OF THE CARD-IMAGE 08200000=02002000= CURRENTLY BEING SCANNED INTO THE INFO TABLE IN CASE 08205000=02003000= IT IS NEEDED FOR FUTURE REFERENCE; 08210000=02004000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08212000 - STREAM PROCEDURE PUTSEQNO(INFO, LCR); 08215000=02005000= - VALUE 08220000=02005000= - LCR; 08225000=02005000= - BEGIN 08230000=02006000= - DI:= INFO; 08235000=02006000= - SI:= LCR; 08240000=02006000= - DS:= WDS; 08245000=02006000= + PROCEDURE PUTSEQNO(INFO, IX, BUFF, LCR); 08215000=02005000= + VALUE 08216000=02005000= + IX, LCR; 08218000=02005000= + ARRAY 08220000 + INFO, BUFF[0]; 08222000 + REAL 08224000 + IX, LCR; 08226000 + BEGIN 08228000=02006000= + STREAMLOCALS; 08230000 + STREAMSETDI(INFO, IX); 08232000=02006000= + STREAMSETSI(BUFF, LCR); 08234000=02006000= + STREAMTRANSFERWDS(1); 08236000=02006000= END PUTSEQNO; 08250000=02006000= - 08255000=02007000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08256000 COMMENT TURNONSTOPLIGHT TURNS THE LIGHT "RED" ON THE "CORNER". 08260000=02007000= I.E., THE PURPOSE OF THIS ROUTINE IS TO INSERT A PER- 08265000=02008000= CENT SIGN IN COLUMN 73 AS AN END OF CARD SENTINEL FOR 08270000=02009000= THE SCANNER; 08275000=02010000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08276000 - STREAM PROCEDURE TURNONSTOPLIGHT(RED, CORNER); 08280000=02011000= - VALUE 08285000=02011000= - RED, 08290000=02011000= - CORNER; 08295000=02011000= - BEGIN 08300000=02012000= - DI:= CORNER; 08305000=02012000= - SI:= LOC CORNER; 08310000=02012000= - SI:= SI-1; 08315000=02012000= - DS:= CHR 08320000=02012000= + PROCEDURE TURNONSTOPLIGHT(RED, BUFF, CORNER); 08280000=02011000= + VALUE 08282000=02011000= + RED, CORNER; 08284000=02011000= + ARRAY 08286000 + BUFF[0]; 08288000 + REAL 08290000 + RED, CORNER; 08292000 + BEGIN 08294000=02012000= + STREAMLOCALS; 08296000 + STREAMSETDI(BUFF, CORNER); 08298000=02012000= + STREAMSETLOCSI(RED); 08300000=02012000= + STREAMSKIPSI(+7); 08302000=02012000= + STREAMTRANSFERCHR(1); 08304000=02012000= END; 08325000=02012000= - COMMENT WRITNEW TRANSFERS THE CARD IMAGE TO THE NEWTAPE BUFFER 08330000=02014000= - AND REPORTS IF THE CARD MIGHT BE CONTROL CARD; 08335000=02015000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08336000 - BOOLEAN STREAM PROCEDURE WRITNEW(NEW, FCR); 08340000=02016000= - VALUE 08350000=02016000= - FCR; 08355000=02016000= - BEGIN 08360000=02017000= - SI:= FCR; 08365000=02017000= - IF SC ^= 6"$" THEN 08370000=02017000= - TALLY:= 1; 08375000=02017000= - DI:= NEW; 08380000=02018000= - DS:= 10 WDS; 08385000=02018000= - WRITNEW:= TALLY 08390000=02020000= - END WRITNEW; 08395000=02020000= - COMMENT MKABS CONVERTS A DESCRIPTOR TO AN ABSOLUTE ADDRESS; 08400000=02021000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08402000 - REAL STREAM PROCEDURE MKABS(A); 08405000=02022000= - BEGIN 08415000=02023000= - D1:= A; 08420000=02023000= - MKABS:= DI 08425000=02023000= - END MKABS; 08430000=02023000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08432000 - REAL STREAM PROCEDURE CONV(ACCUM, SKP, N); 08435000=02041000= - VALUE 08445000=02041000= - SKP, 08450000=02041000= - N; 08455000=02041000= - BEGIN 08460000=02042000= - SI:= ACCUM; 08465000=02043000= - SI:= SI+SKP; 08470000=02043000= - SI:= SI+3; 08475000=02043000= - DI:= LOC CONV; 08480000=02043000= - DS:= N OCT 08485000=02044000= + REAL PROCEDURE CONV(ACCUM, AX, SKP, N); 08435000=02041000= + VALUE 08436000=02001831= + AX, SKP, N; 08438000=02001831= + ARRAY 08440000 + ACCUM[0]; 08442000 + REAL 08444000 + AX, SKP, N; 08446000 + BEGIN 08448000=02001832= + STREAMLOCALS; 08450000 + STREAMSETSI(ACCUM, AX); 08452000=02001833= + STREAMSKIPSI(+SKP); 08454000=02001833= + STREAMSKIPSI(+3); 08456000=02001833= + STREAMSETDI(STREAMTEMPD, 0); 08458000=02001833= + STREAMTRANSFEROCT(N); 08460000=02001834= + CONV:= STREAMTEMPD[0]; 08462000 END; 08490000=02044000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08492000 - STREAM PROCEDURE MOVECHARACTERS(N, SORCE, SSKIP, DEST, DSKIP); 08495000=02045000= - VALUE 08500000=02046000= - N, 08505000=02046000= - SSKIP, 08510000=02046000= - DSKIP; 08515000=02046000= - BEGIN 08520000=02047000= - SI:= SORCE; 08525000=02048000= - DI:= DEST; 08530000=02048000= - SI:= SI+SSKIP; 08535000=02049000= - DI:= DI+DSKIP; 08540000=02049000= - DS:= N CHR; 08545000=02050000= + PROCEDURE MOVECHARACTERS(N, SORCE, SX, SK, DEST, DX, DK); 08494000=02045000= + VALUE 08496000=02046000= + N, SX, SK, DX, DK; 08498000=02046000= + REAL 08500000 + N, SX, SK, DX, DK; 08502000 + ARRAY 08504000 + SORCE, DEST[0]; 08506000 + BEGIN 08508000=02047000= + STREAMLOCALS; 08510000 + STREAMSETDI(DEST, DX); 08512000=02048000= + STREAMSETSI(SORCE, SX); 08514000=02049000= + STREAMSKIPSI(+SK); 08516000=02049000= + STREAMSKIPDI(+DK); 08518000=02049000= + STREAMTRANSFERCHR(N); 08520000=02049000= END; 08550000=02051000= 08555000=02052000= COMMENT MOVECHARACTERS MOVES N CHARACTERS FROM THE SSKIP-TH CHAR IN 08560000=02052000= "SORCE" TO THE DSKIP-TH CHAR IN "DEST". ; 08565000=02053000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08566000 - STREAM PROCEDURE MOVE(W)6"WORDS FROM"(A)6"TO"(B); 08570000=02054000= + PROCEDURE MOVE(W)"WORDS FROM"(A, AX)"TO"(B, BX); 08570000=02054000= VALUE 08575000=02054000= - W; 08580000=02054000= - BEGIN 08585000=02055000= - SI:= A; 08590000=02055000= - DI:= B; 08595000=02055000= - DS:= W WDS 08600000=02055000= + W, AX, BX; 08580000=02054000= + ARRAY 08585000=02055000= + A, B[0]; 08586000 + REAL 08588000 + W, AX, BX; 08590000 + BEGIN 08592000=02055000= + REPLACE POINTER(B[BX],0) BY POINTER(A[AX],0) FOR (W) WORDS; 08594000=02055000= END; 08605000=02055000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08606000 - STREAM PROCEDURE RESIZE(FIEL); 08610000=02056000= - BEGIN 08615000=02057000= - LOCAL T; 08620000=02057000= - SI:= FIEL; 08625000=02058000= - DI:= LOC T; 08630000=02058000= - DS:= WDS; 08635000=02058000= - SI:= T; 08640000=02059000= - DI:= FIEL; 08645000=02059000= - DI:= DI+1; 08650000=02059000= - SKIP 2 DB; 08655000=02059000= - DS:= 10 SET 08660000=02060000= - END; 08665000=02060000= - 08670000=02061000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08672000 COMMENT EQUAL COMPARES COUNT CHARACTERS LOCATED AT A AND B FOR 08675000=02061000= EQUALITY. THIS ROUTINE IS USED IN THE LOOK-UP OF ALPHA 08680000=02061500= QUANTITIES IN THE DIRECTORY; 08685000=02062000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08686000 - BOOLEAN STREAM PROCEDURE EQUAL(COUNT, A, B); 08690000=02062500= - VALUE 08700000=02062500= - COUNT; 08705000=02062500= - BEGIN 08710000=02063000= - TALLY:= 1; 08715000=02063500= - SI:= A; 08720000=02063500= - DI:= B; 08725000=02063500= - IF COUNT SC = DC THEN 08730000=02064000= - EQUAL:= TALLY 08735000=02064500= + BOOLEAN PROCEDURE EQUAL(COUNT, A, AX, B, BX); 08690000=02062500= + VALUE 08692000=02062500= + COUNT, AX, BX; 08694000=02062500= + REAL 08696000 + COUNT, AX, BX; 08698000 + ARRAY 08700000 + A, B[0]; 08702000 + BEGIN 08704000=02063000= + STREAMLOCALS; 08706000 + STREAMSETSI(A, AX); 08708000=02063500= + STREAMSETDI(B, BX); 08710000=02063500= + EQUAL:= STREAMCOMPAREEQL(COUNT); 08712000=02064000= END EQUAL; 08740000=02064500= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08742000 PROCEDURE READACARD; 08745000=02065000= @@ -1746,11 +2916,11 @@ COMMENT EQUAL COMPARES COUNT CHARACTERS LOCATED AT A AND B FOR 08675000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08785000=02065600= PROCEDURE SCANNER; 08790000=02066000= BEGIN 08795000=02066500= - 08800000=02067000= -COMMENT "SCAN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 08805000=02067000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08800000=02067000= +COMMENT "SCNN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 08805000=02067000= IT IS DRIVEN BY A SMALL WORD MODE PROCEDURE CALLED "SCANNER", 08810000=02067500= - WHICH CHECKS FOR A QUANTITY BEING BROKEN ACROSS A CARD. "SCAN" 08815000=02068000= - IS CONTROLLED BY A VARIABLE CALLED "RESULT". "SCAN" ALSO 08820000=02068500= + WHICH CHECKS FOR A QUANTITY BEING BROKEN ACROSS A CARD. "SCNN" 08815000=02068000= + IS CONTROLLED BY A VARIABLE CALLED "RESULT". "SCNN" ALSO 08820000=02068500= INFORMS THE WORLD OF ITS ACTION BY MEANS OF THE SAME VARIABLE, 08825000=02069000= HENCE THE VARIABLE "RESULT" IS PASSED BY BOTH NAME AND VALUE. 08830000=02069500= THE MEANING OF "RESULT" AS INPUT IS: 08835000=02070000= @@ -1777,11 +2947,11 @@ COMMENT "SCAN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 08805000 1 AN IDENTIFIER WAS BUILT. 08940000=02080500= 2 A SPECIAL CHARACTER WAS OBTAINED. 08945000=02081000= 3 A NUMBER (INTEGER) WAS BUILT. 08950000=02081500= - "SCAN" PUTS ALL STUFF SCANNED (EXCEPT FOR COMMENTS AND 08955000=02082000= + "SCNN" PUTS ALL STUFF SCANNED (EXCEPT FOR COMMENTS AND 08955000=02082000= DISCARDED BLANKS) INTO "ACCUM" (CALLED "ACCUMULATOR" 08960000=02082500= FOR THE REST OF THIS DISCUSSION). 08965000=02083000= "COUNT" IS THE VARIABLE THAT GIVES THE NUMBER OF CHARACTERS 08970000=02083500= - "SCAN" HAS PUT INTO THE "ACCUMULATOR". SINCE "SCAN" NEEDS 08975000=02084000= + "SCNN" HAS PUT INTO THE "ACCUMULATOR". SINCE "SCNN" NEEDS 08975000=02084000= THE VALUE SO THAT IT CAN PUT MORE CHARACTERS INTO THE "ACCUM- 08980000=02084500= ULATOR" AND NEEDS TO UPDATE "COUNT" FOR THE OUTSIDE WORLD. 08985000=02085000= "COUNT" IS PASSED BY BOTH NAME AND VALUE. IT IS ALSO 08990000=02085500= @@ -1789,22 +2959,22 @@ COMMENT "SCAN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 08805000 "NCR" (NEXT CHARACTER TO BE SCANNED) IS ALSO PASSED BY 09000000=02086500= NAME AND VALUE SO THAT IT MAY BE UPDATED. 09005000=02087000= "ST1" AND "ST2" ARE TEMPORARY STORAGES WHICH ARE EXPLICITLY 09010000=02087500= - PASSED TO "SCAN" IN ORDER TO OBTAIN THE MOST USEFULL STACK 09015000=02088000= + PASSED TO "SCNN" IN ORDER TO OBTAIN THE MOST USEFULL STACK 09015000=02088000= ARRANGEMENT. 09020000=02088500= ; 09025000=02089000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09026000 - STREAM PROCEDURE SCAN(NCR, COUNTV, ACCUM, COMCOUNT, RESULT, 09030000=02090000= - RESULTV, COUNT, ST2, NCRV, ST1); 09035000=02090000= + PROCEDURE SCNN(SBUFF, NCR, COUNTV, ACCUM, AX, COMCOUNT, 09030000=02090000= + RESULT, RESULTV, COUNT, ST2, NCRV, ST1); 09035000=02090000= VALUE 09040000=02090500= - COUNTV, 09045000=02090500= - COMCOUNT, 09050000=02090500= - RESULTV, 09055000=02090500= - ST2, 09060000=02090500= - NCRV, 09065000=02090500= - ST1; 09070000=02090500= + COUNTV, AX, COMCOUNT, RESULTV, ST2, NCRV, ST1; 09045000=02090500= + ARRAY 09050000 + SBUFF, ACCUM[0]; 09055000 + REAL 09060000 + NCR, COUNTV, AX, COMCOUNT, RESULT, RESULTV, COUNT, ST2, NCRV, ST1;09065000 BEGIN 09075000=02091000= + STREAMLOCALS; 09076000 LABEL 09080000=02091500= DEBLANK, 09085000=02091500= + DEBLANKONLY, 09086000 NUMBERS, 09090000=02091500= IDBLDR, 09095000=02091500= GNC, 09100000=02091500= @@ -1815,59 +2985,58 @@ COMMENT "SCAN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 08805000 ERROR, 09125000=02092000= COMMENTS, 09130000=02092000= COMMANTS; 09135000=02092000= - DI:= RESULT; 09140000=02092500= - DI:= DI+7; 09145000=02092500= - SI:= NCRV; 09150000=02092500= - 09155000=02093000= + TALLY:= 0; 09140000 + STREAMSETSI(SBUFF, NCRV); 09145000=02092500= COMMENT SETUP "DI" FOR A CHANGE IN "RESULT" AND "SI" FOR A LOOK AT 09160000=02093000= THE BUFFER; 09165000=02093500= - CI:= CI+RESULTV; % SWITCH ON VALUE OF RESULT; 09170000=02094000= - GO DEBLANK; % 0 IS INITIAL CODE. 09175000=02094500= - GO IDBLDR; % 1 IS ID CODE. 09180000=02095000= - GO FINIS; % 2 IS SPECIAL CHARACTER CODE. 09185000=02095500= - GO NUMBERS; % 3 IS NUMBER CODE. 09190000=02096000= - GO FINIS; % 4 IS ERROR CODE. 09195000=02096500= - GO GNC; % 5 IS GET NEXT CHARACTER CODE. 09200000=02097000= - GO COMMANTS; % 6 IS COMMENT CODE. 09205000=02097500= - % 7 IS DEBLANK ONLY CODE. 09210000=02098000= - IF SC = 6" " THEN 09215000=02098500= + GO TO CASE RESULTV OF ( % SWITCH ON VALUE OF RESULT; 09166000=02094000= + DEBLANK, % 0 IS INITIAL CODE. 09168000=02094500= + IDBLDR, % 1 IS ID CODE. 09170000=02095000= + FINIS, % 2 IS SPECIAL CHARACTER CODE. 09172000=02095500= + NUMBERS, % 3 IS NUMBER CODE. 09174000=02096000= + FINIS, % 4 IS ERROR CODE. 09176000=02096500= + GNC, % 5 IS GET NEXT CHARACTER CODE. 09178000=02097000= + COMMANTS, % 6 IS COMMENT CODE. 09180000=02097500= + DEBLANKONLY);% 7 IS DEBLANK ONLY CODE. 09182000=02098000= + DEBLANKONLY: 09184000 + IF STREAMSCEQL(6" ") THEN 09186000=02098500= K: 09220000=02099000= BEGIN 09225000=02099000= - SI:= SI+1; 09230000=02099000= - IF SC = 6" " THEN 09235000=02099000= + STREAMSKIPSI(+1); 09230000=02101000= + IF STREAMSCEQL(6" ") THEN 09235000=02101000= GO K 09240000=02099000= END; 09245000=02099000= GO FINIS; 09250000=02099500= DEBLANK: 09255000=02100500= - IF SC = 6" " THEN 09260000=02100500= + IF STREAMSCEQL(6" ") THEN 09260000=02100500= L: 09265000=02101000= BEGIN 09270000=02101000= - SI:= SI+1; 09275000=02101000= - IF SC = 6" " THEN 09280000=02101000= + STREAMSKIPSI(+1); 09275000=02101000= + IF STREAMSCEQL(6" ") THEN 09280000=02101000= GO L 09285000=02101000= END; 09290000=02101000= 09295000=02101500= COMMENT IF WE ARRIVE HERE WE HAVE A NON-BLANK CHARACTER; 09300000=02101500= - NCRV:= SI; 09305000=02102000= - IF SC >= 6"0" THEN 09310000=02102500= + NCRV:= STREAMGETSI; 09305000=02102000= + IF STREAMSCGEQ(6"0") THEN 09310000=02102500= GO NUMBERS; 09315000=02102500= - IF SC = ALPHA THEN 09320000=02103000= + IF STREAMSCALPHA THEN 09320000=02103000= GO IDBLDR; 09325000=02103000= 09330000=02103500= COMMENT IF WE ARRIVE HERE WE HAVE A SPECIAL CHARACTER (OR GNC); 09335000=02103500= GNC: 09340000=02104500= - DS:= LIT 6"2"; 09345000=02104500= + RESULT:= 6"2"; 09345000=02104500= TALLY:= 1; 09350000=02104500= - SI:= SI+1; 09355000=02104500= + STREAMSKIPSI(+1); 09355000=02104500= GO EXIT; 09360000=02104500= COMMANTS: 09365000=02105500= - IF SC ^= 6";" THEN 09370000=02105500= + IF STREAMSCNEQ(6";") THEN 09370000=02105500= BEGIN 09375000=02106000= COMMENTS: 09380000=02107000= - SI:= SI+1; 09385000=02107000= - IF SC > 6"%" THEN 09390000=02107500= + STREAMSKIPSI(+1); 09385000=02107000= + IF STREAMSCGTR(6"%") THEN 09390000=02107500= GO COMMENTS; 09395000=02107500= - IF SC < 6";" THEN 09400000=02108000= + IF STREAMSCLSS(6";") THEN 09400000=02108000= GO COMMENTS; 09405000=02108000= 09410000=02108500= COMMENT CHARACTERS BETWEEN % AND SEMICOLON ARE HANDLED BY WORD- 09415000=02108500= @@ -1876,61 +3045,63 @@ COMMENT CHARACTERS BETWEEN % AND SEMICOLON ARE HANDLED BY WORD- 09415000 GO FINIS; 09430000=02110000= IDBLDR: 09435000=02111000= TALLY:= 63; 09440000=02111000= - DS:= LIT 6"1"; 09445000=02111000= - COMCOUNT(TALLY:= TALLY+1;IF SC = ALPHA THEN SI:= SI+1 ELSE JUMP 09450000=02112000= - OUT TO EXIT); 09455000=02112000= - TALLY:= TALLY+1; 09460000=02112500= - IF SC = ALPHA THEN 09465000=02113000= + RESULT:= 6"1"; 09442000=02111000= + THRU COMCOUNT DO 09444000=02112000= + BEGIN 09446000 + STREAMINCTALLY(+1); 09448000 + IF STREAMSCALPHA THEN 09450000 + STREAMSKIPSI(+1) 09452000 + ELSE 09454000 + GO EXIT 09456000=02112000= + END; 09458000 + STREAMINCTALLY(+1); 09460000=02112500= + IF STREAMSCALPHA THEN 09462000=02113000= BEGIN 09470000=02113500= ERROR: 09475000=02114500= - DI:= DI-1; 09480000=02114500= - DS:= LIT 6"4"; 09485000=02114500= + RESULT:= 6"4"; 09485000=02114500= GO EXIT; 09490000=02114500= END 09495000=02115500= ELSE 09500000=02115500= GO EXIT; 09505000=02115500= - 09510000=02116000= COMMENT IF WE ARRIVE AT ERROR WE HAVE MORE THAN 63 CHARACTERS 09515000=02116000= IN AN IDENTIFIER OR NUMBER; 09520000=02116500= NUMBERS: 09525000=02117500= TALLY:= 63; 09530000=02117500= - DS:= LIT 6"3"; 09535000=02117500= - COMCOUNT 09540000=02118500= - (TALLY:= TALLY+1;IF SC < 6"0" THEN JUMP OUT TO EXIT;SI:= SI+1); 09545000=02118500= + RESULT:= 6"3"; 09535000=02117500= + THRU COMCOUNT DO 09536000=02118500= + BEGIN 09538000=02118500= + STREAMINCTALLY(+1); 09540000 + IF STREAMSCLSS(6"0") THEN 09542000 + GO EXIT; 09544000 + STREAMSKIPSI(+1) 09546000 + END; 09548000 GO ERROR; 09550000=02119000= EXIT: 09555000=02120000= ST1:= TALLY; % "ST1" CONTAINS NUMBER OF CHARACTERS WE ARE 09560000=02120000= % GOING TO MOVE INTO THE "ACCUMULATOR". 09565000=02120500= - TALLY:= TALLY+COUNTV; 09570000=02121000= + STREAMINCTALLY(COUNTV); 09570000=02121000= ST2:= TALLY; 09575000=02121000= - DI:= COUNT; 09580000=02121500= - SI:= LOC ST2; 09585000=02121500= - DS:= WDS; 09590000=02121500= - 09595000=02122000= + COUNT:= ST2; 09580000=02121500= COMMENT THIS CODE UPDATED "COUNT"; 09600000=02122000= - DI:= ACCUM; 09605000=02122500= - SI:= SI-3; 09610000=02122500= - DS:= 3 CHR; 09615000=02122500= - 09620000=02123000= + STREAMSETDI(ACCUM, AX); 09605000=02122500= + STREAMSETLOCSI(ST2); 09610000=02122500= + STREAMSKIPSI(+5); 09615000=02122500= + STREAMTRANSFERCHR(3); 09620000=02122500= COMMENT THIS CODE PLACES "COUNT" IN "ACCUM" AS WELL; 09625000=02123000= - DI:= DI+COUNTV; % POSITION "DI" PAST CHARACTERS ALREADY 09630000=02123500= + STREAMSKIPDI(+COUNTV); % POSITION "DI" PAST CHARACTERS ALREADY 09630000=02123500= % IN THE "ACCUMULATOR", IF ANY. 09635000=02124000= - SI:= NCRV; 09640000=02124500= - DS:= ST1 CHR; 09645000=02124500= - 09650000=02125000= + STREAMSETSI(SBUFF, NCRV); 09640000=02124500= + STREAMTRANSFERCHR(ST1); 09645000=02124500= COMMENT MOVE CHARACTERS INTO "ACCUM"; 09655000=02125000= FINIS: 09660000=02126000= - DI:= NCR; 09665000=02126000= - ST1:= SI; 09670000=02126000= - SI:= LOC ST1; 09675000=02126000= - DS:= WDS; 09680000=02126000= - 09685000=02126500= + NCR:= STREAMGETSI; 09665000=02126000= COMMENT RESET "NCR" TO LOCATION OF NEXT CHARACTER TO BE SCANNED; 09690000=02126500= - END OF SCAN; 09695000=02127000= + END OF SCNN; 09695000=02127000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09696000 LABEL 09700000=02127500= L; % 09705000=02127500= -L: SCAN(NCR, COUNT, ACCUM[1], 63-COUNT, RESULT, RESULT, COUNT, 0 09710000=02129000= - , NCR, 0); 09715000=02129000= +L: SCNN(SBUFF, NCR, COUNT, ACCUM, 1, 63-COUNT, RESULT, RESULT, COUNT, 09710000=02129000= + 0, NCR, 0); 09715000=02129000= IF NCR = LCR THEN 09720000=02129500= BEGIN 09725000=02130000= READACARD; 09730000=02130500= @@ -1940,64 +3111,77 @@ L: SCAN(NCR, COUNT, ACCUM[1], 63-COUNT, RESULT, RESULT, COUNT, 0 09710000 END SCANNER; 09750000=02137000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09755000=02137000= DEFINE 09760000=02181000= - WRITELINE = IF SINGLTOG THEN 09765000=02181000= - WRITE(LINE, 15, LIN[**]) 09770000=02181250= - ELSE 09775000=02181250= - WRITE(LINE[DBL], 15, LIN[**]) #, 09780000=02182500= + WRITELINE = BEGIN 09762000=02181000= + UNPACKBICTOEBCDIC(LIN, 0, EBCDICBUFF, 0, 15*8); 09764000 + IF SINGLTOG THEN 09766000 + WRITE(LINE, 20, EBCDICBUFF[*]) 09768000=02181250= + ELSE 09770000=02181250= + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]) 09772000=02181500= + END #, 09774000 PRINTCARD = BEGIN 09785000=02182500= - EDITLINE 09790000=02182750= - (LIN, FCR, L DIV 4, L, [46:2], MEDIUM, OMITTING)09795000=02182750= - ; 09800000=02182750= + EDITLINE(LIN, SBUFF, FCR, L DIV 4, 09790000=02182750= + L.[1:2], MEDIUM, OMITTING); 09792000 IF NOHEADING THEN 09805000=02183000= DATIME; 09810000=02183000= WRITELINE; 09815000=02183000= END #; 09820000=02183250= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09822000 - STREAM PROCEDURE EDITLINE(LINE, NCR, R, L, SYMBOL, OMIT); 09825000=02183500= + PROCEDURE EDITLINE(LINE, SBUFF, NCR, R, L, SYMBOL, OMIT); 09825000=02183500= VALUE 09830000=02183750= - NCR, 09835000=02183750= - R, 09840000=02183750= - L, 09845000=02183750= - SYMBOL, 09850000=02183750= - OMIT; 09855000=02183750= + NCR, R, L, SYMBOL, OMIT; 09832000=02183750= + ARRAY 09834000 + LINE[0], SBUFF[0]; 09836000 + REAL 09838000 + NCR, R, L, SYMBOL; 09840000 + BOOLEAN 09842000 + OMIT; 09855000 BEGIN 09860000=02184000= - DI:= LINE; 09865000=02184250= - DS:= 16 LIT 6" "; 09870000=02184250= - SI:= NCR; 09875000=02184500= - DS:= 9 WDS; 09880000=02184500= - DS:= 8 LIT 6" "; 09885000=02184750= - DS:= WDS; % SEQUENCE NUMBER. 09890000=02185000= - DS:= LIT 6" "; 09895000=02185250= - SI:= LOC SYMBOL; 09900000=02185250= - SI:= SI+6; 09905000=02185250= - DS:= 2 CHR; 09910000=02185500= - DS:= LIT 6" "; 09915000=02185500= - SI:= LOC R; 09920000=02185750= - DS:= 4 DEC; 09925000=02185750= - DS:= LIT 6":"; 09930000=02185750= - SI:= LOC L; 09935000=02186000= - DS:= 1 DEC; 09940000=02186000= - DS:= 6 LIT 6" "; 09945000=02186250= - OMIT(DI:= DI-12;DS:= 8 LIT 6" OMIT"); 09950000=02186750= + STREAMLOCALS; 09862000 + STREAMSETDI(LINE, 0); 09865000=02184250= + STREAMSMEARLIT(16, 6" "); 09870000=02184250= + STREAMSETSI(SBUFF, NCR); 09875000=02184500= + STREAMTRANSFERWDS(9); 09880000=02184500= + STREAMSMEARLIT(8, 6" "); 09885000=02184750= + STREAMTRANSFERWDS(1); % SEQUENCE NUMBER. 09890000=02185000= + STREAMSMEARLIT(1, 6" "); 09895000=02185250= + STREAMSETLOCSI(SYMBOL); 09900000=02185250= + STREAMSKIPSI(+6); 09905000=02185250= + STREAMTRANSFERCHR(2); 09910000=02185500= + STREAMSMEARLIT(1, 6" "); 09915000=02185500= + STREAMSETLOCSI(R); 09920000=02185750= + STREAMTRANSFERDEC(4); 09925000=02185750= + STREAMSMEARLIT(1, 6":"); 09930000=02185750= + STREAMSETLOCSI(L); 09935000=02186000= + STREAMTRANSFERDEC(1); 09940000=02186000= + STREAMSMEARLIT(1, 6" "); 09945000=02186250= + THRU REAL(OMIT) DO 09950000=02186750= + BEGIN 09951000 + STREAMSKIPDI(-12); 09952000 + STREAMTRANSFERLIT(8, 6" OMIT"); 09953000 + END; 09954000 END EDITLINE; 09955000=02187000= - 09960000=02187250= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09962000 COMMENT COMPARE COMPARES SEQUENCE NUMBERS OF TAPE AND CARD. IF 09965000=02187250= TAPE IS SMALLER THEN RESULT = 0 ELSE IF CARD IS SMALLER 09970000=02187500= RESULT = 1 ELSE RESULT = 2; 09975000=02187750= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09976000 - REAL STREAM PROCEDURE COMPARE(TAPE, CARD); 09980000=02188000= - VALUE 09990000=02188000= - TAPE, 09995000=02188000= - CARD; 10000000=02188000= + REAL PROCEDURE COMPARE(TAPE, TX, CARD, CX); 09980000=02188000= + VALUE 09982000=02188000= + TX, CX; 09984000=02188000= + ARRAY 09986000 + TAPE, CARD[0]; 09988000 + REAL 09990000 + TX, CX; 09992000 BEGIN 10005000=02188250= - SI:= TAPE; 10010000=02188500= - DI:= CARD; 10015000=02188500= - IF 8 SC >= DC THEN 10020000=02188750= + STREAMLOCALS; 10006000 + TALLY:= 0; 10008000 + STREAMSETSI(TAPE, TX); 10010000=02188500= + STREAMSETDI(CARD, CX); 10015000=02188500= + IF STREAMCOMPAREGEQ(8) THEN 10020000=02188750= BEGIN 10025000=02189000= - SI:= SI-8; 10030000=02189250= - DI:= DI-8; 10035000=02189250= + STREAMSKIPSI(-8); 10030000=02189250= + STREAMSKIPDI(-8); 10035000=02189250= TALLY:= 1; 10040000=02189250= - IF 8 SC = DC THEN 10045000=02189500= + IF STREAMCOMPAREEQL(8) THEN 10045000=02189500= TALLY:= 2 10050000=02189750= END; 10055000=02189750= COMPARE:= TALLY 10060000=02190250= @@ -2025,11 +3209,8 @@ COMMENT COMPARE COMPARES SEQUENCE NUMBERS OF TAPE AND CARD. IF 09965000 END 10165000=02193000= ELSE 10170000=02193000= GTI1:= TOTALNO:= TOTALNO+ADDVALUE; 10175000=02193000= - CHANGESEQ(GTI1, LCR); 10180000=02193250= + CHANGESEQ(GTI1, SBUFF, LCR); 10180000=02193250= END; 10185000=02193500= - IF NEWTOG THEN 10190000=02193750= - IF WRITNEW(LIN, FCR) THEN 10195000=02194000= - WRITE(NEWTAPE, 10, LIN[**]); 10200000=02194000= IF OMITTING THEN 10205000=02194250= IF NOT LISTATOG THEN 10210000=02194250= GO AWAY; 10215000=02194250= @@ -2046,59 +3227,12 @@ AWAY: 10265000 END OUTPUTSOURCE; 10270000=02196500= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10275000=02196500= PROCEDURE READACARD; 10280000=02196750= - 10285000=02197000= COMMENT READACARD READS CARDS FROM EITHER THE CARD READER OR THE 10290000=02197000= TAPE MERGING AS REQUESTED AND CREATING A NEW TAPE AND 10295000=02197250= LISTING IF REQUESTED. READACARD ALSO INSERTS A PERCENT 10300000=02197500= SIGN AS AN END OF CARD SENTINEL IN COLUMN 73 AND SETS 10305000=02197750= FCR,NCR,LCR,TLCR, AND CLCR; 10310000=02198000= BEGIN 10315000=02198250= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10316000 - PROCEDURE READTAPE; 10320000=02198500= - BEGIN 10325000=02201500= - LABEL 10330000=02201510= - ENDREADTAPE, 10335000=02201510= - EOFT; 10340000=02201510= - READ(TAPE, 10, TBUFF[**])[EOFT]; 10345000=02201750= - LCR:= MKABS(TBUFF[9]); 10350000=02202000= - GO TO ENDREADTAPE; 10355000=02202010= - EOFT: 10360000=02202030= - DEFINEARRAY[25]:= 6"ND;END."&6"E"[1:43:5]; 10365000=02202030= - DEFINEARRAY[34]:= 6"9999"&6"9999"[1:25:23]; 10370000=02202040= - TLCR:= MKABS(DEFINEARRAY[34]); 10375000=02202050= - PUTSEQNO(DEFINEARRAY[33], TLCR-8); 10380000=02202060= - TURNONSTOPLIGHT(6"%", TLCR-8); 10385000=02202070= - ENDREADTAPE: 10390000=02202250= - END READTAPE; 10395000=02202250= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10400000=02202250= - PROCEDURE SEQCOMPARE(TLCR, CLCR, LIB); 10405000=02202500= - VALUE 10410000=02202500= - LIB; 10415000=02202500= - BOOLEAN 10420000=02202500= - LIB; 10425000=02202500= - REAL 10430000=02202750= - TLCR, 10435000=02202750= - CLCR; 10440000=02202750= - BEGIN 10445000=02203000= - MEDIUM:= 6"C "; % CARD READER. 10450000=02203250= - IF GT1:= COMPARE(TLCR, CLCR) = 0 THEN% TAPE HAS LOW SEQUENCE NUMB10455000=02203500= - BEGIN 10460000=02203750= - LCR:= TLCR; 10465000=02204000= - LASTUSED:= 3; 10470000=02204000= - MEDIUM:= 6"T "; % TAPE INPUT. 10475000=02204250= - END 10480000=02204750= - ELSE 10485000=02204750= - BEGIN 10490000=02204750= - IF GT1 ^= 1 THEN % TAPE AND CARD HAVE SAME SEQ 10495000=02205000= - BEGIN 10500000=02205250= - MEDIUM:= 6"P "; % CARD PATCHES TAPE. 10505000=02205500= - READTAPE; 10510000=02208500= - END; 10515000=02208750= - LCR:= CLCR; 10520000=02209000= - LASTUSED:= 2; 10525000=02209250= - END; 10530000=02209500= - END OF SEQCOMPARE; 10535000=02209750= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10540000=02209750= LABEL 10545000=02210000= CARDONLY, 10550000=02210000= CARDLAST, 10555000=02210000= @@ -2108,7 +3242,6 @@ COMMENT READACARD READS CARDS FROM EITHER THE CARD READER OR THE 10290000 EOF, 10575000=02210250= USETHESWITCH, 10580000=02210500= COMPAR, 10585000=02210500= - TESTVOID, 10590000=02210500= XIT; 10595000=02210500= SWITCH 10600000=02210750= USESWITCH:= CARDONLY, 10605000=02210750= @@ -2120,108 +3253,88 @@ COMMENT READACARD READS CARDS FROM EITHER THE CARD READER OR THE 10290000 USETHESWITCH: 10635000=02211800= DOLLAR2TOG:= FALSE; 10640000=02211800= GO TO USESWITCH[LASTUSED]; 10645000=02212000= - MOVE(1, INFO[LASTUSED.LINKR, LASTUSED.LINKC], 10650000=02212500= - DEFINEARRAY[DEFINEINDEX-2]); 10655000=02212500= + MOVE(1, INFO[LASTUSED.LINKR,*], LASTUSED.LINKC, 10650000=02212500= + DEFINEARRAY, DEFINEINDEX-2); 10655000=02212500= LASTUSED:= LASTUSED+1; 10660000=02212750= NCR:= LCR-1; 10665000=02213000= GO TO XIT; 10670000=02213250= FIRSTTIME: 10675000=02213750= - READ(CARD, 10, CBUFF[**]); 10680000=02213750= - FCR:= NCR:= (LCR:= MKABS(CBUFF[9]))-9; 10685000=02214000= + READ(CARD, CARDRECSIZE, EBCDICBUFF[*]); 10680000=02213750= + PACKEBCDICTOBIC(EBCDICBUFF, 0, CBUFF, 0, 10*8); 10682000 + FCR:= NCR:= (LCR:= 9)-9; 10685000=02214000= + SBUFF:= CBUFF; 10686000 MEDIUM:= 6"C "; 10690000=02214100= - IF EXAMIN(FCR) ^= 6"$" AND LISTER THEN 10695000=02214200= + IF EXAMIN(SBUFF, FCR) ^= 6"$" AND LISTER THEN 10695000=02214200= PRINTCARD; 10700000=02214200= - PUTSEQNO(INFO[LASTSEQROW, LASTSEQUENCE], LCR); 10705000=02214250= - TURNONSTOPLIGHT(6"%", LCR); 10710000=02214500= + PUTSEQNO(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR); 10705000=02214250= + TURNONSTOPLIGHT(6"%", SBUFF, LCR); 10710000=02214500= GO XIT; 10715000=02214750= 10720000=02215000= COMMENT WE HAVE JUST INITIALIZED CARD INPUT; 10725000=02215000= CARDONLY: 10730000=02215500= - READ(CARD, 10, CBUFF[**]); 10735000=02215500= - LCR:= MKABS(CBUFF[9]); 10740000=02215750= + READ(CARD, CARDRECSIZE, EBCDICBUFF[*]); 10735000=02215500= + PACKEBCDICTOBIC(EBCDICBUFF, 0, CBUFF, 0, 10*8); 10736000 + LCR:= 9; 10740000=02215750= + SBUFF:= CBUFF; 10742000 GO EXIT; 10745000=02215750= CARDLAST: 10750000=02216250= - READ(CARD, 10, CBUFF[**])[EOF]; 10755000=02216250= - CLCR:= MKABS(CBUFF[9]); 10760000=02216500= + READ(CARD, CARDRECSIZE, EBCDICBUFF[*])[EOF]; 10755000=02216250= + PACKEBCDICTOBIC(EBCDICBUFF, 0, CBUFF, 0, 10*8); 10756000 + CLCR:= 9; 10760000=02216500= + SBUFF:= CBUFF; 10762000 GO COMPAR; 10765000=02216750= EOF: 10770000=02217250= - DEFINEARRAY[25]:= 6"ND;END."&6"E"[1:43:5]; 10775000=02217250= - DEFINEARRAY[34]:= 6"9999"&6"9999"[1:25:23]; 10780000=02217500= - CLCR:= MKABS(DEFINEARRAY[34]); 10785000=02217750= - PUTSEQNO(DEFINEARRAY[33], CLCR-8); 10790000=02218000= - TURNONSTOPLIGHT(6"%", CLCR-8); 10795000=02218250= + DEFINEARRAY[25]:= 6"ND;END."&6"E"[46:4:5]; 10775000=02217250= + DEFINEARRAY[34]:= 6"9999"&6"9999"[46:22:23]; 10780000=02217500= + CLCR:= 34; 10785000=02217750= + SBUFF:= DEFINEARRAY; 10786000 + PUTSEQNO(DEFINEARRAY, 33, SBUFF, CLCR-8); 10790000=02218000= + TURNONSTOPLIGHT(6"%", DEFINEARRAY, CLCR-8); 10795000=02218250= % 10800000=02218400= GO COMPAR; 10805000=02218500= - 10810000=02218750= COMMENT THIS RELEASES THE PREVIOUS CARD FROM THE CARD READER AND 10815000=02218750= SETS UP CLCR; 10820000=02219000= TAPELAST: 10825000=02219500= - READTAPE; 10830000=02219500= - 10835000=02219750= + MYSELF.STATUS:= VALUE(TERMINATED); 10830000=02219500= + GO TO COMPAR; 10835000=02219750= COMMENT THIS RELEASES THE PREVIOUS CARD FROM TAPE AND SETS UP TLCR; 10840000=02219750= COMPAR: 10845000=02224500= - SEQCOMPARE(TLCR, CLCR, FALSE); 10850000=02224500= + ; 10850000=02224500= EXIT: 10855000=02225250= - NCR:= FCR:= LCR-9; 10860000=02225250= - 10865000=02225500= -COMMENT SETS UP NCR AND FCR; 10870000=02225500= - IF EXAMIN(FCR) ^= 6"$" THEN % $-CARDS DON"T COUNT. 10875000=02225750= - IF COMPARE(MKABS(INFO[LASTSEQROW, LASTSEQUENCE]), LCR) = 1 THEN 10880000=02226000= + NCR:= FCR:= LCR-9; COMMENT SETS UP NCR AND FCR; 10860000=02225250= + IF EXAMIN(SBUFF, FCR) ^= 6"$" THEN % $-CARDS DON"T COUNT. 10875000=02225750= + IF COMPARE(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR) = 1 THEN 10880000=02226000= BEGIN 10885000=02226250= FLAG(610); % SEQUENCE ERROR. 10890000=02226500= SEQUENCEERROR(LIN); 10895000=02226750= END; 10900000=02227000= - CARDNUMBER:= CONV(INFO[LASTSEQROW, LASTSEQUENCE-1], 5, 8); 10905000=02228000= - IF LASTUSED = 3 THEN 10910000=02228050= - BEGIN 10915000=02228075= - IF VOIDTAPE THEN 10920000=02228100= - GO USETHESWITCH; 10925000=02228100= - IF VOIDTCR ^= 0 THEN 10930000=02228125= - IF COMPARE(LCR, VOIDTCR) = 0 THEN 10935000=02228150= - GO USETHESWITCH; 10940000=02228150= - END; 10945000=02228175= - IF EXAMIN(FCR) = 6"$" THEN 10950000=02228250= + CARDNUMBER:= CONV(INFO[LASTSEQROW,*], LASTSEQUENCE-1, 5, 8); 10905000=02228000= + IF EXAMIN(SBUFF, FCR) = 6"$" THEN 10950000=02228250= BEGIN 10955000=02228500= IF LISTPTOG OR PRINTDOLLARTOG THEN 10960000=02228750= PRINTCARD; 10965000=02228750= - NCR:= NCR+32768; 10970000=02229000= + NCR:= NCR+32768; % INC BY ONE CHAR 10970000=02229000= DOLLARCARD; 10975000=02229000= 10980000=02229250= COMMENT DONT FORGET THAT NCR IS NOT WORD MODE, BUT CHAR. MODE POINTER; 10985000=02229250= GO USETHESWITCH; 10990000=02229500= END; 10995000=02229750= - IF EXAMIN(FCR) = 6" " THEN 11000000=02230000= - IF DOLLAR2TOG:= EXAMIN(FCR+32768) = 6"$" THEN 11005000=02230100= + IF EXAMIN(SBUFF, FCR) = 6" " THEN 11000000=02230000= + IF DOLLAR2TOG:= EXAMIN(SBUFF, FCR+32768) = 6"$" THEN 11005000=02230100= BEGIN 11010000=02230250= OUTPUTSOURCE; 11015000=02230500= NCR:= NCR+65536; % SCAN PAST " $" (CHARACTER MODE). 11020000=02230750= DOLLARCARD; 11025000=02231000= END; 11030000=02231250= - IF VOIDING THEN 11035000=02231500= - GO USETHESWITCH; 11040000=02231500= - IF VOIDCR ^= 0 THEN 11045000=02231750= - IF COMPARE(LCR, VOIDCR) > 0 THEN 11050000=02232000= - VOIDCR:= VOIDPLACE:= 0 11055000=02232250= - ELSE 11060000=02232250= - GO USETHESWITCH; 11065000=02232250= - IF VOIDTAPE THEN 11070000=02232500= - GO TESTVOID; 11075000=02232500= - IF VOIDCR ^= 0 THEN 11080000=02233000= - IF COMPARE(LCR, VOIDTCR) > 0 THEN 11085000=02233500= - VOIDTCR:= VOIDPLACE:= 0 11090000=02233500= - ELSE 11095000=02233500= - TESTVOID: 11100000=02234000= - IF LASTUSED = 3 THEN 11105000=02234000= - GO USETHESWITCH; 11110000=02234000= CARDCOUNT:= CARDCOUNT+1; 11115000=02234500= IF DOLLAR2TOG THEN 11120000=02234600= GO USETHESWITCH; 11125000=02234600= - PUTSEQNO(INFO[LASTSEQROW, LASTSEQUENCE], LCR); 11130000=02234750= + PUTSEQNO(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR); 11130000=02234750= OUTPUTSOURCE; 11135000=02235000= IF OMITTING THEN 11140000=02235250= GO USETHESWITCH; 11145000=02235250= % 11150000=02235500= - TURNONSTOPLIGHT(6"%", LCR); 11155000=02235750= + TURNONSTOPLIGHT(6"%", SBUFF, LCR); 11155000=02235750= XIT: 11160000=02238000= END READACARD; 11165000=02238000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11170000=02238000= @@ -2232,28 +3345,18 @@ XIT: 11160000 INTEGER 11195000=02249000= N; 11200000=02249000= TLO:= 0; 11205000=02250000= - THI:= T:= CONV(ACCUM[1], TCOUNT, N:= (COUNT-TCOUNT) MOD 8); 11210000=02251000= + THI:= T:= CONV(ACCUM, 1, TCOUNT, N:= (COUNT-TCOUNT) MOD 8); 11210000=02251000= FOR N:= TCOUNT+N STEP 8 UNTIL COUNT-1 DO 11215000=02252000= IF DPTOG THEN 11220000=02253000= BEGIN 11225000=02254000= - DOUBLE(THI, TLO, 100000000.0, 0, *, CONV(ACCUM[1], N, 8), 0, 11230000=02256000= - +, := , THI, TLO); 11235000=02256000= + THI:= FIRSTWORD( 11230000=02256000= + DOUBLE(THI, TLO)*100000000.0 + CONV(ACCUM, 1, N, 8), TLO); 11235000=02256000= T:= THI; 11240000=02257000= END 11245000=02259000= ELSE 11250000=02259000= - T:= T*100000000+CONV(ACCUM[1], N, 8); 11255000=02259000= + T:= T*100000000+CONV(ACCUM, 1, N, 8); 11255000=02259000= CONVERT:= T; 11260000=02260000= END; 11265000=02261000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11270000=02261000= - REAL STREAM PROCEDURE FETCH(F); 11275000=02262000= - VALUE 11285000=02262000= - F; 11290000=02262000= - BEGIN 11295000=02263000= - SI:= F; 11300000=02263000= - SI:= SI-8; 11305000=02263000= - DI:= LOC FETCH; 11310000=02263000= - DS:= WDS 11315000=02263000= - END FETCH; 11320000=02263000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11322000 PROCEDURE DUMPINFO; 11325000=02264000= BEGIN 11330000=02264050= @@ -2263,56 +3366,106 @@ XIT: 11160000 JEDEN, 11350000=02264100= DWA; 11355000=02264100= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11356000 - STREAM PROCEDURE OCTALWORDS(S, D, N); 11360000=02264400= - VALUE 11365000=02264400= - N; 11370000=02264400= + PROCEDURE OCTALWORDS(S, SX, D, DX, N); 11360000=02264400= + VALUE 11362000=02264400= + SX, DX, N; 11364000=02264400= + ARRAY 11366000 + S, D[0]; 11368000 + REAL 11370000 + SX, DX, N; 11372000 BEGIN 11375000=02264450= - SI:= S; 11380000=02264500= - DI:= D; 11385000=02264500= - N(2(8(DS:= 3 RESET; 11390000=02264600= - 3(IF SB THEN DS:= 1 SET ELSE DS:= 1 RESET;SKIP 1 SB));DS:= 1 LIT 11395000=02264600= - 6" ");DS:= 2 LIT 6" "); 11400000=02264600= + STREAMLOCALS; 11376000 + STREAMSETSI(S, SX); 11377000=02264500= + STREAMSETDI(D, DX); 11378000=02264500= + THRU N DO 11379000=02264600= + BEGIN 11380000 + THRU 2 DO 11381000 + BEGIN 11382000 + THRU 8 DO 11383000 + BEGIN 11384000 + STREAMSETDB(3, 0); 11385000 + THRU 3 DO 11386000 + BEGIN 11387000=02264600= + IF STREAMTESTSB THEN 11388000 + STREAMSETDB(1, 1) 11389000 + ELSE 11390000 + STREAMSETDB(1, 0); 11391000 + 11392000 + STREAMSKIPSB(1); 11393000 + END; 11394000 + END; 11395000 + 11396000 + STREAMSMEARLIT(1, 6" "); 11397000 + END; 11398000 + 11399000 + STREAMSMEARLIT(2, 6" "); 11400000 + END; 11401000 END OF OCTALWORDS; 11405000=02264650= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11406000 - STREAM PROCEDURE ALPHAWORDS(S, D, N); 11410000=02264700= - VALUE 11415000=02264700= - N; 11420000=02264700= + PROCEDURE ALPHAWORDS(S, SX, D, DX, N); 11410000=02264700= + VALUE 11412000=02264700= + SX, DX, N; 11414000=02264700= + ARRAY 11416000 + S, D[0]; 11418000 + REAL 11420000 + SX, DX, N; 11422000 BEGIN 11425000=02264750= - SI:= S; 11430000=02264800= - DI:= D; 11435000=02264800= - N(2(4(DS:= 1 LIT 6" ";DS:= 1 CHR);DS:= 1 LIT 6" ");DS:= 2 LIT 6" "11440000=02264850= - ); 11445000=02264850= + STREAMLOCALS; 11426000 + STREAMSETSI(S, SX); 11427000=02264800= + STREAMSETDI(D, DX); 11428000=02264800= + THRU N DO 11429000=02264850= + BEGIN 11430000 + THRU 2 DO 11431000 + BEGIN 11432000 + THRU 4 DO 11433000 + BEGIN 11434000 + STREAMSMEARLIT(1, 6" "); 11435000 + STREAMTRANSFERCHR(1) 11436000 + END; 11437000 + 11438000 + STREAMSMEARLIT(1, 6" ") 11439000 + END; 11440000 + 11441000 + STREAMSMEARLIT(2, 6" ") 11442000 + END; 11443000=02264850= END OF ALPHAWORDS; 11450000=02264900= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11452000 IF NOHEADING THEN 11455000=02264950= DATIME; 11460000=02264950= - WRITE(LINE[DBL], < //6"ELBAT">); 11465000=02264950= + WRITE(LINE[SPACE 2], < //"ELBAT">); 11465000=02264950= FOR JEDEN:= 0 STEP 6 UNTIL 71 DO 11470000=02265000= BEGIN 11475000=02265050= - BLANKET(14, A); 11480000=02265100= - OCTALWORDS(ELBAT[JEDEN], A, 6); 11485000=02265100= - WRITE(LINE[DBL], 15, A[**]); 11490000=02265150= + BLANKET(14, A); 11480000=02265100= + OCTALWORDS(ELBAT, JEDEN, A, 0, 6); 11485000=02265100= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 11486000 + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 11490000=02265150= END; 11495000=02265200= - BLANKET(14, A); 11500000=02265250= - OCTALWORDS(ELBAT[72], A, 4); 11505000=02265250= - WRITE(LINE[DBL], 15, A[**]); 11510000=02265300= + BLANKET(14, A); 11500000=02265250= + OCTALWORDS(ELBAT, 72, A, 0, 4); 11505000=02265250= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 11506000 + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 11510000=02265300= FOR JEDEN:= 0 STEP 1 UNTIL NEXTINFO DIV 256 DO 11515000=02265350= BEGIN 11520000=02265400= - WRITE(LINE[DBL], < //6"INFO[", I2, 6",*]">, JEDEN); 11525000=02265450= + WRITE(LINE[SPACE 2], < //"INFO[", I2, ",*]">, JEDEN); 11525000=02265450= FOR DWA:= 0 STEP 6 UNTIL 251 DO 11530000=02265500= BEGIN 11535000=02265550= - BLANKET(14, A); 11540000=02265600= - ALPHAWORDS(INFO[JEDEN, DWA], A, 6); 11545000=02265600= - WRITE(LINE, 15, A[**]); 11550000=02265650= - BLANKET(14, A); 11555000=02265700= - OCTALWORDS(INFO[JEDEN, DWA], A, 6); 11560000=02265700= - WRITE(LINE[DBL], 15, A[**]); 11565000=02265750= + BLANKET(14, A); 11540000=02265600= + ALPHAWORDS(INFO[JEDEN,*], DWA, A, 0, 6); 11545000=02265600= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 11546000 + WRITE(LINE, 20, EBCDICBUFF[*]); 11550000=02265650= + BLANKET(14, A); 11555000=02265700= + OCTALWORDS(INFO[JEDEN,*], DWA, A, 0, 6); 11560000=02265700= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 11562000 + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 11565000=02265750= END; 11570000=02265800= - BLANKET(14, A); 11575000=02265850= - ALPHAWORDS(INFO[JEDEN, 252], A, 4); 11580000=02265850= - WRITE(LINE, 15, A[**]); 11585000=02265900= - BLANKET(14, A); 11590000=02265950= - OCTALWORDS(INFO[JEDEN, 252], A, 4); 11595000=02265950= - WRITE(LINE[DBL], 15, A[**]); 11600000=02266000= + BLANKET(14, A); 11575000=02265850= + ALPHAWORDS(INFO[JEDEN,*], 252, A, 0, 4); 11580000=02265850= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 11582000 + WRITE(LINE, 20, EBCDICBUFF[*]); 11585000=02265900= + BLANKET(14, A); 11590000=02265950= + OCTALWORDS(INFO[JEDEN, *], 252, A, 0, 4); 11595000=02265950= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 11596000 + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 11600000=02266000= END; 11605000=02266050= END OF DUMPINFO; 11610000=02266100= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11615000=02266100= @@ -2374,13 +3527,18 @@ FOUND: 11855000 PROCEDURE DOLLARCARD; 11890000=02319000= BEGIN 11895000=02320000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11896000 - STREAM PROCEDURE RESTORESEQNUM(LCR, INFO); 11900000=02320200= + PROCEDURE RESTORESEQNUM(A, LCR, INFO, IX); 11900000=02320200= VALUE 11905000=02320200= - LCR; 11910000=02320200= + LCR, IX; 11910000=02320200= + ARRAY 11911000 + A, INFO[0]; 11912000 + REAL 11913000 + LCR, IX; 11914000 BEGIN 11915000=02320400= - DI:= LCR; 11920000=02320600= - SI:= INFO; 11925000=02320600= - DS:= WDS; 11930000=02320600= + STREAMLOCALS; 11916000 + STREAMSETDI(A, LCR); 11920000=02320600= + STREAMSETSI(INFO, IX); 11925000=02320600= + STREAMTRANSFERWDS(1); 11930000=02320600= END; 11935000=02320800= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11936000 PROCEDURE SWITCHIT(XBIT); 11940000=02321000= @@ -2424,7 +3582,7 @@ FOUND: 11855000 GO ALONG; 12130000=02336000= XMODE2: 12135000=02337000= % RESET; 12140000=02337000= - OPTIONS[OPINX+1]:= REAL(FALSE & SETTING[1:2:46]); 12145000=02338000= + OPTIONS[OPINX+1]:= REAL(FALSE & SETTING[46:45:46]); 12145000=02338000= IF XBIT < USEROPINX THEN 12150000=02339000= OPTIONWORD:= OPTIONWORD & FALSE[XBIT:1]; 12155000=02339000= GO ALONG; 12160000=02340000= @@ -2436,13 +3594,13 @@ FOUND: 11855000 BOOLEXP 12190000=02343000= ELSE 12195000=02343000= TRUE; 12200000=02343000= - OPTIONS[SAVEINX+1]:= REAL(B & SETTING[1:46]); 12205000=02352000= + OPTIONS[SAVEINX+1]:= REAL(B & SETTING[46:46]); 12205000=02352000= IF XBIT < USEROPINX THEN 12210000=02353000= OPTIONWORD:= OPTIONWORD & B[XBIT:1]; 12215000=02353000= GO ALONG; 12220000=02354000= XMODE4: 12225000=02355000= % POP. 12230000=02355000= - OPTIONS[OPINX+1]:= REAL(B:= SETTING.[1:46]); 12235000=02356000= + OPTIONS[OPINX+1]:= REAL(B:= SETTING.[46:46]); 12235000=02356000= IF XBIT < USEROPINX THEN 12240000=02357000= OPTIONWORD:= OPTIONWORD & B[XBIT:1]; 12245000=02357000= ALONG: 12250000=02359000= @@ -2477,16 +3635,14 @@ FOUND: 11855000 WHATISIT; 12395000=02365000= INTEGER 12400000=02365100= SRESULT, 12405000=02365100= - SCOUNT; 12410000=02365100= - ALPHA 12415000=02365200= - VOIDRANGE; 12420000=02365200= + SCOUNT; 12410000=02365100= DOLLARTOG:= TRUE; 12425000=02366000= - MOVE(10, ACCUM[0], DEFINEARRAY[0]); % SAVE INFORMATION FOR 12430000=02366100= + MOVE(10, ACCUM, 0, DEFINEARRAY, 0); % SAVE INFORMATION FOR 12430000=02366100= SCOUNT:= COUNT; 12435000=02366200= SRESULT:= RESULT; % "TABLE" TO RESUME SCAN. 12440000=02366200= XMODE:= 0; 12445000=02367000= - PUTSEQNO(INFO[LASTSEQROW, LASTSEQUENCE], LCR); 12450000=02368000= - TURNONSTOPLIGHT(6"%", LCR); 12455000=02369000= + PUTSEQNO(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR); 12450000=02368000= + TURNONSTOPLIGHT(6"%", SBUFF, LCR); 12455000=02369000= SKANAGAIN: 12460000=02371000= SKAN; 12465000=02371000= AGAIN: 12470000=02373000= @@ -2517,9 +3673,7 @@ LENGTH3: 12545000 END; 12595000=02385000= IF Q = 6"3NEW00" THEN 12600000=02386000= BEGIN 12605000=02387000= - SWITCHIT(NEWBIT); 12610000=02388000= - IF Q = 6"4TAPE0" THEN 12615000=02389000= - GO SKANAGAIN; 12620000=02389000= + FLAG(601); % NEWTAPE IS DISABLED. 12610000=02388000= GO AGAIN; 12625000=02390000= END; 12630000=02391000= IF Q = 6"3SEQ00" THEN 12635000=02392000= @@ -2546,19 +3700,7 @@ LENGTH4: 12715000 END; 12740000=02405000= IF Q = 6"4VOID0" THEN 12745000=02406000= BEGIN 12750000=02407000= - IF XMODE = 0 THEN 12755000=02408000= - BEGIN 12760000=02409000= - GETVOID(VOIDRANGE, NCR, LCR, INFO[LASTSEQROW, LASTSEQUENCE])12765000=02410000= - ; 12770000=02410000= - IF VOIDCR = 0 THEN 12775000=02410500= - VOIDCR:= MKABS(VOIDPLACE) 12780000=02410500= - ELSE 12785000=02410500= - IF COMPARE(MKABS(VOIDRANGE), VOIDCR) ^= 1 THEN 12790000=02411000= - GO TO EXIT; 12795000=02411000= - MOVE(1, VOIDRANGE, VOIDPLACE); 12800000=02412000= - GO EXIT; 12805000=02413000= - END; 12810000=02414000= - SWITCHIT(VOIDBIT); 12815000=02415000= + FLAG(601); % VOID IS DISABLED. 12755000=02408000= GO AGAIN; 12820000=02418000= END; 12825000=02419000= IF Q = 6"4OMIT0" THEN 12830000=02420000= @@ -2573,72 +3715,24 @@ LENGTH4: 12715000 END; 12875000=02421100= IF Q = 6"4CARD0" THEN 12880000=02422000= BEGIN 12885000=02423000= - Q:= 6"4TAPE0"; % FAKE OUT SWITCHIT. 12890000=02424000= - SWITCHIT(MERGEBIT); 12895000=02425000= - IF XMODE ^= 2 THEN 12900000=02425500= - MERGETOG:= NOT MERGETOG; 12905000=02425500= - OPTIONS[2*MERGEBIT-1]:= % CARD IS 12910000=02426000= -REAL(SETTING & (MERGETOG)[47:1]); % INVERSE OF MERGE. 12915000=02427000= - IF MERGETOG THEN 12920000=02428000= - GO MERGEOPTION; 12925000=02428000= + FLAG(601); % MERGE MODE IS DISABLED. 12890000=02424000= CARDOPTION: 12930000=02430000= LASTUSED:= 1; 12935000=02430000= GO AGAIN; 12940000=02431000= END; 12945000=02432000= IF Q = 6"4TAPE0" THEN 12950000=02433000= BEGIN 12955000=02434000= - SWITCHIT(MERGEBIT); 12960000=02435000= + FLAG(601); % MERGE MODE IS DISABLED. 12960000=02435000= IF NOT MERGETOG THEN 12965000=02436000= GO CARDOPTION; 12970000=02436000= MERGEOPTION: 12975000=02438000= LASTUSED:= 2; % NEXT CARD IS READ FROM READER. 12980000=02438000= - IF MAXTLCR = 0 THEN 12985000=02439000= - BEGIN 12990000=02440000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12992000 - INTEGER STREAM PROCEDURE FEJ(F, T); 12995000=02441000= - VALUE 13005000=02441000= - T; 13010000=02441000= - BEGIN 13015000=02442000= - SI:= F; 13020000=02443000= - DI:= LOC T; 13025000=02443000= - DS:= WDS; 13030000=02443000= - SI:= T; 13035000=02444000= - SI:= SI-16; 13040000=02444000= - DI:= LOC FEJ; 13045000=02444000= - DS:= WDS; 13050000=02444000= - END FEJ; 13055000=02445000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13056000 - STREAM PROCEDURE FIX(F, T); 13060000=02446000= - VALUE 13065000=02446000= - T; 13070000=02446000= - BEGIN 13075000=02447000= - SI:= F; 13080000=02448000= - SI:= SI-24; 13085000=02448000= - DI:= LOC T; 13090000=02448000= - DS:= WDS; 13095000=02448000= - DI:= T; 13100000=02449000= - DI:= DI+47; 13105000=02449000= - SKIP 4 DB; 13110000=02449000= - DS:= 2 RESET; 13115000=02449000= - 2(DI:= DI+48); 13120000=02450000= - DS:= 8 LIT 6"00#01+0#"; 13125000=02450000= - END FIX; 13130000=02451000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13132000 - IF GT1:= FEJ(TAPE, 0) = 10 THEN 13135000=02452000= - BEGIN 13140000=02453000= - REWIND(TAPE); 13145000=02454000= - FIX(TAPE, 0); 13150000=02454000= - END; 13155000=02455000= - MAXTLCR:= GT1+TLCR:= 9+MKABS(TBUFF[0]); 13160000=02456000= - READ(TAPE, 10, TBUFF[**]); % INITIALIZE TAPE INPUT. 13165000=02457000= - LASTUSED:= 2; 13170000=02458000= - END; 13175000=02459000= GO AGAIN; 13180000=02460000= END; 13185000=02461000= IF Q = 6"4PAGE0" THEN 13190000=02462000= BEGIN 13195000=02463000= IF LISTER THEN 13200000=02464000= - WRITE(LINE[PAGE]); 13205000=02464000= + WRITE(LINE[SKIP 1]); 13205000=02464000= GO SKANAGAIN; 13210000=02465000= END; 13215000=02466000= IF Q = 6"4INFO0" THEN 13220000=02467000= @@ -2675,14 +3769,7 @@ LENGTH5: 13325000 END; 13375000=02480000= IF Q = 6"5VOIDT" THEN 13380000=02481000= BEGIN 13385000=02482000= - IF XMODE = 0 THEN 13390000=02483000= - BEGIN 13395000=02484000= - GETVOID(VOIDRANGE, NCR, LCR, INFO(LASTSEQROW, LASTSEQUENCE])13400000=02489000= - ;IF VOIDTCR = 0 THEN VOIDTCR:= MKABS(VOIDTPLACE) ELSE IF 13405000=02489000= - COMPARE(MKABS(VOIDRANGE), VOIDTCR) ^= 1 THEN GO TO EXIT; 13410000=02489000= - MOVE(1, VOIDRANGE, VOIDTPLACE);GO EXIT; 13415000=02489000= - END; 13420000=02489000= - SWITCHIT(VOIDTBIT); 13425000=02490000= + FLAG(601); % VOIDT IS DISABLED. 13390000=02483000= GO AGAIN; 13430000=02493000= END; 13435000=02494000= IF Q = 6"5CHECK" THEN 13440000=02495000= @@ -2698,12 +3785,12 @@ LENGTH5: 13325000 FLAG(600); 13490000=02501000= GO AGAIN 13495000=02501000= END; 13500000=02501000= - ERRMAX:= CONV(ACCUM[1], 0, ACCUM[1].[12:6]); 13505000=02502000= + ERRMAX:= CONV(ACCUM, 1, 0, ACCUM[1].[35:6]); 13505000=02502000= GO SKANAGAIN; 13510000=02503000= END; 13515000=02504000= IF Q = 6"5PUNCH" THEN 13520000=02505000= BEGIN 13525000=02506000= - SWITCHIT(PUNCHBIT); 13530000=02506000= + FLAG(601); % PUNCH IS DISABLED. 13530000=02506000= GO AGAIN; 13535000=02506000= END; 13540000=02506000= IF Q = 6"5PURGE" THEN 13545000=02507000= @@ -2736,7 +3823,7 @@ LENGTH6: 13625000 IF Q = 6"6SEQXE" THEN 13680000=02523000= BEGIN 13685000=02524000= SEQXEQTOG:= XMODE ^= 2 AND XMODE ^= 4 OR SEQXEQTOG; %NEVER RESET. 13690000=02525000= - IF BUILDLINE.[45:1] THEN 13695000=02526000= + IF BUILDLINE.[2:1] THEN 13695000=02526000= BUILDLINE:= TRUE; 13700000=02526000= GO SKANAGAIN; 13705000=02527000= END; 13710000=02528000= @@ -2746,31 +3833,30 @@ LENGTH6: 13625000 IF DEBUGTOG THEN 13730000=02533000= IF WOP[0] = 0 THEN 13735000=02534000= BEGIN 13740000=02535000= - FILL WOP[**] WITH 13745000=02536100= - "LITC"," ", 13750000=02537000= - "OPDC","DESC", 13755000=02538000= - 11, "NOP ", 12, "PRT ", 13, "DEL ", 16, "ADD ", 18, "PRL ", 19, "LNG ",13760000=02539000= - 21, "GEQ ", 22, "BBC ", 24, "INX ", 35, "LOR ", 37, "GTR ", 38, "BFC ",13765000=02540000= - 39, "RTN ", 40, "COC ", 48, "SUB ", 64, "MUL ", 67, "LND ", 68, "STD ",13770000=02541000= - 69, "NEQ ", 71, "XIT ", 72, "MKS ",128, "DIV ",130, "COM ",131, "LQV ",13775000=02542000= -132, "SND ",133, "XCH ",134, "CHS ",167, "RTS ",168, "CDC ",260, "LOD ",13780000=02543000= -261, "DUP ",278, "LBC ",294,"LFC ",322,"ZP1 ",384, "IDV ",532, "ISD", 13785000=02544000= -533, "LEQ ",534, "BBW ",548, "ISN ",549, "LSS ",550, "BFW ",581, "EQL ",13790000=02545000= -582, "SSP ",790, "LBU ",806, "LFU ",896, "RDV ", 13795000=02546000= -1003,"SCI ",1004,"SAN ",1019,"SCS ", 13800000=02547000= + FILL WOP[*] WITH "LITC", 6" ", "OPDC", 6"DESC", 13745000=02536100= + 11,6"NOP ", 12,6"PRT ", 13,6"DEL ", 16,6"ADD ", 18,6"PRL ", 19,6"LNG ",13760000=02539000= + 21,6"GEQ ", 22,6"BBC ", 24,6"INX ", 35,6"LOR ", 37,6"GTR ", 38,6"BFC ",13765000=02540000= + 39,6"RTN ", 40,6"COC ", 48,6"SUB ", 64,6"MUL ", 67,6"LND ", 68,6"STD ",13770000=02541000= + 69,6"NEQ ", 71,6"XIT ", 72,6"MKS ",128,6"DIV ",130,6"COM ",131,6"LQV ",13775000=02542000= +132,6"SND ",133,6"XCH ",134,6"CHS ",167,6"RTS ",168,6"CDC ",260,6"LOD ",13780000=02543000= +261,6"DUP ",278,6"LBC ",294,6"LFC ",322,6"ZP1 ",384,6"IDV ",532,6"ISD ",13785000=02544000= +533,6"LEQ ",534,6"BBW ",548,6"ISN ",549,6"LSS ",550,6"BFW ",581,6"EQL ",13790000=02545000= +582,6"SSP ",790,6"LBU ",806,6"LFU ",896,6"RDV ", 13795000=02546000= +1003,6"SCI ",1004,6"SAN ",1019,6"SCS ", 13800000=02547000= 1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023, 13805000=02548000= 1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023, 1023; 13810000=02549000= -FILL COP[**] WITH % CHARACTER MODE MNEMONICS 13815000=02550000= - 0," ",0,0, 13820000=02551000= - 0,"EXC ", 2,"BSD ", 3,"BSS ", 4,"RDA ", 5,"TRW ",6,"SED ", 7,"TDA ", 13825000=02552000= - 12,"SDA ",13,"SSA ",14,"SFD ",15,"SRD ",18,"SES ",20,"TEQ ",21, "TNE ",13830000=02553000= - 22,"TEG ",23,"TGR ",24,"SRS ",25,"SFS ",28,"TEL ",29,"TLS ",30,"TAN ", 13835000=02554000= - 31,"BIT ",32,"INC ",33,"STC ",34,"SEC ",35,"CRF ",36,"JNC ",37,"JFC ", 13840000=02555000= - 38,"JNS ",39,"JFW ",40,"RCA ",41,"ENS ",42,"BNS ",43,"RSA ",44,"SCA ", 13845000=02556000= - 45,"JRC ",46,"TSA ",47,"JRV ",48,"CEQ ",49,"CNE ",50,"CEG ",51,"CGR ", 13850000=02557000= -52,"BIT ",53,"BIR ",54,"OCV ",55,"ICV ",56,"CEL ",57,"CLS ",58,"FSU ", 13855000=02558000= - 59,"FAD ",60,"TRP ",61,"TRN ",62,"TRZ ",63,"TRS ",64,0,64,0,64,0,64,0, 13860000=02559000= - 64,0,64,0,64,0,64,0; 13865000=02560000= + FILL COP[*] WITH % CHARACTER MODE MNEMONICS 13815000=02550000= + 0,6" ",0,0, 13820000=02551000= + 0,6"EXC ", 2,6"BSD ", 3,6"BSS ", 4,6"RDA ", 5,6"TRW ", 6,6"SED ", 13825000=02552000= + 7,6"TDA ",12,6"SDA ",13,6"SSA ",14,6"SFD ",15,6"SRD ",18,6"SES ", 13830000=02553000= + 20,6"TEQ ",21,6"TNE ",22,6"TEG ",23,6"TGR ",24,6"SRS ",25,6"SFS ", 13835000=02554000= + 28,6"TEL ",29,6"TLS ",30,6"TAN ",31,6"BIT ",32,6"INC ",33,6"STC ", 13840000=02555000= + 34,6"SEC ",35,6"CRF ",36,6"JNC ",37,6"JFC ",38,6"JNS ",39,6"JFW ", 13845000=02556000= + 40,6"RCA ",41,6"ENS ",42,6"BNS ",43,6"RSA ",44,6"SCA ",45,6"JRC ", 13850000=02557000= + 46,6"TSA ",47,6"JRV ",48,6"CEQ ",49,6"CNE ",50,6"CEG ",51,6"CGR ", 13855000=02558000= + 52,6"BIT ",53,6"BIR ",54,6"OCV ",55,6"ICV ",56,6"CEL ",57,6"CLS ", 13856000 + 58,6"FSU ",59,6"FAD ",60,6"TRP ",61,6"TRN ",62,6"TRZ ",63,6"TRS ", 13860000=02559000= + 64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0; 13865000=02560000= END; 13870000=02563000= GO AGAIN; 13875000=02564000= END; 13880000=02565000= @@ -2781,9 +3867,9 @@ FILL COP[**] WITH % CHARACTER MODE MNEMONICS 13815000 END; 13905000=02567000= GO WHATISIT; 13910000=02568000= LENGTH7: 13915000=02570000= -% IF Q = "7INCLU" THEN 13920000=02570000= +% IF Q = 6"7INCLU" THEN 13920000=02570000= % BEGIN DOLLARCARD:=STARTINCLUDING; GO EXIT; END; 13925000=02571000= -% IF Q = "7INCLN" THEN 13930000=02572000= +% IF Q = 6"7INCLN" THEN 13930000=02572000= % BEGIN SWITCHIT(NEWINCLBIT); GO AGAIN; END; 13935000=02573000= LENGTH8: 13940000=02574000= % NO OPTIONS OF THIS LENGTH ARE CURRENTLY IMPLEMENTED. 13945000=02574000= @@ -2796,7 +3882,7 @@ LENGTH9: 13950000 WHATISIT: 13980000=02579000= IF RESULT = 3 THEN 13985000=02579000= BEGIN 13990000=02580000= - BASENUM:= CONV(ACCUM[1], 0, ACCUM[1].[12:6]); 13995000=02581000= + BASENUM:= CONV(ACCUM, 1, 0, ACCUM[1].[35:6]); 13995000=02581000= TOTALNO:= -10; 14000000=02582000= NEWBASE:= TRUE; 14005000=02583000= GO SKANAGAIN; 14010000=02584000= @@ -2807,7 +3893,7 @@ WHATISIT: 13980000 BEGIN 14035000=02589000= SKAN; 14040000=02590000= IF RESULT = 3 THEN 14045000=02591000= - ADDVALUE:= CONV(ACCUM[1], 0, ACCUM[1].[12:6]) 14050000=02593000= + ADDVALUE:= CONV(ACCUM, 1, 0, ACCUM[1].[35:6]) 14050000=02593000= ELSE 14055000=02593000= FLAG(600); % NUMBER EXPECTED. 14060000=02593000= END; 14065000=02594000= @@ -2824,10 +3910,10 @@ COMMENT DID NOT RECOGNIZE OPTION; 14085000 GO AGAIN; 14120000=02601000= EXIT: 14125000=02602500= LISTER:= DEBUGTOG OR LISTOG OR LISTATOG; 14130000=02602500= - MOVE(10, DEFINEARRAY[0], ACCUM[0]); % RESTORE INFORMATION FOR 14135000=02602600= + MOVE(10, DEFINEARRAY, 0, ACCUM, 0); % RESTORE INFORMATION FOR 14135000=02602600= COUNT:= SCOUNT; 14140000=02602700= RESULT:= SRESULT; % "TABLE" TO RESUME SCAN. 14145000=02602700= - RESTORESEQNUM(LCR, INFO[LASTSEQROW, LASTSEQUENCE]); 14150000=02602800= + RESTORESEQNUM(SBUFF, LCR, INFO[LASTSEQROW,*], LASTSEQUENCE); 14150000=02602800= % FOR VOID TESTS 14155000=02602800= DOLLARTOG:= FALSE; 14160000=02603000= END DOLLARCARD; 14165000=02604000= @@ -2917,27 +4003,23 @@ COMMENT TABLE IS THE ROUTINE THAT MOST CODE IN THE COMPILER 14180000 FLAG(141); 14580000=02650000= GO SCANAGAIN; 14585000=02650000= SPECIALCHAR: 14590000=02652000= - GT1:= ACCUM[1].[18:6]-2; 14595000=02652000= - ENDTOG:= GT1 = 57 AND ENDTOG; 14600000=02653000= - 14605000=02654000= + GT1:= ACCUM[1].[29:6]-2; 14595000=02652000= + ENDTOG:= GT1 = 57 AND ENDTOG; % 57+2 = "%" 14600000=02653000= COMMENT OBTAIN ACTUAL CHARACTER FROM ACCUM; 14610000=02654000= - T:= SPECIAL[GT1 & GT1[42:41:3]]; 14615000=02655000= - 14620000=02656000= + T:= SPECIAL[GT1 & GT1[5:6:3]]; 14615000=02655000= COMMENT NOTICE COMPRESSION TECHNIQUE USED TO SHORTEN TABLE OF 14625000=02656000= ELBAT WORDS FOR SPECIAL CHARACTERS; 14630000=02657000= IF GT1:= T.INCR = 0 THEN 14635000=02658000= GO COMPLETE; 14640000=02658000= GO SPECIALSWITCH[GT1]; 14645000=02659000= - 14650000=02660000= COMMENT INCR FIELD OF SPECIAL CHARACTER IS NON-ZERO FOR SPECIAL 14655000=02660000= CHARACTERS REQUIRING SPECIAL HANDLING. INCR IS SWITCHED 14660000=02661000= ON TO OBTAIN DISCRIMINATION; 14665000=02662000= COLON: 14670000=02663000= RESULT:= 7; 14675000=02663000= - SCANNER; 14680000=02663000= - COMMENT ELIMINATE BLANKS - CHECKING 14685000=02663000= + SCANNER; COMMENT ELIMINATE BLANKS - CHECKING 14680000=02663000= FOR := IN PLACE OF ~ ; 14690000=02664000= - IF EXAMIN(NCR) = 6"=" THEN 14695000=02665000= + IF EXAMIN(SBUFF, NCR) = 6"=" THEN 14695000=02665000= BEGIN 14700000=02666000= RESULT:= 0; 14705000=02666000= SCANNER; 14710000=02666000= @@ -2946,7 +4028,7 @@ COMMENT INCR FIELD OF SPECIAL CHARACTER IS NON-ZERO FOR SPECIAL 14655000 RESULT:= 2; 14725000=02667000= GO COMPLETE; 14730000=02667000= DOT: 14735000=02680000= - IF EXAMIN(NCR) > 9 OR ENDTOG THEN 14740000=02680000= + IF EXAMIN(SBUFF, NCR) > 9 OR ENDTOG THEN 14740000=02680000= GO COMPLETE; 14745000=02680000= NHI:= NLO:= 0; 14750000=02681000= C:= 0; 14755000=02682000= @@ -2956,7 +4038,7 @@ COMMENT INCR FIELD OF SPECIAL CHARACTER IS NON-ZERO FOR SPECIAL 14655000 SCANNER; % SCAN PAST "@". 14775000=02684000= IF COUNT > 17 THEN 14780000=02685000= GO ARGH; % 16 CHARS, + "@". 14785000=02685000= - IF OCTIZE(ACCUM[1], C, 17-COUNT, COUNT-1) THEN 14790000=02686000= + IF OCTIZE(ACCUM, 1, C, 17-COUNT, COUNT-1) THEN 14790000=02686000= BEGIN 14795000=02686500= Q:= ACCUM[1]; 14800000=02686500= FLAG(521); 14805000=02686500= @@ -2985,7 +4067,7 @@ COMMENT DOT AND ATSIGN ENTER NUMBER CONVERSION AT CORRECT SPOT; 14830000 GO SCANAGAIN 14920000=02696000= END; 14925000=02696000= END 14930000=02697000= - UNTIL EXAMIN(NCR) = 6"""; 14935000=02697000= + UNTIL EXAMIN(SBUFF, NCR) = 6"""; 14935000=02697000= Q:= ACCUM[1]; 14940000=02698000= RESULT:= 5; 14945000=02698000= SCANNER; 14950000=02698000= @@ -2998,7 +4080,11 @@ COMMENT DOT AND ATSIGN ENTER NUMBER CONVERSION AT CORRECT SPOT; 14830000 T:= C:= 0; 14985000=02701000= IF COUNT < 8 THEN 14990000=02703000= MOVEIT: 14995000=02705000= - MOVECHARACTERS(COUNT, ACCUM[1], 3, C, 8-COUNT); 15000000=02705000= + BEGIN 14995500 + EBCDICBUFF[0]:= C; 14996000 + MOVECHARACTERS(COUNT, ACCUM, 1, 3, EBCDICBUFF, 0, 8-COUNT); 15000000=02705000= + C:= EBCDICBUFF[0]; 15002000 + END; 15004000 T.CLASS:= STRNGCON; 15005000=02705100= GO COMPLETE; 15010000=02705200= 15015000=02707000= @@ -3012,18 +4098,19 @@ COMMENT CROSSHATCH HANDLES TWO SITUATIONS: 15020000 CROSSHATCH: 15055000=02715000= IF DEFINECTR ^= 0 THEN 15060000=02715000= GO COMPLETE; 15065000=02715000= - PUTSEQNO(GT1, LCR); 15070000=02716000= - TURNONSTOPLIGHT(0, LCR); 15075000=02717000= + PUTSEQNO(EBCDICBUFF, 0, SBUFF, LCR); 15070000=02716000= + GT1:= EBCDICBUFF[0]; % COMPENSATE FOR SCALAR PARAM 15072000 + TURNONSTOPLIGHT(0, SBUFF, LCR); 15075000=02717000= IF DEFINEINDEX = 0 THEN 15080000=02718000= GO ARGH; 15085000=02718000= LCR:= (GT1:= DEFINEARRAY[DEFINEINDEX-1]) DIV 262144; 15090000=02719000= NCR:= GT1 MOD 262144; 15095000=02720000= - GT2:= 0 & (T:= DEFINEARRAY[DEFINEINDEX:= DEFINEINDEX-3])[33:18:15]15100000=02721000= + GT2:= 0 & (T:= DEFINEARRAY[DEFINEINDEX:= DEFINEINDEX-3])[14:29:15]15100000=02721000= ; 15105000=02721000= - LASTUSED:= T.[33:15]; 15110000=02722000= + LASTUSED:= T.[14:15]; 15110000=02722000= FOR GT1:= 1 STEP 1 UNTIL GT2 DO 15115000=02723000= BEGIN 15120000=02723500= - STACKHEAD[(T:= TAKE(LASTINFO+1)).[12:36] MOD 125]:= 15125000=02725000= + STACKHEAD[(T:= TAKE(LASTINFO+1)).[35:36] MOD 125]:= 15125000=02725000= TAKE(LASTINFO).LINK; 15130000=02725000= LASTINFO:= (NEXTINFO:= LASTINFO)-T.PURPT; 15135000=02726000= END; 15140000=02727000= @@ -3047,7 +4134,7 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 15225000 RTPAREN: 15230000=02744000= RESULT:= 7; 15235000=02744000= SCANNER; 15240000=02744000= - IF EXAMIN(NCR) = 6""" THEN 15245000=02745000= + IF EXAMIN(SBUFF, NCR) = 6""" THEN 15245000=02745000= BEGIN 15250000=02746000= RESULT:= 0; 15255000=02747000= SCANNER; 15260000=02747000= @@ -3055,12 +4142,12 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 15225000 RESULT:= 5; 15270000=02749000= SCANNER 15275000=02750000= END 15280000=02750000= - UNTIL EXAMIN(NCR) = 6"""; 15285000=02750000= + UNTIL EXAMIN(SBUFF, NCR) = 6"""; 15285000=02750000= RESULT:= 0; 15290000=02751000= SCANNER; 15295000=02751000= RESULT:= 7; 15300000=02752000= SCANNER; 15305000=02752000= - IF EXAMIN(NCR) ^= 6"(" THEN 15310000=02753000= + IF EXAMIN(SBUFF, NCR) ^= 6"(" THEN 15310000=02753000= GO ARGH; 15315000=02753000= RESULT:= 0; 15320000=02754000= SCANNER; 15325000=02754000= @@ -3102,24 +4189,24 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 15225000 NHI:= THI; 15505000=02785000= NLO:= TLO; 15510000=02785000= END; 15515000=02785000= - IF EXAMIN(NCR) = 6"." THEN 15520000=02786000= + IF EXAMIN(SBUFF, NCR) = 6"." THEN 15520000=02786000= BEGIN 15525000=02787000= RESULT:= 0; 15530000=02788000= SCANNER; 15535000=02788000= C:= 1.0*C; 15540000=02789000= FPART: 15545000=02790000= TCOUNT:= COUNT; 15550000=02790000= - IF EXAMIN(NCR) <= 9 THEN 15555000=02791000= + IF EXAMIN(SBUFF, NCR) <= 9 THEN 15555000=02791000= BEGIN 15560000=02792000= RESULT:= 0; 15565000=02793000= SCANNER; 15570000=02793000= IF DPTOG THEN 15575000=02794000= BEGIN 15580000=02795000= - DOUBLE(CONVERT, TLO, TEN[(COUNT-TCOUNT) MOD 12], 0, /, 15585000=02797000= - := , THI, TLO); 15590000=02797000= + THI:= FIRSTWORD( 15585000=02797000= + DOUBLE(CONVERT, TLO)/TEN[(COUNT-TCOUNT) MOD 12], TLO); 15590000=02797000= FOR T:= 12 STEP 12 UNTIL COUNT-TCOUNT DO 15595000=02798000= - DOUBLE(THI, TLO, TEN[12], 0, /, := , THI, TLO); 15600000=02799000= - DOUBLE(THI, TLO, NHI, NLO, +, := , NHI, NLO); 15605000=02800000= + THI:= FIRSTWORD(DOUBLE(THI, TLO)/TEN[12], TLO); 15600000=02799000= + NHI:= FIRSTWORD(DOUBLE(THI, TLO) + DOUBLE(NHI, NLO), NLO); 15605000=02800000= C:= NHI 15610000=02802000= END 15615000=02803000= ELSE 15620000=02803000= @@ -3128,7 +4215,7 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 15225000 END; 15635000=02805000= RESULT:= 7; 15640000=02806000= SCANNER; 15645000=02806000= - IF EXAMIN(NCR) = 6"@" THEN 15650000=02807000= + IF EXAMIN(SBUFF, NCR) = 6"@" THEN 15650000=02807000= BEGIN 15655000=02808000= RESULT:= 0; 15660000=02809000= SCANNER; 15665000=02809000= @@ -3137,7 +4224,7 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 15225000 C:= C*1.0; 15680000=02811000= RESULT:= 7; 15685000=02812000= SCANNER; 15690000=02812000= - IF T:= EXAMIN(NCR) > 9 THEN 15695000=02813000= + IF T:= EXAMIN(SBUFF, NCR) > 9 THEN 15695000=02813000= BEGIN 15700000=02815000= RESULT:= 0; 15705000=02816000= SCANNER; 15710000=02816000= @@ -3153,8 +4240,8 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 15225000 ELSE 15760000=02825000= BEGIN 15765000=02825000= T:= TEN[T]; 15770000=02826000= - IF ABS(0 & C[42:3:6] & C[1:2:1]+0 & T[42:3:6] & T[1:2:1]+12) 15775000=02828000= - > 63 15780000=02828000= + IF ABS(0 & C[5:44:6] & C[46:45:1]+0 & T[5:44:6] 15775000=02828000= + & T[46:45:1]+12) > 63 15780000=02828000= THEN 15785000=02828000= FLAG(269) 15790000=02829000= ELSE 15795000=02829000= @@ -3162,17 +4249,15 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 15225000 IF GT1 < 0 THEN 15805000=02830000= BEGIN 15810000=02831000= GT1:= -GT1; 15815000=02832000= - DOUBLE 15820000=02833000= - (NHI, NLO, TEN[GT1 MOD 12], 0, /, := , NHI, NLO); 15825000=02833000= + NHI:= FIRSTWORD(DOUBLE(NHI, NLO)/TEN[GT1 MOD 12], NLO); 15820000=02833000= FOR GT2:= 12 STEP 12 UNTIL GT1 DO 15830000=02834000= - DOUBLE(NHI, NLO, TEN[12], 0, /, := , NHI, NLO); 15835000=02835000= + NHI:= FIRSTWORD(DOUBLE(NHI, NLO)/TEN[12], NLO); 15835000=02835000= END 15840000=02837000= ELSE 15845000=02837000= BEGIN 15850000=02837000= - DOUBLE 15855000=02838000= - (NHI, NLO, TEN[GT1 MOD 12], 0, *, := , NHI, NLO); 15860000=02838000= + NHI:= FIRSTWORD(DOUBLE(NHI, NLO)*TEN[GT1 MOD 12], NLO); 15855000=02838000= FOR GT2:= 12 STEP 12 UNTIL GT1 DO 15865000=02839000= - DOUBLE(NHI, NLO, TEN[12], 0, *, := , NHI, NLO); 15870000=02840000= + NHI:= FIRSTWORD(DOUBLE(NHI, NLO)*TEN[12], NLO); 15870000=02840000= END 15875000=02842000= ELSE 15880000=02842000= C:= C*T; 15885000=02842000= @@ -3183,7 +4268,7 @@ COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 15225000 RESULT:= 3; 15910000=02846000= FINISHNUMBER: 15915000=02848000= T:= 0; 15920000=02848000= - IF C.[1:37] = 0 THEN 15925000=02849000= + IF C.[46:37] = 0 THEN 15925000=02849000= BEGIN 15930000=02850000= T.CLASS:= LITNO; 15935000=02850000= T.ADDRESS:= C 15940000=02850000= @@ -3210,27 +4295,27 @@ COMMENT THE CODE BETWEEN IDENT AND COMPOST DOES A LOOKUP IN INFO. 15970000 T:= 0; 16045000=02877000= GO COMPLETE 16050000=02877000= END; 16055000=02877000= - IF T = INFO[GT1, GT2] THEN 16060000=02877010= + IF T = INFO[GT1, GT2] THEN 16060000=02877010= BEGIN 16065000=02877010= T:= 0; 16070000=02877020= GO TO COMPLETE 16075000=02877020= END; 16080000=02877020= - T:= INFO[GT1, GT2]; 16085000=02878000= - IF INFO[GT1, GT2+1] & 0[1:1:11] ^= Q THEN 16090000=02879000= + T:= INFO[GT1, GT2]; 16085000=02878000= + IF INFO[GT1, GT2+1] & 0[46:46:11] ^= Q THEN 16090000=02879000= GO ROSE; 16095000=02879000= IF COUNT <= 5 THEN 16100000=02880000= GO COMPOST; 16105000=02880000= - IF NOT EQUAL(COUNT-5, ACCUM[2], INFO[GT1, GT2+2]) THEN 16110000=02881000= + IF NOT EQUAL(COUNT-5, ACCUM, 2, INFO[GT1,*], GT2+2) THEN 16110000=02881000= GO ROSE; 16115000=02881000= COMPOST: 16120000=02882000= - T:= T & GT1[35:43:5] & GT2[40:40:8]; 16125000=02882000= + T:= T & GT1[12:4:5] & GT2[7:7:8]; 16125000=02882000= 16130000=02883000= COMMENT CHECK HERE FOR COMMENTS AND DEFINED IDS; 16135000=02883000= IF NOT ENDTOG THEN 16140000=02884000= BEGIN 16145000=02885000= IF GT1:= T.CLASS = COMMENTV THEN 16150000=02886000= BEGIN 16155000=02887000= - WHILE EXAMIN(NCR) ^= 6";" DO 16160000=02888000= + WHILE EXAMIN(SBUFF, NCR) ^= 6";" DO 16160000=02888000= BEGIN 16165000=02889000= RESULT:= 6; 16170000=02889000= COUNT:= 0; 16175000=02889000= @@ -3254,24 +4339,25 @@ COMMENT SETUP FOR DEFINED IDS - SEE DEFINEGEN FOR MORE DETAILS; 16240000 FLAG(139); 16265000=02899000= GO ARGH 16270000=02899000= END; 16275000=02899000= - DEFINEARRAY[DEFINEINDEX]:= LASTUSED & T.ADDRESS[18:33:15]; 16280000=02900000= + DEFINEARRAY[DEFINEINDEX]:= LASTUSED & T.ADDRESS[29:14:15]; 16280000=02900000= LASTUSED:= GIT(T); 16285000=02901000= DEFINEARRAY[DEFINEINDEX+2]:= 262144*LCR+NCR; 16290000=02902000= - LCR:= (NCR:= MKABS(DEFINEARRAY[DEFINEINDEX+1]))+1; 16295000=02903000= - PUTSEQNO(GT4, LCR); 16300000=02904000= - TURNONSTOPLIGHT(6"%", LCR); 16305000=02905000= + LCR:= (NCR:= DEFINEINDEX+1)+1; 16295000=02903000= + SBUFF:= DEFINEARRAY; % SWITCH SOURCE TO DEFINEARRAY 16296000 + PUTSEQNO(EBCDICBUFF, 0, SBUFF, LCR); 16300000=02904000= + GT4:= EBCDICBUFF[0]; % COMPENSATE FOR SCALAR PARAM 16302000 + TURNONSTOPLIGHT(6"%", SBUFF, LCR); 16305000=02905000= DEFINEINDEX:= DEFINEINDEX+3; 16310000=02905000= GO PERCENT; 16315000=02906000= COMPLETE: 16320000=02910000= ELBAT[NXTELBT]:= T; 16325000=02910000= - STOPDEFINE:= FALSE; 16330000=02911000= - COMMENT ALLOW DEFINES AGAIN; 16335000=02911000= + STOPDEFINE:= FALSE; COMMENT ALLOW DEFINES AGAIN; 16330000=02911000= IF NXTELBT:= NXTELBT+1 > 74 THEN 16340000=02912000= IF NOT MACROID THEN 16345000=02913000= BEGIN 16350000=02914000= 16355000=02915000= COMMENT ELBAT IS FULL: ADJUST IT; 16360000=02915000= - MOVE(10, ELBAT[65], ELBAT); 16365000=02916000= + MOVE(10, ELBAT, 65, ELBAT, 0); 16365000=02916000= I:= I-65; 16370000=02917000= P:= P-65; 16375000=02917000= NXTELBT:= 10; 16380000=02917000= @@ -3281,11 +4367,10 @@ COMMENT ELBAT IS FULL: ADJUST IT; 16360000 BEGIN 16400000=02921000= 16405000=02922000= COMMENT SPECIAL HANDLING OF CONSTANTS FOR SAKE OF FOR STATEMENTS; 16410000=02922000= - C:= INFO[0, ELBAT[P].ADDRESS]; 16415000=02923000= + C:= INFO[0, ELBAT[P].ADDRESS]; 16415000=02923000= ELBAT[P].CLASS:= TABLE:= NONLITNO 16420000=02925000= END; 16425000=02925000= - STOPDEFINE:= FALSE; 16430000=02926000= - COMMENT ALLOW DEFINE; 16435000=02926000= + STOPDEFINE:= FALSE; COMMENT ALLOW DEFINE; 16430000=02926000= END TABLE; 16440000=02927000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16445000=02927000= BOOLEAN PROCEDURE BOOLPRIM; 16450000=02955000= @@ -3316,7 +4401,7 @@ COMMENT SPECIAL HANDLING OF CONSTANTS FOR SAKE OF FOR STATEMENTS; 16410000 IF Q = 6"1,0000" OR Q = 6"1%0000" THEN 16575000=02960500= 20 % FAKE OUT BOOLEXP.16580000=02960500= ELSE 16585000=02961000= - ((T:= Q.[18:6]-2) & T[42:41:3]); 16590000=02961000= + ((T:= Q.[29:6]-2) & T[5:6:3]); 16590000=02961000= IF T = 11 OR T = 19 OR T = 20 THEN 16595000=02961500= BATMAN:= SPECIAL[T] % (,),OR ;16600000=02961500= ELSE 16605000=02962000= @@ -3342,7 +4427,7 @@ COMMENT LOOK FOR BOOLEAN OPERATORS, THEN OPTIONS; 16630000 IF T ^= 0 THEN 16705000=02966500= BATMAN.CLASS:= T 16710000=02967000= ELSE 16715000=02967000= - BATMAN:= 1 & BOOID[2:7] & REAL(FINDOPTION(1))[1:1]; % OPTION. 16720000=02967000= + BATMAN:= 1 & BOOID[45:7] & REAL(FINDOPTION(1))[46:1]; % OPTION. 16720000=02967000= EXIT: 16725000=02968000= NEXT:= MYCLASS:= BATMAN.CLASS; 16730000=02968000= END NEXT; 16735000=02968500= @@ -3483,7 +4568,7 @@ COMMENT#################################################################17045000 PROCEDURE IFSTMT; 17410000=03022000= FORWARD; 17415000=03022000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17420000=03022000= - PROCEDURE GOGEN(LABELBAT, BRANCHTYPE); 17425000=03023000= + PROCEDURE GOGEN(LABELBAT, BRANCHTYPE); 17425000=03023000= VALUE 17430000=03024000= LABELBAT, 17435000=03024000= BRANCHTYPE; 17440000=03024000= @@ -3521,12 +4606,12 @@ COMMENT#################################################################17045000 PROCEDURE SCATTERELBAT; 17600000=03035000= FORWARD; 17605000=03035000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17610000=03035000= - PROCEDURE EMITB(BRANCH, FROM, TOWARDS); 17615000=03036000= + PROCEDURE EMITB(BRANCH, FROM, TOWARDS); 17615000=03036000= VALUE 17620000=03036000= BRANCH, 17625000=03036000= FROM, 17630000=03036000= TOWARDS; 17635000=03036000= - INTEGER 17640000=03037000= + REAL 17640000=03037000= BRANCH, 17645000=03037000= FROM, 17650000=03037000= TOWARDS; 17655000=03037000= @@ -3557,7 +4642,7 @@ COMMENT#################################################################17045000 B; 17780000=03041000= FORWARD; 17785000=03041000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17790000=03041000= - PROCEDURE SEGMENT(SIZE, FR); 17795000=03042000= + PROCEDURE SEGMENT(SIZE, FR); 17795000=03042000= VALUE 17800000=03042000= SIZE, 17805000=03042000= FR; 17810000=03042000= @@ -3569,7 +4654,7 @@ COMMENT#################################################################17045000 INTEGER PROCEDURE BAE; 17840000=03046000= FORWARD; 17845000=03046000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17850000=03046000= - PROCEDURE PROGDESCBLDR(A, B, C, D); 17855000=03047000= + PROCEDURE PROGDESCBLDR(A, B, C, D); 17855000=03047000= VALUE 17860000=03047000= A, 17865000=03047000= B, 17870000=03047000= @@ -3593,7 +4678,7 @@ COMMENT#################################################################17045000 A; 17960000=03049000= FORWARD; 17965000=03049000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17970000=03049000= - PROCEDURE EMITD(A, B, T); 17975000=03050000= + PROCEDURE EMITD(A, B, T); 17975000=03050000= VALUE 17980000=03050000= A, 17985000=03050000= B, 17990000=03050000= @@ -3604,7 +4689,7 @@ COMMENT#################################################################17045000 T; 18015000=03050000= FORWARD; 18020000=03050000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18025000=03050000= - INTEGER PROCEDURE GETSPACE(S, L); 18030000=03051000= + INTEGER PROCEDURE GETSPACE(S, L); 18030000=03051000= VALUE 18035000=03051000= S, 18040000=03051000= L; 18045000=03051000= @@ -3679,33 +4764,33 @@ COMMENT#################################################################17045000 PROCEDURE EMITL(LITERAL); 18390000=04003000= VALUE 18395000=04003000= LITERAL; 18400000=04003000= - INTEGER 18405000=04003000= + REAL 18405000=04003000= LITERAL; 18410000=04003000= - EMIT(0 & LITERAL[36:38:10]); 18415000=04004000= + EMIT(0 & LITERAL[11:9:10]); 18415000=04004000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18420000=04004000= 18425000=04005000= COMMENT EMITO EMIT AN OPERATOR; 18430000=04005000= PROCEDURE EMITO(OPERATOR); 18435000=04006000= VALUE 18440000=04006000= OPERATOR; 18445000=04006000= - INTEGER 18450000=04006000= + REAL 18450000=04006000= OPERATOR; 18455000=04006000= - EMIT(1 & OPERATOR[36:38:10]); 18460000=04007000= + EMIT(1 & OPERATOR[11:9:10]); 18460000=04007000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18465000=04007000= 18470000=04008000= COMMENT EMITC IS PRIMARILY FOR USE BY STRMSTMT TO EMIT CHARACTOR MODE 18475000=04008000= OPERATORS. HOWEVER IT ALSO HANDLES DIA, DIB, AND TRB; 18480000=04009000= - PROCEDURE EMITC(REPEAT, OPERATOR); 18485000=04010000= + PROCEDURE EMITC(REPEAT, OPERATOR); 18485000=04010000= VALUE 18490000=04010000= REPEAT, 18495000=04010000= OPERATOR; 18500000=04010000= - INTEGER 18505000=04011000= + REAL 18505000=04011000= REPEAT, 18510000=04011000= OPERATOR; 18515000=04011000= BEGIN 18520000=04012000= IF REPEAT >= 64 THEN 18525000=04013000= FLAG(268); 18530000=04013000= - EMIT(OPERATOR & REPEAT[36:42:6]) 18535000=04014000= + EMIT(OPERATOR & REPEAT[11:5:6]) 18535000=04014000= END EMITC; 18540000=04014000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18545000=04014000= 18550000=04015000= @@ -3714,12 +4799,12 @@ COMMENT#################################################################17045000 PROCEDURE EMITV(ADDRESS); 18565000=04017000= VALUE 18570000=04017000= ADDRESS; 18575000=04017000= - INTEGER 18580000=04017000= + REAL 18580000=04017000= ADDRESS; 18585000=04017000= BEGIN 18590000=04018000= IF ADDRESS > 1023 THEN 18595000=04018000= EMITO(PRTE); 18600000=04018000= - EMIT(2 & ADDRESS[36:38:10]) 18605000=04019000= + EMIT(2 & ADDRESS[11:9:10]) 18605000=04019000= END EMITV; 18610000=04019000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18615000=04019000= 18620000=04020000= @@ -3728,25 +4813,25 @@ COMMENT#################################################################17045000 PROCEDURE EMITN(ADDRESS); 18635000=04022000= VALUE 18640000=04022000= ADDRESS; 18645000=04022000= - INTEGER 18650000=04022000= + REAL 18650000=04022000= ADDRESS; 18655000=04022000= BEGIN 18660000=04023000= IF ADDRESS > 1023 THEN 18665000=04023000= EMITO(PRTE); 18670000=04023000= - EMIT(3 & ADDRESS[36:38:10]) 18675000=04024000= + EMIT(3 & ADDRESS[11:9:10]) 18675000=04024000= END EMITN; 18680000=04024000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18685000=04024000= 18690000=04025000= COMMENT EMITPAIR EMITS A LITC ADDRESS FOLLOWED BY OPERATOR. IF THE 18695000=04025000= ADDRESS IS FOR THE SECOND HALF OF THE PRT, THEN IT ALSO 18700000=04026000= EMITS PRTE; 18705000=04027000= - PROCEDURE EMITPAIR(ADDRESS, OPERATOR); 18710000=04028000= + PROCEDURE EMITPAIR(ADDRESS, OPERATOR); 18710000=04028000= VALUE 18715000=04029000= ADDRESS, 18720000=04029000= OPERATOR; 18725000=04029000= - INTEGER 18730000=04030000= + REAL 18730000=04030000= ADDRESS, 18735000=04030000= - OPERATOR; 18740000=04030000= + OPERATOR; 18740000=04030000= BEGIN 18745000=04031000= EMITL(ADDRESS); 18750000=04032000= IF ADDRESS > 1023 THEN 18755000=04033000= @@ -3760,7 +4845,7 @@ COMMENT#################################################################17045000 WHICH SORT OF NOP TO USE; 18795000=04082000= PROCEDURE ADJUST; 18800000=04083000= BEGIN 18805000=04084000= - WHILE L.[46:2] ^= 0 DO 18810000=04086000= + WHILE L.[1:2] ^= 0 DO 18810000=04086000= EMIT(45); 18815000=04086000= END ADJUST; 18820000=04087000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18825000=04087000= @@ -3779,12 +4864,12 @@ COMMENT#################################################################17045000 L:= L-1 18890000=04106000= COMMENT LAST THING WAS AN LNG - SO CANCEL IT; 18895000=04106000= ELSE 18900000=04107000= - IF GT1.[42:6] = 21 AND GT1.[37:2] = 0 THEN % AHA 18905000=04107000= + IF GT1.[5:6] = 21 AND GT1.[10:2] = 0 THEN % AHA 18905000=04107000= COMMENT LAST THING WAS A RELATIONAL; 18910000=04108000= BEGIN 18915000=04109000= L:= L-1; 18920000=04109000= - EMITO(REAL(BOOLEAN(GT1.[36:10]) EQV 18925000=04111000= - BOOLEAN(IF GT1.[40:2] = 0 THEN 511 ELSE 463))) 18930000=04111000= + EMITO(REAL(BOOLEAN(GT1.[11:10]) EQV 18925000=04111000= + BOOLEAN(IF GT1.[7:2] = 0 THEN 511 ELSE 463))) 18930000=04111000= COMMENT NEGATE THE RELATIONAL; 18935000=04111000= END 18940000=04112000= ELSE 18945000=04112000= @@ -3792,12 +4877,12 @@ COMMENT#################################################################17045000 END EMITLNG; 18955000=04112000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18960000=04112000= COMMENT EMITB EMITS A BRANCH OPERATOR AND ITS ASSOCIATED NUMBER; 18965000=04113000= - PROCEDURE EMITB(BRANCH, FROM, TOWARDS); 18970000=04114000= + PROCEDURE EMITB(BRANCH, FROM, TOWARDS); 18970000=04114000= VALUE 18975000=04115000= BRANCH, 18980000=04115000= FROM, 18985000=04115000= TOWARDS; 18990000=04115000= - INTEGER 18995000=04116000= + REAL 18995000=04116000= BRANCH, 19000000=04116000= FROM, 19005000=04116000= TOWARDS; 19010000=04116000= @@ -3809,13 +4894,13 @@ COMMENT#################################################################17045000 FOULED:= TOWARDS; 19040000=04119500= L:= FROM-2; 19045000=04120000= GT1:= TOWARDS-FROM; 19050000=04120100= - IF TOWARDS.[46:2] = 0 THEN 19055000=04120300= + IF TOWARDS.[1:2] = 0 THEN 19055000=04120300= BEGIN 19060000=04120300= - BRANCH:= BRANCH & 1[39:47:1]; 19065000=04120400= + BRANCH:= BRANCH & 1[8:0:1]; 19065000=04120400= GT1:= TOWARDS DIV 4-(FROM-1) DIV 4 19070000=04120500= END; 19075000=04120500= EMITNUM(ABS(GT1)); 19080000=04121000= - EMITO(BRANCH & (REAL(GT1 >= 0)+1)[42:46:2]); 19085000=04122000= + EMITO(BRANCH & (REAL(GT1 >= 0)+1)[5:1:2]); 19085000=04122000= L:= TL 19090000=04125000= END EMITB; 19095000=04125000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19100000=04125000= @@ -3823,20 +4908,41 @@ COMMENT#################################################################17045000 OCTAL, NAMELY : 19110000=04127000= 1. 4 CHARACTERS FOR THE L REGISTER. 19115000=04128000= 2.16 CHARACTERS FOR THE WORD BEING EMITTED. ; 19120000=04129000= - STREAM PROCEDURE DEBUGWORD(SEQ, CODE, FEIL); 19125000=04130000= - VALUE 19130000=04130000= - SEQ, 19135000=04130000= - CODE; 19140000=04130000= + PROCEDURE DEBUGWORD(SEQ, CODE, FEIL); 19121000=04130000= + VALUE 19122000=04130000= + SEQ, CODE; 19124000=04130000= + REAL 19126000 + SEQ, CODE; 19128000 + ARRAY 19130000 + FEIL[0]; 19132000 BEGIN 19145000=04131000= - DI:= FEIL; 19150000=04132000= - SI:= LOC SEQ; 19155000=04132000= - SI:= SI+4; 19160000=04132000= - DS:= 4 CHR; 19165000=04132000= - DS:= 2 LIT 6" "; 19170000=04133000= - SI:= LOC CODE; 19175000=04134000= - (DS:= 3 RESET;3(IF SB THEN DS:= SET ELSE DS:= RESET;SKIP 1 SB)); 19180000=04136000= - 29(DS:= 2 LIT 6" "); 19185000=04137000= + STREAMLOCALS; 19146000 + STREAMSETDI(FEIL, 0); 19148000=04132000= + STREAMSETLOCSI(SEQ); 19150000=04132000= + STREAMSKIPSI(+4); 19152000=04132000= + STREAMTRANSFERCHR(4); 19154000=04132000= + STREAMTRANSFERLIT(2, 6" "); 19156000=04133000= + STREAMSETLOCSI(CODE); 19158000=04134000= + THRU 16 DO 19180000=04136000= + BEGIN 19180200 + STREAMSETDB(3, 0); 19180400 + THRU 3 DO 19180600 + BEGIN 19180800 + IF STREAMTESTSB THEN 19181000 + STREAMSETDB(1, 1) 19181200 + ELSE 19181400 + STREAMSETDB(1, 0); 19181600 + 19181800 + STREAMSKIPSB(1); 19182000 + END 19182200 + END; 19182400 + 19182600 + THRU 29 DO 19185000=04137000= + BEGIN 19186000 + STREAMSMEARLIT(2, 6" ") 19187000 + END; 19188000 END; 19190000=04138000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19192000 COMMENT EMITWORD PLACES THE PARAMETER,"WORD",INTO EDOC. IF 19195000=04139000= DEBUGGING IS REQUIRED, "L" AND "WORD" ARE OUTPUT ON 19200000=04140000= THE PRINTER FILE IN OCTAL FORMAT. ; 19205000=04141000= @@ -3854,10 +4960,10 @@ COMMENT#################################################################17045000 END 19265000=04146000= ELSE 19270000=04146000= BEGIN 19275000=04146000= - MOVE(1, WORD, CODE(L DIV 4+1)); 19280000=04147000= + CODE[L DIV 4+1]:= WORD; 19280000=04147000= IF DEBUGTOG THEN 19285000=04148000= BEGIN 19290000=04149000= - DEBUGWORD(B2D(L), WORD, LIN); 19295000=04149000= + DEBUGWORD(B2D(L), WORD, LIN); 19295000=04149000= WRITELINE 19300000=04150000= END; 19305000=04150000= FOULED:= L:= L+4; 19310000=04151000= @@ -3938,7 +5044,7 @@ COMMENT#################################################################17045000 FOUND; 19685000=04204000= REAL 19690000=04204000= N; 19695000=04204000= - IF C.[1:37] = 0 THEN 19700000=04205000= + IF C.[46:37] = 0 THEN 19700000=04205000= EMITL(C) 19705000=04206000= ELSE 19710000=04206000= BEGIN 19715000=04207000= @@ -3956,7 +5062,7 @@ COMMENT#################################################################17045000 BEGIN 19775000=04215000= C:= BUMPL; 19780000=04216000= CONSTANTCLEAN; 19785000=04217000= - EMITB(BFW, C, L); 19790000=04218000= + EMITB(BFW, C, L); 19790000=04218000= END; 19795000=04219000= GO TO FINISHED; 19800000=04220000= FOUND: 19805000=04221000= @@ -3974,7 +5080,7 @@ FINISHED: 19840000 MNEUMONIC FOR THAT OPERATOR. IF THE OPERATOR CANNOT 19865000=04228000= BE FOUND SEARCH YIELDS BLANKS. 19870000=04229000= NOTE: DIA,DIB,TRB ARE RETURNED AS BLANKS. ; 19875000=04230000= - ALPHA PROCEDURE SEARCH(Q, KEY); 19880000=04231000= + ALPHA PROCEDURE SEARCH(Q, KEY); 19880000=04231000= VALUE 19885000=04231000= KEY; 19890000=04231000= ARRAY 19895000=04231000= @@ -3999,8 +5105,7 @@ FINISHED: 19840000 DO 19990000=04240000= IF Q[I] = KEY THEN 19995000=04241000= GO TO L; 20000000=04241000= - I:= 0; 20005000=04242000= - COMMENT ARGUMENT NOT FOUND,SEARCH=Q[1] ; 20010000=04242000= + I:= 0; COMMENT ARGUMENT NOT FOUND,SEARCH=Q[1] ; 20005000=04242000= L: SEARCH:= Q[I+1]; 20015000=04243000= END SEARCH; 20020000=04244000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20025000=04244000= @@ -4011,26 +5116,18 @@ L: SEARCH:= Q[I+1]; 20015000 B; 20050000=04247000= REAL 20055000=04247000= B; 20060000=04247000= - B2D:= 0 & B[45:45:3] & B[39:42:3] & B[33:39:3] & B[27:36:3]; 20065000=04248000= + B2D:= 0 & B[2:2:3] & B[8:5:3] & B[14:8:3] & B[20:11:3]; 20065000=04248000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20070000=04248000= COMMENT PACK IS A STREAM PROCEDURE WHICH INSERTS THE SYLLABLE 20075000=04265000= INTO THE EDOC ARRAY. THE SPECIFIC ELEMENT OF EDOC 20080000=04266000= IS PRECISILY = EDOC[(L DIV 4) DIV 128,(< DIV 4)MOD 128] 20085000=04267000= SYLLABLE POSITION=(L MOD 4 ), WHERE L IS THE SYLLABLE 20090000=04268000= NUMBER RELATIVE TO THE BEGINNING OF THE SEGMENT; 20095000=04269000= - STREAM PROCEDURE PACK(WORD, POSITION, SYLLABLE); 20100000=04270000= - VALUE 20105000=04271000= - POSITION, 20110000=04271000= - SYLLABLE; 20115000=04271000= + DEFINE PACK(WORD, WX, POSITION, SYLLABLE) = 20100000=04270000= BEGIN 20120000=04272000= - DI:= WORD; 20125000=04273000= - DI:= DI+POSITION; 20130000=04273000= - DI:= DI+POSITION; 20135000=04273000= - SI:= LOC SYLLABLE; 20140000=04274000= - SI:= SI+6; 20145000=04274000= - DS:= 2 CHR; 20150000=04275000= - END PACK; 20155000=04276000= - 20160000=04277000= + WORD[(WX)]:= * & (SYLLABLE)[47-(POSITION)*12:12]; 20125000=04273000= + END PACK #; 20155000=04276000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20160000=04277000= COMMENT DEBUG PRINTS OUT OBJECT CODE IF "DEBUGN" IS SET; 20165000=04277000= PROCEDURE DEBUG(S); 20170000=04277500= VALUE 20175000=04277500= @@ -4041,17 +5138,21 @@ COMMENT DEBUG PRINTS OUT OBJECT CODE IF "DEBUGN" IS SET; 20165000 REAL 20200000=04278000= T1; 20205000=04278000= IF SINGLTOG THEN 20210000=04278500= - WRITE(LINE, BUG, B2D(L), IF STREAMTOG THEN 20215000=04282500= - SEARCH(COP, S.[42:6]) ELSE IF T1:= S.[46:2] = 1 THEN 20220000=04282500= - SEARCH(WOP, S.[36:10]) ELSE WOP[T1], IF STREAMTOG THEN 20225000=04282500= - B2D(S.[36:6]) ELSE IF T1 = 1 THEN WOP[1] ELSE B2D(S.[36:10]), 20230000=04282500= - B2D(S)) 20235000=04282500= + WRITE(LINE, BUG, BIC2EBC(B2D(L)), 20215000=04282500= + BIC2EBC(IF STREAMTOG THEN SEARCH(COP, S.[5:6]) 20220000=04282500= + ELSE IF T1:= S.[1:2] = 1 THEN SEARCH(WOP, S.[11:10]) 20222000 + ELSE WOP[T1]), 20225000=04282500= + BIC2EBC(IF STREAMTOG THEN B2D(S.[11:6]) 20230000=04282500= + ELSE IF T1 = 1 THEN WOP[1] ELSE B2D(S.[11:10])), 20235000=04282500= + BIC2EBC(B2D(S))) 20236000 ELSE 20240000=04282500= - WRITE(LINE, BUG, B2D(L), IF STREAMTOG THEN 20245000=04285500= - SEARCH(COP, S.[42:6]) ELSE IF T1:= S.[46:2] = 1 THEN 20250000=04285500= - SEARCH(WOP, S.[36:10]) ELSE WOP[T1], IF STREAMTOG THEN 20255000=04285500= - B2D(S.[36:6]) ELSE IF T1 = 1 THEN WOP[1] ELSE B2D(S.[36:10]), 20260000=04285500= - B2D(S)); 20265000=04285500= + WRITE(LINE, BUG, BIC2EBC(B2D(L)), 20245000=04285500= + BIC2EBC(IF STREAMTOG THEN SEARCH(COP, S.[5:6]) 20250000=04285500= + ELSE IF T1:= S.[1:2] = 1 THEN SEARCH(WOP, S.[11:10]) 20255000=04285500= + ELSE WOP[T1]), 20260000=04285500= + BIC2EBC(IF STREAMTOG THEN B2D(S.[11:6]) 20262000 + ELSE IF T1 = 1 THEN WOP[1] ELSE B2D(S.[11:10])), 20264000 + BIC2EBC(B2D(S))); 20265000=04285500= END DEBUG; 20270000=04286000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20275000=04286000= COMMENT EMIT PLACES SYLLABLES INTO EDOC, CALLS DEBUG FOR 20280000=04288000= @@ -4066,7 +5167,7 @@ COMMENT DEBUG PRINTS OUT OBJECT CODE IF "DEBUGN" IS SET; 20165000 IF L < 4088 THEN 20325000=04293000= BEGIN 20330000=04294000= LINKTOG:= TRUE; 20335000=04295000= - PACK(CODE(L DIV 4+1), L.[46:2], S); 20340000=04296000= + PACK(CODE, L DIV 4+1, L.[1:2], S); 20340000=04296000= IF DEBUGTOG THEN 20345000=04297000= DEBUG(S); 20350000=04297000= L:= L+1; 20355000=04298000= @@ -4085,7 +5186,7 @@ COMMENT DEBUG PRINTS OUT OBJECT CODE IF "DEBUGN" IS SET; 20165000 THE APPROIATE SYLLABLE(S) ARE OMITTED 20420000=04308000= IF 0 BITS ARE TO BE TRANSFERED THEN NO SYLLABLES ARE 20425000=04309000= EMITTED ; 20430000=04310000= - PROCEDURE EMITD(A, B, T); 20435000=04311000= + PROCEDURE EMITD(A, B, T); 20435000=04311000= VALUE 20440000=04311000= A, 20445000=04311000= B, 20450000=04311000= @@ -4112,8 +5213,7 @@ COMMENT DEBUG PRINTS OUT OBJECT CODE IF "DEBUGN" IS SET; 20165000 ELSE 20555000=04311080= IF B ^= 33 THEN 20560000=04311080= GO TO NORMAL; 20565000=04311080= - EMITO(Q+197); 20570000=04311090= - COMMENT -- THIS GETS OUT FIXED FIELD; 20575000=04311090= + EMITO(Q+197); COMMENT -- THIS GETS OUT FIXED FIELD; 20570000=04311090= GO TO EXIT; 20580000=04311100= END; 20585000=04311110= NORMAL: 20590000=04312000= @@ -4126,27 +5226,28 @@ NORMAL: 20590000 EXIT: 20625000=04322100= END; 20630000=04322100= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20635000=04322100= - PROCEDURE EMITI(E, A, B); 20640000=04500000= + PROCEDURE EMITI(E, A, B); 20640000=04500000= VALUE 20645000=04500000= E, 20650000=04500000= - A, 20655000=04500000= - B; 20660000=04500000= + A, 20655000=04500000= + B; 20660000=04500000= REAL 20665000=04500000= E, 20670000=04500000= - A, 20675000=04500000= - B; 20680000=04500000= + A, 20675000=04500000= + B; 20680000=04500000= BEGIN 20685000=04501000= LABEL 20690000=04501000= EXIT, 20695000=04501000= - IS; 20700000=04501000= + IZ; 20700000=04501000= INTEGER 20705000=04502000= S, 20710000=04502000= - T1, 20715000=04502000= - T2; 20720000=04502000= - PROCEDURE EMIT21(E, B); 20725000=04503000= + T1, 20715000=04502000= + T2; 20720000=04502000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20722000 + PROCEDURE EMIT21(E, B); 20725000=04503000= VALUE 20730000=04503000= E, 20735000=04503000= - B; 20740000=04503000= + B; 20740000=04503000= REAL 20745000=04504000= E; 20750000=04504000= BOOLEAN 20755000=04505000= @@ -4164,7 +5265,7 @@ EXIT: 20625000 EMITV(GT1) 20815000=04522000= ELSE 20820000=04522000= IF E <= INTARRAYID THEN 20825000=04522000= - EMITPAIR(GT1, LOD) 20830000=04523000= + EMITPAIR(GT1, LOD) 20830000=04523000= ELSE 20835000=04523000= EMITN(GT1) 20840000=04525000= END 20845000=04526000= @@ -4172,16 +5273,16 @@ EXIT: 20625000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20855000=04526000= IF B = 0 THEN 20860000=04526100= BEGIN 20865000=04526200= - EMIT21(E, FALSE); 20870000=04526200= + EMIT21(E, FALSE); 20870000=04526200= GO TO EXIT 20875000=04526200= END; 20880000=04526200= IF STACKCT ^= 0 THEN 20885000=04527000= - GO TO IS; 20890000=04527000= + GO TO IZ; 20890000=04527000= IF B = 15 THEN 20895000=04528000= BEGIN 20900000=04529000= IF A = 33 THEN 20905000=04529000= BEGIN 20910000=04530000= - EMIT21(E, FALSE); 20915000=04530000= + EMIT21(E, FALSE); 20915000=04530000= EMIT(0); 20920000=04531000= EMITO(INX); 20925000=04531000= GO TO EXIT; 20930000=04532000= @@ -4189,29 +5290,29 @@ EXIT: 20625000 IF A = 18 THEN 20940000=04534000= BEGIN 20945000=04535000= EMIT(0); 20950000=04535000= - EMIT21(E, TRUE); 20955000=04536000= + EMIT21(E, TRUE); 20955000=04536000= EMITO(197); 20960000=04537000= GO TO EXIT; 20965000=04538000= END; 20970000=04539000= - GO TO IS; 20975000=04540000= + GO TO IZ; 20975000=04540000= END; 20980000=04541000= IF B <= 10 AND A+B = 48 THEN 20985000=04542000= BEGIN 20990000=04543000= - EMIT21(E, FALSE); 20995000=04543000= + EMIT21(E, FALSE); 20995000=04543000= EMITL(2**B-1); 21000000=04544000= EMITO(LND); 21005000=04545000= GO TO EXIT; 21010000=04546000= END; 21015000=04547000= -IS: IF(S:= (48-A-B) MOD 6)+B <= 39 THEN 21020000=04548000= +IZ: IF(S:= (48-A-B) MOD 6)+B <= 39 THEN 21020000=04548000= BEGIN 21025000=04549000= - EMIT21(E, FALSE); 21030000=04549000= + EMIT21(E, FALSE); 21030000=04549000= EMIT(T2:= (T1:= A DIV 6)*512+(A MOD 6)*64+DIA); 21035000=04550000= EMIT(((A+B-1) DIV 6-T1+1)*512+64*S+37); 21040000=04551000= GO TO EXIT; 21045000=04552000= END; 21050000=04553000= EMIT(0); 21055000=04554000= - EMIT21(E, TRUE); 21060000=04555000= - EMITD(A, 48-B, B); 21065000=04556000= + EMIT21(E, TRUE); 21060000=04555000= + EMITD(A, 48-B, B); 21065000=04556000= EXIT: 21070000=04558000= END; 21075000=04558000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21080000=04558000= @@ -4232,18 +5333,18 @@ EXIT: 21070000 INDEX; 21155000=05005000= INTEGER 21160000=05005000= INDEX; 21165000=05005000= - TAKE:= INFO[INDEX.LINKR, INDEX.LINKC]; 21170000=05006000= + TAKE:= INFO[INDEX.LINKR, INDEX.LINKC]; 21170000=05006000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21175000=05006000= 21180000=05007000= COMMENT PUT PLACES A WORD INTO INFO; 21185000=05007000= - PROCEDURE PUT(WORD, INDEX); 21190000=05008000= + PROCEDURE PUT(WORD, INDEX); 21190000=05008000= VALUE 21195000=05008000= WORD, 21200000=05008000= INDEX; 21205000=05008000= REAL 21210000=05008000= WORD, 21215000=05008000= INDEX; 21220000=05008000= - INFO[INDEX.LINKR, INDEX.LINKC]:= WORD; 21225000=05009000= + INFO[INDEX.LINKR, INDEX.LINKC]:= WORD; 21225000=05009000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21230000=05009000= 21235000=05010000= COMMENT FLAG FLAGS ERROR MESSAGES, COUNTS THEM AND SUPRESS FUTURE 21240000=05010000= @@ -4251,195 +5352,67 @@ EXIT: 21070000 PROCEDURE FLAG(ERRNUM); 21250000=05012000= VALUE 21255000=05012000= ERRNUM; 21260000=05012000= - INTEGER 21265000=05012000= + REAL % B5500 DIDN'T INTEGERIZE PARAM ON CALL? 21265000=05012000= ERRNUM; 21270000=05012000= BEGIN 21275000=05013000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21276000 COMMENT WRITERROR IS THE STREAM PROCEDURE WHICH ACTUALLY PRODUCES 21280000=05014000= THE ERROR MESSAGE ON THE PRINTER; 21285000=05015000= - STREAM PROCEDURE WRITERROR(ERRNUM, ACCUM, LINE, COUNT, LSTSEQ); 21290000=05016000= - VALUE 21295000=05017000= - ERRNUM, 21300000=05017000= - COUNT; 21305000=05017000= + PROCEDURE WRITERROR( 21290000=05016000= + ERRNUM, ACCUM, AX, LINE, COUNT, LSTSEQ, QX); 21292000=05016000= + VALUE 21294000=05017000= + ERRNUM, AX, COUNT, QX; 21296000=05017000= + REAL 21298000 + ERRNUM, AX, COUNT, QX; 21300000 + ARRAY 21302000 + ACCUM, LINE, LSTSEQ[0]; 21304000 BEGIN 21310000=05018000= - DI:= LINE; 21315000=05019000= - 44(DS:= 2 LIT 6" "); 21320000=05019000= - COMMENT CLEAR BUFFER; 21325000=05019000= - SI:= LSTSEQ; 21330000=05020000= - SI:= SI-8; 21335000=05020000= - DS:= WDS; 21340000=05020000= - SI:= LINE; 21345000=05021000= - DS:= 2 WDS; 21350000=05021000= - 4(DS:= 2 LIT 6"XX"); 21355000=05022000= - COMMENT SET RIGHT MARGIN FLAG; 21360000=05022000= - SI:= LSTSEQ; 21365000=05023000= - DI:= LSTSEQ; 21370000=05023000= - DI:= DI-8; 21375000=05023000= - DS:= WDS; 21380000=05023000= - DI:= LINE; 21385000=05024000= - DI:= DI+8; 21390000=05024000= - COMMENT INDENT MESSAGE; 21395000=05024000= - DS:= 13 LIT 6"ERROR NUMBER "; 21400000=05025000= - SI:= LOC ERRNUM; 21405000=05026000= - DS:= 3 DEC; 21410000=05026000= - COMMENT CONVERT ERRNUM; 21415000=05026000= - DS:= 4 LIT 6" -- "; 21420000=05027000= - SI:= ACCUM; 21425000=05028000= - SI:= SI+3; 21430000=05028000= - DS:= COUNT CHR; 21435000=05028000= + STREAMLOCALS; 21312000 + STREAMSETDI(LINE, 0); 21315000=05019000= + STREAMSMEARLIT(44*2, 6" "); COMMENT CLEAR BUFFER; 21320000=05019000= + STREAMSETSI(LSTSEQ, QX); 21330000=05020000= + STREAMSKIPSI(-8); 21335000=05020000= + STREAMTRANSFERWDS(1); 21340000=05020000= + STREAMSETSILINE, 0); 21345000=05021000= + STREAMTRANSFERWDS(2); 21350000=05021000= + STREAMSMEARLIT(4*2, 6"X"); COMMENT SET RIGHT MARGIN FLAG; 21355000=05022000= + STREAMSETSI(LSTSEQ, QX); 21365000=05023000= + STREAMSETDI(LSTSEQ, QX); 21370000=05023000= + STREAMSKIPDI(-8); 21375000=05023000= + STREAMTRANSFERWDS(1); 21380000=05023000= + STREAMSETDI(LINE, 0); 21385000=05024000= + STREAMSKIPDI(+8); COMMENT INDENT MESSAGE; 21390000=05024000= + STREAMTRANSFERLIT(6, 6"ERROR "); 21400000=05025000= + STREAMTRANSFERLIT(6, 6"NUMBER "); 21402000 + STREAMSETLOCSI(ERRNUM); 21405000=05026000= + STREAMTRANSFERDEC(3); COMMENT CONVERT ERRNUM; 21410000=05026000= + STREAMTRANSFERLIT(4, 6" -- "); 21420000=05027000= + STREAMSETSI(ACCUM, AX); 21425000=05028000= + STREAMSKIPSI(+3); 21430000=05028000= + STREAMTRANSFERCHR(COUNT); 21435000=05028000= COMMENT PLACE ALPHA IN BUFFER; 21440000=05029000= - DS:= LIT 6"." 21445000=05031000= + STREAMSMEARLIT(1, 6".") 21445000=05031000= END WRITERROR; 21450000=05031000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21452000 IF ERRORTOG THEN % DO NOTHING IF WE SUPPRESS MSSGS. 21455000=05032000= BEGIN 21460000=05033000= SPECTOG:= FALSE; 21465000=05034000= - ERRORCOUNT:= ERRORCOUNT+1; 21470000=05035000= - COMMENT COUNT ERRORS; 21475000=05035000= + ERRORCOUNT:= ERRORCOUNT+1; COMMENT COUNT ERRORS; 21470000=05035000= IF NOT LISTER THEN 21480000=05036000= BEGIN 21485000=05037000= - EDITLINE(LIN, FCR, L DIV 4, L.[46:2], MEDIUM, 0); 21490000=05038000= - MOVE(1, INFO[LASTSEQROW, LASTSEQUENCE], LIN[12]); 21495000=05039500= + EDITLINE(LIN, SBUFF, FCR, L DIV 4, L.[1:2], MEDIUM, 0); 21490000=05038000= + MOVE(1, INFO[LASTSEQROW,*], LASTSEQUENCE, LIN, 12); 21495000=05039500= IF NOHEADING THEN 21500000=05039600= DATIME; 21505000=05039600= WRITELINE; 21510000=05039600= END; 21515000=05041000= COMMENT PRINT CARDIMAGE IF WE ARE NOT LISTING; 21520000=05042000= - ACCUM[1]:= Q; 21525000=05043000= - COMMENT RESTORE ACCUMULATOR; 21530000=05043000= - WRITERROR(ERRNUM, ACCUM[1], LIN[**], Q.[12:6], 21535000=05045000= - INFO[LASTSEQROW, LASTSEQUENCE]); 21540000=05045000= + ACCUM[1]:= Q; COMMENT RESTORE ACCUMULATOR; 21525000=05043000= + WRITERROR(ERRNUM, ACCUM, 1, LIN[*], Q.[35:6], 21535000=05045000= + INFO[LASTSEQROW,*], LASTSEQUENCE); 21540000=05045000= IF NOT NOHEADING THEN 21545000=05046000= WRITELINE; 21550000=05046000= - ERRORTOG:= FALSE; 21555000=05047000= - COMMENT INHIBIT MESSAGES; 21560000=05047000= - IF PUNCHTOG THEN 21565000=05048000= - BEGIN 21570000=05049000= - REAL 21575000=05049000= - T1, 21580000=05049000= - T2, 21585000=05049000= - T3, 21590000=05049000= - T4; 21595000=05049000= - LABEL 21600000=05049000= - L, 21605000=05049000= - L1, 21610000=05049000= - EXIT; 21615000=05049000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21616000 - STREAM PROCEDURE P1(L, P); 21620000=05050000= - VALUE 21625000=05050000= - P; 21630000=05050000= - BEGIN 21635000=05051000= - DI:= L; 21640000=05051000= - 15(DS:= 8 LIT 6" "); 21645000=05051000= - SI:= LOC P; 21650000=05052000= - DI:= L; 21655000=05052000= - SI:= SI+5; 21660000=05052000= - SKIP 3 SB; 21665000=05052000= - (DS:= 3 RESET;3(IF SB THEN DS:= SET ELSE DS:= RESET;SKIP 1 SB)21670000=05054000= - ); 21675000=05054000= - SI:= P; 21680000=05055000= - DI:= DI+2; 21685000=05056000= - (8(DS:= 3 RESET;3 21690000=05058000= - (IF SB THEN DS:= SET ELSE DS:= RESET;SKIP 1 SB));DS:= LIT 21695000=05058000= - 6" ") 21700000=05058000= - END; 21705000=05058000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21706000 - STREAM PROCEDURE P2(L, P); 21710000=05059000= - VALUE 21715000=05059000= - P; 21720000=05059000= - BEGIN 21725000=05060000= - DI:= L; 21730000=05060000= - DI:= DI+26; 21735000=05060000= - DS:= LIT 6"0"; 21740000=05060000= - SI:= P; 21745000=05061000= - SI:= SI-2; 21750000=05061000= - SKIP 1 SB; 21755000=05061000= - (DS:= 3 RESET;3(IF SB THEN DS:= SET ELSE DS:= RESET;SKIP 1 SB)21760000=05063000= - ); 21765000=05063000= - END; 21770000=05064000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21772000 - REAL STREAM PROCEDURE ABS(A); 21775000=05065000= - VALUE 21785000=05065000= - A; 21790000=05065000= - BEGIN 21795000=05066000= - DI:= LOC ABS; 21800000=05066000= - SI:= A; 21805000=05066000= - DS:= WDS; 21810000=05066000= - DI:= DI-8; 21815000=05066000= - DS:= RESET 21820000=05066000= - END; 21825000=05066000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21826000 - STREAM PROCEDURE BITEDUST(X, N, ID, LINE, COUNT); 21830000=05067000= - VALUE 21835000=05067000= - ID, 21840000=05067000= - N, 21845000=05067000= - COUNT; 21850000=05067000= - BEGIN 21855000=05068000= - LOCAL T, F, M; 21860000=05068000= - DI:= LOC F; 21865000=05069000= - SI:= LINE; 21870000=05069000= - DS:= WDS; 21875000=05069000= - DI:= F; 21880000=05069000= - SI:= LOC ID; 21885000=05070000= - SI+SI+2; 21890000=05070000= - DS:= 6 CHR; 21895000=05070000= - 57(DS:= 2 LIT 6" "); 21900000=05070000= - SI:= LOC COUNT; 21905000=05071000= - SI:= SI+8; 21910000=05071000= - DI:= LOC H; 21915000=05071100= - DS:= WDS; 21920000=05071100= - DI:= LOC LINE; 21925000=05071200= - SI:= H; 21930000=05071200= - SI:= LOC X; 21935000=05072000= - SKIP 2 SB; 21940000=05072000= - IF SB THEN 21945000=05073000= - BEGIN 21950000=05074000= - SI:= X; 21955000=05074000= - T:= SI; 21960000=05074000= - N(DI:= LOC F;SI:= LINE;DS:= WDS;DI:= F;SI:= LOC COUNT;SI:= 21965000=05086000= - SI+6;4(DS:= 3 RESET;3 21970000=05086000= - (IF SB THEN DS:= SET ELSE DS:= RESET;SKIP 1 SB));DS:= 2 21975000=05086000= - LIT 6" ";SI:= COUNT;SI:= SI+48;COUNT:= SI;SI:= T;6(2(8(DS 21980000=05086000= - := 3 RESET;3 21985000=05086000= - (IF SB THEN DS:= SET ELSE DS:= RESET;SKIP 1 SB));DS:= LIT 21990000=05086000= - 6" ");DS:= LIT 6" ");DI:= LOC LINE;SI:= H;SI:= T;SI:= SI+ 21995000=05086000= - 48;T:= SI); 22000000=05086000= - END 22005000=05086000= - END; 22010000=05086000= - BITEDUST(ERRORCOUNT, 63, "PRT ", LINE, 21); 22015000=05087000= - FOR T1:= 0 STEP 1 UNTIL 31 DO 22020000=05088000= - BITEDUST(INFO[T1, **], 43, "INFO ", LINE, 0); 22025000=05088000= - BITEDUST(ELBAT[**], 13, "ELBAT ", LINE, 0); 22030000=05089000= - BITEDUST(STACKHEAD[**], 21, "STHEAD", LINE, 0); 22035000=05090000= - T1:= MKABS(ERRNUM)-1; 22040000=05091000= - T3:= T1; 22045000=05091000= - L: T2:= ABS(T3); 22050000=05092000= - IF T2.[33:15] = 0 THEN 22055000=05093000= - BEGIN 22060000=05093000= - T3:= T2.[18:15]; 22065000=05093000= - IF T3 = 0 THEN 22070000=05094000= - GO TO EXIT 22075000=05094000= - ELSE 22080000=05094000= - GO TO L 22085000=05094000= - END; 22090000=05094000= - T4:= 22095000=05095000= - IF T2.[33:15] < 512 THEN 22100000=05095000= - 0 22105000=05095000= - ELSE 22110000=05095000= - T2.[33:15] & T2[30:10:2]; 22115000=05095000= - L1: P1(LIN[0], T1); 22120000=05096000= - IF T1 = T3 THEN 22125000=05096000= - BEGIN 22130000=05096000= - IF T ^= 0 THEN 22135000=05096000= - P2(LIN[0], T4); 22140000=05096000= - T1:= T1-1; 22145000=05097000= - WRITELINE; 22150000=05097500= - T3:= T2.[18:15]; 22155000=05098000= - GO TO L 22160000=05098000= - END; 22165000=05098000= - T1:= T1-1; 22170000=05099000= - WRITELINE; 22175000=05099000= - GO TO L1; 22180000=05099100= - EXIT: 22185000=05100000= - END; 22190000=05100000= + ERRORTOG:= FALSE; COMMENT INHIBIT MESSAGES; 21555000=05047000= END 22195000=05101000= END FLAG; 22200000=05101000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22205000=05101000= @@ -4458,9 +5431,9 @@ EXIT: 21070000 FLAG(ERRNUM); 22270000=05106000= I:= I-1; 22275000=05107000= IF ERRNUM = 200 THEN 22280000=05107100= - I:= I/0; % SEGMENT TOO LARGE 22285000=05107100= + MYSELF.STATUS:= VALUE(TERMINATED); % SEGMENT TOO LARGE 22285000=05107100= IF ERRNUM = 611 THEN 22290000=05107200= - I:= I/0; % ERRMAX EXCEEDED 22295000=05107200= + MYSELF.STATUS:= VALUE(TERMINATED); % ERRMAX EXCEEDED 22295000=05107200= DO 22300000=05108000= IF STEPI = BEGINV THEN 22305000=05108000= STMT 22310000=05109000= @@ -4482,7 +5455,7 @@ EXIT: 21070000 IF MODE >= 2 THEN 22390000=05115000= IF GT1:= ELBATWORD.LVL >= FRSTLEVEL THEN 22395000=05116000= IF GT1 < SUBLEVEL THEN 22400000=05117000= - IF ELBATWORD.[9:2] ^= 1 THEN 22405000=05119000= + IF ELBATWORD.[38:2] ^= 1 THEN 22405000=05119000= BEGIN 22410000=05119000= FLAG(101); 22415000=05119000= ERRORTOG:= TRUE 22420000=05119000= @@ -4511,7 +5484,7 @@ EXIT: 21070000 REAL 22535000=05130000= A; 22540000=05130000= IF GNAT:= (A:= TAKE(L)).ADDRESS = 0 THEN 22545000=05132000= - PUT(A & (GNAT:= GETSPACE(TRUE, L.LINK+1))[16:37:11], L) 22550000=05133000= + PUT(A & (GNAT:= GETSPACE(TRUE, L.LINK+1))[31:10:11], L) 22550000=05133000= END GNAT; 22555000=05133000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22560000=05133000= REAL PROCEDURE TAKEFRST; 22565000=05188000= @@ -4527,7 +5500,7 @@ EXIT: 21070000 INTEGER 22615000=05199000= ADDRESS; 22620000=05199000= BEGIN 22625000=05200000= - EMITPAIR(ADDRESS, LOD); 22630000=05201000= + EMITPAIR(ADDRESS, LOD); 22630000=05201000= EMITN(512); 22635000=05202000= EMITD(33, 18, 15) 22640000=05203000= END STUFFF; 22645000=05203000= @@ -4575,7 +5548,7 @@ EXIT: 21070000 EMITO(ADD); 22855000=05226000= EMITV(ADRES) 22860000=05226000= END; 22865000=05226000= - EMITPAIR(ADRES, LOD) 22870000=05227000= + EMITPAIR(ADRES, LOD) 22870000=05227000= END PASSFORMAT; 22875000=05227000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22880000=05227000= 22885000=05228000= @@ -4585,15 +5558,15 @@ EXIT: 21070000 BEGIN 22905000=05231000= GT1:= 0; 22910000=05231000= DO BEGIN 22915000=05232000= - INFO[1, GT1].LINK:= 22920000=05233000= - STACKHEAD[GT2:= (T:= INFO[1, GT1]).ADDRESS]; 22925000=05233000= + INFO[1, GT1].LINK:= 22920000=05233000= + STACKHEAD[GT2:= (T:= INFO[1, GT1]).ADDRESS]; 22925000=05233000= STACKHEAD[GT2]:= T.LINK; 22930000=05234000= GT1:= GT1+2; 22935000=05235000= END 22940000=05236000= UNTIL BOOLEAN(T.FORMAL) 22945000=05236000= END STREAMWORDS; 22950000=05236000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22955000=05236000= - PROCEDURE PROGDESCBLDR(PRTADR, SAV, SIZE, TYPE); 22960000=05245000= + PROCEDURE PROGDESCBLDR(PRTADR, SAV, SIZE, TYPE); 22960000=05245000= VALUE 22965000=05246000= PRTADR, 22970000=05246000= SAV, 22975000=05246000= @@ -4606,18 +5579,19 @@ EXIT: 21070000 BOOLEAN 23010000=05247000= SAV; 23015000=05247000= BEGIN 23020000=05247500= - PRTADR:= PRTADR.[38:10]; 23025000=05247500= + PRTADR:= PRTADR.[9:10]; 23025000=05247500= IF SAV THEN 23030000=05248000= BEGIN 23035000=05248000= PRT[PRTADR]:= (IF TYPE = LDES THEN SIZE ELSE CORADR) & 23040000=05249000= - SIZE[8:28:10] & TYPE[1:43:5] & 3[6:46:2]; 23045000=05249000= + SIZE[39:19:10] & TYPE[46:4:5] & 3[41:1:2]; 23045000=05249000= IF TYPE ^= LDES THEN 23050000=05250000= CORADR:= CORADR+SIZE; 23055000=05250000= END 23060000=05252000= ELSE 23065000=05252000= BEGIN 23070000=05252000= - PRT[PRTADR]:= 0 & DISKADR[18:33:15] & SIZE[8:38:10] & TYPE[1:43:5]23075000=05253000= - & 1[6:46:2]; 23080000=05253000= + PRT[PRTADR]:= 0 & DISKADR[29:14:15] & SIZE[39:9:10] & 23075000=05253000= + TYPE[46:4:5] 23075100 + & 1[41:1:2]; 23080000=05253000= DISKADR:= (SIZE+29) DIV 30+DISKADR; 23085000=05254000= END; 23090000=05254500= END PROGDESCBLDR; 23095000=05255000= @@ -4626,7 +5600,7 @@ EXIT: 21070000 COMMENT DOTSYNTAX ANALYSES THE SYNTAX OF A PARTIAL WORD DESIGNATOR. 23110000=05267000= IT REPORTS IF AN ERROR IS FOUND. IT RETURNS WITH THE 23115000=05268000= LITERALS INVOLVED; 23120000=05269000= - BOOLEAN PROCEDURE DOTSYNTAX(FIRST, SECOND); 23125000=05270000= + BOOLEAN PROCEDURE DOTSYNTAX(FIRST, SECOND); 23125000=05270000= INTEGER 23130000=05271000= FIRST, 23135000=05271000= SECOND; 23140000=05271000= @@ -4645,19 +5619,18 @@ EXIT: 21070000 IF FIRST+SECOND <= 48 THEN 23205000=05282000= COMMENT IF TESTS ARE PASSED THEN RANGES OF LITERALS ARE O.K.; 23210000=05283000= GO TO EXIT; 23215000=05284000= - ERR(114); 23220000=05285000= - COMMENT ERROR IF SYNTAX OR RANGE FAILS; 23225000=05285000= + ERR(114); COMMENT ERROR IF SYNTAX OR RANGE FAILS; 23220000=05285000= DOTSYNTAX:= TRUE; 23230000=05286000= EXIT: 23235000=05286000= END DOTSYNTAX; 23240000=05286000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23245000=05286000= - BOOLEAN PROCEDURE RANGE(LOWER, UPPER); 23250000=05297000= + BOOLEAN PROCEDURE RANGE(LOWER, UPPER); 23250000=05297000= VALUE 23255000=05298000= LOWER, 23260000=05298000= UPPER; 23265000=05298000= REAL 23270000=05299000= LOWER, 23275000=05299000= - UPPER; 23280000=05299000= + UPPER; 23280000=05299000= COMMENT RANGE TESTS THE CLASS OF THE ITEM IN ELBAT[I] TO SEE IF 23285000=05300000= IT IS GREATER THAN OR EQUAL TO LOWER OR LESS THAN OR EQUAL TO 23290000=05301000= UPPER AND SETS RANGE TO TRUE OR FALSE ACCORDINGLY. THE ITEMS 23295000=05302000= @@ -4673,19 +5646,7 @@ EXIT: 23235000 REAL 23345000=05307000= L; 23350000=05307000= BEGIN 23355000=05308000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23356000 - INTEGER STREAM PROCEDURE GETSYL(W, S); 23360000=05309000= - VALUE 23370000=05309000= - S; 23375000=05309000= - BEGIN 23380000=05310000= - DI:= LOC GETSYL; 23385000=05310000= - DI:= DI+6; 23390000=05310000= - SI:= W; 23395000=05311000= - SI:= SI+S; 23400000=05311000= - SI:= SI+S; 23405000=05311000= - DS:= 2 CHR 23410000=05311000= - END; 23415000=05311000= - GET:= GETSYL(CODE(L DIV 4+1), L.[46:2]); 23420000=05312000= + GET:= CODE[L DIV 4+1].[47-(L.[1:2])*12:12]; 23420000=05312000= END GET; 23425000=05312000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23430000=05312000= 23435000=05313000= @@ -4702,7 +5663,7 @@ EXIT: 23235000 EMITO(LOD) 23490000=05316000= END CALLSWITCH; 23495000=05316000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23500000=05316000= - PROCEDURE WRITEPRT(PORS, N, GS); 23505000=05325010= + PROCEDURE WRITEPRT(PORS, N, GS); 23505000=05325010= VALUE 23510000=05325010= PORS, 23515000=05325010= N, 23520000=05325010= @@ -4715,107 +5676,142 @@ EXIT: 23235000 LABEL 23555000=05325030= EXIT; 23560000=05325030= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23562000 - STREAM PROCEDURE FILLIT(LIN, PORS, CELL, N, ID); 23565000=05325040= - VALUE 23570000=05325050= - PORS, 23575000=05325050= - CELL, 23580000=05325050= - N; 23585000=05325050= + PROCEDURE FILLIT(LIN, PORS, CELL, N, ID, IDX); 23565000=05325040= + VALUE 23566000=05325050= + PORS, CELL, N, IDX; 23568000=05325050= + ARRAY 23570000 + LIN, ID[0]; 23572000 + REAL PORS, CELL, N, IDX; 23574000 BEGIN 23590000=05325060= - LOCAL COUNT; 23595000=05325070= + STREAMLOCALS; 23592000 + REAL 23595000=05325070= + COUNT; 23596000 LABEL 23600000=05325080= M0, 23605000=05325080= - M1, 23610000=05325080= - M2, 23615000=05325080= - M3, 23620000=05325080= - M4, 23625000=05325080= - M5, 23630000=05325080= - M6, 23635000=05325080= - M7, 23640000=05325080= - XIT; 23645000=05325080= - SI:= LOC PORS; 23650000=05325090= - SI:= SI+3; 23655000=05325090= - DI:= LIN; % "PRT" OR "STACK". 23660000=05325090= - IF SC = 6"P" THEN 23665000=05325100= + M1, 23610000=05325080= + M2, 23615000=05325080= + M3, 23620000=05325080= + M4, 23625000=05325080= + M5, 23630000=05325080= + M6, 23635000=05325080= + M7, 23640000=05325080= + XIT, 23645000=05325080= + JUMPOUT; 23646000 + 23648000 + STREAMSETLOCSI(PORS); 23650000=05325090= + STREAMSKIPSI(+3); 23655000=05325090= + STREAMSETDI(LIN, 0); % "PRT" OR "STACK". 23660000=05325090= + IF STREAMSCEQL(6"P") THEN 23665000=05325100= BEGIN 23670000=05325110= - DS:= 3 CHR; 23675000=05325110= - DS:= LIT 6"("; 23680000=05325110= + STREAMTRANSFERCHR(3); 23675000=05325110= + STREAMSMEARLIT(1, 6"("); 23680000=05325110= END 23685000=05325120= ELSE 23690000=05325120= BEGIN 23695000=05325120= - DS:= 5 CHR; 23700000=05325130= - DS:= LIT 6"("; 23705000=05325130= - SI:= LOC CELL; 23710000=05325130= - SI:= SI+5; 23715000=05325130= - IF SC >= 6"6" THEN 23720000=05325140= - DS:= 2 LIT 6"F-" 23725000=05325140= + STREAMTRANSFERCHR(5); 23700000=05325130= + STREAMSMEARLIT(1, 6"("); 23705000=05325130= + STREAMSETLOCSI(CELL); 23710000=05325130= + STREAMSKIPSI(+5); 23715000=05325130= + IF STREAMSCGEQ(6"6") THEN 23720000=05325140= + STREAMTRANSFERLIT(2, 6"F-") 23725000=05325140= ELSE 23730000=05325140= - DS:= 2 LIT 6"F+"; 23735000=05325140= - COUNT:= DI; 23740000=05325150= - DI:= LOC CELL; 23745000=05325150= - DI:= DI+4; 23750000=05325150= - DS:= 11 RESET; 23755000=05325160= - DI:= COUNT; 23760000=05325160= + STREAMTRANSFERLIT(2, 6"F+"); 23735000=05325140= + 23736000 + COUNT:= STREAMGETDI; 23740000=05325150= + STREAMSETLOCDI(CELL); 23745000=05325150= + STREAMSKIPDI(+4); 23750000=05325150= + STREAMSETDB(11, 0); 23755000=05325160= + CELL:= STREAMTEMPD[0]; 23756000 + STREAMSETDI(LIN, COUNT); 23760000=05325160= END; 23765000=05325170= - SI:= LOC CELL; 23770000=05325180= - SI:= SI+4; 23775000=05325180= + 23766000 + STREAMSETLOCSI(CELL); 23770000=05325180= + STREAMSKIPSI(+4); 23775000=05325180= TALLY:= 4; % LOCATION. 23780000=05325180= - 3(IF SC = 6"0" THEN % DONT PRINT LEADING ZEROES. 23785000=05325190= - BEGINSI:= SI+1;TALLY:= TALLY+63 23790000=05325200= - ENDELSE 23795000=05325200= - JUMP OUT); 23800000=05325200= + THRU 3 DO 23785000=05325190= + BEGIN 23786000 + IF STREAMSCEQL(6"0") THEN % DONT PRINT LEADING ZEROES. 23788000 + BEGIN 23790000=05325200= + STREAMSKIPSI(+1); 23792000 + STREAMINCTALLY(+63); % DECREMENT TALLY 23794000 + END 23795000=05325200= + ELSE 23796000 + GO JUMPOUT 23797000=05325200= + END; 23798000 + 23800000 + JUMPOUT: 23802000 COUNT:= TALLY; 23805000=05325210= - DS:= COUNT CHR; 23810000=05325210= + STREAMTRANSFERCHR(COUNT); 23810000=05325210= TALLY:= 0; 23815000=05325210= COUNT:= TALLY; 23820000=05325210= - DS:= 4 LIT 6") = "; 23825000=05325220= - CELL:= DI; % SAVE OUR PLACE. 23830000=05325220= - CI:= CI+N; 23835000=05325230= - GO M0; 23840000=05325240= - GO M1; 23845000=05325250= - GO M2; 23850000=05325260= - GO M3; 23855000=05325270= - GO M4; 23860000=05325280= - GO M5; 23865000=05325290= - GO M6; 23870000=05325300= - GO M7; 23875000=05325310= - M0: SI:= ID; 23880000=05325320= - SI:= SI+2; 23885000=05325320= - DI:= LOC COUNT; 23890000=05325320= - DI:= DI+7; 23895000=05325330= - DS:= CHR; 23900000=05325330= - DI:= CELL; 23905000=05325330= - DS:= COUNT CHR; 23910000=05325330= + STREAMTRANSFERLIT(4, 6") = "); 23825000=05325220= + CELL:= STREAMGETDI; % SAVE OUR PLACE. 23830000=05325220= + GO TO CASE N OF ( 23835000=05325230= + M0, 23840000=05325240= + M1, 23845000=05325250= + M2, 23850000=05325260= + M3, 23855000=05325270= + M4, 23860000=05325280= + M5, 23865000=05325290= + M6, 23870000=05325300= + M7); 23875000=05325310= + M0: STREAMSETSI(ID, IDX); 23880000=05325320= + STREAMSKIPSI(+2); 23885000=05325320= + STREAMSETLOCDI(COUNT); 23890000=05325320= + STREAMSKIPDI(+7); 23895000=05325330= + STREAMTRANSFERCHR(1); 23900000=05325330= + COUNT:= STREAMTEMPD[0]; 23902000 + STREAMSETDI(LIN, CELL); 23905000=05325330= + STREAMTRANSFERCHR(COUNT); 23910000=05325330= GO XIT; 23915000=05325340= - M1: DI:= CELL; 23920000=05325350= - DS:= 19 LIT 6"*TEMPORARY STORAGE*"; 23925000=05325350= + M1: STREAMSETDI(LIN, CELL); 23920000=05325330= + STREAMTRANSFERLIT(8, 6"*TEMPORA"); 23925000=05325350= + STREAMTRANSFERLIT(8, 6"RY STORA"); 23926000 + STREAMTRANSFERLIT(3, 6"GE*"); 23928000 GO XIT; 23930000=05325350= - M2: DI:= CELL; 23935000=05325360= - DS:= 36 LIT 6"*LIST, LABEL, OR SEGMENT DESCRIPTOR*"; 23940000=05325370= + M2: STREAMSETDI(LIN, CELL); 23935000=05325360= + STREAMTRANSFERLIT(8, 6"*LIST, L"); 23940000=05325370= + STREAMTRANSFERLIT(8, 6"ABEL, OR"); 23941000 + STREAMTRANSFERLIT(8, 6" SEGMENT"); 23942000 + STREAMTRANSFERLIT(8, 6" DESCRIP"); 23943000 + STREAMTRANSFERLIT(4, 6"TOR*"); 23944000 GO XIT; 23945000=05325370= - M3: DI:= CELL; 23950000=05325380= - DS:= 27 LIT 6"*CASE STATEMENT DESCRIPTOR*"; 23955000=05325380= + M3: STREAMSETDI(LIN, CELL); 23950000=05325380= + STREAMTRANSFERLIT(8, 6"*CASE ST"); 23955000=05325380= + STREAMTRANSFERLIT(8, 6"ATEMENT "); 23956000 + STREAMTRANSFERLIT(8, 6"DESCRIPT"); 23957000 + STREAMTRANSFERLIT(3, 6"OR*"); 23958000 GO XIT; 23960000=05325380= - M4: DI:= CELL; 23965000=05325390= - DS:= 19 LIT 6"*FORMAT DESCRIPTOR*"; 23970000=05325390= + M4: STREAMSETDI(LIN, CELL); 23965000=05325390= + STREAMTRANSFERLIT(8, 6"*FORMAT "); 23970000=05325390= + STREAMTRANSFERLIT(8, 6"DESCRIPT"); 23972000 + STREAMTRANSFERLIT(3, 6"OR*"); 23974000 GO XIT; 23975000=05325390= - M5: DI:= CELL; 23980000=05325400= - DS:= 24 LIT 6"*OUTER BLOCK DESCRIPTOR*"; 23985000=05325400= + M5: STREAMSETDI(LIN, CELL); 23980000=05325400= + STREAMTRANSFERLIT(8, 6"*OUTER B"); 23985000=05325400= + STREAMTRANSFERLIT(8, 6"LOCK DES"); 23986000 + STREAMTRANSFERLIT(8, 6"CRIPTOR*"); 23988000 GO XIT; 23990000=05325400= - M6: DI:= CELL; 23995000=05325410= - DS:= 20 LIT 6"*SEGMENT DESCRIPTOR*"; 24000000=05325410= + M6: STREAMSETDI(LIN, CELL); 23995000=05325410= + STREAMTRANSFERLIT(8, 6"*SEGMENT"); 24000000=05325410= + STREAMTRANSFERLIT(8, 6" DESCRIP"); 24002000 + STREAMTRANSFERLIT(4, 6"TOR*"); 24004000 GO XIT; 24005000=05325410= - M7: DI:= CELL; 24010000=05325420= - DS:= 18 LIT 6"*LABEL DESCRIPTOR*"; 24015000=05325420= + M7: STREAMSETDI(LIN, CELL); 24010000=05325420= + STREAMTRANSFERLIT(8, 6"*LABEL D"); 24015000=05325420= + STREAMTRANSFERLIT(8, 6"ESCRIPTO"); 24016000 + STREAMTRANSFERLIT(2, 6"R*"); 24018000 XIT: 24020000=05325440= END FILLIT; 24025000=05325440= - ELSEBLANKET(14, LIN); 24030000=05325450= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24026000 + BLANKET(14, LIN); 24030000=05325450= IF N = 1 THEN 24035000=05325460= - FILLIT(LIN, PORS, GS, 0, ACCUM[1]) 24040000=05325470= + FILLIT(LIN, PORS, GS, 0, ACCUM, 1) 24040000=05325470= ELSE 24045000=05325470= IF N > 1 THEN 24050000=05325470= - FILLIT(LIN, PORS, GS, 0, INFO[N.LINKR, N.LINKC]) 24055000=05325480= + FILLIT(LIN, PORS, GS, 0, INFO[N.LINKR,*], N.LINKC) 24055000=05325480= ELSE 24060000=05325480= - FILLIT(LIN, PORS, GS, ABS(N), N); 24065000=05325480= + FILLIT(LIN, PORS, GS, ABS(N), EBCDICBUFF, -1); % ID NOT USED 24065000=05325480= IF NOHEADING THEN 24070000=05325490= DATIME; 24075000=05325490= WRITELINE; 24080000=05325490= @@ -4827,10 +5823,10 @@ EXIT: 23235000 PERMANENTLY ASSIGNED CELL (ALWAYS IN PRT) OR NOT. NON 24110000=05328000= PERMANENT CELLS ARE EITHER IN STACK OR PRT ACCORDING TO 24115000=05329000= MODE. CARE IS TAKEN TO REUSE NON PERMANENT PRT CELLS; 24120000=05330000= - INTEGER PROCEDURE GETSPACE(PERMANENT, L); 24125000=05331000= + INTEGER PROCEDURE GETSPACE(PERMANENT, L); 24125000=05331000= VALUE 24130000=05331000= PERMANENT, 24135000=05331000= - L; 24140000=05331000= + L; 24140000=05331000= BOOLEAN 24145000=05333000= PERMANENT; 24150000=05333000= INTEGER 24155000=05333000= @@ -4838,38 +5834,48 @@ EXIT: 23235000 BEGIN 24165000=05334000= LABEL 24170000=05334000= L1, 24175000=05334000= - L2, 24180000=05334000= - EXIT; 24185000=05334000= + L2, 24180000=05334000= + EXIT; 24185000=05334000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24186000 - STREAM PROCEDURE DOIT(C, A, I, S); 24190000=05334100= + PROCEDURE DOIT(C, A, I, IX, S); 24190000=05334100= VALUE 24195000=05334100= - C, 24200000=05334100= - A; 24205000=05334100= + C, A, IX; 24200000=05334100= + REAL 24201000 + C, A, IX; 24202000 + ARRAY 24203000 + I, S[0]; 24205000=05334100= BEGIN 24210000=05334200= - LOCAL N; 24215000=05334200= - DI:= S; 24220000=05334300= - DS:= 8 LIT 6" "; 24225000=05334300= - SI:= S; 24230000=05334300= - DS:= 9 WDS; 24235000=05334300= - SI:= I; 24240000=05334400= - SI:= SI+2; 24245000=05334400= - DI:= LOC N; 24250000=05334400= - DI:= DI+7; 24255000=05334400= - DS:= CHR; 24260000=05334400= - DI:= S; 24265000=05334500= - SI:= LOC C; 24270000=05334500= - 2(DS:= 4 DEC); 24275000=05334500= - SI:= I; 24280000=05334600= - SI:= SI+3; 24285000=05334600= - DS:= N CHR; 24290000=05334600= + STREAMLOCALS; 24212000 + REAL 24215000=05334200= + N; 24216000 + 24218000 + STREAMSETDI(S, 0); 24220000=05334300= + STREAMSMEARLIT(8, 6" "); 24225000=05334300= + STREAMSETSI(S, 0); 24230000=05334300= + STREAMTRANSFERWDS(9); 24235000=05334300= + STREAMSETSI(I, IX); 24240000=05334400= + STREAMSKIPSI(+2); 24245000=05334400= + STREAMSETLOCDI(N); 24250000=05334400= + STREAMSKIPDI(+7); 24255000=05334400= + STREAMTRANSFERCHR(1); 24260000=05334400= + N:= STREAMTEMPD[0]; 24262000 + STREAMSETDI(S, 0); 24265000=05334500= + STREAMSETLOCSI(C); 24270000=05334500= + THRU 2 DO 24275000=05334500= + STREAMTRANSFERDEC(4); 24276000 + 24278000 + STREAMSETSI(I, IX); 24280000=05334600= + STREAMSKIPSI(+3); 24285000=05334600= + STREAMTRANSFERCHR(N); 24290000=05334600= END; 24295000=05334700= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24296000 BOOLEAN 24300000=05343000= M, 24305000=05343000= - Q; 24310000=05343000= + Q; 24310000=05343000= INTEGER 24315000=05344000= ROW, 24320000=05344000= - COL, 24325000=05344000= - GS; 24330000=05344000= + COL, 24325000=05344000= + GS; 24330000=05344000= IF NOT (STREAMTOG AND(LEVEL > 2)) THEN 24335000=05344400= IF STEPI = RELOP THEN 24340000=05344500= BEGIN 24345000=05344510= @@ -4925,12 +5931,12 @@ EXIT: 23235000 THEN 24595000=05350120= BEGIN 24600000=05350120= IF NOT M THEN 24605000=05350140= - DOIT(LABELID, GS, 24610000=05350180= - INFO[(ELBAT[I]).LINKR, (ELBAT[I].LINKC+1)], TWXA[0]) 24615000=05350180= + DOIT(LABELID, GS, 24610000=05350180= + INFO[(ELBAT[I]).LINKR,*], (ELBAT[I].LINKC+1), TWXA[*]) 24615000=05350180= ELSE 24620000=05350180= - DOIT(KLASSF, GS, 24625000=05350300= - INFO[(LASTINFO+1).LINKR, (LASTINFO+1).LINKC], TWXA[0]); 24630000=05350300= - WRITE(STUFF, 10, TWXA[**]) 24635000=05350300= + DOIT(KLASSF, GS, 24625000=05350300= + INFO[(LASTINFO+1).LINKR,*], (LASTINFO+1).LINKC, TWXA[*]); 24630000=05350300= + WRITE(STUFF, 10, TWXA[*]) 24635000=05350300= END; 24640000=05350300= END 24645000=05369000= ELSE 24650000=05369000= @@ -4951,7 +5957,7 @@ EXIT: 24705000 IF GS > 1023 THEN 24725000=05376000= GS:= GS-1024; 24730000=05376000= IF PRTOG THEN 24735000=05376100= - WRITEPRT(IF Q THEN 6"PRT " ELSE 6"STACK", L, B2D(GS)); 24740000=05376100= + WRITEPRT(IF Q THEN 6"PRT " ELSE 6"STACK", L, B2D(GS)); 24740000=05376100= END GETSPACE; 24745000=05378000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24750000=05378000= REAL PROCEDURE DEPTH(I); 24755000=05400000= @@ -4962,50 +5968,50 @@ EXIT: 24705000 BEGIN 24780000=05401000= REAL 24785000=05401000= J, 24790000=05401000= - K, 24795000=05401000= - T, 24800000=05401000= - S, 24805000=05401000= - M; 24810000=05401000= + K, 24795000=05401000= + T, 24800000=05401000= + S, 24805000=05401000= + M; 24810000=05401000= IF T:= NESTPRT[I] < 0 THEN 24815000=05402000= BEGIN 24820000=05402100= - DEPTH:= CALL[T.[22:13]-1].[35:13]; 24825000=05402100= - IF NESTPRT[I].[2:1] = 0 THEN 24830000=05402200= + DEPTH:= CALL[T.[25:13]-1].[12:13]; 24825000=05402100= + IF NESTPRT[I].[45:1] = 0 THEN 24830000=05402200= NESTCUR:= NESTCUR+1; 24835000=05402200= - NESTPRT[I].[2:1]:= 1; 24840000=05402300= + NESTPRT[I].[45:1]:= 1; 24840000=05402300= END 24845000=05403000= ELSE 24850000=05403000= - IF T.[9:13] ^= 0 THEN 24855000=05403000= - DEPTH:= T.[9:13] 24860000=05404000= + IF T.[38:13] ^= 0 THEN 24855000=05403000= + DEPTH:= T.[38:13] 24860000=05404000= ELSE 24865000=05404000= BEGIN 24870000=05404000= M:= 0; 24875000=05404000= NESTPRT[I]:= -T; 24880000=05404000= - J:= T.[22:13]; 24885000=05405000= - K:= CALL[J-1].[22:13]; 24890000=05405000= + J:= T.[25:13]; 24885000=05405000= + K:= CALL[J-1].[25:13]; 24890000=05405000= FOR J:= J STEP 1 UNTIL K DO 24895000=05406000= IF S:= DEPTH(CALL[J]) > M THEN 24900000=05407000= M:= S; 24905000=05407000= - M:= DEPTH:= M+CALL[T.[22:13]-1].[35:13]; 24910000=05409000= + M:= DEPTH:= M+CALL[T.[25:13]-1].[12:13]; 24910000=05409000= IF NESTCUR ^= 0 THEN 24915000=05409100= - IF NESTPRT[I].[2:1] = 0 THEN 24920000=05409200= + IF NESTPRT[I].[45:1] = 0 THEN 24920000=05409200= ELSE 24925000=05409300= BEGIN 24930000=05409300= - T:= T & M[9:35:13]; 24935000=05409300= + T:= T & M[38:12:13]; 24935000=05409300= NESTCUR:= NESTCUR-1 24940000=05409300= END 24945000=05409400= ELSE 24950000=05409400= - T:= T & M[9:35:13]; 24955000=05409400= + T:= T & M[38:12:13]; 24955000=05409400= NESTPRT[I]:= T; 24960000=05409500= END; 24965000=05410000= END; 24970000=05411000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24975000=05411000= - PROCEDURE NESTSORT(L, U); 24980000=05411100= + PROCEDURE NESTSORT(L, U); 24980000=05411100= VALUE 24985000=05411100= L, 24990000=05411100= - U; 24995000=05411100= + U; 24995000=05411100= REAL 25000000=05411100= L, 25005000=05411100= - U; 25010000=05411100= + U; 25010000=05411100= FORWARD; 25015000=05411100= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25020000=05411100= PROCEDURE SORTNEST; 25025000=05412000= @@ -5014,104 +6020,118 @@ EXIT: 24705000 A[0:14]; 25040000=05413000= REAL 25045000=05414000= I, 25050000=05414000= - J, 25055000=05414000= - K, 25060000=05414000= - T; 25065000=05414000= + J, 25055000=05414000= + K, 25060000=05414000= + T; 25065000=05414000= REAL 25070000=05414100= P, 25075000=05414100= - Q; 25080000=05414100= + Q; 25080000=05414100= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25082000 - STREAM PROCEDURE NESTFORM(I, N, L, A) VALUE I, N; 25085000=05415000= + PROCEDURE NESTFORM(I, N, L, LX, A); 25085000=05415000= + VALUE 25085500 + I, N, LX; 25086000 + REAL 25086500 + I, N, LX; 25087000 + ARRAY 25087500 + L, A[0]; 25088000 BEGIN 25090000=05416000= - LOCAL S; 25095000=05416000= - DI:= A; 25100000=05417000= - 15(DS:= 8 LIT 6" "); 25105000=05417000= - DI:= LOC S; 25110000=05418000= - DI:= DI+7; 25115000=05418000= - SI:= L; 25120000=05418000= - SI:= SI+10; 25125000=05418000= - DS:= CHR; 25130000=05418000= - DI:= A; 25135000=05419000= - DI:= DI+I; 25140000=05419000= - A:= DI; 25145000=05419000= - DI:= DI+6; 25150000=05420000= - DS:= S CHR; 25155000=05420000= - DI:= A; 25160000=05421000= - SI:= LOC N; 25165000=05421000= - DS:= 4 DEC; 25170000=05421000= - DI:= A; 25175000=05422000= - DS:= 3 FILL; 25180000=05422000= + STREAMLOCALS; 25092000 + REAL 25095000=05416000= + S, 25096000 + TEMP; 25097000 + 25098000 + STREAMSETDI(A, 0); 25100000=05417000= + STREAMSMEARLIT(15*8, 6" "); 25105000=05417000= + STREAMSETLOCDI(S); 25110000=05418000= + STREAMSKIPDI(+7); 25115000=05418000= + STREAMSETSI(L, LX); 25120000=05418000= + STREAMSKIPSI(+10); 25125000=05418000= + STREAMTRANSFERCHR(1); 25130000=05418000= + S:= STREAMTEMPD[0]; 25132000 + STREAMSETDI(A, 0); 25135000=05419000= + STREAMSKIPDI(+I); 25140000=05419000= + TEMP:= STREAMGETDI; 25145000=05419000= + STREAMSKIPDI(+6); 25150000=05420000= + STREAMTRANSFERCHR(S); 25155000=05420000= + STREAMSETDI(A, TEMP); 25160000=05421000= + STREAMSETLOCSI(N); 25165000=05421000= + STREAMTRANSFERDEC(4); 25170000=05421000= + STREAMSETDI(A, TEMP); 25175000=05422000= + STREAMTRANSFERFILL(3); 25180000=05422000= END; 25185000=05423000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25186000 FOR I:= PRTBASE STEP 1 UNTIL PRTOP DO 25190000=05424000= IF NESTPRT[I] ^= 0 THEN 25195000=05425000= BEGIN 25200000=05425100= SORTPRT[Q]:= I; 25205000=05425100= Q:= Q+1 25210000=05425100= END; 25215000=05425100= - NESTSORT(0, Q:= Q-1); 25220000=05425200= + NESTSORT(0, Q:= Q-1); 25220000=05425200= FOR P:= 0 STEP 1 UNTIL Q DO 25225000=05425300= BEGIN 25230000=05425400= I:= SORTPRT[P]; 25235000=05425400= T:= NESTPRT[I]; 25240000=05425400= - NESTFORM(0, DEPTH(I), INFO[T.LINKR, T.LINKC], A); 25245000=05426000= - WRITE(LINE[DBL], 15, A[**]); 25250000=05427000= - J:= T.[22:13]; 25255000=05428000= - K:= CALL[J-1].[22:13]; 25260000=05428000= + NESTFORM(0, DEPTH(I), INFO[T.LINKR,*], T.LINKC, A); 25245000=05426000= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 25245100 + WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 25250000=05427000= + J:= T.[25:13]; 25255000=05428000= + K:= CALL[J-1].[25:13]; 25260000=05428000= FOR J:= J STEP 1 UNTIL K DO 25265000=05429000= BEGIN 25270000=05430000= I:= CALL[J]; 25275000=05430000= T:= NESTPRT[I]; 25280000=05430500= - NESTFORM(32, DEPTH(I), INFO[T.LINKR, T.LINKC], A); 25285000=05431000= - WRITE(LINE, 15, A[**]); 25290000=05432000= + NESTFORM(32, DEPTH(I), INFO[T.LINKR,*], T.LINKC, A); 25285000=05431000= + UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 25285100 + WRITE(LINE, 20, EBCDICBUFF[*]); 25290000=05432000= END; 25295000=05433000= - WRITE(LINE[DBL]); 25300000=05434000= + WRITE(LINE[SPACE 2]); 25300000=05434000= END; 25305000=05435000= END; 25310000=05436000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25315000=05436000= - PROCEDURE NESTSORT(L, U); 25320000=05437000= + PROCEDURE NESTSORT(L, U); 25320000=05437000= VALUE 25325000=05437000= L, 25330000=05437000= - U; 25335000=05437000= + U; 25335000=05437000= REAL 25340000=05437000= L, 25345000=05437000= - U; 25350000=05437000= + U; 25350000=05437000= BEGIN 25355000=05438000= REAL 25360000=05438000= I, 25365000=05438000= - J, 25370000=05438000= - K, 25375000=05438000= - M; 25380000=05438000= + J, 25370000=05438000= + K, 25375000=05438000= + M; 25380000=05438000= LABEL 25385000=05439000= AGAIN, 25390000=05439000= - TOP, 25395000=05439000= - BOTTOM, 25400000=05439000= - EXIT; 25405000=05439000= + TOP, 25395000=05439000= + BOTTOM, 25400000=05439000= + EXIT; 25405000=05439000= IF L ^= U THEN 25410000=05440000= BEGIN 25415000=05441000= M:= (U+L) DIV 2; 25420000=05441000= - NESTSORT(L, M); 25425000=05442000= - NESTSORT(M+1, U); 25430000=05443000= + NESTSORT(L, M); 25425000=05442000= + NESTSORT(M+1, U); 25430000=05443000= I:= K:= L; 25435000=05444000= J:= M+1 AGAIN: 25440000=05445000= IF I > M THEN 25445000=05445000= GO TO TOP; 25450000=05445000= IF J > U THEN 25455000=05446000= GO TO BOTTOM; 25460000=05446000= - GT1:= NESTPRT[SORTPRT[I].[33:15]].LINK; 25465000=05447000= - GT2:= NESTPRT[SORTPRT[J].[33:15]].LINK; 25470000=05448000= - IF INFO[GT1.LINKR, (GT1+1).LINKC].[18:30] <= 25475000=05450000= - INFO[GT2.LINKR, (GT2+1).LINKC].[18:30] 25480000=05450000= + GT1:= NESTPRT[SORTPRT[I].[14:15]].LINK; 25465000=05447000= + GT2:= NESTPRT[SORTPRT[J].[14:15]].LINK; 25470000=05448000= + IF INFO[GT1.LINKR, (GT1+1).LINKC].[29:30] <= 25475000=05450000= + INFO[GT2.LINKR, (GT2+1).LINKC].[29:30] 25480000=05450000= THEN 25485000=05450000= GO TO BOTTOM; 25490000=05451000= TOP: 25495000=05452000= - SORTPRT[K].[18:15]:= SORTPRT[J]; 25500000=05452000= + SORTPRT[K].[29:15]:= SORTPRT[J]; 25500000=05452000= J:= J+1; 25505000=05453000= IF K:= K+1 <= U THEN 25510000=05454000= GO TO AGAIN 25515000=05454000= ELSE 25520000=05454000= GO TO EXIT; 25525000=05454000= BOTTOM: 25530000=05455000= - SORTPRT[K].[18:15]:= SORTPRT[I]; 25535000=05455000= + SORTPRT[K].[29:15]:= SORTPRT[I]; 25535000=05455000= I:= I+1; 25540000=05456000= IF K:= K+1 <= U THEN 25545000=05457000= GO TO AGAIN 25550000=05457000= @@ -5119,7 +6139,7 @@ EXIT: 24705000 GO TO EXIT; 25560000=05457000= EXIT: 25565000=05458000= FOR I:= L STEP 1 UNTIL U DO 25570000=05458000= - SORTPRT[I]:= SORTPRT[I].[18:15]; 25575000=05459000= + SORTPRT[I]:= SORTPRT[I].[29:15]; 25575000=05459000= END; 25580000=05460000= END; 25585000=05461000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25590000=05461000= @@ -5195,11 +6215,11 @@ EXIT: 24705000 BEGIN 25940000=06042000= INTEGER 25945000=06042000= OPERATOR, 25950000=06042000= - OPCLASS; 25955000=06042000= + OPCLASS; 25955000=06042000= DO BEGIN 25960000=06043000= - OPERATOR:= 1 & ELBAT[I][36:17:10]; 25965000=06044000= + OPERATOR:= 1 & ELBAT[I][11:30:10]; 25965000=06044000= COMMENT THIS SETS UP THE OPERATOR WHICH WILL BE EMITTED. THE HIGH 25970000=06045000= - ORDER TEN BITS OF THE OPERATOR ARE LOCATED IN [17:10] 25975000=06046000= + ORDER TEN BITS OF THE OPERATOR ARE LOCATED IN [30:10] 25975000=06046000= OF THE ELBAT WORD; 25980000=06047000= OPCLASS:= ELCLASS; 25985000=06048000= STEPIT; 25990000=06049000= @@ -5235,8 +6255,8 @@ EXIT: 24705000 EL; 26140000=06061900= REAL 26145000=06062000= COUNT, 26150000=06062000= - T1, 26155000=06062000= - T2; 26160000=06062000= + T1, 26155000=06062000= + T2; 26160000=06062000= BOOLEAN 26165000=06063000= S; 26170000=06063000= REAL 26175000=06063500= @@ -5244,19 +6264,23 @@ EXIT: 24705000 INTEGER 26185000=06063500= Z; 26190000=06063500= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26192000 - STREAM PROCEDURE WRITEOUT(C, N, L); 26195000=06064000= + PROCEDURE WRITEOUT(C, N, L, LX); 26195000=06064000= VALUE 26200000=06064000= - C, 26205000=06064000= - N; 26210000=06064000= + C, N, LX; 26205000=06064000= + REAL 26210000=06064000= + C, N, LX; 26211000 + ARRAY 26212000 + L[0]; 26213000 BEGIN 26215000=06065000= - DI:= L; 26220000=06065000= - DS:= 2 LIT 6"S="; 26225000=06065000= - SI:= LOC C; 26230000=06066000= - SI:= SI+7; 26235000=06066000= - DS:= CHR; 26240000=06066000= - SI:= LOC N; 26245000=06067000= - DS:= DEC; 26250000=06067000= - 58(DS:= 2 LIT 6" "); 26255000=06067500= + STREAMLOCALS; 26216000 + STREAMSETDI(L, LX); 26220000=06065000= + STREAMTRANSFERLIT(2, 6"S="); 26225000=06065000= + STREAMSETLOCSI(C); 26230000=06066000= + STREAMSKIPSI(+7); 26235000=06066000= + STREAMTRANSFERCHR(1); 26240000=06066000= + STREAMSETLOCSI(N); 26245000=06067000= + STREAMTRANSFERDEC(1); 26250000=06067000= + STREAMSMEARLIT(58*2, 6" "); 26255000=06067500= END; 26260000=06068000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26262000 SSS:= STACKCTR; 26265000=06068500= @@ -5266,8 +6290,8 @@ EXIT: 24705000 IF STEPI >= OPERATORS THEN 26285000=06071000= BEGIN 26290000=06072000= T1:= (T2:= ELBAT[I]).ADDRESS; 26295000=06072000= - S:= S OR COUNT-T2.[11:3] < 0; 26300000=06074000= - COUNT:= T2.[14:2]+COUNT-2; 26305000=06075000= + S:= S OR COUNT-T2.[36:3] < 0; 26300000=06074000= + COUNT:= T2.[33:2]+COUNT-2; 26305000=06075000= IF ELCLASS >= OPERATOR THEN 26310000=06076000= BEGIN 26315000=06077000= IF T1 ^= 0 THEN 26320000=06077000= @@ -5288,10 +6312,10 @@ EXIT: 24705000 GO TO EXIT 26395000=06086000= END; 26400000=06086000= IF T2 = BITOP THEN 26405000=06087000= - EMIT(T1 & C[36:42:6]) 26410000=06088000= + EMIT(T1 & C[11:5:6]) 26410000=06088000= ELSE 26415000=06088000= IF T2 = HEXOP THEN 26420000=06089000= - EMIT(T1 & (T2:= C DIV 6)[36:45:3] & (C-T2*6)[39:45:3]) 26425000=06091000= + EMIT(T1 & (T2:= C DIV 6)[11:2:3] & (C-T2*6)[8:2:3]) 26425000=06091000= ELSE 26430000=06091000= IF T2 = ISOLATE THEN 26435000=06092000= BEGIN 26440000=06093000= @@ -5314,7 +6338,7 @@ EXIT: 24705000 BEGIN 26525000=06104200= T1:= 2; 26530000=06104200= EL: GT4:= TAKE(T2:= GIT(ELBAT[I])); 26535000=06104300= - PUT(L, T2); 26540000=06104400= + PUT(L, T2); 26540000=06104400= IF GT4 = 0 THEN 26545000=06104500= GT4:= L; 26550000=06104500= IF(GT4:= L-GT4) DIV 4 >= 128 THEN 26555000=06104510= @@ -5373,7 +6397,7 @@ EXIT: 24705000 BEGIN 26820000=06119000= COUNT:= COUNT-EXPECT; 26825000=06119000= WRITEOUT(IF COUNT < 0 THEN 6"-" ELSE IF COUNT = 0 THEN 6" " ELSE 26830000=06122000= - 6"+", ABS(COUNT), LIN[0]); 26835000=06122000= + 6"+", ABS(COUNT), LIN, 0); 26835000=06122000= WRITELINE; 26840000=06123000= END; 26845000=06124000= EXIT: 26850000=06125000= @@ -5384,94 +6408,97 @@ EXIT: 26850000 BEGIN 26875000=06127000= LABEL 26880000=06128000= L1, 26885000=06128000= - L2, 26890000=06128000= - L3, 26895000=06128000= - L4, 26900000=06128000= - L5, 26905000=06128000= - L6, 26910000=06128000= - L7, 26915000=06128000= - L8, 26920000=06128000= - L9, 26925000=06128000= - L10, 26930000=06129000= - L11, 26935000=06129000= - L12, 26940000=06129000= - L13, 26945000=06129000= - L14, 26950000=06129000= - L15, 26955000=06129000= - L16, 26960000=06129000= - L17, 26965000=06129000= - L18, 26970000=06129000= - L19, 26975000=06129000= - L20, 26980000=06130000= - L21, 26985000=06130000= - L22, 26990000=06130000= - L23, 26995000=06130000= - L24, 27000000=06130000= - L25, 27005000=06130000= - L26, 27010000=06130000= - L27, 27015000=06130000= - L28, 27020000=06130000= - L29, 27025000=06130000= - L30, 27030000=06131000= - L31, 27035000=06131000= - L32, 27040000=06131000= - L33, 27045000=06131000= - L34, 27050000=06131000= - L35, 27055000=06131000= - L36, 27060000=06131000= - L37, 27065000=06131000= - L38, 27070000=06131000= - L39; 27075000=06131000= + L2, 26890000=06128000= + L3, 26895000=06128000= + L4, 26900000=06128000= + L5, 26905000=06128000= + L6, 26910000=06128000= + L7, 26915000=06128000= + L8, 26920000=06128000= + L9, 26925000=06128000= + L10, 26930000=06129000= + L11, 26935000=06129000= + L12, 26940000=06129000= + L13, 26945000=06129000= + L14, 26950000=06129000= + L15, 26955000=06129000= + L16, 26960000=06129000= + L17, 26965000=06129000= + L18, 26970000=06129000= + L19, 26975000=06129000= + L20, 26980000=06130000= + L21, 26985000=06130000= + L22, 26990000=06130000= + L23, 26995000=06130000= + L24, 27000000=06130000= + L25, 27005000=06130000= + L26, 27010000=06130000= + L27, 27015000=06130000= + L28, 27020000=06130000= + L29, 27025000=06130000= + L30, 27030000=06131000= + L31, 27035000=06131000= + L32, 27040000=06131000= + L33, 27045000=06131000= + L34, 27050000=06131000= + L35, 27055000=06131000= + L36, 27060000=06131000= + L37, 27065000=06131000= + L38, 27070000=06131000= + L39; 27075000=06131000= SWITCH 27080000=06132000= S:= L1, 27085000=06133000= - L2, 27090000=06133000= - L3, 27095000=06133000= - L4, 27100000=06133000= - L5, 27105000=06133000= - L6, 27110000=06133000= - L7, 27115000=06133000= - L8, 27120000=06133000= - L9, 27125000=06133000= - L10, 27130000=06134000= - L11, 27135000=06134000= - L12, 27140000=06134000= - L13, 27145000=06134000= - L14, 27150000=06134000= - L15, 27155000=06134000= - L16, 27160000=06134000= - L17, 27165000=06134000= - L18, 27170000=06134000= - L19, 27175000=06134000= - L20, 27180000=06135000= - L21, 27185000=06135000= - L22, 27190000=06135000= - L23, 27195000=06135000= - L24, 27200000=06135000= - L25, 27205000=06135000= - L26, 27210000=06135000= - L27, 27215000=06135000= - L28, 27220000=06135000= - L29, 27225000=06135000= - L30, 27230000=06136000= - L31, 27235000=06136000= - L32, 27240000=06136000= - L33, 27245000=06136000= - L34, 27250000=06136000= - L35, 27255000=06136000= - L36, 27260000=06136000= - L37, 27265000=06136000= - L38, 27270000=06136000= - L39; 27275000=06136000= + L2, 27090000=06133000= + L3, 27095000=06133000= + L4, 27100000=06133000= + L5, 27105000=06133000= + L6, 27110000=06133000= + L7, 27115000=06133000= + L8, 27120000=06133000= + L9, 27125000=06133000= + L10, 27130000=06134000= + L11, 27135000=06134000= + L12, 27140000=06134000= + L13, 27145000=06134000= + L14, 27150000=06134000= + L15, 27155000=06134000= + L16, 27160000=06134000= + L17, 27165000=06134000= + L18, 27170000=06134000= + L19, 27175000=06134000= + L20, 27180000=06135000= + L21, 27185000=06135000= + L22, 27190000=06135000= + L23, 27195000=06135000= + L24, 27200000=06135000= + L25, 27205000=06135000= + L26, 27210000=06135000= + L27, 27215000=06135000= + L28, 27220000=06135000= + L29, 27225000=06135000= + L30, 27230000=06136000= + L31, 27235000=06136000= + L32, 27240000=06136000= + L33, 27245000=06136000= + L34, 27250000=06136000= + L35, 27255000=06136000= + L36, 27260000=06136000= + L37, 27265000=06136000= + L38, 27270000=06136000= + L39; 27275000=06136000= LABEL 27280000=06137000= EXIT, 27285000=06137000= - RP, 27290000=06137000= - LDOT, 27295000=06137000= - LAMPER; 27300000=06137000= + RP, 27290000=06137000= + LDOT, 27295000=06137000= + LAMPER; 27300000=06137000= + REAL 27302000 + TVAR; % FOR VARIABLE() NAME PARAM 27304000 GO TO S[ELCLASS]; 27305000=06138000= IF ELCLASS = LFTBRKET THEN 27310000=06139000= BEGIN 27315000=06140000= STEPIT; 27320000=06140000= - VARIABLE(FL); 27325000=06140000= + TVAR:= FL; 27322000 + VARIABLE(TVAR); 27325000=06140000= IF ELCLASS ^= RTBRKET THEN 27330000=06141000= BEGIN 27335000=06142000= ERR(118); 27340000=06142000= @@ -5504,7 +6531,14 @@ L12: 27470000 L13: 27475000=06152000= L16: 27480000=06152000= L17: 27485000=06152000= - L20, L21:L24:L25:L28:L29:L32:ERR(103); 27490000=06154000= +L20: 27490000=06154000= +L21: 27490500 +L24: 27491000 +L25: 27491500 +L28: 27492000 +L29: 27492500 +L32: 27493000 + ERR(103); 27493500 GO TO EXIT; 27495000=06154000= L7: SUBHAND(FALSE); 27500000=06156000= GO TO LDOT; 27505000=06156000= @@ -5526,11 +6560,12 @@ L26: 27580000 L27: 27585000=06163000= L30: 27590000=06163000= L31: 27595000=06164000= - VARIABLE(FP); 27600000=06164000= + TVAR:= FP; 27596000 + VARIABLE(TVAR); 27600000=06164000= GO TO LAMPER; 27605000=06164000= L33: 27610000=06165000= L35: 27615000=06166000= - EMIT(0 & ELBAT[I][36:17:10]); 27620000=06166000= + EMIT(0 & ELBAT[I][11:30:10]); 27620000=06166000= STEPIT; 27625000=06166000= GO TO LAMPER; 27630000=06166000= L34: 27635000=06167000= @@ -5574,7 +6609,7 @@ EXIT: 27805000 BEGIN 27825000=06184000= REAL 27830000=06184000= T1, 27835000=06184000= - T2; 27840000=06184000= + T2; 27840000=06184000= T1:= (T2:= ELBAT[I]).ADDRESS; 27845000=06185000= PANA; 27850000=06186000= IF T1 ^= 0 THEN 27855000=06187000= @@ -5611,8 +6646,8 @@ EXIT: 27805000 EMITO(XCH); 28010000=06203000= GO TO EXIT; 28015000=06204000= END; 28020000=06205000= - EMITL((L+6) DIV 4-(T1.[24:12]-1) DIV 4); 28025000=06206000= - EMITB(BBW, BUMPL, T1.[36:12]); 28030000=06207000= + EMITL((L+6) DIV 4-(T1.[23:12]-1) DIV 4); 28025000=06206000= + EMITB(BBW, BUMPL, T1.[11:12]); 28030000=06207000= STEPIT; 28035000=06208000= ADJUST; 28040000=06208500= EXIT: 28045000=06209000= @@ -5625,26 +6660,24 @@ EXIT: 28045000 BEGIN 28080000=06295000= INTEGER 28085000=06295000= TYPE, 28090000=06295000= - THENBRANCH, 28095000=06295000= - ELSEBRANCH; 28100000=06295000= + THENBRANCH, 28095000=06295000= + ELSEBRANCH; 28100000=06295000= IFCLAUSE; 28105000=06296000= STACKCT:= 0; 28110000=06296500= THENBRANCH:= BUMPL; 28115000=06297000= COMMENT SAVE L FOR LATER FIXUP; 28120000=06298000= - IFEXP:= TYPE:= EXPRSS; 28125000=06299000= - COMMENT COMPILE 1ST EXPRSS; 28130000=06299000= + IFEXP:= TYPE:= EXPRSS; COMMENT COMPILE 1ST EXPRSS; 28125000=06299000= STACKCT:= 0; 28135000=06299500= ELSEBRANCH:= BUMPL; 28140000=06300000= - EMITB(BFC, THENBRANCH, L); 28145000=06301000= + EMITB(BFC, THENBRANCH, L); 28145000=06301000= IF ELCLASS ^= ELSEV THEN 28150000=06302000= ERR(155) 28155000=06302000= ELSE 28160000=06302000= BEGIN 28165000=06302000= STEPIT; 28170000=06303000= AEXP; 28175000=06305000= - STACKCT:= 1; 28180000=06305000= - COMMENT THIS COMPILES PROPER TYPE SECOND EXPRSS; 28185000=06306000= - EMITB(BFW, ELSEBRANCH, L); 28190000=06307000= + STACKCT:= 1; COMMENT THIS COMPILES PROPER TYPE SECOND EXPRSS; 28180000=06305000= + EMITB(BFW, ELSEBRANCH, L); 28190000=06307000= EMIT(1); 28195000=06308000= L:= L-1; 28200000=06308000= COMMENT THIS IS USED BY EMITLNG TO CLEANUP CODE. COMPARE WITH 28205000=06309000= @@ -5658,8 +6691,8 @@ EXIT: 28045000 BEGIN 28245000=06314000= INTEGER 28250000=06314000= FIRST, 28255000=06314000= - SECOND, 28260000=06314000= - THIRD; 28265000=06314000= + SECOND, 28260000=06314000= + THIRD; 28265000=06314000= LABEL 28270000=06315000= EXIT; 28275000=06315000= IF ELCLASS = LFTBRKET THEN 28280000=06316000= @@ -5679,12 +6712,11 @@ EXIT: 28045000 COMMENT IF TEST ARE PASSED THEN RANGES OF LITERALS ARE O.K.; 28350000=06329000= BEGIN 28355000=06330000= STEPIT; 28360000=06331000= - EMITD(SECOND, FIRST, THIRD); 28365000=06332000= + EMITD(SECOND, FIRST, THIRD); 28365000=06332000= STACKCT:= 1; 28370000=06332500= GO TO EXIT 28375000=06333000= END; 28380000=06333000= - ERR(113); 28385000=06334000= - COMMENT ERROR IF SYNTAX OR RANGE FAILS; 28390000=06334000= + ERR(113); COMMENT ERROR IF SYNTAX OR RANGE FAILS; 28385000=06334000= EXIT: 28395000=06335000= END PARSE; 28400000=06335000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28405000=06335000= @@ -5695,14 +6727,14 @@ EXIT: 28395000 BEGIN 28430000=06339000= INTEGER 28435000=06339000= FIRST, 28440000=06339000= - SECOND; 28445000=06339000= + SECOND; 28445000=06339000= LABEL 28450000=06339000= EXIT; 28455000=06339000= IF ELCLASS = PERIOD THEN 28460000=06340000= BEGIN 28465000=06340000= - IF DOTSYNTAX(FIRST, SECOND) THEN 28470000=06341000= + IF DOTSYNTAX(FIRST, SECOND) THEN 28470000=06341000= GO TO EXIT; 28475000=06341000= - EMITI(0, FIRST, SECOND); 28480000=06344000= + EMITI(0, FIRST, SECOND); 28480000=06344000= STEPIT; 28485000=06345000= EXIT: 28490000=06346000= END 28495000=06346000= @@ -5767,8 +6799,7 @@ EXIT: 28395000 I:= I-1; 28790000=07008000= BEGINCTR:= BEGINCTR+1; 28795000=07008000= ANOTHER: 28800000=07009000= - ERRORTOG:= TRUE; 28805000=07009000= - COMMENT ALLOW ERROR MESSAGES; 28810000=07009000= + ERRORTOG:= TRUE; COMMENT ALLOW ERROR MESSAGES; 28805000=07009000= STEPIT; 28815000=07010000= IF STREAMTOG THEN 28820000=07011000= STREAMSTMT 28825000=07011000= @@ -5795,15 +6826,15 @@ ANOTHER: 28800000 GO ANOTHER 28930000=07024000= END; 28935000=07024000= FLAG(120); 28940000=07025000= - FCR:= (LCR:= MKABS(CBUFF[9]))-9; 28945000=07025010= + FCR:= (LCR:= 9)-9; 28945000=07025010= + SBUFF:= CBUFF; 28946000 IF LISTER THEN 28950000=07025020= PRINTCARD; 28955000=07025020= - FCR:= (LCR:= MKABS(TBUFF[9]))-9 28960000=07025030= END; 28965000=07025030= IF ELCLASS = PERIOD THEN 28970000=07026000= BEGIN 28975000=07027000= - GT5:= 6"ND;END."&6"E"[1:43:5]; 28980000=07028000= - MOVE(1, GT5, CBUFF[0]); 28985000=07029000= + GT5:= 6"ND;END."&6"E"[46:4:5]; 28980000=07028000= + CBUFF[0]:= GT5; 28985000=07029000= LASTUSED:= 4; 28990000=07030000= ELBAT[I:= I-2]:= SPECIAL[20]; 28995000=07031000= ELCLASS:= SEMICOLON 29000000=07032000= @@ -5812,10 +6843,11 @@ ANOTHER: 28800000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29015000=07033000= REAL 29020000=07034000= AXNUM; 29025000=07034000= - PROCEDURE ACTUALPARAPART(SBIT, INDEX); 29030000=07035000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29026000 + PROCEDURE ACTUALPARAPART(SBIT, INDEX); 29030000=07035000= VALUE 29035000=07035000= SBIT, 29040000=07035000= - INDEX; 29045000=07035000= + INDEX; 29045000=07035000= BOOLEAN 29050000=07036000= SBIT; 29055000=07036000= REAL 29060000=07036000= @@ -5823,45 +6855,53 @@ ANOTHER: 28800000 BEGIN 29070000=07037000= LABEL 29075000=07037000= EXIT, 29080000=07037000= - COMMON, 29085000=07037000= - ANOTHER, 29090000=07037000= - POL; 29095000=07037000= + COMMON, 29085000=07037000= + ANOTHER, 29090000=07037000= + POL; 29095000=07037000= REAL 29100000=07038000= PCTR, 29105000=07038000= - SCLASS, 29110000=07038000= - ACLASS; 29115000=07038000= + SCLASS, 29110000=07038000= + ACLASS, 29115000=07038000= + TVAR; 29115500 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29116000 - STREAM PROCEDURE WRITEAX(LINE, ACCUM, N, SEQ); 29120000=07038100= + PROCEDURE WRITEAX(LINE, ACCUM, AX, N, SEQ, SX); 29120000=07038100= VALUE 29125000=07038100= - N; 29130000=07038100= + AX, N, SX; 29130000=07038100= + ARRAY 29131000 + LINE, ACCUM, SEQ[0]; 29132000 + REAL 29133000 + AX, N, SX; 29134000 BEGIN 29135000=07038200= - DI:= LINE; 29140000=07038200= - 15(DS:= 8 LIT 6" "); 29145000=07038200= - DI:= LINE; 29150000=07038300= - SI:= SEQ; 29155000=07038300= - SI:= SI-16; 29160000=07038300= - DS:= WDS; 29165000=07038300= - DI:= DI+4; 29170000=07038400= - DS:= 20 LIT 6"ACCIDENTAL ENTRY AT "; 29175000=07038400= - SI:= ACCUM; 29180000=07038500= - SI:= SI+3; 29185000=07038500= - DS:= N CHR; 29190000=07038500= - SI:= SEQ; 29195000=07038600= - DI:= SEQ; 29200000=07038600= - DI:= DI-16; 29205000=07038600= - DS:= WDS; 29210000=07038600= + STREAMLOCALS; 29136000 + STREAMSETDI(LINE, 0); 29140000=07038200= + STREAMSMEARLIT(15*8, 6" "); 29145000=07038200= + STREAMSETDI(LINE, 0); 29150000=07038300= + STREAMSETSI(SEQ, SX); 29155000=07038300= + STREAMSKIPSI(-16); 29160000=07038300= + STREAMTRANSFERWDS(1); 29165000=07038300= + STREAMSKIPDI(+4); 29170000=07038400= + STREAMTRANSFERLIT(8, 6"ACCIDENT"); 29175000=07038400= + STREAMTRANSFERLIT(8, 6"AL ENTRY"); 29176000 + STREAMTRANSFERLIT(4, 6" AT "); 29178000 + STREAMSETSI(ACCUM, AX); 29180000=07038500= + STREAMSKIPSI(+3); 29185000=07038500= + STREAMTRANSFERCHR(N); 29190000=07038500= + STREAMSETSI(SEQ, SX); 29195000=07038600= + STREAMSETDI(SEQ, SX); 29200000=07038600= + STREAMSKIPDI(-16); 29205000=07038600= + STREAMTRANSFERWDS(1); 29210000=07038600= END; 29215000=07038700= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29216000 BOOLEAN 29220000=07039000= VBIT, 29225000=07039000= - IDBIT; 29230000=07039000= + IDBIT; 29230000=07039000= PCTR:= 1; 29235000=07040000= ANOTHER: 29240000=07041000= - ACLASS:= STEPI & 0[47:47:1]; 29245000=07041000= + ACLASS:= STEPI & 0[0:0:1]; 29245000=07041000= STACKCT:= 0; 29250000=07041200= GT1:= TAKE(INDEX+PCTR); 29255000=07042000= VBIT:= BOOLEAN(GT1.VO); 29260000=07043000= - SCLASS:= GT1.CLASS & 0[47:47:1]; 29265000=07044000= + SCLASS:= GT1.CLASS & 0[0:0:1]; 29265000=07044000= IF VBIT THEN 29270000=07045000= BEGIN 29275000=07045000= AEXP; 29280000=07045000= @@ -5873,7 +6913,10 @@ ANOTHER: 29240000 IF SCLASS = NAMEID THEN 29310000=07048000= BEGIN 29315000=07049000= IF IDBIT THEN 29320000=07050000= - VARIABLE(FL); 29325000=07050000= + BEGIN 29322000 + TVAR:= FL; 29324000 + VARIABLE(TVAR); 29325000=07050000= + END; 29326000 POL: 29330000=07052000= IF ELCLASS = POLISHV THEN 29335000=07052000= POLISHER(1) 29340000=07053000= @@ -5884,7 +6927,8 @@ ANOTHER: 29240000 IF SCLASS = REALARRAYID THEN 29365000=07056000= IF ACLASS = REALARRAYID THEN 29370000=07057000= BEGIN 29375000=07058000= - VARIABLE(FL); 29380000=07058000= + TVAR:= FL; 29376000 + VARIABLE(TVAR); 29380000=07058000= GO TO COMMON 29385000=07058000= END 29390000=07059000= ELSE 29395000=07059000= @@ -5904,11 +6948,14 @@ ANOTHER: 29240000 IF ACLASS = REALID AND BOOLEAN(ELBAT[I].FORMAL) THEN 29465000=07070000= BEGIN 29470000=07070000= CHECKER(ELBAT[I]); 29475000=07070500= - EMITPAIR(ELBAT[I], ADDRESS, LOD); 29480000=07071000= + EMITPAIR(ELBAT[I], ADDRESS, LOD); 29480000=07071000= STEPIT; 29485000=07072000= END 29490000=07073000= ELSE 29495000=07073000= - VARIABLE(FL); 29500000=07073000= + BEGIN 29496000 + TVAR:= FL; 29498000 + VARIABLE(TVAR); 29500000=07073000= + END; 29502000 GO TO COMMON 29505000=07074000= END; 29510000=07074000= IF ELCLASS <= STRNGCON AND ELCLASS > LABELID THEN 29515000=07076000= @@ -5921,10 +6968,11 @@ ANOTHER: 29240000 EMITO(NOP); 29550000=07078000= SCLASS:= L; 29555000=07079000= ADJUST; 29560000=07080000= - ACLASS:= L.[36:10]; 29565000=07081000= + ACLASS:= L.[11:10]; 29565000=07081000= IF IDBIT THEN 29570000=07082000= BEGIN 29575000=07083000= - VARIABLE(FL); 29580000=07083000= + TVAR:= FL; 29576000 + VARIABLE(TVAR); 29580000=07083000= IF ELCLASS < AMPERSAND THEN 29585000=07084000= GO TO COMMON; 29590000=07084000= SIMPARITH; 29595000=07085000= @@ -5935,15 +6983,14 @@ ANOTHER: 29240000 BEGIN 29620000=07086200= ACCUM[1]:= Q; 29625000=07086200= WRITEAX 29630000=07086400= - (LIN[0], ACCUM[1], Q.[12:6], INFO[LASTSEQROW, LASTSEQUENCE])29635000=07086400= - ; 29640000=07086400= + (LIN, ACCUM, 1, Q.[35:6], INFO[LASTSEQROW,*], LASTSEQUENCE); 29635000=07086400= WRITELINE; 29645000=07086500= END; 29650000=07086600= AXNUM:= AXNUM+1; 29655000=07086700= EMITO(RTS); 29660000=07087000= - EMITB(BFW, SCLASS, L); 29665000=07088000= + EMITB(BFW, SCLASS, L); 29665000=07088000= EMITNUM(ACLASS); 29670000=07089000= - EMITPAIR(TAKE(PROINFO).ADDRESS, LOD); 29675000=07090000= + EMITPAIR(TAKE(PROINFO).ADDRESS, LOD); 29675000=07090000= EMITO(INX); 29680000=07091000= EMITN(512); 29685000=07092000= EMITD(33, 18, 15); 29690000=07093000= @@ -5976,7 +7023,8 @@ EXIT: 29785000 BEGIN 29825000=07392000= REAL 29830000=07393000= HOLE, 29835000=07393000= - ADDRESS; 29840000=07393000= + ADDRESS, 29840000=07393000= + TVAR; 29842000 REAL 29845000=07393100= J; 29850000=07393100= LABEL 29855000=07393100= @@ -6001,7 +7049,8 @@ EXIT: 29785000 IF NOT FORMALF THEN 29950000=07400000= IF TABLE(I+1) = ASSIGNOP THEN 29955000=07401000= BEGIN 29960000=07402000= - VARIABLE(2-REAL(FROM)); 29965000=07402000= + TVAR:= 2-REAL(FROM); 29962000 + VARIABLE(TVAR); 29965000=07402000= GO TO EXIT 29970000=07402000= END; 29975000=07402000= COMMENT CALL VARIABLE TO HANDLE THIS ASSIGNMENT OPERATION; 29980000=07403000= @@ -6014,7 +7063,7 @@ EXIT: 29785000 STEPIT; 30015000=07407000= EMITO(MKS); 30020000=07408000= IF ELCLASS = LEFTPAREN THEN 30025000=07410000= - ACTUALPARAPART(FALSE, GIT(HOLE)) 30030000=07411000= + ACTUALPARAPART(FALSE, GIT(HOLE)) 30030000=07411000= ELSE 30035000=07411000= IF FORMALF THEN 30040000=07411000= L:= L-1; 30045000=07411000= @@ -6041,14 +7090,14 @@ EXIT: 30070000 L:= L+1 30150000=07433000= END; 30155000=07433000= EMITO(MKS); 30160000=07434000= - T1:= TAKEFRST.[1:6]; 30165000=07435000= + T1:= TAKEFRST.[46:6]; 30165000=07435000= FOR GT1:= 1 STEP 1 UNTIL T1 DO 30170000=07436000= EMIT(0); 30175000=07436000= IF STEPI ^= LEFTPAREN THEN 30180000=07437000= ERR(128) 30185000=07438000= ELSE 30190000=07438000= BEGIN 30195000=07438000= - ACTUALPARAPART(TRUE, GIT(WHOLE)); 30200000=07438000= + ACTUALPARAPART(TRUE, GIT(WHOLE)); 30200000=07438000= IF FIX < 0 THEN 30205000=07439000= EMITV(WHOLE.ADDRESS) 30210000=07440000= ELSE 30215000=07440000= @@ -6056,9 +7105,9 @@ EXIT: 30070000 T1:= L; 30225000=07440000= L:= FIX; 30230000=07440000= WHOLE:= TAKE(GIT(WHOLE)); 30235000=07441000= - EMITNUM(T1+2-WHOLE.[16:12]); 30240000=07442000= + EMITNUM(T1+2-WHOLE.[31:12]); 30240000=07442000= L:= T1; 30245000=07443000= - EMITB(BBW, BUMPL, WHOLE.[28:12]); 30250000=07444000= + EMITB(BBW, BUMPL, WHOLE.[19:12]); 30250000=07444000= END; 30255000=07445000= END 30260000=07446000= END STRMPROCSTMT; 30265000=07446000= @@ -6088,7 +7137,7 @@ EXIT: 30070000 BEGIN 30385000=07486000= STEPIT; 30390000=07487000= BEXP; 30395000=07487000= - EMITB(BBC, BUMPL, TL) 30400000=07487000= + EMITB(BBC, BUMPL, TL) 30400000=07487000= END 30405000=07488000= END DOSTMT; 30410000=07488000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30415000=07488000= @@ -6110,9 +7159,9 @@ EXIT: 30070000 BEGIN 30495000=07495000= STEPIT; 30500000=07495000= STMT; 30505000=07495000= - EMITB(BBW, BUMPL, BACK); 30510000=07495000= + EMITB(BBW, BUMPL, BACK); 30510000=07495000= CONSTANTCLEAN; 30515000=07496000= - EMITB(BFC, FRONT, L) 30520000=07496000= + EMITB(BFC, FRONT, L) 30520000=07496000= END 30525000=07496000= END WHILESTMT; 30530000=07496000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30535000=07496000= @@ -6162,7 +7211,7 @@ EXIT: 30070000 END; 30755000=07517500= IF TB1 THEN 30760000=07518000= BEGIN 30765000=07518000= - GOGEN(ELBAT[I], BFW); 30770000=07518000= + GOGEN(ELBAT[I], BFW); 30770000=07518000= STEPIT; 30775000=07518000= CONSTANTCLEAN; 30780000=07519000= GO EXIT 30785000=07519000= @@ -6176,12 +7225,12 @@ EXIT: 30070000 EMITO(BFW); 30825000=07526000= GT3:= TAKE(GT4:= GIT(ELBW))+GT4; 30830000=07527000= FOR GT4:= GT4+1 STEP 1 UNTIL GT3 DO 30835000=07528000= - GOGEN(TAKE(GT4), BFW); 30840000=07529000= + GOGEN(TAKE(GT4), BFW); 30840000=07529000= END; 30845000=07530000= EXIT: 30850000=07531000= END GOSTMT; 30855000=07531000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30860000=07531000= - PROCEDURE GOGEN(LABELBAT, BRANCHTYPE); 30865000=07535000= + PROCEDURE GOGEN(LABELBAT, BRANCHTYPE); 30865000=07535000= VALUE 30870000=07536000= LABELBAT, 30875000=07536000= BRANCHTYPE; 30880000=07536000= @@ -6189,8 +7238,8 @@ EXIT: 30850000 LABELBAT, 30890000=07537000= BRANCHTYPE; 30895000=07537000= BEGIN 30900000=07538000= - IF BOOLEAN(GT1:= TAKE(GT2:= GIT(LABELBAT))).[1:1] THEN 30905000=07540000= - EMITB(BRANCHTYPE, BUMPL, GT1.[36:12]) 30910000=07541000= + IF BOOLEAN(GT1:= TAKE(GT2:= GIT(LABELBAT))).[46:1] THEN 30905000=07540000= + EMITB(BRANCHTYPE, BUMPL, GT1.[11:12]) 30910000=07541000= COMMENT LABELR SETS THE SIGN OF THE ADDITIONAL INFO FOR A LABEL 30915000=07541000= NEGATIVE WHEN THE LABEL IS ENCOUNTERED. SO THIS MEANS 30920000=07542000= THAT WE NOW KNOW WHERE TO GO; 30925000=07543000= @@ -6198,7 +7247,7 @@ EXIT: 30850000 BEGIN 30935000=07544000= EMIT(GT1); 30940000=07544000= EMIT(BRANCHTYPE); 30945000=07544000= - PUT(GT1 & L[36:36:12], GT2) 30950000=07545000= + PUT(GT1 & L[11:11:12], GT2) 30950000=07545000= END 30955000=07545000= END GOGEN; 30960000=07545000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30965000=07545000= @@ -6245,21 +7294,21 @@ EXIT: 31070000 STEPIT; 31170000=07569000= IF SIMPGO THEN 31175000=07571000= BEGIN 31180000=07571000= - GOGEN(ELBAT[I], BFC); 31185000=07572000= - GOGEN(T1, BFW); 31190000=07572000= + GOGEN(ELBAT[I], BFC); 31185000=07572000= + GOGEN(T1, BFW); 31190000=07572000= STEPIT; 31195000=07573000= GO TO EXIT 31200000=07573000= END 31205000=07573000= ELSE 31210000=07573000= BEGIN 31215000=07573000= EMITLNG; 31220000=07573000= - GOGEN(T1, BFC); 31225000=07573000= + GOGEN(T1, BFC); 31225000=07573000= STMT; 31230000=07574000= GO TO EXIT 31235000=07574000= END 31240000=07574000= END; 31245000=07574000= EMITLNG; 31250000=07575000= - GOGEN(T1, BFC); 31255000=07575000= + GOGEN(T1, BFC); 31255000=07575000= GO EXIT 31260000=07576000= END; 31265000=07576000= T1:= BUMPL; 31270000=07577000= @@ -6268,7 +7317,7 @@ EXIT: 31070000 BEGIN 31285000=07579000= IF L-T1 > 1023 THEN 31290000=07579000= ADJUST; 31295000=07579000= - EMITB(BFC, T1, L); 31300000=07579000= + EMITB(BFC, T1, L); 31300000=07579000= GO EXIT 31305000=07579100= END; 31310000=07579100= STEPIT; 31315000=07580000= @@ -6276,7 +7325,7 @@ EXIT: 31070000 BEGIN 31325000=07582000= T2:= L; 31330000=07583000= L:= T1-2; 31335000=07583000= - GOGEN(ELBAT[I], BFC); 31340000=07583000= + GOGEN(ELBAT[I], BFC); 31340000=07583000= L:= T2; 31345000=07583000= STEPIT; 31350000=07584000= GO EXIT 31355000=07584000= @@ -6285,11 +7334,11 @@ EXIT: 31070000 CONSTANTCLEAN; 31370000=07585000= IF L-T1 > 1023 THEN 31375000=07585100= ADJUST; 31380000=07585100= - EMITB(BFC, T1, L); 31385000=07585100= + EMITB(BFC, T1, L); 31385000=07585100= STMT; 31390000=07585100= IF L-T2 > 1023 THEN 31395000=07586000= ADJUST; 31400000=07586000= - EMITB(BFW, T2, L); 31405000=07586000= + EMITB(BFW, T2, L); 31405000=07586000= EXIT: 31410000=07587000= END IFSTMT; 31415000=07587000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31420000=07587000= @@ -6353,7 +7402,7 @@ EXIT: 31410000 GO TO ROUND 31710000=07600900= END; 31715000=07600900= GT1:= TABLE(I+1); 31720000=07600950= - LINK:= (ADDITIONAL:= TAKE(INDEX:= GIT(ELBATWORD))).[36:12]; 31725000=07602000= + LINK:= (ADDITIONAL:= TAKE(INDEX:= GIT(ELBATWORD))).[11:12]; 31725000=07602000= IF ADDITIONAL < 0 THEN 31730000=07603000= BEGIN 31735000=07604000= FLAG(135); 31740000=07604000= @@ -6368,11 +7417,10 @@ EXIT: 31410000 DO BEGIN 31785000=07604050= NEXTLINK:= GET(LINK); 31790000=07604050= L:= LINK; 31795000=07604060= - IF OLDL.[36:10]-L.[36:10] >= 128 THEN 31800000=07604068= + IF OLDL.[11:10]-L.[11:10] >= 128 THEN 31800000=07604068= FLAG(50) 31805000=07604068= ELSE 31810000=07604068= - EMIT(OLDL-LINK & 0[46:46:2]+0 & NEXTLINK[46:46:2]+ 31815000=07604080= - 3072); 31820000=07604080= + EMIT(OLDL-LINK & 0[1:1:2]+0 & NEXTLINK[1:1:2]+3072);31815000=07604080= L:= L-1; 31825000=07604085= END 31830000=07604090= UNTIL LINK:= LINK-NEXTLINK DIV 4 = L; 31835000=07604090= @@ -6396,10 +7444,10 @@ EXIT: 31410000 NEXTLINK:= GET(LINK-2); 31925000=07607000= IF L-LINK > 1023 THEN 31930000=07607100= ADJUST; 31935000=07607100= - EMITB(GET(LINK-1), LINK, L); 31940000=07608000= + EMITB(GET(LINK-1), LINK, L); 31940000=07608000= LINK:= NEXTLINK 31945000=07609000= END; 31950000=07609000= - PUT(-ADDITIONAL & L[36:36:12], INDEX); 31955000=07610000= + PUT(-ADDITIONAL & L[11:11:12], INDEX); 31955000=07610000= ROUND: 31960000=07645000= ERRORTOG:= TRUE 31965000=07645000= END 31970000=07645000= @@ -6414,6 +7462,7 @@ EXIT: 31980000 SIZE; 32015000=07647000= BEGIN 32020000=07647500= 32025000=07648000= + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32026000 COMMENT "COCT" PERFORMS THE OCTAL CONVERT FOR THE FILL STATEMENT. 32030000=07648000= IF THERE ARE ANY NON-OCTAL DIGITS, THIS PROCEDURE RETURNS 32035000=07648500= A ZERO AND THEN THE 3 LOW-ORDER BITS OF THE BAD DIGIT ARE 32040000=07649000= @@ -6425,21 +7474,37 @@ COMMENT "COCT" PERFORMS THE OCTAL CONVERT FOR THE FILL STATEMENT. 32030000 8 AND IT MUST BE RIGHT JUSTIFIED IN CD(CODEFILE). 32070000=07652000= ACC ADDRESS OF THE ACCUM WHERE ALPHA INFO IS KEPT. 32075000=07652500= ; 32080000=07653000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32082000 - REAL STREAM PROCEDURE COCT(N, SKBIT, ACC, CD); 32085000=07653500= + REAL PROCEDURE COCT(N, SKBIT, ACC, AX, CD, CX); 32085000=07653500= VALUE 32095000=07653500= - N, 32100000=07653500= - SKBIT; 32105000=07653500= + N, SKBIT, AX, CX; 32100000=07653500= + REAL 32105000=07653500= + N, SKBIT, AX, CX; 32106000 + ARRAY 32107000 + ACC, CD[0]; 32108000 BEGIN 32110000=07654000= - SI:= ACC; 32115000=07654500= - SI:= SI+6; 32120000=07654500= - DI:= CD; 32125000=07654500= - DS:= 8 LIT 6"00000000"; 32130000=07654500= - DI:= CD; 32135000=07655000= - SKIP SKBIT DB; 32140000=07655000= + STREAMLOCALS; 32112000 + STREAMSETSI(ACC, AX); 32115000=07654500= + STREAMSKIPSI(+6); 32120000=07654500= + STREAMSETDI(CD, CX); 32125000=07654500= + STREAMTRANSFERLIT(8, 6"00000000"); 32130000=07654500= + STREAMSETDI(CD, CX); 32135000=07655000= + STREAMSKIPDB(SKBIT); 32140000=07655000= TALLY:= 1; 32145000=07655000= - N(IF SC > 6"7" THEN TALLY:= 0;SKIP 3 SB;3 32150000=07656000= - (IF SB THEN DS:= 1 SET ELSE SKIP 1 DB;SKIP 1 SB)); 32155000=07656000= + THRU N DO 32150000=07656000= + BEGIN 32151000 + IF STREAMSCGTR(6"7") THEN 32152000 + TALLY:= 0; 32153000 + STREAMSKIPSB(3); 32154000 + THRU 3 DO 32155000=07656000= + BEGIN 32155500 + IF STREAMTESTSB THEN 32156000 + STREAMSETDB(1) 32156500 + ELSE 32157000 + STREAMSKIPDB(1); 32157500 + STREAMSKIPSB(1); 32158000 + END; 32158500 + END; 32159000 + 32159500 COCT:= TALLY 32160000=07657000= END COCT; 32165000=07657000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32166000 @@ -6448,19 +7513,15 @@ COMMENT "COCT" PERFORMS THE OCTAL CONVERT FOR THE FILL STATEMENT. 32030000 LABEL 32180000=07658000= L1; 32185000=07658000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32186000 - STREAM PROCEDURE ZEERO(D); 32190000=07658500= + DEFINE ZEERO(D, DX) = 32190000=07658500= BEGIN 32195000=07659000= - DI:= D; 32200000=07659500= - DS:= 8 LIT 6"00000000"; 32205000=07659500= - SI:= D; 32210000=07660000= - 31(32(DS:= WDS)); 32215000=07660000= - DS:= 30 WDS; 32220000=07660000= - END ZEERO; 32225000=07660500= + REPLACE POINTER(D[DX],0) BY 6"00000000" FOR 31*32+30+1 WORDS; 32200000 + END ZEERO #; 32225000=07660500= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32226000 STREAMTOG:= BOOLEAN(2); 32230000=07661000= SEGMENTSTART(TRUE); 32235000=07661500= IF STEPI ^= ASSIGNOP THEN 32240000=07662000= - ZEERO(CODE(1)) 32245000=07662500= + ZEERO(CODE, 1) 32245000=07662500= ELSE 32250000=07662500= BEGIN 32255000=07662500= FOR T2:= 1 STEP 1 UNTIL SIZE DO 32260000=07663000= @@ -6471,21 +7532,21 @@ COMMENT "COCT" PERFORMS THE OCTAL CONVERT FOR THE FILL STATEMENT. 32030000 IF ELCLASS ^= STRNGCON THEN 32285000=07665500= IF ELCLASS = ADOP AND(STEPI = NONLITNO OR ELCLASS = LITNO)32290000=07666500= THEN 32295000=07666500= - C:= C & ELBAT[I-1][1:21:1] 32300000=07667500= + C:= C & ELBAT[I-1][46:26:1] 32300000=07667500= ELSE 32305000=07667500= BEGIN 32310000=07667500= ERROR(302); 32315000=07667500= GO TO L1 32320000=07667500= END; 32325000=07667500= IF ELCLASS = STRNGCON AND COUNT = 8 THEN 32330000=07668000= - MOVECHARACTERS(8, ACCUM[1], 3, CODE(T2), 0) 32335000=07669000= + MOVECHARACTERS(8, ACCUM, 1, 3, CODE, T2, 0) 32335000=07669000= ELSE 32340000=07669000= - MOVE(1, C, CODE(T2)) 32345000=07669500= + CODE[T2]:= C 32345000=07669500= END 32350000=07670000= ELSE 32355000=07670000= - IF COUNT <= 19 AND ACCUM[1].[18:18] = 6"OCT" THEN 32360000=07670000= + IF COUNT <= 19 AND ACCUM[1].[29:18] = 6"OCT" THEN 32360000=07670000= BEGIN 32365000=07670500= - IF COCT(COUNT-3, 48-(COUNT-3)*3, ACCUM[1], CODE(T2)) = 0 32370000=07671500= + IF COCT(COUNT-3, 48-(COUNT-3)*3, ACCUM, 1, CODE, T2) = 0 32370000=07671500= THEN 32375000=07671500= FLAG(303) 32380000=07672500= END 32385000=07672500= @@ -6502,124 +7563,126 @@ COMMENT "COCT" PERFORMS THE OCTAL CONVERT FOR THE FILL STATEMENT. 32030000 L1: RIGHT(SIZE*4); 32440000=07675500= STREAMTOG:= FALSE; 32445000=07676000= SEGMENT(SIZE, 0); 32450000=07676500= - PROGDESCBLDR(ADDRSF, TRUE, SIZE, DDES); 32455000=07677000= + PROGDESCBLDR(ADDRSF, TRUE, SIZE, DDES); 32455000=07677000= END FILLSTMT; 32460000=07677500= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32465000=07677500= PROCEDURE STMT; 32470000=07711000= BEGIN 32475000=07712000= + REAL 32476000 + TVAR; 32478000 LABEL 32480000=07713000= L1, 32485000=07713000= - L2, 32490000=07713000= - L3, 32495000=07713000= - L4, 32500000=07713000= - L5, 32505000=07713000= - L6, 32510000=07713000= - L7, 32515000=07713000= - L8, 32520000=07713000= - L9, 32525000=07713000= - L10, 32530000=07714000= - L11, 32535000=07714000= - L12, 32540000=07714000= - L13, 32545000=07714000= - L14, 32550000=07714000= - L15, 32555000=07714000= - L16, 32560000=07714000= - L17, 32565000=07714000= - L18, 32570000=07714000= - L19, 32575000=07714000= - L20, 32580000=07715000= - L21, 32585000=07715000= - L22, 32590000=07715000= - L23, 32595000=07715000= - L24, 32600000=07715000= - L25, 32605000=07715000= - L26, 32610000=07715000= - L27, 32615000=07715000= - L28, 32620000=07715000= - L29, 32625000=07715000= - L30, 32630000=07716000= - L31, 32635000=07716000= - L32, 32640000=07716000= - L33, 32645000=07716000= - L34, 32650000=07716000= - L35, 32655000=07716000= - L36, 32660000=07716000= - L37, 32665000=07716000= - L38, 32670000=07716000= - L39, 32675000=07716000= - L40, 32680000=07717000= - L41, 32685000=07717000= - L42, 32690000=07717000= - L43, 32695000=07717000= - L44, 32700000=07717000= - L45, 32705000=07717000= - L46, 32710000=07717000= - L47, 32715000=07717000= - L48, 32720000=07717000= - L49, 32725000=07717000= - L50, 32730000=07718000= - L51, 32735000=07718000= - L52, 32740000=07718000= - L53, 32745000=07718000= - L54; 32750000=07718000= + L2, 32490000=07713000= + L3, 32495000=07713000= + L4, 32500000=07713000= + L5, 32505000=07713000= + L6, 32510000=07713000= + L7, 32515000=07713000= + L8, 32520000=07713000= + L9, 32525000=07713000= + L10, 32530000=07714000= + L11, 32535000=07714000= + L12, 32540000=07714000= + L13, 32545000=07714000= + L14, 32550000=07714000= + L15, 32555000=07714000= + L16, 32560000=07714000= + L17, 32565000=07714000= + L18, 32570000=07714000= + L19, 32575000=07714000= + L20, 32580000=07715000= + L21, 32585000=07715000= + L22, 32590000=07715000= + L23, 32595000=07715000= + L24, 32600000=07715000= + L25, 32605000=07715000= + L26, 32610000=07715000= + L27, 32615000=07715000= + L28, 32620000=07715000= + L29, 32625000=07715000= + L30, 32630000=07716000= + L31, 32635000=07716000= + L32, 32640000=07716000= + L33, 32645000=07716000= + L34, 32650000=07716000= + L35, 32655000=07716000= + L36, 32660000=07716000= + L37, 32665000=07716000= + L38, 32670000=07716000= + L39, 32675000=07716000= + L40, 32680000=07717000= + L41, 32685000=07717000= + L42, 32690000=07717000= + L43, 32695000=07717000= + L44, 32700000=07717000= + L45, 32705000=07717000= + L46, 32710000=07717000= + L47, 32715000=07717000= + L48, 32720000=07717000= + L49, 32725000=07717000= + L50, 32730000=07718000= + L51, 32735000=07718000= + L52, 32740000=07718000= + L53, 32745000=07718000= + L54; 32750000=07718000= SWITCH 32755000=07719000= S:= L1, 32760000=07720000= - L2, 32765000=07720000= - L3, 32770000=07720000= - L4, 32775000=07720000= - L5, 32780000=07720000= - L6, 32785000=07720000= - L7, 32790000=07720000= - L8, 32795000=07720000= - L9, 32800000=07720000= - L10, 32805000=07721000= - L11, 32810000=07721000= - L12, 32815000=07721000= - L13, 32820000=07721000= - L14, 32825000=07721000= - L15, 32830000=07721000= - L16, 32835000=07721000= - L17, 32840000=07721000= - L18, 32845000=07721000= - L19, 32850000=07721000= - L20, 32855000=07722000= - L21, 32860000=07722000= - L22, 32865000=07722000= - L23, 32870000=07722000= - L24, 32875000=07722000= - L25, 32880000=07722000= - L26, 32885000=07722000= - L27, 32890000=07722000= - L28, 32895000=07722000= - L29, 32900000=07722000= - L30, 32905000=07723000= - L31, 32910000=07723000= - L32, 32915000=07723000= - L33, 32920000=07723000= - L34, 32925000=07723000= - L35, 32930000=07723000= - L36, 32935000=07723000= - L37, 32940000=07723000= - L38, 32945000=07723000= - L39, 32950000=07723000= - L40, 32955000=07724000= - L41, 32960000=07724000= - L42, 32965000=07724000= - L43, 32970000=07724000= - L44, 32975000=07724000= - L45, 32980000=07724000= - L46, 32985000=07724000= - L47, 32990000=07724000= - L48, 32995000=07724000= - L49, 33000000=07724000= - L50, 33005000=07725000= - L51, 33010000=07725000= - L52, 33015000=07725000= - L53, 33020000=07725000= - L54; 33025000=07725000= + L2, 32765000=07720000= + L3, 32770000=07720000= + L4, 32775000=07720000= + L5, 32780000=07720000= + L6, 32785000=07720000= + L7, 32790000=07720000= + L8, 32795000=07720000= + L9, 32800000=07720000= + L10, 32805000=07721000= + L11, 32810000=07721000= + L12, 32815000=07721000= + L13, 32820000=07721000= + L14, 32825000=07721000= + L15, 32830000=07721000= + L16, 32835000=07721000= + L17, 32840000=07721000= + L18, 32845000=07721000= + L19, 32850000=07721000= + L20, 32855000=07722000= + L21, 32860000=07722000= + L22, 32865000=07722000= + L23, 32870000=07722000= + L24, 32875000=07722000= + L25, 32880000=07722000= + L26, 32885000=07722000= + L27, 32890000=07722000= + L28, 32895000=07722000= + L29, 32900000=07722000= + L30, 32905000=07723000= + L31, 32910000=07723000= + L32, 32915000=07723000= + L33, 32920000=07723000= + L34, 32925000=07723000= + L35, 32930000=07723000= + L36, 32935000=07723000= + L37, 32940000=07723000= + L38, 32945000=07723000= + L39, 32950000=07723000= + L40, 32955000=07724000= + L41, 32960000=07724000= + L42, 32965000=07724000= + L43, 32970000=07724000= + L44, 32975000=07724000= + L45, 32980000=07724000= + L46, 32985000=07724000= + L47, 32990000=07724000= + L48, 32995000=07724000= + L49, 33000000=07724000= + L50, 33005000=07725000= + L51, 33010000=07725000= + L52, 33015000=07725000= + L53, 33020000=07725000= + L54; 33025000=07725000= LABEL 33030000=07726000= AGAIN, 33035000=07726000= - EXIT; 33040000=07726000= + EXIT; 33040000=07726000= STACKCT:= 0; 33045000=07726990= AGAIN: 33050000=07727000= GO TO S[ELCLASS]; 33055000=07727000= @@ -6692,7 +7755,8 @@ L26: 33385000 L27: 33390000=07738000= L30: 33395000=07738000= L31: 33400000=07739000= - VARIABLE(FS); 33405000=07739000= + TVAR:= FS; 33402000 + VARIABLE(TVAR); 33405000=07739000= GO TO EXIT; 33410000=07739000= L32: 33415000=07741000= LABELR; 33420000=07741000= @@ -6743,9 +7807,7 @@ L54: 33640000 IF STEPI = DECLARATORS THEN 33645000=07767000= BEGIN 33650000=07768000= IF ELBAT[I].ADDRESS = STREAMV THEN 33655000=07768100= - IF STEPI = % 6 33660000=07768100= -LEFTPAREN 33665000=07768110= - THEN % 6 33670000=07768110= + IF STEPI = LEFTPAREN THEN % 6 33660000=07768100= BEGIN % 6 33675000=07768120= ELCLASS:= TABLE(I:= I-1); 33680000=07768130= COMPOUNDTAIL; 33685000=07768140= @@ -6771,7 +7833,7 @@ EXIT: 33765000 IF(GT1:= ELBAT[I].ADDRESS > 15 THEN ERR(98) 33785000=07994000= ELSE 33790000=07994000= BEGIN 33795000=07995000= - EMIT(ELBAT[I-1].ADDRESS & GT1[41:47:1] & GT1[36:44:3]); 33800000=07995000= + EMIT(ELBAT[I-1].ADDRESS & GT1[6:0:1] & GT1[11:3:3]); 33800000=07995000= STEPIT 33805000=07997000= END SCOPE STATEMENT; 33810000=07997000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%33815000=07997000= @@ -6808,7 +7870,7 @@ EXIT: 33765000 33970000=08018000= COMMENT PLUG EMITS EITHER AN OPERAND CALL ON A VARIABLE OR A CALL ON A 33975000=08018000= CONSTANT DEPENDING ON THE REQUIREMENTS; 33980000=08019000= - PROCEDURE PLUG(C, A); 33985000=08020000= + PROCEDURE PLUG(C, A); 33985000=08020000= VALUE 33990000=08020000= C, 33995000=08020000= A; 34000000=08020000= @@ -6819,7 +7881,7 @@ EXIT: 33765000 IF C THEN 34025000=08021000= EMITNUM(A) 34030000=08021000= ELSE 34035000=08021000= - EMITV(A, ADDRESS); 34040000=08021000= + EMITV(A.ADDRESS); 34040000=08021000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34045000=08021000= 34050000=08022000= COMMENT SIMPLE DETERMINES IF AN ARITHMETIC EXPRESSION IS + OR - A 34055000=08022000= @@ -6827,7 +7889,7 @@ EXIT: 33765000 ON ITS ACTIVITY. IT ALSO MAKES PROVISION FOR THE RESCAN 34065000=08024000= OF ELBAT (THIS IS THE ACTION WITH K - SEE CODE IN THE 34070000=08025000= TABLE ROUTINE FOR FURTHER DETAILS); 34075000=08026000= - BOOLEAN PROCEDURE SIMPLE(B, A, S); 34080000=08027000= + BOOLEAN PROCEDURE SIMPLE(B, A, S); 34080000=08027000= BOOLEAN 34085000=08027000= B, 34090000=08027000= S; 34095000=08027000= @@ -6845,8 +7907,8 @@ EXIT: 33765000 BEGIN 34155000=08033000= K:= K+1; 34160000=08033000= SIMPLE:= TRUE; 34165000=08033000= - ELBAT[I]:= 0 & COMMENTV[2:41:7] & K[16:37:11]; 34170000=08034000= - INFO[0, K]:= A:= C; 34175000=08035000= + ELBAT[I]:= 0 & COMMENTV[45:6:7] & K[31:10:11]; 34170000=08034000= + INFO[0, K]:= A:= C; 34175000=08035000= B:= TRUE 34180000=08035000= END 34185000=08036000= ELSE 34190000=08036000= @@ -6870,7 +7932,7 @@ EXIT: 33765000 ELSE 34280000=08045000= BEGIN 34285000=08045000= EMITL(2+L-BRET); 34290000=08046000= - EMITB(BBW, BUMPL, B); 34295000=08047000= + EMITB(BBW, BUMPL, B); 34295000=08047000= END; 34300000=08048000= EMITO(MUL); 34305000=08049000= EMIT(0) 34310000=08049000= @@ -6888,7 +7950,7 @@ EXIT: 33765000 BEGIN 34370000=08053000= CHECKER(VRET:= ALL); 34375000=08054000= ADDRES:= ALL.ADDRESS; 34380000=08055000= - FORMALV:= ALL.[9:2] = 2; 34385000=08056000= + FORMALV:= ALL.[38:2] = 2; 34385000=08056000= IF T:= ALL.CLASS > INTARRAYID OR T < BOOID OR GT1:= (T-BOOID) MOD 34390000=08058000= 4 < 1 34395000=08058000= THEN 34400000=08058000= @@ -6936,7 +7998,7 @@ EXIT: 33765000 ELSE 34610000=08076000= BEGIN 34615000=08076000= EMITL(2+L-VRET); 34620000=08077000= - EMITB(BBW, BUMPL, V); 34625000=08078000= + EMITB(BBW, BUMPL, V); 34625000=08078000= IF S THEN 34630000=08079000= EMITO(LOD) 34635000=08079000= END 34640000=08079000= @@ -6948,7 +8010,7 @@ EXIT: 33765000 BOOLEAN 34670000=08080000= NUMLE; 34675000=08080000= BEGIN 34680000=08081000= - PROCEDURE FIX(STORE, BACK, FORWART, START); 34685000=08082000= + PROCEDURE FIX(STORE, BACK, FORWART, START); 34685000=08082000= VALUE 34690000=08083000= STORE, 34695000=08083000= BACK, 34700000=08083000= @@ -6960,12 +8022,12 @@ EXIT: 33765000 FORWART, 34730000=08084000= START; 34735000=08084000= BEGIN 34740000=08085000= - EMITB(GET(FORWART-1), FORWART, START); 34745000=08086000= + EMITB(GET(FORWART-1), FORWART, START); 34745000=08086000= IF RETURNSTORE ^= 0 THEN 34750000=08088000= BEGIN 34755000=08088000= L:= STORE; 34760000=08089000= EMITNUM(B-BACK); 34765000=08089000= - EMITPAIR(RETURNSTORE, STD) 34770000=08090000= + EMITPAIR(RETURNSTORE, STD) 34770000=08090000= END 34775000=08090000= END FIX; 34780000=08090000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34785000=08090000= @@ -7007,12 +8069,12 @@ EXIT: 33765000 END 34965000=08111000= ELSE 34970000=08111000= REGO:= I; 34975000=08111000= - IF SIMPLEB:= SIMPLE(CONSTANB, B, SIGNB) AND 34980000=08114000= + IF SIMPLEB:= SIMPLE(CONSTANB, B, SIGNB) AND 34980000=08114000= (ELCLASS = UNTILV OR ELCLASS = WHILEV) 34985000=08114000= THEN 34990000=08114000= BEGIN 34995000=08114000= COMMENT WE HAVE A SIMPLE STEP FUNCTION; 35000000=08115000= - PLUG(CONSTANB, B); 35005000=08116000= + PLUG(CONSTANB, B); 35005000=08116000= END 35010000=08117000= ELSE 35015000=08117000= BEGIN 35020000=08117000= @@ -7033,10 +8095,9 @@ EXIT: 33765000 EMITO(BFW) 35095000=08125000= END; 35100000=08125000= EMITO(REAL(SIGNB)*32+ADD); 35105000=08126000= - EMITB(BFW, BACKFIX, L); 35110000=08127000= + EMITB(BFW, BACKFIX, L); 35110000=08127000= IF ELCLASS = UNTILV THEN 35115000=08129000= - BEGIN 35120000=08129000= - COMMENT STEP-UNTIL ELEMENT; 35125000=08129000= + BEGIN COMMENT STEP-UNTIL ELEMENT; 35120000=08129000= STORE(TRUE); 35130000=08130000= IF FORMALV THEN 35135000=08130000= CALL(OPDC); 35140000=08130000= @@ -7045,8 +8106,7 @@ EXIT: 33765000 TEST 35155000=08131000= END 35160000=08132000= ELSE 35165000=08132000= - BEGIN 35170000=08132000= - COMMENT STEP-WHILE ELEMENT; 35175000=08132000= + BEGIN COMMENT STEP-WHILE ELEMENT; 35170000=08132000= IF ELCLASS ^= WHILEV THEN 35180000=08133000= BEGIN 35185000=08134000= ERR(153); 35190000=08134000= @@ -7072,7 +8132,7 @@ EXIT: 33765000 COMMENT ONE EXPRESSION ELEMENT; 35290000=08144000= IF ELCLASS ^= COMMA THEN 35295000=08145000= BEGIN 35300000=08145000= - EMITB(BFW, BUMPL, L+2); 35305000=08146000= + EMITB(BFW, BUMPL, L+2); 35305000=08146000= BACKFIX:= L 35310000=08146000= END 35315000=08147000= ELSE 35320000=08147000= @@ -7094,7 +8154,7 @@ EXIT: 33765000 BEGIN 35400000=08154000= STEPIT; 35405000=08155000= FORLIST(TRUE); 35410000=08156000= - FIX(STOREFIX, BACKFIX, FORWARDBRANCH, STMTSTART) 35415000=08157000= + FIX(STOREFIX, BACKFIX, FORWARDBRANCH, STMTSTART) 35415000=08157000= END 35420000=08158000= ELSE 35425000=08158000= BEGIN 35430000=08158000= @@ -7115,23 +8175,24 @@ EXIT: 33765000 END 35505000=08167000= ELSE 35510000=08167000= BEGIN 35515000=08167000= - EMITB(BBW, BUMPL, BACKFIX); 35520000=08168000= + EMITB(BBW, BUMPL, BACKFIX); 35520000=08168000= RETURNSTORE:= 0 35525000=08168000= END; 35530000=08168000= STMTSTART:= FORWARDBRANCH; 35535000=08169000= B:= L; 35540000=08169000= CONSTANTCLEAN; 35545000=08170000= REGO:= L; 35550000=08170000= - FIX(STOREFIX, BACKFIX, FORWARDBRANCH, L) 35555000=08171000= + FIX(STOREFIX, BACKFIX, FORWARDBRANCH, L) 35555000=08171000= END; 35560000=08171000= EXIT: 35565000=08172000= END FORLIST; 35570000=08172000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%35575000=08172000= REAL 35580000=08173000= T1, 35585000=08173000= - T2, 35590000=08173000= - T3, 35595000=08173000= - T4; 35600000=08173000= + T2, 35590000=08173000= + T3, 35595000=08173000= + T4, 35600000=08173000= + TVAR; 35602000 NXTELBT:= 1; 35605000=08174000= I:= 0; 35610000=08174000= STEPIT; 35615000=08175000= @@ -7146,14 +8207,14 @@ EXIT: 33765000 IF FORMALV THEN 35660000=08179000= EMITN(ADDRES); 35665000=08179000= K:= 0; 35670000=08180000= - IF SIMPLE(CONSTANA, A, SIGNA) THEN 35675000=08181000= + IF SIMPLE(CONSTANA, A, SIGNA) THEN 35675000=08181000= IF ELCLASS = STEPV THEN 35680000=08182000= - IF SIMPLE(CONSTANB, B, SIGNB) THEN 35685000=08183000= + IF SIMPLE(CONSTANB, B, SIGNB) THEN 35685000=08183000= IF ELCLASS = UNTILV THEN 35690000=08184000= - IF SIMPLE(CONSTANC, Q, SIGNC) THEN 35695000=08185000= + IF SIMPLE(CONSTANC, Q, SIGNC) THEN 35695000=08185000= IF ELCLASS = DOV THEN 35700000=08186000= BEGIN 35705000=08187000= - PLUG(CONSTANA, A); 35710000=08188000= + PLUG(CONSTANA, A); 35710000=08188000= IF SIGNA THEN 35715000=08189000= EMITO(CHS); 35720000=08189000= RETURNSTORE:= BUMPL; 35725000=08190000= @@ -7161,18 +8222,21 @@ EXIT: 33765000 CONSTANTCLEAN; 35735000=08190000= STMTSTART:= L; 35740000=08191000= STEPIT; 35745000=08192000= - T1:= ((((4096*RETURNSTORE+STMTSTART)*2+REAL(CONSTANB))35750000=08196000= - *2+REAL(CONSTANC))*2+REAL(SIGNB))*2+REAL(SIGNC); 35755000=08197000= + T1:= ((((4096*RETURNSTORE+STMTSTART)*2 + 35750000=08196000= + REAL(CONSTANB))*2 + 35752000 + REAL(CONSTANC))*2 + 35755000=08197000= + REAL(SIGNB))*2 + 35756000 + REAL(SIGNC); 35758000 T2:= VRET; 35760000=08198000= T3:= B; 35765000=08199000= T4:= Q; 35770000=08200000= STMT; 35775000=08201000= - SIGNC:= BOOLEAN(T1.[47:1]); 35780000=08202000= - SIGNB:= BOOLEAN(T1.[46:1]); 35785000=08203000= - CONSTANC:= BOOLEAN(T1.[45:1]); 35790000=08204000= - CONSTANB:= BOOLEAN(T1.[44:1]); 35795000=08205000= - STMTSTART:= T1.[32:12]; 35800000=08206000= - RETURNSTORE:= T1.[20:12]; 35805000=08207000= + SIGNC:= BOOLEAN(T1.[0:1]); 35780000=08202000= + SIGNB:= BOOLEAN(T1.[1:1]); 35785000=08203000= + CONSTANC:= BOOLEAN(T1.[2:1]); 35790000=08204000= + CONSTANB:= BOOLEAN(T1.[3:1]); 35795000=08205000= + STMTSTART:= T1.[15:12]; 35800000=08206000= + RETURNSTORE:= T1.[27:12]; 35805000=08207000= VRET:= T2; 35810000=08208000= B:= T3; 35815000=08209000= Q:= T4; 35820000=08210000= @@ -7180,19 +8244,19 @@ EXIT: 33765000 IF FORMALV THEN 35830000=08212000= EMITN(ADDRES); 35835000=08212000= EMITV(ADDRES); 35840000=08212000= - PLUG(CONSTANB, B); 35845000=08213000= + PLUG(CONSTANB, B); 35845000=08213000= EMITO(IF SIGNB THEN SUB ELSE ADD); 35850000=08214000= - EMITB(BFW, RETURNSTORE, L); 35855000=08215000= + EMITB(BFW, RETURNSTORE, L); 35855000=08215000= STORE(TRUE); 35860000=08216000= IF FORMALV THEN 35865000=08217000= CALL(OPDC); 35870000=08217000= - PLUG(CONSTANC, Q); 35875000=08218000= + PLUG(CONSTANC, Q); 35875000=08218000= IF SIGNC THEN 35880000=08219000= EMITO(CHS); 35885000=08219000= SIMPLEB:= TRUE; 35890000=08220000= TEST; 35895000=08220000= EMITLNG; 35900000=08220000= - EMITB(BBC, BUMPL, STMTSTART); 35905000=08221000= + EMITB(BBC, BUMPL, STMTSTART); 35905000=08221000= GO TO EXIT 35910000=08222000= END; 35915000=08222000= I:= 2; 35920000=08223000= @@ -7206,7 +8270,8 @@ EXIT: 33765000 V:= L; 35960000=08227000= SIMPLEV:= FALSE; 35965000=08227000= FORMALV:= TRUE; 35970000=08227000= - VARIABLE(FR); 35975000=08228000= + TVAR:= FR; 35972000 + VARIABLE(TVAR); 35975000=08228000= EMITO(XCH); 35980000=08228000= VRET:= L; 35985000=08228000= EMITO(BFW); 35990000=08228000= @@ -7229,32 +8294,17 @@ EXIT: 36040000 EOF; 36075000=08999050= INTEGER 36080000=08999050= I, 36085000=08999050= - J, 36090000=08999050= - K; 36095000=08999050= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36096000 - STREAM PROCEDURE MOVE(N, F, T); 36100000=08999075= - VALUE 36105000=08999075= - N, 36110000=08999075= - T; 36115000=08999075= - BEGIN 36120000=08999100= - SI:= F; 36125000=08999100= - DI:= T; 36130000=08999100= - DS:= N WDS 36135000=08999100= - END MOVE; 36140000=08999100= + K; 36095000=08999050= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36142000 - J:= -1; 36145000=08999125= - READ(CODISK[NO])[EOF]; 36150000=08999150= - REED:= I:= FETCH(MKABS(CODISK(1))); 36155000=08999175= - K:= MKABS(CODE(0))-1); 36160000=08999200= - WHILE I-J > 30 DO 36165000=08999225= + READ(CODISK, 30, CODE)[EOF]; 36150000=08999150= + REED:= I:= CODELENGTH:= CODE[0]; % CURRENT CODE BUFFER LENGTH 36155000=08999175= + REPLACE POINTER(CODE[0],0) BY POINTER(CODE[1],0) FOR (K:=29) WORDS; 36160000=08999200= + WHILE I-K > 30 DO 36165000=08999225= BEGIN 36170000=08999250= - MOVE(30, CODISK(0), K); 36175000=08999275= + READ(CODISK, 30, CODE[K]); 36175000=08999275= K:= K+30; 36180000=08999275= - J:= J+30; 36185000=08999275= - READ(CODISK); 36190000=08999300= END; 36195000=08999325= - MOVE(I-J, CODISK(0), K); 36200000=08999350= - READ(CODISK)[EOF]; 36205000=08999375= + READ(CODISK, I-K, CODE[K]); 36200000=08999350= EOF: 36210000=08999425= END REED; 36215000=08999425= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36220000=08999425= @@ -7266,18 +8316,18 @@ EOF: 36210000 BEGIN 36250000=08999475= INTEGER 36255000=08999500= I, 36260000=08999500= - J; 36265000=08999500= + J; 36265000=08999500= I:= (L+7) DIV 4; 36270000=08999525= - MOVE(1, I, CODISK(0)); 36275000=08999550= - MOVE(29, CODE(0), CODISK(1)); 36280000=08999575= - WRITE(CODISK); 36285000=08999600= - J:= 29; 36290000=08999625= - WHILE I-J > 0 DO 36295000=08999650= + EBCDICBUF[0]:= I; 36275000=08999550= + REPLACE POINTER(EBCDICBUFF[1],0) BY POINTER(CODE[0],0) 36280000=08999575= + FOR (J:=29) WORDS; 36280100 + WRITE(CODISK, 30, EBCDICBUFF); 36285000=08999600= + WHILE I-J > 30 DO 36295000=08999650= BEGIN 36300000=08999675= - MOVE(30, CODE(J), CODISK(0)); 36305000=08999700= - WRITE(CODISK); 36310000=08999725= + WRITE(CODISK, 30, CODE[J]); 36305000=08999700= J:= J+30; 36315000=08999750= END; 36320000=08999775= + WRITE(CODISK, I-J, CODE[J]); 36320100 END RIGHT; 36325000=08999800= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36330000=08999800= 36335000=09000000= @@ -7287,22 +8337,18 @@ EOF: 36210000 PROCEDURE PROGRAM; 36355000=09003000= BEGIN 36360000=09004000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36362000 - STREAM PROCEDURE MDESC(WD, TOLOC); 36365000=09005000= - VALUE 36370000=09005000= - WD; 36375000=09005000= + DEFINE MDESC(WD, TOLOC) = 36365000=09005000= BEGIN 36380000=09006000= - DI:= LOC WD; 36385000=09006000= - DS:= SET; 36390000=09006000= - SI:= LOC WD; 36395000=09006000= - DI:= TOLOC; 36400000=09006000= - DS:= WDS 36405000=09006000= - END; 36410000=09006000= + TOLOC:= (WD) & (1)[47:1]; 36385000=09006000= + END #; 36410000=09006000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36412000 DEFINE 36415000=09024000= STARTINTRSC = 426 #; 36420000=09024000= LABEL 36425000=09025000= L1; 36430000=09025000= - LISTOG:= LISTER:= BOOLEAN(1-ERRORCOUNT.[46:1]); 36435000=09028000= + LISTOG:= LISTER:= BOOLEAN(1-ERRORCOUNT.[1:1]); 36435000=09028000= + SINGLTOG:= TRUE; % DEFAULT TO SINGLE-SPACED LISTING 36436000 + SAVETIME:= 30; % ON THE B5500, THE MCP WOULD SET THIS 36438000 36440000=09028010= COMMENT LISTOG IS NOT SET BY DEFAULT ON TIMESHARING; 36445000=09028010= NOHEADING:= TRUE; 36450000=09028050= @@ -7311,14 +8357,16 @@ COMMENT LISTOG IS NOT SET BY DEFAULT ON TIMESHARING; 36445000 BASENUM:= 10000; 36465000=09028920= ADDVALUE:= 1000; 36470000=09028920= NEWBASE:= TRUE; 36475000=09028920= - 36480000=09028930= COMMENT DEFAULT VALUES FOR "$SEQ" OPTION; 36485000=09028930= + 36486000 + OPEN(CARD); 36487000 + CARDRECSIZE:= CARD.MAXRECSIZE; 36488000 LASTUSED:= 4; % FOR INITIALIZATION. 36490000=09029000= NEXTINFO:= LASTINFO:= LASTSEQROW*256+LASTSEQUENCE+1; 36495000=09033000= PUTNBUMP(0); 36500000=09034000= GT1:= -6" "; 36505000=09034100= - MDESC(GT1, INFO[LASTSEQROW, LASTSEQUENCE]); 36510000=09034200= - BLANKET(0, INFO[LASTSEQROW, LASTSEQUENCE]); % FOR "$ CHECK".36515000=09034500= + MDESC(GT1, INFO[LASTSEQROW, LASTSEQUENCE]); 36510000=09034200= + BLANKET(0, INFO[LASTSEQROW, LASTSEQUENCE]); % FOR "$ CHECK". 36515000=09034500= READACARD; % INITIALIZATION OF NCR,FCR, AND LCR, AND 36520000=09035000= % READS FIRST CARD INTO CARD BUFFER. 36525000=09036000= LASTUSED:= 1; % ASSUMES CARD ONLY UNTIL TOLD DIFFERENTLY.36530000=09037000= @@ -7327,7 +8375,7 @@ COMMENT DEFAULT VALUES FOR "$SEQ" OPTION; 36485000 MRCLEAN:= TRUE; 36545000=09040000= 36550000=09040100= COMMENT START FILLING TABLES NEEDED TO COMPILE A PROGRAM; 36555000=09040100= - FILL TEN[**] WITH 3"1771110463422054", 3"1761332600326467", 36560000=09042000= + FILL TEN[*] WITH 3"1771110463422054", 3"1761332600326467", 36560000=09042000= 3"1751621340414205", 3"1742165630517247", 3"1732623176643120", 36565000=09043000= 3"1723370036413744", 3"1714266046116735", 3"1705343457542525", 36570000=09044000= 3"1676634373473252", 3"1651040347241213", 3"1641250441111455", 36575000=09045000= @@ -7371,302 +8419,292 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 36760000 THE FIRST ITEMS ARE STREAM RESERVED WORDS, 36765000=09082000= THEN ORDINARY RESERVED WORDS, 36770000=09083000= THEN INTRINSIC FUNCTIONS; 36775000=09084000= - FILL INFO[1, **] WITH 3"0670000600000002", 6"2SI000", %256 36780000=09086000= -3"0700001040000002", 6"2DI000", %258 36785000=09087000= -3"0710001460000002", 6"2CI000", %260 36790000=09088000= -3"0720001630000002", 6"5TALLY", %262 36795000=09089000= -3"0730000530000002", 6"2DS000", %264 36800000=09090000= -3"0740000150000002", 6"4SKIP0", %266 36805000=09091000= -3"0750001620000002", 6"4JUMP0", %268 36810000=09092000= -3"0760000740000002", 6"2DB000", %270 36815000=09093000= -3"0770000500000002", 6"2SB000", %272 36820000=09094000= -3"1010000730000002", 6"2SC000", %274 36825000=09095000= -3"1020001160000002", 6"3LOC00", %276 36830000=09096000= -3"1030001170000002", 6"2DC000", %278 36835000=09097000= -3"1040001430000002", 6"5LOCAL", %280 36840000=09098000= -3"1050000340000002", 6"3LIT00", %282 36845000=09099000= -3"1060001036400002", 6"3SET00", %284 36850000=09100000= -3"1060001066500002", 6"5RESET", %286 36855000=09101000= -3"1060001020500002", 6"3WDS00", %288 36860000=09102000= -3"1060001357700002", 6"3CHR00", %290 36865000=09103000= -3"1060001057300002", 6"3ADD00", %292 36870000=09104000= -3"1060001617200002", 6"3SUB00", %294 36875000=09105000= -3"1060000727600002", 6"3ZON00", %296 36880000=09106000= -3"1060000417500002", 6"3NUM00", %298 36885000=09107000= -3"1060000766700002", 6"3OCT00", %300 36890000=09108000= -3"1060000176600002", 6"3DEC00", %302 36895000=09109000= -3"1004000260000003", 6"6TOGGL", 6"E0000000", %304 36900000=09110000= -3"0130311060000002", 6"3ABS00", %307 36905000=09110001= -3"1360441030000002", 6"3AND00", %309 36910000=09112000= -3"0500000170000002", 6"5ARRAY", %311 36915000=09112100= -3"0660000000000002", 6"5BEGIN", %313 36920000=09112200= -3"0500000040000003", 6"7BOOLE", 6"AN000000", %315 36925000=09112300= -3"1070000000000003", 6"7COMME", 6"NT000000", %318 36930000=09112400= -3"0500000230000003", 6"6DEFIN", 6"E0000000", %321 36935000=09112500= -3"1410446000000002", 6"3DIV00", %324 36940000=09112600= -3"0550000000000002", 6"2DO000", %326 36945000=09112700= -3"0520000000000003", 6"6DOUBL", 6"E0000000", %328 36950000=09112800= -3"0570000000000002", 6"4ELSE0", %331 36955000=09112900= -3"0600000000000002", 6"3END00", %333 36960000=09113000= -3"1340442030000002", 6"3EQV00", %335 36965000=09113100= -3"0410000000000002", 6"5FALSE", %337 36970000=09113200= -3"0130310030000002", 6"4FLAG0", %339 36975000=09113300= -3"0530000000000002", 6"3FOR00", %341 36980000=09113400= -3"1100000000000003", 6"7FORWA", 6"RD ", %343 36985000=09113500= -3"0640000000000002", 6"2GO000", %346 36990000=09113600= -3"0130316060320002", 6"4HUNT0", %348 36995000=09113700= -3"0630000000000002", 6"2IF000", %350 37000000=09113800= -3"0500000040000002", 6"4REAL0", %352 37005000=09113900= -3"0500000050000003", 6"7INTEG", 6"ER000000", %354 37010000=09114000= -3"0500000070000002", 6"5LABEL", %357 37015000=09114100= -3"0360002000020003", 6"6MEMOR", 6"Y ", %359 37020000=09114200= -3"1410456000000002", 6"3MOD00", %362 37025000=09114300= -3"0500000140000003", 6"7MONIT", 6"OR ", %364 37030000=09114400= -3"0130301060000002", 6"4NABS0", %367 37035000=09114500= -3"0500000200000002", 6"4NAME0", %369 37040000=09114600= -3"0130304030000002", 6"5NFLAG", %371 37045000=09114700= -3"1320300230000002", 6"3NOT00", %373 37050000=09114800= -3"1350440430000002", 6"2OR000", %375 37055000=09114900= -3"0500000020000002", 6"4SAVE0", %377 37060000=09115000= -3"0500000010000002", 6"3OWN00", %379 37065000=09115100= -3"0460000000000003", 6"6POLIS", 6"H ", %381 37070000=09115200= -3"0500000160000003", 6"9PROCE", 6"DURE ", %384 37075000=09115300= -3"0130300000160011", 6"4SIGN0", %387 37080000=09115400= -3"2025", COMMENT DUP ; 37085000=09115500= - 3"0000", 37090000=09115600= - COMMENT LITC 0; 37095000=09115600= - 3"0425", 37100000=09115700= - COMMENT NEQ ; 37105000=09115700= - 3"1025", 37110000=09115800= - COMMENT XCH ; 37115000=09115800= - 3"0155", 37120000=09115900= - COMMENT DIA 1; 37125000=09115900= - 3"0161", 37130000=09116000= - COMMENT DIB 1; 37135000=09116000= - 3"0165", 37140000=09116100= - COMMENT TRB 1; 37145000=09116100= - 3"1110000000000002", 6"4STEP0", %396 37150000=09116200= -3"0500000220000003", 6"6STREA", 6"M ", %398 37155000=09116300= -3"0500000110000003", 6"#SUBRO", 6"UTINE ", %401 37160000=09116400= -3"0500000150000003", 6"6SWITC", 6"H ", %404 37165000=09116500= -3"1120000000000002", 6"4THEN0", %407 37170000=09116600= -3"1130000000000002", 6"2TO000", %409 37175000=09116700= -3"0410000010000002", 6"4TRUE0", %411 37180000=09116800= -3"0560000000000002", 6"5UNTIL", %413 37185000=09116900= -3"1140000000000002", 6"5VALUE", %415 37190000=09117000= -3"0540000000000002", 6"5WHILE", %417 37195000=09117100= -3"1310440200000002", 6"3ADD00", %419 37200000=09117200= -3"1310240270000002", 6"3BRT00", %421 37205000=09117300= -3"1310453050000002", 6"3CCX00", %423 37210000=09117400= -3"1310442500000002", 6"3CDC00", %425 37215000=09117500= -3"1310457050000002", 6"3CFX00", %427 37220000=09117600= -3"1310302060000002", 6"3CHS00", %429 37225000=09117700= -3"1310440500000002", 6"3COC00", %431 37230000=09117800= -3"1310242020000002", 6"3COM00", %433 37235000=09117900= -3"1310302060000002", 6"3CSB00", %435 37240000=09118000= -3"1310240120000002", 6"3DEL00", %437 37245000=09118100= -3"1260100550000002", 6"3DIA00", %439 37250000=09118200= -3"1260100610000002", 6"3DIB00", %441 37255000=09118300= -3"1310344050000002", 6"3DUP00", %443 37260000=09118400= -3"1310451050000002", 6"3EQL00", %445 37265000=09118500= -3"1310443050000002", 6"3FCX00", %447 37270000=09118600= -3"1310447050000002", 6"3FFX00", %449 37275000=09118700= -3"1310440250000002", 6"3GEQ00", %451 37280000=09118800= -3"1310440450000002", 6"3GTR00", %453 37285000=09118900= -3"1310104420000002", 6"3HLB00", %455 37290000=09119000= -3"1310104420000002", 6"3HP200", %457 37295000=09119050= -3"1310446000000002", 6"3IDV00", %459 37300000=09119100= -3"1310251020000002", 6"3IIO00", %461 37305000=09119200= -3"1310250220000002", 6"3INA00", %463 37310000=09119300= -3"1310250420000002", 6"3INB00", %465 37315000=09119400= -3"1310100420000002", 6"3INI00", %467 37320000=09119500= -3"1400440300000002", 6"3INX00", %469 37325000=09119600= -3"1310244220000002", 6"3IOR00", %471 37330000=09119700= -3"1310250220000002", 6"3IP100", %473 37335000=09119800= -3"1310250420000002", 6"3IP200", %475 37340000=09119900= -3"1310145060000002", 6"3IPS00", %477 37345000=09120000= -3"1310410240000002", 6"3ISD00", %479 37350000=09120100= -3"1310450440000002", 6"3ISN00", %481 37355000=09120200= -3"1310100420000002", 6"3ITI00", %483 37360000=09120300= -3"1310450250000002", 6"3LEQ00", %485 37365000=09120400= -3"1310505300000002", 6"3LLL00", %487 37370000=09120500= -3"1310441030000002", 6"3LND00", %489 37375000=09120600= -3"1310300230000002", 6"3LNG00", %491 37380000=09120700= -3"1310304040000002", 6"3LOD00", %493 37385000=09120800= -3"1310440430000002", 6"3LOR00", %495 37390000=09120900= -3"1310442030000002", 6"3LQV00", %497 37395000=09121000= -3"1310450450000002", 6"3LSS00", %499 37400000=09121100= -3"1310101100000002", 6"3MKS00", %501 37405000=09121200= -3"1310441000000002", 6"3MUL00", %503 37410000=09121300= -3"1310441050000002", 6"3NEQ00", %505 37415000=09121400= -3"1310100130000002", 6"3NOP00", %507 37420000=09121500= -3"0650006550000002", 6"6SCOPO", 6"N......."; %509 37425000=09121600= - FILL INFO[2, **] WITH 3"131030000020004"., 6"3RDF00", %512 37430000=09121700= -3"0000", COMMENT LITC 0; 37435000=09121800= - 3"2141", 37440000=09121900= - COMMENT FXS ; 37445000=09121900= - 3"131030000020004"., 6"3RDS00", %516 37450000=09122000= -3"0004", COMMENT LITC 1; 37455000=09122100= - 3"2141", 37460000=09122200= - COMMENT FXS ; 37465000=09122200= - 3"1310456000000002", 6"3RDV00", %520 37470000=09122300= -3"1310304030000002", 6"3RFB00", %522 37475000=09122400= -3"1310240470000002", 6"3RND00", %524 37480000=09122500= -3"1310145060000002", 6"3RRR00", %526 37485000=09122600= -3"1310311060000002", 6"3RSB00", %528 37490000=09122700= -3"1310242470000002", 6"3RSP00", %530 37495000=09122800= -3"1310141020000002", 6"3RTM00", %532 37500000=09122900= -3"1310240470000002", 6"3RTN00", %534 37505000=09123000= -3"1310141020000002", 6"3RTR00", %536 37510000=09123100= -3"1310242470000002", 6"3RTS00", %538 37515000=09123200= -3"1310310030000002", 6"3SFB00", %540 37520000=09123300= -3"1310442040000002", 6"3SND00", %542 37525000=09123400= -3"1310301060000002", 6"3SSB00", %544 37530000=09123500= -3"1310316060000002", 6"3SSF00", %546 37535000=09123600= -3"1310301060000002", 6"3SSN00", %548 37540000=09123700= -3"1310311060000002", 6"3SSP00", %550 37545000=09123800= -3"1310401040000002", 6"3STD00", %552 37550000=09123900= -3"1310240000020004", 6"3STF00", %554 37555000=09124000= -3"0010", COMMENT LITC 2; 37560000=09124100= - 3"2141", 37565000=09124200= - COMMENT FXS ; 37570000=09124200= - 3"1310442040000002", 6"3STN00", %558 37575000=09124300= -3"1310240000020004", 6"3STS00", %560 37580000=09124400= -3"0014", COMMENT LITC 3; 37585000=09124500= - 3"2141", 37590000=09124600= - COMMENT FXS ; 37595000=09124600= - 3"1310440600000002", 6"3SUB00", %564 37600000=09124700= -3"1310344060000002", 6"3TFB00", %566 37605000=09124800= -3"1270440650000002", 6"3TFR00", %568 37610000=09124900= -3"1310155060000002", 6"3TIO00", %570 37615000=09125000= -3"1310344060000002", 6"3TOP00", %572 37620000=09125050= -3"1270440650000002", 6"3TRB00", %574 37625000=09125100= -3"1300300000000002", 6"3VFI00", %576 37630000=09125200= -3"1310502050000002", 6"3XCH00", %578 37635000=09125300= -3"1310101070000002", 6"3XIT00", %580 37640000=09125400= -3"1310105020000002", 6"3ZIP00", %582 37645000=09125500= -3"1310105020000002", 6"3ZP100", %584 37650000=09125600= -3"1270500750000002", 6"3CFE00", %586 37655000=09125700= -3"1270500750000002", 6"3FCE00", %588 37660000=09125800= -3"1270500710000002", 6"3CFL00", %590 37665000=09125900= -3"1270500710000002", 6"3FCL00", %592 37670000=09126000= -3"1310440210000002", 6"3DLA00", %594 37675000=09126100= -3"1310440210000002", 6"3ADL00", %596 37680000=09126200= -3"1310440610000002", 6"3DLS00", %598 37685000=09126300= -3"1310440610000002", 6"3SDL00", %600 37690000=09126400= -3"1310441010000002", 6"3DLM00", %602 37695000=09126500= -3"1310441010000002", 6"3MDL00", %604 37700000=09126600= -3"1310442010000002", 6"3DLD00", %606 37705000=09126700= -3"1310442010000002", 6"3DDL00", %608 37710000=09126800= -3"0460000000000002", 6"1P0000", %610 37715000=09126900= -3"0360002000020002", 6"1M0000", %612 37720000=09127000= -3"1310240000020004", 6"3PRL00", %614 37725000=09127100= -3"0111", COMMENT PRL; 37730000=09127200= - 3"0055", 37735000=09127300= - COMMENT NOP; 37740000=09127300= - 3"0650006610000003", 6"7SCOPO", 6"FF......", 37745000=09127400= - %618 37750000=09127400= -3"0030000000040003", 6"2LB000", 6"[# ", %621 37755000=09127500= -3"0030000000040003", 6"2RB000", 6"]# ", %624 37760000=09127600= -3"0030000000040003", 6"3GTR00", 6"># ", %627 37765000=09127700= -3"0030000000040003", 6"3GEQ00", 6"}# ", %630 37770000=09127800= -3"0030000000040003", 6"3EQL00", 6"=# ", %633 37775000=09127900= -3"0030000000040003", 6"3NEQ00", 6"!# ", %636 37780000=09128000= -3"0030000000040003", 6"3LEQ00", 6"{# ", %639 37785000=09128100= -3"0030000000040003", 6"3LSS00", 6"<# ", %642 37790000=09128200= -3"0030000000040003", 6"5TIMES", 6"|# ", %645 37795000=09128300= -3"1310117530000002", 6"3SCI00", %688 37800000=09128400= -3"1310117540000002", 6"3SAN00", %650 37805000=09128500= -3"1310157730000002", 6"3SCS00", %652 37810000=09128600= -0; % END OF INFO FILL. 37815000=09133700= + FILL INFO[1, *] WITH 36780000=09086000= + 3"0670000600000002", 6"2SI000", %256 36782000 + 3"0700001040000002", 6"2DI000", %258 36785000=09087000= + 3"0710001460000002", 6"2CI000", %260 36790000=09088000= + 3"0720001630000002", 6"5TALLY", %262 36795000=09089000= + 3"0730000530000002", 6"2DS000", %264 36800000=09090000= + 3"0740000150000002", 6"4SKIP0", %266 36805000=09091000= + 3"0750001620000002", 6"4JUMP0", %268 36810000=09092000= + 3"0760000740000002", 6"2DB000", %270 36815000=09093000= + 3"0770000500000002", 6"2SB000", %272 36820000=09094000= + 3"1010000730000002", 6"2SC000", %274 36825000=09095000= + 3"1020001160000002", 6"3LOC00", %276 36830000=09096000= + 3"1030001170000002", 6"2DC000", %278 36835000=09097000= + 3"1040001430000002", 6"5LOCAL", %280 36840000=09098000= + 3"1050000340000002", 6"3LIT00", %282 36845000=09099000= + 3"1060001036400002", 6"3SET00", %284 36850000=09100000= + 3"1060001066500002", 6"5RESET", %286 36855000=09101000= + 3"1060001020500002", 6"3WDS00", %288 36860000=09102000= + 3"1060001357700002", 6"3CHR00", %290 36865000=09103000= + 3"1060001057300002", 6"3ADD00", %292 36870000=09104000= + 3"1060001617200002", 6"3SUB00", %294 36875000=09105000= + 3"1060000727600002", 6"3ZON00", %296 36880000=09106000= + 3"1060000417500002", 6"3NUM00", %298 36885000=09107000= + 3"1060000766700002", 6"3OCT00", %300 36890000=09108000= + 3"1060000176600002", 6"3DEC00", %302 36895000=09109000= + 3"1004000260000003", 6"6TOGGL", 6"E0000000", %304 36900000=09110000= + 3"0130311060000002", 6"3ABS00", %307 36905000=09110001= + 3"1360441030000002", 6"3AND00", %309 36910000=09112000= + 3"0500000170000002", 6"5ARRAY", %311 36915000=09112100= + 3"0660000000000002", 6"5BEGIN", %313 36920000=09112200= + 3"0500000040000003", 6"7BOOLE", 6"AN000000", %315 36925000=09112300= + 3"1070000000000003", 6"7COMME", 6"NT000000", %318 36930000=09112400= + 3"0500000230000003", 6"6DEFIN", 6"E0000000", %321 36935000=09112500= + 3"1410446000000002", 6"3DIV00", %324 36940000=09112600= + 3"0550000000000002", 6"2DO000", %326 36945000=09112700= + 3"0520000000000003", 6"6DOUBL", 6"E0000000", %328 36950000=09112800= + 3"0570000000000002", 6"4ELSE0", %331 36955000=09112900= + 3"0600000000000002", 6"3END00", %333 36960000=09113000= + 3"1340442030000002", 6"3EQV00", %335 36965000=09113100= + 3"0410000000000002", 6"5FALSE", %337 36970000=09113200= + 3"0130310030000002", 6"4FLAG0", %339 36975000=09113300= + 3"0530000000000002", 6"3FOR00", %341 36980000=09113400= + 3"1100000000000003", 6"7FORWA", 6"RD ", %343 36985000=09113500= + 3"0640000000000002", 6"2GO000", %346 36990000=09113600= + 3"0130316060320002", 6"4HUNT0", %348 36995000=09113700= + 3"0630000000000002", 6"2IF000", %350 37000000=09113800= + 3"0500000040000002", 6"4REAL0", %352 37005000=09113900= + 3"0500000050000003", 6"7INTEG", 6"ER000000", %354 37010000=09114000= + 3"0500000070000002", 6"5LABEL", %357 37015000=09114100= + 3"0360002000020003", 6"6MEMOR", 6"Y ", %359 37020000=09114200= + 3"1410456000000002", 6"3MOD00", %362 37025000=09114300= + 3"0500000140000003", 6"7MONIT", 6"OR ", %364 37030000=09114400= + 3"0130301060000002", 6"4NABS0", %367 37035000=09114500= + 3"0500000200000002", 6"4NAME0", %369 37040000=09114600= + 3"0130304030000002", 6"5NFLAG", %371 37045000=09114700= + 3"1320300230000002", 6"3NOT00", %373 37050000=09114800= + 3"1350440430000002", 6"2OR000", %375 37055000=09114900= + 3"0500000020000002", 6"4SAVE0", %377 37060000=09115000= + 3"0500000010000002", 6"3OWN00", %379 37065000=09115100= + 3"0460000000000003", 6"6POLIS", 6"H ", %381 37070000=09115200= + 3"0500000160000003", 6"9PROCE", 6"DURE ", %384 37075000=09115300= + 3"0130300000160011", 6"4SIGN0", %387 37080000=09115400= + 3"2025", COMMENT DUP ; 37085000=09115500= + 3"0000", COMMENT LITC 0; 37090000=09115600= + 3"0425", COMMENT NEQ ; 37100000=09115700= + 3"1025", COMMENT XCH ; 37110000=09115800= + 3"0155", COMMENT DIA 1; 37120000=09115900= + 3"0161", COMMENT DIB 1; 37130000=09116000= + 3"0165", COMMENT TRB 1; 37140000=09116100= + 3"1110000000000002", 6"4STEP0", %396 37150000=09116200= + 3"0500000220000003", 6"6STREA", 6"M ", %398 37155000=09116300= + 3"0500000110000003", 6"#SUBRO", 6"UTINE ", %401 37160000=09116400= + 3"0500000150000003", 6"6SWITC", 6"H ", %404 37165000=09116500= + 3"1120000000000002", 6"4THEN0", %407 37170000=09116600= + 3"1130000000000002", 6"2TO000", %409 37175000=09116700= + 3"0410000010000002", 6"4TRUE0", %411 37180000=09116800= + 3"0560000000000002", 6"5UNTIL", %413 37185000=09116900= + 3"1140000000000002", 6"5VALUE", %415 37190000=09117000= + 3"0540000000000002", 6"5WHILE", %417 37195000=09117100= + 3"1310440200000002", 6"3ADD00", %419 37200000=09117200= + 3"1310240270000002", 6"3BRT00", %421 37205000=09117300= + 3"1310453050000002", 6"3CCX00", %423 37210000=09117400= + 3"1310442500000002", 6"3CDC00", %425 37215000=09117500= + 3"1310457050000002", 6"3CFX00", %427 37220000=09117600= + 3"1310302060000002", 6"3CHS00", %429 37225000=09117700= + 3"1310440500000002", 6"3COC00", %431 37230000=09117800= + 3"1310242020000002", 6"3COM00", %433 37235000=09117900= + 3"1310302060000002", 6"3CSB00", %435 37240000=09118000= + 3"1310240120000002", 6"3DEL00", %437 37245000=09118100= + 3"1260100550000002", 6"3DIA00", %439 37250000=09118200= + 3"1260100610000002", 6"3DIB00", %441 37255000=09118300= + 3"1310344050000002", 6"3DUP00", %443 37260000=09118400= + 3"1310451050000002", 6"3EQL00", %445 37265000=09118500= + 3"1310443050000002", 6"3FCX00", %447 37270000=09118600= + 3"1310447050000002", 6"3FFX00", %449 37275000=09118700= + 3"1310440250000002", 6"3GEQ00", %451 37280000=09118800= + 3"1310440450000002", 6"3GTR00", %453 37285000=09118900= + 3"1310104420000002", 6"3HLB00", %455 37290000=09119000= + 3"1310104420000002", 6"3HP200", %457 37295000=09119050= + 3"1310446000000002", 6"3IDV00", %459 37300000=09119100= + 3"1310251020000002", 6"3IIO00", %461 37305000=09119200= + 3"1310250220000002", 6"3INA00", %463 37310000=09119300= + 3"1310250420000002", 6"3INB00", %465 37315000=09119400= + 3"1310100420000002", 6"3INI00", %467 37320000=09119500= + 3"1400440300000002", 6"3INX00", %469 37325000=09119600= + 3"1310244220000002", 6"3IOR00", %471 37330000=09119700= + 3"1310250220000002", 6"3IP100", %473 37335000=09119800= + 3"1310250420000002", 6"3IP200", %475 37340000=09119900= + 3"1310145060000002", 6"3IPS00", %477 37345000=09120000= + 3"1310410240000002", 6"3ISD00", %479 37350000=09120100= + 3"1310450440000002", 6"3ISN00", %481 37355000=09120200= + 3"1310100420000002", 6"3ITI00", %483 37360000=09120300= + 3"1310450250000002", 6"3LEQ00", %485 37365000=09120400= + 3"1310505300000002", 6"3LLL00", %487 37370000=09120500= + 3"1310441030000002", 6"3LND00", %489 37375000=09120600= + 3"1310300230000002", 6"3LNG00", %491 37380000=09120700= + 3"1310304040000002", 6"3LOD00", %493 37385000=09120800= + 3"1310440430000002", 6"3LOR00", %495 37390000=09120900= + 3"1310442030000002", 6"3LQV00", %497 37395000=09121000= + 3"1310450450000002", 6"3LSS00", %499 37400000=09121100= + 3"1310101100000002", 6"3MKS00", %501 37405000=09121200= + 3"1310441000000002", 6"3MUL00", %503 37410000=09121300= + 3"1310441050000002", 6"3NEQ00", %505 37415000=09121400= + 3"1310100130000002", 6"3NOP00", %507 37420000=09121500= + 3"0650006550000002", 6"6SCOPO", 6"N......."; %509 37425000=09121600= + FILL INFO[2, *] WITH 37430000=09121700= + 3"131030000020004", 6"3RDF00", %512 37432000 + 3"0000", COMMENT LITC 0; 37435000=09121800= + 3"2141", COMMENT FXS ; 37440000=09121900= + 3"131030000020004", 6"3RDS00", %516 37450000=09122000= + 3"0004", COMMENT LITC 1; 37455000=09122100= + 3"2141", COMMENT FXS ; 37460000=09122200= + 3"1310456000000002", 6"3RDV00", %520 37470000=09122300= + 3"1310304030000002", 6"3RFB00", %522 37475000=09122400= + 3"1310240470000002", 6"3RND00", %524 37480000=09122500= + 3"1310145060000002", 6"3RRR00", %526 37485000=09122600= + 3"1310311060000002", 6"3RSB00", %528 37490000=09122700= + 3"1310242470000002", 6"3RSP00", %530 37495000=09122800= + 3"1310141020000002", 6"3RTM00", %532 37500000=09122900= + 3"1310240470000002", 6"3RTN00", %534 37505000=09123000= + 3"1310141020000002", 6"3RTR00", %536 37510000=09123100= + 3"1310242470000002", 6"3RTS00", %538 37515000=09123200= + 3"1310310030000002", 6"3SFB00", %540 37520000=09123300= + 3"1310442040000002", 6"3SND00", %542 37525000=09123400= + 3"1310301060000002", 6"3SSB00", %544 37530000=09123500= + 3"1310316060000002", 6"3SSF00", %546 37535000=09123600= + 3"1310301060000002", 6"3SSN00", %548 37540000=09123700= + 3"1310311060000002", 6"3SSP00", %550 37545000=09123800= + 3"1310401040000002", 6"3STD00", %552 37550000=09123900= + 3"1310240000020004", 6"3STF00", %554 37555000=09124000= + 3"0010", COMMENT LITC 2; 37560000=09124100= + 3"2141", COMMENT FXS ; 37565000=09124200= + 3"1310442040000002", 6"3STN00", %558 37575000=09124300= + 3"1310240000020004", 6"3STS00", %560 37580000=09124400= + 3"0014", COMMENT LITC 3; 37585000=09124500= + 3"2141", COMMENT FXS ; 37590000=09124600= + 3"1310440600000002", 6"3SUB00", %564 37600000=09124700= + 3"1310344060000002", 6"3TFB00", %566 37605000=09124800= + 3"1270440650000002", 6"3TFR00", %568 37610000=09124900= + 3"1310155060000002", 6"3TIO00", %570 37615000=09125000= + 3"1310344060000002", 6"3TOP00", %572 37620000=09125050= + 3"1270440650000002", 6"3TRB00", %574 37625000=09125100= + 3"1300300000000002", 6"3VFI00", %576 37630000=09125200= + 3"1310502050000002", 6"3XCH00", %578 37635000=09125300= + 3"1310101070000002", 6"3XIT00", %580 37640000=09125400= + 3"1310105020000002", 6"3ZIP00", %582 37645000=09125500= + 3"1310105020000002", 6"3ZP100", %584 37650000=09125600= + 3"1270500750000002", 6"3CFE00", %586 37655000=09125700= + 3"1270500750000002", 6"3FCE00", %588 37660000=09125800= + 3"1270500710000002", 6"3CFL00", %590 37665000=09125900= + 3"1270500710000002", 6"3FCL00", %592 37670000=09126000= + 3"1310440210000002", 6"3DLA00", %594 37675000=09126100= + 3"1310440210000002", 6"3ADL00", %596 37680000=09126200= + 3"1310440610000002", 6"3DLS00", %598 37685000=09126300= + 3"1310440610000002", 6"3SDL00", %600 37690000=09126400= + 3"1310441010000002", 6"3DLM00", %602 37695000=09126500= + 3"1310441010000002", 6"3MDL00", %604 37700000=09126600= + 3"1310442010000002", 6"3DLD00", %606 37705000=09126700= + 3"1310442010000002", 6"3DDL00", %608 37710000=09126800= + 3"0460000000000002", 6"1P0000", %610 37715000=09126900= + 3"0360002000020002", 6"1M0000", %612 37720000=09127000= + 3"1310240000020004", 6"3PRL00", %614 37725000=09127100= + 3"0111", COMMENT PRL; 37730000=09127200= + 3"0055", COMMENT NOP; 37735000=09127300= + 3"0650006610000003", 6"7SCOPO", 6"FF......", %618 37745000=09127400= + 3"0030000000040003", 6"2LB000", 6"[# ", %621 37755000=09127500= + 3"0030000000040003", 6"2RB000", 6"]# ", %624 37760000=09127600= + 3"0030000000040003", 6"3GTR00", 6"># ", %627 37765000=09127700= + 3"0030000000040003", 6"3GEQ00", 6"}# ", %630 37770000=09127800= + 3"0030000000040003", 6"3EQL00", 6"=# ", %633 37775000=09127900= + 3"0030000000040003", 6"3NEQ00", 6"!# ", %636 37780000=09128000= + 3"0030000000040003", 6"3LEQ00", 6"{# ", %639 37785000=09128100= + 3"0030000000040003", 6"3LSS00", 6"<# ", %642 37790000=09128200= + 3"0030000000040003", 6"5TIMES", 6"|# ", %645 37795000=09128300= + 3"1310117530000002", 6"3SCI00", %688 37800000=09128400= + 3"1310117540000002", 6"3SAN00", %650 37805000=09128500= + 3"1310157730000002", 6"3SCS00", %652 37810000=09128600= + 0;% END OF INFO FILL. 37815000=09133700= FOR GT2:= 256 STEP GT1.LINK WHILE NOT BOOLEAN(GT1.FORMAL) DO 37820000=09133800= - PUT((GT1:= TAKE(GT2)) & GT2[35:35:13], GT2); 37825000=09133900= + PUT((GT1:= TAKE(GT2)) & GT2[12:12:13], GT2); 37825000=09133900= FOR GT1:= GT2 STEP GT2.LINK WHILE GT2.LINK ^= 0 DO 37830000=09134000= PUT((GT2:= TAKE(GT1)) & 37835000=09134200= - STACKHEAD[GT3:= TAKE(GT1+1).[12:36] MOD 125][35:35:13], 37840000=09134200= + STACKHEAD[GT3:= TAKE(GT1+1).[35:36] MOD 125][12:12:13], 37840000=09134200= STACKHEAD[GT3]:= GT1); 37845000=09134200= 37850000=09197000= COMMENT THIS IS THE FILL FOR THE SPECIAL CHARACTORS; 37855000=09197000= FILL SPECIAL[*] WITH 37860000=09198000= - OCT1200000000200000, COMMENT #; OCT0000000000100000, COMMENT @; 37865000=09199000= - OCT0000000000000000, OCT1160000000120000, COMMENT :; 37870000=09200000= - OCT1370440450002763, COMMENT >; OCT1370440250002662, COMMENT }; 37875000=09201000= - OCT1400440200000000, COMMENT +; OCT0000000000000000, 37880000=09202000= - OCT1220000000060000, COMMENT .; OCT1210000000000000, COMMENT [; 37885000=09203000= - OCT1250000000000000, COMMENT &; OCT0450000000000000, COMMENT (; 37890000=09204000= - OCT1370450450003571, COMMENT <; OCT1330401040000000, COMMENT ~; 37895000=09205000= - OCT1410441000000000, COMMENT |; OCT0000000000000000, 37900000=09206000= - OCT0000000000040000, COMMENT $; OCT0470000000000000, COMMENT *; 37905000=09207000= - OCT1400440600000000, COMMENT -; OCT1240000000160000, COMMENT ); 37910000=09208000= - OCT0620000000000000, COMMENT .,; OCT1370450250003470, COMMENT {; 37915000=09209000= - OCT0000000000000000, OCT1410442000000000, COMMENT /; 37920000=09210000= - OCT1170000000000000, COMMENT ,; OCT0000000000020000, COMMENT %; 37925000=09211000= - OCT1370441050002561, COMMENT !; OCT1370451050002460, COMMENT =; 37930000=09212000= - OCT1230000000000000, COMMENT ]; OCT0000000000140000, COMMENT "; 37935000=09213000= + 3"1200000000200000", COMMENT #; 3"0000000000100000", COMMENT @; 37865000=09199000= + 3"0000000000000000", 3"1160000000120000", COMMENT :; 37870000=09200000= + 3"1370440450002763", COMMENT >; 3"1370440250002662", COMMENT >=; 37875000=09201000= + 3"1400440200000000", COMMENT +; 3"0000000000000000", 37880000=09202000= + 3"1220000000060000", COMMENT .; 3"1210000000000000", COMMENT [; 37885000=09203000= + 3"1250000000000000", COMMENT &; 3"0450000000000000", COMMENT (; 37890000=09204000= + 3"1370450450003571", COMMENT <; 3"1330401040000000", COMMENT <-; 37895000=09205000= + 3"1410441000000000", COMMENT x; 3"0000000000000000", 37900000=09206000= + 3"0000000000040000", COMMENT $; 3"0470000000000000", COMMENT *; 37905000=09207000= + 3"1400440600000000", COMMENT -; 3"1240000000160000", COMMENT ); 37910000=09208000= + 3"0620000000000000", COMMENT .,; 3"1370450250003470", COMMENT <=; 37915000=09209000= + 3"0000000000000000", 3"1410442000000000", COMMENT /; 37920000=09210000= + 3"1170000000000000", COMMENT ,; 3"0000000000020000", COMMENT %; 37925000=09211000= + 3"1370441050002561", COMMENT ^=; 3"1370451050002460", COMMENT =; 37930000=09212000= + 3"1230000000000000", COMMENT ]; 3"0000000000140000", COMMENT "; 37935000=09213000= 0,0; 37940000=09214000= FILL MACRO[*] WITH 37945000=09215000= - OCT0131, COMMENT SFS A 00 ; 37950000=09216000= - OCT0116, COMMENT SFD A 01 ; 37955000=09217000= - OCT0000, COMMENT SYNTAX ERROR02 ; 37960000=09218000= - OCT0140, COMMENT INC A 03 ; 37965000=09219000= - OCT0130, COMMENT SRS A 04 ; 37970000=09220000= - OCT0117, COMMENT SRD A 05 ; 37975000=09221000= - OCT0000, COMMENT SYNTAX ERROR06 ; 37980000=09222000= - OCT0000, COMMENT SYNTAX ERROR07 ; 37985000=09223000= - OCT00310143, COMMENT CRF A, SFS 008 ; 37990000=09224000= - OCT00160143, COMMENT CRF A, SFD 009 ; 37995000=09225000= - OCT00470143, COMMENT CRF A, JFW 0 10 ; 38000000=09226000= - OCT00400143, COMMENT CRF A, INC 011 ; 38005000=09227000= - OCT00300143, COMMENT CRF A, SRS 012 ; 38010000=09228000= - OCT00170143, COMMENT CRF A, SRD 013 ; 38015000=09229000= - OCT0000, COMMENT SYNTAX ERROR14 ; 38020000=09230000= - OCT0000, COMMENT SYNTAX ERROR15 ; 38025000=09231000= - OCT0153, COMMENT RSA A 16 ; 38030000=09232000= - OCT0104, COMMENT RDA A 17 ; 38035000=09233000= - OCT0150, COMMENT RCA A 18 ; 38040000=09234000= - OCT004201430042, COMMENT SEC 0, CRF A, SEC 0 19 ; 38045000=09235000= - OCT0122, COMMENT SES A 20 ; 38050000=09236000= - OCT0106, COMMENT SED A 21 ; 38055000=09237000= - OCT0000, COMMENT SYNTAX ERROR22 ; 38060000=09238000= - OCT0000, COMMENT SYNTAX ERROR23 ; 38065000=09239000= - OCT0056, COMMENT TSA 0 24 ; 38070000=09240000= - OCT0000, COMMENT SYNTAX ERROR25 ; 38075000=09241000= - OCT0000, COMMENT SYNTAX ERROR26 ; 38080000=09242000= - OCT0000, COMMENT SYNTAX ERROR27 ; 38085000=09243000= - OCT0000, COMMENT SYNTAX ERROR28 ; 38090000=09244000= - OCT0007, COMMENT TDA 0 29 ; 38095000=09245000= - OCT0000, COMMENT SYNTAX ERROR30 ; 38100000=09246000= - OCT0000, COMMENT SYNTAX ERROR31 ; 38105000=09247000= - OCT0115, COMMENT SSA A 32 ; 38110000=09248000= - OCT0114, COMMENT SDA A 33 ; 38115000=09249000= - OCT0154, COMMENT SCA A 34 ; 38120000=09250000= - OCT0141; COMMENT STC A 35 ; 38125000=09251000= - FILL OPTIONS[**] WITH 6"5CHECK", 0, % 0,1 38130000=09251208= -6"6DEBUG", 0, % 2,3 38135000=09251212= -6"4DECK0", 0, % 4,5 38140000=09251214= -6"6FORMA", 0, % 6,7 38145000=09251216= -6"9INTRI", 0, % 8,9 38150000=09251218= -6"5LISTA", 0, % 10,11 38155000=09251220= -6"4LIST0", 0, % 12,13 38160000=09251224= -6"5LISTP", 0, % 14,15 38165000=09251228= -6"3MCP00", 0, % 16,17 38170000=09251230= -6"4TAPE0", 0, % 18,19 38175000=09251232= -6"4NEST0", 0, % 20,21 38180000=09251234= -6"3NEW00", 0, % 22,23 38185000=09251236= -6"7NEWIN", 0, % 24,25 38190000=09251240= -6"4OMIT0", 0, % 26,27 38195000=09251244= -6"1$0000", 0, % 28,29 38200000=09251248= -6"3PRT00", 0, % 30,31 38205000=09251252= -6"5PUNCH", 0, % 32,33 38210000=09251256= -6"5PURGE", 0, % 34,35 38215000=09251260= -6"4SEGS0", 0, % 36,37 38220000=09251264= -6"3SEQ00", 0, % 38,39 38225000=09251268= -6"6SEQER", 0, % 40,41 38230000=09251272= -6"6SINGL", 0, % 42,43 38235000=09251276= -6"5STUFF", 0, % 44,45 38240000=09251378= -6"4VOID0", 0, % 46,47 38245000=09251380= -6"5VOIDT", 0, % 48,49 38250000=09251384= -0; 38255000=09251388= + 3"0131", COMMENT SFS A 00 ; 37950000=09216000= + 3"0116", COMMENT SFD A 01 ; 37955000=09217000= + 3"0000", COMMENT SYNTAX ERROR02 ; 37960000=09218000= + 3"0140", COMMENT INC A 03 ; 37965000=09219000= + 3"0130", COMMENT SRS A 04 ; 37970000=09220000= + 3"0117", COMMENT SRD A 05 ; 37975000=09221000= + 3"0000", COMMENT SYNTAX ERROR06 ; 37980000=09222000= + 3"0000", COMMENT SYNTAX ERROR07 ; 37985000=09223000= + 3"00310143", COMMENT CRF A, SFS 008 ; 37990000=09224000= + 3"00160143", COMMENT CRF A, SFD 009 ; 37995000=09225000= + 3"00470143", COMMENT CRF A, JFW 0 10 ; 38000000=09226000= + 3"00400143", COMMENT CRF A, INC 011 ; 38005000=09227000= + 3"00300143", COMMENT CRF A, SRS 012 ; 38010000=09228000= + 3"00170143", COMMENT CRF A, SRD 013 ; 38015000=09229000= + 3"0000", COMMENT SYNTAX ERROR14 ; 38020000=09230000= + 3"0000", COMMENT SYNTAX ERROR15 ; 38025000=09231000= + 3"0153", COMMENT RSA A 16 ; 38030000=09232000= + 3"0104", COMMENT RDA A 17 ; 38035000=09233000= + 3"0150", COMMENT RCA A 18 ; 38040000=09234000= + 3"004201430042", COMMENT SEC 0, CRF A, SEC 0 19 ; 38045000=09235000= + 3"0122", COMMENT SES A 20 ; 38050000=09236000= + 3"0106", COMMENT SED A 21 ; 38055000=09237000= + 3"0000", COMMENT SYNTAX ERROR22 ; 38060000=09238000= + 3"0000", COMMENT SYNTAX ERROR23 ; 38065000=09239000= + 3"0056", COMMENT TSA 0 24 ; 38070000=09240000= + 3"0000", COMMENT SYNTAX ERROR25 ; 38075000=09241000= + 3"0000", COMMENT SYNTAX ERROR26 ; 38080000=09242000= + 3"0000", COMMENT SYNTAX ERROR27 ; 38085000=09243000= + 3"0000", COMMENT SYNTAX ERROR28 ; 38090000=09244000= + 3"0007", COMMENT TDA 0 29 ; 38095000=09245000= + 3"0000", COMMENT SYNTAX ERROR30 ; 38100000=09246000= + 3"0000", COMMENT SYNTAX ERROR31 ; 38105000=09247000= + 3"0115", COMMENT SSA A 32 ; 38110000=09248000= + 3"0114", COMMENT SDA A 33 ; 38115000=09249000= + 3"0154", COMMENT SCA A 34 ; 38120000=09250000= + 3"0141"; COMMENT STC A 35 ; 38125000=09251000= + FILL OPTIONS[*] WITH 6"5CHECK", 0, % 0,1 38130000=09251208= + 6"6DEBUG", 0, % 2,3 38135000=09251212= + 6"4DECK0", 0, % 4,5 38140000=09251214= + 6"6FORMA", 0, % 6,7 38145000=09251216= + 6"9INTRI", 0, % 8,9 38150000=09251218= + 6"5LISTA", 0, % 10,11 38155000=09251220= + 6"4LIST0", 0, % 12,13 38160000=09251224= + 6"5LISTP", 0, % 14,15 38165000=09251228= + 6"3MCP00", 0, % 16,17 38170000=09251230= + 6"4TAPE0", 0, % 18,19 38175000=09251232= + 6"4NEST0", 0, % 20,21 38180000=09251234= + 6"3NEW00", 0, % 22,23 38185000=09251236= + 6"7NEWIN", 0, % 24,25 38190000=09251240= + 6"4OMIT0", 0, % 26,27 38195000=09251244= + 6"1$0000", 0, % 28,29 38200000=09251248= + 6"3PRT00", 0, % 30,31 38205000=09251252= + 6"5PUNCH", 0, % 32,33 38210000=09251256= + 6"5PURGE", 0, % 34,35 38215000=09251260= + 6"4SEGS0", 0, % 36,37 38220000=09251264= + 6"3SEQ00", 0, % 38,39 38225000=09251268= + 6"6SEQER", 0, % 40,41 38230000=09251272= + 6"6SINGL", 0, % 42,43 38235000=09251276= + 6"5STUFF", 0, % 44,45 38240000=09251378= + 6"4VOID0", 0, % 46,47 38245000=09251380= + 6"5VOIDT", 0, % 48,49 38250000=09251384= + 0; 38255000=09251388= DO 38260000=09252000= UNTIL STEPI = BEGINV; 38265000=09252000= GT1:= -6" "; 38270000=09253000= @@ -7676,116 +8714,146 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 36760000 INTRINSICADR 38290000=09253100= ELSE 38295000=09253100= 2; 38300000=09253100= - MDESC(GT1, INFO[LASTSEQROW, LASTSEQUENCE]); 38305000=09253500= - MDESC(GT1, INFO[LASTSEQROW, LASTSEQUENCE-1]); 38310000=09254000= - MDESC(GT1, INFO[LASTSEQROW, LASTSEQUENCE-2]); 38315000=09255000= + MDESC(GT1, INFO[LASTSEQROW, LASTSEQUENCE]); 38305000=09253500= + MDESC(GT1, INFO[LASTSEQROW, LASTSEQUENCE-1]); 38310000=09254000= + MDESC(GT1, INFO[LASTSEQROW, LASTSEQUENCE-2]); 38315000=09255000= STMT; 38320000=09275000= LOCK(STUFF); 38325000=09281000= - CLOSE(CARD, RELEASE); 38330000=09281500= - IF LASTUSED ^= 1 THEN 38335000=09282000= - CLOSE(TAPE, RELEASE); 38340000=09282000= - IF NEWTOG THEN 38345000=09282500= - LOCK(NEWTAPE, **); 38350000=09282500= + CLOSE(CARD); 38330000=09281500= IF T:= ((L+3) DIV 4)+CORADR > 4080 THEN 38355000=09282600= FLAG(040); 38360000=09282600= IF NOT NOHEADING THEN % PRINT THESE THINGS IF ANY 38365000=09362000= BEGIN % LISTING HAS BEEN DONE. 38370000=09363000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38372000 - STREAM PROCEDURE PAN(T, FIEL, NER, LSQ); 38375000=09364000= + PROCEDURE PAN(T, FIEL, FX, NER, LSQ, SX); 38375000=09364000= VALUE 38380000=09364000= - NER, 38385000=09364000= - T; 38390000=09364000= + T, FX, NER, SX; 38385000=09364000= + REAL 38390000=09364000= + T, FX, NER, SX; 38391000 + ARRAY 38392000 + FIEL, LSQ[0]; 38393000 BEGIN 38395000=09365000= - DI:= FIEL; 38400000=09365000= - 44(DS:= 2 LIT 6" "); 38405000=09365000= - SI:= LSQ; 38410000=09366000= - DS:= WDS; 38415000=09366000= - SI:= FIEL; 38420000=09366000= - DS:= 3 WDS; 38425000=09366000= - DI:= FIEL; 38430000=09367000= - DS:= 28 LIT 6"NUMBER OF ERRORS DETECTED = "; 38435000=09367000= - SI:= LOC NER; 38440000=09368000= - DS:= 3 DEC; 38445000=09368000= - DS:= 22 LIT 6". COMPILATION TIME = "; 38450000=09368000= - SI:= LOC T; 38455000=09369000= - DS:= 4 DEC; 38460000=09369000= - DS+9 LIT 6" SECONDS."; 38465000=09369000= + STREAMLOCALS; 38396000 + STREAMSETDI(FIEL, FX); 38400000=09365000= + STREAMSMEARLIT(44*2, 6" "); 38405000=09365000= + STREAMSETSI(LSQ, SX); 38410000=09366000= + STREAMTRANSFERWDS(1); 38415000=09366000= + STREAMSETSI(FIEL, FX); 38420000=09366000= + STREAMTRANSFERWDS(3); 38425000=09366000= + STREAMSETDI(FIEL, FX); 38430000=09367000= + STREAMTRANSFERLIT(8, 6"NUMBER O"); 38435000=09367000= + STREAMTRANSFERLIT(8, 6"F ERRORS"); 38436000 + STREAMTRANSFERLIT(8, 6" DETECTE"); 38437000 + STREAMTRANSFERLIT(4, 6"D = "); 38438000 + STREAMSETLOCSI(NER); 38440000=09368000= + STREAMTRANSFERDEC(3); 38445000=09368000= + STREAMTRANSFERLIT(8, 6". COMPI"); 38450000=09368000= + STREAMTRANSFERLIT(8, 6"LATION T"); 38452000 + STREAMTRANSFERLIT(6, 6"IME = "); 38454000 + STREAMSETLOCSI(T); 38455000=09369000= + STREAMTRANSFERDEC(4); 38460000=09369000= + STREAMTRANSFERLIT(8, 6" SECONDS"); 38465000=09369000= + STREAMTRANSFERLIT(1, 6"."); 38466000 END; 38470000=09369000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38472000 - STREAM PROCEDURE PEN(FIL, PRTSIZ, BASE, CORE, DISK); 38475000=09370000= + PROCEDURE PEN(FIL, FX, PRTSIZ, BASE, CORE, DISK); 38475000=09370000= VALUE 38480000=09371000= - PRTSIZ, 38485000=09371000= - BASE, 38490000=09371000= - CORE, 38495000=09371000= - DISK; 38500000=09371000= + FX, PRTSIZ, BASE, CORE, DISK; 38485000=09371000= + ARRAY 38486000 + FIL[0]; 38488000 + REAL 38490000 + FX, PRTSIZ, BASE, CORE, DISK; 38492000 BEGIN 38505000=09372000= - DI:= FIL; 38510000=09372000= - DS:= 9 LIT 6"PRT SIZE="; 38515000=09372000= - SI:= LOC PRTSIZ; 38520000=09372000= - DS:= 3 DEC; 38525000=09373000= - DS:= 14 LIT 6" BASE ADDRESS="; 38530000=09373000= - SI:= LOC BASE; 38535000=09374000= - DS:= 4 DEC; 38540000=09374000= - DS:= 10 LIT 6" CORE REQ="; 38545000=09374000= - SI:= LOC CORE; 38550000=09375000= - DS:= 4 DEC; 38555000=09375000= - DS:= 10 LIT 6" DISK REQ="; 38560000=09375000= - SI:= LOC DISK; 38565000=09376000= - DS:= 5 DEC; 38570000=09376000= - DS:= 61 LIT 6" "; 38575000=09376000= + STREAMLOCALS; 38506000 + STREAMSETDI(FIL, FX); 38510000=09372000= + STREAMTRANSFERLIT(8, 6"PRT SIZE"); 38515000=09372000= + STREAMTRANSFERLIT(1, 6"="); 38516000 + STREAMSETLOCSI(PRTSIZ); 38520000=09372000= + STREAMTRANSFERDEC(3); 38525000=09373000= + STREAMTRANSFERLIT(8, 6" BASE AD"); 38530000=09373000= + STREAMTRANSFERLIT(6, 6"DRESS="); 38532000 + STREAMSETLOCSI(BASE); 38535000=09374000= + STREAMTRANSFERDEC(4); 38540000=09374000= + STREAMTRANSFERLIT(8, 6" CORE RE"); 38545000=09374000= + STREAMTRANSFERLIT(2, 6"Q="); 38546000 + STREAMSETLOCSI(CORE); 38550000=09375000= + STREAMTRANSFERDEC(4); 38555000=09375000= + STREAMTRANSFERLIT(8, 6" DISK RE"); 38560000=09375000= + STREAMTRANSFERLIT(2, 6"Q="); 38562000 + STREAMSETLOCSI(DISK); 38565000=09376000= + STREAMTRANSFERDEC(5); 38570000=09376000= + STREAMSMEARLIT(61, 6" "); 38575000=09376000= END PEN; 38580000=09377000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38582000 - STREAM PROCEDURE FINALAX(LINE, N, SEQ); 38585000=09378000= + PROCEDURE FINALAX(LINE, LX, N, SEQ, SX); 38585000=09378000= VALUE 38590000=09378000= - N; 38595000=09378000= + LX, N, SX; 38595000=09378000= + ARRAY 38596000 + LINE[0]; 38597000 + REAL 38598000 + LX, N, SX; 38599000 BEGIN 38600000=09379000= - DS:= LINE; 38605000=09379000= - 15(DS:= 8 LIT 6" "); 38610000=09379000= - DI:= LINE; 38615000=09380000= - DS:= 31 LIT 6"NUMBER OF ACCIDENTAL ENTRIES = "; 38620000=09380000= - SI:= LOC N; 38625000=09381000= - DS:= 3 DEC; 38630000=09381000= - DI:= DI+8; 38635000=09381000= - SI:= SEQ; 38640000=09382000= - SI:= SI-16; 38645000=09382000= - DS:= 8 CHR; 38650000=09382000= + STREAMLOCALS; 38602000 + STREAMSETDI(LINE, LX); 38605000=09379000= + STREAMSMEARLIT(15*8, 6" "); 38610000=09379000= + STREAMSETDI(LINE, LX); 38615000=09380000= + STREAMTRANSFERLIT(8, 6"NUMBER O"); 38620000=09380000= + STREAMTRANSFERLIT(8, 6"F ACCIDE"); 38621000 + STREAMTRANSFERLIT(8, 6"NTAL ENT"); 38622000 + STREAMTRANSFERLIT(7, 6"RIES = "); 38623000 + STREAMSETLOCSI(N); 38625000=09381000= + STREAMTRANSFERDEC(3); 38630000=09381000= + STREAMSKIPDI(+8); 38635000=09381000= + STREAMSETSI(SEQ, SX); 38640000=09382000= + STREAMSKIPSI(-16); 38645000=09382000= + STREAMTRANSFERCHR(8); 38650000=09382000= END; 38655000=09383000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38656000 IF AXNUM ^= 0 THEN 38660000=09384000= BEGIN 38665000=09384050= - FINALAX(LIN[0], AXNUM, INFO[LASTSEQROW, LASTSEQUENCE]); 38670000=09384100= + FINALAX(LIN, 0, AXNUM, INFO[LASTSEQROW,*], LASTSEQUENCE); 38670000=09384100= WRITELINE; 38675000=09384500= END; 38680000=09384600= SCRAM:= (TIME(1)-TIME1)/60; 38685000=09385000= - PAN(SCRAM, LIN[0], ERRORCOUNT, 38690000=09386500= - INFO[LASTSEQROW, LASTSEQUENCE-1]); 38695000=09386500= - WRITELINE PEN(LIN[0], PRTIMAX, T:= (L+3) DIV 4, T:= CORADR+T, 38700000=09389000= - ((T+29) DIV 30+DISKADR)*30); 38705000=09389000= + PAN(SCRAM, LIN, 0, ERRORCOUNT, 38690000=09386500= + INFO[LASTSEQROW,*], LASTSEQUENCE-1); 38695000=09386500= + WRITELINE; 38700000=09389000= + PEN(LIN, 0, PRTIMAX, T:= (L+3) DIV 4, T:= CORADR+T, 38702000=09389000= + ((T+29) DIV 30+DISKADR)*30); 38705000=09389000= WRITELINE; 38710000=09389500= - LOCK(LINE, RELEASE); 38715000=09390000= + LOCK(LINE, CRUNCH); 38715000=09390000= END; 38720000=09390000= + 38720500 + MYSELF.TASKVALUE:= ERRORCOUNT; 38721000 + IF ERRORCOUNT = 0 THEN 38721500 + REPLACE POINTER(EBCDICBUFF,8) BY "NO ERRORS", 0 FOR 1 38722000 + ELSE 38722500 + REPLACE POINTER(EBCDICBUFF,8) BY ERRORCOUNT FOR * DIGITS, 38723000 + " SYNTAX ERROR", "S" FOR REAL(ERRORCOUNT^=1), 0 FOR 1; 38723500 + DISPLAY(POINTER(EBCDICBUFF,8)); 38724000 + 38724500 IF ERRORCOUNT ^= 0 THEN 38725000=09391000= - I:= 0/0 38730000=09391000= + MYSELF.STATUS:= VALUE(TERMINATED) 38730000=09391000= ELSE 38735000=09391000= BEGIN 38740000=09392000= ARRAY 38745000=09392300= - SAVINFO[0:31, 0:255], 38750000=09392500= - INFO[0:200, 0:255]; % FOR LARGE MCP"S. 38755000=09392500= + SAVINFO[0:31, 0:255], 38750000=09392500= + INFO[0:200, 0:255]; % FOR LARGE MCP"S. 38755000=09392500= INTEGER 38760000=09393000= SAVNDX, 38765000=09393000= - NONSAVNDX, 38770000=09393000= - N; 38775000=09393000= + NONSAVNDX, 38770000=09393000= + N; 38775000=09393000= INTEGER 38780000=09393010= Q, 38785000=09393010= - J, 38790000=09393010= - K, 38795000=09393010= - M; 38800000=09393010= + J, 38790000=09393010= + K, 38795000=09393010= + M; 38800000=09393010= BOOLEAN 38805000=09393020= TSSTOG; 38810000=09393020= REAL 38815000=09393020= T; 38820000=09393020= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38822000 - REAL PROCEDURE PUSHER(GRINCH, GOT, XMAS); 38825000=09393050= + REAL PROCEDURE PUSHER(GRINCH, GOT, XMAS); 38825000=09393050= VALUE 38830000=09393050= XMAS; 38835000=09393050= REAL 38840000=09393050= @@ -7793,122 +8861,118 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 36760000 ARRAY 38850000=09393060= GOT[0]; 38855000=09393060= ARRAY 38860000=09393060= - GRINCH[0, 0]; 38865000=09393060= + GRINCH[0, 0]; 38865000=09393060= BEGIN 38870000=09393070= REAL 38875000=09393080= WHO, 38880000=09393080= - WHAT; 38885000=09393080= + WHAT; 38885000=09393080= DEFINE 38890000=09393090= - LINKR = [32:8] #; 38895000=09393090= + LINKR = [15:8] #; 38895000=09393090= % 38900000=09393100= IF WHO:= XMAS.LINKC <= 225 THEN 38905000=09393110= BEGIN 38910000=09393120= - MOVE(30, GRINCH[XMAS.LINKR, WHO], GOT[0]); 38915000=09393130= + MOVE(30, GRINCH[XMAS.LINKR,*], WHO, GOT, 0); 38915000=09393130= PUSHER:= XMAS+30; 38920000=09393140= END 38925000=09393160= ELSE 38930000=09393160= BEGIN 38935000=09393160= - MOVE(WHAT:= 256-WHO, GRINCH[XMAS.LINKR, WHO], GOT[0]); 38940000=09393170= + MOVE(WHAT:= 256-WHO, GRINCH[XMAS.LINKR,*], WHO, GOT, 0); 38940000=09393170= XMAS:= XMAS+WHAT; 38945000=09393180= - MOVE(WHO:= 30-WHAT, GRINCH[XMAS.LINKR, 0], GOT[WHAT]); 38950000=09393190= + MOVE(WHO:= 30-WHAT, GRINCH[XMAS.LINKR,*], 0, GOT, WHAT); 38950000=09393190= PUSHER:= XMAS+WHO; 38955000=09393200= END; 38960000=09393220= END PUSHER; 38965000=09393230= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38970000=09393230= - PROCEDURE PUSHEE(GRINCH, N, B, Y); 38975000=09393240= + PROCEDURE PUSHEE(GRINCH, N, B, Y); 38975000=09393240= VALUE 38980000=09393240= N, 38985000=09393240= - B, 38990000=09393240= - Y; 38995000=09393240= + B, 38990000=09393240= + Y; 38995000=09393240= REAL 39000000=09393240= N, 39005000=09393240= - B, 39010000=09393240= - Y; 39015000=09393240= + B, 39010000=09393240= + Y; 39015000=09393240= ARRAY 39020000=09393250= - GRINCH[0, 0]; 39025000=09393250= + GRINCH[0, 0]; 39025000=09393250= BEGIN 39030000=09393260= REAL 39035000=09393270= I, 39040000=09393270= - J, 39045000=09393270= - X; 39050000=09393270= + J, 39045000=09393270= + X; 39050000=09393270= DEFINE 39055000=09393280= - LINKR = [32:8] #; 39060000=09393280= + LINKR = [15:8] #; 39060000=09393280= J:= Y; 39065000=09393290= I:= B+N; 39070000=09393300= WHILE B < I DO 39075000=09393310= BEGIN 39080000=09393320= IF Y:= B.LINKC <= 225 THEN 39085000=09393330= BEGIN 39090000=09393340= - MOVE(30, CODE(J), GRINCH[B.LINKR, Y]); 39095000=09393350= + MOVE(30, CODE, J, GRINCH[B.LINKR,*], Y); 39095000=09393350= J:= J+30; 39100000=09393360= B:= B+30; 39105000=09393370= END 39110000=09393390= ELSE 39115000=09393390= BEGIN 39120000=09393390= - MOVE(X:= 256-Y, CODE(J), GRINCH[B.LINKR, Y]); 39125000=09393400= + MOVE(X:= 256-Y, CODE, J, GRINCH[B.LINKR,*], Y); 39125000=09393400= B:= B+X; 39130000=09393410= J:= J+X; 39135000=09393420= - MOVE(Y:= 30-X, CODE(J), GRINCH[B.LINKR, 0]); 39140000=09393430= + MOVE(Y:= 30-X, CODE, J, GRINCH[B.LINKR,*], 0); 39140000=09393430= B:= B+Y; 39145000=09393440= J:= J+Y; 39150000=09393450= END; 39155000=09393460= END; 39160000=09393470= END PUSHEE; 39165000=09393480= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%39170000=09393480= - STREAM PROCEDURE FIXHDR(F, N); 39175000=09393700= + PROCEDURE FIXHDR(F, N); 39175000=09393700= VALUE 39180000=09393700= N; 39185000=09393700= + FILE 39185100 + F; 39185200 + INTEGER 39185300 + N; 39185400 BEGIN 39190000=09393710= - SI:= F; 39195000=09393710= - SI:= SI-24; 39200000=09393710= - DS:= LOC F; 39205000=09393710= - DS:= WDS; 39210000=09393710= - SI:= F; 39215000=09393720= - 14(SI:= SI+8); 39220000=09393720= - DI:= LOC F; 39225000=09393720= - DS:= WDS; 39230000=09393720= - DI:= F; 39235000=09393730= - DI:= DI+38; 39240000=09393730= - SI:= LOC N; 39245000=09393730= - SI:= SI+7; 39250000=09393740= - DS:= CHR; 39255000=09393740= + COMMENT FIXHDR WAS ORIGINALLY A STREAM PROCEDURE THAT SET THE 39195000=09393710= + CODE FILE TYPE CODE IN HEADER[4].[11:6]. SEE LINES 01561400- 39200000=09393710= + 01561460 IN THE ORIGINAL ESPOL SOURCE. 39205000=09393710= + THIS HAS NO MEANING ON E-MODE SYSTEMS, SO THIS PROCEDURE NOW 39210000=09393710= + DOES NOTHING; 39215000=09393720= END FIXHDR; 39260000=09393750= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%39262000 LABEL 39265000=09394000= EOF; 39270000=09394000= IF NOT INTOG THEN 39275000=09394100= BEGIN 39280000=09394200= - L:= (L+3) DIV 4; 39285000=09395000= - COMMENT L~NUM. OF WORDS IN OUTER BLOCK;39290000=09395000= - FILL SAVINFO[0, **] WITH 3"7700000000000015", 39295000=09395300= - 3"0253010477527705", 3"0051000000000000", 39300000=09395500= - 3"0441070001000062"; 39305000=09395500= + L:= (L+3) DIV 4; COMMENT L~NUM. OF WORDS IN OUTER BLOCK;39285000=09395000= + FILL SAVINFO[0, *] WITH 39295000=09395300= + 3"7700000000000015", 39296000=09395300= + 3"0253010477527705", 39300000=09395500= + 3"0051000000000000", 39302000=09395500= + 3"0441070001000062"; 39305000=09395500= Q:= -1; 39310000=09395700= - PUSHEE(SAVEINFO, L, 4, 5); 39315000=09396000= + PUSHEE(SAVEINFO, L, 4, 5); 39315000=09396000= SAVNDX:= L; 39320000=09397000= END; 39325000=09397100= REWIND(CODISK); 39330000=09398000= DO BEGIN 39335000=09399000= IF REED = 0 THEN 39340000=09399000= GO TO EOF; 39345000=09399000= - N:= FETCH(MKABS(CODE(0)))-1; 39350000=09400000= - IF BOOLEAN(FETCH(MKABS(CODE(1)))) THEN 39355000=09401000= + N:= CODELENGTH-1; 39350000=09400000= + IF BOOLEAN(CODE[0]) THEN 39355000=09401000= BEGIN 39360000=09402000= - PUSHEE(SAVINFO, N, SAVNDX, 1); 39365000=09402100= + PUSHEE(SAVINFO, N, SAVNDX, 1); 39365000=09402100= SAVNDX:= SAVNDX+N; 39370000=09403000= END 39375000=09404000= ELSE 39380000=09404000= BEGIN 39385000=09404000= IF DECKTOG THEN 39390000=09405000= STACKHEAD[Q:= Q+1]:= 1024*NONSAVNDX+N; 39395000=09405500= - PUSHEE(INFO, N, NONSAVNDX, 1); 39400000=09406000= + PUSHEE(INFO, N, NONSAVNDX, 1); 39400000=09406000= NONSAVNDX:= ((NONSAVNDX+N+29) DIV 30)*30; 39405000=09407000= END; 39410000=09408000= END 39415000=09412000= UNTIL FALSE; 39420000=09412000= EOF: 39425000=09413000= - N:= (SAVNDX+29) DIV 30; 39430000=09413000= - COMMENT NUMBER OF DISK SEGMENTS39435000=09413000= + N:= (SAVNDX+29) DIV 30; COMMENT NUMBER OF DISK SEGMENTS39430000=09413000= OCCUPIED BY SAVE PROCEDURES AND ARRAYS; 39440000=09414000= IF INTOG AND NOT DECKTOG THEN 39445000=09414010= BEGIN% INTRINSIC FUNCTION OPTION 39450000=09414020= @@ -7924,8 +8988,8 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 36760000 IF GT1:= PRT[I] ^= 0 THEN 39500000=09414040= BEGIN 39505000=09414050= J:= J+1; 39510000=09414060= - SAVINFO[J.LINKR, J.LINKC]:= 0 & GT1[8:8:10] & GT1[33:18:15]39515000=09414090= - ; 39520000=09414090= + SAVINFO[J.LINKR, J.LINKC]:= 0 & GT1[39:39:10] 39515000=09414090= + & GT1[14:29:15]; 39520000=09414090= END 39525000=09414100= UNTIL I:= I+1 >= PRTIMAX; 39530000=09414100= SAVINFO[0, 0]:= J; % # OF INTRINSICS 39535000=09414110= @@ -7937,17 +9001,17 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 36760000 DO 39565000=09415000= IF GT1:= PRT[I] ^= 0 THEN 39570000=09415000= BEGIN 39575000=09415500= - IF GT1.[1:5] ^= LDES THEN 39580000=09415500= + IF GT1.[46:5] ^= LDES THEN 39580000=09415500= BEGIN 39585000=09416000= - IF(GT1:= GT1 & (GT1.[33:15]+L)[33:33:15]).[6:2] ^= 3 THEN 39590000=09416000= - GT1:= GT1 & (GT1.[18:15]+N)[18:33:15]; 39595000=09417000= + IF(GT1:= GT1 & (GT1.[14:15]+L)[14:14:15]).[41:2] ^= 3 THEN39590000=09416000= + GT1:= GT1 & (GT1.[29:15]+N)[29:14:15]; 39595000=09417000= END; 39600000=09417500= - MDESC(GT1, SAVINFO[I.LINKR, I.LINKC]); 39605000=09418000= + MDESC(GT1, SAVINFO[I.LINKR, I.LINKC]); 39605000=09418000= END 39610000=09419000= ELSE 39615000=09419000= - SAVINFO[I.LINKR, I.LINKC]:= 0 39620000=09419000= + SAVINFO[I.LINKR, I.LINKC]:= 0 39620000=09419000= UNTIL I:= I+1 >= PRTIMAX; 39625000=09419000= - MDESC(0 & 1[2:47:1], SAVINFO[D, PRTBASE-1]); 39630000=09419100= + MDESC(0 & 1[45:0:1], SAVINFO[D, PRTBASE-1]); 39630000=09419100= SAVNDX:= 30*N; 39635000=09420000= END; 39640000=09420010= I:= 0; 39645000=09420020= @@ -7955,17 +9019,17 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 36760000 IF NOT DECKTOG THEN 39655000=09421000= BEGIN 39660000=09421500= DO BEGIN 39665000=09423000= - I:= PUSHER(SAVINFO, ELBAT, I); 39670000=09424000= + I:= PUSHER(SAVINFO, ELBAT, I); 39670000=09424000= J:= J+1; 39675000=09425000= - WRITE(DISK, 30, ELBAT[**]); 39680000=09425900= + WRITE(DISK, 30, ELBAT[*]); 39680000=09425900= END 39685000=09426000= UNTIL I >= SAVNDX; 39690000=09426000= I:= 0; 39695000=09427000= WHILE I < NONSAVNDX DO 39700000=09427100= BEGIN 39705000=09427200= - I:= PUSHER(INFO, ELBAT, I); 39710000=09427500= + I:= PUSHER(INFO, ELBAT, I); 39710000=09427500= J:= J+1; 39715000=09428000= - WRITE(DISK, 30, ELBAT[**]); 39720000=09429000= + WRITE(DISK, 30, ELBAT[*]); 39720000=09429000= END; 39725000=09430000= N:= 39730000=09430050= IF INTOG THEN 39735000=09430050= @@ -7975,35 +9039,40 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 36760000 DCINTYPE 39755000=09430060= ELSE 39760000=09430060= MCPTYPE; 39765000=09430060= - FIXHDR(DISK, N); 39770000=09430075= - LOCK(DISK, **); 39775000=09430100= + FIXHDR(DISK, N); % NO EFFECT FOR MODERN MCP 39770000=09430075= + LOCK(DISK, CRUNCH); 39775000=09430100= END 39780000=09432000= ELSE 39785000=09432000= BEGIN 39790000=09432000= ELBAT[0]:= 0; 39795000=09432000= I:= 16; 39800000=09432000= DO BEGIN 39805000=09433000= - MOVE(8, SAVINFO[I.LINKR, I.LINKC], ELBAT[1]); 39810000=09433000= - ELBAT[9]:= B2D(I+96) & 1[11:47:1] & (I+96)[23:35:1]; 39815000=09434000= - WRITE(DECK, 10, ELBAT[**]); 39820000=09435000= + MOVE(8, SAVINFO[I.LINKR,*], I.LINKC, ELBAT, 1); 39810000=09433000= + ELBAT[9]:= B2D(I+96) & 1[36:0:1] & (I+96)[24:12:1]; 39815000=09434000= + WRITE(DECK, 10, ELBAT[*]); 39820000=09435000= END 39825000=09436000= UNTIL I:= I+8 >= SAVNDX; 39830000=09436000= - FILL ELBAT[**] WITH 0, 3"7500000000000012", 39835000=09439000= - 3"0004535530611765", 3"7006000404210435", 39840000=09441000= - 3"7700000000000015", 3"0253010477527705", 39845000=09443000= - 3"0051000004410046", 3"0441070001000062", 39850000=09445000= - 3"0040413100000000", 3"0001000000000101"; 39855000=09446000= - WRITE(DECK, 10, ELBAT[**]); 39860000=09447000= - ELBAT[0]:= 0 & REAL(DECKTOG)[1:19:17]; 39865000=09447010= + FILL ELBAT[*] WITH 0, 39835000=09439000= + 3"7500000000000012", 39836000=09439000= + 3"0004535530611765", 39840000=09441000= + 3"7006000404210435", 39842000=09441000= + 3"7700000000000015", 39845000=09443000= + 3"0253010477527705", 39846000=09443000= + 3"0051000004410046", 39850000=09445000= + 3"0441070001000062", 39852000=09445000= + 3"0040413100000000", 39855000=09446000= + 3"0001000000000101"; 39856000=09446000= + WRITE(DECK, 10, ELBAT[*]); 39860000=09447000= + ELBAT[0]:= 0 & REAL(DECKTOG)[46:28:17]; 39865000=09447010= FOR I:= 0 STEP 1 UNTIL Q DO 39870000=09447020= BEGIN 39875000=09447030= - K:= STACKHEAD[I].[23:15]; 39880000=09447030= - M:= STACKHEAD[I].[38:10]; 39885000=09447040= + K:= STACKHEAD[I].[24:15]; 39880000=09447030= + M:= STACKHEAD[I].[9:10]; 39885000=09447040= FOR J:= 0 STEP 8 UNTIL M DO 39890000=09447050= BEGIN 39895000=09447050= - MOVE(8, INFO[(J+K).LINKR, (J+K).LINKC], ELBAT[1]); 39900000=09447070= - ELBAT[9]:= B2D(J) & 6"310"[1:31:17]; 39905000=09447080= - WRITE(DECK, 10, ELBAT[**]) 39910000=09447090= + MOVE(8, INFO[(J+K).LINKR,*], (J+K).LINKC, ELBAT, 1); 39900000=09447070= + ELBAT[9]:= B2D(J) & 6"310"[46:16:17]; 39905000=09447080= + WRITE(DECK, 10, ELBAT[*]) 39910000=09447090= END; 39915000=09447090= END; 39920000=09447100= END 39925000=09448000= @@ -8012,10 +9081,10 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 36760000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%39940000=09448000= 39945000=10000000= COMMENT THIS SECTION CONTAINS GENERATORS USED BY THE BLOCK ROUTINE; 39950000=10000000= - PROCEDURE DEFINEGEN(MACRO, J); 39955000=10228000= + PROCEDURE DEFINEGEN(MACRO, J); 39955000=10228000= VALUE 39960000=10228000= MACRO, 39965000=10228000= - J; 39970000=10228000= + J; 39970000=10228000= BOOLEAN 39975000=10228000= MACRO; 39980000=10228000= REAL 39985000=10228000= @@ -8023,33 +9092,40 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 36760000 BEGIN 39995000=10229000= OWN INTEGER 40000000=10230000= CHARCOUNT, 40005000=10230000= - REMCOUNT; 40010000=10230000= + REMCOUNT; 40010000=10230000= COMMENT CHARCOUNT CONTAINS NUMBER OFCHARACTORS OF THE DEFINE THAT WE40015000=10231000= HAVE PUT INTO INFO. REMCOUNT CONTAINS NUMBER OF CHARACT- 40020000=10232000= ORS REMAINING IN THIS ROW OF INFO; 40025000=10233000= - PROCEDURE PUTOGETHER(CHAR); 40030000=10234000= + PROCEDURE PUTOGETHER(CHAR, CX); 40030000=10234000= + VALUE 40031000 + CX; 40032000 + ARRAY 40033000 + CHAR[0]; 40034000 REAL 40035000=10234000= - CHAR; 40040000=10234000= + CX; 40040000=10234000= BEGIN 40045000=10235000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%40046000 - STREAM PROCEDURE PACKINFO(INFO, ISKIP, COUNT, ASKIP, ACCUM); 40050000=10236000= + PROCEDURE PACKINFO(INFO, IX, ISKIP, COUNT, ASKIP, ACCUM, AX); 40050000=10236000= VALUE 40055000=10237000= - ISKIP, 40060000=10237000= - COUNT, 40065000=10237000= - ASKIP; 40070000=10237000= + IX, ISKIP, COUNT, ASKIP, AX; 40060000=10237000= + ARRAY 40062000 + INFO, ACCUM[0]; 40064000 + REAL 40066000 + IX, ISKIP, COUNT, ASKIP, AX; 40068000 BEGIN 40075000=10238000= - DI:= INFO; 40080000=10238000= - DI:= DI+ISKIP; 40085000=10238000= - SI:= ACCUM; 40090000=10239000= - SI:= SI+ASKIP; 40095000=10239000= - SI:= SI+3; 40100000=10239000= - DS:= COUNT CHR 40105000=10240000= + STREAMLOCALS; 40076000 + STREAMSETDI(INFO, IX); 40080000=10238000= + STREAMSKIPDI(+ISKIP); 40085000=10238000= + STREAMSETSI(ACCUM, AX); 40090000=10239000= + STREAMSKIPSI(+ASKIP); 40095000=10239000= + STREAMSKIPSI(+3); 40100000=10239000= + STREAMTRANSFERCHR(COUNT) 40105000=10240000= END PACKINFO; 40110000=10240000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%40112000 INTEGER 40115000=10241000= COUNT, 40120000=10241000= - SKIPCOUNT; 40125000=10241000= - IF(COUNT:= CHAR.[12:6])+CHARCOUNT > 2047 THEN 40130000=10243000= + SKIPCOUNT; 40125000=10241000= + IF(COUNT:= CHAR[CX].[35:6])+CHARCOUNT > 2047 THEN 40130000=10243000= BEGIN 40135000=10243000= FLAG(142); 40140000=10243000= TB1:= TRUE 40145000=10243000= @@ -8064,40 +9140,42 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 36760000 ELSE 40190000=10249000= REMCOUNT:= REMCOUNT-COUNT; 40195000=10249000= GT1:= CHARCOUNT DIV 8+NEXTINFO; 40200000=10250000= - PACKINFO(INFO[GT1.LINKR, GT1.LINKC], CHARCOUNT.[45:3], 40205000=10252000= - COUNT, 00, CHAR); 40210000=10252000= + PACKINFO(INFO[GT1.LINKR,*], GT1.LINKC, CHARCOUNT.[2:3], 40205000=10252000= + COUNT, 0, CHAR, CX); 40210000=10252000= IF SKIPCOUNT ^= 0 THEN 40215000=10253000= - PACKINFO 40220000=10255000= - (INFO[NEXTINFO.LINKR+1, 0], 0, SKIPCOUNT, COUNT, CHAR); 40225000=10255000= + PACKINFO(INFO[NEXTINFO.LINKR+1,*], 0, 0, SKIPCOUNT, COUNT, 40220000=10255000= + CHAR, CX); 40225000 CHARCOUNT:= CHARCOUNT+SKIPCOUNT+COUNT 40230000=10256000= END 40235000=10257000= END PUTOGETHER; 40240000=10257000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%40245000=10257000= - STREAM PROCEDURE SCAN(D, S, Q, N, J); 40250000=10257100= + PROCEDURE SCNN(D, DX, S, SX, Q, N, J); 40250000=10257100= VALUE 40255000=10257100= - J, 40260000=10257100= - N, 40265000=10257100= - Q; 40270000=10257100= + DX, SX, Q, N, J; 40260000=10257100= + ARRAY 40262000 + D, A[0]; 40264000 + REAL 40266000 + DX, SX, Q, N, J; 40268000 BEGIN 40275000=10257200= - DI:= D; 40280000=10257200= - DI:= DI+11; 40285000=10257200= - SI:= S; 40290000=10257200= - SI:= SI+3; 40295000=10257200= - IF N SC = DC THEN 40300000=10257300= - IF SC > 6"0" THEN 40305000=10257400= + STREAMSETDI(D, DX); 40280000=10257200= + STREAMSKIPDI(+11); 40285000=10257200= + STREAMSETSI(S, SX); 40290000=10257200= + STREAMSKIPSI(+3); 40295000=10257200= + IF STREAMCOMPAREEQL(N) THEN 40300000=10257300= + IF STREAMSCGTR(6"0") THEN 40305000=10257400= BEGIN 40310000=10257500= - DI:= LOC J; 40315000=10257500= - DI:= DI+7; 40320000=10257500= - IF SC <= DC THEN 40325000=10257600= + STREAMSETLOCDI(J); 40315000=10257500= + STREAMSKIPDI(+7); 40320000=10257500= + IF STREAMCOMPARELEQ(1) THEN 40325000=10257600= BEGIN 40330000=10257700= - J:= SI; 40335000=10257700= - DI:= J; 40340000=10257700= - SI:= LOC Q; 40345000=10257700= - SI:= SI+6; 40350000=10257700= - DS:= CHR; 40355000=10257700= - DI:= S; 40360000=10257800= - DI:= DI+2; 40365000=10257800= - DS:= CHR; 40370000=10257800= + J:= STREAMGETSI; 40335000=10257700= + STREAMSETDI(S, J); 40340000=10257700= + STREAMSETLOCSI(Q); 40345000=10257700= + STREAMSKIPSI(+6); 40350000=10257700= + STREAMTRANSFERCHR(1); 40355000=10257700= + STREAMSETDI(S, SX); 40360000=10257800= + STREAMSKIPDI(+2); 40365000=10257800= + STREAMTRANSFERCHR(1); 40370000=10257800= END 40375000=10257900= END 40380000=10257900= END; 40385000=10257900= @@ -8124,7 +9202,7 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 36760000 REMCOUNT:= (256-NEXTINFO MOD 256)*8; 40485000=10263000= NEXTINFO:= LASTINFO; 40490000=10263100= IF J ^= 0 THEN 40495000=10263110= - N:= TAKE(LASTINFO+1).[12:6]; 40500000=10263110= + N:= TAKE(LASTINFO+1).[35:6]; 40500000=10263110= K:= 0; 40505000=10263200= BACK: 40510000=10263300= STOPDEFINE:= TRUE; 40515000=10263300= @@ -8137,7 +9215,8 @@ SKSC: 40525000 IF K = 0 THEN 40550000=10263800= FINAL: 40555000=10263900= BEGIN 40560000=10263900= - PUTOGETHER(6"1#0000"); 40565000=10263900= + EBCDICBUFF[0]:= 6"1#0000"; 40562000 + PUTOGETHER(EBCDICBUFF, 0); 40565000=10263900= GO TO EXIT 40570000=10263900= END 40575000=10264000= ELSE 40580000=10264000= @@ -8161,23 +9240,27 @@ SKSC: 40525000 GO PACKIN 40670000=10264500= END; 40675000=10264500= IF J ^= 0 THEN 40680000=10264600= - IF ACCUM[1].[12:6]-1 = N THEN 40685000=10264700= - SCAN(INFO[LASTINFO.LINKR, LASTINFO.LINKC], ACCUM[1], N+770, 40690000=10264900= - N, J); 40695000=10264900= + IF ACCUM[1].[35:6]-1 = N THEN 40685000=10264700= + SCNN(INFO[LASTINFO.LINKR,*], LASTINFO.LINKC, ACCUM, 1, N+770, 40690000=10264900= + N, J); 40695000=10264900= PACKIN: 40700000=10265000= IF RESULT = 4 THEN 40705000=10266000= BEGIN 40710000=10266000= COMMENT INSERT " MARKS - 2130706432 IS DECIMAL FOR 1"0000; 40715000=10267000= - PUTOGETHER(2130706432); 40720000=10268000= - PUTOGETHER(ACCUM[1]); 40725000=10269000= - PUTOGETHER(2130706432) 40730000=10270000= + EBCDICBUFF[0]:= 2130706432; 40716000 + PUTOGETHER(EBCDICBUFF, 0); 40720000=10268000= + PUTOGETHER(ACCUM, 1); 40725000=10269000= + EBCDICBUFF[0]:= 2130706432; 40726000 + PUTOGETHER(EBCDICBUFF, 0) 40730000=10270000= END 40735000=10271000= ELSE 40740000=10271000= BEGIN 40745000=10271000= IF BOOLEAN(RESULT) AND BOOLEAN(LASTRESULT) THEN 40750000=10273000= - PUTOGETHER(6"1 0000"); 40755000=10273000= - COMMENT INSERT BLANK; 40760000=10273000= - PUTOGETHER(ACCUM[1]) 40765000=10274000= + BEGIN 40752000 + EBCDICBUFF[0]:= 6"1 0000"; 40754000 + PUTOGETHER(EBCDICBUFF, 0); COMMENT INSERT BLANK; 40755000=10273000= + END; 40760000 + PUTOGETHER(ACCUM, 1) 40765000=10274000= END; 40770000=10274000= IF TB1 THEN 40775000=10275000= GO TO EXIT; 40780000=10275000= @@ -8206,13 +9289,14 @@ EXIT: 40870000 PROCEDURE DBLSTMT; 40895000=12002000= BEGIN 40900000=12003000= REAL 40905000=12004000= + TVAR, % FOR VARIABLE() NAME PARAM 40906000 S, 40910000=12004000= - T; 40915000=12004000= + T; 40915000=12004000= LABEL 40920000=12005000= L1, 40925000=12005000= - L2, 40930000=12005000= - L3, 40935000=12005000= - EXIT; 40940000=12005000= + L2, 40930000=12005000= + L3, 40935000=12005000= + EXIT; 40940000=12005000= S:= 0; 40945000=12006000= IF STEPI ^= LEFTPAREN THEN 40950000=12007000= ERR(281) 40955000=12008000= @@ -8259,7 +9343,10 @@ EXIT: 40870000 STEPIT 41160000=12036000= END 41165000=12037000= ELSE 41170000=12037000= - VARIABLE(FL); 41175000=12037000= + BEGIN 41172000 + TVAR:=FL; 41174000 + VARIABLE(TVAR); 41175000=12037000= + END; 41176000 EMITO(STD) 41180000=12038000= END 41185000=12038000= UNTIL S:= S+1 = 2; 41190000=12038000= @@ -8307,31 +9394,35 @@ EXIT: 40870000 BEGIN 41400000=12102000= REAL 41405000=12102000= K, 41410000=12102000= - S, 41415000=12102000= - P, 41420000=12102000= - J, 41425000=12102000= - EL; 41430000=12102000= + S, 41415000=12102000= + P, 41420000=12102000= + J, 41425000=12102000= + EL; 41430000=12102000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41432000 - STREAM PROCEDURE SET(S, D, K, E); 41435000=12103000= + PROCEDURE SET(S, SX, D, DX, K, E); 41435000=12103000= VALUE 41440000=12103000= - K, 41445000=12103000= - E; 41450000=12103000= + SX, DX, K, E; 41445000=12103000= + ARRAY 41446000 + S, D[0]; 41448000 + REAL 41450000 + SX, DX, K, E; 41452000 BEGIN 41455000=12104000= - SI:= S; 41460000=12104000= - SI:= SI+11; 41465000=12104000= - DI:= D; 41470000=12104000= - DI:= DI+3; 41475000=12104000= - DS:= K CHR; 41480000=12104000= - SI:= LOC E; 41485000=12105000= - SI:= SI+6; 41490000=12105000= - DS:= 2 CHR; 41495000=12105000= + STREAMLOCALS; 41456000 + STREAMSETSI(S, SX); 41460000=12104000= + STREAMSKIPSI(+11); 41465000=12104000= + STREAMSETDI(D, DX); 41470000=12104000= + STREAMSKIPDI(+3); 41475000=12104000= + STREAMTRANSFERCHR(K); 41480000=12104000= + STREAMSETLOCSI(E); 41485000=12105000= + STREAMSKIPSI(+6); 41490000=12105000= + STREAMTRANSFERCHR(2); 41495000=12105000= END; 41500000=12106000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41502000 MACROID:= TRUE; 41505000=12107000= P:= (FIXDEFINEINFO:= T).ADDRESS; 41510000=12108000= K:= COUNT; 41515000=12109000= S:= SCRAM; 41520000=12110000= - STREAMTOG:= TRUE & STREAMTOG[1:3:45]; 41525000=12110100= + STREAMTOG:= TRUE & STREAMTOG[46:44:45]; 41525000=12110100= STOPDEFINE:= TRUE; 41530000=12111000= EL:= TABLE(NXTELBT); 41535000=12112000= NXTELBT:= NXTELBT-1; 41540000=12113000= @@ -8340,8 +9431,8 @@ EXIT: 40870000 ELSE 41555000=12116000= DO BEGIN 41560000=12116000= J:= J+1; 41565000=12116000= - SET(INFO[T.LINKR, T.LINKC], ACCUM[1], K, 64*J+12); 41570000=12117000= - ACCUM[1].[12:6]:= K+2; 41575000=12118000= + SET(INFO[T.LINKR,*], T.LINKC, ACCUM, 1, K, 64*J+12); 41570000=12117000= + ACCUM[1].[35:6]:= K+2; 41575000=12118000= ACCUM[0]:= 0; 41580000=12119000= ACCUM[0].CLASS:= DEFINEDID; 41585000=12120000= COUNT:= K+2; 41590000=12121000= @@ -8353,7 +9444,7 @@ EXIT: 40870000 IF EL ^= RTPAREN AND EL ^= RTBRKET OR J ^= P THEN 41620000=12126000= FLAG(141); 41625000=12126000= MACROID:= FALSE; 41630000=12127000= - STREAMTOG:= STREAMTOG.[1:45]; 41635000=12127100= + STREAMTOG:= STREAMTOG.[46:45]; 41635000=12127100= END; 41640000=12128000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41645000=12128000= PROCEDURE SCATTERELBAT; 41650000=13197000= @@ -8385,25 +9476,25 @@ EXIT: 40870000 STOPPER; 41780000=13217000= BEGIN 41785000=13218000= INTEGER 41790000=13219000= - POINTER; 41795000=13219000= + POINTAH; 41795000=13219000= LABEL 41800000=13220000= RECOV; 41805000=13220000= DEFINE 41810000=13220000= ELCLASS = KLASSF #; 41815000=13220000= REAL 41820000=13221000= J, 41825000=13221000= - N, 41830000=13221000= - OCR, 41835000=13221000= - TL, 41840000=13221000= - ADD; 41845000=13221000= - POINTER:= LASTINFO; 41850000=13222000= - WHILE POINTER >= STOPPER DO 41855000=13224000= + N, 41830000=13221000= + OCR, 41835000=13221000= + TL, 41840000=13221000= + ADD; 41845000=13221000= + POINTAH:= LASTINFO; 41850000=13222000= + WHILE POINTAH >= STOPPER DO 41855000=13224000= BEGIN 41860000=13225000= - IF ELCLASS:= (GT1:= TAKE(POINTER)).CLASS = NONLITNO THEN 41865000=13227000= + IF ELCLASS:= (GT1:= TAKE(POINTAH)).CLASS = NONLITNO THEN 41865000=13227000= BEGIN 41870000=13227000= NCII:= NCII-1; 41875000=13228000= - EMITNUM(TAKE(POINTER+1)); 41880000=13229000= - EMITSTORE(MAXSTACK, STD); 41885000=13230000= + EMITNUM(TAKE(POINTAH+1)); 41880000=13229000= + EMITSTORE(MAXSTACK, STD); 41885000=13230000= MAXSTACK:= (G:= MAXSTACK)+1; 41890000=13231000= J:= L; 41895000=13232000= L:= GT1.LINK; 41900000=13232000= @@ -8413,7 +9504,7 @@ EXIT: 40870000 END 41920000=13238000= UNTIL (L:= GT4) = 4095; 41925000=13238000= L:= J; 41930000=13239000= - POINTER:= POINTER-GT1.INCR 41935000=13241000= + POINTAH:= POINTAH-GT1.INCR 41935000=13241000= END 41940000=13243000= ELSE 41945000=13243000= BEGIN 41950000=13243000= @@ -8422,32 +9513,32 @@ EXIT: 40870000 IF ELCLASS = LABELID THEN 41965000=13247000= BEGIN 41970000=13247000= ADD:= GT1.ADDRESS; 41975000=13248000= - IF NOT BOOLEAN(OCR:= TAKE(GIT(POINTER))).[1:1] THEN 41980000=13250000= - IF OCR.[36:12] ^= 0 OR ADD ^= 0 THEN 41985000=13251000= + IF NOT BOOLEAN(OCR:= TAKE(GIT(POINTAH))).[46:1] THEN 41980000=13250000= + IF OCR.[11:12] ^= 0 OR ADD ^= 0 THEN 41985000=13251000= BEGIN 41990000=13251000= GT1:= 160; 41995000=13251000= GO TO RECOV 42000000=13251000= END; 42005000=13251000= IF ADD ^= 0 THEN 42010000=13252000= - PROGDESCBLDR(ADD, TRUE, OCR.[36:10], LDES) 42015000=13253000= + PROGDESCBLDR(ADD, TRUE, OCR.[11:10], LDES) 42015000=13253000= END 42020000=13253000= ELSE 42025000=13253000= IF FALSE THEN 42030000=13254000= BEGIN 42035000=13254000= - IF TAKE(POINTER+1) < 0 THEN 42040000=13256000= + IF TAKE(POINTAH+1) < 0 THEN 42040000=13256000= BEGIN 42045000=13256000= GT1:= 162; 42050000=13256000= GO TO RECOV 42055000=13256000= END; 42060000=13256000= - OCR:= (J:= TAKE(GIT(POINTER))).[24:12]; 42065000=13257000= - N:= GET((J:= J.[36:12])+4); 42070000=13258000= + OCR:= (J:= TAKE(GIT(POINTAH))).[23:12]; 42065000=13257000= + N:= GET((J:= J.[11:12])+4); 42070000=13258000= TL:= L; 42075000=13258000= IF ADD:= GT1.ADDRESS ^= 0 THEN 42080000=13260000= BEGIN 42085000=13260000= IF OCR ^= 0 THEN 42090000=13263000= BEGIN 42095000=13263000= L:= OCR-2; 42100000=13263000= - CALLSWITCH(POINTER); 42105000=13263000= + CALLSWITCH(POINTAH); 42105000=13263000= EMITO(BFW); 42110000=13263000= END; 42115000=13263000= L:= J+11; 42120000=13264000= @@ -8465,30 +9556,30 @@ EXIT: 40870000 FOR J:= 4 STEP 4 UNTIL N DO 42180000=13272000= BEGIN 42185000=13272000= GT1:= GET(L)*4096+GET(L+1); 42190000=13273000= - GOGEN(GT1, BFW) 42195000=13274000= + GOGEN(GT1, BFW) 42195000=13274000= END; 42200000=13274000= END; 42205000=13274000= L:= TL 42210000=13277000= END 42215000=13278000= ELSE 42220000=13278000= IF ELCLASS >= PROCID AND ELCLASS <= INTPROCID THEN 42225000=13279000= - IF TAKE(POINTER+1) < 0 THEN 42230000=13280000= + IF TAKE(POINTAH+1) < 0 THEN 42230000=13280000= BEGIN 42235000=13280000= GT1:= 161; 42240000=13280000= RECOV: 42245000=13281000= - MOVE(9, INFO[POINTER.LINKR, POINTER.LINKC], ACCUM);42250000=13281000= + MOVE(9, INFO[POINTAH.LINKR,*],POINTAH.LINKC, ACCUM,0);42250000=13281000= Q:= ACCUM[1]; 42255000=13282000= FLAG(GT1); 42260000=13282000= ERRORTOG:= TRUE 42265000=13282000= END 42270000=13283000= END; 42275000=13283000= - GT2:= TAKE(POINTER+1); 42280000=13284000= + GT2:= TAKE(POINTAH+1); 42280000=13284000= GT3:= GT2.PURPT; 42285000=13285000= - STACKHEAD[(0 & GT2[12:12:36]) MOD 125]:= TAKE(POINTER).LINK; 42290000=13286000= - POINTER:= POINTER-GT3 42295000=13288000= + STACKHEAD[(0 & GT2[35:35:36]) MOD 125]:= TAKE(POINTAH).LINK; 42290000=13286000= + POINTAH:= POINTAH-GT3 42295000=13288000= END 42300000=13289000= END; 42305000=13289000= - LASTINFO:= POINTER; 42310000=13290000= + LASTINFO:= POINTAH; 42310000=13290000= NEXTINFO:= STOPPER 42315000=13292000= END; 42320000=13292000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%42325000=13292000= @@ -8503,12 +9594,12 @@ COMMENT 42340000 BEGIN 42370000=13300000= REAL 42375000=13301000= WORDCOUNT, 42380000=13301000= - RINX; 42385000=13301000= + RINX; 42385000=13301000= IF RINX:= (NEXTINFO+WORDCOUNT:= (COUNT+18) DIV 8).LINKR ^= NEXTINFO.42390000=13303000= LINKR 42395000=13304000= THEN 42400000=13304000= BEGIN 42405000=13304000= - PUT(125 & (RINX*256-NEXTINFO)[27:40:8], NEXTINFO); 42410000=13304000= + PUT(125 & (RINX*256-NEXTINFO)[20:7:8], NEXTINFO); 42410000=13304000= NEXTINFO:= 256*RINX 42415000=13305000= END; 42420000=13305000= IF SPECTOG THEN 42425000=13305100= @@ -8521,7 +9612,7 @@ COMMENT 42340000 STACKHEAD[SCRAM]:= NEXTINFO; 42460000=13308000= END; 42465000=13308500= ACCUM[1].PURPT:= NEXTINFO-LASTINFO; 42470000=13309000= - MOVE(WORDCOUNT, ACCUM, INFO[NEXTINFO.LINKR, NEXTINFO.LINKC]); 42475000=13310000= + MOVE(WORDCOUNT, ACCUM, 0, INFO[NEXTINFO.LINKR,*], NEXTINFO.LINKC); 42475000=13310000= LASTINFO:= NEXTINFO; 42480000=13311000= NEXTINFO:= NEXTINFO+WORDCOUNT 42485000=13313000= END; 42490000=13313000= @@ -8571,15 +9662,14 @@ COMMENT 42530000 E; 42710000=13342000= J:= J+1; 42715000=13342000= IF((FORMALF:= PTOG) OR (STREAMTOG AND NOT STOPGSP)) AND NOT 42720000=13343000= - P2 42725000=13344000= - THEN 42730000=13344000= + P2 THEN 42725000=13344000= ADDRSF:= PJ:= PJ+1 42735000=13345000= ELSE 42740000=13345000= IF STOPGSP THEN 42745000=13346000= ADDRSF:= 0 42750000=13347000= ELSE 42755000=13347000= - ADDRSF:= GETSPACE(P2, LASTINFO+1); 42760000=13347000= - PUT(TAKE(LASTINFO) & ADDRSF[16:37:11], LASTINFO); 42765000=13348000= + ADDRSF:= GETSPACE(P2, LASTINFO+1); 42760000=13347000= + PUT(TAKE(LASTINFO) & ADDRSF[31:10:11], LASTINFO); 42765000=13348000= END 42770000=13351000= END 42775000=13351000= UNTIL STEPI ^= COMMA OR STOPENTRY; 42780000=13351000= @@ -8595,8 +9685,8 @@ COMMENT 42810000 BEGIN 42830000=13358000= REAL 42835000=13359000= LINKT, 42840000=13359000= - A, 42845000=13359000= - LINKP; 42850000=13359000= + A, 42845000=13359000= + LINKP; 42850000=13359000= LABEL 42855000=13360000= L; 42860000=13360000= LINKT:= STACKHEAD[SCRAM]; 42865000=13361000= @@ -8605,7 +9695,7 @@ COMMENT 42810000 STACKHEAD[SCRAM]:= TAKE(LINKT).LINK 42880000=13363000= ELSE 42885000=13363000= L: IF A:= TAKE(LINKT).LINK = LINKP THEN 42890000=13365000= - PUT((TAKE(LINKT)) & (TAKE(A))[35:35:13], LINKT) 42895000=13366000= + PUT((TAKE(LINKT)) & (TAKE(A))[12:12:13], LINKT) 42895000=13366000= ELSE 42900000=13366000= BEGIN 42905000=13366000= LINKT:= A; 42910000=13366000= @@ -8619,8 +9709,8 @@ COMMENT 42810000 GT1:= LEVELF 42950000=13371000= ELSE 42955000=13371000= GT1:= LEVEL; 42960000=13371000= - ACCUM[0]:= ABS(ELBAT[I] & KLASSF[2:41:7] & REAL(FORMALF)[9:47:1] & 42965000=13375000= - REAL(VONF)[10:47:1] & GT1[11:43:5] & ADDRSF[16:37:11]) 42970000=13375000= + ACCUM[0]:= ABS(ELBAT[I] & KLASSF[45:6:7] & REAL(FORMALF)[38:0:1] & 42965000=13375000= + REAL(VONF)[37:0:1] & GT1[36:4:5] & ADDRSF[31:10:11]) 42970000=13375000= END; 42975000=13375000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%42980000=13375000= PROCEDURE ARRAE; 42985000=13376000= @@ -8631,7 +9721,7 @@ COMMENT 42810000 BETA1; 43010000=13379000= TYPEV:= REALARRAYID; 43015000=13380000= IF T1:= GTA1[J:= J-1] = 0 THEN 43020000=13381000= - J:= J+1; 43025000=13381000= + J:= J+1 43025000=13381000= ELSE 43030000=13383000= IF T1 = OWNV THEN 43035000=13383000= BEGIN 43040000=13384000= @@ -8666,7 +9756,7 @@ BETA1: 43075000 END; 43185000=13406000= STEPIT; 43190000=13406000= END; 43195000=13408000= - PUT(TAKE(LASTINFO) & SAVEINFO[27:40:8], LASTINFO); 43200000=13408000= + PUT(TAKE(LASTINFO) & SAVEINFO[20:7:8], LASTINFO); 43200000=13408000= J:= 1; 43205000=13408500= GTA1[0]:= 0; 43210000=13408500= IF ELCLASS = COMMA THEN 43215000=13409000= @@ -8682,7 +9772,7 @@ BETA1: 43075000 REAL 43265000=13591000= X; 43270000=13591000= BEGIN 43275000=13592000= - INFO[NEXTINFO.LINKR, NEXTINFO.LINKC]:= X; 43280000=13593000= + INFO[NEXTINFO.LINKR, NEXTINFO.LINKC]:= X; 43280000=13593000= NEXTINFO:= NEXTINFO+1 43285000=13595000= END; 43290000=13595000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43295000=13595000= @@ -8697,7 +9787,7 @@ COMMENT THIS PROCEDURE IS CALLED AT THE START OF ANY EXECUTABLE CODE 43310000 IF AJUMP THEN 43340000=13604000= BEGIN 43345000=13605000= ADJUST; 43350000=13605000= - EMITB(BFW, SAVEL, L) 43355000=13607000= + EMITB(BFW, SAVEL, L) 43355000=13607000= END 43360000=13608000= ELSE 43365000=13608000= IF FIRSTX = 4095 THEN 43370000=13609000= @@ -8732,96 +9822,120 @@ COMMENT JUMPCHKNX DETERMINES WHETHER ANY EXECUTABLE CODE HAS BEEN 43420000 SAVECODE; 43515000=13632000= BEGIN 43520000=13632100= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43522000 - STREAM PROCEDURE PRINT(SAVECODE, ADR, FIEL); 43525000=13633000= + PROCEDURE PRINT(SAVECODE, ADR, FIEL); 43525000=13633000= VALUE 43530000=13633000= - SAVECODE, 43535000=13633000= - ADR; 43540000=13633000= + SAVECODE, ADR; 43535000=13633000= + REAL 43536000 + SAVECODE, ADR; 43538000 + ARRAY 43540000 + FIEL[0]; 43542000 BEGIN 43545000=13634000= + STREAMLOCALS; 43546000 LABEL 43550000=13635000= L1; 43555000=13635000= - DI:= FIEL; 43560000=13636000= - DS:= 8 LIT 6" "; 43565000=13636000= - SI:= FIEL; 43570000=13637000= - DS:= 9 WDS; 43575000=13637000= - DI:= DI-3; 43580000=13637000= - SAVECODE(DS:= 38 LIT 6"START OF SAVE SEGMENT; BASE ADDRESS = "; 43585000=13639000= - JUMP OUT TO L1); 43590000=13639000= - DS:= 38 LIT 6" START OF REL SEGMENT; DISK ADDRESS = "; 43595000=13640000= - L1: SI:= LOC ADR; 43600000=13642000= - DS:= 5 DEC; 43605000=13642000= + STREAMSETDI(FIEL, 0); 43560000=13636000= + STREAMSMEARLIT(8, 6" "); 43565000=13636000= + STREAMSETSI(FIEL, 0); 43570000=13637000= + STREAMTRANSFERWDS(9); 43575000=13637000= + STREAMSKIPDI(-3); 43580000=13637000= + THRU SAVECODE DO 43585000=13639000= + BEGIN 43585500 + STREAMTRANSFERLIT(8, 6"START OF"); 43586000 + STREAMTRANSFERLIT(8, 6" SAVE SE"); 43586500 + STREAMTRANSFERLIT(8, 6"GMENT; B"); 43587000 + STREAMTRANSFERLIT(8, 6"ASE ADDR"); 43587500 + STREAMTRANSFERLIT(6, 6"ESS = "); 43588000 + GO TO L1 43590000=13639000= + END; 43592000 + STREAMTRANSFERLIT(8, 6" START O"); 43595000=13640000= + STREAMTRANSFERLIT(8, 6"F REL SE"); 43596000 + STREAMTRANSFERLIT(8, 6"GMENT; D"); 43597000 + STREAMTRANSFERLIT(8, 6"ISK ADDR"); 43598000 + STREAMTRANSFERLIT(6, 6"ESS = "); 43599000 + L1: STREAMSETLOCSI(ADR); 43600000=13642000= + STREAMTRANSFERDEC(5); 43605000=13642000= END PRINT; 43610000=13643000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43612000 - MOVE(1, SAVECODE, CODE(0)); 43615000=13651000= + CODE[0]:= SAVECODE; 43615000=13651000= IF SAVECODE AND INTOG AND NOT DECKTOG THEN 43620000=13651100= FLAG(57); 43625000=13651100= IF LISTER OR SEGSTOG THEN 43630000=13652000= BEGIN 43635000=13652500= - PRINT(SAVECODE, IF SAVECODE THEN CORADR ELSE DISKADR, LIN[**]); 43640000=13653000= + PRINT(REAL(SAVECODE), IF SAVECODE THEN CORADR ELSE DISKADR, LIN); 43640000=13653000= IF NOHEADING THEN 43645000=13653500= DATIME; 43650000=13653500= WRITELINE; 43655000=13653500= END; 43660000=13654000= END SEGMENTSTART; 43665000=13655000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43670000=13655000= - PROCEDURE SEGMENT(SIZE, FR); 43675000=13657000= + PROCEDURE SEGMENT(SIZE, FR); 43675000=13657000= VALUE 43680000=13657000= SIZE, 43685000=13657000= - FR; 43690000=13657000= + FR; 43690000=13657000= INTEGER 43695000=13657000= SIZE, 43700000=13657000= - FR; 43705000=13657000= + FR; 43705000=13657000= BEGIN 43710000=13660000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43712000 - STREAM PROCEDURE PRINT(SIZE, FIEL); 43715000=13661000= + PROCEDURE PRINT(SIZE, FIEL); 43715000=13661000= VALUE 43720000=13661000= SIZE; 43725000=13661000= + REAL 43726000 + SIZE; 43727000 + ARRAY 43728000 + FIEL[0]; 43729000 BEGIN 43730000=13663000= - DI:= FIEL; 43735000=13665000= - DS:= 8 LIT 6" "; 43740000=13665000= - SI:= FIEL; 43745000=13667000= - DS:= 14 WDS; 43750000=13667000= - DI:= DI-16; 43755000=13668000= - DS:= 6 LIT 6"SIZE= "; 43760000=13668000= - SI:= LOC SIZE; 43765000=13670000= - DS:= 4 DEC; 43770000=13670000= - DS:= 6 LIT 6" WORDS" 43775000=13673000= + STREAMLOCALS; 43732000 + STREAMSETDI(FIEL, 0); 43735000=13665000= + STREAMTRANSFERLIT(8, 6" "); 43740000=13665000= + STREAMSETSI(FIEL, 0); 43745000=13667000= + STREAMTRANSFERWDS(14); 43750000=13667000= + STREAMSKIPDI(-16); 43755000=13668000= + STREAMTRANSFERLIT(6, 6"SIZE= "); 43760000=13668000= + STREAMSETLOCSI(SIZE); 43765000=13670000= + STREAMTRANSFERDEC(4); 43770000=13670000= + STREAMTRANSFERLIT(6, 6" WORDS") 43775000=13673000= END PRINT; 43780000=13673000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43782000 - STREAM PROCEDURE DOIT(C, A, I, S, F, W); 43785000=13673100= + PROCEDURE DOIT(C, A, I, IX, S, SX, F, W); 43785000=13673100= VALUE 43790000=13673100= - C, 43795000=13673100= - A, 43800000=13673100= - F, 43805000=13673100= - W; 43810000=13673100= + C, A, IX, SX, F, W; 43795000=13673100= + REAL 43796000 + C, A, IX, SX, F, W; 43798000 + ARRAY 43800000 + I, S[0]; 43802000 BEGIN 43815000=13673150= - LOCAL N; 43820000=13673150= - DI:= S; 43825000=13673200= - DS:= 8 LIT 6" "; 43830000=13673200= - SI:= S; 43835000=13673200= - DS:= 9 WDS; 43840000=13673200= - DI:= DI-8; 43845000=13673250= - SI:= LOC W; 43850000=13673250= - DS:= 4 DEC; 43855000=13673250= - SI:= I; 43860000=13673300= - SI:= SI+10; 43865000=13673300= - DI:= LOC N; 43870000=13673300= - DI:= DI+7; 43875000=13673300= - DS:= CHR; 43880000=13673300= - DI:= S; 43885000=13673350= - SI:= LOC F; 43890000=13673350= - SI:= SI+7; 43895000=13673350= - DS:= CHR; 43900000=13673350= - SI:= LOC C; 43905000=13673350= - DS:= 3 DEC; 43910000=13673400= - DS:= 4 DEC; 43915000=13673400= - SI:= I; 43920000=13673400= - SI:= SI+11; 43925000=13673400= - DS:= N CHR; 43930000=13673400= + STREAMLOCALS; 43816000 + REAL 43820000=13673150= + N; 43822000 + STREAMSETDI(S, SX); 43825000=13673200= + STREAMSMEARLIT(8, 6" "); 43830000=13673200= + STREAMSETSI(S, SX); 43835000=13673200= + STREAMTRANSFERWDS(9); 43840000=13673200= + STREAMSKIPDI(-8); 43845000=13673250= + STREAMSETLOCSI(W); 43850000=13673250= + STREAMTRANSFERDEC(4); 43855000=13673250= + STREAMSETSI(I, IX); 43860000=13673300= + STREAMSKIPSI(+10); 43865000=13673300= + STREAMSETLOCDI(N); 43870000=13673300= + STREAMSKIPDI(+7); 43875000=13673300= + STREAMTRANSFERCHR(1); 43880000=13673300= + N:= STREAMTEMPD[0]; 43882000 + STREAMSETDI(S, SX); 43885000=13673350= + STREAMSETLOCSI(F); 43890000=13673350= + STREAMKIPSI(+7); 43895000=13673350= + STREAMTRANSFERCHR(1); 43900000=13673350= + STREAMSETLOCSI(C); 43905000=13673350= + STREAMTRANSFERDEC(3); 43910000=13673400= + STREAMTRANSFERDEC(4); 43915000=13673400= + STREAMSETSI(I, IX); 43920000=13673400= + STREAMSKIPSI(+11); 43925000=13673400= + STREAMTRANSFERCHR(N); 43930000=13673400= END DOIT; 43935000=13673450= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43936000 IF LISTER OR SEGSTOG THEN 43940000=13674000= BEGIN 43945000=13674500= - PRINT(SIZE, LIN[**]); 43950000=13675000= + PRINT(SIZE, LIN[*]); 43950000=13675000= IF NOHEADING THEN 43955000=13676000= DATIME; 43960000=13676000= WRITELINE; 43965000=13676000= @@ -8833,48 +9947,13 @@ COMMENT JUMPCHKNX DETERMINES WHETHER ANY EXECUTABLE CODE HAS BEEN 43420000 KLASSF:= TAKE(PROINFO).CLASS; 43995000=13677200= IF FR > 1024 THEN 44000000=13677250= FR:= FR-1024; 44005000=13677250= - DOIT(KLASSF, FR, INFO[PROINFO.LINKR, PROINFO.LINKC], 44010000=13677400= - TWXA[0], SAF, SIZE); 44015000=13677400= - WRITE(STUFF, 10, TWXA[**]); 44020000=13677500= + DOIT(KLASSF, FR, INFO[PROINFO.LINKR,*], PROINFO.LINKC, 44010000=13677400= + TWXA, 0, SAF, SIZE); 44015000=13677400= + WRITE(STUFF, 10, TWXA[*]); 44020000=13677500= END; 44025000=13677600= IF SIZE > SEGSIZEMAX THEN 44030000=13678000= SEGSIZEMAX:= SIZE; 44035000=13678000= END SEGMENT; 44040000=13681000= - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%44045000=13681000= - STREAM PROCEDURE MOVECODE(EDOC, TEDOC); 44050000=13683000= - BEGIN 44055000=13684000= - LOCAL T1, T2, T3; 44060000=13684000= - SI:= EDOC; 44065000=13685000= - T1:= SI; 44070000=13685000= - SI:= TEDOC; 44075000=13686000= - T2:= SI; 44080000=13686000= - SI:= LOC EDOC; 44085000=13687000= - SI:= SI+3; 44090000=13688000= - DI:= LOC T3; 44095000=13689000= - DI:= DI+5; 44100000=13690000= - SKIP 3 DB; 44105000=13691000= - (IF SB THEN DS:= 1 SET ELSE DS:= 1 RESET;SKIP 1 SB); 44110000=13692000= - SI:= LOC EDOC; 44115000=13693000= - DI:= LOC T2; 44120000=13694000= - DS:= 5 CHR; 44125000=13695000= - (IF SB THEN DS:= 1 SET ELSE DS:= 1 RESET;SKIP 1 SB); 44130000=13696000= - DI:= T3; 44135000=13697000= - SI:= LOC T2; 44140000=13698000= - DS:= WDS; 44145000=13699000= - DI:= LOC T3; 44150000=13700000= - DI:= DI+5; 44155000=13701000= - SKIP 3 DB; 44160000=13702000= - SI:= LOC EDOC; 44165000=13703000= - SI:= SI+3; 44170000=13704000= - (IF SB THEN DS:= 1 SET ELSE DS:= 1 RESET;SKIP 1 SB); 44175000=13705000= - SI:= LOC TEDOC; 44180000=13706000= - DI:= LOC T1; 44185000=13707000= - DS:= 5 CHR; 44190000=13708000= - (IF SB THEN DS:= 1 SET ELSE DS:= 1 RESET;SKIP 1 SB); 44195000=13709000= - DI:= T3; 44200000=13710000= - SI:= LOC T1; 44205000=13711000= - DS:= WDS; 44210000=13712000= - END; 44215000=13713000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%44216000 PROCEDURE ENTER(TYPE); 44220000=13714000= VALUE 44225000=13715000= @@ -8898,7 +9977,7 @@ COMMENT JUMPCHKNX DETERMINES WHETHER ANY EXECUTABLE CODE HAS BEEN 43420000 ENTRY(TYPE) 44315000=13730000= END; 44320000=13730000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%44325000=13730000= - PROCEDURE HTTEOAP(GOTSTORAGE, RELAD, STOPPER, PRTAD); 44330000=13731000= + PROCEDURE HTTEOAP(GOTSTORAGE, RELAD, STOPPER, PRTAD); 44330000=13731000= VALUE 44335000=13732000= GOTSTORAGE, 44340000=13732000= RELAD, 44345000=13732000= @@ -8920,8 +9999,8 @@ COMMENT JUMPCHKNX DETERMINES WHETHER ANY EXECUTABLE CODE HAS BEEN 43420000 EMITO(XIT); 44425000=13743000= CONSTANTCLEAN; 44430000=13744000= PURGE(STOPPER); 44435000=13745000= - MOVE(1, CODE(0), Z); 44440000=13746000= - PROGDESCBLDR(PRTAD, BOOLEAN(Z), (L+3) DIV 4, PDES); 44445000=13746000= + Z:= CODE[0]; 44440000=13746000= + PROGDESCBLDR(PRTAD, BOOLEAN(Z), (L+3) DIV 4, PDES); 44445000=13746000= END HTTEOAP; 44450000=13747000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%44455000=13747000= PROCEDURE INLINE; 44460000=13748000= @@ -8960,7 +10039,7 @@ L1: IF STEPI > IDMAX THEN 44615000 FLAG(465); 44625000=13754000= GO TO L2 44630000=13754000= END; 44635000=13754000= - ACCUM[0]:= 0 & P[16:37:11] & LOCLID[2:41:7] & SCRAM[35:35:13]; 44640000=13755000= + ACCUM[0]:= 0 & P[31:10:11] & LOCLID[45:6:7] & SCRAM[12:12:13]; 44640000=13755000= E; 44645000=13755500= IF FLIPFLOP THEN 44650000=13755500= BEGIN 44655000=13755500= @@ -9009,7 +10088,7 @@ L2: IF ELCLASS = COLON THEN 44730000 L3: ELBAT[I]:= TAKE(SN); 44870000=13767000= SCATTERELBAT; 44875000=13767000= ADDRSF:= P-ADDRSF; 44880000=13767000= - PUT(ELBAT[I] & ADDRSF[16:37:11] & STACKHEAD[LINKF][33:33:15], SN); 44885000=13768000= + PUT(ELBAT[I] & ADDRSF[31:10:11] & STACKHEAD[LINKF][14:14:15], SN); 44885000=13768000= STACKHEAD[LINKF]:= SN; 44890000=13769000= SN:= SN+INCRF; 44895000=13769000= IF ADDRSF ^= PN THEN 44900000=13770000= @@ -9096,10 +10175,10 @@ COMMENT SOP IS TRUE IF THE BLOCK WAS CALLED BY ITSELF THROUGH THE 45040000 DEFINE 45305000=14022000= NLOCS = 10 #, 45310000=14022000= LOCBEGIN = PRTI #, 45315000=14023000= - LBP = [36:12] #, 45320000=14023100= + LBP = [11:12] #, 45320000=14023100= SPACEITDOWN = BEGIN 45325000=14023100= - WRITE(LINE[DBL]); 45330000=14023100= - WRITE(LINE[DBL]) 45335000=14023100= + WRITE(LINE[SPACE 2]); 45330000=14023100= + WRITE(LINE[SPACE 2]) 45335000=14023100= END #; 45340000=14023100= BOOLEAN 45345000=14025000= GOTSTORAGE; 45350000=14025000= @@ -9138,7 +10217,7 @@ COMMENT SOP IS TRUE IF THE BLOCK WAS CALLED BY ITSELF THROUGH THE 45040000 BEGIN 45515000=14039000= GT1:= BUMPL; 45520000=14039000= CONSTANTCLEAN; 45525000=14040000= - EMITB(BFW, GT1, L) 45530000=14042000= + EMITB(BFW, GT1, L) 45530000=14042000= END 45535000=14044000= END 45540000=14044000= ELSE 45545000=14044000= @@ -9192,9 +10271,9 @@ START: 45645000 END; 45785000=14090000= TYPEV:= G.CLASS; 45790000=14091000= G.ADDRESS:= F:= F+1; 45795000=14115000= - PUT(G, BUP); 45800000=14116000= + PUT(G, BUP); 45800000=14116000= G.INCR:= GT1; 45805000=14116000= - PUT(G, MARK+PJ); 45810000=14118000= + PUT(G, MARK+PJ); 45810000=14118000= BUP:= BUP-TAKE(BUP+1).PURPT 45815000=14119000= END 45820000=14120000= UNTIL PJ:= PJ-1 = 0 45825000=14121000= @@ -9248,29 +10327,27 @@ INTEGERDEC: 46050000 GO TO START; 46065000=14141000= MONITORDEC: 46070000=14142000= IF SPECTOG THEN 46075000=14143000= - BEGIN 46080000=14143000= - COMMENT ERROR 463 MEANS THAT A MONITOR 46085000=14143000= + BEGIN COMMENT ERROR 463 MEANS THAT A MONITOR 46080000=14143000= DECLARATION APPEARS IN THE SPECIFICATION 46090000=14144000= PART OF A PROCEDURE; 46095000=14145000= FLAG(463); 46100000=14146000= END; 46105000=14147000= DO 46110000=14148000= - UNTIL FALSE; 46115000=14148000= + UNTIL FALSE; % ?? REALLY ?? THIS MUST BE DEAD CODE 46115000=14148000= DUMPDEC: 46120000=14149000= IF SPECTOG THEN 46125000=14150000= - BEGIN 46130000=14150000= - COMMENT ERROR 464 MEANS A DUMP DECLARATION 46135000=14150000= + BEGIN COMMENT ERROR 464 MEANS A DUMP DECLARATION 46130000=14150000= APPEARS IN THE SPECIFICATION PART OF A 46140000=14151000= PROCEDURE; 46145000=14152000= FLAG(464); 46150000=14153000= END; 46155000=14154000= DO 46160000=14155000= - UNTIL FALSE; 46165000=14155000= + UNTIL FALSE; % ?? MORE DEAD CODE ?? 46165000=14155000= ARRAYDEC: 46170000=14156000= ARRAE; 46175000=14156000= GO TO START; 46180000=14156000= FILEDEC: 46185000=14158000= -INDEX: 46190000=14158000= +INDEC: 46190000=14158000= OUTDEC: 46195000=14160000= GOTSCHK: 46200000=14160000= GOTSTORAGE:= NOT SPECTOG OR GOTSTORAGE; 46205000=14160000= @@ -9315,7 +10392,7 @@ SUBDEC: 46300000 IF TYPEV = REALSUBID THEN 46400000=14167000= IF GET(L-2) ^= 533 THEN 46405000=14168000= FLAG(58); 46410000=14168000= - PUT(TAKE(T) & L[24:36:12], T); 46415000=14168000= + PUT(TAKE(T) & L[23:11:12], T); 46415000=14168000= CONSTANTCLEAN; 46420000=14168500= END; 46425000=14169000= GO TO START; 46430000=14170000= @@ -9339,9 +10416,9 @@ SWITCHDEC: 46505000 START; 46520000=14202000= INTEGER 46525000=14203000= GT1, 46530000=14203000= - GT2, 46535000=14203000= - GT4, 46540000=14203000= - GT5; 46545000=14203000= + GT2, 46535000=14203000= + GT4, 46540000=14203000= + GT5; 46545000=14203000= BOOLEAN 46550000=14204000= TB1; 46555000=14204000= STOPENTRY:= NOT SPECTOG; 46560000=14205000= @@ -9359,8 +10436,8 @@ SWITCHDEC: 46505000 GT1:= GT1+1; 46620000=14221000= END; 46625000=14222000= ; COMMENT 46630000=14222500= - UNTIL STEPI!COMMA; 46635000=14223000= -PUT(GT1, GT2); 46640000=14224000= + UNTIL STEPI^=COMMA; 46635000=14223000= +PUT(GT1, GT2); 46640000=14224000= STOPENTRY:= STOPGSP:= FALSE; 46645000=14251000= END SWITCHDEC; 46650000=14252000= GO TO START; 46655000=14253000= @@ -9372,20 +10449,24 @@ DEFINEDEC: 46660000 J, 46685000=14254100= K; 46690000=14254100= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%46692000 - BOOLEAN 46695000=14254200= - STREAM PROCEDURE PARM(S, D, K, J); 46700000=14254200= + BOOLEAN PROCEDURE PARM(S, SX, D, K, J); 46695000=14254200= VALUE 46705000=14254200= - K, 46710000=14254200= - J; 46715000=14254200= + SX, K, J; 46710000=14254200= + ARRAY 46712000 + S, D[0]; 46714000 + REAL 46716000 + SX, K, J; 46718000 BEGIN 46720000=14254300= - SI:= S; 46725000=14254300= - SI:= SI+2; 46730000=14254300= - DI:= D; 46735000=14254300= - DI:= DI+2; 46740000=14254300= - IF K SC ^= DC THEN 46745000=14254400= - TALLY:= 1 DI:= LOC J; 46750000=14254500= - DI:= DI+7; 46755000=14254500= - IF SC ^= DC THEN 46760000=14254600= + STREAMLOCALS; 46722000 + STREAMSETSI(S, SX); 46725000=14254300= + STREAMSKIPSI(+2); 46730000=14254300= + STREAMSETDI(D, 0); 46735000=14254300= + STREAMSKIPDI(+2); 46740000=14254300= + IF STREAMCOMPARENEQ(K) THEN 46745000=14254400= + TALLY:= 1; 46750000=14254500= + STREAMSETLOCDI(J); 46752000 + STREAMSKIPDI(+7); 46755000=14254500= + IF STREAMCOMPARENEQ(1) THEN 46760000=14254600= TALLY:= 1; 46765000=14254600= PARM:= TALLY; 46770000=14254700= END; 46775000=14254800= @@ -9395,7 +10476,7 @@ DEFINEDEC: 46660000 DO BEGIN 46790000=14257000= STOPDEFINE:= TRUE; 46795000=14258000= STEPIT; 46800000=14259000= - MOVE(9, ACCUM[1], GTA1); 46805000=14259000= + MOVE(9, ACCUM, 1, GTA1, 0); 46805000=14259000= K:= COUNT+1; 46810000=14259010= J:= GTA1[0]; 46815000=14259010= ENTRY(DEFINEDID); 46820000=14259010= @@ -9406,8 +10487,8 @@ DEFINEDEC: 46660000 DO BEGIN 46845000=14259060= STOPDEFINE:= TRUE; 46850000=14259060= STEPIT; 46855000=14259070= - IF(J:= J+1) > 9 OR PARM(ACCUM[1], GTA1, K, J) OR K 46860000=14259090= - > 62 46865000=14259090= + IF(J:= J+1) > 9 OR PARM(ACCUM, 1, GTA1, K, J) 46860000=14259090= + OR K > 62 46865000=14259090= THEN 46870000=14259090= BEGIN 46875000=14259090= ERR(141); 46880000=14259090= @@ -9420,7 +10501,7 @@ DEFINEDEC: 46660000 ERR(141); 46915000=14259120= STOPDEFINE:= TRUE; 46920000=14259130= STEPIT; 46925000=14259140= - PUT(TAKE(LASTINFO) & J[16:37:11], LASTINFO); 46930000=14259150= + PUT(TAKE(LASTINFO) & J[31:10:11], LASTINFO); 46930000=14259150= END; 46935000=14259160= IF ELCLASS ^= RELOP THEN 46940000=14261000= BEGIN 46945000=14262000= @@ -9428,7 +10509,7 @@ DEFINEDEC: 46660000 I:= I-1; 46955000=14264000= END; 46960000=14265000= MACROID:= TRUE; 46965000=14265900= - DEFINEGEN(FALSE, J); 46970000=14266000= + DEFINEGEN(FALSE, J); 46970000=14266000= MACROID:= FALSE; 46975000=14266100= END 46980000=14268000= UNTIL STEPI ^= COMMA; 46985000=14268000= @@ -9440,12 +10521,11 @@ PROCEDUREDEC: 47010000 BEGIN 47015000=14271000= LABEL 47020000=14272000= START, 47025000=14272000= - START1; 47030000=14272000= + START1; 47030000=14272000= LABEL 47035000=14273000= START2; 47040000=14273000= BOOLEAN 47045000=14274000= - FWDTOG; 47050000=14274000= - COMMENT THIS TOGGLE IS THE FORWARD DEC INDICATOR; 47055000=14274000= + FWDTOG; COMMENT THIS TOGGLE IS THE FORWARD DEC INDICATOR; 47050000=14274000= IF NOT SPECTOG THEN 47060000=14275000= FUNCTOG:= FALSE; 47065000=14275000= FWDTOG:= FALSE; 47070000=14276000= @@ -9457,8 +10537,8 @@ PROCEDUREDEC: 47010000 TYPEV:= STRPROCID 47100000=14282000= ELSE 47105000=14282000= BEGIN 47110000=14283000= - IF TYPEV:= PROCID+G > INTSTRPROCID OR TYPEV < BOOSTRPROCID 47115000=14286000= - THEN 47120000=14286000= + IF TYPEV:= PROCID+G > INTSTRPROCID OR 47115000=14286000= + TYPEV < BOOSTRPROCID THEN 47120000=14286000= FLAG(004); 47125000=14286000= IF NOT SPECTOG THEN 47130000=14287000= FUNCTOG:= TRUE; 47135000=14288000= @@ -9469,8 +10549,8 @@ PROCEDUREDEC: 47010000 IF G = SAVEV OR G = 0 THEN 47160000=14292000= TYPEV:= PROCID 47165000=14293000= ELSE 47170000=14293000= - IF TYPEV:= REALSTRPROCID+G < BOOPROCID OR TYPEV > INTPROCID 47175000=14295000= - THEN 47180000=14295000= + IF TYPEV:= REALSTRPROCID+G < BOOPROCID 47175000=14295000= + OR TYPEV > INTPROCID THEN 47180000=14295000= FLAG(005) 47185000=14296000= ELSE 47190000=14296000= BEGIN 47195000=14296000= @@ -9494,7 +10574,7 @@ COMMENT CHECK TO SEE IF DECLARED FORWARD PREVIOUSLY ;47250000 PROINFO:= ELBAT[I]; 47285000=14314000= MARK:= LINKF+INCRF; 47290000=14314000= STEPIT; 47295000=14315000= - PUT(-G, LINKF+1); 47300000=14315000= + PUT(-G, LINKF+1); 47300000=14315000= END 47305000=14318000= ELSE 47310000=14318000= BEGIN 47315000=14318000= @@ -9505,7 +10585,7 @@ COMMENT CHECK TO SEE IF DECLARED FORWARD PREVIOUSLY ;47250000 MARK:= NEXTINFO; 47340000=14319000= PUTNBUMP(0); 47345000=14319000= STOPGSP:= FALSE; 47350000=14319500= - PROINFO:= TAKE(LASTINFO) & LASTINFO[35:35:13]; 47355000=14320000= + PROINFO:= TAKE(LASTINFO) & LASTINFO[12:12:13]; 47355000=14320000= PROAD:= ADDRSF; 47360000=14320000= P2:= STOPENTRY:= FALSE 47365000=14322000= END; 47370000=14322000= @@ -9529,12 +10609,12 @@ COMMENT: THE FOLLOWING 8 STATEMENTS FOOL THE SCANNER AND BLOCK,PUTTING 47420000 ENTRY(SECRET); 47460000=14333000= IF FWDTOG THEN 47465000=14333100= BEGIN 47470000=14333200= - IF GT1:= TAKE(MARK).[40:8] ^= PJ THEN 47475000=14333300= + IF GT1:= TAKE(MARK).[7:8] ^= PJ THEN 47475000=14333300= FLAG(48); % WRONG 47480000=14333300= % NUMBER OF PARAMETERS. WE DON"T WANT TO CLOBBER INFO. 47485000=14333400= END 47490000=14334000= ELSE 47495000=14334000= - PUT(PJ, MARK); 47500000=14334000= + PUT(PJ, MARK); 47500000=14334000= P:= PJ; 47505000=14335000= IF ELCLASS ^= RTPAREN THEN 47510000=14337000= FLAG(008); 47515000=14337000= @@ -9552,7 +10632,7 @@ COMMENT MARK PARAMETERS VALUE IF THERE IS A VALUE PART; 47535000 IF G:= ELBAT[I].ADDRESS = 0 OR G > PJ THEN 47575000=14350000= FLAG(010); 47580000=14351000= G:= TAKE(ELBAT[I]); 47585000=14352000= - PUT(G & 1[10:47:1], ELBAT[I]) 47590000=14354000= + PUT(G & 1[37:0:1], ELBAT[I]) 47590000=14354000= END 47595000=14356000= UNTIL STEPI ^= COMMA; 47600000=14356000= IF ELCLASS ^= SEMICOLON THEN 47605000=14358000= @@ -9605,7 +10685,7 @@ HF: BEGIN 47785000 SEGMENTSTART(TRUE); 47840000=14387000= PJ:= P; 47845000=14387000= PTOG:= FALSE; 47850000=14388000= - PUT(TAKE(GIT(PROINFO)) & L[28:36:12], GIT(PROINFO)); 47855000=14388100= + PUT(TAKE(GIT(PROINFO)) & L[19:11:12], GIT(PROINFO)); 47855000=14388100= IF TESTLEV THEN 47860000=14389000= BEGIN 47865000=14389000= EMITO(584); 47870000=14389000= @@ -9633,15 +10713,15 @@ HF: BEGIN 47785000 END 47980000=14411000= END; 47985000=14411000= IF FUNCTOG THEN 47990000=14411100= - PUT((Z:= TAKE(PROINFO)) & LOCLID[2:41:7] & 47995000=14411300= - (PJ+2+REAL(TESTLEV))[16:37:11], PROINFO); 48000000=14411300= + PUT((Z:= TAKE(PROINFO)) & LOCLID[45:6:7] & 47995000=14411300= + (PJ+2+REAL(TESTLEV))[31:10:11], PROINFO); 48000000=14411300= COMPOUNDTAIL 48005000=14413000= END 48010000=14415000= ELSE 48015000=14415000= BEGIN 48020000=14415000= IF FUNCTOG THEN 48025000=14415100= - PUT((Z:= TAKE(PROINFO)) & LOCLID[2:41:7] & 48030000=14415300= - (PJ+2+REAL(TESTLEV))[16:37:11], PROINFO); 48035000=14415300= + PUT((Z:= TAKE(PROINFO)) & LOCLID[45:6:7] & 48030000=14415300= + (PJ+2+REAL(TESTLEV))[31:10:11], PROINFO); 48035000=14415300= STREAMSTMT; 48040000=14415400= END; 48045000=14415500= COMMENT THE FOLLOWING BLOCK CONSTITUTES THE STREAM PROCEDURE PURGE; 48050000=14416000= @@ -9654,8 +10734,8 @@ HF: BEGIN 47785000 SED = 6 #, 48085000=14419000= TRW = 5 #; 48090000=14419000= DEFINE 48095000=14420000= - LOC = [36:12] #, 48100000=14420000= - LASTGT = [24:12] #; 48105000=14420000= + LOC = [11:12] #, 48100000=14420000= + LASTGT = [23:12] #; 48105000=14420000= J:= LASTINFO; 48110000=14421000= NLOC:= NLAB:= 0; 48115000=14422000= DO BEGIN 48120000=14424000= @@ -9665,7 +10745,7 @@ HF: BEGIN 47785000 BEGIN 48140000=14428000= IF GT1 < 0 THEN 48145000=14429000= PUT(TAKE(GT2:= MARK+P-GT1.ADDRESS+1) & 48150000=14431000= - FILEID[2:41:7], GT2); 48155000=14431000= + FILEID[45:6:7], GT2); 48155000=14431000= END 48160000=14433000= ELSE 48165000=14433000= NLOC:= NLOC+1; 48170000=14433000= @@ -9677,15 +10757,15 @@ HF: BEGIN 47785000 IF (GT3:= TAKE(GIT(J))).LASTGT ^= 0 AND GT3.LOC = 0 48200000=14438000= THEN 48205000=14438000= BEGIN 48210000=14439000= - MOVE(9, INFO[0, J], ACCUM[0]); 48215000=14440000= + MOVE(9, INFO[0,*], J, ACCUM, 0); 48215000=14440000= Q:= ACCUM[1]; 48220000=14441000= FLAG(267); 48225000=14442000= ERRORTOG:= TRUE; 48230000=14443000= END; 48235000=14444000= END; 48240000=14445000= G:= (GT2+TAKE(J+1)).PURPT; 48245000=14446000= - IF GT1.[2:8] ^= STLABID*2+1 THEN 48250000=14447000= - STACKHEAD[(0 & GT2[12:12:36]) MOD 125]:= TAKE(J).LINK; 48255000=14448000= + IF GT1.[45:8] ^= STLABID*2+1 THEN 48250000=14447000= + STACKHEAD[(0 & GT2[35:35:36]) MOD 125]:= TAKE(J).LINK; 48255000=14448000= END 48260000=14449000= UNTIL J:= J-G <= 1; 48265000=14449000= IF TESTLEV THEN 48270000=14451000= @@ -9695,16 +10775,16 @@ HF: BEGIN 47785000 END 48290000=14451100= ELSE 48295000=14451100= EMIT(0); 48300000=14451100= - PUT(TAKE(MARK) & NLOC[1:42:6] & L[16:36:12] & P[40:40:8], 48305000=14451200= + PUT(TAKE(MARK) & NLOC[46:5:6] & L[31:11:12] & P[7:7:8], 48305000=14451200= MARK); 48310000=14451200= IF FUNCTOG THEN 48315000=14452000= - PUT(Z, PROINFO); 48320000=14457000= + PUT(Z, PROINFO); 48320000=14457000= STREAMWORDS; 48325000=14460000= STREAMTOG:= FALSE; 48330000=14461000= IF NOT TESTLEV THEN 48335000=14461100= BEGIN 48340000=14461100= - PROGDESCBLDR(PROAD, TRUE, (L+3) DIV 4, CHAR); 48345000=14461100= - SEGMENT((L+3) DIV 4, PROINFO.ADDRESS); 48350000=14461200= + PROGDESCBLDR(PROAD, TRUE, (L+3) DIV 4, CHAR); 48345000=14461100= + SEGMENT((L+3) DIV 4, PROINFO.ADDRESS); 48350000=14461200= RIGHT(L); 48355000=14461300= L:= 0; 48360000=14461300= END; 48365000=14461400= @@ -9718,7 +10798,7 @@ HF: BEGIN 47785000 BEGIN 48405000=14466000= IF STEPI = FORWARDV THEN 48410000=14468000= BEGIN 48415000=14469000= - PUT(-TAKE(G:= PROINFO.LINK+1), G); 48420000=14470000= + PUT(-TAKE(G:= PROINFO.LINK+1), G); 48420000=14470000= PURGE(PINFOO); 48425000=14471000= STEPIT 48430000=14473000= END 48435000=14475000= @@ -9741,9 +10821,9 @@ HF: BEGIN 47785000 IF NESTOG THEN 48520000=14483100= BEGIN 48525000=14483200= GT1:= TAKE(PROINFO).ADDRESS; 48530000=14483200= - NESTPRT[GT1]:= 0 & PROINFO[35:35:13] & CALLINFO[22:35:13];48535000=14483300= + NESTPRT[GT1]:= 0 & PROINFO[12:12:13] & CALLINFO[25:12:13];48535000=14483300= CALL[CALLINFO-1]:= (TAKE(GIT(PROINFO))+NESTCTR-511) & 48540000=14483500= - CALLX[22:35:13]; 48545000=14483500= + CALLX[25:12:13]; 48545000=14483500= END; 48550000=14483600= L:= 0; 48555000=14483700= GO TO STOP 48560000=14484000= @@ -9752,7 +10832,7 @@ HF: BEGIN 47785000 FLAG(052); 48575000=14486000= RELAD:= L; 48580000=14487000= STMT; 48585000=14488000= - HTTEOAP(FALSE, RELAD, PINFOO, PROAD); 48590000=14489000= + HTTEOAP(FALSE, RELAD, PINFOO, PROAD); 48590000=14489000= END; 48595000=14490000= STOP: 48600000=14492000= SUBLEVEL:= TSUBLEVEL; 48605000=14492000= @@ -9801,14 +10881,14 @@ CALLSTATEMENT: 48680000 END; 48820000=14525000= FUNCTOG:= FUNCTOGO; 48825000=14599000= IF SOP THEN 48830000=14600000= - HTTEOAP(FALSE, FIRSTX, NINFOO, BLKAD) 48835000=14601000= + HTTEOAP(FALSE, FIRSTX, NINFOO, BLKAD) 48835000=14601000= ELSE 48840000=14601000= BEGIN 48845000=14601000= IF NESTOG THEN 48850000=14601000= SORTNEST; 48855000=14601000= PURGE(NINFOO); 48860000=14601000= END; 48865000=14601000= - SEGMENT((L+3) DIV 4, PROADD); 48870000=14602000= + SEGMENT((L+3) DIV 4, PROADD); 48870000=14602000= IF LEVEL > 1 THEN 48875000=14603000= RIGHT(L); 48880000=14603000= IF LEVEL:= LEVEL-1 = 0 THEN 48885000=14604000= @@ -9853,25 +10933,24 @@ CALLSTATEMENT: 48680000 SYNTAX CHECKS DEPEND UPON A PARTICULAR VALUE OF P1 . 49080000=15068000= ; 49085000=15069000= PROCEDURE VARIABLE(P1); 49090000=15070000= - INTEGER 49095000=15070000= + REAL 49095000=15070000= P1; 49100000=15070000= BEGIN 49105000=15071000= REAL 49110000=15072000= TALL, COMMENT ELBAT WORD FOR VARIABLE; 49115000=15072000= - T1, COMMENT 1ST INTEGER OF PARTIAL WORD SYNTAX; 49120000=15073000= - T2, COMMENT 2ND INTEGER OF PARTIAL WORD SYNTAX; 49125000=15074000= - J; 49130000=15075000= - COMMENT SUBSCRIPT COUNTER ; 49135000=15075000= + T1, COMMENT 1ST INTEGER OF PARTIAL WORD SYNTAX; 49120000=15073000= + T2, COMMENT 2ND INTEGER OF PARTIAL WORD SYNTAX; 49125000=15074000= + J; COMMENT SUBSCRIPT COUNTER ; 49130000=15075000= LABEL 49140000=15076000= EXIT, 49145000=15076000= - L1, 49150000=15076000= - LAST, 49155000=15076000= - NEXT, 49160000=15076000= - JAZZ, 49165000=15076000= - ITUP, 49170000=15076000= - LASS; 49175000=15076000= + L1, 49150000=15076000= + LAST, 49155000=15076000= + NEXT, 49160000=15076000= + JAZZ, 49165000=15076000= + ITUP, 49170000=15076000= + LASS; 49175000=15076000= DEFINE 49180000=15076100= - FORMALNAME = [9:2] = 2 #, 49185000=15076100= + FORMALNAME = [38:2] = 2 #, 49185000=15076100= LONGID = NAMEID #; 49190000=15076100= BOOLEAN 49195000=15076200= SPCLMON; 49200000=15076200= @@ -9885,7 +10964,7 @@ CALLSTATEMENT: 48680000 END; 49240000=15081000= 49245000=15082000= COMMENT 211 VARIABLE-FUNCTION IDENTIFIER USED OUTSIDE OF ITS SCOPE*; 49250000=15082000= - TALL:= TALL & (ELCLASS+4)[2:41:7] & 513[16:37:11]; 49255000=15083000= + TALL:= TALL & (ELCLASS+4)[45:6:7] & 513[31:10:11]; 49255000=15083000= END 49260000=15085000= ELSE 49265000=15085000= CHECKER(TALL); 49270000=15085000= @@ -9909,7 +10988,7 @@ COMMENT 211 VARIABLE-FUNCTION IDENTIFIER USED OUTSIDE OF ITS SCOPE*; 49250000 STACKCT:= REAL(T1 ^= 0); 49360000=15098000= STEPIT; 49365000=15098000= AEXP; 49370000=15099000= - EMITD(48-T2, T1, T2); 49375000=15100000= + EMITD(48-T2, T1, T2); 49375000=15100000= STACKCT:= 0; 49380000=15101500= GT1:= 49385000=15102000= IF TALL.CLASS = INTID THEN 49390000=15102000= @@ -9930,7 +11009,7 @@ COMMENT 211 VARIABLE-FUNCTION IDENTIFIER USED OUTSIDE OF ITS SCOPE*; 49250000 EMITO(GT1); 49465000=15106200= END 49470000=15107000= ELSE 49475000=15107000= - EMITPAIR(TALL.ADDRESS, GT1); 49480000=15107000= + EMITPAIR(TALL.ADDRESS, GT1); 49480000=15107000= END 49485000=15110000= ELSE 49490000=15110000= BEGIN 49495000=15110000= @@ -9944,7 +11023,7 @@ COMMENT 211 VARIABLE-FUNCTION IDENTIFIER USED OUTSIDE OF ITS SCOPE*; 49250000 END; 49535000=15110400= IF ELCLASS = PERIOD THEN 49540000=15111000= BEGIN 49545000=15112000= - IF DOTSYNTAX(T1, T2) THEN 49550000=15112000= + IF DOTSYNTAX(T1, T2) THEN 49550000=15112000= GO TO EXIT; 49555000=15112000= IF STEPI = ASSIGNOP THEN 49560000=15113000= IF P1 ^= FS THEN 49565000=15114000= @@ -9966,7 +11045,7 @@ COMMENT 202 VARIABLE- A VARIABLE APPEARS WHICH IS NOT FOLLOWED * 49635000 49645000=15122000= COMMENT 201 VARIABLE- A PARTIAL WORD DESIGNATOR IS NOT THE * 49650000=15122000= LEFT-MOST OF A LEFT PART LIST *;49655000=15123000= - EMITI(TALL, T1, T2); 49660000=15124000= + EMITI(TALL, T1, T2); 49660000=15124000= END; 49665000=15126000= END OF SIMPLE VARIABLES 49670000=15128100= ELSE 49675000=15128100= @@ -10030,7 +11109,7 @@ COMMENT 201 VARIABLE- A PARTIAL WORD DESIGNATOR IS NOT THE * 49650000 BEGIN 49965000=15233002= IF ELCLASS = PERIOD THEN 49970000=15233003= BEGIN 49975000=15233004= - IF DOTSYNTAX(T1, T2) THEN 49980000=15233005= + IF DOTSYNTAX(T1, T2) THEN 49980000=15233005= GO TO EXIT; 49985000=15233005= IF STEPI = ASSIGNOP THEN 49990000=15233006= BEGIN 49995000=15233007= @@ -10041,7 +11120,7 @@ COMMENT 201 VARIABLE- A PARTIAL WORD DESIGNATOR IS NOT THE * 49650000 END; 50020000=15233008= IF TALL.CLASS <= INTARRAYID THEN 50025000=15233009= BEGIN 50030000=15233010= - EMITPAIR(TALL.ADDRESS, LOD) 50035000=15233010= + EMITPAIR(TALL.ADDRESS, LOD) 50035000=15233010= END 50040000=15233011= ELSE 50045000=15233011= EMITN(TALL.ADDRESS); 50050000=15233011= @@ -10049,14 +11128,14 @@ COMMENT 201 VARIABLE- A PARTIAL WORD DESIGNATOR IS NOT THE * 49650000 JAZZ: 50060000=15233012= STEPIT; 50065000=15233012= AEXP; 50070000=15233012= - EMITD(48-T2, T1, T2); 50075000=15233013= + EMITD(48-T2, T1, T2); 50075000=15233013= EMITPAIR(TALL.ADDRESS, IF P1 = FS THEN STD ELSE SND); 50080000=15233015= STACKCT:= 0; 50085000=15233016= END 50090000=15233017= ELSE 50095000=15233017= BEGIN 50100000=15233017= ITUP: 50105000=15233018= - EMITI(TALL, T1, T2); 50110000=15233018= + EMITI(TALL, T1, T2); 50110000=15233018= END; 50115000=15233023= GO TO EXIT; 50120000=15233024= END; 50125000=15233025= @@ -10092,7 +11171,7 @@ COMMENT 204 VARIABLE- COMPILER EXPECTS A ] IN A ROW DESIGNATER *;50265000 COMMENT 205 VARIABLE- A ROW DESIGNATER APPEARS OUTSIDE OF A FILL * 50275000=15264000= STATEMENT OR ACTUAL PARAMETER LIST. *;50280000=15265000= IF J = 0 THEN 50285000=15266000= - EMITPAIR(TALL.ADDRESS, LOD); 50290000=15267000= + EMITPAIR(TALL.ADDRESS, LOD); 50290000=15267000= STLB:= 0; 50295000=15273000= STEPIT; 50300000=15274000= GO TO EXIT; 50305000=15275000= @@ -10109,7 +11188,7 @@ COMMENT 205 VARIABLE- A ROW DESIGNATER APPEARS OUTSIDE OF A FILL * 50275000 EMITV(TALL.ADDRESS); 50360000=15276060= STEPIT; 50365000=15276070= AEXP; 50370000=15276070= - EMITD(48-T2, T1, T2); 50375000=15276070= + EMITD(48-T2, T1, T2); 50375000=15276070= EMITN(TALL.ADDRESS); 50380000=15276080= EMITO(IF TALL.CLASS ^= NAMEID THEN IF P1 = FS THEN ISD ELSE 50385000=15276110= ISN ELSE IF P1 = FS THEN STD ELSE SND); 50390000=15276110= @@ -10119,7 +11198,7 @@ COMMENT 205 VARIABLE- A ROW DESIGNATER APPEARS OUTSIDE OF A FILL * 50275000 ELSE 50410000=15276140= IF ELCLASS = PERIOD THEN 50415000=15276140= BEGIN 50420000=15276140= - IF DOTSYNTAX(T1, T2) THEN 50425000=15276150= + IF DOTSYNTAX(T1, T2) THEN 50425000=15276150= GO TO EXIT; 50430000=15276150= IF STEPI = ASSIGNOP THEN 50435000=15276160= IF P1 = FS THEN 50440000=15276160= @@ -10136,7 +11215,7 @@ COMMENT 205 VARIABLE- A ROW DESIGNATER APPEARS OUTSIDE OF A FILL * 50275000 GO EXIT 50495000=15276190= END; 50500000=15276190= EMITI 50505000=15276210= - (IF P1 = FL THEN TALL ELSE TALL & REALID[2:41:7], T1, T2);50510000=15276210= + (IF P1 = FL THEN TALL ELSE TALL & REALID[45:6:7], T1, T2); 50510000=15276210= GO TO EXIT; 50515000=15276230= END; 50520000=15276240= AEXP; 50525000=15277000= @@ -10193,7 +11272,7 @@ COMMENT 208 VARIABLE- NUMBER OF SUBSCRIPTS DOES NOT MATCH WITH * 50680000 END; 50780000=15306000= STEPIT; 50785000=15306000= AEXP; 50790000=15307000= - EMITD(48-T2, T1, T2); 50795000=15308000= + EMITD(48-T2, T1, T2); 50795000=15308000= EMITO(XCH); 50800000=15309000= IF TALL.ADDRESS > 1023 THEN 50805000=15310000= EMITI(PRTE); 50810000=15310000= @@ -10205,7 +11284,7 @@ COMMENT 208 VARIABLE- NUMBER OF SUBSCRIPTS DOES NOT MATCH WITH * 50680000 END OF ASSIGNMENT STATEMENT SUBSCRIPTED VARIABLES; 50840000=15338000= IF ELCLASS = PERIOD THEN 50845000=15339000= BEGIN 50850000=15340000= - IF DOTSYNTAX(T1, T2) THEN 50855000=15341000= + IF DOTSYNTAX(T1, T2) THEN 50855000=15341000= GO TO EXIT; 50860000=15341000= IF STEPI = ASSIGNOP THEN 50865000=15342000= IF P1 = FS THEN 50870000=15342000= @@ -10230,8 +11309,7 @@ COMMENT 208 VARIABLE- NUMBER OF SUBSCRIPTS DOES NOT MATCH WITH * 50680000 ELSE 50965000=15347000= 50970000=15347000= COMMENT ***** MONITOR FUNCTION M10 GOES HERE ; 50975000=15347000= - BEGIN 50980000=15348000= - COMMENT MONITOR FUNCTION M10; 50985000=15348000= + BEGIN COMMENT MONITOR FUNCTION M10; 50980000=15348000= SPCLMON:= P1 = FP OR ELCLASS >= AMPERSAND; 50990000=15349000= IF J = 1 THEN 50995000=15351000= IF TALL.CLASS >= LONGID THEN 51000000=15351000= @@ -10262,15 +11340,14 @@ COMMENT 210 VARIABLE-MISSING LEFT ARROW OR PERIOD. *;51120000 STACKCT:= 0; 51125000=15369000= IF T1 ^= 0 THEN 51130000=15370000= BEGIN 51135000=15370000= - EMITI(0, T1, T2); 51140000=15370000= + EMITI(0, T1, T2); 51140000=15370000= P1:= 0 51145000=15370000= END; 51150000=15370000= END OF SUBSCRIPTED VARIABLES 51155000=15376200= ELSE 51160000=15376200= - BEGIN 51165000=15376200= - COMMENT LABELID; 51170000=15376200= + BEGIN COMMENT LABELID; 51165000=15376200= T1:= TAKE(T2:= GIT(TALL)); 51175000=15376300= - PUT(L, T2); 51180000=15376400= + PUT(L, T2); 51180000=15376400= IF T1 = 0 THEN 51185000=15376500= T1:= L; 51190000=15376500= IF(T1:= L-T1) DIV 4 > 127 THEN 51195000=15376600= @@ -10296,15 +11373,15 @@ COMMENT DO LABEL DECS UPON APPEARANCE OF LABEL ; 51265000 MAKEUPACCUM; 51295000=16000600= E; 51300000=16000600= PUTNBUMP(0); 51305000=16000600= - ELBAT[I]:= ACCUM[0] & LASTINFO[35:35:13]; 51310000=16000700= + ELBAT[I]:= ACCUM[0] & LASTINFO[12:12:13]; 51310000=16000700= END; 51315000=16000800= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51320000=16000800= PROCEDURE STREAMSTMT; 51325000=16001000= BEGIN 51330000=16002000= DEFINE 51335000=16003000= LFTPAREN = LEFTPAREN #, 51340000=16003000= - LOC = [36:12] #, 51345000=16003000= - LASTGT = [24:12] #, 51350000=16004000= + LOC = [11:12] #, 51345000=16003000= + LASTGT = [23:12] #, 51350000=16004000= LOCFLD = 36:36:12 #, 51355000=16004000= LGTFLD = 24:24:12 #; 51360000=16004000= DEFINE 51365000=16005000= @@ -10334,7 +11411,7 @@ COMMENT DO LABEL DECS UPON APPEARANCE OF LABEL ; 51265000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51474000 COMMENT FIXC EMITS BASICLY FORWARD JUMPS. HOWEVER IN THE CASE 51475000=16024000= OF INSTRUCTIONS INTERPTED AS JUMPS BECAUSE OF A CRF ON 51480000=16025000= - A VALUE = 0 AND THE JUMP } 64 SYLLABLES A JFW 1 AND 51485000=16026000= + A VALUE = 0 AND THE JUMP >= 64 SYLLABLES A JFW 1 AND 51485000=16026000= A RCA L (L IS STACK ADDRESS OF A PSEUDO LABEL WHICH 51490000=16027000= MUST ALSO BE MANUFACTURED) IS EMITTED. ; 51495000=16028000= PROCEDURE FIXC(S); 51500000=16032000= @@ -10355,15 +11432,17 @@ COMMENT DO LABEL DECS UPON APPEARANCE OF LABEL ; 51265000 END FIXC; 51507500 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51508000 COMMENT EMITJUMP IS CALLED BY GOTOS AND JUMPCHAIN. 51515000=16058000= - THIS ROUTINE WILL EMIT A JUMP IF THE DISTANCE IS { 63 51520000=16059000= + THIS ROUTINE WILL EMIT A JUMP IF THE DISTANCE IS <= 63 51520000=16059000= SYLLABLES ,OTHERWISE, IT GETS A PRT CELL AND STUFFS THE 51525000=16060000= STACK ADDRESS INTO THE LABEL ENTRY IN INFO AND EMITS AN 51530000=16061000= RCA ON THIS STACK CELL. AT EXECUTION TIME ACTUAL PARAPART 51535000=16062000= INSURES US THAT THIS CELL WILL CONATIN A LABEL DESCRIPTOR 51540000=16063000= POINTING TO OUR LABEL IN QUESTION. ; 51545000=16064000= PROCEDURE EMITJUMP(E); 51550000=16070000= - VALUE E; 51551000 - REAL E; 51552000 + VALUE 51551000 + E; 51551500 + REAL 51552000 + E; 51552500 BEGIN 51553000 REAL 51554000 T, 51555000 @@ -10374,15 +11453,17 @@ COMMENT DO LABEL DECS UPON APPEARANCE OF LABEL ; 51265000 FLAG(700) 51560000 ELSE 51561000 EMITC(D, IF D < 0 THEN JRV ELSE JFW); 51562000 - END EMITJUMP; 51563000 + END EMIT JUMP; 51563000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51564000 COMMENT WHEN JUMPCHAIN IS CALLED THERE IS A LINKEDLIST IN THE CODE51565000=16081000= ARRAY WHERE JFWS MUST BE PLACED. THE 1ST LINK IS POINTED 51570000=16082000= TO BY THE LOC FIELD OF EACH LABEL ENTRY IN INFO. THE LAST 51575000=16083000= LINK IS = 4096. ; 51580000=16084000= PROCEDURE JUMPCHAIN(E); 51585000=16089000= - VALUE E; 51585500 - REAL E; 51586000 + VALUE 51585500 + E; 51585600 + REAL 51586000 + E; 51586200 BEGIN 51586500 REAL 51587000 SAVL, 51587500 @@ -10402,7 +11483,7 @@ COMMENT DO LABEL DECS UPON APPEARANCE OF LABEL ; 51265000 A VARIABLE NEST INDEX CAUSES THE CODE, 51605000=16099000= CRF V, BNS 0 ,NOP,NOP, TO BE GENERATED INITIALLY. 51610000=16100000= AT THE RIGHT PAREN THE BNS IS FIXED WITH THE LENGTH OF 51615000=16101000= - THE NEST (NUMBER OF SYLLABLES) IF THE LENGTH {63,OTHERWISE51620000=16102000= + THE NEST (NUMBER OF SYLLABLES) IF THE LENGTH<=63,OTHERWISE51620000=16102000= IT IS FIXED WITH A 1 AND THE NOPS REPLACED WITH JFW 1, 51625000=16103000= RCA P. THIS IS DONE BECAUSE THE VALUE OF V AT EXECUTION 51630000=16104000= MAY = 0 AND THIS CODE CAUSES A JUMP AROUND THE NEST. 51635000=16105000= @@ -10455,7 +11536,7 @@ COMMENT DO LABEL DECS UPON APPEARANCE OF LABEL ; 51265000 COMMENT PREPARE TO CALL JUMPCHAIN FORJUMPOUTS; 51720000=16136000= ADJUST; 51725000=16139000= PUT(TAKE(GIT(JOINFO)) & L[LOCFLD], GIT(JOINFO)); 51726000 - JUMPCHAIN(TAKE(JOINFO) & JOINFO[35:35:13]); 51727000 + JUMPCHAIN(TAKE(JOINFO) & JOINFO[12:12:13]); 51727000 END; 51728000 IF BNSFIX ^= 0 THEN 51729000 FIXC(BNSFIX); 51730000 @@ -10469,12 +11550,12 @@ COMMENT DO LABEL DECS UPON APPEARANCE OF LABEL ; 51265000 WORD (IN THE PROGRAMSTREAM). 51750000=16147000= IF A GO TO HAS NOT BEEN ENCOUNTERED BEFORE THE LABEL 51755000=16148000= THEN THE NEST LEVEL FIELD IS ENTERED AND THE DEFINED BIT, 51760000=16149000= - [1:1], SET TO ONE. FOR DEFINED LABELS,IF WHERE A GO TO 51765000=16150000= + [46:1], SET TO ONE. FOR DEFINED LABELS,IF WHERE A GO TO 51765000=16150000= HAS APPEARED, A CHECK IS MADE THAT THE CURRENT NEST LEVEL 51770000=16151000= MATCHES THE LEVEL OF THE LABEL. 51775000=16152000= MULTIPLE OCCURANCES ARE ALSO CHECKED FOR AND FLAGGED. 51780000=16153000= FINALLY,JUMPCHAIN IS CALLED TO FIX UP ANY FORWARD GO TOS 51785000=16154000= - AND GET A PRT LOCATION FOR ANY JUMPS }64 SYLLABLES. ; 51790000=16155000= + AND GET A PRT LOCATION FOR ANY JUMPS >=64 SYLLABLES. ; 51790000=16155000= PROCEDURE LABELS; 51795000=16160000= BEGIN 51795500 REAL 51796000 @@ -10489,7 +11570,7 @@ COMMENT DO LABEL DECS UPON APPEARANCE OF LABEL ; 51265000 FLAG(259); 51805000=16166000= IF GT1 > 0 THEN 51806000 BEGIN 51807000 - PUT(-(TAKE(GT1) & NESTLEVEL[11:43:5]), GT1); 51808000 + PUT(-(TAKE(GT1) & NESTLEVEL[36:4:5]), GT1); 51808000 PUT(-L, GT2) 51809000 END 51810000 ELSE 51811000 @@ -10519,8 +11600,8 @@ COMMENT DO LABEL DECS UPON APPEARANCE OF LABEL ; 51265000 PROCEDURE IFS; 51895000=16192000= BEGIN 51896000 DEFINE 51898000 - COMPARECODE = [42:6] #, 51900000 - TESTCODE = [36:6] #; 51905000=16192000= + COMPARECODE = [5:6] #, 51900000 + TESTCODE = [11:6] #; 51905000=16192000= LABEL 51910000=16193000= IFSB, 51915000=16193000= IFTOG, 51920000=16193000= @@ -10561,16 +11642,16 @@ IFSC: 52075000 GO TO EXIT 52095000=16207000= END; 52100000=16207000= IF STEPI = DCV THEN 52105000=16208000= - EMITC(ADDR, ELBAT[I-1].COMPARECODE); 52110000=16208000= + EMITC(ADDR, ELBAT[I-1].COMPARECODE) 52110000=16208000= ELSE 52115000=16210000= IF ELCLASS = STRNGCON THEN 52120000=16210000= - EMITC(ACCUM[1].[18:6], ELBAT[I-1].TESTCODE) 52125000=16212000= + EMITC(ACCUM[1].[29:6], ELBAT[I-1].TESTCODE) 52125000=16212000= ELSE 52130000=16212000= IF ELCLASS = LITNO THEN 52135000=16212500= - EMITC(C, ELBAT[I-1].TESTCODE) 52140000=16212500= + EMITC(C, ELBAT[I-1].TESTCODE) 52140000=16212500= ELSE 52145000=16212500= IF ELCLASS <= IDMAX AND Q = 6"5ALPHA" THEN 52150000=16213000= - EMITC(17, TAN) 52155000=16214000= + EMITC(17, TAN) 52155000=16214000= ELSE 52160000=16214000= BEGIN 52165000=16214000= ERR(265); 52170000=16214000= @@ -10578,9 +11659,9 @@ IFSC: 52075000 END; 52180000=16214000= GO TO IFTOG; 52185000=16215000= IFSB: 52190000=16216000= - EMITC(1, BIT); 52195000=16216000= + EMITC(1, BIT); 52195000=16216000= IFTOG: 52200000=16217000= - IF STEP ^= THENV THEN 52205000=16217000= + IF STEPI ^= THENV THEN 52205000=16217000= BEGIN 52210000=16217000= ERR(266); 52215000=16217000= GO TO EXIT 52220000=16217000= @@ -10606,7 +11687,7 @@ EXIT: 52305000 COMMENT GOTOS HANDLES GO TO AND THE LAST PART OF JUMP OUT TO 52320000=16240000= STATEMENTS. 52325000=16241000= IF THE LABEL HAS BEEN ENCOUNTERED THEN EMITJUMP IS CALLED 52330000=16242000= - AN PRODUCES A JRV OR RCA IN THE CASE OF JUMPS}64 SYLLABL 52335000=16243000= + AN PRODUCES A JRV OR RCA IN THE CASE OF JUMPS>=64 SYLLABL 52335000=16243000= ES. OTHERWISE, A LINK IS EMITTED POINTING ANY PREVIOUS 52340000=16244000= GO TOS IN THE CASE OF FORWARD JUMPS. 52345000=16245000= FINALLY, IF THE NEST LEVEL IS DEFINED THEN IT IS CHECKED 52350000=16246000= @@ -10629,10 +11710,10 @@ EXIT: 52305000 EMITJUMP(GT1) 52435000=16256000= ELSE 52440000=16256000= BEGIN 52445000=16257000= - PUT(0 & L[24:36:12], GIT(GT1)); 52450000=16257000= + PUT(0 & L[23:11:12], GIT(GT1)); 52450000=16257000= IF GT1 > 0 THEN 52455000=16258000= BEGIN 52460000=16259000= - PUT(-(TAKE(GT1) & (NESTLEVEL-JUMPLEVEL)[11:43:5]), GT1); 52465000=16260000= + PUT(-(TAKE(GT1) & (NESTLEVEL-JUMPLEVEL)[36:4:5]), GT1); 52465000=16260000= EMITN(1023); 52470000=16261000= END 52475000=16264000= ELSE 52480000=16264000= @@ -10672,7 +11753,7 @@ EXIT: 52520000 IN THIS PROCEDURE,INDEXS,THE VARIABLE "ADDR" CONTAINS THE 52650000=16303000= PROPER REPEAT PART BY THE TIME THE LABEL "GENERATE" IS 52655000=16304000= ENCOUNTERED. THE SYLLABLES ARE FETCHED FROM MACRO[TYPE] 52660000=16305000= - ONE AT A TIME AND IF THE REPEAT PART ! 0 THEN"ADDR" IS 52665000=16306000= + ONE AT A TIME AND IF THE REPEAT PART ^= 0 THEN"ADDR" IS 52665000=16306000= USED AS THE REPEAT PART,THUS BUILDING A SYLLABLE WITH 52670000=16307000= THE PROPER ADDRESS AND OPERATOR . 52675000=16308000= NOTE: IF MACRO[TYPE] = 0 THEN THIS SIGNIFIES A SYNTAX 52680000=16309000= @@ -10712,15 +11793,15 @@ EXIT: 52520000 END 52850000=16333000= ELSE 52855000=16333000= BEGIN 52860000=16333000= - INDEX:= TCLASS-SIV+(IF ELCLASS = LOCLID THEN 16 ELSE IF ELCLASS = 52865000=16338000= - LOCV THEN 20 ELSE IF ELCLASS = SCV THEN 24 ELSE IF ELCLASS = 52870000=16338000= - DCV THEN 28 ELSE 25); 52875000=16338000= + INDEX:= TCLASS-SIV+(IF ELCLASS = LOCLID THEN 16 ELSE IF ELCLASS 52865000=16338000= + = LOCV THEN 20 ELSE IF ELCLASS = SCV THEN 24 ELSE IF ELCLASS 52870000=16338000= + = DCV THEN 28 ELSE 25); 52875000=16338000= IF ELCLASS = LOCV THEN 52880000=16339000= IF STEPI ^= LOCLID THEN 52885000=16340000= GO TO L; 52890000=16340000= IF ELCLASS = LITNO AND TCLASS = TALLYV THEN 52895000=16341000= BEGIN 52900000=16342000= - EMITC(ELBAT[I].ADDRESS, SEC); 52905000=16342000= + EMITC(ELBAT[I].ADDRESS, SEC); 52905000=16342000= GO TO EXIT 52910000=16342000= END; 52915000=16342000= END; 52920000=16343000= @@ -10734,17 +11815,19 @@ GENERATE: 52930000 END; 52960000=16347000= J:= 8; 52965000=16348000= TCLASS:= 0; 52970000=16348000= -L1: MOVECHARACTERS(2, MACRO[INDEX], J:= J-2, TCLASS, 6); 52975000=16349000= +L1: EBCDICBUFF[0]:= TCLASS; 52975000=16349000= + MOVECHARACTERS(2, MACRO, INDEX, J:= J-2, EBCDICBUFF, 0, 6); 52976000 + TCLASS:= EBCDICBUFF[0]; 52978000 IF TCLASS ^= 0 THEN 52980000=16350000= BEGIN 52985000=16351000= - EMITC(IF TCLASS >= 64 THEN ADDR ELSE 0, TCLASS); 52990000=16352000= + EMITC(IF TCLASS >= 64 THEN ADDR ELSE 0, TCLASS); 52990000=16352000= GO TO L1 52995000=16354000= END; 53000000=16354000= EXIT: 53005000=16355000= END INDEXS; 53010000=16355000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%53015000=16355000= COMMENT DSS COMPILES DESTINATION STREAM STATEMENTS. 53020000=16356000= - DS~ LIT"STRING" IS HANDLED AS A SPECIAL CASE BECAUE THE 53025000=16357000= + DS:= LIT"STRING" IS HANDLED AS A SPECIAL CASE BECAUE THE 53025000=16357000= STRING MUST BE SCANED FROM RIGHT TO LEFT,REPEATEDLY IF 53030000=16358000= NECESSARY, AND EMITTED TO THE PROGRAM STREAM. IN 53035000=16359000= ALL OTHER CASES,THE ELBAT WORD CONTAINS THE OPERATOR IN 53040000=16360000= @@ -10761,7 +11844,7 @@ EXIT: 53005000 EXIT, 53095000=16365000= L1; 53100000=16365000= DEFINE 53105000=16366000= - OPCODE = [27:6] #; 53110000=16366000= + OPCODE = [20:6] #; 53110000=16366000= IF STEPI ^= ASSIGNOP THEN 53115000=16367000= BEGIN 53120000=16367000= ERR(251); 53125000=16367000= @@ -10769,7 +11852,7 @@ EXIT: 53005000 END; 53135000=16367000= IF STEPI = LOCLID THEN 53140000=16368000= BEGIN 53145000=16369000= - EMITC(ELBAT[I].ADDRESS, CRF); 53150000=16370000= + EMITC(ELBAT[I].ADDRESS, CRF); 53150000=16370000= ADDR:= 0; 53155000=16371000= IF STEPI = LITV THEN 53160000=16372000= GO TO L1 53165000=16374000= @@ -10786,11 +11869,11 @@ EXIT: 53005000 EMITC(ADDR, 10) 53220000=16378500= ELSE %E 53225000=16378500= IF ELCLASS = TRNSFER THEN 53230000=16379000= - EMITC(ADDR, ELBAT[1].OPCODE) 53235000=16380000= + EMITC(ADDR, ELBAT[1].OPCODE) 53235000=16380000= ELSE 53240000=16380000= IF ELCLASS = LITV THEN 53245000=16381000= BEGIN 53250000=16382000= - EMITC(ADDR, TRP); 53255000=16383000= + EMITC(ADDR, TRP); 53255000=16383000= IF STEPI ^= STRNGCON THEN 53260000=16384000= BEGIN 53265000=16384500= ERR(255); 53270000=16384500= @@ -10798,14 +11881,19 @@ EXIT: 53005000 END; 53280000=16384500= IF ADDR MOD 2 ^= 0 THEN 53285000=16385000= BEGIN 53290000=16386000= - EMIT(ACCUM[1].[18:6]); 53295000=16387000= + EMIT(ACCUM[1].[29:6]); 53295000=16387000= J:= 1; 53300000=16387000= END; 53305000=16388000= FOR K:= J+2 STEP 2 UNTIL ADDR DO 53310000=16389000= BEGIN 53315000=16390000= FOR L:= 6, 7 DO 53320000=16391000= - MOVECHARACTERS(1, ACCUM[1], 53325000=16393000= - 2+(IF J:= J+1 > COUNT THEN J:= 1 ELSE J), T, L); 53330000=16393000= + BEGIN 53322000 + EBCDICBUFF[0]:= T; 53324000 + MOVECHARACTERS(1, ACCUM, 1, 53325000=16393000= + 2+(IF J:= J+1 > COUNT THEN J:= 1 ELSE J), 53330000=16393000= + EBCDICBUFF, 0, L); 53331000 + T:= EBCDICBUFF[0]; 53332000 + END; 53333000 EMIT(T); 53335000=16394000= END 53340000=16396000= END 53345000=16397000= @@ -10824,7 +11912,7 @@ EXIT: 53360000 ADDR; 53410000=16405000= IF STEPI = LOCLID THEN 53415000=16406000= BEGIN 53420000=16407000= - EMITC(ELBAT[I].ADDRESS, CRF); 53425000=16408000= + EMITC(ELBAT[I].ADDRESS, CRF); 53425000=16408000= ADDR:= 0; 53430000=16408000= STEPIT; 53435000=16408000= END 53440000=16410000= @@ -10837,10 +11925,10 @@ EXIT: 53360000 ELSE 53475000=16414000= ADDR:= 1; 53480000=16414000= IF ELCLASS = SBV THEN 53485000=16415000= - EMITC(ADDR, BSS) 53490000=16416000= + EMITC(ADDR, BSS) 53490000=16416000= ELSE 53495000=16416000= IF ELCLASS = DBV THEN 53500000=16417000= - EMITC(ADDR, BSD) 53505000=16418000= + EMITC(ADDR, BSD) 53505000=16418000= ELSE 53510000=16418000= ERR(250); 53515000=16418000= END SKIPS; 53520000=16419000= @@ -10873,12 +11961,12 @@ EXIT: 53360000 BEGIN 53655000=16441000= JOINFO:= NEXTINFO; 53660000=16442000= PUTNBUMP 53665000=16444000= - (STACKHEAD[0], LINK & (STLABID*2+1)[2:40:8] & 2[27:40:8]); 53670000=16444000= - PUTNBUMP(0 & (JOINFO-LASTINFO)[4:40:8]); 53675000=16445000= + (STACKHEAD[0], LINK & (STLABID*2+1)[45:7:8] & 2[20:7:8]); 53670000=16444000= + PUTNBUMP(0 & (JOINFO-LASTINFO)[43:7:8]); 53675000=16445000= PUTNBUMP(0); 53680000=16446000= LASTINFO:= JOINFO; 53685000=16447000= END; 53690000=16448000= - ELBAT[I:= I-1]:= TAKE(JOINFO) & JOINFO[35:35:13]; 53695000=16449000= + ELBAT[I:= I-1]:= TAKE(JOINFO) & JOINFO[12:12:13]; 53695000=16449000= END; 53700000=16450000= I:= I-1; 53705000=16450000= END; 53710000=16451000= @@ -10987,8 +12075,9 @@ EXIT: 54220000 STEPIT; 54225000=16494000= FINI: 54230000=16495000= END STREAMSTMT; 54235000=16495000= -MOVE(1, I, CODE(0)); 54240000=16495100= +CODE[0]:= I; 54240000=16495100= TIME1:= TIME(1); 54245000=16495200= PROGRAM; 54250000=16495200= ENDOFITALL: 54255000=16495210= -END MAIN BLOCK. 54260000=16495300= +END MAIN BLOCK 54260000=16495300= +END. 54265000=16495300=