         PROC                                                           MO$00010
MA#P6    NAME                                                           MO$00020
MO#SEL   NAME  0                                                        MO$00030
MO#RET   STM   RE$,R8$,CTREGSAV      SAVE CALLERS REGISTARS IN CTL TAB  MO$00040
         BALR  RD$,0       INIT BASE REG FOR SELECT                     MO$00050
         USING *,RD$                                                    MO$00060
         TM    MO#FTB(R9$),1          TREE INITIALIZED                  MO$00070
         BZ    MO#READY             YES GOTO MO#READY                   MO$00080
*  R0 TOTAL NO. OF BYTES IN THE TOURNAMENT = 2W - 1                     MO$00090
*  R1 WILL BE USED AS ONE OF THE TWO INDEXES INTO THE TREE              MO$00100
*  R2 CONTAINS LAST WINNER INDEX INTO THE BASE OF TREE                  MO$00110
*  R4 MODULE BASE REG.                                                  MO$00120
*  R5 ADDRESS OF TREE                                                   MO$00130
*  R6 INDEX TO FIRST WINNER IN TREE                                     MO$00140
*  R7 CONSTANT 8                                                        MO$00150
*  R8 CONSTANT 1                                                        MO$00160
*                                                                       MO$00170
MO#EIGHT LA    R7$,8(0,0)          CONSTANT EIGHT                       MO$00180
         LA   R8$,1(0,0)           CONSTANT 1                           MO$00190
         LH    R5$,MO#INDEX(R9$,0)     INDEX TO NEXT AVAILABLE BYTE     MO$00200
        TM    MO#INDEX+1(R9$),8                                         MO$00210
*                           IF WAY IS EVEN DUMMY ENTRY IS ADDED         MO$00220
        BZ   MO#EVEN                                                    MO$00230
         AR    R5$,R7$                                                  MO$00240
MO#EVEN  LR    R0$,R5$                                                  MO$00250
         LA    R5$,MO#BASEL(R9$,R5$)    CALC ADDR OF TOURN              MO$00260
         SRL   R0$,3                    CALC WAY                        MO$00270
         LR    R6$,R0$                  CALC NO BYTES IN TREE           MO$00280
         SR    R0$,R8$                                                  MO$00290
        STH   R0$,MO#SAVE(R9$,0)       WAY, USED TO INIT TREE           MO$00300
         SR    R0$,R8$                                                  MO$00310
         AR    R0$,R6$                  NO BYTES IN TREE                MO$00320
         STC   R0$,MO#XC+1              CLEAR TREE TO ZEROS TO FORCE W  MO$00330
MO#XC    XC    0(0,R5$),0(R5$)         SET ALL ENTRIES TO LOSER STATUS  MO$00340
       STM   R0$,R8$,MO#SPECS(R9$)      STORE SPECS                     MO$00350
        XC    MO#FBI1(8,R9$),MO#FBI1(R9$)  ZERO OUT MO#FBI1,DUMMY ADDR  MO$00360
         MVI   MO#IMOD+1,X'F0'                                          MO$00370
MO#IN    LM    R0$,R8$,MO#SPECS(R9$)                                    MO$00380
         AI    MO#FBI1+2(R9$),8                                         MO$00390
         LH    R2$,MO#FBI1+2(R9$,0)                                     MO$00400
         ST    R2$,MO#LWIN(R9$)                                         MO$00410
        B     MO#READI                PLACE NEW ENTRY IN TOURN          MO$00420
MO#TINR  AI    MO#SAVE(R9$),-1          CONTINUE UNTILL ALL INPUT IN    MO$00430
        BNZ   MO#IN                                                     MO$00440
         MVI   MO#IMOD+1,X'80'                                          MO$00450
         B     4(RE$)                                                   MO$00460
MO#READY LM     R0$,R8$,MO#SPECS(R9$)                                   MO$00470
        ST     RB$,MO#RECA(R9$,R2$)                                     MO$00480
MO#READI LR    R3$,R2$                     WINNER INDEX                 MO$00490
         LR    R1$,R2$                                                  MO$00500
         SRL   R3$,3               WINNER INDEX DIV 8                   MO$00510
         TM    MO#LWIN+3(R9$),8            ODD ENTRY OF PAIR            MO$00520
        BNZ    MO#C                        NO GOTO MO#C                 MO$00530
        AR    R1$,R7$                     POINT R1 AT EVEN ENTRY        MO$00540
