Common parts of TMS99xx CPUs

This commit is contained in:
Michael Zapf 2013-10-19 23:46:28 +00:00
parent e68246c6dd
commit 729030b28c
2 changed files with 75 additions and 0 deletions

1
.gitattributes vendored
View File

@ -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

View File

@ -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__ */