1 
2 /*
3  *   O2EM Free Odyssey2 / Videopac+ Emulator
4  *
5  *   Created by Daniel Boris <dboris@comcast.net>  (c) 1997,1998
6  *
7  *   Developed by Andre de la Rocha   <adlroc@users.sourceforge.net>
8  *             Arlindo M. de Oliveira <dgtec@users.sourceforge.net>
9  *
10  *   http://o2em.sourceforge.net
11  *
12  *
13  *
14  *   8048 Mnemonics
15  */
16 
17 
18 #include "cpu.h"
19 #include "table.h"
20 
21 
22 struct lookup_tag lookup[] = {
23 
24 		/* 00 */ {"NOP",1,0},
25 		/* 01 */ {"ILL",1,0},
26 		/* 02 */ {"OUTL BUS,A",1,0},
27 		/* 03 */ {"ADD A,",2,1},
28 
29 		/* 04 */ {"JMP",2,2},
30 		/* 05 */ {"EN I",1,0},
31 		/* 06 */ {"ILL",1,0},
32 		/* 07 */ {"DEC A",1,0},
33 
34 		/* 08 */ {"INS A,BUS",1,0},
35 		/* 09 */ {"IN A,P1",1,0},
36 		/* 0A */ {"IN A,P2",1,0},
37 		/* 0B */ {"ILL",1,0},
38 
39 		/* 0C */ {"MOVD A,P4",1,0},
40 		/* 0D */ {"MOVD A,P5",1,0},
41 		/* 0E */ {"MOVD A,P6",1,0},
42 		/* 0F */ {"MOVD A,P7",1,0},
43 
44 		/* 10 */ {"INC @R0",1,0},
45 		/* 11 */ {"INC @R1",1,0},
46 		/* 12 */ {"JB0",2,3},
47 		/* 13 */ {"ADDC A,",2,1},
48 
49 		/* 14 */ {"CALL",2,2},
50 		/* 15 */ {"DIS I",1,0},
51 		/* 16 */ {"JTF",2,3},
52 		/* 17 */ {"INC A",1,0},
53 
54 		/* 18 */ {"INC R0",1,0},
55 		/* 19 */ {"INC R1",1,0},
56 		/* 1A */ {"INC R2",1,0},
57 		/* 1B */ {"INC R3",1,0},
58 
59 		/* 1C */ {"INC R4",1,0},
60 		/* 1D */ {"INC R5",1,0},
61 		/* 1E */ {"INC R6",1,0},
62 		/* 1F */ {"INC R7",1,0},
63 
64 		/* 20 */ {"XCH A,@R0",1,0},
65 		/* 21 */ {"XCH A,@R1",1,0},
66 		/* 22 */ {"ILL",1,0},
67 		/* 23 */ {"MOV A,",2,1},
68 
69 		/* 24 */ {"JMP",2,2},
70 		/* 25 */ {"EN TCNTI",1,0},
71 		/* 26 */ {"JNT0",2,3},
72 		/* 27 */ {"CLR A",1,0},
73 
74 		/* 28 */ {"XCH A,R0",1,0},
75 		/* 29 */ {"XCH A,R1",1,0},
76 		/* 2A */ {"XCH A,R2",1,0},
77 		/* 2B */ {"XCH A,R3",1,0},
78 
79 		/* 2C */ {"XCH A,R4",1,0},
80 		/* 2D */ {"XCH A,R5",1,0},
81 		/* 2E */ {"XCH A,R6",1,0},
82 		/* 2F */ {"XCH A,R7",1,0},
83 
84 		/* 30 */ {"XCHD A,@R0",1,0},
85 		/* 31 */ {"XCHD A,@R1",1,0},
86 		/* 32 */ {"JB1",2,3},
87 		/* 33 */ {"ILL",1,0},
88 
89 		/* 34 */ {"CALL",2,2},
90 		/* 35 */ {"DIS TCNTI",1,0},
91 		/* 36 */ {"JT0",2,3},
92 		/* 37 */ {"CPL A",1,0},
93 
94 		/* 38 */ {"ILL",1,0},
95 		/* 39 */ {"OUTL P1,A",1,0},
96 		/* 3A */ {"OUTL P2,A",1,0},
97 		/* 3B */ {"ILL",1,0},
98 
99 		/* 3C */ {"MOVD P4,A",1,0},
100 		/* 3D */ {"MOVD P5,A",1,0},
101 		/* 3E */ {"MOVD P6,A",1,0},
102 		/* 3F */ {"MOVD P7,A",1,0},
103 
104 		/* 40 */ {"ORL A,@R0",1,0},
105 		/* 41 */ {"ORL A,@R1",1,0},
106 		/* 42 */ {"MOV A,T",1,0},
107 		/* 43 */ {"ORL A,",2,1},
108 
109 		/* 44 */ {"JMP",2,2},
110 		/* 45 */ {"STRT CNT",1,0},
111 		/* 46 */ {"JNT1",2,3},
112 		/* 47 */ {"SWAP",1,0},
113 
114 		/* 48 */ {"ORL A,R0",1,0},
115 		/* 49 */ {"ORL A,R1",1,0},
116 		/* 4A */ {"ORL A,R2",1,0},
117 		/* 4B */ {"ORL A,R3",1,0},
118 
119 		/* 4C */ {"ORL A,R4",1,0},
120 		/* 4D */ {"ORL A,R5",1,0},
121 		/* 4E */ {"ORL A,R6",1,0},
122 		/* 4F */ {"ORL A,R7",1,0},
123 
124 		/* 50 */ {"ANL A,@R0",1,0},
125 		/* 51 */ {"ANL A,@R1",1,0},
126 		/* 52 */ {"JB2",2,3},
127 		/* 53 */ {"ANL A,",2,1},
128 
129 		/* 54 */ {"CALL",2,2},
130 		/* 55 */ {"STRT T",1,0},
131 		/* 56 */ {"JT1",2,3},
132 		/* 57 */ {"ILL",1,0},
133 
134 		/* 58 */ {"ANL A,R0",1,0},
135 		/* 59 */ {"ANL A,R1",1,0},
136 		/* 5A */ {"ANL A,R2",1,0},
137 		/* 5B */ {"ANL A,R3",1,0},
138 
139 		/* 5C */ {"ANL A,R4",1,0},
140 		/* 5D */ {"ANL A,R5",1,0},
141 		/* 5E */ {"ANL A,R6",1,0},
142 		/* 5F */ {"ANL A,R7",1,0},
143 
144 		/* 60 */ {"ADD A,@R0",1,0},
145 		/* 61 */ {"ADD A,@R1",1,0},
146 		/* 62 */ {"MOV T,A",1,0},
147 		/* 63 */ {"ILL",1,0},
148 
149 		/* 64 */ {"JMP",2,2},
150 		/* 65 */ {"STOP TCNT",1,0},
151 		/* 66 */ {"ILL",1,0},
152 		/* 67 */ {"RRC A",1,0},
153 
154 		/* 68 */ {"ADD A,R0",1,0},
155 		/* 69 */ {"ADD A,R1",1,0},
156 		/* 6A */ {"ADD A,R2",1,0},
157 		/* 6B */ {"ADD A,R3",1,0},
158 
159 		/* 6C */ {"ADD A,R4",1,0},
160 		/* 6D */ {"ADD A,R5",1,0},
161 		/* 6E */ {"ADD A,R6",1,0},
162 		/* 6F */ {"ADD A,R7",1,0},
163 
164 		/* 70 */ {"ADDC A,@R0",1,0},
165 		/* 71 */ {"ADDC A,@R1",1,0},
166 		/* 72 */ {"JB3",2,3},
167 		/* 73 */ {"ILL",1,0},
168 
169 		/* 74 */ {"CALL",2,2},
170 		/* 75 */ {"ENT0 CLK",1,0},
171 		/* 76 */ {"JF1",2,3},
172 		/* 77 */ {"RR A",1,0},
173 
174 		/* 78 */ {"ADDC A,R0",1,0},
175 		/* 79 */ {"ADDC A,R1",1,0},
176 		/* 7A */ {"ADDC A,R2",1,0},
177 		/* 7B */ {"ADDC A,R3",1,0},
178 
179 		/* 7C */ {"ADDC A,R4",1,0},
180 		/* 7D */ {"ADDC A,R5",1,0},
181 		/* 7E */ {"ADDC A,R6",1,0},
182 		/* 7F */ {"ADDC A,R7",1,0},
183 
184 		/* 80 */ {"MOVX A,@R0",1,0},
185 		/* 81 */ {"MOVX A,@R1",1,0},
186 		/* 82 */ {"ILL",1,0},
187 		/* 83 */ {"RET",1,0},
188 
189 		/* 84 */ {"JMP",2,2},
190 		/* 85 */ {"CLR F0",1,0},
191 		/* 86 */ {"JNI",2,3},
192 		/* 87 */ {"ILL",1,0},
193 
194 		/* 88 */ {"ORL BUS,",2,1},
195 		/* 89 */ {"ORL P1,",2,1},
196 		/* 8A */ {"ORL P2,",2,1},
197 		/* 8B */ {"ILL",1,0},
198 
199 		/* 8C */ {"ORLD P4,A",1,0},
200 		/* 8D */ {"ORLD P5,A",1,0},
201 		/* 8E */ {"ORLD P6,A",1,0},
202 		/* 8F */ {"ORLD P7,A",1,0},
203 
204 		/* 90 */ {"MOVX @R0,A",1,0},
205 		/* 91 */ {"MOVX @R1,A",1,0},
206 		/* 92 */ {"JB4",2,3},
207 		/* 93 */ {"RETR",1,0},
208 
209 		/* 94 */ {"CALL",2,2},
210 		/* 95 */ {"CPL F0",1,0},
211 		/* 96 */ {"JNZ",2,3},
212 		/* 97 */ {"CLR C",1,0},
213 
214 		/* 98 */ {"ANL BUS,",2,1},
215 		/* 99 */ {"ANL P1,",2,1},
216 		/* 9A */ {"ANL P2,",2,1},
217 		/* 9B */ {"ILL",1,0},
218 
219 		/* 9C */ {"ANLD P4,A",1,0},
220 		/* 9D */ {"ANLD P5,A",1,0},
221 		/* 9E */ {"ANLD P6,A",1,0},
222 		/* 9F */ {"ANLD P7,A",1,0},
223 
224 		/* A0 */ {"MOV @R0,A",1,0},
225 		/* A1 */ {"MOV @R1,A",1,0},
226 		/* A2 */ {"ILL",1,0},
227 		/* A3 */ {"MOVP A,@A",1,0},
228 
229 		/* A4 */ {"JMP",2,2},
230 		/* A5 */ {"CLR F1",1,0},
231 		/* A6 */ {"ILL",1,0},
232 		/* A7 */ {"CPL C",1,0},
233 
234 		/* A8 */ {"MOV R0,A",1,0},
235 		/* A9 */ {"MOV R1,A",1,0},
236 		/* AA */ {"MOV R2,A",1,0},
237 		/* AB */ {"MOV R3,A",1,0},
238 		/* AC */ {"MOV R4,A",1,0},
239 		/* AD */ {"MOV R5,A",1,0},
240 		/* AE */ {"MOV R6,A",1,0},
241 		/* AF */ {"MOV R7,A",1,0},
242 
243 		/* B0 */ {"MOV @R0,",2,1},
244 		/* B1 */ {"MOV @R1,",2,1},
245 		/* B2 */ {"JB5",2,3},
246 		/* B3 */ {"JMPP @A",1,0},
247 
248 		/* B4 */ {"CALL",2,2},
249 		/* B5 */ {"CPL F1",1,0},
250 		/* B6 */ {"JF0",2,3},
251 		/* B7 */ {"ILL",1,0},
252 
253 		/* B8 */ {"MOV R0,",2,1},
254 		/* B9 */ {"MOV R1,",2,1},
255 		/* BA */ {"MOV R2,",2,1},
256 		/* BB */ {"MOV R3,",2,1},
257 
258 		/* BC */ {"MOV R4,",2,1},
259 		/* BD */ {"MOV R5,",2,1},
260 		/* BE */ {"MOV R6,",2,1},
261 		/* BF */ {"MOV R7,",2,1},
262 
263 		/* C0 */ {"ILL",1,0},
264 		/* C1 */ {"ILL",1,0},
265 		/* C2 */ {"ILL",1,0},
266 		/* C3 */ {"ILL",1,0},
267 
268 		/* C4 */ {"JMP",2,2},
269 		/* C5 */ {"SEL RB0",1,0},
270 		/* C6 */ {"JZ",2,3},
271 		/* C7 */ {"MOV A,PSW",1,0},
272 
273 		/* C8 */ {"DEC R0",1,0},
274 		/* C9 */ {"DEC R1",1,0},
275 		/* CA */ {"DEC R2",1,0},
276 		/* CB */ {"DEC R3",1,0},
277 
278 		/* CC */ {"DEC R4",1,0},
279 		/* CD */ {"DEC R5",1,0},
280 		/* CE */ {"DEC R6",1,0},
281 		/* CF */ {"DEC R7",1,0},
282 
283 		/* D0 */ {"XRL A,@R0",1,0},
284 		/* D1 */ {"XRL A,@R1",1,0},
285 		/* D2 */ {"JB6",2,3},
286 		/* D3 */ {"XRL A,",2,1},
287 
288 		/* D4 */ {"CALL",2,2},
289 		/* D5 */ {"SEL RB1",1,0},
290 		/* D6 */ {"ILL",1,0},
291 		/* D7 */ {"MOV PSW,A",1,0},
292 
293 		/* D8 */ {"XRL A,R0",1,0},
294 		/* D9 */ {"XRL A,R1",1,0},
295 		/* DA */ {"XRL A,R2",1,0},
296 		/* DB */ {"XRL A,R3",1,0},
297 		/* DC */ {"XRL A,R4",1,0},
298 		/* DD */ {"XRL A,R5",1,0},
299 		/* DE */ {"XRL A,R6",1,0},
300 		/* DF */ {"XRL A,R7",1,0},
301 
302 		/* E0 */ {"ILL",1,0},
303 		/* E1 */ {"ILL",1,0},
304 		/* E2 */ {"ILL",1,0},
305 		/* E3 */ {"MOVP3 A,@A",1,0},
306 
307 		/* E4 */ {"JMP",2,2},
308 		/* E5 */ {"SEL MB0",1,0},
309 		/* E6 */ {"JNC",2,3},
310 		/* E7 */ {"RL A",1,0},
311 
312 		/* E8 */ {"DJNZ R0,",2,3},
313 		/* E9 */ {"DJNZ R1,",2,3},
314 		/* EA */ {"DJNZ R2,",2,3},
315 		/* EB */ {"DJNZ R3,",2,3},
316 		/* EC */ {"DJNZ R4,",2,3},
317 		/* ED */ {"DJNZ R5,",2,3},
318 		/* EE */ {"DJNZ R6,",2,3},
319 		/* EF */ {"DJNZ R7,",2,3},
320 
321 		/* F0 */ {"MOV A,@R0",1,0},
322 		/* F1 */ {"MOV A,@R1",1,0},
323 		/* F2 */ {"JB7",2,3},
324 		/* F3 */ {"ILL",1,0},
325 
326 		/* F4 */ {"CALL",2,2},
327 		/* F5 */ {"SEL MB1",1,0},
328 		/* F6 */ {"JC",2,3},
329 		/* F7 */ {"RLC A",1,0},
330 
331 		/* F8 */ {"MOV A,R0",1,0},
332 		/* F9 */ {"MOV A,R1",1,0},
333 		/* FA */ {"MOV A,R2",1,0},
334 		/* FB */ {"MOV A,R3",1,0},
335 		/* FC */ {"MOV A,R4",1,0},
336 		/* FD */ {"MOV A,R5",1,0},
337 		/* FE */ {"MOV A,R6",1,0},
338 		/* FF */ {"MOV A,R7",1,0}
339 
340 };
341 
342