From 32c151d50e2d4e3aa2aaec3c4683b9a27505e309 Mon Sep 17 00:00:00 2001 From: arbee Date: Thu, 1 Jan 2015 23:15:24 -0500 Subject: (MESS) New skeleton driver added: [R. Belmont, Al Kossow] - HP16500a (ver 00.00) --- src/mess/drivers/hp16500.c | 164 +++++++++++++++++++++++++++++++++++++++++++-- src/mess/mess.lst | 1 + 2 files changed, 160 insertions(+), 5 deletions(-) diff --git a/src/mess/drivers/hp16500.c b/src/mess/drivers/hp16500.c index ac2a5aa4fd0..5d416be8cc8 100644 --- a/src/mess/drivers/hp16500.c +++ b/src/mess/drivers/hp16500.c @@ -1,7 +1,28 @@ /*************************************************************************** - Hewlett-Packard HP16500b Logic Analyzer + Hewlett-Packard HP16500a/b/c Logic Analyzer + These are weird, the "a" has more in common with the older 1650/1651 + than the 16500b. + + 16500a rev 00.00: + MC68000 @ 10 MHz + MC68A45 CRTC + FDC9793 floppy controller (WD1793 type) + TMS9914A GPIB bus interface + SCN2661 DUART/timer + + IRQ1 = VBL, IRQ2 = 20b007, IRQ3 = ?, IRQ4 = 20d000, IRQ5 = 20d007, + IRQ6 = ?, IRQ7 = ? + + 16500a rev 00.02: + MC68000 @ 10 MHz + MC68A45 CRTC + Z0765A08PSC floppy controller (NEC765 type) + TMS9914A GPIB bus interface + SCN2661 DUART/timer + + 16500b: MC68EC030 @ 25 MHz WD37C65C floppy controller (NEC765 type) @@ -21,6 +42,7 @@ #include "emu.h" #include "cpu/m68000/m68000.h" +#include "video/mc6845.h" class hp16500_state : public driver_device { @@ -32,6 +54,7 @@ public: virtual void video_start(); UINT32 screen_update_hp16500(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + UINT32 screen_update_hp16500a(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); required_device m_maincpu; dynamic_array m_vram; @@ -46,6 +69,17 @@ public: DECLARE_WRITE8_MEMBER (val_w); DECLARE_READ32_MEMBER(vbl_state_r); DECLARE_WRITE32_MEMBER(vbl_ack_w); + DECLARE_WRITE16_MEMBER(vbl_ack16_w); + + DECLARE_WRITE8_MEMBER(pal_ctrl_w); + DECLARE_WRITE8_MEMBER(pal_r_w); + DECLARE_WRITE8_MEMBER(pal_g_w); + DECLARE_WRITE8_MEMBER(pal_b_w); + + DECLARE_WRITE16_MEMBER(maskval_w); + + DECLARE_WRITE_LINE_MEMBER(vsync_changed); + MC6845_UPDATE_ROW(crtc_update_row); INTERRUPT_GEN_MEMBER(vblank); @@ -63,6 +97,101 @@ WRITE32_MEMBER(hp16500_state::vbl_ack_w) m_maincpu->set_input_line(M68K_IRQ_1, CLEAR_LINE); } +WRITE16_MEMBER(hp16500_state::vbl_ack16_w) +{ + m_maincpu->set_input_line(M68K_IRQ_1, CLEAR_LINE); +} + +WRITE_LINE_MEMBER( hp16500_state::vsync_changed ) +{ + if (state) + { + m_maincpu->set_input_line(M68K_IRQ_1, ASSERT_LINE); + } +} + +MC6845_UPDATE_ROW( hp16500_state::crtc_update_row ) +{ + UINT32 *p = &bitmap.pix32(y); + int i, pos; + + pos = y * 144; + + for (i = 0; i < x_count; i++) + { + *p++ = m_palette[m_vram[pos+0x00000]]; + *p++ = m_palette[m_vram[pos+0x10000]]; + *p++ = m_palette[m_vram[pos+0x20000]]; + *p++ = m_palette[m_vram[pos+0x30000]]; + pos++; + *p++ = m_palette[m_vram[pos+0x00000]]; + *p++ = m_palette[m_vram[pos+0x10000]]; + *p++ = m_palette[m_vram[pos+0x20000]]; + *p++ = m_palette[m_vram[pos+0x30000]]; + pos++; + } +} + +WRITE8_MEMBER(hp16500_state::pal_ctrl_w) +{ + m_clutoffs = data & 0xf; +} + + +WRITE8_MEMBER(hp16500_state::pal_r_w) +{ + m_colors[0] = (data<<4); + m_palette[m_clutoffs] = rgb_t(m_colors[0], m_colors[1], m_colors[2]); +} + +WRITE8_MEMBER(hp16500_state::pal_g_w) +{ + m_colors[1] = (data<<4); + m_palette[m_clutoffs] = rgb_t(m_colors[0], m_colors[1], m_colors[2]); +} + +WRITE8_MEMBER(hp16500_state::pal_b_w) +{ + m_colors[2] = (data<<4); + m_palette[m_clutoffs] = rgb_t(m_colors[0], m_colors[1], m_colors[2]); +} + +WRITE16_MEMBER(hp16500_state::maskval_w) +{ + // by analogy with the string printer code from the 16500b, which + // appears to be a direct port... + m_val = ((data>>8) & 0xff) ^ 0xff; + m_mask = (data & 0xff) ^ 0xff; +} + +static ADDRESS_MAP_START(hp16500a_map, AS_PROGRAM, 16, hp16500_state) + AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("bios", 0) + + AM_RANGE(0x201000, 0x201001) AM_WRITE(maskval_w) + + AM_RANGE(0x204000, 0x204001) AM_WRITE8(pal_ctrl_w, 0x00ff) + AM_RANGE(0x205000, 0x205001) AM_WRITE8(pal_r_w, 0x00ff) + AM_RANGE(0x206000, 0x206001) AM_WRITE8(pal_g_w, 0x00ff) + AM_RANGE(0x207000, 0x207001) AM_WRITE8(pal_b_w, 0x00ff) + + AM_RANGE(0x20c000, 0x20c001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0x00ff) + AM_RANGE(0x20c002, 0x20c003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0x00ff) + + AM_RANGE(0x20e000, 0x20e001) AM_WRITE(vbl_ack16_w) + + AM_RANGE(0x600000, 0x61ffff) AM_WRITE(vram_w) + AM_RANGE(0x600000, 0x67ffff) AM_READ8(vram_r, 0x00ff) + + AM_RANGE(0x980000, 0x9fffff) AM_RAM + + AM_RANGE(0xa70000, 0xa7ffff) AM_RAM +ADDRESS_MAP_END + +UINT32 hp16500_state::screen_update_hp16500a(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + static ADDRESS_MAP_START(hp16500_map, AS_PROGRAM, 32, hp16500_state) AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_REGION("bios", 0) AM_RANGE(0x0020f000, 0x0020f003) AM_WRITE(palette_w) @@ -174,6 +303,24 @@ UINT32 hp16500_state::screen_update_hp16500(screen_device &screen, bitmap_rgb32 return 0; } +static MACHINE_CONFIG_START( hp16500a, hp16500_state ) + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", M68000, 10000000) + MCFG_CPU_PROGRAM_MAP(hp16500a_map) + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(10000000, 0x320, 0, 0x240, 0x19c, 0, 0x170 ) + MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update ) + + MCFG_MC6845_ADD("crtc", MC6845, "screen", 10000000/9) + MCFG_MC6845_SHOW_BORDER_AREA(false) + MCFG_MC6845_CHAR_WIDTH(8) + MCFG_MC6845_UPDATE_ROW_CB(hp16500_state, crtc_update_row) + MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(hp16500_state, vsync_changed)) + + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") +MACHINE_CONFIG_END + static MACHINE_CONFIG_START( hp16500, hp16500_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC030, 25000000) @@ -192,12 +339,19 @@ MACHINE_CONFIG_END static INPUT_PORTS_START( hp16500 ) INPUT_PORTS_END +ROM_START( hp165ka0 ) + ROM_REGION16_BE(0x20000, "bios", 0) + ROM_LOAD16_BYTE( "16500-80002.bin", 0x000000, 0x008000, CRC(0324b75a) SHA1(837855fce9288139226c914cc0c43061e25b57d2) ) + ROM_LOAD16_BYTE( "16500-80001.bin", 0x000001, 0x008000, CRC(362c8cbf) SHA1(812b79d1a31d09ec632a6842b11548168d82b5e7) ) +ROM_END + ROM_START( hp16500b ) ROM_REGION32_BE(0x20000, "bios", 0) - ROM_LOAD32_BYTE( "16500-80014.bin", 0x000000, 0x008000, CRC(35187716) SHA1(82067737892ecd356a5454a43d9ce9b38ac2397f) ) - ROM_LOAD32_BYTE( "16500-80015.bin", 0x000001, 0x008000, CRC(d8d26c1c) SHA1(b5b956c17c9d6e54519a686b5e4aa733b266bf6f) ) - ROM_LOAD32_BYTE( "16500-80016.bin", 0x000002, 0x008000, CRC(61457b39) SHA1(f209315ec22a8ee9d44a0ec009b1afb47794bece) ) - ROM_LOAD32_BYTE( "16500-80017.bin", 0x000003, 0x008000, CRC(e0b1096b) SHA1(426bb9a4756d8087bded4f6b61365d733ffbb09a) ) + ROM_LOAD32_BYTE( "16500-80014.bin", 0x000000, 0x008000, CRC(35187716) SHA1(82067737892ecd356a5454a43d9ce9b38ac2397f) ) + ROM_LOAD32_BYTE( "16500-80015.bin", 0x000001, 0x008000, CRC(d8d26c1c) SHA1(b5b956c17c9d6e54519a686b5e4aa733b266bf6f) ) + ROM_LOAD32_BYTE( "16500-80016.bin", 0x000002, 0x008000, CRC(61457b39) SHA1(f209315ec22a8ee9d44a0ec009b1afb47794bece) ) + ROM_LOAD32_BYTE( "16500-80017.bin", 0x000003, 0x008000, CRC(e0b1096b) SHA1(426bb9a4756d8087bded4f6b61365d733ffbb09a) ) ROM_END +COMP( 1994, hp165ka0, 0, 0, hp16500a, hp16500, driver_device, 0, "Hewlett Packard", "HP 16500a", GAME_NOT_WORKING|GAME_NO_SOUND) COMP( 1994, hp16500b, 0, 0, hp16500, hp16500, driver_device, 0, "Hewlett Packard", "HP 16500b", GAME_NOT_WORKING|GAME_NO_SOUND) diff --git a/src/mess/mess.lst b/src/mess/mess.lst index d5c860c86e9..3452b67c9fc 100644 --- a/src/mess/mess.lst +++ b/src/mess/mess.lst @@ -1723,6 +1723,7 @@ hp48gx // HP 48GX hp48gp // HP 48G+ hp49g hp49gp // HP 49G+ +hp165ka0 hp16500b hp9816 hp9845a -- cgit v1.2.3 From d404e8c69e956427084f3d4a5d334ca1525642b6 Mon Sep 17 00:00:00 2001 From: arbee Date: Thu, 1 Jan 2015 23:21:53 -0500 Subject: Pass RAM test (nw) --- src/mess/drivers/hp16500.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/mess/drivers/hp16500.c b/src/mess/drivers/hp16500.c index 5d416be8cc8..5a10a3bef74 100644 --- a/src/mess/drivers/hp16500.c +++ b/src/mess/drivers/hp16500.c @@ -182,9 +182,7 @@ static ADDRESS_MAP_START(hp16500a_map, AS_PROGRAM, 16, hp16500_state) AM_RANGE(0x600000, 0x61ffff) AM_WRITE(vram_w) AM_RANGE(0x600000, 0x67ffff) AM_READ8(vram_r, 0x00ff) - AM_RANGE(0x980000, 0x9fffff) AM_RAM - - AM_RANGE(0xa70000, 0xa7ffff) AM_RAM + AM_RANGE(0x980000, 0xa7ffff) AM_RAM ADDRESS_MAP_END UINT32 hp16500_state::screen_update_hp16500a(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) -- cgit v1.2.3 From 91f28d97722e6e17bf921d0382ff04fb45cc187b Mon Sep 17 00:00:00 2001 From: Osso Date: Fri, 2 Jan 2015 08:36:19 +0100 Subject: nes.c: removed erroneous use of postload, fixes fds and famitwin save state problem (nw) --- src/mess/drivers/nes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mess/drivers/nes.c b/src/mess/drivers/nes.c index f9823fa387d..11b47141047 100644 --- a/src/mess/drivers/nes.c +++ b/src/mess/drivers/nes.c @@ -757,7 +757,6 @@ void nes_state::setup_disk(nes_disksys_device *slot) slot->prgram_alloc(0x8000); slot->pcb_start(machine(), m_ciram, FALSE); - slot->pcb_reg_postload(machine()); m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(FUNC(device_nes_cart_interface::chr_r),(device_nes_cart_interface *)slot), write8_delegate(FUNC(device_nes_cart_interface::chr_w),(device_nes_cart_interface *)slot)); m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(device_nes_cart_interface::nt_r),(device_nes_cart_interface *)slot), write8_delegate(FUNC(device_nes_cart_interface::nt_w),(device_nes_cart_interface *)slot)); m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate(FUNC(device_nes_cart_interface::scanline_irq),(device_nes_cart_interface *)slot)); @@ -772,6 +771,7 @@ MACHINE_START_MEMBER( nes_state, fds ) m_ciram = auto_alloc_array(machine(), UINT8, 0x800); setup_ioports(); setup_disk(m_disk); + state_register(); } MACHINE_RESET_MEMBER( nes_state, fds ) -- cgit v1.2.3 From e860f8100f0a437e725daef9113e5b0c15591e06 Mon Sep 17 00:00:00 2001 From: Osso Date: Fri, 2 Jan 2015 08:53:42 +0100 Subject: Fixed MT05811 (nw) --- src/mame/drivers/maygay1b.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/mame/drivers/maygay1b.c b/src/mame/drivers/maygay1b.c index fc6005b6ce2..e0cba21ee27 100644 --- a/src/mame/drivers/maygay1b.c +++ b/src/mame/drivers/maygay1b.c @@ -105,10 +105,13 @@ WRITE_LINE_MEMBER(maygay1b_state::duart_irq_handler) // FIRQ, related to the sample playback? READ8_MEMBER( maygay1b_state::m1_firq_trg_r ) { - int nar = m_msm6376->nar_r(); - if (nar) + if (m_msm6376) { - cpu0_firq(1); + int nar = m_msm6376->nar_r(); + if (nar) + { + cpu0_firq(1); + } } return 0xff; } @@ -377,13 +380,19 @@ WRITE8_MEMBER(maygay1b_state::latch_ch2_w) //A strange setup this, the address lines are used to move st to the right level READ8_MEMBER(maygay1b_state::latch_st_hi) { - m_msm6376->st_w(1); + if (m_msm6376) + { + m_msm6376->st_w(1); + } return 0xff; } READ8_MEMBER(maygay1b_state::latch_st_lo) { - m_msm6376->st_w(0); + if (m_msm6376) + { + m_msm6376->st_w(0); + } return 0xff; } -- cgit v1.2.3 From a08765586cce9c1afb5740f0c47166a33d31b523 Mon Sep 17 00:00:00 2001 From: Osso Date: Fri, 2 Jan 2015 09:11:22 +0100 Subject: Fixed MT05812 (nw) in m4nod, the region was called "upd" but machine is mod4oki? Which one is correct? --- src/mame/drivers/maygay1bsw.c | 6 +++--- src/mame/drivers/mpu4.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mame/drivers/maygay1bsw.c b/src/mame/drivers/maygay1bsw.c index e701a197016..da511007768 100644 --- a/src/mame/drivers/maygay1bsw.c +++ b/src/mame/drivers/maygay1bsw.c @@ -211,9 +211,9 @@ ROM_START( m1bankrl ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_START( m1bankrlp ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa5-227", 0x0000, 0x010000, CRC(96528366) SHA1(5927c519d9a610b1026d685647cdac285566b1fc) ) ROM_END_M1A_MCU //1.1P ROM_START( m1bankrl2p ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa5-225", 0x0000, 0x010000, CRC(14d2a45e) SHA1(8f5875dfd517826a89b3b13063474eda2725be68) ) ROM_END_M1A_MCU //2.1p -GAME( 1995, m1bankrl ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bank Roll (Maygay) v1.1 (M1A/B)",GAME_FLAGS ) -GAME( 1995, m1bankrlp ,m1bankrl ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bank Roll (Maygay) v1.1 (Protocol) (M1A/B)",GAME_FLAGS ) -GAME( 1995, m1bankrl2p ,m1bankrl ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bank Roll (Maygay) v2.1 (Protocol) (M1A/B)",GAME_FLAGS ) +GAME( 1995, m1bankrl ,0 ,maygay_m1_no_oki,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bank Roll (Maygay) v1.1 (M1A/B)",GAME_FLAGS ) +GAME( 1995, m1bankrlp ,m1bankrl ,maygay_m1_no_oki,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bank Roll (Maygay) v1.1 (Protocol) (M1A/B)",GAME_FLAGS ) +GAME( 1995, m1bankrl2p ,m1bankrl ,maygay_m1_no_oki,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bank Roll (Maygay) v2.1 (Protocol) (M1A/B)",GAME_FLAGS ) /******************************************************************************************************************************************************************************************************* Club Fever diff --git a/src/mame/drivers/mpu4.c b/src/mame/drivers/mpu4.c index 0fd777fe87b..dd0d31abe43 100644 --- a/src/mame/drivers/mpu4.c +++ b/src/mame/drivers/mpu4.c @@ -2241,7 +2241,7 @@ ROM_END ROM_START( m4nod ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "nod.bin", 0x0000, 0x010000, CRC(bc738af5) SHA1(8df436139554ccfb48c4db0a32e3333dbf3c4f46) ) - ROM_REGION( 0x200000, "upd", ROMREGION_ERASE00 ) + ROM_REGION( 0x200000, "msm6376", ROMREGION_ERASE00 ) //region was called "upd" but machine is mod4oki? Which one is correct? ROM_LOAD( "nodsnd.bin", 0x0000, 0x080000, CRC(2134494a) SHA1(3b665bf79567a71195b20e76c50b02707d15b78d) ) ROM_END -- cgit v1.2.3