summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/tek405x.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/tek405x.cpp')
-rw-r--r--src/mame/drivers/tek405x.cpp162
1 files changed, 43 insertions, 119 deletions
diff --git a/src/mame/drivers/tek405x.cpp b/src/mame/drivers/tek405x.cpp
index 162aba98841..db9a2572ac1 100644
--- a/src/mame/drivers/tek405x.cpp
+++ b/src/mame/drivers/tek405x.cpp
@@ -48,15 +48,10 @@ enum {
};
-
//**************************************************************************
// INTERRUPTS
//**************************************************************************
-//-------------------------------------------------
-// update_irq -
-//-------------------------------------------------
-
void tek4051_state::update_irq()
{
int state = m_kb_pia_irqa | m_kb_pia_irqb | m_x_pia_irqa | m_x_pia_irqb | m_gpib_pia_irqa | m_gpib_pia_irqb | m_com_pia_irqa | m_com_pia_irqb | m_acia_irq;
@@ -64,11 +59,6 @@ void tek4051_state::update_irq()
m_maincpu->set_input_line(INPUT_LINE_IRQ0, state);
}
-
-//-------------------------------------------------
-// update_nmi -
-//-------------------------------------------------
-
void tek4051_state::update_nmi()
{
int state = m_y_pia_irqa | m_y_pia_irqb | m_tape_pia_irqa | m_tape_pia_irqb;
@@ -77,39 +67,24 @@ void tek4051_state::update_nmi()
}
-
//**************************************************************************
// KEYBOARD
//**************************************************************************
-//-------------------------------------------------
-// scan_keyboard - scan keyboard
-//-------------------------------------------------
-
void tek4051_state::scan_keyboard()
{
}
-
-//-------------------------------------------------
-// TIMER_DEVICE_CALLBACK_MEMBER( keyboard_tick )
-//-------------------------------------------------
-
TIMER_DEVICE_CALLBACK_MEMBER(tek4051_state::keyboard_tick)
{
scan_keyboard();
}
-
//**************************************************************************
// MEMORY BANKING
//**************************************************************************
-//-------------------------------------------------
-// bankswitch -
-//-------------------------------------------------
-
void tek4051_state::bankswitch(uint8_t data)
{
address_space &program = m_maincpu->space(AS_PROGRAM);
@@ -136,7 +111,6 @@ void tek4051_state::bankswitch(uint8_t data)
}
}
-
WRITE8_MEMBER( tek4051_state::lbs_w )
{
/*
@@ -160,15 +134,10 @@ WRITE8_MEMBER( tek4051_state::lbs_w )
}
-
//**************************************************************************
// ADDRESS MAPS
//**************************************************************************
-//-------------------------------------------------
-// ADDRESS_MAP( tek4051_mem )
-//-------------------------------------------------
-
void tek4051_state::tek4051_mem(address_map &map)
{
map(0x0000, 0x1fff).ram();
@@ -189,25 +158,15 @@ void tek4051_state::tek4051_mem(address_map &map)
map(0xa800, 0xffff).rom().region(MC6800_TAG, 0x2800);
}
-
-//-------------------------------------------------
-// ADDRESS_MAP( tek4052_mem )
-//-------------------------------------------------
-
void tek4052_state::tek4052_mem(address_map &map)
{
}
-
//**************************************************************************
// INPUT PORTS
//**************************************************************************
-//-------------------------------------------------
-// INPUT_PORTS( tek4051 )
-//-------------------------------------------------
-
static INPUT_PORTS_START( tek4051 )
PORT_START("Y0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
@@ -377,7 +336,6 @@ static INPUT_PORTS_START( tek4051 )
INPUT_PORTS_END
-
//**************************************************************************
// VIDEO
//**************************************************************************
@@ -392,7 +350,6 @@ void tek4052_state::video_start()
}
-
//**************************************************************************
// DEVICE CONFIGURATION
//**************************************************************************
@@ -721,7 +678,6 @@ WRITE_LINE_MEMBER( tek4051_state::tape_pia_irqb_w )
update_nmi();
}
-
WRITE8_MEMBER( tek4051_state::dio_w )
{
/*
@@ -842,7 +798,6 @@ WRITE_LINE_MEMBER( tek4051_state::gpib_pia_irqb_w )
update_irq();
}
-
WRITE8_MEMBER( tek4051_state::com_pia_pa_w )
{
/*
@@ -934,7 +889,6 @@ WRITE_LINE_MEMBER( tek4051_state::com_pia_irqb_w )
update_irq();
}
-
WRITE_LINE_MEMBER( tek4051_state::acia_irq_w )
{
m_acia_irq = state;
@@ -952,10 +906,6 @@ WRITE_LINE_MEMBER( tek4051_state::write_acia_clock )
// MACHINE INITIALIZATION
//**************************************************************************
-//-------------------------------------------------
-// MACHINE_START( tek4051 )
-//-------------------------------------------------
-
void tek4051_state::machine_start()
{
m_lamps.resolve();
@@ -981,48 +931,39 @@ void tek4051_state::machine_start()
// register for state saving
}
-
-//-------------------------------------------------
-// MACHINE_START( tek4052 )
-//-------------------------------------------------
-
void tek4052_state::machine_start()
{
}
-
//**************************************************************************
// MACHINE CONFIGURATION
//**************************************************************************
-//-------------------------------------------------
-// MACHINE_CONFIG( tek4051 )
-//-------------------------------------------------
-
-MACHINE_CONFIG_START(tek4051_state::tek4051)
+void tek4051_state::tek4051(machine_config &config)
+{
// basic machine hardware
- MCFG_DEVICE_ADD(MC6800_TAG, M6800, XTAL(12'500'000)/15)
- MCFG_DEVICE_PROGRAM_MAP(tek4051_mem)
+ M6800(config, m_maincpu, XTAL(12'500'000)/15);
+ m_maincpu->set_addrmap(AS_PROGRAM, &tek4051_state::tek4051_mem);
// video hardware
- MCFG_VECTOR_ADD("vector")
- MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, VECTOR, rgb_t::green())
- MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
- MCFG_SCREEN_SIZE(1024, 780)
- MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 780-1)
- MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
+ VECTOR(config, "vector", 0);
+ screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_VECTOR));
+ screen.set_color(rgb_t::green());
+ screen.set_refresh_hz(50);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
+ screen.set_size(1024, 780);
+ screen.set_visarea(0, 1024-1, 0, 780-1);
+ screen.set_screen_update("vector", FUNC(vector_device::screen_update));
PALETTE(config, "palette", palette_device::MONOCHROME);
// sound hardware
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
// devices
- MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", tek4051_state, keyboard_tick, attotime::from_hz(XTAL(12'500'000)/15/4))
+ TIMER(config, "keyboard").configure_periodic(FUNC(tek4051_state::keyboard_tick), attotime::from_hz(XTAL(12'500'000)/15/4));
pia6821_device &piax(PIA6821(config, MC6820_X_TAG, 0));
piax.readpa_handler().set(FUNC(tek4051_state::x_pia_pa_r));
@@ -1085,67 +1026,59 @@ MACHINE_CONFIG_START(tek4051_state::tek4051)
ACIA6850(config, m_acia, 0);
m_acia->irq_handler().set(FUNC(tek4051_state::acia_irq_w));
- MCFG_DEVICE_ADD("acia_clock", CLOCK, 38400)
- MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, tek4051_state, write_acia_clock))
+ CLOCK(config, m_acia_clock, 38400);
+ m_acia_clock->signal_handler().set(FUNC(tek4051_state::write_acia_clock));
- MCFG_IEEE488_BUS_ADD()
- MCFG_IEEE488_EOI_CALLBACK(WRITELINE(MC6820_GPIB_TAG, pia6821_device, ca1_w))
- MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(MC6820_GPIB_TAG, pia6821_device, cb1_w))
+ IEEE488(config, m_gpib);
+ m_gpib->eoi_callback().set(MC6820_GPIB_TAG, FUNC(pia6821_device::ca1_w));
+ m_gpib->srq_callback().set(MC6820_GPIB_TAG, FUNC(pia6821_device::cb1_w));
// internal ram
RAM(config, RAM_TAG).set_default_size("8K").set_extra_options("16K,24K,32K");
// cartridge
- MCFG_GENERIC_CARTSLOT_ADD("cartslot1", generic_plain_slot, "tek4050_cart")
- MCFG_GENERIC_CARTSLOT_ADD("cartslot2", generic_plain_slot, "tek4050_cart")
-MACHINE_CONFIG_END
-
-
-//-------------------------------------------------
-// MACHINE_CONFIG( tek4052 )
-//-------------------------------------------------
+ GENERIC_CARTSLOT(config, "cartslot1", generic_plain_slot, "tek4050_cart");
+ GENERIC_CARTSLOT(config, "cartslot2", generic_plain_slot, "tek4050_cart");
+}
-MACHINE_CONFIG_START(tek4052_state::tek4052)
+void tek4052_state::tek4052(machine_config &config)
+{
// basic machine hardware
- MCFG_DEVICE_ADD(AM2901A_TAG, M6800, 1000000) // should be 4x AM2901A + AM2911
- MCFG_DEVICE_PROGRAM_MAP(tek4052_mem)
+ m6800_cpu_device &cpu(M6800(config, AM2901A_TAG, 1000000)); // should be 4x AM2901A + AM2911
+ cpu.set_addrmap(AS_PROGRAM, &tek4052_state::tek4052_mem);
// video hardware
- MCFG_VECTOR_ADD("vector")
- MCFG_SCREEN_ADD_MONOCHROME(SCREEN_TAG, VECTOR, rgb_t::green())
- MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
- MCFG_SCREEN_SIZE(1024, 780)
- MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 780-1)
- MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
+ VECTOR(config, "vector", 0);
+ screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_VECTOR));
+ screen.set_color(rgb_t::green());
+ screen.set_refresh_hz(50);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
+ screen.set_size(1024, 780);
+ screen.set_visarea(0, 1024-1, 0, 780-1);
+ screen.set_screen_update("vector", FUNC(vector_device::screen_update));
PALETTE(config, "palette", palette_device::MONOCHROME);
// sound hardware
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25);
// internal ram
RAM(config, RAM_TAG).set_default_size("32K").set_extra_options("64K");
// cartridge
- MCFG_GENERIC_CARTSLOT_ADD("cartslot1", generic_plain_slot, "tek4050_cart")
- MCFG_GENERIC_CARTSLOT_ADD("cartslot2", generic_plain_slot, "tek4050_cart")
+ GENERIC_CARTSLOT(config, "cartslot1", generic_plain_slot, "tek4050_cart");
+ GENERIC_CARTSLOT(config, "cartslot2", generic_plain_slot, "tek4050_cart");
// software lists
- MCFG_SOFTWARE_LIST_ADD("cart_list", "tek4052_cart")
-MACHINE_CONFIG_END
-
+ SOFTWARE_LIST(config, "cart_list").set_original("tek4052_cart");
+}
-//-------------------------------------------------
-// MACHINE_CONFIG( tek4054 )
-//-------------------------------------------------
/*
-MACHINE_CONFIG_START(tek4054_state::tek4054)
- MCFG_SCREEN_SIZE(4096, 3125)
- MCFG_SCREEN_VISIBLE_AREA(0, 4096-1, 0, 3125-1)
-MACHINE_CONFIG_END
+void tek4054_state::tek4054(machine_config &config)
+{
+ // screen size: 4096, 3125
+}
*/
@@ -1154,10 +1087,6 @@ MACHINE_CONFIG_END
// ROMS
//**************************************************************************
-//-------------------------------------------------
-// ROM( tek4051 )
-//-------------------------------------------------
-
ROM_START( tek4051 )
ROM_REGION( 0x8000, MC6800_TAG, 0 )
ROM_LOAD( "156-0659-xx.u585", 0x0000, 0x0800, CRC(0017ba54) SHA1(533bfacb2e698c1df88a00acce6df6a8c536239d) ) // -01 or -02 ?
@@ -1202,11 +1131,6 @@ ROM_START( tek4051 )
*/
ROM_END
-
-//-------------------------------------------------
-// ROM( tek4052a )
-//-------------------------------------------------
-
ROM_START( tek4052a )
ROM_REGION( 0x3800, AM2901A_TAG, 0 ) // ALU 670-7705-00 microcode
ROM_LOAD( "160-1689-00.u340", 0x0000, 0x0800, CRC(97ff62d4) SHA1(e25b495fd1b3f8a5bfef5c8f20efacde8366e89c) )