mirror of
https://github.com/holub/mame
synced 2025-06-18 02:08:56 +03:00
(MESS) TMS99xx users adapted to use devcb2. (nw)
This commit is contained in:
parent
cac7437f8e
commit
28ccff182e
@ -75,17 +75,6 @@ void cortex_state::machine_reset()
|
|||||||
m_maincpu->set_ready(ASSERT_LINE);
|
m_maincpu->set_ready(ASSERT_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static TMS9995_CONFIG( cpuconf95 )
|
|
||||||
{
|
|
||||||
DEVCB_NULL, // external op
|
|
||||||
DEVCB_NULL, // Instruction acquisition
|
|
||||||
DEVCB_NULL, // clock out
|
|
||||||
DEVCB_NULL, // HOLDA
|
|
||||||
DEVCB_NULL, // DBIN
|
|
||||||
INTERNAL_RAM, // use internal RAM
|
|
||||||
NO_OVERFLOW_INT // The generally available versions of TMS9995 have a deactivated overflow interrupt
|
|
||||||
};
|
|
||||||
|
|
||||||
static TMS9928A_INTERFACE(cortex_tms9929a_interface)
|
static TMS9928A_INTERFACE(cortex_tms9929a_interface)
|
||||||
{
|
{
|
||||||
0x4000, // vram size
|
0x4000, // vram size
|
||||||
@ -95,7 +84,9 @@ static TMS9928A_INTERFACE(cortex_tms9929a_interface)
|
|||||||
static MACHINE_CONFIG_START( cortex, cortex_state )
|
static MACHINE_CONFIG_START( cortex, cortex_state )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
/* TMS9995 CPU @ 12.0 MHz */
|
/* TMS9995 CPU @ 12.0 MHz */
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9995, 12000000, cortex_mem, cortex_io, cpuconf95)
|
// Standard variant, no overflow int
|
||||||
|
// No lines connected yet
|
||||||
|
MCFG_TMS99xx_ADD("maincpu", TMS9995, 12000000, cortex_mem, cortex_io)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_TMS9928A_ADD( "tms9928a", TMS9929A, cortex_tms9929a_interface )
|
MCFG_TMS9928A_ADD( "tms9928a", TMS9929A, cortex_tms9929a_interface )
|
||||||
|
@ -98,21 +98,11 @@ void evmbug_state::machine_reset()
|
|||||||
static_cast<tms9995_device*>(machine().device("maincpu"))->set_ready(ASSERT_LINE);
|
static_cast<tms9995_device*>(machine().device("maincpu"))->set_ready(ASSERT_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static TMS9995_CONFIG( cpuconf95 )
|
|
||||||
{
|
|
||||||
DEVCB_NULL, // external op
|
|
||||||
DEVCB_NULL, // Instruction acquisition
|
|
||||||
DEVCB_NULL, // clock out
|
|
||||||
DEVCB_NULL, // HOLDA
|
|
||||||
DEVCB_NULL, // DBIN
|
|
||||||
INTERNAL_RAM, // use internal RAM
|
|
||||||
NO_OVERFLOW_INT // The generally available versions of TMS9995 have a deactivated overflow interrupt
|
|
||||||
};
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( evmbug, evmbug_state )
|
static MACHINE_CONFIG_START( evmbug, evmbug_state )
|
||||||
/* basic machine hardware */
|
// basic machine hardware
|
||||||
/* TMS9995 CPU @ 12.0 MHz */
|
// TMS9995 CPU @ 12.0 MHz
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9995, 12000000, evmbug_mem, evmbug_io, cpuconf95)
|
// We have no lines connected yet
|
||||||
|
MCFG_TMS99xx_ADD("maincpu", TMS9995, 12000000, evmbug_mem, evmbug_io )
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
|
MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
|
||||||
|
@ -225,7 +225,14 @@ class geneve_state : public driver_device
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
geneve_state(const machine_config &mconfig, device_type type, const char *tag)
|
geneve_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag) { }
|
: driver_device(mconfig, type, tag),
|
||||||
|
m_cpu(*this, "maincpu"),
|
||||||
|
m_tms9901(*this, TMS9901_TAG),
|
||||||
|
m_keyboard(*this, GKEYBOARD_TAG),
|
||||||
|
m_mapper(*this, GMAPPER_TAG),
|
||||||
|
m_peribox(*this, PERIBOX_TAG),
|
||||||
|
m_mouse(*this, GMOUSE_TAG),
|
||||||
|
m_joyport(*this,JOYPORT_TAG) { }
|
||||||
|
|
||||||
// CRU (Communication Register Unit) handling
|
// CRU (Communication Register Unit) handling
|
||||||
DECLARE_READ8_MEMBER(cruread);
|
DECLARE_READ8_MEMBER(cruread);
|
||||||
@ -248,13 +255,13 @@ public:
|
|||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER( keyboard_interrupt );
|
DECLARE_WRITE_LINE_MEMBER( keyboard_interrupt );
|
||||||
|
|
||||||
geneve_keyboard_device* m_keyboard;
|
required_device<tms9995_device> m_cpu;
|
||||||
geneve_mouse_device* m_mouse;
|
required_device<tms9901_device> m_tms9901;
|
||||||
tms9901_device* m_tms9901;
|
required_device<geneve_keyboard_device> m_keyboard;
|
||||||
geneve_mapper_device* m_mapper;
|
required_device<geneve_mapper_device> m_mapper;
|
||||||
peribox_device* m_peribox;
|
required_device<peribox_device> m_peribox;
|
||||||
tms9995_device* m_cpu;
|
required_device<geneve_mouse_device> m_mouse;
|
||||||
joyport_device* m_joyport;
|
required_device<joyport_device> m_joyport;
|
||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER( inta );
|
DECLARE_WRITE_LINE_MEMBER( inta );
|
||||||
DECLARE_WRITE_LINE_MEMBER( intb );
|
DECLARE_WRITE_LINE_MEMBER( intb );
|
||||||
@ -679,17 +686,6 @@ WRITE_LINE_MEMBER( geneve_state::dbin_line )
|
|||||||
m_mapper->dbin_in(state);
|
m_mapper->dbin_in(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
static TMS9995_CONFIG( geneve_processor_config )
|
|
||||||
{
|
|
||||||
DEVCB_DRIVER_MEMBER(geneve_state, external_operation),
|
|
||||||
DEVCB_NULL, // Instruction acquisition
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(geneve_state, clock_out),
|
|
||||||
DEVCB_NULL, // HOLDA
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(geneve_state, dbin_line), // DBIN
|
|
||||||
INTERNAL_RAM, // use internal RAM
|
|
||||||
NO_OVERFLOW_INT // The generally available versions of TMS9995 have a deactivated overflow interrupt
|
|
||||||
};
|
|
||||||
|
|
||||||
static const mm58274c_interface geneve_mm58274c_interface =
|
static const mm58274c_interface geneve_mm58274c_interface =
|
||||||
{
|
{
|
||||||
1, /* mode 24*/
|
1, /* mode 24*/
|
||||||
@ -702,13 +698,6 @@ DRIVER_INIT_MEMBER(geneve_state,geneve)
|
|||||||
|
|
||||||
void geneve_state::machine_start()
|
void geneve_state::machine_start()
|
||||||
{
|
{
|
||||||
m_tms9901 = static_cast<tms9901_device*>(machine().device(TMS9901_TAG));
|
|
||||||
m_mapper = static_cast<geneve_mapper_device*>(machine().device(GMAPPER_TAG));
|
|
||||||
m_keyboard = static_cast<geneve_keyboard_device*>(machine().device(GKEYBOARD_TAG));
|
|
||||||
m_peribox = static_cast<peribox_device*>(machine().device(PERIBOX_TAG));
|
|
||||||
m_mouse = static_cast<geneve_mouse_device*>(machine().device(GMOUSE_TAG));
|
|
||||||
m_cpu = static_cast<tms9995_device*>(machine().device("maincpu"));
|
|
||||||
m_joyport = static_cast<joyport_device*>(machine().device(JOYPORT_TAG));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -735,7 +724,10 @@ void geneve_state::machine_reset()
|
|||||||
static MACHINE_CONFIG_START( geneve_60hz, geneve_state )
|
static MACHINE_CONFIG_START( geneve_60hz, geneve_state )
|
||||||
// basic machine hardware
|
// basic machine hardware
|
||||||
// TMS9995 CPU @ 12.0 MHz
|
// TMS9995 CPU @ 12.0 MHz
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9995, 12000000, memmap, crumap, geneve_processor_config)
|
MCFG_TMS99xx_ADD("maincpu", TMS9995, 12000000, memmap, crumap)
|
||||||
|
MCFG_TMS9995_EXTOP_HANDLER( WRITE8(geneve_state, external_operation) )
|
||||||
|
MCFG_TMS9995_CLKOUT_HANDLER( WRITELINE(geneve_state, clock_out) )
|
||||||
|
MCFG_TMS9995_DBIN_HANDLER( WRITELINE(geneve_state, dbin_line) )
|
||||||
|
|
||||||
// video hardware
|
// video hardware
|
||||||
// Although we should have a 60 Hz screen rate, we have to set it to 30 here.
|
// Although we should have a 60 Hz screen rate, we have to set it to 30 here.
|
||||||
|
@ -188,21 +188,10 @@ WRITE_LINE_MEMBER(ti990_10_state::tape_interrupt)
|
|||||||
// set_int9(state);
|
// set_int9(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
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_TMS99xx_ADD("maincpu", TI990_10, 4000000, ti990_10_memmap, ti990_10_io, cpuconf)
|
MCFG_TMS99xx_ADD("maincpu", TI990_10, 4000000, ti990_10_memmap, ti990_10_io )
|
||||||
|
|
||||||
// VDT 911 terminal
|
// VDT 911 terminal
|
||||||
MCFG_DEVICE_ADD("vdt911", VDT911, 0)
|
MCFG_DEVICE_ADD("vdt911", VDT911, 0)
|
||||||
|
@ -275,17 +275,6 @@ static const floppy_interface ti990_4_floppy_interface =
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static TMS99xx_CONFIG( cpuconf )
|
|
||||||
{
|
|
||||||
DEVCB_DRIVER_MEMBER(ti990_4_state, external_operation),
|
|
||||||
DEVCB_DRIVER_MEMBER(ti990_4_state, interrupt_level),
|
|
||||||
DEVCB_NULL, // Instruction acquisition
|
|
||||||
DEVCB_NULL, // Clock out
|
|
||||||
DEVCB_NULL, // wait
|
|
||||||
DEVCB_NULL, // Hold acknowledge
|
|
||||||
DEVCB_NULL // data bus in
|
|
||||||
};
|
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(ti990_4_state,ti990_4)
|
MACHINE_RESET_MEMBER(ti990_4_state,ti990_4)
|
||||||
{
|
{
|
||||||
hold_load();
|
hold_load();
|
||||||
@ -302,7 +291,10 @@ DRIVER_INIT_MEMBER(ti990_4_state, ti990_4)
|
|||||||
static MACHINE_CONFIG_START( ti990_4, ti990_4_state )
|
static MACHINE_CONFIG_START( ti990_4, ti990_4_state )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
/* TMS9900 CPU @ 3.0(???) MHz */
|
/* TMS9900 CPU @ 3.0(???) MHz */
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map, cpuconf)
|
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map)
|
||||||
|
MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(ti990_4_state, external_operation) )
|
||||||
|
MCFG_TMS99xx_INTLEVEL_HANDLER( READ8(ti990_4_state, interrupt_level) )
|
||||||
|
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(ti990_4_state, ti990_4 )
|
MCFG_MACHINE_RESET_OVERRIDE(ti990_4_state, ti990_4 )
|
||||||
|
|
||||||
// Terminal
|
// Terminal
|
||||||
@ -320,7 +312,9 @@ MACHINE_CONFIG_END
|
|||||||
static MACHINE_CONFIG_START( ti990_4v, ti990_4_state )
|
static MACHINE_CONFIG_START( ti990_4v, ti990_4_state )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
/* TMS9900 CPU @ 3.0(???) MHz */
|
/* TMS9900 CPU @ 3.0(???) MHz */
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map_v, cpuconf)
|
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map_v)
|
||||||
|
MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(ti990_4_state, external_operation) )
|
||||||
|
MCFG_TMS99xx_INTLEVEL_HANDLER( READ8(ti990_4_state, interrupt_level) )
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(ti990_4_state, ti990_4 )
|
MCFG_MACHINE_RESET_OVERRIDE(ti990_4_state, ti990_4 )
|
||||||
|
|
||||||
// Terminal
|
// Terminal
|
||||||
@ -376,5 +370,5 @@ ROM_START(ti990_4v)
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
|
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
|
||||||
COMP( 1976, ti990_4, 0, 0, ti990_4, 0, ti990_4_state, ti990_4, "Texas Instruments", "TI 990/4 Minicomputer System" , GAME_NOT_WORKING | GAME_NO_SOUND )
|
COMP( 1976, ti990_4, 0, 0, ti990_4, 0, ti990_4_state, ti990_4, "Texas Instruments", "TI Model 990/4 Microcomputer System" , GAME_NOT_WORKING | GAME_NO_SOUND )
|
||||||
COMP( 1976, ti990_4v, ti990_4, 0, ti990_4v, 0, ti990_4_state, ti990_4, "Texas Instruments", "TI 990/4 Minicomputer System with Video Display Terminal" , GAME_NOT_WORKING | GAME_NO_SOUND )
|
COMP( 1976, ti990_4v, ti990_4, 0, ti990_4v, 0, ti990_4_state, ti990_4, "Texas Instruments", "TI Model 990/4 Microcomputer System with Video Display Terminal" , GAME_NOT_WORKING | GAME_NO_SOUND )
|
||||||
|
@ -81,7 +81,6 @@ would just have taken three extra tracks on the main board and a OR gate in an A
|
|||||||
#include "machine/tms9901.h"
|
#include "machine/tms9901.h"
|
||||||
#include "cpu/tms9900/tms9995.h"
|
#include "cpu/tms9900/tms9995.h"
|
||||||
|
|
||||||
|
|
||||||
class ti99_2_state : public driver_device
|
class ti99_2_state : public driver_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -365,21 +364,11 @@ static INPUT_PORTS_START(ti99_2)
|
|||||||
|
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
static TMS9995_CONFIG( cpuconf95 )
|
|
||||||
{
|
|
||||||
DEVCB_NULL, // external op
|
|
||||||
DEVCB_NULL, // Instruction acquisition
|
|
||||||
DEVCB_NULL, // clock out
|
|
||||||
DEVCB_NULL, // HOLDA
|
|
||||||
DEVCB_NULL, // DBIN
|
|
||||||
INTERNAL_RAM, // use internal RAM
|
|
||||||
NO_OVERFLOW_INT // The generally available versions of TMS9995 have a deactivated overflow interrupt
|
|
||||||
};
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( ti99_2, ti99_2_state )
|
static MACHINE_CONFIG_START( ti99_2, ti99_2_state )
|
||||||
/* basic machine hardware */
|
// basic machine hardware
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9995, 10700000, ti99_2_memmap, ti99_2_io, cpuconf95)
|
// TMS9995, standard variant
|
||||||
|
// We have no lines connected yet
|
||||||
|
MCFG_TMS99xx_ADD("maincpu", TMS9995, 10700000, ti99_2_memmap, ti99_2_io)
|
||||||
|
|
||||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", ti99_2_state, ti99_2_vblank_interrupt)
|
MCFG_CPU_VBLANK_INT_DRIVER("screen", ti99_2_state, ti99_2_vblank_interrupt)
|
||||||
|
|
||||||
|
@ -64,7 +64,13 @@ class ti99_4p_state : public driver_device
|
|||||||
public:
|
public:
|
||||||
ti99_4p_state(const machine_config &mconfig, device_type type, const char *tag)
|
ti99_4p_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_cassette(*this, "cassette") { }
|
m_cpu(*this, "maincpu"),
|
||||||
|
m_tms9901(*this, TMS9901_TAG),
|
||||||
|
m_sound(*this, TISOUND_TAG),
|
||||||
|
m_video(*this, VIDEO_SYSTEM_TAG),
|
||||||
|
m_cassette(*this, "cassette"),
|
||||||
|
m_peribox(*this, PERIBOX_TAG),
|
||||||
|
m_joyport(*this, JOYPORT_TAG) { }
|
||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER( console_ready );
|
DECLARE_WRITE_LINE_MEMBER( console_ready );
|
||||||
DECLARE_WRITE_LINE_MEMBER( console_ready_dmux );
|
DECLARE_WRITE_LINE_MEMBER( console_ready_dmux );
|
||||||
@ -102,13 +108,13 @@ public:
|
|||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER(set_tms9901_INT2_from_v9938);
|
DECLARE_WRITE_LINE_MEMBER(set_tms9901_INT2_from_v9938);
|
||||||
|
|
||||||
tms9900_device* m_cpu;
|
required_device<tms9900_device> m_cpu;
|
||||||
tms9901_device* m_tms9901;
|
required_device<tms9901_device> m_tms9901;
|
||||||
ti_sound_system_device* m_sound;
|
required_device<ti_sound_system_device> m_sound;
|
||||||
ti_exp_video_device* m_video;
|
required_device<ti_exp_video_device> m_video;
|
||||||
required_device<cassette_image_device> m_cassette;
|
required_device<cassette_image_device> m_cassette;
|
||||||
peribox_device* m_peribox;
|
required_device<peribox_device> m_peribox;
|
||||||
joyport_device* m_joyport;
|
required_device<joyport_device> m_joyport;
|
||||||
|
|
||||||
// Pointer to ROM0
|
// Pointer to ROM0
|
||||||
UINT16 *m_rom0;
|
UINT16 *m_rom0;
|
||||||
@ -808,25 +814,8 @@ WRITE8_MEMBER( ti99_4p_state::external_operation )
|
|||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static TMS99xx_CONFIG( sgcpu_cpuconf )
|
|
||||||
{
|
|
||||||
DEVCB_DRIVER_MEMBER(ti99_4p_state, external_operation),
|
|
||||||
DEVCB_DRIVER_MEMBER(ti99_4p_state, interrupt_level),
|
|
||||||
DEVCB_NULL, // Instruction acquisition
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4p_state, clock_out),
|
|
||||||
DEVCB_NULL, // wait
|
|
||||||
DEVCB_NULL // Hold acknowledge
|
|
||||||
};
|
|
||||||
|
|
||||||
void ti99_4p_state::machine_start()
|
void ti99_4p_state::machine_start()
|
||||||
{
|
{
|
||||||
m_cpu = static_cast<tms9900_device*>(machine().device("maincpu"));
|
|
||||||
m_peribox = static_cast<peribox_device*>(machine().device(PERIBOX_TAG));
|
|
||||||
m_sound = static_cast<ti_sound_system_device*>(machine().device(TISOUND_TAG));
|
|
||||||
m_video = static_cast<ti_exp_video_device*>(machine().device(VIDEO_SYSTEM_TAG));
|
|
||||||
m_tms9901 = static_cast<tms9901_device*>(machine().device(TMS9901_TAG));
|
|
||||||
m_joyport = static_cast<joyport_device*>(machine().device(JOYPORT_TAG));
|
|
||||||
|
|
||||||
m_ram = (UINT16*)(*memregion(SAMSMEM_TAG));
|
m_ram = (UINT16*)(*memregion(SAMSMEM_TAG));
|
||||||
m_scratchpad = (UINT16*)(*memregion(PADMEM_TAG));
|
m_scratchpad = (UINT16*)(*memregion(PADMEM_TAG));
|
||||||
|
|
||||||
@ -875,7 +864,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(ti99_4p_state::sgcpu_hblank_interrupt)
|
|||||||
static MACHINE_CONFIG_START( ti99_4p_60hz, ti99_4p_state )
|
static MACHINE_CONFIG_START( ti99_4p_60hz, ti99_4p_state )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
/* TMS9900 CPU @ 3.0 MHz */
|
/* TMS9900 CPU @ 3.0 MHz */
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map, sgcpu_cpuconf)
|
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map)
|
||||||
|
MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(ti99_4p_state, external_operation) )
|
||||||
|
MCFG_TMS99xx_INTLEVEL_HANDLER( READ8(ti99_4p_state, interrupt_level) )
|
||||||
|
MCFG_TMS99xx_CLKOUT_HANDLER( WRITELINE(ti99_4p_state, clock_out) )
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
// Although we should have a 60 Hz screen rate, we have to set it to 30 here.
|
// Although we should have a 60 Hz screen rate, we have to set it to 30 here.
|
||||||
|
@ -38,7 +38,6 @@
|
|||||||
|
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/tms9900/tms9900.h"
|
#include "cpu/tms9900/tms9900.h"
|
||||||
|
|
||||||
@ -58,7 +57,6 @@
|
|||||||
#define TRACE_READY 0
|
#define TRACE_READY 0
|
||||||
#define TRACE_INTERRUPTS 0
|
#define TRACE_INTERRUPTS 0
|
||||||
#define TRACE_CRU 0
|
#define TRACE_CRU 0
|
||||||
#define LOG logerror
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The console.
|
The console.
|
||||||
@ -139,9 +137,10 @@ private:
|
|||||||
// Console type
|
// Console type
|
||||||
int m_console;
|
int m_console;
|
||||||
|
|
||||||
// Latch for 9901 INT2, INT1 lines
|
// Latch for 9901 INT1, INT2, and INT12 lines
|
||||||
int m_9901_int;
|
line_state m_int1;
|
||||||
void set_9901_int(int line, line_state state);
|
line_state m_int2;
|
||||||
|
line_state m_int12;
|
||||||
|
|
||||||
// Connected devices
|
// Connected devices
|
||||||
required_device<tms9900_device> m_cpu;
|
required_device<tms9900_device> m_cpu;
|
||||||
@ -377,7 +376,7 @@ static GROM_CONFIG(grom2_config)
|
|||||||
|
|
||||||
READ8_MEMBER( ti99_4x_state::cruread )
|
READ8_MEMBER( ti99_4x_state::cruread )
|
||||||
{
|
{
|
||||||
// if (TRACE_CRU) LOG("read access to CRU address %04x\n", offset << 4);
|
// if (TRACE_CRU) logerror("read access to CRU address %04x\n", offset << 4);
|
||||||
UINT8 value = 0;
|
UINT8 value = 0;
|
||||||
|
|
||||||
// Similar to the bus8z_devices, just let the gromport and the p-box
|
// Similar to the bus8z_devices, just let the gromport and the p-box
|
||||||
@ -393,7 +392,7 @@ READ8_MEMBER( ti99_4x_state::cruread )
|
|||||||
|
|
||||||
WRITE8_MEMBER( ti99_4x_state::cruwrite )
|
WRITE8_MEMBER( ti99_4x_state::cruwrite )
|
||||||
{
|
{
|
||||||
if (TRACE_CRU) LOG("ti99_4x: write access to CRU address %04x\n", offset << 1);
|
if (TRACE_CRU) logerror("ti99_4x: write access to CRU address %04x\n", offset << 1);
|
||||||
// The QI version does not propagate the CRU signals to the cartridge slot
|
// The QI version does not propagate the CRU signals to the cartridge slot
|
||||||
if (m_console != MODEL_4QI) m_gromport->cruwrite(space, offset<<1, data);
|
if (m_console != MODEL_4QI) m_gromport->cruwrite(space, offset<<1, data);
|
||||||
m_peribox->cruwrite(space, offset<<1, data);
|
m_peribox->cruwrite(space, offset<<1, data);
|
||||||
@ -406,7 +405,7 @@ WRITE8_MEMBER( ti99_4x_state::external_operation )
|
|||||||
if (offset == IDLE_OP) return;
|
if (offset == IDLE_OP) return;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG("ti99_4x: External operation %s not implemented on TI-99 board\n", extop[offset]);
|
logerror("ti99_4x: External operation %s not implemented on TI-99 board\n", extop[offset]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -474,15 +473,18 @@ READ8_MEMBER( ti99_4x_state::read_by_9901 )
|
|||||||
{
|
{
|
||||||
answer &= ~(ioport("ALPHA")->read());
|
answer &= ~(ioport("ALPHA")->read());
|
||||||
}
|
}
|
||||||
answer = (answer << 3) | m_9901_int;
|
answer = (answer << 3);
|
||||||
|
if (m_int1 == CLEAR_LINE) answer |= 0x02;
|
||||||
|
if (m_int2 == CLEAR_LINE) answer |= 0x04;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TMS9901_INT8_INT15:
|
case TMS9901_INT8_INT15:
|
||||||
// |1|1|1|1|0|K|K|K|
|
// |1|1|1|INT12|0|K|K|K|
|
||||||
if (m_keyboard_column >= (m_console==MODEL_4? 5:6)) answer = 0x07;
|
if (m_keyboard_column >= (m_console==MODEL_4? 5:6)) answer = 0x07;
|
||||||
else answer = ((ioport(column[m_keyboard_column])->read())>>5) & 0x07;
|
else answer = ((ioport(column[m_keyboard_column])->read())>>5) & 0x07;
|
||||||
answer |= 0xf0;
|
answer |= 0xe0;
|
||||||
|
if (m_console != MODEL_4 || m_int12==CLEAR_LINE) answer |= 0x10;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TMS9901_P0_P7:
|
case TMS9901_P0_P7:
|
||||||
@ -509,7 +511,7 @@ READ8_MEMBER( ti99_4x_state::read_by_9901 )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Handler for tms9901 P0 pin (handset data acknowledge)
|
Handler for TMS9901 P0 pin (handset data acknowledge); only for 99/4
|
||||||
*/
|
*/
|
||||||
WRITE_LINE_MEMBER( ti99_4x_state::handset_ack )
|
WRITE_LINE_MEMBER( ti99_4x_state::handset_ack )
|
||||||
{
|
{
|
||||||
@ -635,27 +637,21 @@ WRITE_LINE_MEMBER( ti99_4x_state::dbin_line )
|
|||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void ti99_4x_state::set_9901_int( int line, line_state state)
|
|
||||||
{
|
|
||||||
m_tms9901->set_single_int(line, state);
|
|
||||||
// We latch the value for the read operation. Mind the negative logic.
|
|
||||||
if (state==CLEAR_LINE) m_9901_int |= (1<<line);
|
|
||||||
else m_9901_int &= ~(1<<line);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
set the state of TMS9901's INT2 (called by the tms9928 core)
|
set the state of TMS9901's INT2 (called by the tms9928 core)
|
||||||
*/
|
*/
|
||||||
WRITE_LINE_MEMBER( ti99_4x_state::set_tms9901_INT2 )
|
WRITE_LINE_MEMBER( ti99_4x_state::set_tms9901_INT2 )
|
||||||
{
|
{
|
||||||
if (TRACE_INTERRUPTS) LOG("ti99_4x: VDP int 2 on tms9901, level=%d\n", state);
|
if (TRACE_INTERRUPTS) logerror("ti99_4x: VDP INT2 on tms9901, level=%d\n", state);
|
||||||
set_9901_int(2, (line_state)state);
|
m_int2 = (line_state)state;
|
||||||
|
m_tms9901->set_single_int(2, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE_LINE_MEMBER(ti99_4x_state::set_tms9901_INT2_from_v9938)
|
WRITE_LINE_MEMBER(ti99_4x_state::set_tms9901_INT2_from_v9938)
|
||||||
{
|
{
|
||||||
if (TRACE_INTERRUPTS) LOG("ti99_4x: VDP int 2 on tms9901, level=%d\n", state);
|
if (TRACE_INTERRUPTS) logerror("ti99_4x: VDP INT2 on tms9901, level=%d\n", state);
|
||||||
set_9901_int(2, (line_state)state);
|
m_int2 = (line_state)state;
|
||||||
|
m_tms9901->set_single_int(2, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -663,8 +659,9 @@ WRITE_LINE_MEMBER(ti99_4x_state::set_tms9901_INT2_from_v9938)
|
|||||||
*/
|
*/
|
||||||
WRITE_LINE_MEMBER( ti99_4x_state::set_tms9901_INT12)
|
WRITE_LINE_MEMBER( ti99_4x_state::set_tms9901_INT12)
|
||||||
{
|
{
|
||||||
if (TRACE_INTERRUPTS) LOG("ti99_4x: joyport INT 12 on tms9901, level=%d\n", state);
|
if (TRACE_INTERRUPTS) logerror("ti99_4x: joyport INT12 on tms9901, level=%d\n", state);
|
||||||
set_9901_int(12, (line_state)state);
|
m_int12 = (line_state)state;
|
||||||
|
m_tms9901->set_single_int(12, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -673,7 +670,7 @@ WRITE_LINE_MEMBER( ti99_4x_state::set_tms9901_INT12)
|
|||||||
*/
|
*/
|
||||||
INPUT_CHANGED_MEMBER( ti99_4x_state::load_interrupt )
|
INPUT_CHANGED_MEMBER( ti99_4x_state::load_interrupt )
|
||||||
{
|
{
|
||||||
LOG("ti99_4x: LOAD interrupt, level=%d\n", newval);
|
logerror("ti99_4x: LOAD interrupt, level=%d\n", newval);
|
||||||
m_cpu->set_input_line(INT_9900_LOAD, (newval==0)? ASSERT_LINE : CLEAR_LINE);
|
m_cpu->set_input_line(INT_9900_LOAD, (newval==0)? ASSERT_LINE : CLEAR_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -695,7 +692,7 @@ void ti99_4x_state::console_ready_join(int id, int state)
|
|||||||
|
|
||||||
if (TRACE_READY)
|
if (TRACE_READY)
|
||||||
{
|
{
|
||||||
if (m_nready_prev != m_nready_combined) LOG("ti99_4x: READY bits = %04x\n", ~m_nready_combined);
|
if (m_nready_prev != m_nready_combined) logerror("ti99_4x: READY bits = %04x\n", ~m_nready_combined);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_nready_prev = m_nready_combined;
|
m_nready_prev = m_nready_combined;
|
||||||
@ -747,13 +744,14 @@ WRITE_LINE_MEMBER( ti99_4x_state::console_reset )
|
|||||||
|
|
||||||
WRITE_LINE_MEMBER( ti99_4x_state::extint )
|
WRITE_LINE_MEMBER( ti99_4x_state::extint )
|
||||||
{
|
{
|
||||||
if (TRACE_INTERRUPTS) LOG("ti99_4x: EXTINT level = %02x\n", state);
|
if (TRACE_INTERRUPTS) logerror("ti99_4x: EXTINT level = %02x\n", state);
|
||||||
set_9901_int(1, (line_state)state);
|
m_int1 = (line_state)state;
|
||||||
|
m_tms9901->set_single_int(11, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE_LINE_MEMBER( ti99_4x_state::notconnected )
|
WRITE_LINE_MEMBER( ti99_4x_state::notconnected )
|
||||||
{
|
{
|
||||||
if (TRACE_INTERRUPTS) LOG("ti99_4x: Setting a not connected line ... ignored\n");
|
if (TRACE_INTERRUPTS) logerror("ti99_4x: Setting a not connected line ... ignored\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
@ -764,71 +762,6 @@ static TMS9928A_INTERFACE(ti99_4_tms9928a_interface)
|
|||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, set_tms9901_INT2)
|
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, set_tms9901_INT2)
|
||||||
};
|
};
|
||||||
|
|
||||||
/* TMS9901 setup.
|
|
||||||
const tms9901_interface tms9901_wiring_ti99_4 =
|
|
||||||
{
|
|
||||||
TMS9901_INT1 | TMS9901_INT2 | TMS9901_INTC, // only input pins whose state is always known
|
|
||||||
|
|
||||||
// read handler
|
|
||||||
DEVCB_DRIVER_MEMBER(ti99_4x_state, read_by_9901),
|
|
||||||
|
|
||||||
// write handlers
|
|
||||||
{
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, handset_ack),
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, keyC0),
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, keyC1),
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, keyC2),
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, cs1_motor),
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, cs2_motor),
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, audio_gate),
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, cassette_output),
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
// interrupt handler
|
|
||||||
DEVCB_DRIVER_MEMBER(ti99_4x_state, tms9901_interrupt)
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
const tms9901_interface tms9901_wiring_ti99_4a =
|
|
||||||
{
|
|
||||||
TMS9901_INT1 | TMS9901_INT2 | TMS9901_INTC,
|
|
||||||
|
|
||||||
// read handler
|
|
||||||
DEVCB_DRIVER_MEMBER(ti99_4x_state, read_by_9901),
|
|
||||||
|
|
||||||
// write handlers
|
|
||||||
{
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, keyC0),
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, keyC1),
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, keyC2),
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, alphaW),
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, cs1_motor),
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, cs2_motor),
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, audio_gate),
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, cassette_output),
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
DEVCB_DRIVER_MEMBER(ti99_4x_state, tms9901_interrupt)
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Devices attached to the databus multiplexer. We cannot solve this with
|
Devices attached to the databus multiplexer. We cannot solve this with
|
||||||
the common address maps since the multiplexer also inserts wait states
|
the common address maps since the multiplexer also inserts wait states
|
||||||
@ -873,17 +806,6 @@ static DMUX_CONFIG( datamux_conf_ev )
|
|||||||
dmux_devices_ev
|
dmux_devices_ev
|
||||||
};
|
};
|
||||||
|
|
||||||
static TMS99xx_CONFIG( ti99_cpuconf )
|
|
||||||
{
|
|
||||||
DEVCB_DRIVER_MEMBER(ti99_4x_state, external_operation),
|
|
||||||
DEVCB_DRIVER_MEMBER(ti99_4x_state, interrupt_level),
|
|
||||||
DEVCB_NULL, // Instruction acquisition
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, clock_out),
|
|
||||||
DEVCB_NULL, // wait
|
|
||||||
DEVCB_NULL, // Hold acknowledge
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, dbin_line) // data bus in
|
|
||||||
};
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
Machine definitions
|
Machine definitions
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
@ -900,21 +822,26 @@ MACHINE_RESET_MEMBER(ti99_4x_state,ti99_4)
|
|||||||
{
|
{
|
||||||
m_cpu->set_ready(ASSERT_LINE);
|
m_cpu->set_ready(ASSERT_LINE);
|
||||||
m_cpu->set_hold(CLEAR_LINE);
|
m_cpu->set_hold(CLEAR_LINE);
|
||||||
m_9901_int = 0x03; // INT2* and INT1* set to 1, i.e. inactive
|
m_int1 = CLEAR_LINE;
|
||||||
|
m_int2 = CLEAR_LINE;
|
||||||
|
m_int12 = CLEAR_LINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/**********************************************************************
|
||||||
TI-99/4 - the predecessor of the more popular TI-99/4A
|
TI-99/4 - predecessor of the more popular TI-99/4A
|
||||||
*/
|
***********************************************************************/
|
||||||
static MACHINE_CONFIG_START( ti99_4_60hz, ti99_4x_state )
|
|
||||||
/* CPU */
|
static MACHINE_CONFIG_START( ti99_4, ti99_4x_state )
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map, ti99_cpuconf)
|
// CPU
|
||||||
|
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map)
|
||||||
|
MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(ti99_4x_state, external_operation) )
|
||||||
|
MCFG_TMS99xx_INTLEVEL_HANDLER( READ8(ti99_4x_state, interrupt_level) )
|
||||||
|
MCFG_TMS99xx_CLKOUT_HANDLER( WRITELINE(ti99_4x_state, clock_out) )
|
||||||
|
MCFG_TMS99xx_DBIN_HANDLER( WRITELINE(ti99_4x_state, dbin_line) )
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(ti99_4x_state, ti99_4 )
|
MCFG_MACHINE_START_OVERRIDE(ti99_4x_state, ti99_4 )
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(ti99_4x_state, ti99_4 )
|
MCFG_MACHINE_RESET_OVERRIDE(ti99_4x_state, ti99_4 )
|
||||||
|
|
||||||
MCFG_TI_TMS991x_ADD_NTSC(VIDEO_SYSTEM_TAG, TMS9918, ti99_4_tms9928a_interface)
|
|
||||||
|
|
||||||
/* Main board */
|
/* Main board */
|
||||||
MCFG_DEVICE_ADD(TMS9901_TAG, TMS9901, 3000000)
|
MCFG_DEVICE_ADD(TMS9901_TAG, TMS9901, 3000000)
|
||||||
MCFG_TMS9901_READBLOCK_HANDLER( READ8(ti99_4x_state, read_by_9901) )
|
MCFG_TMS9901_READBLOCK_HANDLER( READ8(ti99_4x_state, read_by_9901) )
|
||||||
@ -962,81 +889,33 @@ static MACHINE_CONFIG_START( ti99_4_60hz, ti99_4x_state )
|
|||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
||||||
MCFG_GROM_ADD( GROM2_TAG, grom2_config )
|
MCFG_GROM_ADD( GROM2_TAG, grom2_config )
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
||||||
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
/*
|
||||||
|
US version: 60 Hz, NTSC
|
||||||
|
*/
|
||||||
|
static MACHINE_CONFIG_DERIVED( ti99_4_60hz, ti99_4 )
|
||||||
|
MCFG_TI_TMS991x_ADD_NTSC(VIDEO_SYSTEM_TAG, TMS9918, ti99_4_tms9928a_interface)
|
||||||
|
|
||||||
// Joystick port
|
// Joystick port
|
||||||
MCFG_TI_JOYPORT4_ADD( JOYPORT_TAG, 60 )
|
MCFG_TI_JOYPORT4_ADD( JOYPORT_TAG, 60 )
|
||||||
MCFG_JOYPORT_INT_HANDLER( WRITELINE(ti99_4x_state, set_tms9901_INT12) )
|
MCFG_JOYPORT_INT_HANDLER( WRITELINE(ti99_4x_state, set_tms9901_INT12) )
|
||||||
|
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( ti99_4_50hz, ti99_4x_state )
|
/*
|
||||||
/* CPU */
|
European version: 50 Hz, PAL
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map, ti99_cpuconf)
|
*/
|
||||||
|
static MACHINE_CONFIG_DERIVED( ti99_4_50hz, ti99_4 )
|
||||||
MCFG_MACHINE_START_OVERRIDE(ti99_4x_state, ti99_4 )
|
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(ti99_4x_state, ti99_4 )
|
|
||||||
|
|
||||||
/* video hardware */
|
|
||||||
MCFG_TI_TMS991x_ADD_PAL(VIDEO_SYSTEM_TAG, TMS9929, ti99_4_tms9928a_interface)
|
MCFG_TI_TMS991x_ADD_PAL(VIDEO_SYSTEM_TAG, TMS9929, ti99_4_tms9928a_interface)
|
||||||
|
|
||||||
/* Main board */
|
|
||||||
MCFG_DEVICE_ADD(TMS9901_TAG, TMS9901, 3000000)
|
|
||||||
MCFG_TMS9901_READBLOCK_HANDLER( READ8(ti99_4x_state, read_by_9901) )
|
|
||||||
MCFG_TMS9901_P0_HANDLER( WRITELINE( ti99_4x_state, handset_ack) )
|
|
||||||
MCFG_TMS9901_P2_HANDLER( WRITELINE( ti99_4x_state, keyC0) )
|
|
||||||
MCFG_TMS9901_P3_HANDLER( WRITELINE( ti99_4x_state, keyC1) )
|
|
||||||
MCFG_TMS9901_P4_HANDLER( WRITELINE( ti99_4x_state, keyC2) )
|
|
||||||
MCFG_TMS9901_P6_HANDLER( WRITELINE( ti99_4x_state, cs1_motor) )
|
|
||||||
MCFG_TMS9901_P7_HANDLER( WRITELINE( ti99_4x_state, cs2_motor) )
|
|
||||||
MCFG_TMS9901_P8_HANDLER( WRITELINE( ti99_4x_state, audio_gate) )
|
|
||||||
MCFG_TMS9901_P9_HANDLER( WRITELINE( ti99_4x_state, cassette_output) )
|
|
||||||
MCFG_TMS9901_INTLEVEL_HANDLER( WRITE8( ti99_4x_state, tms9901_interrupt) )
|
|
||||||
|
|
||||||
MCFG_DMUX_ADD( DATAMUX_TAG, datamux_conf )
|
|
||||||
MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) )
|
|
||||||
|
|
||||||
MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG )
|
|
||||||
MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_cart) )
|
|
||||||
MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_4x_state, console_reset) )
|
|
||||||
|
|
||||||
/* Software list */
|
|
||||||
MCFG_SOFTWARE_LIST_ADD("cart_list_ti99", "ti99_cart")
|
|
||||||
|
|
||||||
/* Peripheral expansion box */
|
|
||||||
MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX, 0)
|
|
||||||
MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_4x_state, extint) )
|
|
||||||
MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_4x_state, notconnected) )
|
|
||||||
MCFG_PERIBOX_READY_HANDLER( DEVWRITELINE(DATAMUX_TAG, ti99_datamux_device, ready_line) )
|
|
||||||
|
|
||||||
/* sound hardware */
|
|
||||||
MCFG_TI_SOUND_94624_ADD( TISOUND_TAG )
|
|
||||||
MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_sound) )
|
|
||||||
|
|
||||||
/* Cassette drives */
|
|
||||||
MCFG_SPEAKER_STANDARD_MONO("cass_out")
|
|
||||||
MCFG_CASSETTE_ADD( "cassette", default_cassette_interface )
|
|
||||||
MCFG_CASSETTE_ADD( "cassette2", default_cassette_interface )
|
|
||||||
|
|
||||||
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
|
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "cass_out", 0.25)
|
|
||||||
|
|
||||||
/* GROM devices */
|
|
||||||
MCFG_GROM_ADD( GROM0_TAG, grom0_config )
|
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
|
||||||
MCFG_GROM_ADD( GROM1_TAG, grom1_config )
|
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
|
||||||
MCFG_GROM_ADD( GROM2_TAG, grom2_config )
|
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
|
||||||
|
|
||||||
// Joystick port
|
// Joystick port
|
||||||
MCFG_TI_JOYPORT4_ADD( JOYPORT_TAG, 50 )
|
MCFG_TI_JOYPORT4_ADD( JOYPORT_TAG, 50 )
|
||||||
MCFG_JOYPORT_INT_HANDLER( WRITELINE(ti99_4x_state, set_tms9901_INT12) )
|
MCFG_JOYPORT_INT_HANDLER( WRITELINE(ti99_4x_state, set_tms9901_INT12) )
|
||||||
|
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
/*
|
/**********************************************************************
|
||||||
TI-99/4A - replaced the 99/4
|
TI-99/4A - replaced the 99/4 and became the standard TI-99 console
|
||||||
*/
|
***********************************************************************/
|
||||||
|
|
||||||
MACHINE_START_MEMBER(ti99_4x_state,ti99_4a)
|
MACHINE_START_MEMBER(ti99_4x_state,ti99_4a)
|
||||||
{
|
{
|
||||||
@ -1050,18 +929,22 @@ MACHINE_RESET_MEMBER(ti99_4x_state,ti99_4a)
|
|||||||
{
|
{
|
||||||
m_cpu->set_ready(ASSERT_LINE);
|
m_cpu->set_ready(ASSERT_LINE);
|
||||||
m_cpu->set_hold(CLEAR_LINE);
|
m_cpu->set_hold(CLEAR_LINE);
|
||||||
|
m_int1 = CLEAR_LINE;
|
||||||
|
m_int2 = CLEAR_LINE;
|
||||||
|
m_int12 = CLEAR_LINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( ti99_4a_60hz, ti99_4x_state )
|
static MACHINE_CONFIG_START( ti99_4a, ti99_4x_state )
|
||||||
/* CPU */
|
/* CPU */
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map, ti99_cpuconf)
|
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map)
|
||||||
|
MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(ti99_4x_state, external_operation) )
|
||||||
|
MCFG_TMS99xx_INTLEVEL_HANDLER( READ8(ti99_4x_state, interrupt_level) )
|
||||||
|
MCFG_TMS99xx_CLKOUT_HANDLER( WRITELINE(ti99_4x_state, clock_out) )
|
||||||
|
MCFG_TMS99xx_DBIN_HANDLER( WRITELINE(ti99_4x_state, dbin_line) )
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(ti99_4x_state, ti99_4a )
|
MCFG_MACHINE_START_OVERRIDE(ti99_4x_state, ti99_4a )
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(ti99_4x_state, ti99_4a )
|
MCFG_MACHINE_RESET_OVERRIDE(ti99_4x_state, ti99_4a )
|
||||||
|
|
||||||
/* Video hardware */
|
|
||||||
MCFG_TI_TMS991x_ADD_NTSC(VIDEO_SYSTEM_TAG, TMS9918A, ti99_4_tms9928a_interface)
|
|
||||||
|
|
||||||
/* Main board */
|
/* Main board */
|
||||||
MCFG_DEVICE_ADD(TMS9901_TAG, TMS9901, 3000000)
|
MCFG_DEVICE_ADD(TMS9901_TAG, TMS9901, 3000000)
|
||||||
MCFG_TMS9901_READBLOCK_HANDLER( READ8(ti99_4x_state, read_by_9901) )
|
MCFG_TMS9901_READBLOCK_HANDLER( READ8(ti99_4x_state, read_by_9901) )
|
||||||
@ -1109,83 +992,38 @@ static MACHINE_CONFIG_START( ti99_4a_60hz, ti99_4x_state )
|
|||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
||||||
MCFG_GROM_ADD( GROM2_TAG, grom2_config )
|
MCFG_GROM_ADD( GROM2_TAG, grom2_config )
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
||||||
|
|
||||||
// Joystick port
|
|
||||||
MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 60 )
|
|
||||||
|
|
||||||
MACHINE_CONFIG_END
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( ti99_4a_50hz, ti99_4x_state )
|
|
||||||
/* CPU */
|
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map, ti99_cpuconf)
|
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(ti99_4x_state, ti99_4a )
|
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(ti99_4x_state, ti99_4a )
|
|
||||||
|
|
||||||
/* Video hardware */
|
|
||||||
MCFG_TI_TMS991x_ADD_PAL(VIDEO_SYSTEM_TAG, TMS9929A, ti99_4_tms9928a_interface)
|
|
||||||
|
|
||||||
/* Main board */
|
|
||||||
MCFG_DEVICE_ADD(TMS9901_TAG, TMS9901, 3000000)
|
|
||||||
MCFG_TMS9901_READBLOCK_HANDLER( READ8(ti99_4x_state, read_by_9901) )
|
|
||||||
MCFG_TMS9901_P2_HANDLER( WRITELINE( ti99_4x_state, keyC0) )
|
|
||||||
MCFG_TMS9901_P3_HANDLER( WRITELINE( ti99_4x_state, keyC1) )
|
|
||||||
MCFG_TMS9901_P4_HANDLER( WRITELINE( ti99_4x_state, keyC2) )
|
|
||||||
MCFG_TMS9901_P5_HANDLER( WRITELINE( ti99_4x_state, alphaW) )
|
|
||||||
MCFG_TMS9901_P6_HANDLER( WRITELINE( ti99_4x_state, cs1_motor) )
|
|
||||||
MCFG_TMS9901_P7_HANDLER( WRITELINE( ti99_4x_state, cs2_motor) )
|
|
||||||
MCFG_TMS9901_P8_HANDLER( WRITELINE( ti99_4x_state, audio_gate) )
|
|
||||||
MCFG_TMS9901_P9_HANDLER( WRITELINE( ti99_4x_state, cassette_output) )
|
|
||||||
MCFG_TMS9901_INTLEVEL_HANDLER( WRITE8( ti99_4x_state, tms9901_interrupt) )
|
|
||||||
|
|
||||||
MCFG_DMUX_ADD( DATAMUX_TAG, datamux_conf )
|
|
||||||
MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) )
|
|
||||||
MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG )
|
|
||||||
MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_cart) )
|
|
||||||
MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_4x_state, console_reset) )
|
|
||||||
|
|
||||||
/* Software list */
|
|
||||||
MCFG_SOFTWARE_LIST_ADD("cart_list_ti99", "ti99_cart")
|
|
||||||
|
|
||||||
/* Peripheral expansion box */
|
|
||||||
MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX, 0)
|
|
||||||
MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_4x_state, extint) )
|
|
||||||
MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_4x_state, notconnected) )
|
|
||||||
MCFG_PERIBOX_READY_HANDLER( DEVWRITELINE(DATAMUX_TAG, ti99_datamux_device, ready_line) )
|
|
||||||
|
|
||||||
/* sound hardware */
|
|
||||||
MCFG_TI_SOUND_94624_ADD( TISOUND_TAG )
|
|
||||||
MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_sound) )
|
|
||||||
|
|
||||||
/* Cassette drives */
|
|
||||||
MCFG_SPEAKER_STANDARD_MONO("cass_out")
|
|
||||||
MCFG_CASSETTE_ADD( "cassette", default_cassette_interface )
|
|
||||||
MCFG_CASSETTE_ADD( "cassette2", default_cassette_interface )
|
|
||||||
|
|
||||||
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
|
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "cass_out", 0.25)
|
|
||||||
|
|
||||||
/* GROM devices */
|
|
||||||
MCFG_GROM_ADD( GROM0_TAG, grom0_config )
|
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
|
||||||
MCFG_GROM_ADD( GROM1_TAG, grom1_config )
|
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
|
||||||
MCFG_GROM_ADD( GROM2_TAG, grom2_config )
|
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
|
||||||
|
|
||||||
// Joystick port
|
|
||||||
MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 50 )
|
|
||||||
|
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
US version: 60 Hz, NTSC
|
||||||
|
*/
|
||||||
|
static MACHINE_CONFIG_DERIVED( ti99_4a_60hz, ti99_4a )
|
||||||
|
// Video hardware
|
||||||
|
MCFG_TI_TMS991x_ADD_NTSC(VIDEO_SYSTEM_TAG, TMS9918A, ti99_4_tms9928a_interface)
|
||||||
|
|
||||||
|
// Joystick port
|
||||||
|
MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 60 )
|
||||||
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
/*
|
||||||
|
European version: 50 Hz, PAL
|
||||||
|
*/
|
||||||
|
static MACHINE_CONFIG_DERIVED( ti99_4a_50hz, ti99_4a )
|
||||||
|
// Video hardware
|
||||||
|
MCFG_TI_TMS991x_ADD_PAL(VIDEO_SYSTEM_TAG, TMS9929A, ti99_4_tms9928a_interface)
|
||||||
|
|
||||||
|
// Joystick port
|
||||||
|
MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 50 )
|
||||||
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
TI-99/4QI - the final version of the TI-99/4A
|
TI-99/4QI - the final version of the TI-99/4A
|
||||||
This was a last modification of the console. One purpose was to lower
|
This was a last modification of the console. One purpose was to lower
|
||||||
production costs by a redesigned board layout. The other was that TI
|
production costs by a redesigned board layout. The other was that TI
|
||||||
removed the ROM search for cartridges so that only cartridges with GROMs
|
removed the ROM search for cartridges so that only cartridges with GROMs
|
||||||
could be started, effectively kicking out all third-party cartridges like
|
could be started, effectively kicking out all third-party cartridges like
|
||||||
those from Atarisoft.
|
those from Atarisoft.
|
||||||
*/
|
*************************************************************************/
|
||||||
|
|
||||||
MACHINE_START_MEMBER(ti99_4x_state, ti99_4qi)
|
MACHINE_START_MEMBER(ti99_4x_state, ti99_4qi)
|
||||||
{
|
{
|
||||||
@ -1195,146 +1033,49 @@ MACHINE_START_MEMBER(ti99_4x_state, ti99_4qi)
|
|||||||
m_nready_combined = 0;
|
m_nready_combined = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( ti99_4qi_60hz, ti99_4x_state )
|
static MACHINE_CONFIG_DERIVED( ti99_4qi, ti99_4a )
|
||||||
/* CPU */
|
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map, ti99_cpuconf)
|
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(ti99_4x_state, ti99_4qi )
|
MCFG_MACHINE_START_OVERRIDE(ti99_4x_state, ti99_4qi )
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(ti99_4x_state, ti99_4a )
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
/*
|
||||||
|
US version: 60 Hz, NTSC
|
||||||
|
*/
|
||||||
|
static MACHINE_CONFIG_DERIVED( ti99_4qi_60hz, ti99_4qi )
|
||||||
/* Video hardware */
|
/* Video hardware */
|
||||||
MCFG_TI_TMS991x_ADD_NTSC(VIDEO_SYSTEM_TAG, TMS9918A, ti99_4_tms9928a_interface)
|
MCFG_TI_TMS991x_ADD_NTSC(VIDEO_SYSTEM_TAG, TMS9918A, ti99_4_tms9928a_interface)
|
||||||
|
|
||||||
/* Main board */
|
|
||||||
MCFG_DEVICE_ADD(TMS9901_TAG, TMS9901, 3000000)
|
|
||||||
MCFG_TMS9901_READBLOCK_HANDLER( READ8(ti99_4x_state, read_by_9901) )
|
|
||||||
MCFG_TMS9901_P2_HANDLER( WRITELINE( ti99_4x_state, keyC0) )
|
|
||||||
MCFG_TMS9901_P3_HANDLER( WRITELINE( ti99_4x_state, keyC1) )
|
|
||||||
MCFG_TMS9901_P4_HANDLER( WRITELINE( ti99_4x_state, keyC2) )
|
|
||||||
MCFG_TMS9901_P5_HANDLER( WRITELINE( ti99_4x_state, alphaW) )
|
|
||||||
MCFG_TMS9901_P6_HANDLER( WRITELINE( ti99_4x_state, cs1_motor) )
|
|
||||||
MCFG_TMS9901_P7_HANDLER( WRITELINE( ti99_4x_state, cs2_motor) )
|
|
||||||
MCFG_TMS9901_P8_HANDLER( WRITELINE( ti99_4x_state, audio_gate) )
|
|
||||||
MCFG_TMS9901_P9_HANDLER( WRITELINE( ti99_4x_state, cassette_output) )
|
|
||||||
MCFG_TMS9901_INTLEVEL_HANDLER( WRITE8( ti99_4x_state, tms9901_interrupt) )
|
|
||||||
|
|
||||||
MCFG_DMUX_ADD( DATAMUX_TAG, datamux_conf )
|
|
||||||
MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) )
|
|
||||||
MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG )
|
|
||||||
MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_cart) )
|
|
||||||
MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_4x_state, console_reset) )
|
|
||||||
|
|
||||||
/* Software list */
|
|
||||||
MCFG_SOFTWARE_LIST_ADD("cart_list_ti99", "ti99_cart")
|
|
||||||
|
|
||||||
/* Peripheral expansion box */
|
|
||||||
MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX, 0)
|
|
||||||
MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_4x_state, extint) )
|
|
||||||
MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_4x_state, notconnected) )
|
|
||||||
MCFG_PERIBOX_READY_HANDLER( DEVWRITELINE(DATAMUX_TAG, ti99_datamux_device, ready_line) )
|
|
||||||
|
|
||||||
/* sound hardware */
|
|
||||||
MCFG_TI_SOUND_94624_ADD( TISOUND_TAG )
|
|
||||||
MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_sound) )
|
|
||||||
|
|
||||||
/* Cassette drives */
|
|
||||||
MCFG_SPEAKER_STANDARD_MONO("cass_out")
|
|
||||||
MCFG_CASSETTE_ADD( "cassette", default_cassette_interface )
|
|
||||||
MCFG_CASSETTE_ADD( "cassette2", default_cassette_interface )
|
|
||||||
|
|
||||||
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
|
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "cass_out", 0.25)
|
|
||||||
|
|
||||||
/* GROM devices */
|
|
||||||
MCFG_GROM_ADD( GROM0_TAG, grom0_config )
|
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
|
||||||
MCFG_GROM_ADD( GROM1_TAG, grom1_config )
|
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
|
||||||
MCFG_GROM_ADD( GROM2_TAG, grom2_config )
|
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
|
||||||
|
|
||||||
// Joystick port
|
// Joystick port
|
||||||
MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 60 )
|
MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 60 )
|
||||||
|
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( ti99_4qi_50hz, ti99_4x_state )
|
/*
|
||||||
/* CPU */
|
European version: 50 Hz, PAL
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map, ti99_cpuconf)
|
*/
|
||||||
|
static MACHINE_CONFIG_DERIVED( ti99_4qi_50hz, ti99_4qi )
|
||||||
MCFG_MACHINE_START_OVERRIDE(ti99_4x_state, ti99_4qi )
|
// Video hardware
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(ti99_4x_state, ti99_4a )
|
|
||||||
|
|
||||||
/* Video hardware */
|
|
||||||
MCFG_TI_TMS991x_ADD_PAL(VIDEO_SYSTEM_TAG, TMS9929A, ti99_4_tms9928a_interface)
|
MCFG_TI_TMS991x_ADD_PAL(VIDEO_SYSTEM_TAG, TMS9929A, ti99_4_tms9928a_interface)
|
||||||
|
|
||||||
/* Main board */
|
|
||||||
MCFG_DEVICE_ADD(TMS9901_TAG, TMS9901, 3000000)
|
|
||||||
MCFG_TMS9901_READBLOCK_HANDLER( READ8(ti99_4x_state, read_by_9901) )
|
|
||||||
MCFG_TMS9901_P2_HANDLER( WRITELINE( ti99_4x_state, keyC0) )
|
|
||||||
MCFG_TMS9901_P3_HANDLER( WRITELINE( ti99_4x_state, keyC1) )
|
|
||||||
MCFG_TMS9901_P4_HANDLER( WRITELINE( ti99_4x_state, keyC2) )
|
|
||||||
MCFG_TMS9901_P5_HANDLER( WRITELINE( ti99_4x_state, alphaW) )
|
|
||||||
MCFG_TMS9901_P6_HANDLER( WRITELINE( ti99_4x_state, cs1_motor) )
|
|
||||||
MCFG_TMS9901_P7_HANDLER( WRITELINE( ti99_4x_state, cs2_motor) )
|
|
||||||
MCFG_TMS9901_P8_HANDLER( WRITELINE( ti99_4x_state, audio_gate) )
|
|
||||||
MCFG_TMS9901_P9_HANDLER( WRITELINE( ti99_4x_state, cassette_output) )
|
|
||||||
MCFG_TMS9901_INTLEVEL_HANDLER( WRITE8( ti99_4x_state, tms9901_interrupt) )
|
|
||||||
|
|
||||||
MCFG_DMUX_ADD( DATAMUX_TAG, datamux_conf )
|
|
||||||
MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) )
|
|
||||||
MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG )
|
|
||||||
MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_cart) )
|
|
||||||
MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_4x_state, console_reset) )
|
|
||||||
|
|
||||||
/* Software list */
|
|
||||||
MCFG_SOFTWARE_LIST_ADD("cart_list_ti99", "ti99_cart")
|
|
||||||
|
|
||||||
/* Peripheral expansion box */
|
|
||||||
MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX, 0)
|
|
||||||
MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_4x_state, extint) )
|
|
||||||
MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_4x_state, notconnected) )
|
|
||||||
MCFG_PERIBOX_READY_HANDLER( DEVWRITELINE(DATAMUX_TAG, ti99_datamux_device, ready_line) )
|
|
||||||
|
|
||||||
/* sound hardware */
|
|
||||||
MCFG_TI_SOUND_94624_ADD( TISOUND_TAG )
|
|
||||||
MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_sound) )
|
|
||||||
|
|
||||||
/* Cassette drives */
|
|
||||||
MCFG_SPEAKER_STANDARD_MONO("cass_out")
|
|
||||||
MCFG_CASSETTE_ADD( "cassette", default_cassette_interface )
|
|
||||||
MCFG_CASSETTE_ADD( "cassette2", default_cassette_interface )
|
|
||||||
|
|
||||||
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
|
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "cass_out", 0.25)
|
|
||||||
|
|
||||||
/* GROM devices */
|
|
||||||
MCFG_GROM_ADD( GROM0_TAG, grom0_config )
|
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
|
||||||
MCFG_GROM_ADD( GROM1_TAG, grom1_config )
|
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
|
||||||
MCFG_GROM_ADD( GROM2_TAG, grom2_config )
|
|
||||||
MCFG_GROM_READY_CALLBACK(WRITELINE(ti99_4x_state, console_ready_grom))
|
|
||||||
|
|
||||||
// Joystick port
|
// Joystick port
|
||||||
MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 50 )
|
MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 50 )
|
||||||
|
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
|
TI-99/4A with 80-column support. Actually a separate expansion card (EVPC),
|
||||||
|
replacing the console video processor.
|
||||||
|
*************************************************************************/
|
||||||
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(ti99_4x_state::ti99_4ev_hblank_interrupt)
|
TIMER_DEVICE_CALLBACK_MEMBER(ti99_4x_state::ti99_4ev_hblank_interrupt)
|
||||||
{
|
{
|
||||||
machine().device<v9938_device>(VDP_TAG)->interrupt();
|
machine().device<v9938_device>(VDP_TAG)->interrupt();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
TI-99/4A with 80-column support. Actually a separate expansion card (EVPC),
|
|
||||||
replacing the console video processor.
|
|
||||||
*/
|
|
||||||
static MACHINE_CONFIG_START( ti99_4ev_60hz, ti99_4x_state )
|
static MACHINE_CONFIG_START( ti99_4ev_60hz, ti99_4x_state )
|
||||||
/* CPU */
|
/* CPU */
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map, ti99_cpuconf)
|
MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map)
|
||||||
|
MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(ti99_4x_state, external_operation) )
|
||||||
|
MCFG_TMS99xx_INTLEVEL_HANDLER( READ8(ti99_4x_state, interrupt_level) )
|
||||||
|
MCFG_TMS99xx_CLKOUT_HANDLER( WRITELINE(ti99_4x_state, clock_out) )
|
||||||
|
MCFG_TMS99xx_DBIN_HANDLER( WRITELINE(ti99_4x_state, dbin_line) )
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(ti99_4x_state, ti99_4a )
|
MCFG_MACHINE_START_OVERRIDE(ti99_4x_state, ti99_4a )
|
||||||
|
|
||||||
|
@ -877,22 +877,6 @@ WRITE_LINE_MEMBER( ti99_8_state::clock_out )
|
|||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
/*
|
|
||||||
MP9537 mask: This variant of the TMS9995 does not contain on-chip RAM
|
|
||||||
Also, the overflow interrupt is disabled; in the available documentation
|
|
||||||
this feature is said to be disabled and is announced for a later version.
|
|
||||||
*/
|
|
||||||
static TMS9995_CONFIG( ti99_8_processor_config )
|
|
||||||
{
|
|
||||||
DEVCB_DRIVER_MEMBER(ti99_8_state, external_operation),
|
|
||||||
DEVCB_NULL, // Instruction acquisition
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(ti99_8_state, clock_out),
|
|
||||||
DEVCB_NULL, // HOLDA
|
|
||||||
DEVCB_NULL, // DBIN
|
|
||||||
NO_INTERNAL_RAM,
|
|
||||||
NO_OVERFLOW_INT
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Format:
|
Format:
|
||||||
Name, mode, stop, mask, select, write, read8z function, write8 function
|
Name, mode, stop, mask, select, write, read8z function, write8 function
|
||||||
@ -1023,9 +1007,13 @@ MACHINE_RESET_MEMBER(ti99_8_state, ti99_8)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( ti99_8_60hz, ti99_8_state )
|
static MACHINE_CONFIG_START( ti99_8_60hz, ti99_8_state )
|
||||||
/* basic machine hardware */
|
// basic machine hardware */
|
||||||
/* TMS9995-MP9537 CPU @ 10.7 MHz */
|
// TMS9995-MP9537 CPU @ 10.7 MHz
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9995, XTAL_10_738635MHz, memmap, crumap, ti99_8_processor_config)
|
// MP9537 mask: This variant of the TMS9995 does not contain on-chip RAM
|
||||||
|
MCFG_TMS99xx_ADD("maincpu", TMS9995_MP9537, XTAL_10_738635MHz, memmap, crumap)
|
||||||
|
MCFG_TMS9995_EXTOP_HANDLER( WRITE8(ti99_8_state, external_operation) )
|
||||||
|
MCFG_TMS9995_CLKOUT_HANDLER( WRITELINE(ti99_8_state, clock_out) )
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(ti99_8_state, ti99_8 )
|
MCFG_MACHINE_START_OVERRIDE(ti99_8_state, ti99_8 )
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(ti99_8_state, ti99_8 )
|
MCFG_MACHINE_RESET_OVERRIDE(ti99_8_state, ti99_8 )
|
||||||
|
|
||||||
@ -1083,7 +1071,7 @@ static MACHINE_CONFIG_START( ti99_8_60hz, ti99_8_state )
|
|||||||
|
|
||||||
/* Devices */
|
/* Devices */
|
||||||
MCFG_DEVICE_ADD(SPEECH_TAG, TI99_SPEECH8, 0)
|
MCFG_DEVICE_ADD(SPEECH_TAG, TI99_SPEECH8, 0)
|
||||||
MCFG_SPEECH8_READY_CALLBACK(WRITELINE(ti99_8_state, console_ready_speech))
|
MCFG_SPEECH8_READY_CALLBACK(WRITELINE(ti99_8_state, console_ready_speech))
|
||||||
|
|
||||||
// Joystick port
|
// Joystick port
|
||||||
MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 60 )
|
MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 60 )
|
||||||
@ -1093,7 +1081,10 @@ MACHINE_CONFIG_END
|
|||||||
static MACHINE_CONFIG_START( ti99_8_50hz, ti99_8_state )
|
static MACHINE_CONFIG_START( ti99_8_50hz, ti99_8_state )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
/* TMS9995-MP9537 CPU @ 10.7 MHz */
|
/* TMS9995-MP9537 CPU @ 10.7 MHz */
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9995, XTAL_10_738635MHz, memmap, crumap, ti99_8_processor_config)
|
MCFG_TMS99xx_ADD("maincpu", TMS9995_MP9537, XTAL_10_738635MHz, memmap, crumap)
|
||||||
|
MCFG_TMS9995_EXTOP_HANDLER( WRITE8(ti99_8_state, external_operation) )
|
||||||
|
MCFG_TMS9995_CLKOUT_HANDLER( WRITELINE(ti99_8_state, clock_out) )
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(ti99_8_state, ti99_8 )
|
MCFG_MACHINE_START_OVERRIDE(ti99_8_state, ti99_8 )
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(ti99_8_state, ti99_8 )
|
MCFG_MACHINE_RESET_OVERRIDE(ti99_8_state, ti99_8 )
|
||||||
|
|
||||||
@ -1149,8 +1140,8 @@ static MACHINE_CONFIG_START( ti99_8_50hz, ti99_8_state )
|
|||||||
MCFG_GROM_LIBRARY_ADD3(pascal3_grom, pascal3)
|
MCFG_GROM_LIBRARY_ADD3(pascal3_grom, pascal3)
|
||||||
|
|
||||||
/* Devices */
|
/* Devices */
|
||||||
MCFG_DEVICE_ADD(SPEECH_TAG, TI99_SPEECH8, 0)
|
MCFG_DEVICE_ADD(SPEECH_TAG, TI99_SPEECH8, 0)
|
||||||
MCFG_SPEECH8_READY_CALLBACK(WRITELINE(ti99_8_state, console_ready_speech))
|
MCFG_SPEECH8_READY_CALLBACK(WRITELINE(ti99_8_state, console_ready_speech))
|
||||||
|
|
||||||
// Joystick port
|
// Joystick port
|
||||||
MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 50 )
|
MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 50 )
|
||||||
|
@ -822,18 +822,10 @@ static ADDRESS_MAP_START( tm990_189_cru_map, AS_IO, 8, tm990189_state )
|
|||||||
AM_RANGE(0x0400, 0x05ff) AM_DEVWRITE("tms9902", tms9902_device, cruwrite) /* optional tms9902 */
|
AM_RANGE(0x0400, 0x05ff) AM_DEVWRITE("tms9902", tms9902_device, cruwrite) /* optional tms9902 */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static TMS9980A_CONFIG( cpuconf )
|
|
||||||
{
|
|
||||||
DEVCB_DRIVER_MEMBER(tm990189_state, external_operation),
|
|
||||||
DEVCB_NULL, // Instruction acquisition
|
|
||||||
DEVCB_NULL, // Clock out
|
|
||||||
DEVCB_NULL, // Hold acknowledge
|
|
||||||
DEVCB_NULL // DBIN
|
|
||||||
};
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( tm990_189, tm990189_state )
|
static MACHINE_CONFIG_START( tm990_189, tm990189_state )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9980A, 2000000, tm990_189_memmap, tm990_189_cru_map, cpuconf)
|
MCFG_TMS99xx_ADD("maincpu", TMS9980A, 2000000, tm990_189_memmap, tm990_189_cru_map)
|
||||||
|
MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(tm990189_state, external_operation) )
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(tm990189_state, tm990_189 )
|
MCFG_MACHINE_START_OVERRIDE(tm990189_state, tm990_189 )
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(tm990189_state, tm990_189 )
|
MCFG_MACHINE_RESET_OVERRIDE(tm990189_state, tm990_189 )
|
||||||
@ -888,7 +880,8 @@ MACHINE_CONFIG_END
|
|||||||
|
|
||||||
static MACHINE_CONFIG_START( tm990_189_v, tm990189_state )
|
static MACHINE_CONFIG_START( tm990_189_v, tm990189_state )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9980A, 2000000, tm990_189_v_memmap, tm990_189_cru_map, cpuconf)
|
MCFG_TMS99xx_ADD("maincpu", TMS9980A, 2000000, tm990_189_v_memmap, tm990_189_cru_map)
|
||||||
|
MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(tm990189_state, external_operation) )
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(tm990189_state, tm990_189_v )
|
MCFG_MACHINE_START_OVERRIDE(tm990189_state, tm990_189_v )
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(tm990189_state, tm990_189_v )
|
MCFG_MACHINE_RESET_OVERRIDE(tm990189_state, tm990_189_v )
|
||||||
|
@ -754,21 +754,11 @@ static INPUT_PORTS_START(pyuutajr)
|
|||||||
PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_UNUSED)
|
PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
static TMS9995_CONFIG( cpuconf95 )
|
|
||||||
{
|
|
||||||
DEVCB_NULL, // external op
|
|
||||||
DEVCB_NULL, // Instruction acquisition
|
|
||||||
DEVCB_NULL, // clock out
|
|
||||||
DEVCB_NULL, // HOLDA
|
|
||||||
DEVCB_NULL, // DBIN
|
|
||||||
INTERNAL_RAM, // use internal RAM
|
|
||||||
NO_OVERFLOW_INT // The generally available versions of TMS9995 have a deactivated overflow interrupt
|
|
||||||
};
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( tutor, tutor_state )
|
static MACHINE_CONFIG_START( tutor, tutor_state )
|
||||||
/* basic machine hardware */
|
// basic machine hardware
|
||||||
/* TMS9995 CPU @ 10.7 MHz */
|
// TMS9995 CPU @ 10.7 MHz
|
||||||
MCFG_TMS99xx_ADD("maincpu", TMS9995, 10700000, tutor_memmap, tutor_io, cpuconf95)
|
// No lines connected yet
|
||||||
|
MCFG_TMS99xx_ADD("maincpu", TMS9995, XTAL_10_738635MHz, tutor_memmap, tutor_io)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_TMS9928A_ADD( "tms9928a", TMS9928A, tutor_tms9928a_interface )
|
MCFG_TMS9928A_ADD( "tms9928a", TMS9928A, tutor_tms9928a_interface )
|
||||||
|
Loading…
Reference in New Issue
Block a user