|
|
1.1 ! root 1: ; ! 2: ! 3: ; quickzero(char *place, long size): zero an area of memory. "size" is ! 4: ! 5: ; the number of 256 byte blocks in the area, and must be > 0. ! 6: ! 7: ; registers changed: d0 and a0 ! 8: ! 9: ; ! 10: ! 11: TEXT ! 12: ! 13: ! 14: ! 15: XDEF _quickzero ! 16: ! 17: _quickzero: ! 18: ! 19: move.l 4(sp),a0 ; place to zero at ! 20: ! 21: move.l 8(sp),d0 ; number of blocks ! 22: ! 23: movem.l d1-d7/a1,-(sp) ; save registers ! 24: ! 25: moveq.l #0,d1 ; zero them out ! 26: ! 27: moveq.l #0,d2 ! 28: ! 29: moveq.l #0,d3 ! 30: ! 31: moveq.l #0,d4 ! 32: ! 33: moveq.l #0,d5 ! 34: ! 35: moveq.l #0,d6 ! 36: ! 37: moveq.l #0,d7 ! 38: ! 39: move.l d1,a1 ! 40: ! 41: subq.l #1,d0 ; adjust for dbra loop ! 42: ! 43: loop: ! 44: ! 45: movem.l d1-d7/a1,(a0) ; zero the memory, 32 bytes at a time ! 46: ! 47: movem.l d1-d7/a1,32(a0) ! 48: ! 49: movem.l d1-d7/a1,64(a0) ! 50: ! 51: movem.l d1-d7/a1,96(a0) ! 52: ! 53: movem.l d1-d7/a1,128(a0) ! 54: ! 55: movem.l d1-d7/a1,160(a0) ! 56: ! 57: movem.l d1-d7/a1,192(a0) ! 58: ! 59: movem.l d1-d7/a1,224(a0) ! 60: ! 61: lea 256(a0),a0 ! 62: ! 63: dbra d0,loop ! 64: ! 65: ; ! 66: ! 67: movem.l (sp)+,d1-d7/a1 ; restore regs ! 68: ! 69: rts ; and leave ! 70: ! 71: END ! 72:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.