home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 1: Collection A / 17Bit_Collection_A.iso / files / 290.dms / 290.adf / quickrif.source / copy.asm < prev    next >
Assembly Source File  |  1989-01-31  |  810b  |  46 lines

  1.  
  2. ; :ts=10
  3.  
  4.     ;copy_structure(source, dest, count)
  5.     ;    copy a WORD-alligned structure as fast as possible
  6.     public _copy_structure
  7. _copy_structure
  8.     ;grab the parameters
  9.     move.l    4(sp),a0
  10.     move.l    8(sp),a1
  11.     move.w    14(sp),d0
  12.  
  13.     move.w    d0,d1
  14.     lsr.w    #5,d1    ;going to move 32 bytes at a time at first...
  15.     bra    zl32
  16. l32    move.l    (a0)+,(a1)+
  17.     move.l    (a0)+,(a1)+
  18.     move.l    (a0)+,(a1)+
  19.     move.l    (a0)+,(a1)+
  20.     move.l    (a0)+,(a1)+
  21.     move.l    (a0)+,(a1)+
  22.     move.l    (a0)+,(a1)+
  23.     move.l    (a0)+,(a1)+
  24. zl32    dbra    d1,l32
  25.  
  26.     and.w    #31,d0
  27.     lsr.w    #1,d1    ;the rest goes 2 bytes at a time
  28.     bra    zl2
  29. l2    move.w    (a0)+,(a1)+
  30. zl2    dbra    d0,l2
  31.  
  32.     rts
  33.  
  34.     ;copy_chars(s, d, count)
  35.     ; copy character at a time - not WORD alligned
  36.     public _copy_chars
  37. _copy_chars
  38.     move.l    4(sp),a0
  39.     move.l    8(sp),a1
  40.     move.l    12(sp),d0
  41.     bra     zcch
  42. cch    move.b    (a0)+,(a1)+
  43. zcch    dbra    d0,cch
  44.     rts
  45.  
  46.