home *** CD-ROM | disk | FTP | other *** search
- |
- | quickzero(char *place, long size): zero an area of memory. "size" is
- | the number of 256 byte blocks in the area, and must be > 0.
- | registers changed: d0 and a0
- |
- .globl _quickzero
- _quickzero:
- movel sp@(4), a0 | place to zero at
- movel sp@(8), d0 | number of blocks
- moveml d1-d7/a1, sp@- | save registers
- clrl d1 | zero them out
- movel d1, d2
- movel d1, d3
- movel d1, d4
- movel d1, d5
- movel d1, d6
- movel d1, d7
- movel d1, a1
- subql #1, d0 | adjust for dbra loop
- loop:
- moveml d1-d7/a1, a0@ | zero the memory, 32 bytes at a time
- moveml d1-d7/a1, a0@(32)
- moveml d1-d7/a1, a0@(64)
- moveml d1-d7/a1, a0@(96)
- moveml d1-d7/a1, a0@(128)
- moveml d1-d7/a1, a0@(160)
- moveml d1-d7/a1, a0@(192)
- moveml d1-d7/a1, a0@(224)
- lea a0@(256), a0
- dbra d0, loop
- |
- moveml sp@+, d1-d7/a1 | restore regs
- rts | and leave
-