|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.