New systems marked not working

------------------------------
B16 EX-II [Mike Stedman]
This commit is contained in:
angelosa 2024-09-21 21:21:51 +02:00
parent 31bec4a4a9
commit 857f41fe05
3 changed files with 90 additions and 31 deletions

View file

@ -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<cpu_device> m_maincpu;
required_shared_ptr<uint16_t> m_vram;
required_device<mc6845_device> m_mc6845;
required_device<am9517a_device> m_dma8237;
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_region_ptr<uint8_t> 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

View file

@ -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);
**************************************************************************************************/

View file

@ -19709,6 +19709,7 @@ smondial2 // 1989 Mephisto Super Mondial II
@source:hitachi/b16.cpp
b16 //
b16ex2 //
@source:hitachi/bmjr.cpp
bmjr //