summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/hp9845_io/98046.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/hp9845_io/98046.h')
-rw-r--r--src/devices/bus/hp9845_io/98046.h43
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