MO#LOOP1 SRL   R3$,1                       R3+ INDEX INTO WINNER SLOTS  MO$00550
         AR    R3$,R6$                     ADD INDEX TO WIN SLT INDEX   MO$00560
         L     RB$,MO#RECA(R9$,R1$)        COMP                         MO$00570
         L     RC$,MO#RECA(R9$,R2$)                                     MO$00580
         LTR   RB$,RB$                                                  MO$00590
         BZ    MO#BL                        STORE R2 ENTRY IF R1 EMPTY  MO$00600
         LTR   RC$,RC$             STORE R1 IF R2 EMPTY                 MO$00610
         BZ    MO#AL                                                    MO$00620
         BAL   RF$,SACOMP                                               MO$00630
         B     MO#EQ                                                    MO$00640
         B     MO#AL                                                    MO$00650
MO#BL    STC   R2$,0(R5$,R3$)                                           MO$00660
         B     MO#F                                                     MO$00670
MO#AL    STC   R1$,0(R5$,R3$)                STORE WINNER               MO$00680
MO#F     STH   R3$,MO#FBI1(R9$,0)                                       MO$00690
        CR    R0$,R3$                        GOTO MO#DONE IF TNMT FIN   MO$00700
         BE    MO#DONE                                                  MO$00710
         IC    R2$,0(R5$,R3$)                  R2 + LAST WINNER INDEX   MO$00720
         LR    R1$,R3$                                                  MO$00730
         TM    MO#FBI1+1(R9$),1                                         MO$00740
        BNZ   MO#H                                                      MO$00750
         AR    R1$,R8$                                                  MO$00760
         B    MO#I                                                      MO$00770
MO#EQ    CR    R1,R2                                                    MO$00780
         BH    MO#AL                                                    MO$00790
         B     MO#BL                                                    MO$00800
MO#H     SR    R1$,R8$                                                  MO$00810
MO#I     IC    R1$,0(R5$,R1$)                                           MO$00820
         B     MO#LOOP1                                                 MO$00830
MO#C     SR    R1$,R7$                           POINT AT ODD ENTRY     MO$00840
         B     MO#LOOP1                                                 MO$00850
MO#DONE  IC    R2$,0(R5$,R3$)                                           MO$00860
         ST    R2$,MO#LWIN(R9$,0)                                       MO$00870
         L     RA$,MO#FBI1(R9$,R2$)                                     MO$00880
         L     RB$,MO#RECA(R9$,R2$)                                     MO$00890
        LM    RE$,R8$,CTREGSAV         RESTORE CALLERS REGS             MO$00900
         LTR   RB$,RB$                                                  MO$00910
MO#IMOD  BZ    MO#TIN                                                   MO$00920
         B     4(RE$,0)                                                 MO$00930
MO#TIN   AI    MO#SAVE(R9$),0                                           MO$00940
         BZR   RE$                                                      MO$00950
         B     MO#TINR                                                  MO$00960
MO#INSTR DS    0F                                                       MO$00970
         DC    XL4'00080001'                                            MO$00980
MO#INDEX EQU   0                                                        MO$00990
MO#COUNT EQU   4                                                        MO$01000
MO#LWIN  EQU   12                                                       MO$01010
MO#FBI1  EQU   40                                                       MO$01020
MO#FTB   EQU   3                                                        MO$01030
MO#SPECS EQU   4                                                        MO$01040
MO#SAVE  EQU   2                                                        MO$01050
MO#RECA  EQU   44                                                       MO$01060
MO#BASEL EQU   40                                                       MO$01070
MO#CON1  EQU   10                      TREE SPACE = CON1 * W + CON2     MO$01080
MO#CON2  EQU   40                                  + CON 3 IF W EVEN    MO$01090
MO#CON3  EQU   64                                                       MO$01100
         DROP  RD$     DROP BASE FOR RETURN                             MO$01110
MO#REL   LH    RF$,MO#INDEX(R9$,0)                                      MO$01120
         LA    RF$,MO#FBI1(R9$,RF$)                                     MO$01130
         STM   RA$,RB$,0(RF$)                                           MO$01140
         XC    8(8,RF$),8(RF$)                                          MO$01150
         AI    MO#INDEX(R9$),8                                          MO$01160
         BR    RE$                                                      MO$01170
         END                                                            MO$01180
