braiplus: Separate driver (nw)

This commit is contained in:
AJR 2020-06-20 18:04:13 -04:00
parent 627b2d6192
commit 036927b005
5 changed files with 92 additions and 13 deletions

View File

@ -2503,6 +2503,7 @@ files {
createMESSProjects(_target, _subtarget, "homelab")
files {
MAME_DIR .. "src/mame/drivers/braiplus.cpp",
MAME_DIR .. "src/mame/drivers/homelab.cpp",
}

View File

@ -0,0 +1,87 @@
// license:BSD-3-Clause
// copyright-holders:AJR
/***************************************************************************
Skeleton driver for BraiLab Plus talking computer.
***************************************************************************/
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/i8251.h"
#include "machine/z80pio.h"
class braiplus_state : public driver_device
{
public:
braiplus_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_pio(*this, "pio%u", 1U)
{
}
void braiplus(machine_config &config);
private:
void mem_map(address_map &map);
void io_map(address_map &map);
required_device<z80_device> m_maincpu;
required_device_array<z80pio_device, 2> m_pio;
};
void braiplus_state::mem_map(address_map &map)
{
map(0x0000, 0x3fff).rom().region("maincpu", 0);
map(0xa000, 0xbfff).ram();
map(0xf200, 0xf2ff).ram(); // non-volatile memory???
map(0xf800, 0xffff).ram();
}
void braiplus_state::io_map(address_map &map)
{
map.global_mask(0xff);
map(0x04, 0x07).rw(m_pio[0], FUNC(z80pio_device::read), FUNC(z80pio_device::write));
map(0x08, 0x0b).rw(m_pio[1], FUNC(z80pio_device::read), FUNC(z80pio_device::write));
map(0x0c, 0x0d).rw("usart", FUNC(i8251_device::read), FUNC(i8251_device::write));
map(0x14, 0x14).nopw();
}
static INPUT_PORTS_START(braiplus)
INPUT_PORTS_END
static const z80_daisy_config daisy_chain[] =
{
{ "pio1" },
{ "pio2" },
{ nullptr }
};
void braiplus_state::braiplus(machine_config &config)
{
Z80(config, m_maincpu, 4'000'000);
m_maincpu->set_addrmap(AS_PROGRAM, &braiplus_state::mem_map);
m_maincpu->set_addrmap(AS_IO, &braiplus_state::io_map);
m_maincpu->set_daisy_config(daisy_chain);
Z80PIO(config, m_pio[0], 4'000'000);
m_pio[0]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
Z80PIO(config, m_pio[1], 4'000'000);
m_pio[1]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
I8251(config, "usart", 2'000'000);
}
ROM_START( braiplus )
ROM_REGION( 0x4000, "maincpu", 0 )
ROM_LOAD( "brailabplus.bin", 0x0000, 0x4000, CRC(521d6952) SHA1(f7405520d86fc7abd2dec51d1d016658472f6fe8) )
ROM_REGION( 0x0800, "chargen", 0 ) // no idea what chargen it uses, using the one from homelab4 for now
ROM_LOAD( "hl4.chr", 0x0000, 0x0800, BAD_DUMP CRC(f58ee39b) SHA1(49399c42d60a11b218a225856da86a9f3975a78a))
ROM_END
COMP( 1988, braiplus, 0, 0, braiplus, braiplus, braiplus_state, empty_init, "Jozsef and Endre Lukacs", "BraiLab Plus", MACHINE_IS_SKELETON )

View File

@ -24,9 +24,6 @@
The bios never talks to it. Official port numbers
are 3C-3F.
- Brailab4 - Same as homelab3.
- Braiplus - No work has been done. Needs to be developed from scratch.
Since it is a CP/M machine, it probably should have its own
source, once information can be found.
TM188 is (it seems) equivalent to 27S19, TBP18S030N, 6331-1, 74S288, 82S123,
@ -890,14 +887,6 @@ ROM_START( brailab4 )
ROM_LOAD_OPTIONAL( "brlcpm.rom", 0x5000, 0x0020, CRC(b936d568) SHA1(150330eccbc4b664eba4103f051d6e932038e9e8) )
ROM_END
ROM_START( braiplus )
ROM_REGION( 0x5000, "maincpu", 0 )
ROM_LOAD( "brailabplus.bin", 0x0000, 0x4000, CRC(521d6952) SHA1(f7405520d86fc7abd2dec51d1d016658472f6fe8) )
ROM_REGION( 0x0800, "chargen", 0 ) // no idea what chargen it uses, using the one from homelab4 for now
ROM_LOAD( "hl4.chr", 0x0000, 0x0800, BAD_DUMP CRC(f58ee39b) SHA1(49399c42d60a11b218a225856da86a9f3975a78a))
ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
@ -905,4 +894,3 @@ COMP( 1982, homelab2, 0, 0, homelab2, homelab2, homelab2_state, emp
COMP( 1983, homelab3, homelab2, 0, homelab3, homelab3, homelab3_state, empty_init, "Jozsef and Endre Lukacs", "Homelab 3", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
COMP( 1984, homelab4, homelab2, 0, homelab3, homelab3, homelab3_state, empty_init, "Jozsef and Endre Lukacs", "Homelab 4", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
COMP( 1984, brailab4, homelab2, 0, brailab4, brailab4, brailab4_state, empty_init, "Jozsef and Endre Lukacs", "Brailab 4", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
COMP( 1988, braiplus, homelab2, 0, brailab4, brailab4, brailab4_state, empty_init, "Jozsef and Endre Lukacs", "Brailab Plus", MACHINE_IS_SKELETON | MACHINE_SUPPORTS_SAVE )

View File

@ -9428,6 +9428,9 @@ bp1200 // (c) 1991 BP Microsystems
@source:br8641.cpp
br8641 //
@source:braiplus.cpp
braiplus //
@source:brkthru.cpp
brkthru // (c) 1986 Data East USA (US)
brkthruj // (c) 1986 Data East Corporation (Japan)
@ -16240,7 +16243,6 @@ vitaminc // (c) 1989 Home Data
@source:homelab.cpp
brailab4 //
braiplus //
homelab2 //
homelab3 //
homelab4 //

View File

@ -125,6 +125,7 @@ boss_se70.cpp
boss_sx700.cpp
bpmmicro.cpp
br8641.cpp
braiplus.cpp
bullet.cpp
busicom.cpp
bw12.cpp