diff options
Diffstat (limited to 'src/devices/cpu/h8/gt913.h')
-rw-r--r-- | src/devices/cpu/h8/gt913.h | 60 |
1 files changed, 46 insertions, 14 deletions
diff --git a/src/devices/cpu/h8/gt913.h b/src/devices/cpu/h8/gt913.h index 3269ab7eafe..878dbc48ebe 100644 --- a/src/devices/cpu/h8/gt913.h +++ b/src/devices/cpu/h8/gt913.h @@ -21,24 +21,47 @@ #include "machine/gt913_kbd.h" #include "machine/gt913_snd.h" -class gt913_device : public h8_device { +class gt913_device : public h8_device, public device_mixer_interface { public: - gt913_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + gt913_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; - void uart_rate_w(uint8_t data); - void uart_control_w(uint8_t data); - uint8_t uart_control_r(); + auto read_port1() { return m_read_port [PORT_1].bind(); } + auto write_port1() { return m_write_port[PORT_1].bind(); } + auto read_port2() { return m_read_port [PORT_2].bind(); } + auto write_port2() { return m_write_port[PORT_2].bind(); } + auto read_port3() { return m_read_port [PORT_3].bind(); } + auto write_port3() { return m_write_port[PORT_3].bind(); } + auto read_port4() { return m_read_port [PORT_4].bind(); } + auto write_port4() { return m_write_port[PORT_4].bind(); } + + void uart_rate_w(u8 data); + void uart_control_w(offs_t offset, u8 data); + u8 uart_control_r(offs_t offset); + + void data_w(offs_t offset, u8 data); + u8 data_r(offs_t offset); + + void syscr_w(u8 data); + u8 syscr_r(); protected: + /* indirect reads/writes with banking support */ + u8 read8ib(u32 adr); + void write8ib(u32 adr, u8 data); + u16 read16ib(u32 adr); + void write16ib(u32 adr, u16 data); virtual void update_irq_filter() override; virtual void interrupt_taken() override; - virtual void internal_update(uint64_t current_time) override; + virtual void internal_update(u64 current_time) override; + virtual void notify_standby(int state) override; virtual void irq_setup() override; virtual void execute_set_input(int inputnum, int state) override; + virtual space_config_vector memory_space_config() const override; + virtual void device_add_mconfig(machine_config &config) override; void map(address_map &map); @@ -49,20 +72,32 @@ protected: virtual void do_exec_partial() override; #define O(o) void o ## _full(); void o ## _partial() - O(ldbank_imm2l_bankl); O(ldbank_imm4l_bankh); O(ldbank_r8l_bankl); O(ldbank_r8l_bankh); + O(ldc_imm6l_ccr); + O(ldbank_imm6l_bankl); O(ldbank_imm6l_bankh); O(ldbank_r8l_bankl); O(ldbank_r8l_bankh); - O(dispatch_6600); O(dispatch_7000); O(dispatch_7200); + O(jmp_abs22e); + + O(mov_b_r16ih_r8l); O(mov_w_r16ih_r16l); O(mov_b_r16ph_r8l); O(mov_w_r16ph_r16l); + O(mov_b_r8l_r16ih); O(mov_w_r16l_r16ih); O(mov_b_r8l_pr16h); O(mov_w_r16l_pr16h); + O(mov_b_r16d16h_r8l); O(mov_w_r16d16h_r16l); O(mov_b_r8l_r16d16h); O(mov_w_r16l_r16d16h); + + O(dispatch_6000); O(dispatch_6100); O(dispatch_6200); O(dispatch_6300); + O(dispatch_6400); O(dispatch_6500); O(dispatch_6600); O(dispatch_6700); + O(dispatch_7000); O(dispatch_7100); O(dispatch_7200); O(dispatch_7300); + O(dispatch_7400); O(dispatch_7500); O(dispatch_7600); O(dispatch_7700); #undef O required_memory_region m_rom; - required_memory_bank m_bank; - uint16_t m_banknum; + address_space_config m_data_config; + memory_access<32, 1, 0, ENDIANNESS_BIG>::specific m_data; + u16 m_banknum; + u8 m_syscr; required_device<gt913_intc_device> m_intc; /* sound */ - required_device<gt913_sound_hle_device> m_sound; + required_device<gt913_sound_device> m_sound; /* key controller */ required_device<gt913_kbd_hle_device> m_kbd; @@ -70,9 +105,6 @@ protected: /* misc. I/O (timers, ADCs) */ required_device<gt913_io_hle_device> m_io_hle; - /* serial port */ - required_device<h8_sci_device> m_sci; - /* 3x 8-bit I/O ports */ required_device_array<h8_port_device, 3> m_port; }; |