home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari FTP
/
ATARI_FTP_0693.zip
/
ATARI_FTP_0693
/
Mint
/
miwm.zoo
/
quick.s
< prev
next >
Wrap
Text File
|
1991-12-05
|
1KB
|
54 lines
.text
.globl _quickmove
_quickmove:
movel sp@(4), a0 | get dst
movel sp@(8), a1 | get src
movel sp@(12), d0 | get nbytes
lsrl #8, d0 |
lsrl #1, d0 | d0 = nbytes / 512
subql #1, d0 | prepare for dbra loop
bmi Leftover | if < 0, skip
moveml d1-d7/a2-a6, sp@- | save regs
L1:
moveml a1@+, d1-d7/a2-a6 | read 12*4 = 48 bytes
moveml d1-d7/a2-a6, a0@ |
moveml a1@+, d1-d7/a2-a6 | 2nd read
moveml d1-d7/a2-a6, a0@(48) |
moveml a1@+, d1-d7/a2-a6 | 3rd read
moveml d1-d7/a2-a6, a0@(96) |
moveml a1@+, d1-d7/a2-a6 | 4th read
moveml d1-d7/a2-a6, a0@(144) |
moveml a1@+, d1-d7/a2-a6 | 5th
moveml d1-d7/a2-a6, a0@(192) |
moveml a1@+, d1-d7/a2-a6 | 6th
moveml d1-d7/a2-a6, a0@(240) |
moveml a1@+, d1-d7/a2-a6 | 7th
moveml d1-d7/a2-a6, a0@(288) |
moveml a1@+, d1-d7/a2-a6 | 8th
moveml d1-d7/a2-a6, a0@(336) |
moveml a1@+, d1-d7/a2-a6 | 9th
moveml d1-d7/a2-a6, a0@(384) |
moveml a1@+, d1-d7/a2-a6 | 10th
moveml d1-d7/a2-a6, a0@(432) | At this point, 480 bytes done
moveml a1@+, d1-d7/a2 | Only do 32 more bytes
moveml d1-d7/a2, a0@(480) | for a total of 512
lea a0@(512), a0
dbra d0, L1 | and keep doing it
moveml sp@+, d1-d7/a2-a6 | pop registers
Leftover: | do the remaining bytes
movel sp@(12), d1
andl #0x01ff, d1 | d1 = nbytes % 512
tstl d1
bmi Ldone
L2:
movel a1@+, a0@+
subql #4, d1
bgt L2
Ldone:
rts | return