. THIS PROGRAM IS PHASE 6 OF THE UNIVAC-1107 FORTRAN-IV SYSTEM . THE PRIMARY PURPOSE OF PHASE 6 IS TO OUTPUT THE RELOCATEABLE . OBJECT PROGRAM REPRESENTED BY THE ORIGINAL SOURCE PROGRAM. . PHASE 6 ALSO PROCESSES THE DATA STATEMENT AND PERFORMS ALL . EDITING FUNCTIONS NECESSARY TO PRODUCE A READABLE LISTING. RGDFS. LSTM EQU 2000 STC2 EQU 2 $(1). . THIS SECTION INITIALIZES PHASE 6. OPENS FILES 60 AND . 61. SORTS THE ERROR TABLE ON SEQUENCE NO. CONSTRUCTS . STORAGE MAP IF REQUESTED. GIVES CONTROL TO MERGE . INITIALIZE FLAGS, COUNTERS, LINKS, ETC. OPEN BINARY OUTPUT. N6MN* B$OPNF F60 SZ F60I J N6GB N6GA . L,M A0,6 . CLEAR COUNTERS USED IN PHASE 5 L,M A0,8 . CLEAR COUNTERS USED IN PHASE 5 L A1,LRSTC1,A0 S A1,SVLRST,A0 SAVE PHASE 5 COUNTERS SZ LRSTC1,A0 JGD A0,$-3 L,M A0,LC1 S A0,LCN INITIALIZE TO INSTRUCTIONS SZ VI60ID L,M A0,33+33*SYLFT-1 SZ VIFTLK,A0 JGD A0,$-1 L,M B1,32 SZ VIFTLK,B1 JGD B1,$-1 L,M R1,32 PREPARE TO ZERO FLAG WORDS IN ALL FILE TABLES L A0,(SYLFT,VIFT) THESE WORDS ARE LATER TESTED SZ BCW FO ZERO TO SEE IF A FILE IS ACTIVE SZ BNAME NOP 0,0,*A0 JGD R1,$-3 DL A0,PARTBL+27 RELOCATABLE OUTPUT FILE DS A0,VIFT SET NAME FOR COMPARIOSON L,M A2,1 S,S1 A2,VIFTLK+1 FLAG SET TO ZERO WHEN FILE COMPLETE L A1,(1,PARTBL+14) L,M R1,12 L A0,(1,VIFT+SYLFT+SYOUTL) START OF PFI TABLE FOR SOURCE OUT BT A0,0,*A1 MOVE TABLE FOR SYMMETRY DL A0,PARTBL+14 DS A0,VIFT+SYLFT JZ A0,N6MNA NO SOURCE OUT L,M A0,PARTBL+27 ER PFWL$ TNE A1,PARTBL+26 J N6MNA L,M A0,VIFT+SYLFT SLJ N6BUFQ REQUEST BUFFERS L,M A0,VIFT+SYLFT S A1,BCW IF NO BUFFERS AVAILABLE ZERO FLAG JZ A1,N6MNA AND NO WRITE OCCURS LMJ B11,SSORF OPEN ELEMENT TYPE FILE N6MNA J VI123 J VM160 N6GB . LA A0,BUGERR ER IALL$ L A0,CRLAB L A1,CRC A,M A1,8 . ADD NO. REQUIRED COUNTERS TG A0,A1 S A0,A1 L,M A0,1 SSL A1,1 SSL A1,1 A,M A0,1 TZ A1 J $-3 TLE,M A0,5 L,M A0,5 SET TO AT LEAST LOCATION COUNTER IV S A0,KBIT SAVE THE K BIT LIMIT TNZ CREMOT IT THIS A DEMAND RUN? J $+4 NO, GIVE FULL LIST L A0,PARTBZ GET OPTION LETTERS JNB A0,$+2 CHECK FOR Z OPTION S A0,SHORT INDICATE SHORT LIST FOR TTY'S ER COND$ S,S6 A0,MAXERR . ACCUMULATE MAX ERROR LEVEL SSL A0,6 S,S5 A0,MAXERR . SIMULATE S,T3 L,S4 A0,PARTBZ IS M OPTION SPECIFIED SSL A0,1 JNB A0,$+2 S A0,MOPTON EDIT STATIC DIAGN. PACKETS L A0,CRSTC2 S,H1 A0,VSKLB L,M A0,022 . 18 BIT NAME LIST RELOC 131K TZ,S6 CR131K S,S3 A0,NL4 131K SZ VI00 RESET FLAGS SZ DIAG SZ VI01 ZERO LOC COUNTER VI000030 SZ VI07 ZERO CARD COUNTER VI000040 SZ VC10 ZERO HEAD LINK (CONSTANTS) L,H2 A0,CRPRO TYPE OF PROGRAM SSC A0,35 TE,M A0,6 SZ LGCN . THIS WORD IS ZERO EXCEPT IN DATA PROGRAM L,H2 A1,VI52 . OPEN ERRT - GBFORT AN A1,(ERRT-1) . VIETP IS FORTRAN - GBFORT S A1,VIETP . INDEX OF CURR ERRT ENTRY. GBFORT L B3,VI52 . REMOVE WHEN N6SOR IS INCORPORATED. GBFORT L A1,CRE . SIMULATE L,XT3 SSC A1,12 SSA A1,24 . TRANSFER - SSL A1,1 S A1,VI02 JZ A1,VI120J SZ VSER1 SZ VSER2 . SORT ERROR TABLE. REQUEST PARTIAL LIST AT LEAST. VI110 LMJ B11,SRT2 SORT ERRT VI000170 + ERRT L(TABLE) VI000180 + VI02 L(COUNT) VI000190 VI120J L,M A0,1 XEC8C S A0,ROPTN . R OPTION TO SUPPRESS REL. OUTPUT L A1,PARTBZ SSL A1,8 JB A1,VI120K SZ ROPTN TZ CRFL XEC8C J VI120K TZ,T1 CRE S,S2 A0,PARTBL+32 SET ERROR BIT XEC8C L A0,KBIT LMJ B11,SROR XEC8C LMJ B11,EMPF XEC8C VI120K L A1,CRE SSL A1,24 . EXTRACT T1 TNZ CREMOT IF REMOTE DONT TURN ON LIST RMDIAG TNZ A1 . SIMULATE TNZ,T1 CRE J VI120 L A1,CRLIST TE,M A1,2 . 2= FULL LISTING L,M A1,1 S A1,CRLIST SZ CRPD1A VI120 L A1,CRLIST LIST OPTION VI000198 TZ,S1 CRDGSY . TEST FOR OUTPUT OF SYMBOL TABLE J VI121 . EDIT IF SYMBOL TABLE DUMP TNZ CRSTED EDIT SYM IF WE HAD A START EDIT. CLEAN JZ A1,N6GA . OUTPUT STORAGE MAP. . TYPE OF PROGRAM . ENTRY POINT . STORAGE USED . EXTERNAL REFERENCES . STORAGE ASSIGNMENTS VI121 TNE,M A1,2 S,S3 A1,VI00 INDICATE COMPLETE LIST VI000270 SZ BDG E$DIT ED$PKT INITIATE EDITING LMJ B11,PRINT8 BLANK LINE DL A0,VSM1 MAIN PROGRAM DS A0,LINE$+1 L,H2 A0,CRPRO TYPE OF PROGRAM JZ A0,VM104B A MAIN PROGRAM TE,M A0,3 J VM104 S A0,BDG IT'S BLOCK DATA DL A0,VSM1+2 DS A0,LINE$+1 VM104B LMJ B11,PRINT8 VM104 L,H1 A0,EPPTR JZ A0,VM105 L,M A10,2 ENTRIES ARE INTERNAL IF A10 LX B9,A0 IS LESS THAN OR EQUAL TO ZERO L,H2 A0,CRPRO TNE,M A0,0 JGD A10,$+1 VM104A L,S3 A0,1,B9 PROGRAM TYPE TNE,M A0,1 SUBROUTINE J $+3 TE,M A0,3 FUNCTION J $+2 JGD A10,$+1 L,M A1,' ' TNE,M A10,0 S,S6 A1,EXTIND L A0,EXTIND * OR BLANK S A0,LINE$ L,S3 A0,1,B9 PROGRAM TYPE LSSL A0,1 AN,M A0,2 DL A1,VSM1+4,A0 DS A1,LINE$+1 L,H1 A0,0,B9 L A0,0,A0 NAME S A0,LINE$+3 DL A0,VSM2 DS A0,LINE$+5 L,H2 A2,3,B9 ENTRY POINT SLJ OCTAL L A2,VMTYP BLANKS LDSL A1,6 S A1,LINE$+7 L A0,(' SEQ ') S A0,LINE$+8 L,H1 A2,6,B9 SEQ. NUMBER SLJ OCTAL S A1,LINE$+9 LMJ B11,PRINT8 L,H2 B9,6,B9 FORWARD LINK L A0,B9 NEXT TABLE ENTRY JNZ A0,VM104A ARE THERE ANY MORE VM105 LMJ B11,PRINT8 BLANK LINE E$COL 3 L,M A1,34 L,M A0,VSM3 STORAGE USED LMJ B11,ECOPY$ LMJ B11,PRINT8 LMJ B11,PRINT8 TZ BDG TEST BLOCK DATA FLAG J VM115 SKIP NORMAL OUTPUT L,M A1,VSM4 *CODE L A0,CRSTC1+1 . COUNTER FOR INSTRUCTIONS L A2,LRSTC1+1 . NUMBER OF INSTRUCTIONS L A3,CRSTC2 LMJ B11,HEADIF L A0,CRSTC8 STORAGE CLASS OF DBANK CODE L,M A1,VSM4 *CODE L A2,LRSTC1+6 LENGTH OF DBANK CODE LMJ B11,HEADIF L A0,CRSTC3 L,M A1,VSM5 . *TEMP L,H2 A2,LRSTC1+2 . LENGTH OF TEMP A,H1 A2,SVLRST+2 . NUMBER ASSIGNED OF TEMP LMJ B11,HEADIF L A0,CRSTC9 L,M A1,VSM5C .*CONSTANTS L,H2 A2,LRSTC1+7 . LENGTH OF CONSTANTS LMJ B11,HEADIF L A0,CRSTC5 L,M A1,VSM51 *SIMPLE VAR L A2,LRSTC1+3 LENGTH OF SIMPLE VARIABLES LMJ B11,HEADIF L A0,CRSTC6 L,M A1,VSM52 *ARRAYS L A2,LRSTC1+4 LENGTH LMJ B11,HEADIF TNZ MOPTON EDIT IF M OPTION IS ON J VM106 L A0,CRSTC7 STATIC DIAGNOSTIC COUNTER L,M A1,VSM6 TITLE '*SDIAG$' L A2,LRSTC1+5 LENGTH LMJ B11,HEADIF VM106 . VM115 L,H2 A6,CRC AN,M A6,1 L,H1 A7,CRLNLB POINTER TO LABELLED BLOCK CHAIN L,H2 A8,CRSTC4 LOC COUNTER VM116 E$COL 9 L A0,A8 L,M A1,4 LMJ B11,EOCTF$ STC E$COL 16 AN,M A7,3 L A2,A7 L,M A0,3,A2 L A1,0,A0 TE A1,('WLKBK$') J $+3 L A1,LRSTC1+5 LENGTH OF STATIC DIAGNOSTIC COMMON S,H2 A1,2,A2 L,M A1,6 LMJ B11,ECOPY$ E$SKIP 2 L A0,A7 L,H2 A0,2,A0 LENGTH L,M A1,6 LMJ B11,EOCTF$ LMJ B11,PRINT8 L A0,A7 L,H2 A7,0,A0 A,M A8,1 JGD A6,VM116 LMJ B11,PRINT8 L,H2 A6,CRLAB AN,H2 A6,CRC JZ A6,VM130 AN,M A6,1 DL A0,VSM7 DS A0,LINE$ DL A0,VSM7+2 DS A0,LINE$+2 LMJ B11,PRINT8 LMJ B11,PRINT8 VM117 E$COL 9 L A0,A8 STC L,M A1,4 LMJ B11,EOCTF$ E$COL 16 AN,M A7,3 L A0,A7 L,M A0,3,A0 L,M A1,6 LMJ B11,ECOPY$ LMJ B11,PRINT8 A,M A8,1 L A0,A7 L,H2 A7,0,A0 JGD A6,VM117 VM130 LMJ B11,PRINT8 BLANK LINE E$COL 0 L,M A0,VSM8 STORAGE ASSIGNMENT L,M A1,72 LMJ B11,ECOPY$ LMJ B11,PRINT8 LMJ B11,PRINT8 E$COL 0 L,S1 A1,SYMBRK L,H2 A0,CRSYM A,M A0,4 S,H1 A0,SYMBRK+1,A1 L,H2 A0,CRISYM INDEX SYM TABLE L A3,MAPX L,H1 A1,SYMBRK+1 SZ,S2 SYMBRK YNCNT S A1,SYMB VM132 TNE,H2 A0,CRSYM J MAPT TNE A0,SYMB YNCNT J VM132Z YNCNT L,H1 A1,2,A0 CHECK CLASS DSL A1,3 SSL A2,33 JNZ A2,VM157 TP 0,A0 SKIP DUMMY J VM155 FOR ABSOLUTE ADDRESSING SETMP TG A3,(1,STMAP+LSTM) J MAPT S A0,0,*A3 VM155 A,M A0,4 ADVANCE IN SYMT J VM132 MAPT AN A3,MAPX S A3,STML LMJ B11,SRTIND .SORT INDIRECT 1-WORD VEC. FORT + STMAP + STML L A6,STML L A2,MAPX L,M A8,5 . 5 ITEMS PER LINE J TJGD VM134 JGD A8,VM133 LMJ B11,PRINT8 E$COL 0 L,M A8,4 VM133 L A0,0,*A2 NOP. L,H1 A1,2,A0 SSC A1,6 SSL A1,33 L,S6 A1,VMTYP,A1 VMN41 S A1,VI32 SET TYPE L,H1 A1,1,A0 ISOLATE STC SSC A1,12 SSL A1,24 S A1,VI31 131K L,H2 A1,1,A0 S A1,VI33 SET RELATIVE LOCATION L A1,0,A0 S A1,VI34 SET NAME S A2,A7 E$SKIP 3 L A0,VI31 STC L,M A1,4 LMJ B11,EOCTF$ E$CHAR ' ' L A0,VI32 TYPE LETTER LMJ B11,ECHAR$ E$CHAR ' ' L A0,VI33 LOC L,M A1,6 LMJ B11,EOCTF$ E$CHAR ' ' L,M A0,VI34 VARIABLE NAME L,M A1,6 LMJ B11,ECOPY$ E$SKIP 2 L A2,A7 TJGD JGD A6,VM134 E$DITX J VM160 VM157 TNE,M A2,1 J VM157A VM157B TNG,M A2,3 J VM156 TNE,M A2,7 J VM158 J VM155 VM157A . L,H1 A4,1,A0 AND,M A4,07777 TNE,M A5,07776 J VM155 L,H1 A4,2,A0 AND,M A4,0207 TE,M A5,1 TEST FOR STATEMENT FUNCTION J VM157B J VM155 VM156 SSC A1,3 DSL A1,3 SSL A1,30 SSL A2,35 JZ A1,VM155 JZ A2,SETMP J VM155 VM158 DSL A1,6 SSL A2,33 TNE,M A2,7 J NLLBL TE,M A2,2 J VLBL L A1,0,A0 SYM TNE A1,('FR/FL ') IS IT FREE FORM J SETMP PRINT IT L A6,A3 L,H2 A1,0,A0 L A3,LLBR VLBA LMJ B11,VI811 VLBB L A1,VI20 S A1,0,A0 L A3,A6 L,M A1,0 J SETMP NLLBL L,H1 A1,2,A0 SSC A1,6 SSL A1,33 GET TYPE TE,M A1,7 J VM155 NOT NAME LIST TABLE LABEL L A1,0,A0 LABEL NAME TNE A1,('NLTBL1') J NLLBL1 TE A1,('NLTBL2') J VM155 TZ NLTBL2 J VM155 ALREADY OUTPUT TO MEMORY MAP S B11,NLTBL2 J SETMP LIST THIS TIME NLLBL1 TZ NLTBL1 J VM155 ALREADY OUTPUT TO MEMORY MAP S B11,NLTBL1 J SETMP LIST IT THIS TIME $(2) . NLTBL1 + 0 NLTBL2 + 0 $(1) . VLBL TE,M A2,1 J VM155 L,H2 A1,0,A0 JZ A1,VM155 L,S1 A1,0,A0 . SIMULATE L,T1 LSSL A1,6 A,S2 A1,0,A0 . TNE,M A1,'I@' J VLBI TNE,M A1,'D@' J VLBD TZ,S1 0,A0 J VM155 L,H1 A1,1,A0 SSC A1,12 SSL A1,24 TNE A1,CRSTC8 CODE IN D BANK J $+3 TE A1,CRSTC2 131K J VM155 L,H2 A1,0,A0 L A6,A3 SSC A1,17 JB A1,VLBC L A3,LLBK SSL A1,19 J VLBA VLBC L A3,LLBG SSL A1,19 LMJ B11,VT811 J VLBB VLBD L A6,A3 L A3,('D ') VLBIC L A1,0,A0 LSSL A1,6 SSL A1,6 LMJ B11,VT811 J VLBB VLBI L A6,A3 L A3,('I ') J VLBIC VM160 LMJ B11,PRINT8 LMJ B11,PRINT8 LMJ B11,PRINT8 J N6GA VM132Z L,S2 A2,SYMBRK DYNCNT A,M A2,1 DYNCNT S,S2 A2,SYMBRK DYNCNT L A4,A3 L,H1 A3,SYMBRK+1,A2 DYNCNT S A3,SYMB DYNCNT L A3,SYMBRK,A2 DYNCNT A,M A3,3 DYNCNT SSL A3,2 DYNCNT LSSL A3,2 DYNCNT LXM A0,A3 DYNCNT L A3,A4 J VM132 DYNCNT VI115* TNZ,S1 VI00 J VI123 READ F61 VI000300 VI116* TNZ,S2 VI00 J VI400 NO, READ F60 VI000320 . FLUSH . FLUSH OUT ANY REMAINING ERRT ITEMS FOR PHASE 1 FATALS. FLUSH . FLUSH VFLUSH TNZ,H2 VI02 . ANYTHING LEFT? FLUSH J VFLSHX . NO FLUSH A,M B3,2 . YES, POINT AT IT FLUSH LMJ B11,N6EMW . DO IT UP. FLUSH +0 FLUSH J VFLUSH FLUSH VFLSHX. FLUSH . FLUSH VI117 TZ CRPH6 EXEC8C J CDT00 EXEC8C BCLOSE F61 CDT00 TZ CRFL EXEC8C J WTAB1 NO RB EXEC8C J CHSRFL . TEST FOR PART WORD LOADS FROM CHARACTE CHSRQQ . RETURN FROM PART WORD LOADS L,H1 B10,VC10 TNZ B10 J CDT30 L A1,CRSTC9 . COUNTER FOR CONSTANTS S,S6 A1,VI523 . CONSTANT LOC COUNTER SSL A1,6 . SIMULATE S,T3 S,S5 A1,VI523 CDT10 L A1,0,B10 S A1,VI521 L,H2 A1,1,B10 S,H2 A1,VI522 L,M A0,VI520 LMJ B11,MV6Q RELOCATABLE OUTPUT LMJ B11,EMROR L,H1 A2,2,B10 SSC A2,6 ISOLATE TYPE SSL A2,33 TNE,M A2,3 J CDT20 DOUBLE TNE,M A2,4 J CDT20 COMPLEX CDT15 L A10,B10 TNE,H2 A10,VC10 J CDT30 EXIT L,H2 B10,3,B10 J CDT10 CDT20 L,H2 A1,1,B10 A,M A1,1 L,H2 A2,2,B10 SSC A2,17 SSL A2,19 S,H2 A1,VI522 L A2,0,A2 WORD 2 S A2,VI521 L,M A0,VI520 LMJ B11,MV6Q LMJ B11,EMROR J CDT15 CONTINUE CDT30 TZ,S1 CRDGSY LMJ B11,ZSYM . OUTPUT SYMBOL TABLE TZ ROPTN J NSK2 LN A0,CRPRO JNZ A0,$+3 LXI,H2 A0,CREP LXM,M A0,1 TZ CRFL J NSK2 LMJ B11,EROR LMJ B11,EMROR NSK2 L,M A4,4 S,H1 A4,VI550 L,H2 A4,CRC 131K TNZ,S1 CRDGSY . TEST FOR OUTPUTING SYMBOL TABLE TZ,S2 U1110A REENTRANT LIBRARY A,M A4,1 SDIAG$ NOT INCLUDED IN COMMON COUNT - CRC S,H2 A4,VI553 . INFO COUNT 131K A A4,CRSTC4 131K TZ,S2 U1110A AN,M A4,1 S,H2 A4,VI550 . LOC CNTR COUNT 131K A,H1 A4,VI550 S,H1 A4,VI551 . PNTR TO UNDEFINES 131K L,H2 A4,CRLAB 131K AN,H2 A4,CRC 131K S,H2 A4,VI551 . COUNT OF UNDEFINES 131K SSC A4,35 EACH IS TWO WORDS LONG A,H1 A4,VI551 . PNTR TO EXTERNALS 131K S,H1 A4,VI552 L,M A3,0 KLUDGE L,H1 B10,VI552 A,M B10,1 L A1,(' ') EXEC8C LXI,M B10,4 L,H1 B7,EPPTR . HEAD LINK FOR FUNCTION BLOCKS L,M A4,2 . WHEN A4 IS ZERO OR LESS ENTRIES ARE TNZ,H2 CRPRO . NO LONGER EXTERNAL L,M A4,1 J RLC10B RLC10A L,S3 A0,1,B7 TE,M A0,2 . 2 IS ENTRY AN,M A4,1 JZ A4,RLC11 L,H2 A0,3,B7 S A0,VI550+3,B10 L,H1 A0,0,B7 L A0,0,A0 . NAME OF ENTRY DS A0,VI550,B10 L,H1 A5,3,B7 SSC A5,18 S A5,VI550+2,*B10 A,M A3,1 L,H2 B7,6,B7 RLC10B TZ,M 0,B7 TEST FOR END OF CHAIN J RLC10A RLC11 L A4,A3 KLUDGE S,H2 A4,VI552 MSI,M A4,4 A,H1 A4,VI552 . PNTR TO INFO 131K S,H1 A4,VI553 L,H2 A4,SVLRST+2 LENGTH OF CONST+TEMPS A,H1 A4,SVLRST+2 S,H2 A4,SVLRST+2 L,H2 A0,VI550 131K JGD A0,$+1 131K SZ VI560,A0 . CLAER LOC CNTR TABLE 131K JGD A0,$-1 131K L,M A0,3 131K L A1,CRSTC2,A0 131K L,H2 A4,SVLRST+1,A0 FILL TABLE WITH S A4,VI560,A1 . SIZES OF COUNTERS 131K JGD A0,$-3 131K L A1,CRSTC9 . CONSTANTS L A4,SVLRST+7 . LENGTHOF CONSTANTS S A4,VI560,A1 L A1,CRSTC8 DBANK CODE LOC COUNTER L A4,LRSTC1+6 CODE IN D BANK S A4,VI560,A1 L A1,CRSTC7 L A4,LRSTC1+5 . CODE IN RANDOM STORAGE TZ,S1 CRDGSY . TEST FOR OUTPUTTING SYMBOL TABLE S A4,VI560,A1 L B7,CRSTC4 131K L,M B8,5,B7 LXI,M B8,1 131K L,H1 B9,VI553 A B9,(4,1) L A5,(' ') EXEC8C SZ CMNC L,H1 A1,CRLNLB . POINTER TO COMMON BLOCKS AN,M A1,3 RLC20 L,H2 A0,CRC COMPUTE N(LABELED COMMON) AN,M A0,1 RLC22 L,H2 A4,2,A1 . BLOCK LENGTH S A4,VI550,*B8 L A4,3,A1 DS A4,VI550,B9 L,S4 A4,1,A1 GROUP NUMBER LSSL A4,12 A,M A4,0100 L,H2 A1,0,A1 ADVANCE TO NEXT ENTRY AN,M A1,3 IN COMMON TABLE A A4,LGCN . THIS FORMS THE GROUP NUMBER FOR LOADED COMMON S,H1 A4,VI550+2,B9 L,M A4,01000 MINIMUM ADDRESS S,H2 A4,VI550+2,B9 SZ VI550+3,B9 L,M A4,0,B7 S,S2 A4,VI550+3,B9 SSL A4,6 S,S1 A4,VI550+3,*B9 A,M B7,1 CC+1 JGD A0,RLC22 TZ,S1 CRDGSY . TEST FOR OUTPUTTING SYMBOL TABLE J $+3 TNZ,S2 U1110A REENTRANT LIBRARY J RLC29 L A4,('SDIAG$') DS A4,VI550,B9 L A0,(0100100,0) . GROUP 8 S A0,VI550+2,B9 L A0,CRSTC7 ODD NUMBERED COUNTER SZ VI550+3,B9 S,S2 A0,VI550+3,B9 SSC A0,6 . SIMULATE S,T1 S,S1 A0,VI550+3,*B9 LSSC A0,6 . RESTORE A0 L A4,LRSTC1+5 LENGTH OF CRSTC7 S A4,VI560,A0 RLC29 SZ,H2 VI550-2,B9 131K RLC30 L,H2 A0,VI551 NO. EXTERNAL REFERENCES JZ A0,RLC40 NONE AN,M A0,1 L,H1 B8,VI551 POINTER TO EXTERNAL REF A B8,(2,1) RLC32 L A4,3,A1 L,H2 A1,0,A1 AN,M A1,3 DS A4,VI550,*B8 JGD A0,RLC32 RLC40 L,M A0,VI550 DL A4,VI552 DS A4,VI553 DL A4,VI550 DS A4,VI551 A,M A0,1 WTABJ L,M A1,0,B9 LENGTH OF PREAMBLE DS A0,WTJ1 TNZ DMPFLG+1 J WTAB3 LMJ B11,SNAP +WTJ1 +WTJ2 +WTJ3 +300,0 DL A0,WTJ1 WTAB3 TNZ ROPTN TZ CRFL J WTAB1 L A1,B9 YES CLEAR RB ERROR BIT EXEC8C SSC A1,18 EXEC8C SSL A1,18 TABLE LENGTH EXEC8C L,M A0,01000 S,H1 A0,VI550+6 MIN D BANK ADDRESS L A0,KBIT S,H1 A0,VI550+5 L,M A0,VI550+1 L,H1 A2,PARTBL+32 . SET BIT IN RELOCATABLE ELEMENT TZ,S6 CR131K . TABLE ENTRY TO INDICATE LARGE CORE A,M A2,0040000 . COMPILATION S,H1 A2,PARTBL+32 LMJ B11,TBLWR OUTPUT PREAMBLE EXEC8C LMJ B11,EMROR I ERROR EXEC8C WTAB1 TZ CRLIST J PBLKA L A0,VI02 . TOTAL NO. OF ERRORS INCL. DUPLICATES A A0,DIAG . ADD ANY ERRORS FROM PHASE 6 S A0,DIAG . STORE FOR PRINTOUT PBLKA . XEC8C PTCRD . TNZ,H2 CRCRFT J PTC1 LMJ B11,TIMDIA WRITE NO. OF DIAGNOSTICA +0,(1) PTC1 NOP . DUMMY WALKBACK L,M A0,0100 TNZ CRFL J $+4 S,S2 A0,PARTBL+32 . DELETE OUTPUT SSL A0,6 . SIMULATE S,T1 S,S1 A0,PARTBL+32 . TNZ CRSERR XEC8C J POST LMJ B11,P6EMW +((0)). +VJ68. +$. +0. POST J N6TEND POSTY* . NOP TNZ CRFL TNZ,H2 CRCRFT TEST FOR CROSS REFERENCE FILE J POSTX NO CROSS REFERENCE DO LMSC ,GXRFXX EQU 1 DO JPL ,GXRFXX EQU 0 DO GXRFXX , PROC GXTID EQU VI560 . WORD TO INDICATE THIS IS A TOC GXTOC EQU VI560+1 . AREA TO BUILD TABLE OF CONTENTS . FOR GLOBAL CROSS REFERENCE GXTCN EQU 290 . MAXIMUM POSSIBLE ENTRIES IN GLOBAL XRE GXTCL EQU 6 . LENGTH OF EACH ENTRY IN GLOBAL TOC L,S3 A0,PARTBZ JNB A0,VINIH . H OPTION FOR GLOBAL CULL DL A4,PARTBL+29 . RELOCATABLE OUTPUT NAME DL A6,PARTBL+33 . RELOCATABLE OUTPUT VERSION TZ A4 J VINQ DL A4,PARTBL+3 . ELEMENT NAME DL A6,PARTBL+7 . ELEMENT VERSION TZ A4 J VINQ DL A4,PARTBL+16 . SOURCE OUTPUT NAME DL A6,PARTBL+20 . SOURCE OUTPUT VERSION VINQ DS A4,GXNAME . SAVE NAME TO BE USED FOR GLOBAL CROSS DS A6,GXVERS . SAVE VERSION TO BE USED FOR GLOBAL CRO L,M A0,GSFAPZ ER FACIL$ TZ,S1 GSFAPZ+6 J VIN2 . FILE ALREADY THERE L A0,(5,CRCGFT) . CSF CONTROL IMAGE ER CSF$ TP A0 . TEST FOR VALID ASSIGNMENT J CRFSG2 . NO ASSIGNMENT POSSIBLE SSL A0,33 JB A0,VIN2 . FILE ALREADY ASSIGNED VIN2A DL A0,GSTPK3 DS A0,GSTPKT+3 L,M A0,GSTPKT ER IOW$ J VIN5 . INITIALIZE FILE TABLE TP GSTPKT+3 . TEST VALID IO COMPLETION SLJ F30ERX VIN2 DL A0,GSTPK2 . GET NEXT ADDRESS TO WRITE DS A0,GSTPKT+3 L,M A0,GSTPKT . READ 1-ST SECTOR ER IOW$ TP GSTPKT+3 SLJ F30ERX L A0,ERRT TE A0,('ATHENA') J VIN2A L A0,ERRT+1 TE A0,('-GSORT') J VIN2A L A0,(1,ERRT) L A1,(1,VIHRFT) L,M R1,56 BT A1,0,*A0 DL A0,GSTCPKR . SET TO READ TOC FROM DISK DS A0,GSTPKT+3 L A0,GSTCPKR+2 . RELATIVE SECTOR ADDRESS S A0,GSTPKT+5 L,M A0,GSTPKT ER IOW$ TP GSTPKT+3 . TEST VALID IO COMPLETION SLJ F30ERX L A0,GXTID TE A0,('GXXTID') . TEST IF VALID TOC EXISTS J VIN5 . NO! GO INITIALIZE ONE L A0,(6,GXTOC) L A1,GXNAME . FIRST HALF OF NAME LR,M R1,GXTCN . LOOK TO SEE IF ELEMENT WITH SAME VIN7 SE A1,0,*A0 . NAME AND VERSION ALREADY PRESENT J VIN6 . LOOK FOR SLOT TO PLACE NEW ENTRY L A2,A0 AN,M A0,6 . SET BACK TO ENTRY WITH MATCH L A3,GXNAME+1 . SECOND HALF OF NAME TE A3,1,A0 J VIN7 DL A3,GXVERS . 12 CHARACTER VERSION DTE A3,2,A0 J VIN7 SZ 0,A0 . SHOW SLOT AVAILABLE L A1,5,A0 . DEFINITIONS FOR ELEMENT IN FILE S A0,GXSLOT . SAVE LOCATION OF ENTRY S A1,VIHRFY+9 . SET FIRST AND LAST BLOCK L,M A1,RFRFD$ . READ FORWARD DESTRUCTIVE SZ VIHRFY+3 L,M A0,VIHRFY . FILE TABLE LOCATION LMJ B11,RFPO$ . OPEN FILE SLJ F30ERX LMJ B11,RFPR$ . READ ELEMENT TO RELEASE ALL BLOCKS SLJ F30ERX J $+2 . ALL BLOCKS RELEASED J $-3 . READ AND RELEASE ANOTHER BLOCK L A0,GXSLOT . RELOAD POSISTION OF ENTRY J VIN8 VIN6 L A0,(GXTCL,GXTOC) SZ A1 . LOOK FOR EMPTY SLOT LR,M R1,GXTCN . TOTAL NUMBER SLOTS SE A1,0,*A0 J CRFSG9 . TABLE OF CONTENTS FULL AN,M A0,GXTCL . SET BACK TO EMPTY SLOT S A0,GXSLOT . SAVE LOCATION OF SLOT VIN8 DL A1,GXNAME DS A1,0,A0 . SET NEW NAME IN TOC DL A1,GXVERS DS A1,2,A0 SZ 4,A0 . CLEAR TIME AND DATE FIELD VIN3 L,M A0,VIHRFT . LOC OF FILE CONTROL TABLE L,M A1,SUBEXD S,H1 A1,VIHRFT+6 A,M A1,GLNBUF+1 S,H2 A1,VIHRFT+6 L,M A1,FPOOLX S A1,VIHRFT+7 L,M A1,RFW$ . OPEN TO WRITE SZ VIHRFT+3 SZ VIHRFT+9 LMJ B11,RFPO$ SLJ F30ERX L,M A0,VIHRFT L,H2 A2,6,A0 A A2,(2,2) S A2,VIHRFJ . CURRENT POINTER INTO BUFFER L,M A2,GBUFN-8 DSL A2,36 DI,M A2,8 S A2,VIHRFI . TOTAL NUMBER OF SIX WORD ENTRIES VINIH DO 1-GXRFXX , PROC END L,M A0,077 S,S1 A0,SLCRX+1 PUT END OF FILE MARK LMJ B11,TRCF L,H2 A0,CRCRFT L,H2 A1,6,A0 . LOC OF ACTIVE BUFFER L A2,CRCRFJ . CURRENT INDEX INTO BUFFER AN A2,(2,2) AN,M A2,0,A1 SSL A2,1 S A2,1,A1 . # OF 2 WORD ENTRIES LMJ B11,RFPW$ WRITE LAST BLOCK SLJ F30ERX ERROR L,H2 A0,CRCRFT LOC OF FCT LMJ B11,RFPC$ CLOSE BUFFERS SLJ F30ERX L,H2 A0,CRCRFT L,M A1,RFRF$ READ FORWARD CODE LMJ B11,RFPO$ OPEN TO READ SLJ F30ERX SZ CRCRFI . SET NUMBER OF ACTIVE ITEMS TO ZERO L,M A3,20 CRFSG1 L A0,CREFCT NUMBER OF ENTRIES TNE,M A0,1 . IF FILE EMPTY NO CROSS REF J POSTX SSC A0,35 A,M A0,05777 DSL A0,36 DI,M A0,1000 TG,M A0,100 J CRFSG2 TLE,M A0,10 L,M A0,10 S A0,R1 DSL A0,36 DI,M A0,10 A,M A0,060 S,S1 A0,CNWD+4 A,M A1,060 S,S2 A1,CNWD+4 L A0,R1 MSI,M A0,1000 S A0,CRSRTB+3 SET LENGTH IN FILE TABLE L A0,(5,CNWD) ER CSF$ JP A0,CRFSG4 ASSIGN ACCEPTED L A1,A0 ASSIGN NOT ACCEPTED SSL A1,18 GET WAIT STATUS BIT JB A1,CRFSG3 IT'S WAITING CRFSG2 S A0,VI20 LMJ B11,P6EMW +((0)) +((0400022)) . ERR MSG. FAC REJECT CROSS REF. FILE +VI20 . OCTAL REJECT CODE +0 . DUMMY WALKBACK J FRATST CRFSG9 L A0,(0207,TOCFLM) ER PRINT$ J FRATST CRFSG3 JGD A3,$+2 . TRY AGAIN J CRFSG2 . GIVE UP AND GET OUT L,M A1,5000 ER TWAIT$ . WAIT 5000 MILLISECONDS J CRFSG1 VIN5 L,M A0,GXTCN . NUMBER ENTRIES IN GLOBAL TABLE MSI,M A0,GXTCL . LENGTH OF EACH ENTRY AN,M A0,1 . SET UP FOR JGD SZ GXTOC,A0 . SET TOC TO ZERO JGD A0,$-1 L A0,('GXXTID') . SET ID WORD AS FIRST WORD OF TOC S A0,GXTID J VIN6 CRFSG4 LMJ B9,SPRSRT +CRSRTB LOCATION OF SRT FILE TABLE CRVC SLJ CRSVE SAVE REGISTERS L A1,CRCRFJ INDEX INTO BUFFERS L A2,CRCRFI NUMBER OF ITEMS CRVB JGD A2,$+2 J CRVA GET NEW BLOCK DL A4,0,*A1 DS A4,SLCRX PLACE NEXT TWO WORD FOR SORT S A1,CRCRFJ S A2,CRCRFI DO GXRFXX , PROC L,S3 A4,PARTBZ AND,M A4,1 TEST FOR GLOBAL CROSS REFERENCE JZ A5,XRE NO GLOBAL CROSS REFERENCE L,S1 A1,SLCRX+1 TE,M A1,077 TNE,M A1,3 NO CONSTANTS J XRE L,S1 A5,SLCRX+1 TG,M A5,010 J CRFCY L,H1 A1,SLCRX L,H1 A4,2,A1 AND,M A4,7 TNE,M A5,2 J XRF TEST FOR EXTERNAL REFERENCE JNZ A5,XRE WAS NOT A VARIABLE AND,M A4,02000 L A0,0,A1 S A0,VIHRX NAME OF VARIABLE L,H1 A12,1,A1 AND,M A12,07777 JZ A5,XREJ AN A13,CRSTC4 GET COMMON BLOCK NUMBER TG,H2 A13,CRC J XRE SLJ FNLBCK GET COMMON BLOCK LOC IN CORE L A0,3,B10 XREK . S A0,VIHRX+1 NAME OF LABBELLED COMMON BLOCK L,H2 A0,1,A1 S,H2 A0,VIHRX+2 RELATIVE STORAGE ASSIGNMENT XRG L A4,(0602424240) L,M A5,0 L,M A0,0 SET FLAG FOR GLOBAL COMPILER . TO MAKE SPECIAL CASE OUT OF REFERENCES FORM TYPE OR COMMON STATEMENTS . IF THERE IS NOT A REFERENCE FROM A DIFFERENT TYPE OF STATEMENT ALSO L,S3 A1,SLCRX+1 DSL A4,0,A1 JB A5,$+2 L,M A0,1 L,H2 A1,SLCRX LSSC A1,3 A A1,A0 L,S1 A3,SLCRX+1 . FLAG FOR DEFINITION POINT LSSL A3,1 A A1,A3 S,H1 A1,VIHRX+2 L A4,GXNAME . FIRST HALF OF NAME L A5,GXVERS . FIRST HALF OF VERSION XRGA DS A4,VIHRX+3 L A4,GXNAME+1 . SECOND HALF OF NAME L A5,GXVERS+1 . SECOND HALF OF VERSION DS A4,VIHRX+6 SZ VIHRX+5 NAME OF DEFINE TNZ,H2 SLCRX+1 J XRJ NO DEFINE NAME GIVEN L,H2 A1,SLCRX+1 L A0,0,A1 S A0,VIHRX+5 NAME OF DEFINE XRJ LMJ B11,TRHF PLACE IN GLOBAL CULL DO 1-GXRFXX , PROC END XRE SLJ CRRSV RESTORE REGISTERS L,S1 A0,SLCRX+1 TNE,M A0,077 TEST END OF FILE J CRVCC L,H1 A0,SLCRX SYM TABLE LOCATION L,S3 A0,2,A0 AND,M A0,7 GET CLASS TNE,M A1,3 IGNORE CONSTANTS J CRVC L,M B3,SLCRX LOCATION OF IMAGE TO SORT L A0,CRCNT A,M A0,1 S A0,CRCNT LMJ B9,SFILE +CRSRTB J CRVC PUT NEXT ITEM INTO SORT DO GXRFXX , PROC XREJ L,S4 A4,PARTBZ . GET OPTION LETTERS TOP,M A4,020 . TEST FOR J OPTION J XRE . NO LOCAL ENTRIES L A0,('$CNTRO') A A0,A13 . CNTR NUMBER J XREK XRF J XRE . NO EXTERNALS WITH MODULE CHECKER DO 1-GXRFXX , PROC END CRVCC SLJ XRFCAR . GENERATE LIST OF ARGUMENTS TNZ CRCNT J FRATST LMJ B9,SEMPTY +CRSRTB DO GXRFXX , PROC L,S3 A0,PARTBZ JNB A0,VINH2 . H OPTION FOR GLOBAL CULL L,M A0,VIHRFT L,H2 A1,6,A0 L A2,VIHRFJ . CURRENT INDEX INTO BUFFER AN A2,(2,2) AN,M A2,0,A1 DSL A2,36 DI,M A2,8 . NUMBER OF WORDS PER GROUP S A2,1,A1 . NUMBER OF 6 WORD ENTRIES LMJ B11,RFPW$ . WRITE LAST BLOCK SLJ F30ERX L,M A0,VIHRFT LMJ B11,RFPC$ . CLOSE FILE SLJ F30ERX TP VIHRFT+3 ER WAIT$ L A1,GXSLOT . LOCATION OF TOC ENTRY L A2,9,A0 . FIRST AND LAST BLOCK S A2,5,A1 . SET INTO TABLE OF CONTENTS ER TDATE$ . GET DATE AND TIME SSC A0,18 . REVERSE FIELDS S A0,4,A1 . SET DATE/TIME INTO TOC ENTRY SZ GSTPKT+5 DL A0,GSTPK3 DS A0,GSTPKT+3 L,M A0,GSTPKT ER IOW$ . UPDATE HIGHEST ADDRESS L A2,GXTID TE A2,('GXXTID') +0 DL A2,GSTCPKW DS A2,GSTPKT+3 . SET TO WRITE OUT TOC L A2,GSTCPKW+2 . RELATIVE SECTOR ADDRESS S A2,GSTPKT+5 L,M A0,GSTPKT ER IOW$ TP GSTPKT+3 SLJ F30ERX VINH2 DO 1-GXRFXX , PROC END LMJ B11,XREF FRATST* L A0,(3,FNDWD) FREE ATHENA-SORT ER CSF$ POSTX LMJ B11,TIMDIA WRITE TIME AND NO. OF DIAGNOSTICS +0,(2) NOP LMJ B11,POSTPR J $+1 ERROR RETURN L A0,MAXERR MAX ERROR SEVERITY LEVEL ER SETC$ J *PHEXIT CRSRCM SLJ CRSVE SAVE REGISTERS L,S1 A4,1,B1 TG,M A4,010 J CREA .ITEM IN B1 IS FNC/ARG REF L,S1 A4,1,B2 TG,M A4,010 J TWO . ITEM IN B2 IS FNC/ARG REF L,H1 A1,0,B1 L A0,0,A1 L,H1 A3,0,B2 L A2,0,A3 NAME OF VARIABLE CRSRG TG A0,A2 J CR2E ITEM IN B1 LARGER TWO SLJ CRRSV J 0,B11 CR2E TE A0,A2 J ONE TG A1,A3 J CR3E J TWO CR3E TE A1,A3 J ONE L,H2 A0,0,B1 L,H2 A2,0,B2 TEST SEQUENCE NUMBERS TG A0,A2 J CR4E J TWO ITEM IN B2 LARGER CR4E TE A2,A0 J ONE L,S1 A0,1,B1 L,S1 A2,1,B2 TG A0,A2 J CR5E J TWO CR5E TE A2,A0 J ONE J TWO ONE SLJ CRRSV J 1,B11 CRVA L,H2 A0,CRCRFT LOC OF FCT LMJ B11,RFPR$ READ SLJ F30ERX ERROR NOP . EOF L,H2 A0,CRCRFT L,H2 A1,6,A0 L A2,1,A1 S A2,CRCRFI A A1,(2,2) S A1,CRCRFJ J CRVB CREA L,S1 A4,1,B2 TLE,M A4,010 J ONE . ONLY ITEM IN B1 IS FNC/REF . AT THIS POINT BOTH ITEMS ARE FOUND TO BE FNC/ARG . REFERENCES AND SORT IS DONE IN THE FOLLOWING ORDER . 1) NAME OF FUNCTION . 2) ARGUMENT NUMBER . 3) DEFINITION REFERENCE . 4) SEQNO NUMBER L,H1 A1,0,B1 . SYM PNTR TO FUNCTION L A0,0,A1 . NAME OF FUNCTION L,H1 A3,0,B2 . SYM PNTR TO FUNCTION L A2,0,A3 . NAME OF FUNCTION TG A0,A2 J CRF2E J TWO CRF2E TE A0,A2 . TEST IF NAMES IDENTICAL J ONE L,H1 A0,1,B1 . EXTRACT ARGUMENT NUMBER AND,M A0,07777 . OF ITEM IN B1 L,H1 A2,1,B2 . EXTRACT ARGUMENT NUMBER AND,M A2,07777 . OF ITEM IN B2 TG A1,A3 J CRF4E J TWO . ITEM IN B2 IS LARGER CRF4E TE A1,A3 J ONE L,S1 A0,1,B1 . SORT ON REFERENCE/DEFINITION L,S1 A2,1,B2 . FIELD TG A0,A2 J CRF5E J TWO CRF5E TE A2,A0 J ONE L,H2 A0,0,B1 . FINALLY SORT ON SEQUENCE NUMBERS L,H2 A2,0,B2 TG A0,A2 J CRF6E J TWO CRF6E TE A2,A0 J ONE J TWO XRFCRA L,H1 B9,EPPTR . HEAD LINK FOR FUNCTIONS SUBROUTINES TNZ,M 0,B9 J *XRFCAR . NO ENTRIES TO PROCESS L,M A10,2 . ENTRIES ARE INTERNAL IF A10 IS ZERO OR L,H2 A0,CRPRO . TYPE OF MAIN ENTRY TNE,M A0,0 . IF ZERO A MAIN PROGRAM CRFCG JGD A10,$+1 . FORCE NEXT FNC/SUB TO BE INTERNAL CRFCA L,S3 A0,1,B9 . PROGRAM TYPE TNE,M A0,1 . SUBROUTINE J $+3 TE,M A0,3 . FUNCTION J $+2 JGD A10,$+1 LSSL A0,3 SZ SLCRX+1 TZ,S6 CR131K A,M A0,2 . BIT FOR LARGE CORE OPTION TZ,S5 CR131K A,M A0,4 . BIT FOR ADR EQ IND MODE S,S6 A0,SLCRX+1 L,H1 A0,0,B9 . SYM TABLE POINTER TO FUNCTION S,H1 A0,SLCRX L,H1 A0,6,B9 . SEQNO WHERE SUB/FNC/ENTRY DEFINED S,H2 A0,SLCRX L,H1 A8,1,B9 SSL A8,6 . NUMBER OF ARGUMENTS SZ,H1 SLCRX+1 . ZERO TO ARGUMENT NUMBER L,M A0,010 . ID FOR ARGUMENT S,S1 A0,SLCRX+1 L,M A3,0 . INITIALIZE IF ZERO ARGUMENT JZ A8,CRFCD . GET NAME OF FUNCTION IN IF ZERO ARGS L,M A9,1 . COUNTS ARGUMENTS L,H2 B8,1,B9 . LOCATION OF START OF ARGS A B8,A8 . GET LOCN OF FIRST ARG TO PROCESS CRFCB JGD A8,$+2 J CRFCC . FINISHED WITH ARGS FOR THIS SECTION S,H1 A9,SLCRX+1 . ARGUMENT NUMBER L,M A0,010 S,S1 A0,SLCRX+1 L,M A3,0 TNZ,H2 0,B8 . TEST IF ONLY PLACE HOLDER J CRFCD . IT WAS L,H2 A0,0,B8 . SYMBOL TABLE POINTER FOR VARIABLE L,S3 A2,2,A0 AND,M A2,070 . EXTRACT TYPE FIELD OF VARIABLE L,H1 A4,2,A0 AND,M A4,01700 JNZ A5,CRFCE . EITHER AN ARRAY OR FUNCTION L,S1 A4,2,A0 AND,M A4,010 . TEST FOR ARG BEING DEFINED L,M A1,1 TZ A5 . TEST IF ARGUMENT HAS DEFINITION POINT L,M A1,4 . WITHIN PROGRAM CRFCF A A3,A1 . AT THIS POINT A3 CONTAINS THE MODE OF THE VARIABLE AND A . FIELD WHICH TELLS WHAT THE VARIABLE IS . 0 IS LABEL . 1 IS VARIABLE . 2 IS ARRAY . 3 IS FUNCTION . 4 IS VARIABLE WITH DEFINITION POINT . 5 IS ARRAY WITH DEFINITION POINT CRFCD S,S4 A3,SLCRX+1 A,M A9,1 . INCREMENT ARG COUNT AN,M B8,1 . POINT AT NEXT ARG S B8,SXRB8 S B9,SXRB9 S A8,SXRA8 S A9,SXRA9 S A10,SXRA10 L A0,CRCNT A,M A0,1 S A0,CRCNT TG,M A10,1 . TEXT FOR EXTERNAL ENTRIES J CRFCH . THIS IS AN EXTERNAL MODULE L,M B3,SLCRX LMJ B9,SFILE +CRSRTB CRFCJ L A10,SXRA10 L A9,SXRA9 L A8,SXRA8 L B8,SXRB8 L B9,SXRB9 J CRFCB CRFCH . TRANSFER ENTRIES TO GLOBAL SORT FILE DO 1-GXRFXX , SLJ CRFCHX J CRFCJ CRFCE L,M A1,2 . INDICATE ARRAY TEP,M A4,01000 L,M A1,3 . INDICATE FUNCTION J CRFCF CRFCC L,H2 B9,6,B9 . GET FORWARD LINK TZ,M 0,B9 J CRFCA . PROCESS NEXT ENTRY J *XRFCAR CRFCY L,H1 A0,SLCRX L,S3 A0,2,A0 . TEST IF FUNCTION IS AND,M A0,7 . EXTERNAL DO 1-GXRFXX , TNE,M A1,2 DO 1-GXRFXX , SLJ CRFCHX J XRE DO GXRFXX , PROC CRFCHR L,S3 A4,PARTBZ AND,M A4,1 JZ A5,CRFCHX L,H1 A0,SLCRX . SYM PTR TO FUNCTION L A0,0,A0 . NAME OF FUNCTION S A0,VIHRX SZ VIHRX+1 SZ VIHRX+5 L,H2 A0,SLCRX S,H1 A0,VIHRX+2 . SEQUENCE NUMBER L,H2 A0,SLCRX+1 . FLAGS ETC S,H2 A0,VIHRX+1 L,S1 A0,SLCRX+1 . ID OF ITEM S,S2 A0,VIHRX+1 L,H1 A0,SLCRX+1 . ARGUMENT NUMBER AND,M A0,07777 S,H2 A1,VIHRX+2 L A4,GXNAME . FIRST WORD OF NAME L A5,GXVERS . FIRST WORD OF VERSION XRGAA DS A4,VIHRX+3 L A4,GXNAME+1 . SECOND WORD OF NAME L A5,GXVERS+1 . SECOND WORD OF VERSION DS A4,VIHRX+6 LMJ B11,TRHF J *CRFCHX DO 1-GXRFXX , PROC END $(2) . BUGERR +0120300,ERRL RMDIAG ERRL* +0 EXEC8C NOP 0 EXEC8C J N6MR $(1) . N6MR . NERR2$* . LR R15,ERRL EXEC8C TZ,S3 ERRL ER CEND$ CONTINGENCY STATE HAS EXPIRED EXEC8C SZ,S1 CRE S,S2 R15,CRE . SIMULATE S,T1 MDUMP FORM 3,15,18 EXEC8C SLJ N0RGSV LMJ B11,CONTTT +006600,ERRL L,M B11,POSTX FLUSH J EMROR GIVE FATAL ERROR VI500* TZ,H1 VI219 131L J VI511 . 6 WORD CALL 131L L A1,VI09 COUNTER TO RELOCATE BY TNZ VICMBK . SPECIAL EXTERNAL SYMBOLS IN COMMON BAN TZ VIBNKF . TREAT COMMON BLOCKS LIKE LOCAL ARRAYS L A1,CRSTC6 . SYMBOLLIC COUNTER FOR ARRAYS TG,M A1,10 J $+4 L,S3 A1,BSTC1,A1 GET SYMBOLIC NAME OF COUNTER TZ,S1 BSTC1,A1 J VB510 TNZ XTF 131L J VI510 L A1,VI04 INSTR WORD S A1,VI541 L A1,LCN L A1,CRSTC1,A1 S,H1 A1,VI542 131K L A1,LCN L A1,LRSTC1,A1 CURRENT RSA S,H2 A1,VI542 L A1,VI09 STC AN A1,CRC - N(COMMON BLOCKS) AN A1,CRSTC4 JN A1,VI512 S,H2 A1,VI544 SEQ NO VI500CM . ENTRY POINT FOR ADDING EXTERNAL SYMBOLS L,M A1,17 TZ VI36BT L,M A1,35 TZ VI18BT 131K S,S3 A1,VI542+1 131K L,M A0,VI540 LMJ B11,MV6Q RELOCATABLE OUTPUT LMJ B11,EMROR L,M A1,15 S,S3 A1,VI542+1 131K L,M A3,5 S,S1 A3,VI540 J VI515 VI512 . L A1,LCN L A2,CRSTC1,A1 S,S6 A2,VI523 SSL A2,6 S,S5 A2,VI523 . SIMULATE S,T3 L A1,LRSTC1,A1 CURRENT RSA S,H2 A1,VI522 L A1,VI04 INSTR WORD S A1,VI521 L,M A0,VI520 LMJ B11,MV6Q RELOCATABLE OUTPUT LMJ B11,EMROR J VI515 VI510 L A1,VI09 . STORAGE CLASS 131K TNE A1,CRSTC1 131K J VI512 . EXEPTING CRSTC1 131K S,S6 A1,VI533 . IS LOCATION COUNTER SSL A1,6 S,S5 A1,VI533 . SIMULATE S,T3 L,M A1,17 TZ VI36BT L,M A1,35 TZ VI18BT . 18 BIT RELOCATION ON IMEDIATES 131K S,S3 A1,VI533 131K L A1,LCN L A2,CRSTC1,A1 S,H1 A2,VI532 L A1,LRSTC1,A1 CURRENT RSA S,H2 A1,VI532 L A1,VI04 INSTR WORD S A1,VI531 L,M A0,VI530 LMJ B11,MV6Q RELOCATABLE OUTPUT LMJ B11,EMROR L,M A1,15 S,S3 A1,VI533 131K VI515 L A0,LCN L A1,LRSTC1,A0 A,M A1,1 S A1,LRSTC1,A0 SZ VI18BT 131K J *VI507 VI511 SZ,H1 VI219 131L L B11,VI219 131L L A1,VI04 131L S A1,1,B11 131L L A1,LCN L A2,CRSTC1,A1 S,H1 A2,2,B11 L A1,LRSTC1,A1 S,H2 A1,2,B11 131L L A0,VI219 LMJ B11,MV6Q RELOCATABLE OUTPUT LMJ B11,EMROR J VI515 131L VB510 L A2,VI09 TNZ VICMBK SPECIAL SYMBOLS IN COMMON BANK J $+3 AN A2,CRC AN A2,CRSTC4 S,S6 A2,VB553 . COUNTER TO RELOCATE ADDRESS SSL A2,6 S,S5 A2,VB553 . SIMULATE S,T3 TZ,S2 BSTC1,A1 J VB520 SUBTRACT OUT EXTERNAL SYMBOL L,H2 A2,BSTC1,A1 ABSOLUTE COUNTER TO SUBTRACT TNE A2,VI09 J VB522 LN A2,A2 S,S6 A2,VB554 SSL A2,6 S,S5 A2,VB554 L,M A0,5 S,S1 A0,VB550 L,M A0,0111 S,S2 A0,VB554 SSL A0,6 S,S1 A0,VB554 . SIMULATE S,T1 VB512 L,M A0,17 TZ VI36BT L,M A0,35 TNZ VI18BT J $+3 S,S3 A0,VB553 S,S3 A0,VB554 L A0,LCN L A3,LRSTC1,A0 CURRENT RSA S,H2 A3,VB552 L A3,CRSTC1,A0 CURRENT CNTR NUMBER S,S3 A3,VB552 L A3,VI04 S A3,VB551 L,M A0,VB550 LMJ B11,MV6Q CALL RELOCATABLE OUTPUT LMJ B11,EMROR L,M A1,15 S,S3 A1,VB553 S,S3 A1,VB554 J VI515 VB520 L,H2 A0,BSTC1,A1 SYM REF OF BASE L,H1 A2,1,A0 STORAGE CLASS AND,M A2,07777 AN A3,CRC COMPUT EXTERNAL SEQUENCE AN A3,CRSTC4 NUMBER GIVEN TO COLLECTOR S A3,VB555 L,M A3,0212 S,S2 A3,VB554 SSL A3,6 S,S1 A3,VB554 . SIMULATE S,T1 L,M A3,040 S,S5 A3,VB554 . SET SIGN TO SUBTRACR EXT REF L,M A3,6 S,S1 A3,VB550 TNZ VICMBK J VB512 L,H2 A3,VB553 . EXTERNAL SYMBOL TO ADD S,H2 A3,VI544 L,H2 A3,VB555 . EXTERNAL SYMBOL TO SUBTRACT S,H2 A3,VI547 L,H2 A3,VB554 . SIGN BITS S,H2 A3,VI546 L,M A3,7 . NUMBER OF ITEMS S,S1 A3,VI540 L A3,VI04 . INSTRUCTION S A3,VI541 L A1,LCN . CURRENT LOCATION COUNTER L A1,CRSTC1,A1 . ACTUAL LOCATION COUNTER S,H1 A1,VI542 L A1,LCN . CURRENT LOCATION COUNTER L A1,LRSTC1,A1 . CURRENT RSA S,H2 A1,VI542 J VI500CM VB522 L,H2 A1,CRSTC1 S A1,VI09 J VI512 $(2) . LKFB* J 0-0 TNE A5,(' ') J *LKFB L A4,(0050000000000) DSC A4,66 TNE,M A4,' ' MAKE SURE NON BLNAK IS LEFT JUSTIFIED J LKFB+1 JZ A4,LKFB+1 SLJ BLDS J LKFB+1 . OUTPUT CHARACTER VI004180 BLDS* J 0-0 TLEM,M B1,VI61 J BLDT J *BLDS $(1) . BLDT EX STRE,B2 JGD B2,*BLDS L,M B2,5 A,M B1,1 J *BLDS STRE S,S6 A4,VI17,B1 S,S5 A4,VI17,B1 S,S4 A4,VI17,B1 S,S3 A4,VI17,B1 S,S2 A4,VI17,B1 S,S1 A4,VI17,B1 $(2) . XRFCAR J $-$ J XRFCRA DO GXRFXX , PROC CRFCHX J $-$ J CRFCHR DO 1-GXRFXX , PROC END DETL* J 0-0 L A4,B2 TNE,M A4,5 J *DETL L,M A4,' ' SLJ BLDS J DETL+1 $(1) . . CONVERT INTEGER OUTPUT VI003760 VI810* L,H2 A1,VI20 OPERAND VI003770 VI812* L A3,BLINK VI811 DSL A1,36 SHIFT TO A2 VI003790 DI,M A1,10 VI003800 DSL A2,4 CONVERT REMAINDER VI003810 L,M A2,3 VI003820 DSL A2,2 FDC TO A3 VI003830 JNZ A1,VI811 DO NEXT DIGIT VI003840 S A3,VI20 VI003850 J 0,B11 EXIT VI003860 VT811 DSL A1,3 /8 SSL A2,33 A,M A2,060 DSL A2,6 ATTACH REMAINDER JNZ A1,VT811 LOOP S A3,VI20 SAVE J 0,B11 EXIT $(2) . VI100* RES 1 J VI100J $(1) . VI100J LMJ B11,P6EMW +VI20 +0,(026023) VI03 AND VI04 ARE WRONG +$ +0 VI102* TNZ,S2 VI00 VI013370 J VI400 READ F60 VI013380 J VI115 READ F61 VI013390 VSM1 'MAIN P' 'ROGRAM' 'BLOCK ' 'DATA ' 'SUBROU' 'TINE ' 'ENTRY ' ' ' 'FUNCTI' 'ON ' VSM2 + 'ENTRY ' + 'POINT ' VSM3 + 'STORAG' + 'E USED' + ' (BLOC' + 'K, NAM' + 'E, LEN' + 'GTH) ' VSM4 + '*CODE ' 131K VSM5 + '*TEMP ' VSM5C + '*CONSTANTS ' VSM51 + '*SIMPLE VAR ' 131K VSM52 + '*ARRAYS ' 131K VSM6 + '*SDIAG$ ' VSM7 ' EXTERNAL REFERENCES' VSM8 + 'STORAG' + 'E ASSI' + 'GNMENT' + ' FOR V' + 'ARIABL' + 'ES (BL' + 'OCK, T' + 'YPE, R' + 'ELATIV' + 'E LOCA' + 'TION, ' + 'NAME) ' VMTYP ' ' ' I' ' R' ' D' ' C' ' L' ' B' ' ' EMPF L,M A0,EM1 OUTPUT FILE NOT PF J EMROR+1 MV6Q* TNZ ROPTN R-OPTION, SUPPRESS RELOCATABLE TZ CRFL NO RELOCATABLE OUTPUT IF FATAL ERROR J 1,B11 J ROR EMROR* L,M A0,EM2 IO ERROR S,H2 A0,EM S,H2 B11,EMXT L A0,(J 1,B11) INHIBIT S A0,ROR FURTHER PROCESSING S A0,TBLWR L A0,(J WTAB1) S A0,EROR BY ROR AND TBLWR L,M A0,0100 SET DELETE S,S2 A0,PARTBL+32 SSL A0,6 S,S1 A0,PARTBL+32 . S,T1 J EMRXX1 $(2) . EMRXX1 . . LMJ B11,P6EMW + VI20 . SEQ NO EM + $-$ . SIMULATED ERRT W1 + EM . UNUSED PARAMETER + 0 . WALKBACK J EMRXX2 $(1) . EMRXX2 . . TZ CRD J EMXT S,S1 A0,VI00 SAY END F61 TNZ CREMOT . IF REMOTE DO NOT TURN ON LIST RMDIAG S A0,CRLIST FORCE PATIAL LIST SZ,S3 VI00 END FULL LIST J *EMXT EM1 +020013 . FATAL, NO PARAM, MESG NO 11 EM2 +020014 . SAME FOR MESG NO 12 VJ68 +030016 . REMARK FOR MESG 14. $(2). GXNAME RES 2 . NAME OF ELEMENT GXVERS RES 2 . NAME OF VERSION FOR CROSS REFERENCE GXSLOT +0 . LOCATION OF CURRENT ENTRY IN TABLE OF CONTENTS SXRB8 +0 SXRB9 +0 SXRA8 +0 SXRA9 +0 SXRA10 +0 SHORT* +0 . NON ZERO FOR DEMAND AND Z OPTION SYMB +0 END OF CURRENT BLOCK IN SYMBOL TABLE YNCNT LGCN +0 WTJ1 +0 WTJ2 +0 WTJ3 'PREAMBLE' -1 VM101 +0 VM123 +0 KBIT +0 USED IN PREAMBLE LLBK + 'L ' LLBG + 'G ' LLBR 'F ' EPT4 +0 VI52 + 2,ERRT VI53* + 1,0 SVLRST* +0 SAVES RSA'S FROM PHASE 5 +0 +0 +0 +0 +0 +0 +0 +0 MAPX + 1,STMAP VI520* + 040000,0 VI521* + 0 VI522* + 0 VI523* +011317000000 SEQNC* +0 .CARD COUNT CSC17 VI530* +040000,0 RELATIVE VI531 + 0 VI532 + 1,0 VI533 +011117000000 VI540 + 050000,0 EXTERNAL VI541 + 0 VI542 + 1,0 +021217000000 VI544 + 0 VI546 +021217,0 . USED IN ADDING TWO EXTERNAL VI547 +0 . SYMBOLS TO AN ADDRESS VB550 +050000,0 . DIFFERENCE OF COUNTERS OR SYMBOLS VB551 +0 . TEXT WORD VB552 +1,0 . HI=CNTR, H2=RSA VB553 +011117000000 . COUNTER TO ADD VB554 +011117000000 . COUNTER TO SUBTRACT VB555 +0 . SEQ NUMBER OF EXTERNAL SYMBOL TRANC + 02000 TRANSFER CARD IMAGE DO 13 , + 0 BLINK ' ' DO 13 , + ' ' EMXT J $-$ ROPTN +0 MOPTON* +0 CRSRTB* +0200,CRSRCM . ITEM LENGTH, LOC OF COMP ROUTINE +VI550,LOOP +0 . FIRST DRUM LOCATION FOR SORT +50000 +0 +0 +0 +0 +0 +0 'ATHENA-SORT' +0 +01000,0 +10000,FORTRN +0 +0 . SAVE SPACE FOR HIGHEST DRUM ADDRESS DO GXRFXX , PROC GLNBUF EQU 42*28 . LENGTH OF BUFFER FOR GLOBAL FILE GBUFN EQU GLNBUF-2 . NUMBER USABLE WORDS PER BUFFER GNSPB EQU 42 . NUMBER OF SECTORS PER BUFFER VIHRFT RF$FCT 'ATHENA-GSORT' FPOOLX,GLNBUF SUBEXD,SUBEXD+GLNBUF+1 . THE FASTRAND POOL SKIPS 66 SECTORS TO LEAVE SPACE FOR TOC FPOOLX RF$POL 1300,GNSPB,66 RES 15 VIHRFY RF$FCT 'ATHENA-GSORT' FPOOLX,GLNBUF SUBEXD,SUBEXD+GLNBUF+1 VIHRX RES 8 VIHRFI +0 VIHRFJ +0 CRCGFT '@ASG ATHENA-GSORT,F///500 ' TOCFLM 'CAPACITY OF GLOBAL TABLE OF CONTENTA EXCEEDED' GSTPKT 'ATHENA-GSORT' +0 +01000,0 . WRITE +56,VIHRFT . WORD COUNT, BUFFER ADDRESS +0 . DRUM ADDRESS GSTPK2 +02000,0 . READ +56,ERRT GSTPK3 +01000,0 . WRITE +56,VIHRFT GSTCPKR +02000,0 . READ +1792,GXTID +2 . RELATIVE SECTOR ADDRESS GSTCPKW +01000,0 . WRITE +1792,GXTID +2 . RELATIVE SECTOR ADDRESS GSFAPZ 'ATHENA-GSORT' RES 9 DO 1-GXRFXX , PROC END CRCNT +0 TRCRX +0 CNWD '@ASG,T' ' AT' 'HENA-S' 'ORT,D/' ' 000 ' FNDWD '@FREE ATHENA-SORT.' DO GXRFXX , PROC $(1) . TRHF* . THIS SECTION PUTS SIX WORDS INTO GLOBAL CROSS REFERENCE FILE S,H2 B11,TRCRX L A1,VIHRFJ . CURRENT POSISTION IN BUFFER L A2,VIHRFI . NUMBER OF SIX WORD ENTRIES TRHCB JGD A2,$+2 J TRHRA . CURRENT BLOCK IS FULL DL A4,VIHRX DS A4,0,*A1 DL A4,VIHRX+2 DS A4,0,*A1 DL A4,VIHRX+4 DS A4,0,*A1 DL A4,VIHRX+6 . SECOND HALF OF NAME AND VERSION DS A4,0,*A1 S A1,VIHRFJ S A2,VIHRFI J *TRCRX TRHRA L,M A0,VIHRFT L,H2 A3,6,A0 L,M A1,GBUFN-8 DSL A1,36 DI,M A1,8 . NUMBER OF 8 WORD ENTRIES S A1,1,A3 . NUMBER OF 6 WORD ENTRIES L,M A0,VIHRFT LMJ B11,RFPW$ . WRITE SLJ F30ERX L,M A0,VIHRFT L,H2 A1,6,A0 A A1,(2,2) L,M A2,GBUFN-8 DSL A2,36 DI,M A2,8 . NUMBER OF 8 WORD ENTRIES J TRHCB $(2) . DO 1-GXRFXX , PROC END VI507* J VI115 $(1) . HEADIF DS A0,HED2 S A2,HED4 S,H2 B11,HED1 E$COL 9 L A0,HED2 LOC COUNTER L,M A1,4 LMJ B11,EOCTF$ E$COL 16 L A0,HED3 . 'TITLE' L,M A1,11 LMJ B11,ECOPY$ E$COL 30 L A0,HED4 LENGTH L,M A1,6 LMJ B11,EOCTF$ LMJ B11,PRINT8 J *HED1 CHSRPT* SLJ N0RGSV . SAVE REGISTERS SO NO INTERFERE SORT TZ CHSRPYQ . TEST IF FILE OPENED J CHSRPA . YES IT HAS BEEN L,M A3,20 . NUMBER OF TIMES TO TRY FOR ASG CHFS1 L A0,(5,CNCWD) ER CSF$ JP A0,CHFS4 . ASSIGN ACCEPTED L A1,A0 . ASSIGN NOT ACCEPTED SSL A1,18 . GET WAIT STATUS BIT JB A1,CHFS3 CHFS2 S A0,VI20 . STORE STATUS BTS FOR PRINITING LMJ B11,P6EMW +((0)) +((0400022)) . ERR MSG FAC REJECT CHARACTER SORT FILE +VI20 . OCTAL REJECT CODE +0 J FRATST . ABORT COMPILATION CHFS3 JGD A3,$+2 . TRY AGAIN J CHFS2 . GIVE UP AND GET OUT L,M A1,5000 ER TWAIT$ J CHFS1 CHFS4 LMJ B9,SPRSRT . OPEN SORT ROUTINE +CHSRTB . LOCATION OF FILE TABLE CHSRPA L B11,N0RGSA+11 . RESTORE B11 TO LOAD ARGUMENT WITH L,M A0,*0,B11 . GET LOCATION OF ITEM TO SORT S A0,CHSRPYQ . SET FLAG THAT SORT IS OPEN L,H2 B3,CHSRPYQ . RESTORE ADDRESS OF ITEM TO SORT LMJ B9,SFILE . GIVE ITEM TO SORT +CHSRTB SLJ N0RGRS . RESTORE THE REGISTERS J 2,B11 . RETURN . THE CHARACTER PART WORD SORT ITEM IS AS FOLLOWS . WORD 1 S6 CONTAINS FLAGS FOR WHICH CHARACTERS LOADED . WORD 2 CONTAINS DATA WORD . WORD 3 H2 CONTAINS RELATIVE STORAGE ADDRESS . WORD 4 H2 CONTAINS LOCATION COUNTER CHSRCM SLJ CRSVE . SAVE SOME REGISTERS L,H2 A0,3,B1 L,H2 A2,3,B2 . STORAGE CLASS STRING TWO TG A0,A2 J $+2 J TWO . STRING TWO IS LARGER TE A0,A2 J ONE . STRING ONE IS LARGER L,H2 A0,2,B1 . RELATIVE STORAGE ASSIGNMENT L,H2 A2,2,B2 . RELATIVE STORAGE ASSIGNMENT TG A0,A2 J $+2 J TWO . STRING TWO LARGER TE A0,A2 J ONE . STRING ONE IS LARGER L A0,1,B1 . DATA WORD STRING ONE L A2,1,B2 . DATA WORD STRING TWO TG A0,A2 J $+2 J TWO . STRING TWO IS LARGER TE A0,A2 J ONE . STRING ONE IS LARGER J TWO . THE FOLLOWING SECTIONS ARE INTERFACE ROUTINES TO SORT PART WORD . LOADS THAT ARRISE FROM THE CHARACTER DIRECTIVE . THE NEXT SECTION READS ENTRIES FROM THE SORT FILE OF PART WORD LOADS . IF TWO OR MORE PART LOADS ARE FOR HE SAME WORD THEY ARE CHECKED . FOR OVERLAP. IF OVERLAP EXISTS AN ERROR MESSAGE IS GENERATED . OTHERWISE THE LOADS ARE MERGED AND A SINGLE WORD LOAD IS . GIVEN TO ROR CHSRFL TNZ CHSRPYQ . TEST IF ANY PART WORD LOADS J CHSRQQ . NO PART WORDS TO PROCESS LMJ B9,SEMPTY . CLOSE OUT SORT FILE +CHSRTB . LOCATION OF SORT CONTROL TABLE LMJ B9,SMERGE +CHSRTB . LOCATION OF SORT CONTROL TABLE L,M A0,CHPK1 DL A1,0,B3 . FIRST TWO WORDS OF ITEM DS A1,0,A0 DL A1,2,B3 . FINAL TWO WORDS OF ITEM DS A1,2,A0 CHSRLP LMJ B9,SGET +CHEOF,CHSRTB L,H2 A0,CHPK1+3 . TEST IF LOCATION COUNTERS THE SAME TE,H2 A0,3,B3 J CHSRWR NO L,H2 A0,CHPK1+2 . TEST IF RELATIVE STORAGE ASSIGNMENTS T TE,H2 A0,2,B3 J CHSRWR NO L,S6 A0,0,B3 . CHARACTER OVERLAY FLAGS L,S6 A2,CHPK1 OR A0,A2 . IF LOGICAL OR AND ARITHMETIC SUM AU A2,A0 . ARE IDENTICAL THERE IS NO OVERLAP TE A1,A3 J CHOVMG . GENERATE ERROR FOR OVERLAP CHOVRT . RETURN FROM OVERLAP MESSAGE L A0,CHPK1+1 . DATA WORD OR A0,1,B3 . MERGE PARTIAL DATA WORDS S A1,CHPK1+1 . REPLACE MERGED DATA WORD J CHSRLP CHSRWR L,M A0,CHPK1 . LOCATION OF ITEM TO WRITE LMJ B11,MV6Q . GIVE ITEM TO ROR LMJ B11,EMROR DL A0,0,B3 DS A0,CHPK1 . MOVE ITEM TO COMPARE AGAINST NEXT DL A0,2,B3 DS A0,CHPK1+2 J CHSRLP CHEOF . SORT IS COMPLETE NO MORE ITEMS L,M A0,CHPK1 . LOCATION OF ITEM TO WRITE LMJ B11,MV6Q . GIVE ITEM TO ROR LMJ B11,EMROR J CHSRQQ . RETURN TO NORMAL PROCESSING CHOVMG LXI,H2 A0,CHPK1+3 . STORAGE CLASS LXM,H2 A0,CHPK1+2 . RELATIVE STORAGE ASSIGNMENT S A0,VI20 . SAVE FOR EDITING LMJ B11,P6EMW +((0)) +((0400025) . DUPLICATE CHARACTER MESSAGE +VI20 +0 . PSUEDO WALKBACK J CHOVRT $(2) CHSRPYQ +0 . FLAG FOR ANY PART WORD LOADS CHPK1 RES 4 . WORKING STORAGE FOR SECOND ITEN TO COM CHSRTB* +0400,CHSRCM . ITEM LENGTH,LOC OF COMP ROUTINE +VI560+1500,VI560 . CORE BUFFER AREA +0 . FIRST DRUM LOCATION FOR SORT +2500 . LAST DRUM LOCATION FOR SORT +0 +0 +0 +0 +0 +0 'ATHENA-CSORT' +0 +01000,0 +10000,FORTRN +0 +0 . SAVE SPACE FOR HIGHEST DRUM ADDRESS CNCWD '@ASG,T' ' ATH' 'ENA-CS' 'ORT,D/' '25000 ' FNDCWD '@FREE ATHENA-CSORT.' $(2) . HED1 J $-$ HED2 +0 LOCATION COUNTER HED3 +0 . TITLE HED4 +0 . LENGTH . . INTERNAL SORT 1 ENTRY PER ITEM BS000100 . A0 =M BS000200 . A1 =M+1 BS000300 . A2 =J BS000400 . A3 =I BS000500 . A4 =L-1 BS000600 . A5 =TEMP BS000700 . R1 =TEMP BS000800 . 28 =K-1 BS000900 SRTIND LA A2,(1,0) J INCREMENT LA,H2 A0,0,B11 START LOC. BS001100 AN,M A0,1 -1 BS001200 SA,H2 A0,SR12 SAVE LOCATION TO USE LATER BS001300 OR A0,(0400000) BS001400 SA,H2 A1,SR15 BS001500 AN,M A0,1 (I) BS001600 SA,H2 A0,SR19 (I) BS001700 SA,H2 A0,SR191 BS001800 SA,H2 A0,SR17 BS001900 LA,H2 A0,*1,B11 M=K BS002000 ANU,M A0,1 BS002100 SA A1,R15 K-1 SR10 SSL A0,1 M/2 TO M BS002300 TG,M A0,16 BS002400 SSL A0,1 BS002500 JZ A0,2,B11 EXIT BS002600 JB A0,$+2 ODD BS002700 A,M A0,1 NO, MAKE ODD BS002800 LA A4,R15 K-M-1=L-1 AN A4,A0 BS003000 SR12 LA,M A5,$ PICK UP UNINCREMENT BITTED BS003100 A A5,A0 +M BS003200 SA,H2 A5,SR14 BS003300 AN,M A5,1 -1 BS003400 SA,H2 A5,SR18 BS003500 AU,M A0,2 A1 = M+2 FOR STOP SWITCHING BS003600 LXM,M A2,1 J=1 (1,1) BS003700 LN A3,A0 SET -M INCREMENT FOR I BS003800 SSC A3,18 BS003900 SR14 L B9,$,A2 L A5,0,B9 SR15 L B10,$,*A2 JP A5,SR16A TN 0,B10 J SR16 SR15A TLE A5,0,B10 J SR171 BS004200 SR16 JGD A4,SR14 L-1 VS 0 (OR=J VS L) BS004300 J SR10 BIG LOOP BS004400 SR16A TN 0,B10 J SR15A SR171 LXM A3,A2 A3=(-M,J+1)=I BS004500 SR17 LR R1,$,A3 SWITCH VALUES BS004700 SR18 SR R1,$,A3 BS004800 SR19 S B9,$,A3 TLEM A3,A1 I(=J+1) VS M(+1) BS005000 J SR16 BS005100 SR191 L B10,$,A3 JP A5,SR20A TN 0,B10 J SR191B SR191A TLE A5,0,B10 J SR17 NO SWITCH BS005300 SR191B JGD A4,SR14 L-1 VS 0(OR=J VS L) BS00540 J SR10 BIG LOOP BS005500 SR20A TN 0,B10 J SR191A J SR17 N6BUFQ* . THIS ROUTINE ASSIGNS BUFFERS IN PAIRS. THERE ARE 10 SETS . THIS ROUTINE RETURNS THE ADDRESS OF ONE BUFFER IN H1 AND THE ADDRESS . OF THE OTHER IN H2 OF A1. IF THERE ARE NO BUFFERS A ZERO IS RETURNED IN . A1 J $-$ L A2,(01000,0) S A2,3,A0 L A2,(224,0) S A2,4,A0 L A2,(8,63) S A2,7,A0 L A2,(1,VI05+1) S A2,8,A0 L A2,(1,0) S A2,9,A0 L A1,(1,0) L,M R1,5 L,M A2,0 SNE A2,N6BFQ,*A1 J N6BA BUFFER POOL EXHAUSTED SZ N6BFQ-1,A1 REMOVE BUFFER FROM POOL L,M A1,0,A1 AN,M A1,1 MSI,M A1,224*2 GET TWO BUFFERS A,M A1,VIOBF LXI,M A1,0,A1 A,M A1,224 J *N6BUFQ N6BA L,M A1,0 IF NONE AVAILABLE RETURN 0 J *N6BUFQ N6BUFL* . THIS ROUTINE RELEASES A PAR OF BUFFERS . WHEN CALLED A1 WILL CONTAIN THE ADDRESS OF A BUFFER PAIR J $-$ L,M A2,0,A1 GET ADDRESS OF FIRST BUFFER SSL A1,18 TLE A2,A1 IN A1 L A1,A2 AN,M A1,VIOBF DSL A1,36 DI,M A1,224*2 GET NUMBER OF BUFFER PAIR L,M A2,1 S A2,N6BFQ,A1 SHOW BUFFER PAIR RELEASED J *N6BUFL N6BFQ DO 5 , +1 . SHOW 5 SETS OF BUFFERS VI36BT* +0 EXTIND ' *' $(8) . VI01* RES 1 VI03* RES 1 VI04* RES 1 VI07* RES 1 VI09* RES 1 VI61 EQU 18 VI17* RES VI61 VI20* RES 1 VI31* RES 1 VI32* RES 1 VI33* RES 1 VI34* RES 1 VC10* RES 1 XTF* RES 1 PSSTC* RES 1 BDG RES 1 PRSA3 RES 1 CMNC RES 2 VI60ID* RES 3 . EXTRA EDITING WORDS FROM SIR$ . VI60ID CONTAINS SEQUENCE ERROR IN H1 ; AQUIRE CYCLE IN H2 . VI60ID+1 CONTAINS 'NEW' OR 'NNNN' . VI60ID+2 CONTAINS ORIGINAL LINE NUMBER N6MNZZ INFO 2 8 $(6) . N6QQQ INFO 2 6 VI550 RES 1 VI551 RES 1 VI552 RES 1 VI553 RES 1 VI554 RES 1 VI560* RES 1800 STML EQU VI560+4 STMAP EQU VI560+5 VIOBF* RES 10*224 . CREATE 5 PAIRS OF BUFFERS VIFTLK* RES 33 VIFT* RES 33*SYLFT-1 END.