Annotation of researchv10no/cmd/PDP11/11as/as15.c, revision 1.1.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.