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

  1.  
  2.             ;---------------
  3.             ;-- Sortering --
  4.             ;---------------
  5. org    $20000
  6. load    $20000
  7.  
  8. AntVarden:    =    40
  9.  
  10. S:        lea.l    $dff000,a6
  11.         move.w    $1c(a6),d0
  12.         bset    #15,d0
  13.         move.w    d0,OldIrq
  14.         move.w    $2(a6),d0
  15.         bset    #15,d0
  16.         move.w    d0,OldDma
  17.         move.w    #$7fff,$96(a6)
  18.         move.w    #$87c0,$96(a6)
  19.         move.w    #$4000,$9a(a6)
  20.         bsr    Slumpa
  21.         bsr    MainLoop
  22.         move.w    OldIrq(pc),$9a(a6)
  23.         move.w    OldDma(pc),$96(a6)
  24.         moveq    #0,d0
  25.         rts
  26.  
  27. OldIrq:        dc.w    0
  28. OldDma:        dc.w    0
  29.  
  30. Slumpa:        lea.l    Posses(pc),a0
  31.         move.w    #8392,d1
  32.         move.w    #14,d2
  33.         move.w    #2,d3
  34.         move.w    #AntVarden-1,d7
  35. SlumpLoop:    move.w    $6(a6),d0
  36.         ext    d0
  37.         muls    d1,d0
  38. ;        muls    d2,d1
  39.         add.w    d3,d1
  40.         and.w    #$ff,d0
  41.         move.w    d0,(a0)+
  42.         dbra    d7,SlumpLoop
  43.         rts
  44.  
  45. MainLoop:    cmp.b    #$50,$6(a6)
  46.         bne.S    MainLoop
  47.         move.w    #$f00,$180(a6)
  48.         bsr    Sortera
  49.         move.w    #$a,$180(a6)
  50.         btst    #6,$bfe001
  51.         bne.S    MainLoop
  52.         rts
  53.  
  54. Sortera:    lea.l    Posses(pc),a0
  55.         lea.l    Posses2(pc),a1
  56.         move.w    #AntVarden-1,d7
  57. SL:        move.w    (a0)+,(a1)+
  58.         dbra    d7,SL
  59.  
  60.         bsr    BlitWait
  61.         move.l    #-1,$44(a6)
  62.         move.l    #$09f00002,$40(a6)
  63.         clr.l    $64(a6)
  64.  
  65.         lea.l    Posses2(pc),a0
  66.         lea.l    Sorterade(pc),a1
  67.         moveq    #0,d6
  68.         moveq    #0,d2
  69.         move.w    #AntVarden-1,d7
  70. SortLoop:    move.w    (a0)+,d0
  71.         move.w    d6,d5
  72.         lsr.w    #1,d5
  73.         move.l    a1,a2
  74.         cmp.w    d0,d2
  75.         bhi.S    NoLow
  76.         move.w    d0,(a1,d6.W)
  77.         addq.w    #2,d6
  78.         move.w    d0,d2
  79.         bra.S    Next
  80. NoLow:        cmp.w    (a2)+,d0
  81.         bls.S    NoLika
  82.         dbra    d5,NoLow
  83. NoLika:        move.l    a2,a4
  84.         addq.w    #1,d5
  85.         add.w    d5,a2
  86.         add.w    d5,a2
  87.         move.l    a2,a3
  88.         subq.l    #2,a2
  89.         subq.w    #1,d5
  90.         lsl.w    #6,d5
  91.         addq.w    #1,d5
  92.         bsr    BlitWait
  93.         move.l    a2,$50(a6)
  94.         move.l    a3,$54(a6)
  95.         move.w    d5,$58(a6)
  96.         move.w    d0,(a4)
  97.         addq.w    #2,d6
  98. Next:        dbra    d7,SortLoop
  99.         rts
  100.  
  101. BlitWait:    btst    #14,$2(a6)
  102.         bne.S    BlitWait
  103.         rts
  104.  
  105. Posses:        blk.w    100,0
  106. Posses2:    blk.w    100,0
  107. Sorterade:    blk.w    100,0
  108.  
  109.