summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/tms0980/tms0980.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/cpu/tms0980/tms0980.h')
-rw-r--r--src/emu/cpu/tms0980/tms0980.h32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/emu/cpu/tms0980/tms0980.h b/src/emu/cpu/tms0980/tms0980.h
index 25556f0121f..dfbaf22c8c9 100644
--- a/src/emu/cpu/tms0980/tms0980.h
+++ b/src/emu/cpu/tms0980/tms0980.h
@@ -83,11 +83,11 @@ protected:
void state_string_export(const device_state_entry &entry, astring &string);
void next_pc();
- void execute_fixed_opcode();
-
+
virtual void write_o_output(UINT8 data);
virtual UINT8 read_k_input();
virtual void set_cki_bus();
+ virtual void dynamic_output() { ; } // not used by default
virtual void read_opcode();
virtual void op_sbit();
@@ -122,13 +122,17 @@ protected:
UINT8 m_pa; // 4-bit page address register
UINT8 m_pb; // 4-bit page buffer register
UINT8 m_a; // 4-bit accumulator
+ UINT8 m_a_prev;
UINT8 m_x; // 2,3,or 4-bit RAM X register
UINT8 m_y; // 4-bit RAM Y register
UINT8 m_ca; // chapter address bit
UINT8 m_cb; // chapter buffer bit
UINT8 m_cs; // chapter subroutine bit
UINT16 m_r;
+ UINT16 m_r_prev;
UINT16 m_o;
+ UINT16 m_o_prev;
+ UINT16 m_o_latch; // TMC0270 hold latch
UINT8 m_cki_bus;
UINT8 m_c4;
UINT8 m_p; // 4-bit adder p(lus)-input
@@ -258,6 +262,7 @@ 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 k_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
@@ -273,11 +278,31 @@ protected:
virtual void read_opcode();
virtual void op_comx();
-private:
+
UINT32 decode_micro(UINT8 sel);
};
+class tmc0270_cpu_device : public tms0980_cpu_device
+{
+public:
+ tmc0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ // overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ virtual void write_o_output(UINT8 data) { tms1xxx_cpu_device::write_o_output(data); }
+ virtual UINT8 read_k_input();
+ virtual void dynamic_output();
+ virtual void read_opcode();
+
+ virtual void op_setr() { tms1xxx_cpu_device::op_setr(); }
+ virtual void op_rstr() { tms1xxx_cpu_device::op_rstr(); }
+ virtual void op_tdo();
+};
+
+
extern const device_type TMS1000;
extern const device_type TMS1070;
@@ -286,6 +311,7 @@ extern const device_type TMS1100;
extern const device_type TMS1300;
extern const device_type TMS0970;
extern const device_type TMS0980;
+extern const device_type TMC0270;
#endif /* _TMS0980_H_ */