Annotation of 43BSD/ucb/lisp/franz/68k/dodiv.c, revision 1.1.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.