16 /* User symbols and Permanent Symbol Table entries used to have the */
17 /* same 12 byte format. Merging the two phases of the assembler, moving */
18 /* the symbol name characters to an externally allocated heap and */
19 /* using a non-contiguous user symbol table meant that the symbol number */
20 /* could no longer be calculated by subtracting the base of the symbol */
21 /* table and dividing by the size of an entry. What was done was to */
22 /* expand the symbol table entry by another word and keep the symbol number */
23 /* in that. The new internal symbol structure is: */
32 #define SYMBLKSZ (512 / sizeof(struct symbol))
36 struct symbol data[SYMBLKSZ];
39 /* STRBLKSZ = 1024. */
60 #define TSEMICOLON ';'
100 #define FDOTGLOBL 023
101 #define FREGISTER 024
112 #if 1 /* modifications for dec syntax */
117 extern struct symbol *pdot;
118 extern struct symbol *pdotdot;
119 extern intptr_t numbertoken;
120 extern int numbervalue;
122 extern int optoken; /* (sp) */
123 extern int rightflags; /* r0 */
124 extern int rightvalue; /* r1 */
125 extern int leftvalue; /* r2 */
126 extern int leftflags; /* r3 */
127 extern intptr_t token; /* r4 */
128 extern char chartab[TASCII];
129 extern char a_tmp1[];
134 extern intptr_t curfb[10];
135 extern intptr_t nxtfb[10];
136 extern int curfbr[10];
137 extern int savdot[3];
138 extern struct symbol **hshtab;
141 extern char symbol[33];
142 extern char inbuf[1024];
146 extern char **curarg;
152 extern struct symbol *fbptr;
153 extern struct symbol *fbtbl;
154 extern struct symblk *usymtab;
156 extern struct symbol *symend;
157 extern struct symblk *symblk;
160 extern struct strblk *strblk;
161 extern struct symbol symtab[];
164 int main PARAMS((int argc, char **argv));
165 int oops PARAMS((void));
166 void nomem PARAMS((void));
167 void error PARAMS((int code));
168 void p0putw PARAMS((int word));
169 void pass0 PARAMS((void));
170 int fbcheck PARAMS((int label));
171 void growfb PARAMS((void));
172 void rname PARAMS((void));
173 struct symbol *isroom PARAMS((struct symbol *psymbol));
174 char *astring PARAMS((int len));
175 int number PARAMS((void));
176 int rch PARAMS((void));
177 void p0readop PARAMS((void));
178 void escp PARAMS((void));
179 void fixor PARAMS((void));
180 void retread PARAMS((int c));
181 void rdname PARAMS((int c));
182 void rdnum PARAMS((void));
183 void squote PARAMS((void));
184 void dquote PARAMS((void));
185 void retnum PARAMS((int value));
186 void skip PARAMS((void));
187 void garb PARAMS((void));
188 void string PARAMS((void));
189 int rsch PARAMS((void));
190 void p0xpr PARAMS((void));
191 void p0opline PARAMS((void));
192 void p0opl35 PARAMS((void));
193 void p0opl36 PARAMS((void));
194 void relative PARAMS((int size));
195 void p0opl13 PARAMS((void));
196 void p0opl7 PARAMS((void));
197 void p0opl15 PARAMS((void));
198 void p0opl31 PARAMS((void));
199 void p0opl6 PARAMS((void));
200 void p0opl10 PARAMS((void));
201 void p0opl11 PARAMS((void));
202 void p0opl16 PARAMS((void));
203 #if 1 /* modifications for dec syntax */
204 void p0opldotword PARAMS((void));
206 void p0opl17 PARAMS((void));
207 void p0opl20 PARAMS((void));
208 void p0opl21 PARAMS((void));
209 void p0opl22 PARAMS((void));
210 void p0opl23 PARAMS((void));
211 void p0opl25 PARAMS((void));
212 void p0opl26 PARAMS((void));
213 void p0opl27 PARAMS((void));
214 void p0opl32 PARAMS((void));
215 void p0addres PARAMS((void));
216 void p0getx PARAMS((void));
217 void p0alp PARAMS((void));
218 void p0amin PARAMS((void));
219 void p0adoll PARAMS((void));
220 void p0astar PARAMS((void));
221 void errora PARAMS((void));
222 void p0checkreg PARAMS((void));
223 void errore PARAMS((void));
224 void p0checkrp PARAMS((void));
225 void p0expres PARAMS((void));
226 void p0binop PARAMS((void));
227 void p0exnum PARAMS((void));
228 void p0brack PARAMS((void));
229 void p0oprand PARAMS((void));
230 void p0excmbin PARAMS((void));
231 void p0exrsh PARAMS((void));
232 void p0exlsh PARAMS((void));
233 void p0exmod PARAMS((void));
234 void p0exadd PARAMS((void));
235 void p0exsub PARAMS((void));
236 void p0exand PARAMS((void));
237 void p0exor PARAMS((void));
238 void p0exmul PARAMS((void));
239 void p0exdiv PARAMS((void));
240 void p0exnot PARAMS((void));
241 void p0eoprnd PARAMS((void));
242 void p0combin PARAMS((int minflag));