From 729030b28c11964aa081e7d0bed02b4fe0a69dc5 Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Sat, 19 Oct 2013 23:46:28 +0000 Subject: [PATCH] Common parts of TMS99xx CPUs --- .gitattributes | 1 + src/emu/cpu/tms9900/tms99com.h | 74 ++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 src/emu/cpu/tms9900/tms99com.h diff --git a/.gitattributes b/.gitattributes index c0bdc5e59e7..d4db2faf493 100644 --- a/.gitattributes +++ b/.gitattributes @@ -926,6 +926,7 @@ src/emu/cpu/tms9900/tms9980al.c svneol=native#text/plain src/emu/cpu/tms9900/tms9995.c svneol=native#text/plain src/emu/cpu/tms9900/tms9995.h svneol=native#text/plain src/emu/cpu/tms9900/tms9995l.c svneol=native#text/plain +src/emu/cpu/tms9900/tms99com.h svneol=native#text/plain src/emu/cpu/uml.c svneol=native#text/plain src/emu/cpu/uml.h svneol=native#text/plain src/emu/cpu/unsp/unsp.c svneol=native#text/plain diff --git a/src/emu/cpu/tms9900/tms99com.h b/src/emu/cpu/tms9900/tms99com.h new file mode 100644 index 00000000000..8443203a7ae --- /dev/null +++ b/src/emu/cpu/tms9900/tms99com.h @@ -0,0 +1,74 @@ +// license:BSD-3-Clause +// copyright-holders:Michael Zapf +/* + Common definitions for all TMS processors + + Types of TMS99xx processors: + TI990/9 Early implementation, used in a few real-world applications, 1974 + very similar to mapper-less 990/10 and tms9900, but the Load + process is different + + TI990/10 Original multi-chip implementation for minicomputer systems, 1975 + + TI990/12 Multi-chip implementation, faster than 990/10. Huge instruction set + + TMS9900 Mono-chip implementation, 1976. Used in the TI-99/4(A) computer. + + TMS9940 Microcontroller with 2kb ROM, 128b RAM, decrementer, CRU bus, 1979 + + TMS9980 8-bit variant of tms9900. Two distinct chips actually : tms9980a + and tms9981 with an extra clock and simplified power supply + + TMS9985 9940 with 8kb ROM, 256b RAM, and a 8-bit external bus, c. 1978 (never released) + + TMS9989 Improved 9980, used in military hardware. + + SBP68689 Improved 9989, built as an ASIC as 9989 was running scarce + + TMS9995 TMS9985-like, with many improvements (but no ROM). Used in the + TI-99/8 prototype and the Geneve computer. + + TMS99000 Improved mono-chip implementation, meant to replace 990/10, 1981 + TMS99105 This chip is available in several variants which are similar + TMS99110 but emulate additional instructions, thanks to the so-called + macrostore feature. + + In this implementation we only consider TMS9900, 9980, and 9995. The + remaining types are implemented on an own code base as they introduce + significant changes (e.g. privileged mode, address mapper). For now we + leave the implementation of the rest up to 99xxcore.h. +*/ + +#ifndef __TMS99COMMON_H__ +#define __TMS99COMMON_H__ + +#define MCFG_TMS99xx_ADD(_tag, _device, _clock, _prgmap, _iomap, _config) \ + MCFG_DEVICE_ADD(_tag, _device, _clock) \ + MCFG_DEVICE_PROGRAM_MAP(_prgmap) \ + MCFG_DEVICE_IO_MAP(_iomap) \ + MCFG_DEVICE_CONFIG(_config) + +enum +{ + TI990_10_ID = 1, + TMS9900_ID = 3, + TMS9940_ID = 4, + TMS9980_ID = 5, + TMS9985_ID = 6, + TMS9989_ID = 7, + TMS9995_ID = 9, + TMS99000_ID = 10, + TMS99105A_ID = 11, + TMS99110A_ID = 12 +}; + +enum +{ + IDLE_OP = 2, + RSET_OP = 3, + CKOF_OP = 5, + CKON_OP = 6, + LREX_OP = 7 +}; + +#endif /* __TMS99COMMON_H__ */