From 857f41fe053a025248eb2ac23de428ac50e4fb73 Mon Sep 17 00:00:00 2001 From: angelosa Date: Sat, 21 Sep 2024 21:21:51 +0200 Subject: [PATCH] New systems marked not working ------------------------------ B16 EX-II [Mike Stedman] --- src/mame/hitachi/b16.cpp | 115 ++++++++++++++++++++++++++++---------- src/mame/hitachi/bml3.cpp | 5 +- src/mame/mame.lst | 1 + 3 files changed, 90 insertions(+), 31 deletions(-) diff --git a/src/mame/hitachi/b16.cpp b/src/mame/hitachi/b16.cpp index e18dcfafa5f..888ca81f24a 100644 --- a/src/mame/hitachi/b16.cpp +++ b/src/mame/hitachi/b16.cpp @@ -1,20 +1,47 @@ -// license:BSD-3-Clause -// copyright-holders:Angelo Salese -/*************************************************************************** +// license: BSD-3-Clause +// copyright-holders: Angelo Salese +// thanks-to: Mike Stedman +/************************************************************************************************** - Hitachi B(asic Master?) 16 +Hitachi B(asic Master?) 16000 series? - very preliminary driver by Angelo Salese +TODO: +- Barely anything is known about the HW +- b16ex2: "error message 1101" - TODO: - - Driver is all made up of educated guesses (no documentation available) +=================================================================================================== - 0xfcc67 after the ROM checksum to zero (bp 0xfc153 -> SI = 0) -> system boots +B16 EX-II PCB contents: -****************************************************************************/ +TIM uPD8253C-5 @ 16B +DMAC uPD8257C-5 @ 18B +INTM / INTS 2x uPD8259AC @ 13D / 15D +Labelless CRTC, Fujitsu 6845 package +FDC is unpopulated on board, should be a 765 coupled with a SED9420C/AC +BDC HN65013G025 @ 2A +CAL HN6223S @ 12K - Near bus slots +CA HN6022B @ 12L / +MPX HG61H06R29F @ 9J +RAC HN60236 - 81005V @ 9H +A HN60230 - 81007V @ 9F +PAC HG61H20B12F @ 9D +DECO HG61H15B19F @ 11D +KAM HN671105AU @ 16A +DECI HG61H15B19F @ 2F +VAP NEC uPD65030G035 @ 4K +GN NEC uPD65021G030 @ 2K +4x 32x3 slots, labeled SLOT0 to 3 +11 Jumpers "SH1" +Several connectors scattered across the board +Centronics port CN9, Serial port CN8 +2 empty sockets for CN10 / CN11 (DE-9 options?) + + +**************************************************************************************************/ #include "emu.h" #include "cpu/i86/i86.h" +#include "cpu/i86/i286.h" #include "machine/am9517a.h" #include "video/mc6845.h" #include "emupal.h" @@ -26,29 +53,33 @@ namespace { class b16_state : public driver_device { public: - b16_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_vram(*this, "vram"), - m_mc6845(*this, "crtc"), - m_dma8237(*this, "8237dma"), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette"), - m_char_rom(*this, "pcg") + b16_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_vram(*this, "vram") + , m_mc6845(*this, "crtc") + , m_dma8237(*this, "8237dma") + , m_gfxdecode(*this, "gfxdecode") + , m_palette(*this, "palette") + , m_char_rom(*this, "pcg") { } void b16(machine_config &config); + void b16ex2(machine_config &config); protected: virtual void video_start() override; + void b16_map(address_map &map); + void b16_io(address_map &map); + void b16ex2_map(address_map &map); private: uint8_t m_crtc_vreg[0x100]{}, m_crtc_index = 0; + required_device m_maincpu; required_shared_ptr m_vram; required_device m_mc6845; required_device m_dma8237; - required_device m_maincpu; required_device m_gfxdecode; required_device m_palette; required_region_ptr m_char_rom; @@ -63,9 +94,6 @@ private: void memory_write_byte(offs_t offset, uint8_t data); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - - void b16_io(address_map &map); - void b16_map(address_map &map); }; #define mc6845_h_char_total (m_crtc_vreg[0]) @@ -135,6 +163,13 @@ void b16_state::b16_map(address_map &map) map(0xfc000, 0xfffff).rom().region("ipl", 0); } +void b16_state::b16ex2_map(address_map &map) +{ + b16_state::b16_map(map); + map(0x0f8000, 0x0fffff).rom().region("ipl", 0); + map(0xff8000, 0xffffff).rom().region("ipl", 0); +} + uint16_t b16_state::vblank_r() { return ioport("SYSTEM")->read(); @@ -270,7 +305,7 @@ void b16_state::memory_write_byte(offs_t offset, uint8_t data) void b16_state::b16(machine_config &config) { /* basic machine hardware */ - I8086(config, m_maincpu, XTAL(14'318'181)/2); //unknown xtal + I8086(config, m_maincpu, XTAL(14'318'181)/2); // unknown xtal, should be 8088 for base machine? m_maincpu->set_addrmap(AS_PROGRAM, &b16_state::b16_map); m_maincpu->set_addrmap(AS_IO, &b16_state::b16_io); @@ -297,7 +332,15 @@ void b16_state::b16(machine_config &config) // MCFG_PALETTE_INIT_STANDARD(black_and_white) // TODO } -/* ROM definition */ +void b16_state::b16ex2(machine_config &config) +{ + b16_state::b16(config); + I80286(config.replace(), m_maincpu, XTAL(16'000'000) / 2); // A80286-8 / S + m_maincpu->set_addrmap(AS_PROGRAM, &b16_state::b16ex2_map); + m_maincpu->set_addrmap(AS_IO, &b16_state::b16_io); +} + + ROM_START( b16 ) ROM_REGION16_LE( 0x4000, "ipl", ROMREGION_ERASEFF ) ROM_LOAD( "ipl.rom", 0x0000, 0x4000, CRC(7c1c93d5) SHA1(2a1e63a689c316ff836f21646166b38714a18e03) ) @@ -305,10 +348,26 @@ ROM_START( b16 ) ROM_REGION( 0x4000/2, "pcg", ROMREGION_ERASE00 ) ROM_END +ROM_START( b16ex2 ) + ROM_REGION16_LE( 0x8000, "ipl", ROMREGION_ERASEFF ) + // M27128-L + ROM_LOAD16_BYTE( "j4c-0072.4b", 0x0001, 0x4000, CRC(7f6e4143) SHA1(afe126639b7161562d93e955c1fc720a93e1596b)) + // M27128-H + ROM_LOAD16_BYTE( "j5c-0072.6b", 0x0000, 0x4000, CRC(5f3c85ca) SHA1(4988d8e1e763268a62f2a86104db4d106babd242)) + + ROM_REGION( 0x4000/2, "pcg", ROMREGION_ERASE00 ) + + ROM_REGION( 0x40000, "kanji", ROMREGION_ERASE00 ) + // Both HN62301AP, sockets labeled "KANJI1" and "KANJI2" + ROM_LOAD( "7l1.11f", 0x00000, 0x20000, NO_DUMP ) + ROM_LOAD( "7m1.12f", 0x20000, 0x20000, NO_DUMP ) +ROM_END + } // anonymous namespace -/* Driver */ - -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, b16, 0, 0, b16, b16, b16_state, empty_init, "Hitachi", "B16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// TODO: pinpoint MB SKU for both +// Original would be MB-16001, flyer shows a "Basic Master" subtitle +COMP( 1982?, b16, 0, 0, b16, b16, b16_state, empty_init, "Hitachi", "B16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1983?, b16ex2, 0, 0, b16ex2, b16, b16_state, empty_init, "Hitachi", "B16 EX-II", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// B16 EX-III known to exist diff --git a/src/mame/hitachi/bml3.cpp b/src/mame/hitachi/bml3.cpp index 12c0d2df941..d3289eefe41 100644 --- a/src/mame/hitachi/bml3.cpp +++ b/src/mame/hitachi/bml3.cpp @@ -12,13 +12,12 @@ References: TODO: - keyboard break NMI (as per bmjr); -- Move keyboard timer logic as 6845 hsync callback; -- Cassette relay doesn't work properly, issuing a LOAD won't autostart a load; +- Move keyboard timer logic as 6845 hsync callback, fix logic (would key repeat too fast); - Cassette baud rate bump (can switch from 600 to 1200 bauds thru $ffd7); - implement sound as a bus slot device; - implement RAM expansion as bus slots (RAM3 at 0x8000-0xbfff, RAM4 at 0xc000-0xefff); - bml3mk5: BANK REG $ffe8 (applies EMS for the RAM expansion?); -- soft reset will hang the machine; +- Cassettes requires manual press of play button when issuing a LOAD (verify); - Hitachi MB-S1 support (bumps memory map, adds an extra I/O layer); **************************************************************************************************/ diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 31c2664816a..8ac906cd074 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -19709,6 +19709,7 @@ smondial2 // 1989 Mephisto Super Mondial II @source:hitachi/b16.cpp b16 // +b16ex2 // @source:hitachi/bmjr.cpp bmjr //