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