diff options
author | 2021-04-20 10:06:33 -0400 | |
---|---|---|
committer | 2021-04-20 10:06:33 -0400 | |
commit | cb41f89eeb00b0984c3364da2c9157400b05b676 (patch) | |
tree | f8be8e4f1f4e84f8bf19fa8c07588a99434a46bf /src/devices/cpu/rx01/rx01.h | |
parent | dd55931072bad4f41eac66ea7da50619a2105a92 (diff) |
rx01: Preliminary, untested host interface
Diffstat (limited to 'src/devices/cpu/rx01/rx01.h')
-rw-r--r-- | src/devices/cpu/rx01/rx01.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/devices/cpu/rx01/rx01.h b/src/devices/cpu/rx01/rx01.h index 2b990e96867..b8806c354f3 100644 --- a/src/devices/cpu/rx01/rx01.h +++ b/src/devices/cpu/rx01/rx01.h @@ -31,17 +31,35 @@ public: FF_FLAG = 1 << 8 }; + enum { + RX_RUN = 0, + RX_12_BIT, + RX_DATA + }; + // device type constructor rx01_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + // callback configuration + auto error_callback() { return m_interface_callback[0].bind(); } + auto transfer_request_callback() { return m_interface_callback[1].bind(); } + auto out_callback() { return m_interface_callback[2].bind(); } + auto done_callback() { return m_interface_callback[3].bind(); } + auto shift_callback() { return m_interface_callback[4].bind(); } + + // serial input for controller + DECLARE_READ_LINE_MEMBER(data_r) { return !data_in(); } + protected: // device-level overrides + virtual void device_resolve_objects() override; virtual void device_start() override; virtual void device_reset() override; // device_execute_interface overrides virtual u64 execute_clocks_to_cycles(u64 clocks) const noexcept override { return (clocks + 4 - 1) / 4; } virtual u64 execute_cycles_to_clocks(u64 cycles) const noexcept override { return (cycles * 4); } + virtual void execute_set_input(int linenum, int state) override; virtual void execute_run() override; // device_disasm_interface overrides @@ -73,6 +91,9 @@ private: memory_access<12, 0, 0, ENDIANNESS_LITTLE>::cache m_inst_cache; memory_access<10, 0, 0, ENDIANNESS_LITTLE>::cache m_data_cache; + // interface output callbacks + devcb_write_line::array<5> m_interface_callback; + // internal state u16 m_pc; u16 m_ppc; @@ -87,6 +108,9 @@ private: u16 m_bar; u16 m_crc; u16 m_flags; + bool m_run; + bool m_12_bit; + bool m_data_in; bool m_unit; bool m_load_head; bool m_syn_index; |