home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Source / pheno.lha / pha / Sortering2.S < prev    next >
Encoding:
Text File  |  1987-12-17  |  1.3 KB  |  83 lines

  1.  
  2.             ;---------------
  3.             ;-- Sortering --
  4.             ;---------------
  5.  
  6.  
  7. AntVarden:    =    80
  8.  
  9. S:        lea.l    $dff000,a6
  10.         move.w    $1c(a6),d0
  11.         bset    #15,d0
  12.         move.w    d0,OldIrq
  13.         move.w    #$4000,$9a(a6)
  14.         bsr    Slumpa
  15.         bsr    MainLoop
  16.         move.w    OldIrq(pc),$9a(a6)
  17.         moveq    #0,d0
  18.         rts
  19.  
  20. OldIrq:        dc.w    0
  21.  
  22. Slumpa:        lea.l    Posses(pc),a0
  23.         move.w    #8392,d1
  24.         move.w    #14,d2
  25.         move.w    #2,d3
  26.         move.w    #AntVarden-1,d7
  27. SlumpLoop:    move.w    $6(a6),d0
  28.         muls    d2,d1
  29.         add.w    d3,d2
  30.         and.w    #$ff,d0
  31.         move.w    d0,(a0)+
  32.         dbra    d7,SlumpLoop
  33.         rts
  34.  
  35. MainLoop:    cmp.b    #$50,$6(a6)
  36.         bne.S    MainLoop
  37.         move.w    #$f00,$180(a6)
  38.         bsr    Sortera
  39.         move.w    #$a,$180(a6)
  40.         btst    #6,$bfe001
  41.         bne.S    MainLoop
  42.         rts
  43.  
  44. Sortera:    lea.l    Posses(pc),a0
  45.         lea.l    Posses2(pc),a1
  46.         move.w    #AntVarden-1,d7
  47. SL:        move.w    (a0)+,(a1)+
  48.         dbra    d7,SL
  49.  
  50.         lea.l    Posses2(pc),a0
  51.         lea.l    Sorterade(pc),a1
  52.         moveq    #0,d6
  53.         moveq    #0,d2
  54.         move.w    #AntVarden-1,d7
  55. SortLoop:    move.w    (a0)+,d0
  56.         move.w    d6,d5
  57.         lsr.w    #1,d5
  58.         move.l    a1,a2
  59.         cmp.w    d0,d2
  60.         bhi.S    NoLow
  61.         move.w    d0,(a1,d6.W)
  62.         addq.w    #2,d6
  63.         move.w    d0,d2
  64.         bra.S    Next
  65. NoLow:        cmp.w    (a2)+,d0
  66.         bls.S    NoLika
  67.         dbra    d5,NoLow
  68. NoLika:        add.w    d5,a2
  69.         add.w    d5,a2
  70.         move.l    a2,a3
  71.         subq.l    #2,a2
  72. MoveLoop:    move.w    -(a2),-(a3)
  73.         dbra    d5,MoveLoop
  74.         move.w    d0,2(a2)
  75.         addq.w    #2,d6
  76. Next:        dbra    d7,SortLoop
  77.         rts
  78.  
  79. Posses:        blk.w    AntVarden,0
  80. Posses2:    blk.w    AntVarden,0
  81. Sorterade:    blk.w    AntVarden,0
  82.  
  83.