; bubblesort 

        ORG     $8300

START   LD      IX,TAB
        LD      B,$07
LOOP    CALL    RANDOM
        AND     $0F
        CP      $0A
        JR      NC,LOOP
        LD      (IX+$00),A
        INC     IX
        DJNZ    LOOP
        CALL    DISP
        
        LD      HL,$FFFF
WL      DEC     HL
        LD      A,H
        OR      L
        JR      NZ,WL
        
BUSRT   LD      C,$00
        LD      IX,TAB+$05 
        LD      B,$05
LOOPB   LD      A,(IX+$00)
        CP      (IX+$01)
        JR      NC,OVER
        SET     0,C
        LD      E,(IX+$01)
        LD      (IX+$01),A
        LD      (IX+$00),E
OVER    DEC     IX
        DJNZ    LOOPB         
        BIT     0,C
        JR      NZ,BUSRT
        CALL    DISP
        
        LD      HL,$FFFF
WL2     DEC     HL
        LD      A,H
        OR      L
        JR      NZ,WL2

        JP      START



DISP    LD      B,$07
        LD      HL,TAB
        LD      DE,$8007
LOOPA   LD      A,(HL)
        CALL    $02F0
        LD      (DE),A
        INC     DE
        INC     HL
        DJNZ    LOOPA
        RST     10H
        RET


RANDOM  PUSH    HL
        PUSH    BC
        PUSH    DE
        LD      HL,$00
        LD      A,(SEED)
        LD      L,A
        INC     HL
        LD      B,$4A
        LD      D,H
        LD      E,L
RNDL1   ADD     HL,DE
        DJNZ    RNDL1
        LD      BC,$FEFF
RNDL2   ADD     HL,BC
        JR      C,RNDL2
        SBC     HL,BC
        DEC     HL
        LD      A,L
        LD      (SEED),A
        POP     DE
        POP     BC
        POP     HL
        RET


        DEFS    $05
SEED    DEFW    $6353
        DEFS    $02
TAB     DEFB    $00
 
        END


