summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/mb88xx/mb88xx.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/mb88xx/mb88xx.h')
-rw-r--r--src/devices/cpu/mb88xx/mb88xx.h118
1 files changed, 57 insertions, 61 deletions
diff --git a/src/devices/cpu/mb88xx/mb88xx.h b/src/devices/cpu/mb88xx/mb88xx.h
index 2dbd4b63f86..9c21d99906e 100644
--- a/src/devices/cpu/mb88xx/mb88xx.h
+++ b/src/devices/cpu/mb88xx/mb88xx.h
@@ -54,7 +54,7 @@
enum
{
- MB88_PC=1,
+ MB88_PC = 1,
MB88_PA,
MB88_FLAGS,
MB88_SI,
@@ -94,9 +94,9 @@ public:
// SO: serial output
auto write_so() { return m_write_so.bind(); }
- void set_pla(uint8_t *pla) { m_PLA = pla; }
+ void set_pla(u8 *pla) { m_PLA = pla; }
- DECLARE_WRITE_LINE_MEMBER( clock_w );
+ void clock_w(int state);
void data_4bit(address_map &map);
void data_5bit(address_map &map);
@@ -105,21 +105,22 @@ public:
void program_10bit(address_map &map);
void program_11bit(address_map &map);
void program_9bit(address_map &map);
+
protected:
- mb88_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int data_width);
+ mb88_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int program_width, int data_width);
// 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 3; }
- virtual uint32_t execute_input_lines() const noexcept override { return 1; }
+ virtual u32 execute_min_cycles() const noexcept override { return 1; }
+ virtual u32 execute_max_cycles() const noexcept override { return 3; }
+ virtual u32 execute_input_lines() const noexcept override { return 1; }
virtual void execute_run() override;
virtual void execute_set_input(int inputnum, int state) override;
- virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 6 - 1) / 6; }
- virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 6); }
+ virtual u64 execute_clocks_to_cycles(u64 clocks) const noexcept override { return (clocks + 6 - 1) / 6; }
+ virtual u64 execute_cycles_to_clocks(u64 cycles) const noexcept override { return (cycles * 6); }
// device_memory_interface overrides
virtual space_config_vector memory_space_config() const override;
@@ -136,36 +137,36 @@ private:
address_space_config m_program_config;
address_space_config m_data_config;
- uint8_t m_PC; /* Program Counter: 6 bits */
- uint8_t m_PA; /* Page Address: 4 bits */
- uint16_t m_SP[4]; /* Stack is 4*10 bit addresses deep, but we also use 3 top bits per address to store flags during irq */
- uint8_t m_SI; /* Stack index: 2 bits */
- uint8_t m_A; /* Accumulator: 4 bits */
- uint8_t m_X; /* Index X: 4 bits */
- uint8_t m_Y; /* Index Y: 4 bits */
- uint8_t m_st; /* State flag: 1 bit */
- uint8_t m_zf; /* Zero flag: 1 bit */
- uint8_t m_cf; /* Carry flag: 1 bit */
- uint8_t m_vf; /* Timer overflow flag: 1 bit */
- uint8_t m_sf; /* Serial Full/Empty flag: 1 bit */
- uint8_t m_nf; /* Interrupt flag: 1 bit */
-
- /* Peripheral Control */
- uint8_t m_pio; /* Peripheral enable bits: 8 bits */
-
- /* Timer registers */
- uint8_t m_TH; /* Timer High: 4 bits */
- uint8_t m_TL; /* Timer Low: 4 bits */
- uint8_t m_TP; /* Timer Prescale: 6 bits? */
- uint8_t m_ctr; /* current external counter value */
-
- /* Serial registers */
- uint8_t m_SB; /* Serial buffer: 4 bits */
- uint16_t m_SBcount; /* number of bits received */
+ u8 m_PC; // Program Counter: 6 bits
+ u8 m_PA; // Page Address: 4 bits
+ u16 m_SP[4]; // Stack is 4*10 bit addresses deep, but we also use 3 top bits per address to store flags during irq
+ u8 m_SI; // Stack index: 2 bits
+ u8 m_A; // Accumulator: 4 bits
+ u8 m_X; // Index X: 4 bits
+ u8 m_Y; // Index Y: 4 bits
+ u8 m_st; // State flag: 1 bit
+ u8 m_zf; // Zero flag: 1 bit
+ u8 m_cf; // Carry flag: 1 bit
+ u8 m_vf; // Timer overflow flag: 1 bit
+ u8 m_sf; // Serial Full/Empty flag: 1 bit
+ u8 m_if; // Interrupt flag: 1 bit
+
+ // Peripheral Control
+ u8 m_pio; // Peripheral enable bits: 8 bits
+
+ // Timer registers
+ u8 m_TH; // Timer High: 4 bits
+ u8 m_TL; // Timer Low: 4 bits
+ u8 m_TP; // Timer Prescale: 6 bits?
+ u8 m_ctr; // current external counter value
+
+ // Serial registers
+ u8 m_SB; // Serial buffer: 4 bits
+ u16 m_SBcount;// number of bits received
emu_timer *m_serial;
- /* PLA configuration and port callbacks */
- uint8_t * m_PLA;
+ // PLA configuration and port callbacks
+ u8 *m_PLA;
devcb_read8 m_read_k;
devcb_write8 m_write_o;
devcb_write8 m_write_p;
@@ -174,72 +175,67 @@ private:
devcb_read_line m_read_si;
devcb_write_line m_write_so;
- /* IRQ handling */
- uint8_t m_pending_interrupt;
+ // IRQ handling
+ u8 m_pending_interrupt;
+ bool m_in_irq;
+
+ memory_access<11, 0, 0, ENDIANNESS_BIG>::cache m_cache;
+ memory_access<11, 0, 0, ENDIANNESS_BIG>::specific m_program;
+ memory_access< 7, 0, 0, ENDIANNESS_BIG>::specific m_data;
- address_space *m_program;
- memory_access_cache<0, 0, ENDIANNESS_BIG> *m_cache;
- address_space *m_data;
int m_icount;
// For the debugger
- uint16_t m_debugger_pc;
- uint8_t m_debugger_flags;
+ u16 m_debugger_pc;
+ u8 m_debugger_flags;
- TIMER_CALLBACK_MEMBER( serial_timer );
- int pla( int inA, int inB );
- void update_pio_enable( uint8_t newpio );
+ TIMER_CALLBACK_MEMBER(serial_timer);
+ int pla(int inA, int inB);
+ void update_pio_enable(u8 newpio);
void increment_timer();
- void update_pio( int cycles );
-
+ void update_pio(int cycles);
};
class mb88201_cpu_device : public mb88_cpu_device
{
public:
- // construction/destruction
- mb88201_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mb88201_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};
class mb88202_cpu_device : public mb88_cpu_device
{
public:
- // construction/destruction
- mb88202_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mb88202_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};
class mb8841_cpu_device : public mb88_cpu_device
{
public:
- // construction/destruction
- mb8841_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mb8841_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};
class mb8842_cpu_device : public mb88_cpu_device
{
public:
- // construction/destruction
- mb8842_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mb8842_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};
class mb8843_cpu_device : public mb88_cpu_device
{
public:
- // construction/destruction
- mb8843_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mb8843_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};
class mb8844_cpu_device : public mb88_cpu_device
{
public:
- // construction/destruction
- mb8844_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mb8844_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};