diff options
Diffstat (limited to 'src/devices/cpu/mcs96/mcs96.cpp')
-rw-r--r-- | src/devices/cpu/mcs96/mcs96.cpp | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/devices/cpu/mcs96/mcs96.cpp b/src/devices/cpu/mcs96/mcs96.cpp index a6f5ecd9638..877fff833bd 100644 --- a/src/devices/cpu/mcs96/mcs96.cpp +++ b/src/devices/cpu/mcs96/mcs96.cpp @@ -42,7 +42,20 @@ void mcs96_device::device_start() state_add(STATE_GENFLAGS, "GENFLAGS", PSW).formatstr("%16s").noshow(); state_add(MCS96_PC, "PC", PC); state_add(MCS96_PSW, "PSW", PSW); - state_add(MCS96_R, "SP", register_file[0]); + state_add(MCS96_INT_PENDING, "INT_PENDING", pending_irq); + state_add(MCS96_SP, "SP", register_file[0]); + state_add(MCS96_AX, "AX", register_file[2]); + state_add(MCS96_DX, "DX", register_file[3]); + state_add(MCS96_BX, "BX", register_file[4]); + state_add(MCS96_CX, "CX", register_file[5]); + state_add(MCS96_AL, "AL", reinterpret_cast<u8 *>(®ister_file[2])[BYTE_XOR_LE(0)]).noshow(); + state_add(MCS96_AH, "AH", reinterpret_cast<u8 *>(®ister_file[2])[BYTE_XOR_LE(1)]).noshow(); + state_add(MCS96_DL, "DL", reinterpret_cast<u8 *>(®ister_file[3])[BYTE_XOR_LE(0)]).noshow(); + state_add(MCS96_DH, "DH", reinterpret_cast<u8 *>(®ister_file[3])[BYTE_XOR_LE(1)]).noshow(); + state_add(MCS96_BL, "BL", reinterpret_cast<u8 *>(®ister_file[4])[BYTE_XOR_LE(0)]).noshow(); + state_add(MCS96_BH, "BH", reinterpret_cast<u8 *>(®ister_file[4])[BYTE_XOR_LE(1)]).noshow(); + state_add(MCS96_CL, "CL", reinterpret_cast<u8 *>(®ister_file[5])[BYTE_XOR_LE(0)]).noshow(); + state_add(MCS96_CH, "CH", reinterpret_cast<u8 *>(®ister_file[5])[BYTE_XOR_LE(1)]).noshow(); } void mcs96_device::device_reset() @@ -84,6 +97,28 @@ void mcs96_device::check_irq() irq_requested = (PSW & pending_irq) && (PSW & F_I); } +void mcs96_device::int_mask_w(u8 data) +{ + PSW = (PSW & 0xff00) | data; + check_irq(); +} + +u8 mcs96_device::int_mask_r() +{ + return PSW; +} + +void mcs96_device::int_pending_w(u8 data) +{ + pending_irq = data; + check_irq(); +} + +u8 mcs96_device::int_pending_r() +{ + return pending_irq; +} + void mcs96_device::execute_run() { internal_update(total_cycles()); |