home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Source / pheno.lha / pha / Sortering4.S < prev    next >
Encoding:
Text File  |  1987-12-17  |  1.4 KB  |  87 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.         move.l    a0,a1
  52.         move.w    #AntVarden-1,d0
  53.         add.w    d0,d0
  54.         add.w    d0,a1
  55.         move.l    a0,a2
  56.         move.l    a1,a3
  57.         move.w    #AntVarden,d7
  58.         move.w    d7,d5
  59.         lsr.w    #1,d7
  60.         subq.w    #1,d7
  61. SortLoop:    move.w    d5,d6
  62. SortLoop2:    move.l    a2,a0
  63.         move.l    a3,a1
  64.         move.w    (a0)+,d0
  65. Search:        cmp.w    (a0)+,d0
  66.         bhi.S    NoChange
  67.         lea.l    -2(a0),a4
  68. NoChange:    dbra    d6,Search
  69.         move.w    d5,d6
  70. Search2:    cmp.w    -(a1),d0
  71.         bls.S    NoChange2
  72.         lea.l    -2(a0),a5
  73. NoChange2:    dbra    d6,Search2
  74.         move.w    (a4),d2
  75.         move.w    (a5),(a4)
  76.         move.w    d2,(a5)
  77.         addq.l    #2,a2
  78.         subq.l    #2,a3
  79.         subq.w    #2,d5
  80.         dbra    d7,SortLoop
  81.         rts
  82.  
  83. Posses:        blk.w    AntVarden,0
  84. Posses2:    blk.w    AntVarden,0
  85. Sorterade:    blk.w    AntVarden,0
  86.  
  87.