mirror of
https://github.com/holub/mame
synced 2025-07-05 01:48:29 +03:00
Replacing legacy implementations in TMS99xx. (nw)
This commit is contained in:
parent
eba029c175
commit
0b2c32a118
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -1527,6 +1527,7 @@ src/emu/cpu/tms9900/9900dasm.c svneol=native#text/plain
|
|||||||
src/emu/cpu/tms9900/99xxcore.h svneol=native#text/plain
|
src/emu/cpu/tms9900/99xxcore.h svneol=native#text/plain
|
||||||
src/emu/cpu/tms9900/99xxstat.h svneol=native#text/plain
|
src/emu/cpu/tms9900/99xxstat.h svneol=native#text/plain
|
||||||
src/emu/cpu/tms9900/ti990_10.c svneol=native#text/plain
|
src/emu/cpu/tms9900/ti990_10.c svneol=native#text/plain
|
||||||
|
src/emu/cpu/tms9900/ti990_10.h svneol=native#text/plain
|
||||||
src/emu/cpu/tms9900/ti990_10l.c svneol=native#text/plain
|
src/emu/cpu/tms9900/ti990_10l.c svneol=native#text/plain
|
||||||
src/emu/cpu/tms9900/tms9900.c svneol=native#text/plain
|
src/emu/cpu/tms9900/tms9900.c svneol=native#text/plain
|
||||||
src/emu/cpu/tms9900/tms9900.h svneol=native#text/plain
|
src/emu/cpu/tms9900/tms9900.h svneol=native#text/plain
|
||||||
|
@ -1879,7 +1879,6 @@ $(CPUOBJ)/tms7000/7000dasm.o: $(CPUSRC)/tms7000/tms7000.h \
|
|||||||
#-------------------------------------------------
|
#-------------------------------------------------
|
||||||
# Texas Instruments TMS99xx series
|
# Texas Instruments TMS99xx series
|
||||||
#@src/emu/cpu/tms9900/tms9900.h,CPUS += TMS9900
|
#@src/emu/cpu/tms9900/tms9900.h,CPUS += TMS9900
|
||||||
#@src/emu/cpu/tms9900/tms9900l.h,CPUS += TMS9900
|
|
||||||
#@src/emu/cpu/tms9900/tms9980a.h,CPUS += TMS9900
|
#@src/emu/cpu/tms9900/tms9980a.h,CPUS += TMS9900
|
||||||
#@src/emu/cpu/tms9900/tms9995.h,CPUS += TMS9900
|
#@src/emu/cpu/tms9900/tms9995.h,CPUS += TMS9900
|
||||||
|
|
||||||
@ -1888,34 +1887,29 @@ $(CPUOBJ)/tms7000/7000dasm.o: $(CPUSRC)/tms7000/tms7000.h \
|
|||||||
ifneq ($(filter TMS9900,$(CPUS)),)
|
ifneq ($(filter TMS9900,$(CPUS)),)
|
||||||
OBJDIRS += $(CPUOBJ)/tms9900
|
OBJDIRS += $(CPUOBJ)/tms9900
|
||||||
CPUOBJS += $(CPUOBJ)/tms9900/tms9900.o
|
CPUOBJS += $(CPUOBJ)/tms9900/tms9900.o
|
||||||
CPUOBJS += $(CPUOBJ)/tms9900/tms9900l.o
|
|
||||||
CPUOBJS += $(CPUOBJ)/tms9900/tms9980a.o
|
CPUOBJS += $(CPUOBJ)/tms9900/tms9980a.o
|
||||||
CPUOBJS += $(CPUOBJ)/tms9900/tms9995.o
|
CPUOBJS += $(CPUOBJ)/tms9900/tms9995.o
|
||||||
CPUOBJS += $(CPUOBJ)/tms9900/ti990_10l.o
|
CPUOBJS += $(CPUOBJ)/tms9900/ti990_10.o
|
||||||
DASMOBJS += $(CPUOBJ)/tms9900/9900dasm.o
|
DASMOBJS += $(CPUOBJ)/tms9900/9900dasm.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(CPUOBJ)/tms9900/tms9900.o: $(CPUSRC)/tms9900/tms9900.c \
|
$(CPUOBJ)/tms9900/tms9900.o: $(CPUSRC)/tms9900/tms9900.c \
|
||||||
$(CPUSRC)/tms9900/tms9900.h
|
$(CPUSRC)/tms9900/tms9900.h \
|
||||||
|
$(CPUSRC)/tms9900/tms99com.h
|
||||||
$(CPUOBJ)/tms9900/tms9900l.o: $(CPUSRC)/tms9900/tms9900l.c \
|
|
||||||
$(CPUSRC)/tms9900/tms9900l.h \
|
|
||||||
$(CPUSRC)/tms9900/99xxcore.h \
|
|
||||||
$(CPUSRC)/tms9900/99xxstat.h
|
|
||||||
|
|
||||||
$(CPUOBJ)/tms9900/tms9980a.o: $(CPUSRC)/tms9900/tms9980a.c \
|
$(CPUOBJ)/tms9900/tms9980a.o: $(CPUSRC)/tms9900/tms9980a.c \
|
||||||
$(CPUSRC)/tms9900/tms9980a.h \
|
$(CPUSRC)/tms9900/tms9980a.h \
|
||||||
$(CPUSRC)/tms9900/tms9900.c \
|
$(CPUSRC)/tms9900/tms9900.c \
|
||||||
$(CPUSRC)/tms9900/tms9900.h
|
$(CPUSRC)/tms9900/tms9900.h \
|
||||||
|
$(CPUSRC)/tms9900/tms99com.h
|
||||||
|
|
||||||
$(CPUOBJ)/tms9900/tms9995.o: $(CPUSRC)/tms9900/tms9995.c \
|
$(CPUOBJ)/tms9900/tms9995.o: $(CPUSRC)/tms9900/tms9995.c \
|
||||||
$(CPUSRC)/tms9900/tms9995.h
|
$(CPUSRC)/tms9900/tms9995.h \
|
||||||
|
$(CPUSRC)/tms9900/tms99com.h
|
||||||
$(CPUOBJ)/tms9900/ti990_10l.o: $(CPUSRC)/tms9900/ti990_10l.c \
|
|
||||||
$(CPUSRC)/tms9900/tms9900l.h \
|
|
||||||
$(CPUSRC)/tms9900/99xxcore.h \
|
|
||||||
$(CPUSRC)/tms9900/99xxstat.h
|
|
||||||
|
|
||||||
|
$(CPUOBJ)/tms9900/ti990_10.o: $(CPUSRC)/tms9900/ti990_10.c \
|
||||||
|
$(CPUSRC)/tms9900/ti990_10.h \
|
||||||
|
$(CPUSRC)/tms9900/tms99com.h
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------
|
#-------------------------------------------------
|
||||||
|
@ -1,5 +1,19 @@
|
|||||||
// license:MAME
|
// license:MAME
|
||||||
// copyright-holders:Raphael Nabet
|
// copyright-holders:Raphael Nabet
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
Legacy TMS99xx core implementation
|
||||||
|
|
||||||
|
Please do not remove this file from the source tree, even if none of the
|
||||||
|
drivers make use of it anymore. It still contains documentation and
|
||||||
|
incomplete implementations of cores that are not (yet) used in drivers.
|
||||||
|
|
||||||
|
It need not be included in the build process, however.
|
||||||
|
|
||||||
|
Michael Zapf, February 2014
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
99xxcore.h : generic tms99xx emulation
|
99xxcore.h : generic tms99xx emulation
|
||||||
|
|
||||||
|
@ -1,6 +1,151 @@
|
|||||||
// license:BSD-3-Clause
|
// license:BSD-3-Clause
|
||||||
// copyright-holders:Michael Zapf
|
// copyright-holders:Michael Zapf
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This file will contain the re-implementation of the ti990_10. The
|
Texas Instruments TI990/10 CPU board
|
||||||
previous implementation can be found as ti990_10l.
|
|
||||||
|
The first member of the family was actually the ti990/10 minicomputer,
|
||||||
|
released in 1975. tms9900 was released in 1976, and has the same
|
||||||
|
instruction set as ti990/10: however, tms9900 is slower, it does not
|
||||||
|
support privileges and memory mapping, and illegal instructions do not
|
||||||
|
cause an error interrupt.
|
||||||
|
|
||||||
|
The ti990 family later evoluted into the huge ti990/12 system, with support
|
||||||
|
for 144 different instructions, and microcode programming in case some user
|
||||||
|
found it was not enough. ti990/10 was eventually replaced by a cheaper
|
||||||
|
ti990/10a board, built around a tms99000 microprocessor.
|
||||||
|
|
||||||
|
tms99000 is the successor to both ti9900 and ti990/10. It supports
|
||||||
|
privileges, and has a coprocessor interface which enables the use of an
|
||||||
|
external memory mapper. Additionnally, it can use a Macrostore ROM to
|
||||||
|
emulate additional instructions.
|
||||||
|
|
||||||
|
**** This is WORK IN PROGRESS ****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ti990_10.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
The following defines can be set to 0 or 1 to disable or enable certain
|
||||||
|
output in the log.
|
||||||
|
*/
|
||||||
|
// Emulation setup
|
||||||
|
#define TRACE_SETUP 0
|
||||||
|
|
||||||
|
// Emulation details
|
||||||
|
#define TRACE_EMU 0
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
Constructor for TI 990/10
|
||||||
|
The CRU mask is related to the bits, not to their addresses which are
|
||||||
|
twice their number. Accordingly, the TMS9900 has a CRU bitmask 0x0fff.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
ti990_10_device::ti990_10_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
|
: cpu_device(mconfig, TI990_10, "TI990/10", tag, owner, clock, "ti990/10", __FILE__),
|
||||||
|
m_program_config("program", ENDIANNESS_BIG, 16, 16),
|
||||||
|
m_io_config("cru", ENDIANNESS_BIG, 8, 12),
|
||||||
|
m_prgspace(NULL),
|
||||||
|
m_cru(NULL),
|
||||||
|
m_prgaddr_mask((1<<16)-1),
|
||||||
|
m_cruaddr_mask((1<<12)-1)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
ti990_10_device::~ti990_10_device()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ti990_10_device::device_start()
|
||||||
|
{
|
||||||
|
m_prgspace = &space(AS_PROGRAM);
|
||||||
|
m_cru = &space(AS_IO);
|
||||||
|
|
||||||
|
// set our instruction counter
|
||||||
|
m_icountptr = &m_icount;
|
||||||
|
|
||||||
|
state_add(STATE_GENPC, "curpc", PC).formatstr("%4s").noshow();
|
||||||
|
state_add(STATE_GENFLAGS, "status", m_state_any).callimport().callexport().formatstr("%16s").noshow();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ti990_10_device::device_stop()
|
||||||
|
{
|
||||||
|
int k = 0;
|
||||||
|
if (TRACE_SETUP) logerror("ti990_10: Deleting lookup tables\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
TI990_10 hard reset
|
||||||
|
The device reset is just the emulator's trigger for the reset procedure
|
||||||
|
which is invoked via the main loop.
|
||||||
|
*/
|
||||||
|
void ti990_10_device::device_reset()
|
||||||
|
{
|
||||||
|
if (TRACE_EMU) logerror("ti990_10: Device reset by emulator\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
const address_space_config *ti990_10_device::memory_space_config(address_spacenum spacenum) const
|
||||||
|
{
|
||||||
|
switch (spacenum)
|
||||||
|
{
|
||||||
|
case AS_PROGRAM:
|
||||||
|
return &m_program_config;
|
||||||
|
|
||||||
|
case AS_IO:
|
||||||
|
return &m_io_config;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ti990_10_device::execute_run()
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
// TODO: Complete the implementation
|
||||||
|
m_icount--;
|
||||||
|
} while (m_icount>0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ti990_10_device::execute_set_input(int irqline, int state)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==========================================================================
|
||||||
|
|
||||||
|
UINT32 ti990_10_device::execute_min_cycles() const
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Compute this value, just a wild guess for the average
|
||||||
|
UINT32 ti990_10_device::execute_max_cycles() const
|
||||||
|
{
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
UINT32 ti990_10_device::execute_input_lines() const
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// device_disasm_interface overrides
|
||||||
|
UINT32 ti990_10_device::disasm_min_opcode_bytes() const
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
UINT32 ti990_10_device::disasm_max_opcode_bytes() const
|
||||||
|
{
|
||||||
|
return 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: check 9900dasm
|
||||||
|
offs_t ti990_10_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
|
||||||
|
{
|
||||||
|
extern CPU_DISASSEMBLE( tms9900 );
|
||||||
|
return CPU_DISASSEMBLE_NAME(tms9900)(this, buffer, pc, oprom, opram, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
const device_type TI990_10 = &device_creator<ti990_10_device>;
|
||||||
|
79
src/emu/cpu/tms9900/ti990_10.h
Normal file
79
src/emu/cpu/tms9900/ti990_10.h
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Michael Zapf
|
||||||
|
/*
|
||||||
|
TI 990 CPU board
|
||||||
|
See ti990_10.c for documentation
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __TI990_10_H__
|
||||||
|
#define __TI990_10_H__
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "debugger.h"
|
||||||
|
#include "tms99com.h"
|
||||||
|
|
||||||
|
struct tms99xx_config
|
||||||
|
{
|
||||||
|
devcb_write8 external_callback;
|
||||||
|
devcb_read8 irq_level;
|
||||||
|
devcb_write_line instruction_acquisition;
|
||||||
|
devcb_write_line clock_out;
|
||||||
|
devcb_write_line wait_line;
|
||||||
|
devcb_write_line holda_line;
|
||||||
|
devcb_write_line dbin_line;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define TMS99xx_CONFIG(name) \
|
||||||
|
const tms99xx_config(name) =
|
||||||
|
|
||||||
|
class ti990_10_device : public cpu_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ti990_10_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
|
~ti990_10_device();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device-level overrides
|
||||||
|
void device_start();
|
||||||
|
void device_stop();
|
||||||
|
void device_reset();
|
||||||
|
|
||||||
|
// device_execute_interface overrides
|
||||||
|
UINT32 execute_min_cycles() const;
|
||||||
|
UINT32 execute_max_cycles() const;
|
||||||
|
UINT32 execute_input_lines() const;
|
||||||
|
void execute_set_input(int irqline, int state);
|
||||||
|
void execute_run();
|
||||||
|
|
||||||
|
// device_disasm_interface overrides
|
||||||
|
UINT32 disasm_min_opcode_bytes() const;
|
||||||
|
UINT32 disasm_max_opcode_bytes() const;
|
||||||
|
offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
|
||||||
|
|
||||||
|
const address_space_config* memory_space_config(address_spacenum spacenum) const;
|
||||||
|
|
||||||
|
const address_space_config m_program_config;
|
||||||
|
const address_space_config m_io_config;
|
||||||
|
address_space* m_prgspace;
|
||||||
|
address_space* m_cru;
|
||||||
|
|
||||||
|
// Cycle counter
|
||||||
|
int m_icount;
|
||||||
|
|
||||||
|
// Hardware registers
|
||||||
|
UINT16 WP; // Workspace pointer
|
||||||
|
UINT16 PC; // Program counter
|
||||||
|
UINT16 ST; // Status register
|
||||||
|
|
||||||
|
private:
|
||||||
|
// Max address
|
||||||
|
const UINT16 m_prgaddr_mask;
|
||||||
|
const UINT16 m_cruaddr_mask;
|
||||||
|
|
||||||
|
UINT16 m_state_any;
|
||||||
|
};
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
extern const device_type TI990_10;
|
||||||
|
|
||||||
|
#endif /* __TI990_10_H__ */
|
@ -35,8 +35,7 @@
|
|||||||
|
|
||||||
In this implementation we only consider TMS9900, 9980, and 9995. The
|
In this implementation we only consider TMS9900, 9980, and 9995. The
|
||||||
remaining types are implemented on an own code base as they introduce
|
remaining types are implemented on an own code base as they introduce
|
||||||
significant changes (e.g. privileged mode, address mapper). For now we
|
significant changes (e.g. privileged mode, address mapper).
|
||||||
leave the implementation of the rest up to 99xxcore.h.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TMS99COMMON_H__
|
#ifndef __TMS99COMMON_H__
|
||||||
|
@ -69,7 +69,7 @@ TODO :
|
|||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
|
||||||
#include "cpu/tms9900/tms9900l.h"
|
#include "cpu/tms9900/ti990_10.h"
|
||||||
#include "sound/beep.h"
|
#include "sound/beep.h"
|
||||||
#include "machine/ti99/ti990.h"
|
#include "machine/ti99/ti990.h"
|
||||||
#include "machine/ti99/990_hd.h"
|
#include "machine/ti99/990_hd.h"
|
||||||
@ -123,18 +123,20 @@ void ti990_10_state::idle_callback(int state)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
static void rset_callback(device_t *device)
|
static void rset_callback(device_t *device)
|
||||||
{
|
{
|
||||||
ti990_cpuboard_reset();
|
ti990_cpuboard_reset();
|
||||||
|
|
||||||
/* clear controller panel and smi fault LEDs */
|
// clear controller panel and smi fault LEDs
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lrex_callback(device_t *device)
|
static void lrex_callback(device_t *device)
|
||||||
{
|
{
|
||||||
/* right??? */
|
// right???
|
||||||
ti990_hold_load(device->machine());
|
ti990_hold_load(device->machine());
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TI990/10 video emulation.
|
TI990/10 video emulation.
|
||||||
@ -187,37 +189,46 @@ ADDRESS_MAP_END
|
|||||||
static ADDRESS_MAP_START(ti990_10_io, AS_IO, 8, ti990_10_state )
|
static ADDRESS_MAP_START(ti990_10_io, AS_IO, 8, ti990_10_state )
|
||||||
AM_RANGE(0x10, 0x11) AM_DEVREAD_LEGACY("vdt911", vdt911_cru_r)
|
AM_RANGE(0x10, 0x11) AM_DEVREAD_LEGACY("vdt911", vdt911_cru_r)
|
||||||
AM_RANGE(0x80, 0x8f) AM_DEVWRITE_LEGACY("vdt911", vdt911_cru_w)
|
AM_RANGE(0x80, 0x8f) AM_DEVWRITE_LEGACY("vdt911", vdt911_cru_w)
|
||||||
AM_RANGE(0x1fa, 0x1fb) AM_READ_LEGACY(ti990_10_mapper_cru_r)
|
AM_RANGE(0x1fa, 0x1fb) AM_NOP // AM_READ_LEGACY(ti990_10_mapper_cru_r)
|
||||||
AM_RANGE(0x1fc, 0x1fd) AM_READ_LEGACY(ti990_10_eir_cru_r)
|
AM_RANGE(0x1fc, 0x1fd) AM_NOP // AM_READ_LEGACY(ti990_10_eir_cru_r)
|
||||||
AM_RANGE(0x1fe, 0x1ff) AM_READ_LEGACY(ti990_panel_read)
|
AM_RANGE(0x1fe, 0x1ff) AM_READ_LEGACY(ti990_panel_read)
|
||||||
AM_RANGE(0xfd0, 0xfdf) AM_WRITE_LEGACY(ti990_10_mapper_cru_w)
|
AM_RANGE(0xfd0, 0xfdf) AM_NOP // AM_WRITE_LEGACY(ti990_10_mapper_cru_w)
|
||||||
AM_RANGE(0xfe0, 0xfef) AM_WRITE_LEGACY(ti990_10_eir_cru_w)
|
AM_RANGE(0xfe0, 0xfef) AM_NOP // AM_WRITE_LEGACY(ti990_10_eir_cru_w)
|
||||||
AM_RANGE(0xff0, 0xfff) AM_WRITE_LEGACY(ti990_panel_write)
|
AM_RANGE(0xff0, 0xfff) AM_WRITE_LEGACY(ti990_panel_write)
|
||||||
|
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
/*
|
||||||
static const ti990_10reset_param reset_params =
|
static const ti990_10reset_param reset_params =
|
||||||
{
|
{
|
||||||
/*idle_callback*/NULL,
|
NULL,
|
||||||
rset_callback,
|
rset_callback,
|
||||||
lrex_callback,
|
lrex_callback,
|
||||||
ti990_ckon_ckof_callback,
|
ti990_ckon_ckof_callback,
|
||||||
|
|
||||||
ti990_set_int2
|
ti990_set_int2
|
||||||
};
|
}; */
|
||||||
|
|
||||||
static const ti990_tpc_interface ti990_tpc =
|
static const ti990_tpc_interface ti990_tpc =
|
||||||
{
|
{
|
||||||
ti990_set_int9
|
ti990_set_int9
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static TMS99xx_CONFIG( cpuconf )
|
||||||
|
{
|
||||||
|
DEVCB_NULL, //DEVCB_DRIVER_MEMBER(ti990_10_state, external_operation),
|
||||||
|
DEVCB_NULL, //DEVCB_DRIVER_MEMBER(ti990_10_state, interrupt_level),
|
||||||
|
DEVCB_NULL, // Instruction acquisition
|
||||||
|
DEVCB_NULL, // Clock out
|
||||||
|
DEVCB_NULL, // wait
|
||||||
|
DEVCB_NULL, // Hold acknowledge
|
||||||
|
DEVCB_NULL // data bus in
|
||||||
|
};
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( ti990_10, ti990_10_state )
|
static MACHINE_CONFIG_START( ti990_10, ti990_10_state )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
/* TI990/10 CPU @ 4.0(???) MHz */
|
/* TI990/10 CPU @ 4.0(???) MHz */
|
||||||
MCFG_CPU_ADD("maincpu", TI990_10L, 4000000)
|
MCFG_TMS99xx_ADD("maincpu", TI990_10, 4000000, ti990_10_memmap, ti990_10_io, cpuconf)
|
||||||
MCFG_CPU_CONFIG(reset_params)
|
|
||||||
MCFG_CPU_PROGRAM_MAP(ti990_10_memmap)
|
|
||||||
MCFG_CPU_IO_MAP(ti990_10_io)
|
|
||||||
MCFG_CPU_PERIODIC_INT_DRIVER(ti990_10_state, ti990_10_line_interrupt, 120/*or 100 in Europe*/)
|
MCFG_CPU_PERIODIC_INT_DRIVER(ti990_10_state, ti990_10_line_interrupt, 120/*or 100 in Europe*/)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user