Annotation of 43BSDReno/pgrm/lisp/franz/68k/dodiv.c, revision 1.1

1.1     ! root        1: /* Copyright (c) 1982, Regents, University of California */
        !             2: 
        !             3: struct sdot    { long I; struct sdot *CDR; };
        !             4: struct vl      { long high; long low; };
        !             5: 
        !             6: long dodiv(top,bottom)
        !             7: long *top, *bottom; /* top least significant; bottom most */
        !             8: {
        !             9:        struct vl work;
        !            10:        char error;
        !            11:        long rem = 0, ediv();
        !            12:        register long *p = bottom;
        !            13: 
        !            14:        for(;p <= top;p++)
        !            15:        {
        !            16:                emul(0x40000000,rem,*p,&work);
        !            17:                *p = ediv(&work,1000000000,&error);
        !            18:                rem = work.high;
        !            19:        }
        !            20:        return(rem);
        !            21: }
        !            22: 
        !            23: long dsneg(top,bottom)
        !            24: long *top, *bottom;
        !            25: {
        !            26:        register long *p = top;
        !            27:        register carry = 0;
        !            28:        register digit;
        !            29: 
        !            30:        while(p >= bottom)
        !            31:        {
        !            32:                digit = carry - *p;
        !            33:                /* carry = digit >> 30; is slow on 68K */
        !            34:                if(digit < 0) carry = -2;
        !            35:                if(digit & 0x40000000) carry += 1;
        !            36:                *p-- = digit & 0x3fffffff;
        !            37:        }
        !            38: }
        !            39: 
        !            40: 

unix.superglobalmegacorp.com

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