1 // license:BSD-3-Clause 2 // copyright-holders:AJR 3 4 #ifndef MAME_CPU_VT61_VT61_H 5 #define MAME_CPU_VT61_VT61_H 6 7 #pragma once 8 9 class vt61_cpu_device : public cpu_device 10 { 11 public: 12 enum { 13 VT61_PC, 14 VT61_AC, 15 VT61_MAR, VT61_MALO, VT61_MAHI, 16 VT61_MDR, 17 VT61_IR, 18 VT61_R0, VT61_R1, VT61_R2, VT61_R3, 19 VT61_R4, VT61_R5, VT61_R6, VT61_R7, 20 VT61_R8, VT61_R9, VT61_R10, VT61_R11, 21 VT61_R12, VT61_R13, VT61_R14, VT61_R15, 22 VT61_MISC, VT61_MOD, VT61_INTRC 23 }; 24 25 enum { 26 AS_IDR = 2 27 }; 28 29 // construction/destruction 30 vt61_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 31 32 protected: 33 // device-level overrides 34 virtual void device_start() override; 35 virtual void device_reset() override; 36 37 // device_execute_interface overrides 38 virtual void execute_run() override; 39 40 // device_disasm_interface overrides 41 virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; 42 43 // device_memory_interface overrides 44 virtual space_config_vector memory_space_config() const override; 45 46 // device_state_interface overrides 47 void state_string_export(const device_state_entry &entry, std::string &str) const override; 48 49 private: 50 // address spaces 51 address_space_config m_program_config; 52 address_space_config m_memory_config; 53 address_space_config m_idr_config; 54 memory_access<10, 1, -1, ENDIANNESS_LITTLE>::cache m_program_cache; 55 memory_access<16, 0, 0, ENDIANNESS_LITTLE>::cache m_memory_cache; 56 memory_access< 6, 0, 0, ENDIANNESS_LITTLE>::cache m_idr_cache; 57 58 // processor state 59 u16 m_pc; 60 u8 m_ac; 61 u16 m_mar; 62 u8 m_mdr; 63 u8 m_ir; 64 u8 m_sp[16]; // scratchpad memory 65 s32 m_icount; 66 67 // I/O registers 68 u8 m_misc_flags; 69 u8 m_modem_flags; 70 u8 m_intrpt_control; 71 }; 72 73 DECLARE_DEVICE_TYPE(VT61_CPU, vt61_cpu_device) 74 75 #endif // MAME_CPU_VT61_VT61_H 76