diff options
Diffstat (limited to 'src/devices/bus/hp9845_io/98046.h')
-rw-r--r-- | src/devices/bus/hp9845_io/98046.h | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/src/devices/bus/hp9845_io/98046.h b/src/devices/bus/hp9845_io/98046.h index c58b72fd857..dd19c6f29a0 100644 --- a/src/devices/bus/hp9845_io/98046.h +++ b/src/devices/bus/hp9845_io/98046.h @@ -17,6 +17,7 @@ #include "cpu/mcs48/mcs48.h" #include "machine/z80sio.h" #include "bus/rs232/rs232.h" +#include "machine/f4702.h" class hp98046_io_card_device : public device_t, public device_hp9845_io_interface { @@ -25,8 +26,8 @@ public: hp98046_io_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~hp98046_io_card_device(); - virtual DECLARE_READ16_MEMBER(reg_r) override; - virtual DECLARE_WRITE16_MEMBER(reg_w) override; + virtual uint16_t reg_r(address_space &space, offs_t offset) override; + virtual void reg_w(address_space &space, offs_t offset, uint16_t data) override; virtual bool has_dual_sc() const override; @@ -37,12 +38,13 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; private: required_device<i8048_device> m_cpu; required_device<z80sio_device> m_sio; required_device<rs232_port_device> m_rs232; + required_device<f4702_device> m_tx_brg; + required_device<f4702_device> m_rx_brg; required_ioport m_loopback_en; std::unique_ptr<uint8_t[]> m_ram; @@ -64,27 +66,27 @@ private: bool m_sio_int; uint8_t m_port_2; bool m_loopback; + bool m_last_rxc; + bool m_last_txc; - emu_timer *m_rxc_timer; - emu_timer *m_txc_timer; uint8_t m_rxc_sel; uint8_t m_txc_sel; - bool m_rxc; - bool m_txc; void cpu_program_map(address_map &map); void cpu_io_map(address_map &map); - DECLARE_READ8_MEMBER(ram_r); - DECLARE_READ8_MEMBER(cpu_r); - DECLARE_WRITE8_MEMBER(cpu_w); - DECLARE_READ8_MEMBER(p1_r); - DECLARE_WRITE8_MEMBER(p2_w); - DECLARE_WRITE_LINE_MEMBER(sio_int_w); - DECLARE_WRITE_LINE_MEMBER(sio_txd_w); - DECLARE_WRITE_LINE_MEMBER(rs232_rxd_w); - DECLARE_WRITE_LINE_MEMBER(rs232_dcd_w); - DECLARE_WRITE_LINE_MEMBER(rs232_dsr_w); - DECLARE_WRITE_LINE_MEMBER(rs232_cts_w); + uint8_t ram_r(offs_t offset); + uint8_t cpu_r(offs_t offset); + void cpu_w(offs_t offset, uint8_t data); + uint8_t p1_r(); + void p2_w(uint8_t data); + void sio_int_w(int state); + void sio_txd_w(int state); + void rs232_rxd_w(int state); + void rs232_dcd_w(int state); + void rs232_dsr_w(int state); + void rs232_cts_w(int state); + void rs232_rxc_w(int state); + void rs232_txc_w(int state); bool rx_fifo_flag() const; bool tx_fifo_flag() const; void update_flg(); @@ -94,7 +96,10 @@ private: void load_tx_fifo(); void set_r6_r7_pending(bool state); uint8_t get_hs_input() const; - void set_brgs(uint8_t sel); + void rxc_w(int state); + void txc_w(int state); + TIMER_CALLBACK_MEMBER(sync_rx_im_w); + TIMER_CALLBACK_MEMBER(sync_tx_im_w); }; // device type definitions |