mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
tmc600: Fixed printer handshake, RAM/ROM region sizes, and implemented video according to actual hardware. [Curt Coder]
This commit is contained in:
parent
c10dd36e84
commit
ee277264e2
@ -50,30 +50,30 @@ Notes:
|
||||
CN2 - 10x2 pin printer connector [TMC-700]
|
||||
CN3 - 32x3 pin EURO connector
|
||||
CN4 - DIN5D tape connector
|
||||
1 input (500 mV / 47 kohm)
|
||||
1 input (500 mV / 47 Kohm)
|
||||
2 GND
|
||||
3 output (580 mV / 47 kohm)
|
||||
4 input (500 mV / 47 kohm)
|
||||
5 output (580 mV / 47 kohm)
|
||||
3 output (580 mV / 47 Kohm)
|
||||
4 input (500 mV / 47 Kohm)
|
||||
5 output (580 mV / 47 Kohm)
|
||||
CN5 - DIN5X video connector
|
||||
1 GND
|
||||
2 GND
|
||||
3 ?
|
||||
3 composite video output (75 ohm)
|
||||
4 GND
|
||||
5 ?
|
||||
5 composite video output (75 ohm)
|
||||
CN6 - DIN2 power connector
|
||||
1 8..12V DC..400Hz 300mA
|
||||
1 input 8..12V DC..400Hz 300mA
|
||||
2 GND
|
||||
CN7 - DIN5D audio connector [TMCP-300]
|
||||
1 NC
|
||||
1 N/C
|
||||
2 GND
|
||||
3 AUDIO
|
||||
4 NC
|
||||
5 AUDIO
|
||||
3 mono audio output
|
||||
4 N/C
|
||||
5 mono audio output
|
||||
CN8 - 10x2 pin keyboard connector
|
||||
SW1 - RUN/STOP switch
|
||||
SW1 - RUN/STOP switch (left=run, right=stop)
|
||||
SW2 - internal speaker/external audio switch [TMCP-300]
|
||||
P1 - color phase lock adjustment
|
||||
P1 - color phase lock adjustment potentiometer
|
||||
C1 - dot oscillator adjustment variable capacitor
|
||||
C2 - chroma oscillator adjustment variable capacitor
|
||||
T1 - RF signal strength adjustment potentiometer [TMC-700]
|
||||
@ -88,37 +88,43 @@ Notes:
|
||||
|
||||
/*
|
||||
|
||||
TODO:
|
||||
TODO
|
||||
|
||||
- proper emulation of the VISMAC interface (cursor blinking, color RAM), schematics are needed
|
||||
- disk interface
|
||||
- serial interface expansion card
|
||||
- centronics printer handshaking
|
||||
- real time clock
|
||||
- connect expansion bus
|
||||
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
#include "includes/tmc600.h"
|
||||
|
||||
/* Read/Write Handlers */
|
||||
|
||||
WRITE8_MEMBER( tmc600_state::keyboard_latch_w )
|
||||
WRITE8_MEMBER( tmc600_state::printer_w )
|
||||
{
|
||||
m_keylatch = data;
|
||||
m_centronics->write_data0(BIT(data, 0));
|
||||
m_centronics->write_data1(BIT(data, 1));
|
||||
m_centronics->write_data2(BIT(data, 2));
|
||||
m_centronics->write_data3(BIT(data, 3));
|
||||
m_centronics->write_data4(BIT(data, 4));
|
||||
m_centronics->write_data5(BIT(data, 5));
|
||||
m_centronics->write_data6(BIT(data, 6));
|
||||
m_centronics->write_data7(BIT(data, 7));
|
||||
|
||||
m_centronics->write_strobe(0);
|
||||
m_centronics->write_strobe(1);
|
||||
}
|
||||
|
||||
/* Memory Maps */
|
||||
|
||||
static ADDRESS_MAP_START( tmc600_map, AS_PROGRAM, 8, tmc600_state )
|
||||
AM_RANGE(0x0000, 0x4fff) AM_ROM
|
||||
AM_RANGE(0x6000, 0xbfff) AM_RAM
|
||||
AM_RANGE(0x0000, 0x5fff) AM_ROM
|
||||
AM_RANGE(0x6000, 0x7fff) AM_RAM
|
||||
AM_RANGE(0xf400, 0xf7ff) AM_DEVICE(CDP1869_TAG, cdp1869_device, char_map)
|
||||
AM_RANGE(0xf800, 0xffff) AM_DEVICE(CDP1869_TAG, cdp1869_device, page_map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( tmc600_io_map, AS_IO, 8, tmc600_state )
|
||||
AM_RANGE(0x03, 0x03) AM_WRITE(keyboard_latch_w)
|
||||
AM_RANGE(0x04, 0x04) AM_DEVWRITE("cent_data_out", output_latch_device, write)
|
||||
AM_RANGE(0x03, 0x03) AM_DEVWRITE(CDP1852_KB_TAG, cdp1852_device, write)
|
||||
AM_RANGE(0x04, 0x04) AM_DEVWRITE(CDP1852_TMC700_TAG, cdp1852_device, write)
|
||||
AM_RANGE(0x05, 0x05) AM_WRITE(vismac_data_w)
|
||||
// AM_RANGE(0x06, 0x06) AM_WRITE(floppy_w)
|
||||
AM_RANGE(0x07, 0x07) AM_WRITE(vismac_register_w)
|
||||
@ -208,16 +214,11 @@ static INPUT_PORTS_START( tmc600 )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_LEFT) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
|
||||
|
||||
PORT_START("RUN")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Run/Stop") PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3)) PORT_TOGGLE
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Run/Stop") PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3)) PORT_TOGGLE PORT_WRITE_LINE_DEVICE_MEMBER(CDP1802_TAG, cosmac_device, clear_w)
|
||||
INPUT_PORTS_END
|
||||
|
||||
/* CDP1802 Interface */
|
||||
|
||||
READ_LINE_MEMBER( tmc600_state::clear_r )
|
||||
{
|
||||
return BIT(m_run->read(), 0);
|
||||
}
|
||||
|
||||
READ_LINE_MEMBER( tmc600_state::ef2_r )
|
||||
{
|
||||
return m_cassette->input() < 0;
|
||||
@ -225,9 +226,9 @@ READ_LINE_MEMBER( tmc600_state::ef2_r )
|
||||
|
||||
READ_LINE_MEMBER( tmc600_state::ef3_r )
|
||||
{
|
||||
uint8_t data = ~m_key_row[m_keylatch / 8]->read();
|
||||
uint8_t keylatch = m_bwio->do_r();
|
||||
|
||||
return BIT(data, m_keylatch % 8);
|
||||
return !BIT(m_key_row[(keylatch >> 3) & 0x07]->read(), keylatch & 0x07);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( tmc600_state::q_w )
|
||||
@ -235,37 +236,14 @@ WRITE_LINE_MEMBER( tmc600_state::q_w )
|
||||
m_cassette->output(state ? +1.0 : -1.0);
|
||||
}
|
||||
|
||||
/* Machine Initialization */
|
||||
|
||||
void tmc600_state::machine_start()
|
||||
{
|
||||
address_space &program = m_maincpu->space(AS_PROGRAM);
|
||||
|
||||
/* configure RAM */
|
||||
switch (m_ram->size())
|
||||
{
|
||||
case 8*1024:
|
||||
program.unmap_readwrite(0x8000, 0xbfff);
|
||||
break;
|
||||
|
||||
case 16*1024:
|
||||
program.unmap_readwrite(0xa000, 0xbfff);
|
||||
break;
|
||||
}
|
||||
|
||||
/* register for state saving */
|
||||
save_item(NAME(m_keylatch));
|
||||
}
|
||||
|
||||
/* Machine Drivers */
|
||||
|
||||
static MACHINE_CONFIG_START( tmc600 )
|
||||
// basic system hardware
|
||||
// CPU
|
||||
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_3_57MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(tmc600_map)
|
||||
MCFG_CPU_IO_MAP(tmc600_io_map)
|
||||
MCFG_COSMAC_WAIT_CALLBACK(VCC)
|
||||
MCFG_COSMAC_CLEAR_CALLBACK(READLINE(tmc600_state, clear_r))
|
||||
MCFG_COSMAC_EF2_CALLBACK(READLINE(tmc600_state, ef2_r))
|
||||
MCFG_COSMAC_EF3_CALLBACK(READLINE(tmc600_state, ef3_r))
|
||||
MCFG_COSMAC_Q_CALLBACK(WRITELINE(tmc600_state, q_w))
|
||||
@ -273,43 +251,66 @@ static MACHINE_CONFIG_START( tmc600 )
|
||||
// sound and video hardware
|
||||
MCFG_FRAGMENT_ADD(tmc600_video)
|
||||
|
||||
/* devices */
|
||||
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
|
||||
// keyboard output latch
|
||||
MCFG_DEVICE_ADD(CDP1852_KB_TAG, CDP1852, XTAL_3_57MHz/8) // clock is CDP1802 TPB
|
||||
MCFG_CDP1852_MODE_CALLBACK(VCC)
|
||||
|
||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
|
||||
// address bus demux for expansion bus
|
||||
MCFG_DEVICE_ADD(CDP1852_BUS_TAG, CDP1852, 0) // clock is expansion bus TPA
|
||||
MCFG_CDP1852_MODE_CALLBACK(GND)
|
||||
|
||||
// printer output latch
|
||||
MCFG_DEVICE_ADD(CDP1852_TMC700_TAG, CDP1852, XTAL_3_57MHz/8) // clock is CDP1802 TPB
|
||||
MCFG_CDP1852_MODE_CALLBACK(VCC)
|
||||
MCFG_CDP1852_DO_CALLBACK(WRITE8(tmc600_state, printer_w))
|
||||
|
||||
// printer connector
|
||||
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, nullptr)
|
||||
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(CDP1802_TAG, cosmac_device, ef4_w)) MCFG_DEVCB_XOR(1)
|
||||
|
||||
// cassette
|
||||
MCFG_CASSETTE_ADD("cassette")
|
||||
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
|
||||
|
||||
/* internal ram */
|
||||
// expansion bus connector
|
||||
MCFG_TMC600_EURO_BUS_SLOT_ADD(TMC600_EURO_BUS_TAG, tmc600_euro_bus_cards, nullptr)
|
||||
|
||||
// internal RAM
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
MCFG_RAM_DEFAULT_SIZE("8K")
|
||||
MCFG_RAM_EXTRA_OPTIONS("16K,24K")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/* ROMs */
|
||||
|
||||
#if 0
|
||||
ROM_START( tmc600s1 )
|
||||
ROM_REGION( 0x5000, CDP1802_TAG, 0 )
|
||||
ROM_REGION( 0x6000, CDP1802_TAG, 0 )
|
||||
ROM_LOAD( "sb20", 0x0000, 0x1000, NO_DUMP )
|
||||
ROM_LOAD( "sb21", 0x1000, 0x1000, NO_DUMP )
|
||||
ROM_LOAD( "sb22", 0x2000, 0x1000, NO_DUMP )
|
||||
ROM_LOAD( "sb23", 0x3000, 0x1000, NO_DUMP )
|
||||
ROM_LOAD( "190482_2", 0x4000, 0x1000, NO_DUMP )
|
||||
ROM_SYSTEM_BIOS( 0, "sb040282", "SB040282" )
|
||||
ROMX_LOAD( "190482", 0x4000, 0x1000, NO_DUMP, ROM_BIOS(1) )
|
||||
ROM_SYSTEM_BIOS( 1, "sbdos", "SBDOS" )
|
||||
ROMX_LOAD( "190482_", 0x4000, 0x1000, NO_DUMP, ROM_BIOS(2) )
|
||||
ROMX_LOAD( "190482_v", 0x5000, 0x1000, NO_DUMP, ROM_BIOS(2) )
|
||||
|
||||
ROM_REGION( 0x1000, "chargen", 0 )
|
||||
ROM_LOAD( "chargen", 0x0000, 0x1000, NO_DUMP )
|
||||
ROM_LOAD( "chargen", 0x0000, 0x1000, CRC(93f92cbf) SHA1(371156fb38fa5319c6fde537ccf14eed94e7adfb) )
|
||||
ROM_END
|
||||
#endif
|
||||
|
||||
ROM_START( tmc600s2 )
|
||||
ROM_REGION( 0x5000, CDP1802_TAG, 0 )
|
||||
ROM_REGION( 0x6000, CDP1802_TAG, 0 )
|
||||
ROM_LOAD( "sb30", 0x0000, 0x1000, CRC(95d1292a) SHA1(1fa52d59d3005f8ac74a32c2164fdb22947c2748) )
|
||||
ROM_LOAD( "sb31", 0x1000, 0x1000, CRC(2c8f3d17) SHA1(f14e8adbcddeaeaa29b1e7f3dfa741f4e230f599) )
|
||||
ROM_LOAD( "sb32", 0x2000, 0x1000, CRC(dd58a128) SHA1(be9bdb0fc5e0cc3dcc7f2fb7ccab69bf5b043803) )
|
||||
ROM_LOAD( "sb33", 0x3000, 0x1000, CRC(b7d241fa) SHA1(6f3eadf86c4e3aaf93d123e302a18dc4d9db964b) )
|
||||
ROM_LOAD( "151182", 0x4000, 0x1000, CRC(c1a8d9d8) SHA1(4552e1f06d0e338ba7b0f1c3a20b8a51c27dafde) )
|
||||
ROM_SYSTEM_BIOS( 0, "sb040282", "SB040282" )
|
||||
ROMX_LOAD( "151182", 0x4000, 0x1000, CRC(c1a8d9d8) SHA1(4552e1f06d0e338ba7b0f1c3a20b8a51c27dafde), ROM_BIOS(1) )
|
||||
ROM_SYSTEM_BIOS( 1, "sbdos", "SBDOS" )
|
||||
ROMX_LOAD( "151182_", 0x4000, 0x1000, NO_DUMP, ROM_BIOS(2) )
|
||||
ROMX_LOAD( "151182_v", 0x5000, 0x1000, NO_DUMP, ROM_BIOS(2) )
|
||||
|
||||
ROM_REGION( 0x1000, "chargen", 0 )
|
||||
ROM_LOAD( "chargen", 0x0000, 0x1000, CRC(93f92cbf) SHA1(371156fb38fa5319c6fde537ccf14eed94e7adfb) )
|
||||
|
@ -9,15 +9,20 @@
|
||||
#include "imagedev/cassette.h"
|
||||
#include "imagedev/snapquik.h"
|
||||
#include "bus/centronics/ctronics.h"
|
||||
#include "bus/tmc600/euro.h"
|
||||
#include "machine/cdp1852.h"
|
||||
#include "machine/ram.h"
|
||||
#include "machine/timer.h"
|
||||
#include "sound/cdp1869.h"
|
||||
#include "speaker.h"
|
||||
|
||||
#define SCREEN_TAG "screen"
|
||||
#define CDP1802_TAG "cdp1802"
|
||||
#define CDP1869_TAG "cdp1869"
|
||||
#define CENTRONICS_TAG "centronics"
|
||||
#define SCREEN_TAG "screen"
|
||||
#define CDP1802_TAG "cdp1802"
|
||||
#define CDP1869_TAG "cdp1869"
|
||||
#define CDP1852_KB_TAG "cdp1852_kb"
|
||||
#define CDP1852_BUS_TAG "cdp1852_bus"
|
||||
#define CDP1852_TMC700_TAG "cdp1852_printer"
|
||||
#define CENTRONICS_TAG "centronics"
|
||||
|
||||
#define TMC600_PAGE_RAM_SIZE 0x400
|
||||
#define TMC600_PAGE_RAM_MASK 0x3ff
|
||||
@ -29,8 +34,10 @@ public:
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, CDP1802_TAG),
|
||||
m_vis(*this, CDP1869_TAG),
|
||||
m_bwio(*this, CDP1852_KB_TAG),
|
||||
m_cassette(*this, "cassette"),
|
||||
m_centronics(*this, "centronics"),
|
||||
m_bus(*this, TMC600_EURO_BUS_TAG),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_char_rom(*this, "chargen"),
|
||||
m_page_ram(*this, "page_ram"),
|
||||
@ -41,8 +48,10 @@ public:
|
||||
|
||||
required_device<cosmac_device> m_maincpu;
|
||||
required_device<cdp1869_device> m_vis;
|
||||
required_device<cdp1852_device> m_bwio;
|
||||
required_device<cassette_image_device> m_cassette;
|
||||
required_device<centronics_device> m_centronics;
|
||||
required_device<tmc600_euro_bus_slot_t> m_bus;
|
||||
required_device<ram_device> m_ram;
|
||||
required_region_ptr<uint8_t> m_char_rom;
|
||||
required_shared_ptr<uint8_t> m_page_ram;
|
||||
@ -50,11 +59,9 @@ public:
|
||||
required_ioport m_run;
|
||||
required_ioport_array<8> m_key_row;
|
||||
|
||||
virtual void machine_start() override;
|
||||
|
||||
virtual void video_start() override;
|
||||
|
||||
DECLARE_WRITE8_MEMBER( keyboard_latch_w );
|
||||
DECLARE_WRITE8_MEMBER( printer_w );
|
||||
DECLARE_WRITE8_MEMBER( vismac_register_w );
|
||||
DECLARE_WRITE8_MEMBER( vismac_data_w );
|
||||
DECLARE_WRITE8_MEMBER( page_ram_w );
|
||||
@ -62,17 +69,15 @@ public:
|
||||
DECLARE_READ_LINE_MEMBER( ef2_r );
|
||||
DECLARE_READ_LINE_MEMBER( ef3_r );
|
||||
DECLARE_WRITE_LINE_MEMBER( q_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( prd_w );
|
||||
|
||||
uint8_t get_color(uint16_t pma);
|
||||
|
||||
// video state
|
||||
int m_vismac_reg_latch; // video register latch
|
||||
int m_vismac_color_latch; // color latch
|
||||
int m_vismac_bkg_latch; // background color latch
|
||||
int m_blink; // cursor blink
|
||||
|
||||
// keyboard state
|
||||
int m_keylatch; // key latch
|
||||
bool m_blink; // cursor blink
|
||||
int m_frame;
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(blink_tick);
|
||||
CDP1869_CHAR_RAM_READ_MEMBER(tmc600_char_ram_r);
|
||||
|
@ -5,50 +5,24 @@
|
||||
|
||||
WRITE8_MEMBER( tmc600_state::vismac_register_w )
|
||||
{
|
||||
m_vismac_reg_latch = data;
|
||||
m_vismac_reg_latch = data >> 4;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( tmc600_state::vismac_data_w )
|
||||
{
|
||||
uint16_t ma = m_maincpu->get_memory_address();
|
||||
|
||||
switch (m_vismac_reg_latch)
|
||||
switch (m_vismac_reg_latch & 0x07)
|
||||
{
|
||||
case 0x20:
|
||||
// character color latch
|
||||
m_vismac_color_latch = data;
|
||||
break;
|
||||
|
||||
case 0x30:
|
||||
// background color latch
|
||||
m_vismac_bkg_latch = data & 0x07;
|
||||
|
||||
m_vis->out3_w(space, ma, data);
|
||||
break;
|
||||
|
||||
case 0x40:
|
||||
m_vis->out4_w(space, ma, data);
|
||||
break;
|
||||
|
||||
case 0x50:
|
||||
m_vis->out5_w(space, ma, data);
|
||||
break;
|
||||
|
||||
case 0x60:
|
||||
m_vis->out6_w(space, ma, data);
|
||||
break;
|
||||
|
||||
case 0x70:
|
||||
m_vis->out7_w(space, ma, data);
|
||||
break;
|
||||
case 2: m_vismac_color_latch = data & 0x0f; break;
|
||||
case 3: m_vis->out3_w(space, ma, data); break;
|
||||
case 4: m_vis->out4_w(space, ma, data); break;
|
||||
case 5: m_vis->out5_w(space, ma, data); break;
|
||||
case 6: m_vis->out6_w(space, ma, data); break;
|
||||
case 7: m_vis->out7_w(space, ma, data); break;
|
||||
}
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(tmc600_state::blink_tick)
|
||||
{
|
||||
m_blink = !m_blink;
|
||||
}
|
||||
|
||||
uint8_t tmc600_state::get_color(uint16_t pma)
|
||||
{
|
||||
uint16_t pageaddr = pma & TMC600_PAGE_RAM_MASK;
|
||||
@ -56,7 +30,7 @@ uint8_t tmc600_state::get_color(uint16_t pma)
|
||||
|
||||
if (BIT(color, 3) && m_blink)
|
||||
{
|
||||
color = m_vismac_bkg_latch;
|
||||
color ^= 0x07;
|
||||
}
|
||||
|
||||
return color;
|
||||
@ -93,15 +67,28 @@ CDP1869_PCB_READ_MEMBER( tmc600_state::tmc600_pcb_r )
|
||||
return BIT(color, 0);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( tmc600_state::prd_w )
|
||||
{
|
||||
if (state) {
|
||||
m_frame++;
|
||||
|
||||
if (m_frame == 32) {
|
||||
m_frame = 0;
|
||||
|
||||
m_blink = !m_blink;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tmc600_state::video_start()
|
||||
{
|
||||
// allocate memory
|
||||
m_color_ram.allocate(TMC600_PAGE_RAM_SIZE);
|
||||
|
||||
// register for state saving
|
||||
// state saving
|
||||
save_item(NAME(m_vismac_reg_latch));
|
||||
save_item(NAME(m_vismac_color_latch));
|
||||
save_item(NAME(m_vismac_bkg_latch));
|
||||
save_item(NAME(m_frame));
|
||||
save_item(NAME(m_blink));
|
||||
}
|
||||
|
||||
@ -125,7 +112,6 @@ GFXDECODE_END
|
||||
MACHINE_CONFIG_START( tmc600_video )
|
||||
// video hardware
|
||||
MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("blink", tmc600_state, blink_tick, attotime::from_hz(2))
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", CDP1869_TAG":palette", tmc600)
|
||||
|
||||
@ -136,6 +122,7 @@ MACHINE_CONFIG_START( tmc600_video )
|
||||
MCFG_CDP1869_CHAR_PCB_READ_OWNER(tmc600_state, tmc600_pcb_r)
|
||||
MCFG_CDP1869_CHAR_RAM_READ_OWNER(tmc600_state, tmc600_char_ram_r)
|
||||
MCFG_CDP1869_PAL_NTSC_CALLBACK(VCC)
|
||||
MCFG_CDP1869_PRD_CALLBACK(WRITELINE(tmc600_state, prd_w))
|
||||
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MACHINE_CONFIG_END
|
||||
|
Loading…
Reference in New Issue
Block a user