diff options
Diffstat (limited to 'src/devices/cpu/tms1000/tms1k_base.h')
-rw-r--r-- | src/devices/cpu/tms1000/tms1k_base.h | 286 |
1 files changed, 4 insertions, 282 deletions
diff --git a/src/devices/cpu/tms1000/tms1k_base.h b/src/devices/cpu/tms1000/tms1k_base.h index c1585bd22f0..9ad108b1dca 100644 --- a/src/devices/cpu/tms1000/tms1k_base.h +++ b/src/devices/cpu/tms1000/tms1k_base.h @@ -2,7 +2,10 @@ // copyright-holders:Wilbert Pol, hap /* - TMS0980/TMS1000-family MCU cores + TMS1000 family - base/shared + + Don't include this file, include the specific device header instead, + for example tms1000.h */ @@ -35,17 +38,6 @@ tms1k_base_device::set_power_off_callback(*device, DEVCB_##_devcb); -// TMS0270 was designed to interface with TMS5100, set it up at driver level -#define MCFG_TMS0270_READ_CTL_CB(_devcb) \ - tms0270_cpu_device::set_read_ctl_callback(*device, DEVCB_##_devcb); - -#define MCFG_TMS0270_WRITE_CTL_CB(_devcb) \ - tms0270_cpu_device::set_write_ctl_callback(*device, DEVCB_##_devcb); - -#define MCFG_TMS0270_WRITE_PDC_CB(_devcb) \ - tms0270_cpu_device::set_write_pdc_callback(*device, DEVCB_##_devcb); - - // pinout reference /* @@ -304,274 +296,4 @@ protected: }; - -class tms1000_cpu_device : public tms1k_base_device -{ -public: - tms1000_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - tms1000_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT8 o_pins, UINT8 r_pins, UINT8 pc_bits, UINT8 byte_bits, UINT8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source); - -protected: - // overrides - virtual void device_reset() override; - virtual machine_config_constructor device_mconfig_additions() const override; - - - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override; -}; - -class tms1070_cpu_device : public tms1000_cpu_device -{ -public: - tms1070_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); -}; - -class tms1040_cpu_device : public tms1000_cpu_device -{ -public: - tms1040_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); -}; - - -class tms1200_cpu_device : public tms1000_cpu_device -{ -public: - tms1200_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); -}; - - -class tms1100_cpu_device : public tms1000_cpu_device -{ -public: - tms1100_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - tms1100_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT8 o_pins, UINT8 r_pins, UINT8 pc_bits, UINT8 byte_bits, UINT8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source); - -protected: - // overrides - virtual void device_reset() override; - - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override; - - virtual void op_setr() override; - virtual void op_rstr() override; -}; - -class tms1170_cpu_device : public tms1100_cpu_device -{ -public: - tms1170_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); -}; - -class tms1300_cpu_device : public tms1100_cpu_device -{ -public: - tms1300_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); -}; - -class tms1370_cpu_device : public tms1100_cpu_device -{ -public: - tms1370_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); -}; - - -class tms1400_cpu_device : public tms1100_cpu_device -{ -public: - tms1400_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - tms1400_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT8 o_pins, UINT8 r_pins, UINT8 pc_bits, UINT8 byte_bits, UINT8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source); - -protected: - // overrides - virtual void device_reset() override; - virtual machine_config_constructor device_mconfig_additions() const override; - - virtual void op_br() override; - virtual void op_call() override; - virtual void op_retn() override; - - virtual void op_setr() override { tms1k_base_device::op_setr(); } // no anomaly with MSB of X register - virtual void op_rstr() override { tms1k_base_device::op_rstr(); } // " -}; - -class tms1470_cpu_device : public tms1400_cpu_device -{ -public: - tms1470_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); -}; - - -class tms1600_cpu_device : public tms1400_cpu_device -{ -public: - tms1600_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - tms1600_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT8 o_pins, UINT8 r_pins, UINT8 pc_bits, UINT8 byte_bits, UINT8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source); -}; - -class tms1670_cpu_device : public tms1600_cpu_device -{ -public: - tms1670_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); -}; - - -class tms0970_cpu_device : public tms1000_cpu_device -{ -public: - tms0970_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - tms0970_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT8 o_pins, UINT8 r_pins, UINT8 pc_bits, UINT8 byte_bits, UINT8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source); - -protected: - // overrides - virtual void device_reset() override; - virtual machine_config_constructor device_mconfig_additions() const override; - - virtual void write_o_output(UINT8 index) override; - - virtual void op_setr() override; - virtual void op_tdo() override; -}; - -class tms0950_cpu_device : public tms0970_cpu_device -{ -public: - tms0950_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - -protected: - // overrides - virtual void device_reset() override { tms1000_cpu_device::device_reset(); } - virtual machine_config_constructor device_mconfig_additions() const override; - - virtual void op_rstr() override { ; } // assume it has no RSTR or CLO - virtual void op_clo() override { ; } // " -}; - -class tms1990_cpu_device : public tms0970_cpu_device -{ -public: - tms1990_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); -}; - - -class tms0980_cpu_device : public tms0970_cpu_device -{ -public: - tms0980_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - tms0980_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT8 o_pins, UINT8 r_pins, UINT8 pc_bits, UINT8 byte_bits, UINT8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source); - -protected: - // overrides - virtual void device_reset() override; - - virtual machine_config_constructor device_mconfig_additions() const override; - - virtual UINT32 disasm_min_opcode_bytes() const override { return 2; } - virtual UINT32 disasm_max_opcode_bytes() const override { return 2; } - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override; - - virtual UINT8 read_k_input() override; - virtual void set_cki_bus() override; - virtual void read_opcode() override; - - virtual void op_comx() override; - - UINT32 decode_micro(UINT8 sel); -}; - -class tms1980_cpu_device : public tms0980_cpu_device -{ -public: - tms1980_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - -protected: - // overrides - virtual machine_config_constructor device_mconfig_additions() const override; - - virtual void write_o_output(UINT8 index) override { tms1k_base_device::write_o_output(index); } - virtual UINT8 read_k_input() override { return tms1k_base_device::read_k_input(); } - - virtual void op_setr() override { tms1k_base_device::op_setr(); } - virtual void op_tdo() override; -}; - - -class tms0270_cpu_device : public tms0980_cpu_device -{ -public: - tms0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - - // static configuration helpers - template<class _Object> static devcb_base &set_read_ctl_callback(device_t &device, _Object object) { return downcast<tms0270_cpu_device &>(device).m_read_ctl.set_callback(object); } - template<class _Object> static devcb_base &set_write_ctl_callback(device_t &device, _Object object) { return downcast<tms0270_cpu_device &>(device).m_write_ctl.set_callback(object); } - template<class _Object> static devcb_base &set_write_pdc_callback(device_t &device, _Object object) { return downcast<tms0270_cpu_device &>(device).m_write_pdc.set_callback(object); } - -protected: - // overrides - virtual void device_start() override; - virtual void device_reset() override; - - virtual machine_config_constructor device_mconfig_additions() const override; - - virtual void write_o_output(UINT8 index) override { tms1k_base_device::write_o_output(index); } - virtual UINT8 read_k_input() override; - virtual void dynamic_output() override; - - virtual void op_setr() override; - virtual void op_rstr() override; - virtual void op_tdo() override; - -private: - // state specific to interface with TMS5100 - UINT16 m_r_prev; - UINT8 m_chipsel; - UINT8 m_ctl_out; - UINT8 m_ctl_dir; - int m_pdc; - - UINT8 m_o_latch_low; - UINT8 m_o_latch; - UINT8 m_o_latch_prev; - - devcb_read8 m_read_ctl; - devcb_write8 m_write_ctl; - devcb_write_line m_write_pdc; -}; - - -class tp0320_cpu_device : public tms0980_cpu_device -{ -public: - tp0320_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - -protected: - // overrides - //virtual void device_start() override; - //virtual void device_reset() override; - virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override; - - //virtual machine_config_constructor device_mconfig_additions() const override; -}; - - -extern const device_type TMS1000; -extern const device_type TMS1070; -extern const device_type TMS1040; -extern const device_type TMS1200; -extern const device_type TMS1100; -extern const device_type TMS1170; -extern const device_type TMS1300; -extern const device_type TMS1370; -extern const device_type TMS1400; -extern const device_type TMS1470; -extern const device_type TMS1600; -extern const device_type TMS1670; -extern const device_type TMS0950; -extern const device_type TMS0970; -extern const device_type TMS1990; -extern const device_type TMS0980; -extern const device_type TMS1980; -extern const device_type TMS0270; -extern const device_type TP0320; - - #endif /* _TMS1KBASE_H_ */ |