summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/i8085/i8085.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/i8085/i8085.h')
-rw-r--r--src/devices/cpu/i8085/i8085.h38
1 files changed, 15 insertions, 23 deletions
diff --git a/src/devices/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h
index 5378a712e5e..711f6add7ff 100644
--- a/src/devices/cpu/i8085/i8085.h
+++ b/src/devices/cpu/i8085/i8085.h
@@ -61,7 +61,7 @@ public:
auto out_sod_func() { return m_out_sod_func.bind(); }
protected:
- i8085a_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int cputype);
+ i8085a_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
// device-level overrides
virtual void device_config_complete() override;
@@ -91,14 +91,6 @@ protected:
// device_disasm_interface overrides
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
- enum
- {
- CPUTYPE_8080 = 0,
- CPUTYPE_8080A,
- CPUTYPE_8085A
- };
-
-private:
address_space_config m_program_config;
address_space_config m_io_config;
address_space_config m_opcode_config;
@@ -110,10 +102,6 @@ private:
devcb_write_line m_out_sod_func;
clock_update_delegate m_clk_out_func;
- inline bool is_8080() { return m_cputype == CPUTYPE_8080 || m_cputype == CPUTYPE_8080A; }
- inline bool is_8085() { return m_cputype == CPUTYPE_8085A; }
- int m_cputype;
-
PAIR m_PC,m_SP,m_AF,m_BC,m_DE,m_HL,m_WZ;
u8 m_halt;
u8 m_im; /* interrupt mask (8085A only) */
@@ -142,6 +130,11 @@ private:
u8 lut_zs[256];
u8 lut_zsp[256];
+ virtual int ret_taken() { return 6; }
+ virtual int jmp_taken() { return 3; }
+ virtual int call_taken() { return 9; }
+ virtual bool is_8085() { return true; }
+
void set_sod(int state);
void set_inte(int state);
void set_status(u8 status);
@@ -176,30 +169,29 @@ private:
void op_rst(u8 v);
};
-
class i8080_cpu_device : public i8085a_cpu_device
{
public:
- // construction/destruction
i8080_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
protected:
+ i8080_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
virtual u32 execute_input_lines() const noexcept override { return 1; }
virtual u64 execute_clocks_to_cycles(u64 clocks) const noexcept override { return clocks; }
virtual u64 execute_cycles_to_clocks(u64 cycles) const noexcept override { return cycles; }
-};
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
+
+ virtual int jmp_taken() override { return 0; }
+ virtual int call_taken() override { return 6; }
+ virtual bool is_8085() override { return false; }
+};
-class i8080a_cpu_device : public i8085a_cpu_device
+class i8080a_cpu_device : public i8080_cpu_device
{
public:
- // construction/destruction
i8080a_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
-
-protected:
- virtual u32 execute_input_lines() const noexcept override { return 1; }
- virtual u64 execute_clocks_to_cycles(u64 clocks) const noexcept override { return clocks; }
- virtual u64 execute_cycles_to_clocks(u64 cycles) const noexcept override { return cycles; }
};