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