summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/lisa.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/lisa.cpp')
-rw-r--r--src/mame/drivers/lisa.cpp120
1 files changed, 59 insertions, 61 deletions
diff --git a/src/mame/drivers/lisa.cpp b/src/mame/drivers/lisa.cpp
index 8130793584c..62e4f28530a 100644
--- a/src/mame/drivers/lisa.cpp
+++ b/src/mame/drivers/lisa.cpp
@@ -12,7 +12,6 @@
#include "emu.h"
#include "includes/lisa.h"
-#include "cpu/m6502/m6504.h"
#include "cpu/cop400/cop400.h"
#include "formats/ap_dsk35.h"
#include "screen.h"
@@ -98,96 +97,95 @@ static const floppy_interface lisa_floppy_interface =
***************************************************************************/
/* Lisa1 and Lisa 2 machine */
-MACHINE_CONFIG_START(lisa_state::lisa)
+void lisa_state::lisa(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 5093760) /* 20.37504 MHz / 4 */
- MCFG_DEVICE_PROGRAM_MAP(lisa_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER(SCREEN_TAG, lisa_state, lisa_interrupt)
+ M68000(config, m_maincpu, 5093760); /* 20.37504 MHz / 4 */
+ m_maincpu->set_addrmap(AS_PROGRAM, &lisa_state::lisa_map);
+ m_maincpu->set_vblank_int(SCREEN_TAG, FUNC(lisa_state::lisa_interrupt));
- MCFG_DEVICE_ADD(COP421_TAG, COP421, 3900000)
- MCFG_COP400_CONFIG( COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, true )
+ cop421_cpu_device &cop(COP421(config, COP421_TAG, 3900000));
+ cop.set_config(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, true);
- MCFG_DEVICE_ADD(KB_COP421_TAG, COP421, 3900000) // ?
- MCFG_COP400_CONFIG( COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, true )
+ cop421_cpu_device &kbcop(COP421(config, KB_COP421_TAG, 3900000)); // ?
+ kbcop.set_config(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, true);
- MCFG_DEVICE_ADD("fdccpu", M6504, 2000000) /* 16.000 MHz / 8 in when DIS asserted, 16.000 MHz / 9 otherwise (?) */
- MCFG_DEVICE_PROGRAM_MAP(lisa_fdc_map)
+ M6504(config, m_fdc_cpu, 2000000); /* 16.000 MHz / 8 in when DIS asserted, 16.000 MHz / 9 otherwise (?) */
+ m_fdc_cpu->set_addrmap(AS_PROGRAM, &lisa_state::lisa_fdc_map);
- MCFG_QUANTUM_TIME(attotime::from_hz(60))
+ config.m_minimum_quantum = attotime::from_hz(60);
- MCFG_DEVICE_ADD("latch", LS259, 0) // U4E
- MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(*this, lisa_state, diag1_w))
- MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(*this, lisa_state, diag2_w))
- MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(*this, lisa_state, seg1_w))
- MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(*this, lisa_state, seg2_w))
- MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(*this, lisa_state, setup_w))
- MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(WRITELINE(*this, lisa_state, sfmsk_w))
- MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(WRITELINE(*this, lisa_state, vtmsk_w))
- MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(*this, lisa_state, hdmsk_w))
+ LS259(config, m_latch, 0); // U4E
- MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(880, 380)
- MCFG_SCREEN_VISIBLE_AREA(0, 720-1, 0, 364-1)
- MCFG_SCREEN_UPDATE_DRIVER(lisa_state, screen_update_lisa)
- MCFG_SCREEN_PALETTE("palette")
+ m_latch->q_out_cb<0>().set(FUNC(lisa_state::diag1_w));
+ m_latch->q_out_cb<1>().set(FUNC(lisa_state::diag2_w));
+ m_latch->q_out_cb<2>().set(FUNC(lisa_state::seg1_w));
+ m_latch->q_out_cb<3>().set(FUNC(lisa_state::seg2_w));
+ m_latch->q_out_cb<4>().set(FUNC(lisa_state::setup_w));
+ m_latch->q_out_cb<5>().set(FUNC(lisa_state::sfmsk_w));
+ m_latch->q_out_cb<6>().set(FUNC(lisa_state::vtmsk_w));
+ m_latch->q_out_cb<7>().set(FUNC(lisa_state::hdmsk_w));
- MCFG_PALETTE_ADD_MONOCHROME("palette")
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
+ m_screen->set_refresh_hz(60);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ m_screen->set_size(880, 380);
+ m_screen->set_visarea(0, 720-1, 0, 364-1);
+ m_screen->set_screen_update(FUNC(lisa_state::screen_update_lisa));
+ m_screen->set_palette("palette");
+ PALETTE(config, m_palette, 2);
+ m_palette->set_init("palette", FUNC(palette_device::palette_init_monochrome));
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ SPEAKER_SOUND(config, m_speaker);
+ m_speaker->add_route(ALL_OUTPUTS, "mono", 1.00);
/* nvram */
- MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram", lisa_state, nvram_init)
+ NVRAM(config, m_nvram);
+ m_nvram->set_custom_handler(FUNC(lisa_state::nvram_init));
/* devices */
- MCFG_IWM_ADD("fdc", lisa2_fdc_interface)
- MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(lisa_floppy_interface)
+ IWM(config, m_fdc, &lisa2_fdc_interface);
+ sonydriv_floppy_image_device::legacy_2_drives_add(config, &lisa_floppy_interface);
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("disk_list","lisa")
+ SOFTWARE_LIST(config, "disk_list").set_type("lisa", SOFTWARE_LIST_ORIGINAL_SYSTEM);
/* via */
- MCFG_DEVICE_ADD("via6522_0", VIA6522, 500000)
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, lisa_state, COPS_via_out_a))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, lisa_state, COPS_via_out_b))
- MCFG_VIA6522_CA2_HANDLER(WRITELINE(*this, lisa_state, COPS_via_out_ca2))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, lisa_state, COPS_via_out_cb2))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, lisa_state, COPS_via_irq_func))
-
- MCFG_DEVICE_ADD("via6522_1", VIA6522, 500000)
+ VIA6522(config, m_via0, 500000);
+ m_via0->writepa_handler().set(FUNC(lisa_state::COPS_via_out_a));
+ m_via0->writepb_handler().set(FUNC(lisa_state::COPS_via_out_b));
+ m_via0->ca2_handler().set(FUNC(lisa_state::COPS_via_out_ca2));
+ m_via0->cb2_handler().set(FUNC(lisa_state::COPS_via_out_cb2));
+ m_via0->irq_handler().set(FUNC(lisa_state::COPS_via_irq_func));
- MCFG_DEVICE_ADD("scc", SCC8530, 7833600)
-MACHINE_CONFIG_END
+ VIA6522(config, m_via1, 500000);
+ SCC8530(config, m_scc, 7833600);
+}
-MACHINE_CONFIG_START(lisa_state::lisa210)
+void lisa_state::lisa210(machine_config &config)
+{
lisa(config);
- MCFG_DEVICE_MODIFY( "fdccpu" )
- MCFG_DEVICE_PROGRAM_MAP(lisa210_fdc_map)
+ m_fdc_cpu->set_addrmap(AS_PROGRAM, &lisa_state::lisa210_fdc_map);
/* Lisa 2/10 and MacXL had a slightly different FDC interface */
- MCFG_IWM_MODIFY("fdc", lisa210_fdc_interface)
+ m_fdc->set_config(&lisa210_fdc_interface);
/* via */
- MCFG_DEVICE_MODIFY("via6522_0")
- MCFG_DEVICE_CLOCK(1250000)
- MCFG_DEVICE_MODIFY("via6522_1")
- MCFG_DEVICE_CLOCK(1250000)
-MACHINE_CONFIG_END
-
+ m_via0->set_clock(1250000);
+ m_via1->set_clock(1250000);
+}
-MACHINE_CONFIG_START(lisa_state::macxl)
+void lisa_state::macxl(machine_config &config)
+{
lisa210(config);
- MCFG_SCREEN_MODIFY(SCREEN_TAG)
- MCFG_SCREEN_SIZE( 768/* ???? */, 447/* ???? */)
- MCFG_SCREEN_VISIBLE_AREA(0, 608-1, 0, 431-1)
-MACHINE_CONFIG_END
+ m_screen->set_size( 768/* ???? */, 447/* ???? */);
+ m_screen->set_visarea(0, 608-1, 0, 431-1);
+}
/* 2008-05 FP:
Small note about natural keyboard support: currently,