. THIS SECTION OF CODE CONTAINS MOST OF THE BASIC ROUTINES CONNECTED . WITH BRANCHING ON THE ID OF ITEMS IN F30 RGS . REGISTER DEFINITIONS LGFIF . NESTED LOGICAL IF DEFINITIONS CONTR . TRIAD DEFINITIONS IDX EQU 1 . PERMIT DIAGNOSTICS STACK EQU N3STCK . THIS SECTION IS THE TRANSFER VECTOR WHICH BRANCHES ON THE ID AND IN THE 07910 . CASE OF STATEMENT TYPE ITEMS THE TYPE OF THE ITEM JUST READ FROM F30 07920 $(1) . LIT . F40 EQU 1 F50 EQU 2 ITV* ETV A2,FL30,0,S1 39 20 . TRANSFER ON ID J ITVZR J ITINV 01 INDUCTION VARIABLE J ITDVR TEST FOR VARIABLE J TR 03 CONSTANT J TR 04 OFFSET J ITVSX J ITV+3 06 TRIAD ERROR 08000 J TR 07 DROPOUT 08010 J TR 08 OPERATION 08020 J TR 09 SUBSCRIPT 08030 J ITV1 10 STATEMENT TYPE 08040 J LBB 11 STATEMENT LABEL 08050 J ITV7 12 GENERATED LABEL 08060 J TR 13 STATEMENT REF 08070 J TR 14 FORMAT REF 08080 J BEG 15 BEGIN DO 08090 J N3END . END DO J DP2 17 VARIABLE DEFINITION PT 08110 J DP3 18 COMMON DEFINITION PT 08120 J DP4 19 EQUIVALENCE DEFINITION PT 08130 J ITV9 20 LOGICAL IF SEPARATOR 08140 J ITVC 21 PROGRAM ENTRY 08150 J ITVZ1 22 IF - ELSE J ITVB1 23 FIRST EXECUTABLE ITEM 08170 J ITV8 24 END OF SUB PROGRAM 08180 J ITV+3 25 USAGE 08190 SLJ XERV J ITV7J END OF LIST ITEM J ITVK 28 DEBUG ITEM 08220 J ITVA 29 END OF FILE ITEM 08230 J ITVFL . PROCESS TEMP END OF FILE MARK J ITVSSX . SAVE SUBEXPRESSION REFERENCE J ITVRSX J ITVNOI . NUMBER OF ITEMS IN STATEMENT SLJ XERV J SFDP . DUMMY PARAMETER FOR STATEMENT FUNCTION J SFND . END OF POLISH MASK J ITVNL NAMELIST AFTER READ J N3IFP DEFINITION POINT J N3I6Z CLEAR OUT LOOP TABLES AT THIS POINT . TEST FOR VARIABLES IN DEFINES WHICH ARE NOW INDUCTION VARIBALES ITDVR L A2,GETF TZ DOSXTF S R4,POLQ . SHOW VARIABLE APPEARED TE,M A2,4 TEST FOR READING FROM POLISH J TR TNE A4,FL30 J TR TN,XH2 2,A0 J TR COULD NOT BE INDUCTION VARIABLE L,M A2,7 AND,S3 A2,2,A0 L,M A2,041 DUMMY ARGUMNET AND VARIABLE SSL A2,0,A3 JNB A2,TR L,M A2,0100 TEP,H1 A2,2,A0 J TR ABNORMAL FUNCTION THAT IS DUMMY ARG L,T3 A2,2,A0 SBT A14,LOOP,A2,S4,4 MARK FOR MATERIALIZATION L A2,0,A0 S A2,ERR23+1 XERF ERR23 J TR . IF AN INDUCTION VARIABLE IS USED IN A DEFINE THEN IT IS REPLACED . WITH A NORMAL VARIALE AND MARKED FOR MATERIALIZATION ITINV TZ SUBSC J TR L A1,FNC L,S1 A1,FNX,A1 TE,M A1,2 J TR L A2,GETF TE,M A2,4 J TR SBT A14,LOOP,A0,S4,4 MARK FOR MATERIALIZATION S,S1 A1,FL30 S,S2 A1,FL30 L,H2 A0,LOOP+1,A0 S,H2 A0,FL30 REPLACE PLATEAU WITH SYM REFERENCE L A0,FL30 J TR ITVNOI DSL A0,18 . SAVES NUMBER OF ITEMS IN NEXT STATEMENT SSL A1,17 SA A1,NOI J GET ITVSSX TNZ GETF J ITVSX2 SA A0,ILXX . SET FLAG TO SAVE NEXT FORMED EXPRESSION J GET ITVSX2 L,H2 A0,FL30 FLAG FOR INITIAL,INCREMENT, FINAL VALUE L A1,LASTTR RESULT OF TRIAD S A1,DOSXTB,A0 SZ DOSXTF SZ POLQ J GET ITVRX2 SR R4,DOSXTF J GET ITVRSX TNZ GETF J ITVRX2 L A0,STACK,A0 SA A0,FL30 . REPLACE WITH SAVED EXPRESSION ITVRSQ JNE A15,0,A1,S1 036 ITVRSY L,S3 A14,0,A1 XOR,S3 A14,FL30 TRANSFER SIGN OF EXPONENT OPERATOR S,S3 A15,FL30 L A5,FL30 JE A15,F31-1,NSEQN,S1 8 TRBJ J ITV ITVRSY L A15,0,A1 TE A15,(030100,1) J ITV AX,M A1,1 J ITVRSQ ITVNL LMJ B11,LBB1 SIMULATE LABEL J GET ITVZR JZ A0,GET . ALL ZERO ITEMS ARE IGNORED SLJ XERV . INDICATE ERROR ITV1 LA A0,FL30 08240 LA A15,FL30,0,S2 . ONLY STATEMENTS WITH SUBTYPES LESS THAN 10 TNE,M A15,4 TEST SUBROUTINE DEFNS FOR PHASE V J ITV7 TG,M A15,6 . MAY APPEAR WITHIN A LGCL IF WITHOUT STORING SZ SUBSC L A0,ABFCFL TEST FOR ABNORMAL FUNCTION IN LAST STATEMENT S A0,DEFNO TNE,M A15,025 J $+3 A BEGIN DO WILL GO TO DB1 ANYWHAY JZ A0,$+2 LMJ B10,DB1 SZ ABFCFL L A0,FL30 SZ MEL . RESET FLAG ON EACH STATEMENT TYPE SA,1 A0,SEQNO 08250 S,1 A0,SEQNJ LMJ B11,TF31 08260 DO IDX=1 , TZ DX13 082610 DO IDX=1 , SLJ XD13 082620 LA,S2 A1,STTYA S A1,IFDST SA A0,STTYA . SAVES THIS STATEMENT TO LOOK AT NEXT 08280 SZ LBX CLEARS FLAG 08290 ITV1A . ITVXX* LMJ B11,SEND 08470 ETV A2,STTYA,0,S2 50 21 . TRANSFER ON SUBTYPE SLJ XERV J GET 01 ARITHEMETIC STATEMENT 008500 J ITV3 3B PASS NAME OF STATEMENT FOR TRACE J GET 03 LOGICAL STATEMENT 008520 J GET 04 LOGICAL STATEMENT FUNCTION 008530 J ITV3 05 ASSIGN 208540 J ITV3 06 ASSIGNED GO TO 108550 J ITV3 J ITV4 08 COMPUTED GO TO 2+R08570 J ITV3 J ITV3 10 IF ACCUMULATOR OVERFLOW 108590 J ITV3 11 IF QUOTIENT OVERFLOW 108600 J ITV3 12 IF DIVIDE CHECK 108610 J ITV3 13 IF SENSE LIGHT 308620 J ITV3 14 IF SENSE SWITCH 308630 J ITV3 15 SENSE LIGHT [[ 108640 J GET 16 CALL 008650 J ITV3 17 PAUSE 108660 J ITV3 18 STOP 108670 J ITVD 19 RETURN 108680 J ITV5 20 END J ITV6 21 DO 408700 J ITV3 22 BACKSPACE 108710 J ITV3 23 REWIND 108720 J ITV3 24 END FILE 108730 J ITV3 25 PRINT 108740 J ITV3 26 PUNCH 108750 J ITV3 27 READ TAPE 108760 J ITV3 28 READ (UNIT,F) LIST 208770 J ITV3 29 READ INPUT TAPE 208780 J ITV3 30 READ (UNIT) 108790 J ITV3 31 READ F 108800 J ITV3 32 WRITE (UNIT,F) LIST 208810 J ITV3 33 WRITE OUTPUT TAPE 208820 J ITV3 34 WRITE UNIT 108830 J ITV3 35 WRITE TAPE 108840 J GET 36 INPUT LIST 008850 J GET 37 OUTPUT LIST 008860 J ITV5 . SKIP OUT ON INITIAL CONDITION J ITV3 39 READ NAMELIST 1108 J ITV3 40 WRITE NAMELIST 1108 J ITV3 41 NAMELIST 1108 J ITV3 42 DECODE J ITV3 43 ENCODE J ITVD . RETURN INDIRECT RETIND J ITV3 45 DEFINE FILE J ITV3 46 DIRECT ACCESS READ J ITV3 47 DIRECT ACCESS WRITE J ITV3 48 FIND J ITV3 . 49 SHORT INPUT LIST J ITV3 . 50 SHORT OUTPUT LIST ITV3 LX,S3 B10,FL30 . THIS SECTION TRANSFERS THE NEXT N 08940 ANX,M B10,1 08950 ITV3J LMJ B11,GET1 . ITEMS ON CERTAIN STATEMENT TYPES 08960 LMJ B11,TF31 08970 JGD B10,ITV3J L,T1 A0,STTYA TE,M A0,01202 TRACE ID J GET 08990 L A0,(010000,0) PROTECT TRACE HOLERITH FROM SPUROUS TESTS LMJ B11,TF31 J GET ITV4 LMJ B11,GET1 . ON COMPUTED GO TO'S BESIDES SENDING 09000 LMJ B11,TF31 . MADE FOR MATERIALIZATION 09020 LMJ B11,GET1 IZATION. 09030 SA A0,TA . SAVE TO CHECK FOR MATERIALIZATION LMJ B11,TF31 JNE A15,TA,0,S1 1 $+5 MVW LOOP+1,A0,H2 F31-1,NSEQN,H2 . RESTORE SYM REF LX,H2 B10,F31-2,NSEQN ANX,M B10,1 09060 LMJ B11,GET1 09070 LMJ B11,TF31 09080 JGD B10,$-2 09090 J ITVE GO CHECK FOR MATERIALIZATION 09100 ITV5 FXX EOFX F50. . INSERT END OF FILE IN F40 09110 FXX EOFX F40 . INSERT END OF FILE IN F50 09120 J GET 09130 N3I6Z L,H2 A0,FL30 S,H2 A0,SEQNO SR R4,IDF FLAG FOR DEFINING AT BEGIN DO LMJ B9,LBB3+2 SZ IDF J GET ITV6 LMJ B11,GET1 09140 SA A0,TD . SAVES D.P. ITEM 091500 LMJ B11,GET1 09160 TP FL30 L A0,DOSXTB+2 LMJ B11,ITV6Y SA A0,CX STORES LAST VALUE FOR DON 09170 LMJ B11,GET1 09180 TP FL30 L A0,DOSXTB+1 LMJ B11,ITV6Y SA A0,BX SAVES INCREMENT FOR DON 09190 LMJ B11,GET1 09200 TP FL30 L A0,DOSXTB LMJ B11,ITV6Y SA A0,+AX ITV6Q . SR R4,IDF . FLAG FOR DEFINING AT BEGIN DO S R4,LBX SET FLAG TO MOVE EXPRESSIONS L A0,TD S A0,FL30 S A0,DP2F FLAG TO RETURN J DP2 ITV6Y S,H2 B11,ITV6R S A0,ITV6A SSL A0,30 TE,M A0,5 J ITV6D SZ INSERT SZ INSERT+1 BUILD DUMMY FOR COUNTING MVW ITV6A INSERT+2 L,M B1,2 SR,H2 R6,INSNO LMJ B10,USA SHOW USE OF EXPRESSION SXLOC A3 INSERT+2,0,T3 LMJ B11,ITVSY SXLOC A0 ITV6A,0,T3 L,S4 A14,1,A0 AND,M A14,2 JZ A15,ITV6D MVW ITV6A COPND2 MVW (070000,0) COPND1 MVW (0102000,062) COPER LMJ B9,TSXFX L A0,SUBNO L,S3 A1,SUBEXD,A0 BOOL FUNCTION AND,M A1,070 A,M A2,1 S,S3 A2,SUBEXD,A0 MVW SUBNO ITV6A ITV6D L A0,ITV6A J *ITV6R ITV6J* SX NSEQN,SV7 092110 LMJ B11,ALL TRANSFER TO DONS ROUTINE 09220 LX NSEQN,SV7 092210 J GET ITV7J MVW FL30,0,S6 ENTDPF IHHIBIT CALL BY NAME ON ENTRY STATEMENT ITV7* L A0,FL30 LMJ B11,TF31 ESSENTIALLY IGNORE THESE ITEMS 09270 J GET 09280 ITV8 LA A0,FL30 END OF SUBPROGRAM 09290 AND,016 A0,077777 09300 SA,1 A1,BND TRANSFERS END BOUNDARY POINT 09310 SZ FLPR 093210 SSC A0,15 09330 AND,016 A0,077777 09340 SA,2 A1,BND TRANSFERS BEGIN BOUNDARY POINT 09350 LMJ B11,LBA . UPDATES LABEL TABEL 09360 J ITV7 . TRANSFERS END OF SUBPROGRAM TO F31 09370 ITV9 L,H2 B5,LGLNST NESTING LEVEL OF LOGICAL IF L A1,LOGFCP L,S6 A14,FL30 . LOGICAL IF SEPARATOR FLAG AND,M A14,1 S A15,IFSPI TZ A15 S A15,IFSPI+1 AND,M A14,021 TNE,M A15,021 . TEST FOR IF ELSE J ITVQL WAS AN INELSE STATEMENT AND,M A14,057 . REMOVE IFELSE BIT TZ A15 A,M B5,1 . INCREMENT NESTING LEVEL OF LOGICAL IF L A13,LGELQQ . SAVE FOR ITV9A S A14,LGELQQ . SAVE IFELSE FLAG S,H2 B5,LGLNST L,M A0,0,B5 TG,M A0,10 SLJ XERV TNZ A15 J ITV9A SZ LOOPIF SZ IFELSE SZ LGLBFL . SET NON ZERO ON A LABEL TLE,M A0,2 . TEST FOR NESTED LOOPS J $+4 L A2,LOGFCP TLE,H2 A2,LOGBCP-1 . TEST FOR PARALLEL IFS L A1,A2 . WITHIN LARGER IF TLE,H2 A1,SEQNO L A1,LGLFCP-1 S A1,LGLFCP ITVQLA . SZ DEFNO L A0,SEQNO AN,M A0,1 SET TO END OF LOGICAL IF S A0,LOGBCP L A0,FL30 SSL A0,6 PICK UP SEQUENCE NUMBER OF LOGICAL IF AND,M A0,077777 S A1,LOGFCP S A1,LGDOP FLAG FOR EXPRESSION THAT CAN BE DEFINED ONLY AT DP TOP,M A15,040 . TEST FOR LABELS IN IF J ITVNLJ . NO LABELS IN IF TNZ,H2 LOOPNU . TEST FOR ACTIVE LOOPS J ITVZL . A ZERO LEVEL LABEL L,H2 A1,LOOPNU L,S6 A1,INDVAR,A1 . TEST FOR SAFE LOOP JNB A1,ITVLL . LABEL IN SAFE LOOP ITVZL LMJ B11,LBB1 . SIMULATE ZERO LEVEL LOOP J ITVNLJ ITVLL LMJ B9,LBB3T ITVNLJ . SLJ LBB6 ELIMINATE EXPRESSIONS DEFINED WITHIN LOG. IF L,H2 A0,SEQNO TE,H2 A0,SEQNX J $+3 LMJ B11,EXX LMJ B11,EXX L,H2 B5,LGLNST . RESTORE B5 SZ LGDOP L A0,FL30 AND A0,(0770000,077) CLEAR OUT SEQUENCE NUMBER L A2,LOGBCP SSC A2,30 A A1,A2 SEQUENCE NUMBER FOR N3T35 PROCESSING S A1,FL30 J ITV7 ITV9A . A,M A15,1 TOP,M A13,040 . TEST IF LABEL/CALL SET FOR THIS IF J ITV9AJ . TEST IF STRUCTURE HAS LABELS OR CALLS TNZ,H2 LOOPNU . TEST FOR ACTIVE LOOPS J ITVZLJ . AT ZERO LOOP LEVEL L,H2 A1,LOOPNU L,S6 A1,INDVAR,A1 . TEST FOR SAFE LOOP JNB A1,ITVLLJ . LABEL IN SAFE LOOP ITVZLJ LMJ B11,LBB1 . SIMULATE ZERO LEVEL LOOP J $+2 ITVLLJ LMJ B9,LBB3T J ITV9AK ITV9AJ . AN,M B5,1 TN,XM B5,1 TNZ,M 0,B5 . TEST FOR BOTTOM OF STACK J ITV9AK L A13,LGELQQ J ITV9A ITV9AK L B5,LGLNST SLJ LBB6 L,S6 A14,FL30 TEP,M A14,020 . TEST FOR IFELSE J ITVQLB L,H2 B5,LGLNST AN,M B5,1 S,H2 B5,LGLNST L A1,LOGFCP+1 TNZ B5 S A1,LOGFCP L A1,LGLFCP+1 TNZ B5 S A1,LGLFCP L A1,LOGBCP+1 TNZ B5 S A1,LOGBCP TP B5 J ITV9X ITVQLC . JNE A0,F31-1,NSEQN,S1 013 ITV7 L A0,FL30 . INTERCHANGE LABEL AND MVW F31-1,NSEQN FL30 . LOGICAL IF S A0,F31-1,NSEQN J ITV7 ITVQL . AN ENDING IFELSE SEPARATOR IS PROCESSED HERE S A14,LGELQQ L A2,LOGFCP . SAVE BEGINNING OF LOGICAL IF S A2,LZGFCP . WHILE WITHIN IFELSE L A2,LOGBCP . SAVE BACKWARD POINT OF IF S A2,LZGBCP . WHILE WITHIN IFELSE J ITVQLA ITVQLB L A2,LZGFCP S A2,LOGFCP L A2,LZGBCP RESTORE BOUNDARIES OF CONTAINING IF S A2,LOGBCP SZ LZGFCP J ITVQLC ITV9X XERF ERR30 . IF'S NOT BALANCED SZ,H2 LGLNST J GET . TRY TO SKIP IF ITVA* LA A0,FL30 LMJ B11,TF31 09460 SR R4,MEL . TABLES MUST EMPTY HERE LMJ B11,SEND CLEAR OUT TABLES 09470 ITVAX XER 22 . TABLES NOT EMPTIED 09480 ITVC L,12 A0,FL30 SZ ENTDPF CLEAR DP RESTRICTION SSL A0,3 L A15,SEQNJ TE,M A0,7 S A15,GABCLX TE,M A0,7 TEST FOR ENTRY J ITVZ PUT OUT ZERO LEVEL LMJ B11,LBB1 . T=7 FOR ENTER STATEMENT J ITV7 ITVD LMJ B11,GET1 RETURN 09580 LMJ B11,TF31 09590 SA A0,TA 09600 JNE A15,TA,0,S1 1 $+5 MVW LOOP+1,A0,H2 F31-1,NSEQN,H2 . RESTORE SYM REF ITVE LA,S1 A15,TA . THIS SECTION CHECKS TO SEE IF AN 09610 TE,M A15,1 INDUCTION VARIABLE IS DO ARGUMENT 09620 J GET IT IS NOT AN INDUCTION VARIABLE 09630 LA A0,TA LOADS PLATEAU NUMBER 09640 SBT A14,LOOP,A0,S4,4 09650 J GET 09660 ITVK LA A0,FL30 09730 SR R4,CRD . SET DIAGNOSTIC FLAG TO PERMIT DUMPS IN PHASE 5 AND,M A0,7 097400 TNE,M A1,5 TRACE J ITVK5 SET TRACE FLAGS TRACE TE,M A1,3 097410 J ITV7 . DIAGNOSTIC NOT FOR PHASE III SSL A0,3 097510 LX,M A1,13 JNB A0,ITVK1 . CLEAR DIAGNOSTIC FLAGS 097600 SA A0,DTEST . SET FLAG FOR DUMPING AT ERROR SSL A0,1 097700 DO IDX=1 , JNB A0,$+2 DO IDX=1 , SR R4,DX0,A1 DO IDX=1 , JGD A1,$-3 TN,XH2 FL30 J GET . DO IDX=1 , DIAG DX0 XD30 . FILE 30 DIAGNOSTICS J GET 097900 ITVK5 L,H1 A2,FL30 TRACE TNZ,S3 FL30 TRACE J ITV7 NO TRACE INFORMATION TRACE L A3,A2 TRACE JB A3,ITV7 TRACE L,M A0,6 TRACE SSL A3,1 TRACE AND,M A3,1 TRACE S A4,N3TRFL,A0 TRACE AN,M A0,1 TRACE JGD A0,$-4 TRACE L,M A0,1 TZ,S2 CRFLGS . NON ZERO FOR CTS CALL TNZ,H1 CRDBUG . Y OPYION IS NON ZERO J $+2 S A0,N3TRF2 . ASSUME TRACE OPTION(INDVAR) J ITV7 TRACE ITVK1 SSL A0,1 098000 DO IDX=1 , JNB A0,$+2 DO IDX=1 , SZ DX0,A1 DO IDX=1 , JGD A1,$-3 J GET 098400 ITVELS L A0,FL30 PASS ELSE ITEM TO PHASE 5 LMJ B11,TF31 L B5,LGLNST L A0,SEQNO S A0,IFELSE SLJ LBB6 L,S6 A0,FL30 TOP,M A0,040 . TEST FOR LABELS IN IF BEFORE ELSE J GET TNZ,H2 LOOPNU . TEST FOR ACTIVE LOOPS J ITVEZL . A ZERO LEVEL LABEL L,H2 A1,LOOPNU L,S6 A1,INDVAR,A1 . TEST FOR SAFE LOOP JNB A1,ITEVLL . LABEL IN SAFE LOOP ITVEZL LMJ B11,LBB1 . SIMULATE ZERO LEVEL LOOP J GET ITEVLL LMJ B9,LBB3T J GET ITVB1 L A0,FL30 LMJ B11,TF31 09880 LMJ B11,LBB1 09900 LMJ B11,SEND 09910 J GET ITVZ1 TZ,H2 FL30 J ITVELS ITVZ LA A0,(0260000,0) DUMMY ITEM FOR PHASE 4 LMJ B11,TF31 L A0,FL30 LMJ B11,TF31 09940 LMJ B11,LBB1 ELIMINATE CERTAIN LOC FUNCTIONS SR,H2 R4,SEQNO . SET SO ZERO LEVEL COME OUT RIGHT 099410 J LBB4 . GO CLEAR OUT ITEMS IN SUBEXX 09960 ITVFL* L A0,GEXFL L A1,GEXFLP-1,A0 RESTORE GET FLAG L A2,GETF TE,M A2,3 J $+5 S A1,GETF AN,M A0,1 S A0,GEXFL J SFND2 LA,H2 A0,FL30 JZ A0,GET J 0,A0 . RETURN TO LOCATION IN H2 OF ITEM ITVSX* L,M B11,TR CSC17 L,M A10,0,A0 SXLOC A3 A0 LNKSBX DO IDX=1 , TZ DX3 DO IDX=1 , SLJ XD3J L,14 A15,1 SLJ CNTJ INCREASE USES OF ALL EXPRESSIONS IN CHAIN ITVSY* . ENTRY POINT FOR CHANGING DFINTION POINTS ON PREHAPS . ALREADZ MOVED TO SUBEXW EXPRESSIONS JBL A14,1,A3,S4 2 ITVJX3 JNBL A14,3,A3,S1 040 0,B11 TP,XH2 1,A3 . LEAVE IN PLACE IF COMMON J 0,B11 CSC17 L A0,FL30 L A0,A10 L,M B2,0 TP,XH2 3,A3 L,M B2,2 POINTER TO X LNKSBX SBT A14,1,A3,S4,040 . AND AN ITEM SET IN TF51 LR,H2 R1,CTF51 LR R2,(02007777) LX B1,CTF51 LX B6,CTF51 MSE A0,TF51-1,*B1 J ITSX9 MVW TF51-1,B6 TF51,B1 DFL CTF51 1 ITSX9 SLJ DLINK REMOVE FROM PRESENT CHAIN LNKSBX L,S4 A4,3,A3 LNKSBX AND,M A4,070 LNKSBX A,M A5,0,B2 LNKSBX S,S4 A5,3,A3 POINTER TO NEW CHAIN LNKSBX SLJ SLINK ADD TO NEW CHAIN LNKSBX L B1,A3 LNKSBX LA A14,3,B1,S1 AND,M A14,037 . CLEAR FLAG WHICH SHOWS MOVEMENT SA A15,3,B1,S1 L,H1 A14,2,B1 AND,M A14,077777 EXTRACT FORWARD DEF PT TLE A15,SEQNO J ITSJX1 L,S4 A14,3,B1 REMOVE BIT WHICH SAYS DEFINE AT DP ONLY AND,M A14,067 S,S4 A15,3,B1 ITSJX1 ITSX2 LA,H2 A13,SEQNX L,H2 A13,SEQNO LR R2,(0700000) MLU,2 A13,3,B1 SA,2 A14,3,B1 . UPDATE LAST USE L,S4 A13,4,B1 . SET BIT SHOWING LAST USE CHANGED OR,M A13,010 S,S4 A14,4,B1 J 0,B11 CSC17 ITVJX3 L,H1 A14,2,A3 AND,M A14,077777 EXTRACT FORWARD DEFINTION POINT TLE A15,SEQNO J 0,B11 L,S4 A14,3,A3 AND,M A14,067 S,S4 A15,3,A3 J 0,B11 . THIS SECTION FORMS TRIADS FROM THE POLISH STRING 09980 TR* JE A0,FL30,0,S1 8 TR5 . TEST FOR OPERATOR TG,016 A0,15 10080 J TR4 INDICATE ERROR 10090 TR8 JE A15,F31-1,NSEQN,S1 8 TRA .TEST FOR OP AT TOP OF STACK CSC24 MV FL30,COPND1 10170 MVW F31-1,NSEQN COPND2 . TRANSFER LAST OPERAND TR3X L A15,F31-2,NSEQN S A15,COPER TNE A15,(0102200,0) . TEST FOR PARENTHESIS J TR2X TR1X DFL NOPER 1 . NOPER=NOPER-1 ANX,M NSEQN,2 . DELETE TRIAD FROM STACK TRZZ* L A15,NSEQN TLE,H2 A15,F31CT . WHERE IT WAS AT THE START OF CSC23 J USF31 . A STATEMENT FUNCTION GO TO GET CSC23 LMJ B11,CHTS+1 NOP . S A5,LASTTR TZ ILXX J TRILX . TRANSFER EXPRESSION ITEM TO STACK TRIX TNZ NOPER J TR3 INDICATE ERR OPER COUNT IS WRONG 10250 JE A15,F31-1,NSEQN,S1 8 TRB . TEST OP ON RIGHT 102600 L A0,A15 L,M A1,061376 TEST FOR 1,2,3,4,5,6,7,9,13,14 SSC A1,0,A0 JB A1,$+4 TZ DOSXTF J TRB SLJ XERV S A5,COPND1 . STORE CONRD OR SUBNO MVW F31-2,NSEQN COPER . TRANSFER OPERATOR 10280 MVW F31-1,NSEQN COPND2 . TRANSFER OPERAND 10290 JE A15,COPER,0,S1 8 TR1X . TEST FOR OPERATOR XER 11 . POLISH SCANNER CONFUSED 10310 TR3 TZ DOSXTF J GET XER 13 TR4 XER 14 . NON-VALID ID ON ITEM 10340 TRILX LX B1,ILXX SZ ILXX S A5,STACK,B1 . STORE CONRD OR SUBNO SSL A5,30 TE,M A5,5 J GET LN,M A15,1 EXPRESSION WILL BE COUNTED UP LATER SXLOC A3 STACK,B1,T3 NKSBX SLJ CNTJ J GET J GET TR5 LA,S2 A0,FL30 TLE,M A0,14 SZ,T3 FL30 . CLEAR FIELD USED FOR OPERATOR SUBTYPE TNE,M A0,017 J SA . IT WAS A SUBSCRIPT CONNECTOR TR6* SZ CNTOP 10360 TNE,M A0,1 S NSEQN,LSEQ . THIS COUNTER ALWAYS CONTAINS THE LOC IN F31 OF = TNE,016 A0,16 10370 J TRF 10380 TR6SA* IFL NOPER 1 . NOPER=NOPER+1 TRA* AX,M NSEQN,1 CSC23 TRA1 LA A15,FL30 10420 SA A15,F31-1,NSEQN . FL30 TO F31 AT NSEQN-1 10430 TLEM,M NSEQN,LF31 10440 J GET GO GET NEXT ITEM 10450 SLJ EMPTY THIS ROUTINE TRIES TO EMPTY BUFFERS 10460 J GET GO GET NEXT ITEM 10470 TRBJ JNE A15,FL30,0,S1 5 TRB LMJ B11,ITVSX+1 L A5,FL30 TRB L,M A15,0,NSEQN GENSUB L B6,SUBLV SUBSCRIPT LEVEL GENSUB TE,H1 A15,SUBXT,B6 GENSUB J $+3 NO RETURN TO SUBSCIRT PROCESSING INDICATED GENSUB L,H2 A0,SUBXT,B6 RETURN TO SUBSCRIPT PROCESSOR GENSUB J 0,A0 GENSUB S A5,F31,NSEQN GENSUB SR R4,CNTOP AX,M NSEQN,1 10640 J GET NO TEST F31 PREV TRIAD FILLED SPACE 10650 TR2X AN,M NSEQN,1 J TR3X TRF LX B6,FNC THIS SECTION ADJUSTS THE FUNCTION LEVEL COUNT 10780 LX A0,FL30 LOADS SYMBOL TABLE REFERENCE 10790 AX,016 B6,1 FNC=FNC+1 10800 LA A15,3,A0 TRANSFERS FOURTH WORD OF SYM TABLE 10810 SA A15,INTRX,B6 TO ENTRX SO 17 CAN BE PICKED BY BC 10820 SZ FNX,B6 SZ SFMSK,B6 LA,013 A14,2,A0 CHECKS MODE 10830 AND,016 A14,07 10840 TNE,016 A15,6 10850 J TRF2 WAS AN INTRINSIC FUNCTION 10860 TE,M A15,5 . ARGUMENT 108650 TNE,M A15,2 10870 J TRF1 . IT WAS AN EXTERNAL FUNCTION 10880 TE,M A15,1 10890 J TRFX . INDICATE ERROR 10900 JNBL A14,2,A0,S2 2 TRF3 . TESTS FOR STATEMENT FUNCTION 10910 TRF1 SZ,015 FNX,B6 10920 L,H2 A14,2,A0 AND,M A14,0177777 REMOVE EXTERNAL BITS TLE,M A15,0100 SZ,T3 2,A0 CLAR TYPE FIELD SZ,H2 FL30 . CLEAR OUT SYM REF 10930 SA,1 A0,FNX,B6 STORES SYMBOL TABLE REFERENCE 10940 SX B6,FNC 10950 LA,S2 A14,2,A0 . TEST FOR SUBROUTINE AND,M A14,4 SA,S5 A15,FL30 . IF A15 IS NON ZERO J2 WILL BE SET J TR6 10960 TRF2 LA,011 A14,2,A0 LOADS NUMBER OF INTRINSIC FUNCTION 10970 TNE,M A14,056 S,H2 A14,POLG SA,013 A14,FNX,B6 10980 SR,S1 R4,FNX,B6 . SETS TYPE FOR INTRINSIC FUNCTION 10990 L A14,0,A0 . NAME OF FUNCTION TNE A14,('FLD$ ') S,S6 R4,SFMSK,B6 . SET FLAG FOR DOUBLE WORD FLD TNE A14,('BITS ') S,S5 R4,SFMSK,B6 . SET FLAG FOR FTN BITS FUNCTION L,S4 A14,2,A0 BVER1 AND,M A14,7 BVER1 JZ A15,TRF1+1 BVER1 L,M R15,3 S,S1 R15,FNX,B6 SET TYPE FOR AUTO MATH FUNCTION S,S4 A15,2,A0 CLEAR ABNORMAL AND EXTERNAL BITS J TRF1+1 110000 TRF3 S,S1 R6,FNX,B6 SET TYPE FOR STATEMENT FUNCTION BVER1 J TRF1+1 11020 TRFX L A1,0,A0 NAME S A1,ERR22+1 S,1 A0,TRFX1 XERF ERR22 AMBIGUOUS USE OF NAME L A0,TRFX1 REENT J TRF1 $(2) . TRFX1 +0 REENT SEQNJ +0 . LAST VALID SEQUENCE NUMBER LASTTR +0 RESULT OF LAST TRIAD DOSXTB +0 EXPRESSION FOR INITIAL VALUE +0 EXPRESSION FOR INCREMENT +0 EXPRESSION FOR FINAL VALUE ITV6R +0 ITV6A +0 END