diff options
Diffstat (limited to 'src/devices/cpu/mb88xx/mb88xx.h')
-rw-r--r-- | src/devices/cpu/mb88xx/mb88xx.h | 111 |
1 files changed, 53 insertions, 58 deletions
diff --git a/src/devices/cpu/mb88xx/mb88xx.h b/src/devices/cpu/mb88xx/mb88xx.h index df9c3dc283c..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,8 +175,9 @@ 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; @@ -184,63 +186,56 @@ private: 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); }; |