|
|
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: ; $Log: quickzer.s,v $ ! 12: ! 13: ; Revision 1.1 1991/05/30 17:23:58 AGK ! 14: ! 15: ; Initial revision ! 16: ! 17: ; ! 18: ! 19: SECTION TEXT ! 20: ! 21: ! 22: ! 23: XDEF _quickzero ! 24: ! 25: _quickzero: ! 26: ! 27: move.l 4(sp),a0 ; place to zero at ! 28: ! 29: move.l 8(sp),d0 ; number of blocks ! 30: ! 31: movem.l d1-d7/a1,-(sp) ; save registers ! 32: ! 33: moveq.l #0,d1 ; zero them out ! 34: ! 35: moveq.l #0,d2 ! 36: ! 37: moveq.l #0,d3 ! 38: ! 39: moveq.l #0,d4 ! 40: ! 41: moveq.l #0,d5 ! 42: ! 43: moveq.l #0,d6 ! 44: ! 45: moveq.l #0,d7 ! 46: ! 47: move.l d1,a1 ! 48: ! 49: subq.l #1,d0 ; adjust for dbra loop ! 50: ! 51: loop: ! 52: ! 53: movem.l d1-d7/a1,(a0) ; zero the memory, 32 bytes at a time ! 54: ! 55: movem.l d1-d7/a1,32(a0) ! 56: ! 57: movem.l d1-d7/a1,64(a0) ! 58: ! 59: movem.l d1-d7/a1,96(a0) ! 60: ! 61: movem.l d1-d7/a1,128(a0) ! 62: ! 63: movem.l d1-d7/a1,160(a0) ! 64: ! 65: movem.l d1-d7/a1,192(a0) ! 66: ! 67: movem.l d1-d7/a1,224(a0) ! 68: ! 69: lea 256(a0),a0 ! 70: ! 71: dbra d0,loop ! 72: ! 73: ; ! 74: ! 75: movem.l (sp)+,d1-d7/a1 ; restore regs ! 76: ! 77: rts ; and leave ! 78: ! 79: END ! 80:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.