home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Source / pheno.lha / pha / Sortering21.S < prev    next >
Encoding:
Text File  |  1987-12-17  |  1.5 KB  |  99 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.  
  34.         lea.l    Kuse(pc),a0
  35.         move.w    KuseW(pc),d0
  36.         move.w    #200-1,d7
  37. KL:        move.w    d0,(a0)+
  38.         dbra    d7,KL
  39.         move.w    #$4e75,(a0)+
  40.         rts
  41.  
  42. KuseW:        move.w    -(a2),-(a3)
  43.  
  44. MainLoop:    cmp.b    #$50,$6(a6)
  45.         bne.S    MainLoop
  46.         move.w    #$f00,$180(a6)
  47.         bsr    Sortera
  48.         move.w    #$a,$180(a6)
  49.         btst    #6,$bfe001
  50.         bne.S    MainLoop
  51.         rts
  52.  
  53. Sortera:    lea.l    Posses(pc),a0
  54.         lea.l    Posses2(pc),a1
  55.         lea.l    Kuse+400(pc),a5
  56.         move.w    #AntVarden-1,d7
  57. SL:        move.w    (a0)+,(a1)+
  58.         dbra    d7,SL
  59.  
  60.         lea.l    Posses2(pc),a0
  61.         lea.l    Sorterade(pc),a1
  62.         moveq    #0,d6
  63.         moveq    #0,d2
  64.         move.w    #AntVarden-1,d7
  65. SortLoop:    move.w    (a0)+,d0
  66.         move.w    d6,d5
  67.         lsr.w    #1,d5
  68.         move.l    a1,a2
  69.         cmp.w    d0,d2
  70.         bhi.S    NoLow
  71.         move.w    d0,(a1,d6.W)
  72.         addq.w    #2,d6
  73.         move.w    d0,d2
  74.         bra.S    Next
  75. NoLow:        cmp.w    (a2)+,d0
  76.         bls.S    NoLika
  77.         dbra    d5,NoLow
  78. NoLika:        add.w    d5,a2
  79.         add.w    d5,a2
  80.         move.l    a2,a3
  81.         subq.l    #2,a2
  82.         addq.w    #1,d5
  83.         add.w    d5,d5
  84.         move.l    a5,a4
  85.         sub.w    d5,a4
  86.         jsr    (a4)
  87.  
  88.         move.w    d0,2(a2)
  89.         addq.w    #2,d6
  90. Next:        dbra    d7,SortLoop
  91.         rts
  92.  
  93. Posses:        blk.w    AntVarden,0
  94. Posses2:    blk.w    AntVarden,0
  95. Sorterade:    blk.w    AntVarden,0
  96.  
  97. Kuse:        blk.w    200,0
  98.  
  99.