Annotation of researchv10no/cmd/PDP11/11as/as15.c, revision 1.1

1.1     ! root        1: /* a5 -- pdp-11 assembler pass 1 */
        !             2: #include "as1.h"
        !             3: 
        !             4: OP savop;
        !             5: OP lastop;
        !             6: int noputw;
        !             7: 
        !             8: OP
        !             9: readop()
        !            10: {
        !            11:        if (savop.xp) {lastop=savop; savop.xp=0; return(lastop);}
        !            12:        noputw=0;
        !            13:        lastop=_readop(rch());
        !            14:        if (noputw==0) putw(lastop.v);
        !            15:        return(lastop);
        !            16: }
        !            17: 
        !            18: extern int fbflag;
        !            19: int rschflg;
        !            20: 
        !            21: OP
        !            22: _readop(t)
        !            23: register int t;
        !            24: {
        !            25:        OP s;
        !            26: 
        !            27:        for (;;) {
        !            28:        switch (chartab[t]) {
        !            29:        case C_IOR:
        !            30:                s.v=037; return(s);
        !            31:        case C_ESC:
        !            32:                switch (t=rch()) {
        !            33:                        case '/': s.v='/'; return(s);
        !            34:                        case '<': s.v=035; return(s);
        !            35:                        case '>': s.v=036; return(s);
        !            36:                        case '%': s.v=037; return(s);
        !            37:                }
        !            38:                s.v=t; return(s);
        !            39:        case C_WHITE:
        !            40:                break;
        !            41:        case C_TERM:
        !            42:                s.v=t; return(s);
        !            43:        case C_SQUO:
        !            44:                t=rsch(); goto ccon;
        !            45:        case C_DQUO:
        !            46:                t=rsch(); t |= rsch()<<8;
        !            47:         ccon:
        !            48:                numval=t; putw(T_ABS); putw(numval); s.v=T_ABS; noputw=1; return(s);
        !            49:        case C_GARB:
        !            50:                error('g'); break;
        !            51:        case C_SKIP:
        !            52:                for (;;) {
        !            53:                        t=rch();
        !            54:                        if (t=='\004' || t=='\n') {s.v=t; return(s);}
        !            55:                }
        !            56:        case C_EOL:
        !            57:                s.v=t; return(s);
        !            58:        case C_STR:
        !            59:                putw('<'); numval=0;
        !            60:                for (;;) {
        !            61:                        t=rsch();
        !            62:                        if (rschflg) break;
        !            63:                        putw(t|0400);
        !            64:                        numval++;
        !            65:                }
        !            66:                putw(-1);
        !            67:                s.v='<'; noputw=1; return(s);
        !            68:        default:
        !            69:                ch=t;
        !            70:                if ('0'<=t && t<='9') {
        !            71:                        t=number();
        !            72:                        if (fbflag==0) goto ccon;
        !            73:                        s.v=t; return(s);
        !            74:                }
        !            75:                s.xp=rname(t); return(s);
        !            76:        }
        !            77:        t=rch();
        !            78:        }
        !            79: }
        !            80: 
        !            81: rsch()
        !            82: {
        !            83:        register int t=rch();
        !            84: 
        !            85:        if (t=='\004' || t=='\n') {error('<'); aexit();}
        !            86:        rschflg=0;
        !            87:        if (t=='\\') {
        !            88:                switch (t=rch()) {
        !            89:                        case 'n': return(012);  
        !            90:                        case 's': return(040);
        !            91:                        case 't': return(011);
        !            92:                        case 'e': return(004);
        !            93:                        case '0': return(000);
        !            94:                        case 'r': return(015);
        !            95:                        case 'a': return(006);
        !            96:                        case 'p': return(033);
        !            97:                }
        !            98:                return(t);
        !            99:        }
        !           100:        if (t=='>') rschflg=1;
        !           101:        return(t);
        !           102: }

unix.superglobalmegacorp.com

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