In asxlat, translate ! to ~ (not operator; used with bic instruction)
[pdp11_as.git] / as0.h
1 #ifndef _AS0_H
2 #define _AS0_H 1
3
4 #include "krcompat.h"
5
6 /* PSTENTSZ = 6. */
7 /* SYMENTSZ = 8. */
8
9 struct symbol {
10         char    *name;
11         int     flags;
12         int     value;
13         int     number;
14 };
15
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: */
24
25 /*      char    *name; */
26 /*      u_short flags; */
27 /*      u_short value; */
28 /*      u_short number; */
29
30 /* SYMBLKSZ = 512. */
31
32 #define SYMBLKSZ (512 / sizeof(struct symbol))
33
34 struct symblk {
35         struct symblk *next;
36         struct symbol data[SYMBLKSZ];
37 };
38
39 /* STRBLKSZ = 1024. */
40
41 #define STRBLKSZ 1024
42
43 struct strblk {
44         struct strblk *next;
45         char data[STRBLKSZ];
46 };
47
48 /* hshsiz = 3001. */
49
50 #define hshsiz 3001
51
52 #define TABS 1
53 #define TABS2 2
54 #define TENDFILE 4
55 #define TNEWFILE 5
56 #define TNEWLINE '\n'
57 #define TEQUAL '='
58 #define TCOLON ':'
59 #define FGLOBAL 040
60 #define TSEMICOLON ';'
61 #define TLABEL 0141
62 #define TLSH 035
63 #define TRSH 036
64 #define TOR 037
65 #define TSTRING '<'
66 #define TCOMMA ','
67 #define TLPAREN '('
68 #define TMIN '-'
69 #define TDOLL '$'
70 #define TSTAR '*'
71 #define TPLUS '+'
72 #define TRPAREN ')'
73 #define TSLASH '/'
74 #define TAND '&'
75 #define TMOD '%'
76 #define TLBRACK '['
77 #define TCARET '^'
78 #define TNOT '!'
79 #define TRBRACK ']'
80 #define TASCII 0200
81
82 #define FABS 1
83 #define FTEXT 2
84 #define FDATA 3
85 #define FBSS 4
86 #define FMOVFO 5
87 #define FBRANCH 6
88 #define FJSR 7
89 #define FRTS 010
90 #define FSYSTRAP 011
91 #define FMOVF 012
92 #define FDOUBLE 013
93 #define FFLOP 014
94 #define FSINGLE 015
95 #define FDOTBYTE 016
96 #define FSTRING 017
97 #define FDOTEVEN 020
98 #define FDOTIF 021
99 #define FDOTENDIF 022
100 #define FDOTGLOBL 023
101 #define FREGISTER 024
102 #define FDOTTEXT 025
103 #define FDOTDATA 026
104 #define FDOTBSS 027
105 #define FMULDIV 030
106 #define FSOB 031
107 #define FDOTCOMM 032
108 #define FESTTEXT 033
109 #define FESTDATA 034
110 #define FJBR 035
111 #define FJCOND 036
112 #if 1 /* modifications for dec syntax */
113 #define FDOTWORD 037
114 #endif
115
116 extern char Newsym;
117 extern struct symbol *pdot;
118 extern struct symbol *pdotdot;
119 extern intptr_t numbertoken;
120 extern int numbervalue;
121 extern int indirect;
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[];
130 extern char Ncps;
131 extern char *dash;
132 extern int fin;
133 extern int fout;
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;
139 extern int ch;
140 extern int symnum;
141 extern char symbol[33];
142 extern char inbuf[1024];
143 extern int line;
144 extern int ifflg;
145 extern int nargs;
146 extern char **curarg;
147 extern int opfound;
148 extern int savop;
149 extern int numval;
150 extern int fbtblsz;
151 extern int fbfree;
152 extern struct symbol *fbptr;
153 extern struct symbol *fbtbl;
154 extern struct symblk *usymtab;
155 extern int symleft;
156 extern struct symbol *symend;
157 extern struct symblk *symblk;
158 extern int strleft;
159 extern char *strend;
160 extern struct strblk *strblk;
161 extern struct symbol symtab[];
162 extern int ebsymtab;
163
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));
205 #endif
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));
243
244 #endif