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