; Selection sort: use the first strictly smaller record.
SELECT_SORT:
        PRE     IX,SORT_NVAL
        LDW     $28,(IX+$SX)
        SBW     $28,$SY
        ANCW    $28,$28
        RTN     Z
        PRE     IX,SORT_MVAL
        LDW     $8,(IX+$SX)
        LDW     $12,SORT_BASE
SEL_OUTER:
        LDW     $14,$12
        LDW     $16,$12
        ADW     $16,$8
        LDW     $6,$28
SEL_SCAN:
        ANCW    $6,$6
        JR      Z,SEL_SCANDONE
        LDW     $20,$16
        LDW     $22,$14
        LDW     $24,$8
        CAL     CMP_SORT
        SBC     $0,&HFF
        JR      NZ,SEL_NOMIN
        LDW     $14,$16
SEL_NOMIN:
        ADW     $16,$8
        SBW     $6,$SY
        JP      SEL_SCAN
SEL_SCANDONE:
        SBCW    $14,$12
        JR      Z,SEL_NOSWAP
        LDW     $20,$12
        LDW     $22,$14
        LDW     $24,$8
        CAL     SWAP_REC
SEL_NOSWAP:
        ADW     $12,$8
        SBW     $28,$SY
        JP      NZ,SEL_OUTER
        RTN
