diff options
Diffstat (limited to 'src/mame/drivers/hp9845.cpp')
-rw-r--r-- | src/mame/drivers/hp9845.cpp | 147 |
1 files changed, 69 insertions, 78 deletions
diff --git a/src/mame/drivers/hp9845.cpp b/src/mame/drivers/hp9845.cpp index 283ff3e6c90..d4f64f10393 100644 --- a/src/mame/drivers/hp9845.cpp +++ b/src/mame/drivers/hp9845.cpp @@ -3532,35 +3532,37 @@ const uint8_t hp9845t_state::m_back_arrow_shape[] = { 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00 }; -MACHINE_CONFIG_START(hp9845_state::hp9845a) - //MCFG_DEVICE_ADD("lpu", HP_5061_3010, XTAL(11'400'000)) - //MCFG_DEVICE_ADD("ppu", HP_5061_3011, XTAL(11'400'000)) +void hp9845_state::hp9845a(machine_config &config) +{ + //HP_5061_3010(config, m_lpu, XTAL(11'400'000)); + //HP_5061_3011(config, m_ppu, XTAL(11'400'000)); // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_UPDATE_DRIVER(hp9845_state, screen_update) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(560, 455) - MCFG_SCREEN_VISIBLE_AREA(0, 560-1, 0, 455-1) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_screen_update(FUNC(hp9845_state::screen_update)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + screen.set_size(560, 455); + screen.set_visarea(0, 560-1, 0, 455-1); - MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845a_rom") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "optrom_list").set_original("hp9845a_rom"); +} -MACHINE_CONFIG_START(hp9845_state::hp9835a) - //MCFG_DEVICE_ADD("lpu", HP_5061_3001, XTAL(11'400'000)) - //MCFG_DEVICE_ADD("ppu", HP_5061_3001, XTAL(11'400'000)) +void hp9845_state::hp9835a(machine_config &config) +{ + //HP_5061_3001(config, m_lpu, XTAL(11'400'000)); + //HP_5061_301(1config, m_ppu, XTAL(11'400'000)); // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_UPDATE_DRIVER(hp9845_state, screen_update) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(560, 455) - MCFG_SCREEN_VISIBLE_AREA(0, 560-1, 0, 455-1) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_screen_update(FUNC(hp9845_state::screen_update)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + screen.set_size(560, 455); + screen.set_visarea(0, 560-1, 0, 455-1); - MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9835a_rom") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "optrom_list").set_original("hp9835a_rom"); +} /* Global memory map in blocks of 32 kwords / 64 kbytes each: @@ -3623,7 +3625,8 @@ void hp9845_base_state::ppu_io_map(address_map &map) map(HP_MAKE_IOADDR(T15_PA, 0), HP_MAKE_IOADDR(T15_PA, 3)).rw(m_t15, FUNC(hp_taco_device::reg_r), FUNC(hp_taco_device::reg_w)); } -MACHINE_CONFIG_START(hp9845_base_state::hp9845_base) +void hp9845_base_state::hp9845_base(machine_config &config) +{ HP_5061_3001(config , m_lpu , 5700000); m_lpu->set_addrmap(AS_PROGRAM , &hp9845_base_state::global_mem_map); m_lpu->set_9845_boot_mode(true); @@ -3646,19 +3649,18 @@ MACHINE_CONFIG_START(hp9845_base_state::hp9845_base) m_io_sys->dmar().set(m_ppu , FUNC(hp_5061_3001_cpu_device::dmar_w)); // video hardware - MCFG_SCREEN_ADD("screen", RASTER) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - MCFG_TIMER_DRIVER_ADD("gv_timer", hp9845_base_state, gv_timer) + TIMER(config, m_gv_timer).configure_generic(FUNC(hp9845_base_state::gv_timer)); // Actual keyboard refresh rate should be KEY_SCAN_OSCILLATOR / 128 (2560 Hz) - MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer" , hp9845_base_state , kb_scan , attotime::from_hz(100)) + TIMER(config, "kb_timer").configure_periodic(FUNC(hp9845_base_state::kb_scan), attotime::from_hz(100)); // Beeper SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("beeper" , BEEP , KEY_SCAN_OSCILLATOR / 512) - MCFG_SOUND_ROUTE(ALL_OUTPUTS , "mono" , 0.50) + BEEP(config, m_beeper , KEY_SCAN_OSCILLATOR / 512).add_route(ALL_OUTPUTS , "mono" , 0.50); - MCFG_TIMER_DRIVER_ADD("beep_timer" , hp9845_base_state , beeper_off); + TIMER(config, m_beep_timer).configure_generic(FUNC(hp9845_base_state::beeper_off)); // Tape drives HP_TACO(config , m_t15 , 4000000); @@ -3674,22 +3676,14 @@ MACHINE_CONFIG_START(hp9845_base_state::hp9845_base) // right-hand side and left-hand side drawers, respectively. // Here we do away with the distinction between LPU & PPU ROMs: in the end they // are visible to both CPUs at the same addresses. - MCFG_DEVICE_ADD("drawer1", HP_OPTROM_SLOT, 0) - MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false) - MCFG_DEVICE_ADD("drawer2", HP_OPTROM_SLOT, 0) - MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false) - MCFG_DEVICE_ADD("drawer3", HP_OPTROM_SLOT, 0) - MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false) - MCFG_DEVICE_ADD("drawer4", HP_OPTROM_SLOT, 0) - MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false) - MCFG_DEVICE_ADD("drawer5", HP_OPTROM_SLOT, 0) - MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false) - MCFG_DEVICE_ADD("drawer6", HP_OPTROM_SLOT, 0) - MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false) - MCFG_DEVICE_ADD("drawer7", HP_OPTROM_SLOT, 0) - MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false) - MCFG_DEVICE_ADD("drawer8", HP_OPTROM_SLOT, 0) - MCFG_DEVICE_SLOT_INTERFACE(hp_optrom_slot_devices, NULL, false) + HP_OPTROM_SLOT(config, "drawer1", 0); + HP_OPTROM_SLOT(config, "drawer2", 0); + HP_OPTROM_SLOT(config, "drawer3", 0); + HP_OPTROM_SLOT(config, "drawer4", 0); + HP_OPTROM_SLOT(config, "drawer5", 0); + HP_OPTROM_SLOT(config, "drawer6", 0); + HP_OPTROM_SLOT(config, "drawer7", 0); + HP_OPTROM_SLOT(config, "drawer8", 0); // I/O slots for (unsigned slot = 0; slot < 4; slot++) { @@ -3709,54 +3703,51 @@ MACHINE_CONFIG_START(hp9845_base_state::hp9845_base) prt.irq().set(FUNC(hp9845_base_state::prt_irl_w)); prt.flg().set([this](int state) { m_io_sys->set_flg(PRINTER_PA , state); }); prt.sts().set([this](int state) { m_io_sys->set_sts(PRINTER_PA , state); }); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(hp9845b_state::hp9845b) +void hp9845b_state::hp9845b(machine_config &config) +{ hp9845_base(config); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(hp9845b_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hp9845b_state, vblank_w)) - MCFG_SCREEN_COLOR(rgb_t::green()) + m_screen->set_screen_update(FUNC(hp9845b_state::screen_update)); + m_screen->screen_vblank().set(FUNC(hp9845b_state::vblank_w)); + m_screen->set_color(rgb_t::green()); // These parameters are for alpha video - MCFG_SCREEN_RAW_PARAMS(VIDEO_PIXEL_CLOCK , VIDEO_HTOTAL , 0 , VIDEO_HBSTART , VIDEO_VTOTAL , 0 , VIDEO_ACTIVE_SCANLINES) - MCFG_PALETTE_ADD("palette", 4) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp9845b_state, scanline_timer, "screen", 0, 1) + m_screen->set_raw(VIDEO_PIXEL_CLOCK , VIDEO_HTOTAL , 0 , VIDEO_HBSTART , VIDEO_VTOTAL , 0 , VIDEO_ACTIVE_SCANLINES); + PALETTE(config, m_palette).set_entries(4); + TIMER(config, "scantimer").configure_scanline(FUNC(hp9845b_state::scanline_timer), "screen", 0, 1); config.set_default_layout(layout_hp9845b); - MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845b_rom") - -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "optrom_list").set_original("hp9845b_rom"); +} -MACHINE_CONFIG_START(hp9845c_state::hp9845c) +void hp9845c_state::hp9845c(machine_config &config) +{ hp9845_base(config); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(hp9845c_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hp9845c_state, vblank_w)) - MCFG_SCREEN_RAW_PARAMS(VIDEO_770_PIXEL_CLOCK , VIDEO_770_HTOTAL , VIDEO_770_HBEND , VIDEO_770_HBSTART , VIDEO_770_VTOTAL , VIDEO_770_VBEND , VIDEO_770_VBSTART) - MCFG_PALETTE_ADD("palette", 24) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp9845c_state, scanline_timer, "screen", 0, 1) + m_screen->set_screen_update(FUNC(hp9845c_state::screen_update)); + m_screen->screen_vblank().set(FUNC(hp9845c_state::vblank_w)); + m_screen->set_raw(VIDEO_770_PIXEL_CLOCK , VIDEO_770_HTOTAL , VIDEO_770_HBEND , VIDEO_770_HBSTART , VIDEO_770_VTOTAL , VIDEO_770_VBEND , VIDEO_770_VBSTART); + PALETTE(config, m_palette).set_entries(24); + TIMER(config, "scantimer").configure_scanline(FUNC(hp9845c_state::scanline_timer), "screen", 0, 1); - MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845b_rom") - -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "optrom_list").set_original("hp9845b_rom"); +} -MACHINE_CONFIG_START(hp9845t_state::hp9845t) +void hp9845t_state::hp9845t(machine_config &config) +{ hp9845_base(config); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(hp9845t_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, hp9845t_state, vblank_w)) - MCFG_SCREEN_COLOR(rgb_t::green()) - MCFG_SCREEN_RAW_PARAMS(VIDEO_780_PIXEL_CLOCK , VIDEO_780_HTOTAL , VIDEO_780_HBEND , VIDEO_780_HBSTART , VIDEO_780_VTOTAL , VIDEO_780_VBEND , VIDEO_780_VBSTART) - MCFG_PALETTE_ADD("palette", 5) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp9845t_state, scanline_timer, "screen", 0, 1) - - MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845b_rom") + m_screen->set_screen_update(FUNC(hp9845t_state::screen_update)); + m_screen->screen_vblank().set(FUNC(hp9845t_state::vblank_w)); + m_screen->set_color(rgb_t::green()); + m_screen->set_raw(VIDEO_780_PIXEL_CLOCK , VIDEO_780_HTOTAL , VIDEO_780_HBEND , VIDEO_780_HBSTART , VIDEO_780_VTOTAL , VIDEO_780_VBEND , VIDEO_780_VBSTART); + PALETTE(config, m_palette).set_entries(5); + TIMER(config, "scantimer").configure_scanline(FUNC(hp9845t_state::scanline_timer), "screen", 0, 1); -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "optrom_list").set_original("hp9845b_rom"); +} ROM_START( hp9845a ) ROM_REGION( 0200000, "lpu", ROMREGION_16BIT | ROMREGION_BE ) |