Annotation of MiNT/src/quickzer.spp, revision 1.1.1.2

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.