Annotation of 42BSD/usr.lib/libF77/traper_.c, revision 1.1.1.1

1.1       root        1: /*
                      2: char id_traper[] = "@(#)traper_.c      1.1";
                      3:  * Arrange to trap integer overflow & floating underflow.
                      4:  * Full of Magic! DON'T CHANGE ANYTHING !!
                      5:  *
                      6:  * To use from f77:
                      7:  *     integer oldmsk, traper
                      8:  *     oldmsk = traper (mask)
                      9:  * where:
                     10:  *     mask = 1 to trap integer overflow
                     11:  *     mask = 2 to trap floating underflow
                     12:  *     mask = 3 to trap both
                     13:  *     These 2 bits will be set into the PSW.
                     14:  *     The old state will be returned.
                     15:  */
                     16: 
                     17: long traper_(msk)
                     18: long   *msk;
                     19: {
                     20:        int     old = 0;
                     21: #if    vax
                     22: #define IOV_MASK       0140
                     23:        int     **s = &msk;
                     24:        int     psw;
                     25: 
                     26:        s -= 5;
                     27:        psw = (int)*s;
                     28:        old = (psw & IOV_MASK) >> 5;
                     29:        psw = (psw & ~IOV_MASK) | ((*msk << 5) & IOV_MASK);
                     30:        *s = (int *)psw;
                     31: #endif vax
                     32:        return((long)old);
                     33: }

unix.superglobalmegacorp.com

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