. . SYMBOL DEFINITION . $(2) LIT $(1). RATIO EQU 8 MAXSC EQU 256 X1 EQU 1 X2 EQU 2 X3 EQU 3 X4 EQU 4 X5 EQU 5 X6 EQU 6 X7 EQU 7 X8 EQU 8 X9 EQU 9 X10 EQU 10 X11 EQU 11 A0 EQU 12 A1 EQU 13 A2 EQU 14 A3 EQU 15 A4 EQU 16 A5 EQU 17 A6 EQU 18 A7 EQU 19 A8 EQU 20 A9 EQU 21 A10 EQU 22 R1 EQU 65 R2 EQU 66 R3 EQU 67 R4 EQU 68 R10 EQU 74 T1 EQU 7 LH EQU 2 RH EQU 1 SLH EQU 4 C2 EQU 014 F FUNC I* NAME END +(I$ 0,14,0,0,0,F(1)) PRF FORM 12,6,18 . . DATA DESCRIPTION . . . FILE STORAGE ENTRY . KEY EQUF 0,X6 IL EQUF 0,X6,C2 WSO EQUF 1,X6,RH WSE EQUF 1,X6,LH DSO EQUF 2,X6 DSE EQUF 3,X6 PS EQUF 3,X6 ST EQUF 4,X6,RH SC EQUF 4,X6,LH BL EQUF 5,X6,RH IPB EQUF 5,X6,LH LOC EQUF 5,X6,RH LIM EQUF 5,X6,LH T EQUF 6,X6,RH TL EQUF 6,X6,LH LL EQUF 7,X6,RH UL EQUF 7,X6,LH CDL EQUF 7,X6 ITEM EQUF 8,X6,RH LOG2 EQUF 8,X6,LH PBL EQUF 8,X6,RH LAST EQUF 9,X6 W EQUF 4,X6,RH NEXT EQUF 6,X6,RH INCR EQUF 0,X5,LH JFILE EQUF 10,X6 NAME OF FILE FOR EXEC 8 JACW EQUF 14,X6 ACCESS EORD JSTATS EQUF 13,X6,015 IO ACCESS CODE JDA EQUF 15,X6 IO DRUM ADDRESS JSA EQUF 13,X6 FNC EQUF 13,X6,014 HADD EQUF 16,X6 . HIGHEST DRUM ADDRESS WAIT* PROC TP JSA ER WAIT$ TZ JSTATS J ERR6 END READ* PROC DL A0,0,A0 L A5,A0 . WORD COUNT SSL A5,18 A A5,A1 . DRUM ADDRESS TLE A5,HADD . HIGHEST DRUM ADDRESS WRITTEN J $+4 L A5,HADD AN A5,A1 . CURRENT DRUM ADDRESS LXI A0,A5 . NEW WORD COUNT DS A0,JACW L,14 A1,020 S A1,FNC L,14 A0,JFILE ER IOW$ END . . STRING STORAGE ENTRY . C EQUF 0,X4,RH RC EQUF 0,X4,LH D EQUF 1,X4 STATUS EQUF 1,X4,C2 B EQUF 2,X4,RH R EQUF 2,X4,LH I EQUF 3,X4,RH N EQUF 3,X4,LH . . SEARCH TABLE ENTRY . A EQUF 0,X2,RH S EQUF 0,X2,LH SPRSRT* L X6,0,X9 LN A0,(MAXSC) L A4,I(1) A A0,WSE ANU A0,WSO DSA A1,36 DI A1,(RATIO) DSA A1,36 DI A1,IL MSI A1,IL TLE A1,(1) J ERR1 S A1,PBL L A2,WSO S A2,LOC AU A2,A1 S A3,LIM A A3,A1 S A3,W ANU A1,DSO SN A2,CDL A A1,A1 AN A0,A1 A A4,IL AN A0,WSO DSA A0,36 DI A0,A4 S A0,LOG2 A A3,A0 S A3,NEXT SZ SC SZ TL J 1,X9 SFILE* L A0,(1,0) L X6,0,X9 LXM A0,X3 L X5,W L A1,(1,0) LXM A1,NEXT L R1,IL BT A1,0,*A0 L A4,TL TE A4,LOG2 J FILE6 FILE1. TABLE FULL L X1,0,X5 L A6,X1 XOR A6,(04000,0,0) L A1,INCR AND A1,I(-0) AU A2,X5 L X2,LAST LMJ X11,*KEY L X1,A7 L A5,0,X5 LMJ X10,ITT XOR A5,PS JP A6,FILE2 LMJ X8,ENDS FILE2. S A5,NEXT L A0,(1,0) AU A0,LOC S A1,LAST LXM A0,NEXT L R1,IL BT A1,0,*A0 S A1,LOC L A1,LOC TE A1,LIM J 1,X9 FILE7. S A5,VREG WAIT L A5,VREG L A1,LOC ANU A1,PBL TE A2,WSO L A1,WSO S A1,LOC A A1,PBL S A1,LIM S A2,JACW,0,RH L A1,PBL S A1,JACW,0,LH S A1,HADD L A1,CDL A A1,PBL S A1,CDL A A1,PBL L A2,DSE AND A2,(077,-1) TG A1,A3 J ERR7 L A1,I(CDL) L A1,0,A1 S A1,JDA A A1,HADD S A1,HADD . HIGHEST DRUM ADDRESS WRITTEN L,14 A1,010 S A1,FNC S A5,VREG L,14 A0,JFILE ER IOW$ L A5,VREG J 1,X9 FILE6. L A2,TL AU A2,X5 L X7,A3 L X2,NEXT S A1,NEXT S A4,0,A3,LH LMJ X10,AIT TE A4,LOG2 J 1,X9 L A5,0,X5 J FILE2 AIT. SSA A4,1 M L A2,A4 AIT1. AU A2,X5 SSA A2,1 Q TE A4,0,A3,LH J AIT1 L A2,A4 L A4,TL S A4,0,A3,LH L X8,KEY LMJ X11,AIT2 J AIT3 S X1,0,X7,RH L X7,A3 AIT2. AU A2,X5 SSA A2,1 L X1,0,A3 TE A3,X7 J 0,X8 AIT3. S X2,0,X7,RH L A4,TL A A4,I(1) S A4,TL J 0,X10 ITT. L X8,KEY SSA A2,1 LMJ X11,ITT2 ITT1 J ITT3 ITT5. S X1,0,A3 L X1,X2 ITT3. AU A2,X5 SSA A2,1 ITT2. L X2,0,A3 TNE A5,X2 J ITT4 L A7,X1 XOR A7,X2 JP A8,0,X8 XOR A5,A7 JP A6,ITT3 J ITT5 ITT4. S X1,0,A3 L A5,X1 J 0,X10 ENDS. L A0,PS XOR A0,(04000,0,0) S A1,PS LN A0,SC AN A0,I(1) TLE A0,(-MAXSC) J ERR2 SN A0,SC A A0,WSE L A1,PBL A A1,PBL A A1,LOC AN A1,LIM A A1,CDL S A1,0,A0 J 0,X8 SEMPTY* S X9,EMPTYX,0,RH L X6,0,X9 S X6,EMPTYF J $(2) $(2) . LMJ X9,EMPTY1 EMPTYF + 0 L A4,TL J $(1) $(1) . AN A4,I(1) S A4,TL JZ A4,EMPTY3 L A2,A4 AU A2,X5 SSA A2,1 L X3,0,A3,RH S X3,0,X5,RH EMPTY2. AU A2,X5 SSA A2,1 L A0,0,A3 SSA A0,18 . AND A0,I(-0) TE A1,A4 J EMPTY2 AND A0,(1,0) OR A1,A4 SSA A2,1 S A2,0,A3,LH J FILE1 EMPTY3. LMJ X8,ENDS L A0,LIM S A0,LOC LMJ X9,FILE7 NOP 0 WAIT L X9,EMPTYX,0,RH L A5,VREG J 1,X9 . . MERGE SECTION OF SORT (OUTPUT PASS) . . . START MERGE . SMERGE* NOP 0 L X6,0,X9 LN A0,I(5) MSI A0,SC 5*SC AU A0,WSE AN A1,WSO WSE-WSO-5*SC DSA A1,36 L A3,SC MSI A3,IL SSC A3,35 2*SC*IL DI A1,A3 JNZ A1,$+2 J ERR3 S A1,IPB MSI A1,IL S A1,BL L A1,WSE ANU A1,I(1) S A2,T T = WSE-1 S A2,ITEM SZ TL A A1,A0 L A8,SC AN A8,I(1) L X7,(-2,-0) A X7,WSE L A3,BL A A3,BL SSC A3,18 S A1,ST ST = WSE-5*SC L X4,ST K = 0 L X3,A3 LXM X3,WSO 2*BL,WSO+2*K*BL L A5,DSO L A7,BL STRM1 S A5,D D = STRING ORIGIN S X3,C S = WSO+2*K*BL S A7,RC READ COUNT L A0,X4 LOCATION OF PACKET S A5,VREG READ L A5,VREG AN A5,0,X7 D - X DSA A5,36 DI A5,IL ITEMS IN STRING A A5,I(1) DSA A5,36 DI A5,IPB (D-X+1)/IPB SM A5,B B = (X-D-1)/IPB AN A6,I(1) SN A6,R R = (X-D-1)MOD(IPB)+1 L A5,0,*X7 D = X NOP 0,0,*X3 S X3,I I = C+2*BL LMJ X10,RIB READ ITEM BLOCK J ERR4 L X1,I 1ST ITEM IN STRING LMJ X10,BIT INSERT 1ST ITEM IN TABLE A X4,I(4) JGD A8,STRM3 STRM2. L X2,ITEM NOP 0 L X3,A J 1,X9 STRM3. L A0,I(1) LMJ X11,MOD MODIFY TABLE LENGTH BY 1 J STRM1 . . GET ITEM FROM FILE SUBROUTINE . SGET* NOP 0 L X6,0,X9 LOCATION OF FILE TABLE LN A1,I(1) L X2,ITEM LOCATION OF RESULT L X1,IL L X4,S STRING NO. OF RESULT L X3,A RESULT A X1,I S X1,I I+IL TO I A A1,N JNZ A1,GIF1 LMJ X10,RIB READ ITEM BLOCK J GIF2 EMPTY STRING J GIF3 GIF1 S A1,N N-1 TO N GIF3. LMJ X10,BIT INSERT J STRM2 GIF2. LN A0,I(1) TNZ TL J GIF4. LMJ X11,MOD MODIFY TABLE LENGTH BY -1 J STRM2 GIF4. L A0,0,X9,LH NOP 0 J 0,A0 . . READ ITEM BLOCK SUBROUTINE . RIB. TNZ R J 0,X10 EMPTY STRING TZ JSTATS J ERR5 L A0,I ANU A0,BL I - BL TO A1 L A2,I I TO A2 TG A1,C ANU A1,BL I - 2*BL TO A2 S A2,I RIB1. TNZ B J RIB2 LAST BLOCK S A1,C I - BL TO C L A0,D A A0,BL S A0,D D + L TO D L A0,X4 LOCATION OF PACKET S A5,VREG READ L A5,VREG L A0,B AN A0,I(1) S A0,B B-1 TO B L A0,IPB RIB3 S A0,N IPB TO N L X1,I J 1,X10 RIB2. L A0,R SZ R 0 TO R J RIB3 . . MODIFY TABLE PARAMETERS SUBROUTINE . MOD. A A0,TL TL = INCR+TL S A0,TL LSC A1,A0 L A1,(0200000000000) SSA A1,0,A2 M L A2,T T ANU A2,A0 T-N S A3,ITEM ITEM = T-N A A3,A1 T-N+M S A3,LL LL = T-N+M ANU A2,A1 T-M A A3,I(1) S A3,UL UL = T-M+1 SSA A1,1 M/2 S A1,LOG2 LOG2 = M/2 J 0,X11 EXIT . . BINARY INSERT IN TABLE . BIT. TNZ TL J BIT5 TABLE EMPTY L X5,LL W = LL L A4,LOG2 Z = LOG2 L X2,0,X5 Y = (W) LMJ X11,*KEY COMPARE X AND Y J BIT1 LOWER LIMIT IS CORRECT L X5,UL USE UPPER LIMIT J BIT2 BIT1. AN X5,A4 W = W-Z JZ A4,BIT3 BIT4. SSA A4,1 Z = Z/2 L X2,0,X5 Y = (W) LMJ X11,*KEY COMPARE X AND Y J BIT1 X PRECEDES BIT2 A X5,A4 W = W+Z JNZ A4,BIT4 A X5,I(1) BIT3. L A2,(1,0) LXM A2,ITEM 1ST TO ADDRESS AU A2,I(1) AN X5,ITEM AN X5,I(1) S X5,R1 BT A2,0,*A3 MOVE BIT6. S X1,0,A2,RH INSERT A S X4,0,A2,LH INSERT S J 0,X10 EXIT BIT5. L A2,ITEM J BIT6 ERR1 LMJ X10,ERR ERR2 LMJ X10,ERR ERR3 LMJ X10,ERR ERR4 LMJ X10,ERR ERR5 LMJ X10,ERR ERR6 LMJ X10,ERR ERR7 LMJ X10,ERR ERR8* LMJ X10,ERR ERR9* LMJ X10,ERR ERR. AN X10,I(ERR1) S A0,PKT+2 L,14 A0,PKT ER SNAP$ L A0,(0215,MSG) ER PRINT$ J FRATST IN N6MN EMPTY1. L X5,W L A4,TL TNE A4,LOG2 J 2,X9 JZ A4,EMPTY3 L A5,0,X5 J FILE2 $(2) EMPTYX +0 VREG +0 PKT 'SORT ' +0700020,CRSRTB . IO PACKET +0 MSG 'UNUSUAL CONDITION PREVENTED XREF. PLEASE ' 'SEND THIS TO SYSTEMS PROGRAMMING. ' END