diff options
Diffstat (limited to 'src/mame/drivers/tek405x.cpp')
-rw-r--r-- | src/mame/drivers/tek405x.cpp | 162 |
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) ) |