diff options
Diffstat (limited to 'src/devices/cpu/upd7810/upd7810.h')
-rw-r--r-- | src/devices/cpu/upd7810/upd7810.h | 53 |
1 files changed, 43 insertions, 10 deletions
diff --git a/src/devices/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h index 4b6315c1fd7..cdda6dd8077 100644 --- a/src/devices/cpu/upd7810/upd7810.h +++ b/src/devices/cpu/upd7810/upd7810.h @@ -86,10 +86,11 @@ public: void sck_w(int state); protected: - void upd_internal_128_ram_map(address_map &map); - void upd_internal_256_ram_map(address_map &map); - void upd_internal_4096_rom_128_ram_map(address_map &map); - void upd_internal_4096_rom_256_ram_map(address_map &map); + void upd_internal_128_ram_map(address_map &map) ATTR_COLD; + void upd_internal_256_ram_map(address_map &map) ATTR_COLD; + void upd_internal_4096_rom_128_ram_map(address_map &map) ATTR_COLD; + void upd_internal_4096_rom_256_ram_map(address_map &map) ATTR_COLD; + void upd_internal_16k_rom_256_ram_map(address_map &map) ATTR_COLD; // flags enum @@ -136,15 +137,14 @@ protected: upd7810_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map); // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; // device_execute_interface overrides virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 3 - 1) / 3; } virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 3); } virtual uint32_t execute_min_cycles() const noexcept override { return 1; } virtual uint32_t execute_max_cycles() const noexcept override { return 40; } - virtual uint32_t execute_input_lines() const noexcept override { return 2; } virtual bool execute_input_edge_triggered(int inputnum) const noexcept override { return true; } virtual void execute_run() override; virtual void execute_set_input(int inputnum, int state) override; @@ -200,6 +200,8 @@ protected: }; virtual void configure_ops(); + virtual uint8_t read_pc(); + virtual void write_pc(uint8_t data); static const struct opcode_s s_op48[256]; static const struct opcode_s s_op4C[256]; @@ -236,6 +238,7 @@ protected: static const struct opcode_s s_opXX_78c06[256]; address_space_config m_program_config; + memory_view m_ram_view; PAIR m_ppc; /* previous program counter */ PAIR m_pc; /* program counter */ @@ -1366,6 +1369,30 @@ protected: }; +class upd7811_device : public upd7810_device +{ +public: + // construction/destruction + upd7811_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +}; + + +class upd78c11_device : public upd78c10_device +{ +public: + // construction/destruction + upd78c11_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +}; + + +class upd78c14_device : public upd78c10_device +{ +public: + // construction/destruction + upd78c14_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +}; + + class upd7807_device : public upd7810_device { public: @@ -1385,7 +1412,8 @@ public: upd7801_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - virtual void device_reset() override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 2 - 1) / 2; } virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 2); } virtual void execute_set_input(int inputnum, int state) override; @@ -1393,6 +1421,8 @@ protected: virtual void handle_timers(int cycles) override; virtual void upd7810_take_irq() override; virtual void configure_ops() override; + virtual uint8_t read_pc() override; + virtual void write_pc(uint8_t data) override; }; @@ -1405,8 +1435,8 @@ public: protected: upd78c05_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map); - virtual void device_start() override; - virtual void device_reset() override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 4 - 1) / 4; } virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 4); } virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; @@ -1426,6 +1456,9 @@ public: DECLARE_DEVICE_TYPE(UPD7810, upd7810_device) DECLARE_DEVICE_TYPE(UPD78C10, upd78c10_device) +DECLARE_DEVICE_TYPE(UPD7811, upd7811_device) +DECLARE_DEVICE_TYPE(UPD78C11, upd78c11_device) +DECLARE_DEVICE_TYPE(UPD78C14, upd78c14_device) DECLARE_DEVICE_TYPE(UPD7807, upd7807_device) DECLARE_DEVICE_TYPE(UPD7801, upd7801_device) DECLARE_DEVICE_TYPE(UPD78C05, upd78c05_device) |