trunk/src/emu/cpu/pps4/pps4dasm.c
| r242244 | r242245 | |
| 33 | 33 | t_I4c = 1 << 8, /* immediate 4 bit constant, complemented */ |
| 34 | 34 | t_I4p = 1 << 9, /* immediate 4 bit offset into page 3 */ |
| 35 | 35 | t_I6p = 1 << 10, /* immediate 6 bit constant; address in current page */ |
| 36 | | t_I8 = 1 << 11, /* immediate 8 bit constant (I/O port number) */ |
| 37 | | t_I8c = 1 << 12, /* immediate 8 bit constant inverted */ |
| 38 | | t_OVER = 1 << 13, /* Debugger step over (CALL) */ |
| 39 | | t_OUT = 1 << 14 /* Debugger step out (RETURN) */ |
| 36 | t_I6i = 1 << 11, /* immediate 6 bit indirect page 3 offset (16 ... 63) + followed by page 1 address */ |
| 37 | t_I8 = 1 << 12, /* immediate 8 bit constant (I/O port number) */ |
| 38 | t_I8c = 1 << 13, /* immediate 8 bit constant inverted */ |
| 39 | t_OVER = 1 << 14, /* Debugger step over (CALL) */ |
| 40 | t_OUT = 1 << 15 /* Debugger step out (RETURN) */ |
| 40 | 41 | } pps4_token_e; |
| 41 | 42 | |
| 42 | 43 | static const char *token_str[t_COUNT] = { |
| r242244 | r242245 | |
| 314 | 315 | /* ce */ t_LB | t_I4p, |
| 315 | 316 | /* cf */ t_LB | t_I4p, |
| 316 | 317 | |
| 317 | | /* d0 */ t_TM | t_I6p | t_OVER, |
| 318 | | /* d1 */ t_TM | t_I6p | t_OVER, |
| 319 | | /* d2 */ t_TM | t_I6p | t_OVER, |
| 320 | | /* d3 */ t_TM | t_I6p | t_OVER, |
| 321 | | /* d4 */ t_TM | t_I6p | t_OVER, |
| 322 | | /* d5 */ t_TM | t_I6p | t_OVER, |
| 323 | | /* d6 */ t_TM | t_I6p | t_OVER, |
| 324 | | /* d7 */ t_TM | t_I6p | t_OVER, |
| 325 | | /* d8 */ t_TM | t_I6p | t_OVER, |
| 326 | | /* d9 */ t_TM | t_I6p | t_OVER, |
| 327 | | /* da */ t_TM | t_I6p | t_OVER, |
| 328 | | /* db */ t_TM | t_I6p | t_OVER, |
| 329 | | /* dc */ t_TM | t_I6p | t_OVER, |
| 330 | | /* dd */ t_TM | t_I6p | t_OVER, |
| 331 | | /* de */ t_TM | t_I6p | t_OVER, |
| 332 | | /* df */ t_TM | t_I6p | t_OVER, |
| 318 | /* d0 */ t_TM | t_I6i | t_OVER, |
| 319 | /* d1 */ t_TM | t_I6i | t_OVER, |
| 320 | /* d2 */ t_TM | t_I6i | t_OVER, |
| 321 | /* d3 */ t_TM | t_I6i | t_OVER, |
| 322 | /* d4 */ t_TM | t_I6i | t_OVER, |
| 323 | /* d5 */ t_TM | t_I6i | t_OVER, |
| 324 | /* d6 */ t_TM | t_I6i | t_OVER, |
| 325 | /* d7 */ t_TM | t_I6i | t_OVER, |
| 326 | /* d8 */ t_TM | t_I6i | t_OVER, |
| 327 | /* d9 */ t_TM | t_I6i | t_OVER, |
| 328 | /* da */ t_TM | t_I6i | t_OVER, |
| 329 | /* db */ t_TM | t_I6i | t_OVER, |
| 330 | /* dc */ t_TM | t_I6i | t_OVER, |
| 331 | /* dd */ t_TM | t_I6i | t_OVER, |
| 332 | /* de */ t_TM | t_I6i | t_OVER, |
| 333 | /* df */ t_TM | t_I6i | t_OVER, |
| 333 | 334 | |
| 334 | | /* e0 */ t_TM | t_I6p | t_OVER, |
| 335 | | /* e1 */ t_TM | t_I6p | t_OVER, |
| 336 | | /* e2 */ t_TM | t_I6p | t_OVER, |
| 337 | | /* e3 */ t_TM | t_I6p | t_OVER, |
| 338 | | /* e4 */ t_TM | t_I6p | t_OVER, |
| 339 | | /* e5 */ t_TM | t_I6p | t_OVER, |
| 340 | | /* e6 */ t_TM | t_I6p | t_OVER, |
| 341 | | /* e7 */ t_TM | t_I6p | t_OVER, |
| 342 | | /* e8 */ t_TM | t_I6p | t_OVER, |
| 343 | | /* e9 */ t_TM | t_I6p | t_OVER, |
| 344 | | /* ea */ t_TM | t_I6p | t_OVER, |
| 345 | | /* eb */ t_TM | t_I6p | t_OVER, |
| 346 | | /* ec */ t_TM | t_I6p | t_OVER, |
| 347 | | /* ed */ t_TM | t_I6p | t_OVER, |
| 348 | | /* ee */ t_TM | t_I6p | t_OVER, |
| 349 | | /* ef */ t_TM | t_I6p | t_OVER, |
| 335 | /* e0 */ t_TM | t_I6i | t_OVER, |
| 336 | /* e1 */ t_TM | t_I6i | t_OVER, |
| 337 | /* e2 */ t_TM | t_I6i | t_OVER, |
| 338 | /* e3 */ t_TM | t_I6i | t_OVER, |
| 339 | /* e4 */ t_TM | t_I6i | t_OVER, |
| 340 | /* e5 */ t_TM | t_I6i | t_OVER, |
| 341 | /* e6 */ t_TM | t_I6i | t_OVER, |
| 342 | /* e7 */ t_TM | t_I6i | t_OVER, |
| 343 | /* e8 */ t_TM | t_I6i | t_OVER, |
| 344 | /* e9 */ t_TM | t_I6i | t_OVER, |
| 345 | /* ea */ t_TM | t_I6i | t_OVER, |
| 346 | /* eb */ t_TM | t_I6i | t_OVER, |
| 347 | /* ec */ t_TM | t_I6i | t_OVER, |
| 348 | /* ed */ t_TM | t_I6i | t_OVER, |
| 349 | /* ee */ t_TM | t_I6i | t_OVER, |
| 350 | /* ef */ t_TM | t_I6i | t_OVER, |
| 350 | 351 | |
| 351 | | /* f0 */ t_TM | t_I6p | t_OVER, |
| 352 | | /* f1 */ t_TM | t_I6p | t_OVER, |
| 353 | | /* f2 */ t_TM | t_I6p | t_OVER, |
| 354 | | /* f3 */ t_TM | t_I6p | t_OVER, |
| 355 | | /* f4 */ t_TM | t_I6p | t_OVER, |
| 356 | | /* f5 */ t_TM | t_I6p | t_OVER, |
| 357 | | /* f6 */ t_TM | t_I6p | t_OVER, |
| 358 | | /* f7 */ t_TM | t_I6p | t_OVER, |
| 359 | | /* f8 */ t_TM | t_I6p | t_OVER, |
| 360 | | /* f9 */ t_TM | t_I6p | t_OVER, |
| 361 | | /* fa */ t_TM | t_I6p | t_OVER, |
| 362 | | /* fb */ t_TM | t_I6p | t_OVER, |
| 363 | | /* fc */ t_TM | t_I6p | t_OVER, |
| 364 | | /* fd */ t_TM | t_I6p | t_OVER, |
| 365 | | /* fe */ t_TM | t_I6p | t_OVER, |
| 366 | | /* ff */ t_TM | t_I6p | t_OVER |
| 352 | /* f0 */ t_TM | t_I6i | t_OVER, |
| 353 | /* f1 */ t_TM | t_I6i | t_OVER, |
| 354 | /* f2 */ t_TM | t_I6i | t_OVER, |
| 355 | /* f3 */ t_TM | t_I6i | t_OVER, |
| 356 | /* f4 */ t_TM | t_I6i | t_OVER, |
| 357 | /* f5 */ t_TM | t_I6i | t_OVER, |
| 358 | /* f6 */ t_TM | t_I6i | t_OVER, |
| 359 | /* f7 */ t_TM | t_I6i | t_OVER, |
| 360 | /* f8 */ t_TM | t_I6i | t_OVER, |
| 361 | /* f9 */ t_TM | t_I6i | t_OVER, |
| 362 | /* fa */ t_TM | t_I6i | t_OVER, |
| 363 | /* fb */ t_TM | t_I6i | t_OVER, |
| 364 | /* fc */ t_TM | t_I6i | t_OVER, |
| 365 | /* fd */ t_TM | t_I6i | t_OVER, |
| 366 | /* fe */ t_TM | t_I6i | t_OVER, |
| 367 | /* ff */ t_TM | t_I6i | t_OVER |
| 367 | 368 | }; |
| 368 | 369 | |
| 369 | 370 | CPU_DISASSEMBLE( pps4 ) |
| r242244 | r242245 | |
| 374 | 375 | UINT32 tok = table[op]; |
| 375 | 376 | char *dst = 0; |
| 376 | 377 | |
| 377 | | if (0 == (tok & t_MASK)) |
| 378 | if (0 == (tok & t_MASK)) { |
| 378 | 379 | sprintf(buffer, "%s", token_str[tok & t_MASK]); |
| 379 | | else |
| 380 | } else { |
| 380 | 381 | dst = buffer + sprintf(buffer, "%-7s", token_str[tok & t_MASK]); |
| 382 | } |
| 381 | 383 | |
| 382 | 384 | if (tok & t_I3c) { |
| 383 | 385 | // 3 bit immediate, complemented |
| r242244 | r242245 | |
| 410 | 412 | dst += sprintf(dst, "%x", (PC & ~63) | i); |
| 411 | 413 | } |
| 412 | 414 | |
| 415 | if (tok & t_I6i) { |
| 416 | // 6 bit immediate offset into page 3 |
| 417 | UINT16 i6p3 = (3 << 6) | (op & 63); |
| 418 | // 8 bit absolute offset at 0x0100 |
| 419 | UINT16 addr = (1 << 8) | 0; // ROM[ip3] can't be reached!? |
| 420 | (void)addr; // avoid unused variable warning |
| 421 | dst += sprintf(dst, "[%x]", i6p3); |
| 422 | } |
| 423 | |
| 413 | 424 | if (tok & t_I8) { |
| 414 | 425 | // 8 bit immediate I/O port address |
| 415 | 426 | UINT8 arg = ARG(pc++); |