Annotation of 42BSD/usr.lib/libF77/traper_.c, revision 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.