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