; Shell sort: halve the gap; shift with one-byte temporary.
SHELL_SORT:
        PRE     IX,SORT_NVAL
        LDW     $6,(IX+$SX)
        BIDW    $7
        ANCW    $6,$6
        RTN     Z
        PRE     IX,SORT_SGAP
        STW     $6,(IX+$SX)
SH_GAP:
        PRE     IX,SORT_SGAP
        LDW     $15,(IX+$SX)
        SBW     $17,$17
        PRE     IX,SORT_MVAL
        LDW     $5,(IX+$SX)
        SBW     $7,$7
        CAL     UMUL32
        LDW     $6,$15
        PRE     IX,SORT_MVAL
        LDW     $8,(IX+$SX)
        PRE     IX,SORT_SGAP
        LDW     $14,(IX+$SX)
        LDW     $12,SORT_BASE
        ADW     $12,$6
SH_NEXT_I:
        PRE     IX,SORT_NVAL
        LDW     $20,(IX+$SX)
        SBCW    $14,$20
        JP      NC,SH_NEXT_GAP
        LDW     $16,$12
        LDW     $28,$14
SH_SCAN:
        PRE     IX,SORT_SGAP
        LDW     $26,(IX+$SX)
        SBCW    $28,$26
        JR      C,SH_FOUND
        LDW     $20,$16
        SBW     $20,$6
        LDW     $22,$12
        LDW     $24,$8
        CAL     CMP_SORT
        SBC     $0,1
        JR      NZ,SH_FOUND
        PRE     IX,SORT_SGAP
        LDW     $26,(IX+$SX)
        SBW     $28,$26
        SBW     $16,$6
        JP      SH_SCAN
SH_FOUND:
        SBCW    $16,$12
        JR      Z,SH_ADVANCE
        LDW     $20,$12
        LDW     $22,$16
        LDW     $28,$8
SH_BYTE:
        LD      $10,($20)
        LDW     $24,$20
SH_SHIFT:
        SBCW    $24,$22
        JR      Z,SH_STORE
        LDW     $26,$24
        SBW     $26,$6
        LD      $11,($26)
        ST      $11,($24)
        CAL     INC_DWR
        LDW     $24,$26
        JR      SH_SHIFT
SH_STORE:
        ST      $10,($22)
        CAL     INC_DWR
        ADW     $20,$SY
        ADW     $22,$SY
        SBW     $28,$SY
        JR      NZ,SH_BYTE
SH_ADVANCE:
        ADW     $14,$SY
        ADW     $12,$8
        JP      SH_NEXT_I
SH_NEXT_GAP:
        PRE     IX,SORT_SGAP
        LDW     $6,(IX+$SX)
        BIDW    $7
        STW     $6,(IX+$SX)
        ANCW    $6,$6
        JP      NZ,SH_GAP
        RTN
