trunk/src/emu/cpu/m6805/m6805.c
| r31241 | r31242 | |
| 86 | 86 | /* macros to access memory */ |
| 87 | 87 | #define IMMBYTE(b) {b = M_RDOP_ARG(PC++);} |
| 88 | 88 | #define IMMWORD(w) {w.d = 0; w.b.h = M_RDOP_ARG(PC); w.b.l = M_RDOP_ARG(PC+1); PC+=2;} |
| 89 | #define SKIPBYTE() {M_RDOP_ARG(PC++);} |
| 89 | 90 | |
| 90 | 91 | #define PUSHBYTE(b) wr_s_handler_b(&b) |
| 91 | 92 | #define PUSHWORD(w) wr_s_handler_w(&w) |
| r31241 | r31242 | |
| 192 | 193 | #define IDX1BYTE(b) {INDEXED1; b = RM(EAD);} |
| 193 | 194 | #define IDX2BYTE(b) {INDEXED2; b = RM(EAD);} |
| 194 | 195 | /* Macros for branch instructions */ |
| 195 | | #define BRANCH(f) { UINT8 t; IMMBYTE(t); if(f) { PC += SIGNED(t); if (t == 0xfe) { /* speed up busy loops */ if(m_icount > 0) m_icount = 0; } } } |
| 196 | #define BRANCH(f) { UINT8 t; IMMBYTE(t); if(f) { PC += SIGNED(t); } } |
| 196 | 197 | |
| 197 | 198 | /* what they say it is ... */ |
| 198 | 199 | const UINT8 m6805_base_device::m_cycles1[] = |
| r31241 | r31242 | |
| 414 | 415 | |
| 415 | 416 | void m6805_base_device::device_start() |
| 416 | 417 | { |
| 418 | m_program = &space(AS_PROGRAM); |
| 419 | m_direct = &m_program->direct(); |
| 420 | |
| 421 | // set our instruction counter |
| 422 | m_icountptr = &m_icount; |
| 423 | |
| 417 | 424 | // register our state for the debugger |
| 418 | 425 | astring tempstr; |
| 419 | 426 | state_add(STATE_GENPC, "GENPC", m_pc.w.l).noshow(); |
| r31241 | r31242 | |
| 424 | 431 | state_add(M6805_X, "X", m_x).mask(0xff); |
| 425 | 432 | state_add(M6805_CC, "CC", m_cc).mask(0xff); |
| 426 | 433 | |
| 434 | // register for savestates |
| 435 | save_item(NAME(EA)); |
| 436 | save_item(NAME(SP_MASK)); |
| 437 | save_item(NAME(SP_LOW)); |
| 427 | 438 | save_item(NAME(A)); |
| 428 | 439 | save_item(NAME(PC)); |
| 429 | 440 | save_item(NAME(S)); |
| r31241 | r31242 | |
| 431 | 442 | save_item(NAME(CC)); |
| 432 | 443 | save_item(NAME(m_pending_interrupts)); |
| 433 | 444 | save_item(NAME(m_irq_state)); |
| 434 | | |
| 435 | | m_program = &space(AS_PROGRAM); |
| 436 | | m_direct = &m_program->direct(); |
| 437 | | |
| 438 | | // set our instruction counter |
| 439 | | m_icountptr = &m_icount; |
| 440 | | m_icount = 50000; |
| 445 | save_item(NAME(m_nmi_state)); |
| 441 | 446 | } |
| 442 | 447 | |
| 443 | 448 | |
| r31241 | r31242 | |
| 456 | 461 | memset(m_irq_state, 0, sizeof(int) * 9); |
| 457 | 462 | m_nmi_state = 0; |
| 458 | 463 | |
| 459 | | m_icount = 50000; |
| 460 | | |
| 461 | 464 | m_program = &space(AS_PROGRAM); |
| 462 | 465 | m_direct = &m_program->direct(); |
| 463 | 466 | |