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

  1.  
  2.             ;---------------
  3.             ;-- Sortering --
  4.             ;---------------
  5. org    $20000
  6. load    $20000
  7.  
  8. AntVarden:    =    80
  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    $50(a6),a5
  66.         lea.l    $58(a6),a6
  67.  
  68.         lea.l    Posses2(pc),a0
  69.         lea.l    Sorterade(pc),a1
  70.         moveq    #0,d6
  71.         moveq    #0,d2
  72.         move.w    #AntVarden-1,d7
  73. SortLoop:    move.w    (a0)+,d0
  74.         move.w    d6,d5
  75.         lsr.w    #1,d5
  76.         move.l    a1,a2
  77.         cmp.w    d0,d2
  78.         bhi.S    NoLow
  79.         move.w    d0,(a1,d6.W)
  80.         addq.w    #2,d6
  81.         move.w    d0,d2
  82.         bra.S    Next
  83. NoLow:        cmp.w    (a2)+,d0
  84.         bls.S    NoLika
  85.         dbra    d5,NoLow
  86. NoLika:        move.l    a2,a4
  87.         subq.w    #1,d5
  88.         add.w    d5,a2
  89.         add.w    d5,a2
  90.         move.l    a2,a3
  91.         subq.l    #2,a2
  92.         addq.w    #1,d5
  93.         lsl.w    #6,d5
  94.         addq.w    #1,d5
  95.         movem.l    a2/a3,(a5)
  96.         move.w    d5,(a6)
  97. BW:        ;btst    #14,$dff002
  98.         ;bne.S    BW
  99.         addq.w    #2,d6
  100.         move.w    d0,-2(a4)
  101. Next:        dbra    d7,SortLoop
  102.  
  103.         lea.l    $dff000,a6
  104.         rts
  105.  
  106. BlitWait:    btst    #14,$2(a6)
  107.         bne.S    BlitWait
  108.         rts
  109.  
  110. Posses:        blk.w    100,0
  111. Posses2:    blk.w    100,0
  112. Sorterade:    blk.w    100,0
  113.  
  114.