// license:BSD-3-Clause // copyright-holders:AJR #ifndef MAME_CPU_CR16B_CR16B_H #define MAME_CPU_CR16B_CR16B_H #pragma once class cr16b_device : public cpu_device { public: cr16b_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); enum { CR16_PC, CR16_ISP, CR16_INTBASE, CR16_PSR, CR16_CFG, CR16_DCR, CR16_DSR, CR16_CAR, CR16_R0, CR16_R1, CR16_R2, CR16_R3, CR16_R4, CR16_R5, CR16_R6, CR16_R7, CR16_R8, CR16_R9, CR16_R10, CR16_R11, CR16_R12, CR16_R13, CR16_R14, CR16_R15 }; protected: // construction/destruction cr16b_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor map); // device-level overrides virtual void device_start() override; virtual void device_reset() override; // device_execute_interface overrides virtual void execute_run() override; virtual void execute_set_input(int inputnum, int state) override; // device_disasm_interface overrides virtual std::unique_ptr create_disassembler() override; // device_memory_interface overrides virtual space_config_vector memory_space_config() const override; private: // address space address_space_config m_space_config; memory_access<21, 1, 0, ENDIANNESS_LITTLE>::cache m_cache; memory_access<21, 1, 0, ENDIANNESS_LITTLE>::specific m_space; // internal state u16 m_regs[16]; u32 m_pc; u32 m_isp; u32 m_intbase; u16 m_psr; u16 m_cfg; u16 m_dcr; u16 m_dsr; u32 m_car; s32 m_icount; }; DECLARE_DEVICE_TYPE(CR16B, cr16b_device) #endif // MAME_CPU_CR16B_CR16B_H