diff options
author | MetalliC <0vetal0@gmail.com> | 2020-07-17 00:47:47 +0300 |
---|---|---|
committer | MetalliC <0vetal0@gmail.com> | 2020-07-17 00:47:47 +0300 |
commit | 8513b87112a2a101ba59cc2ceb2bbdd9520928d0 (patch) | |
tree | d8a00c6a23b008cd3cf9a3fc61061dfb70890f2e /src/devices/bus | |
parent | 3ccbacd197514a505cc406b055d270ca3c254267 (diff) |
bus/spectrum/opus.cpp fix activation logic
Diffstat (limited to 'src/devices/bus')
-rw-r--r-- | src/devices/bus/spectrum/opus.cpp | 10 | ||||
-rw-r--r-- | src/devices/bus/spectrum/opus.h | 3 |
2 files changed, 5 insertions, 8 deletions
diff --git a/src/devices/bus/spectrum/opus.cpp b/src/devices/bus/spectrum/opus.cpp index 6b50fefeb01..8b1834d950a 100644 --- a/src/devices/bus/spectrum/opus.cpp +++ b/src/devices/bus/spectrum/opus.cpp @@ -139,7 +139,6 @@ void spectrum_opus_device::device_start() save_item(NAME(m_romcs)); save_item(NAME(m_ram)); - save_item(NAME(m_last_pc)); } //------------------------------------------------- @@ -149,7 +148,6 @@ void spectrum_opus_device::device_start() void spectrum_opus_device::device_reset() { m_romcs = 0; - m_last_pc = 0x0000; } @@ -162,13 +160,13 @@ READ_LINE_MEMBER(spectrum_opus_device::romcs) return m_romcs | m_exp->romcs(); } -void spectrum_opus_device::pre_opcode_fetch(offs_t offset) +void spectrum_opus_device::post_opcode_fetch(offs_t offset) { - m_exp->pre_opcode_fetch(offset); + m_exp->post_opcode_fetch(offset); if (!machine().side_effects_disabled()) { - switch (m_last_pc) + switch (offset) { case 0x0008: case 0x0048: case 0x1708: m_romcs = 1; @@ -178,7 +176,6 @@ void spectrum_opus_device::pre_opcode_fetch(offs_t offset) break; } } - m_last_pc = offset; } uint8_t spectrum_opus_device::iorq_r(offs_t offset) @@ -274,6 +271,7 @@ void spectrum_opus_device::pia_out_a(uint8_t data) void spectrum_opus_device::pia_out_b(uint8_t data) { + m_centronics->write_data0(BIT(data, 0)); m_centronics->write_data1(BIT(data, 1)); m_centronics->write_data2(BIT(data, 2)); m_centronics->write_data3(BIT(data, 3)); diff --git a/src/devices/bus/spectrum/opus.h b/src/devices/bus/spectrum/opus.h index 43fc404d9b3..674f246bd9d 100644 --- a/src/devices/bus/spectrum/opus.h +++ b/src/devices/bus/spectrum/opus.h @@ -42,7 +42,7 @@ protected: virtual ioport_constructor device_input_ports() const override; virtual const tiny_rom_entry *device_rom_region() const override; - virtual void pre_opcode_fetch(offs_t offset) override; + virtual void post_opcode_fetch(offs_t offset) override; virtual uint8_t mreq_r(offs_t offset) override; virtual void mreq_w(offs_t offset, uint8_t data) override; virtual uint8_t iorq_r(offs_t offset) override; @@ -65,7 +65,6 @@ private: int m_romcs; uint8_t m_ram[4 * 1024]; - offs_t m_last_pc; }; |