summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m6800/m6800.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/m6800/m6800.h')
-rw-r--r--src/devices/cpu/m6800/m6800.h98
1 files changed, 48 insertions, 50 deletions
diff --git a/src/devices/cpu/m6800/m6800.h b/src/devices/cpu/m6800/m6800.h
index 1601a62b798..4cddbaa9e34 100644
--- a/src/devices/cpu/m6800/m6800.h
+++ b/src/devices/cpu/m6800/m6800.h
@@ -15,18 +15,14 @@ enum
enum
{
- M6800_IRQ_LINE = 0 /* IRQ line number */
-};
+ M6800_IRQ_LINE = 0, // IRQ line number
-enum
-{
- M6802_IRQ_LINE = M6800_IRQ_LINE
+ M6800_LINE_MAX
};
-enum
-{
- M6808_IRQ_LINE = M6800_IRQ_LINE
-};
+#define M6802_IRQ_LINE M6800_IRQ_LINE
+#define M6808_IRQ_LINE M6800_IRQ_LINE
+
class m6800_cpu_device : public cpu_device
{
@@ -34,27 +30,28 @@ public:
typedef void (m6800_cpu_device::*op_func)();
// construction/destruction
- m6800_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ m6800_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
protected:
enum
{
- M6800_WAI = 8, /* set when WAI is waiting for an interrupt */
- M6800_SLP = 0x10 /* HD63701 only */
+ M6800_WAI = 8, // set when WAI is waiting for an interrupt
+ M6800_SLP = 0x10 // HD63701 only
};
- m6800_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const m6800_cpu_device::op_func *insn, const uint8_t *cycles, address_map_constructor internal);
+ m6800_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, const m6800_cpu_device::op_func *insn, const u8 *cycles, address_map_constructor internal);
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
// device_execute_interface overrides
- virtual uint32_t execute_min_cycles() const noexcept override { return 1; }
- virtual uint32_t execute_max_cycles() const noexcept override { return 12; }
- virtual uint32_t execute_input_lines() const noexcept override { return 2; }
+ virtual u32 execute_min_cycles() const noexcept override { return 1; }
+ virtual u32 execute_max_cycles() const noexcept override { return 12; }
+ virtual u32 execute_input_lines() const noexcept override { return 2; }
virtual bool execute_input_edge_triggered(int inputnum) const noexcept override { return inputnum == INPUT_LINE_NMI; }
virtual void execute_run() override;
+ virtual void execute_one();
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
@@ -70,44 +67,45 @@ protected:
address_space_config m_decrypted_opcodes_config;
address_space_config m_io_config;
- PAIR m_ppc; /* Previous program counter */
- PAIR m_pc; /* Program counter */
- PAIR m_s; /* Stack pointer */
- PAIR m_x; /* Index register */
- PAIR m_d; /* Accumulators */
- uint8_t m_cc; /* Condition codes */
- uint8_t m_wai_state; /* WAI opcode state ,(or sleep opcode state) */
- uint8_t m_nmi_state; /* NMI line state */
- uint8_t m_nmi_pending; /* NMI pending */
- uint8_t m_irq_state[3]; /* IRQ line state [IRQ1,TIN,SC1] */
-
- /* Memory spaces */
+ PAIR m_ppc; // Previous program counter
+ PAIR m_pc; // Program counter
+ PAIR m_s; // Stack pointer
+ PAIR m_x; // Index register
+ PAIR m_d; // Accumulators
+ PAIR m_ea; // effective address (temporary variable)
+ u8 m_cc; // Condition codes
+ u8 m_wai_state; // WAI opcode state (or sleep opcode state)
+ u8 m_nmi_state; // NMI line state
+ u8 m_nmi_pending; // NMI pending
+ u8 m_irq_state[5]; // IRQ line state [IRQ1,TIN,IS3,..]
+
+ // memory spaces
memory_access<16, 0, 0, ENDIANNESS_BIG>::cache m_cprogram, m_copcodes;
memory_access<16, 0, 0, ENDIANNESS_BIG>::specific m_program;
const op_func *m_insn;
- const uint8_t *m_cycles; /* clock cycle of instruction table */
+ const u8 *m_cycles; // clock cycle of instruction table
- int m_icount;
+ int m_icount;
- PAIR m_ea; /* effective address */
-
- static const uint8_t flags8i[256];
- static const uint8_t flags8d[256];
- static const uint8_t cycles_6800[256];
- static const uint8_t cycles_nsc8105[256];
+ static const u8 flags8i[256];
+ static const u8 flags8d[256];
+ static const u8 cycles_6800[256];
+ static const u8 cycles_nsc8105[256];
static const op_func m6800_insn[256];
static const op_func nsc8105_insn[256];
- uint32_t RM16(uint32_t Addr );
- void WM16(uint32_t Addr, PAIR *p );
- void enter_interrupt(const char *message,uint16_t irq_vector);
- virtual void m6800_check_irq2() { }
- void CHECK_IRQ_LINES();
+ u32 RM16(u32 Addr);
+ void WM16(u32 Addr, PAIR *p);
+ void enter_interrupt(const char *message, u16 irq_vector);
+ virtual bool check_irq1_enabled();
+ virtual void check_irq2() { }
+ virtual void check_irq_lines();
+
virtual void increment_counter(int amount);
- virtual void EAT_CYCLES();
- virtual void CLEANUP_COUNTERS() { }
- virtual void TAKE_TRAP() { }
+ virtual void eat_cycles();
+ virtual void cleanup_counters() { }
+ virtual void take_trap() { }
void aba();
void abx();
@@ -364,15 +362,15 @@ protected:
class m6802_cpu_device : public m6800_cpu_device
{
public:
- m6802_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ m6802_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
void set_ram_enable(bool re) { assert(!configured()); m_ram_enable = re; }
protected:
- m6802_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const m6800_cpu_device::op_func *insn, const uint8_t *cycles);
+ m6802_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, const m6800_cpu_device::op_func *insn, const u8 *cycles);
- 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 u64 execute_clocks_to_cycles(u64 clocks) const noexcept override { return (clocks + 4 - 1) / 4; }
+ virtual u64 execute_cycles_to_clocks(u64 cycles) const noexcept override { return (cycles * 4); }
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
bool m_ram_enable;
@@ -385,7 +383,7 @@ private:
class m6808_cpu_device : public m6802_cpu_device
{
public:
- m6808_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ m6808_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
protected:
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
@@ -396,7 +394,7 @@ protected:
class nsc8105_cpu_device : public m6802_cpu_device
{
public:
- nsc8105_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nsc8105_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
protected:
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;