New machines marked as NOT_WORKING

----------------------------------
BERT [Volker Pohlers]
This commit is contained in:
AJR 2019-01-20 18:43:27 -05:00
parent 26420facff
commit 3f1eb60d6c
4 changed files with 126 additions and 0 deletions

View File

@ -3721,6 +3721,7 @@ files {
MAME_DIR .. "src/mame/drivers/ax20.cpp",
MAME_DIR .. "src/mame/drivers/beehive.cpp",
MAME_DIR .. "src/mame/drivers/binbug.cpp",
MAME_DIR .. "src/mame/drivers/bert.cpp",
MAME_DIR .. "src/mame/drivers/besta.cpp",
MAME_DIR .. "src/mame/drivers/bitgraph.cpp",
MAME_DIR .. "src/mame/drivers/bpmmicro.cpp",

121
src/mame/drivers/bert.cpp Normal file
View File

@ -0,0 +1,121 @@
// license:BSD-3-Clause
// copyright-holders:AJR
/*******************************************************************************
BERT apparently stands for "Basic Einplatinen Rechner für TV-Serie." It is
a small educational single-board computer manufactured by the West German
firm Thomsen-Elektronik, based on the Z8671 microcontroller with a built-in
BASIC/DEBUG ROM.
Besides a 5-pin DIN connector for the terminal or PC, the board makes four
generic input and/or output ports available to the user through pin headers.
The first two ports, including the fully bidirectional port A, are directly
wired to the processor. Two other ports are read or written through memory-
mapped latches, and a fifth port represents the onboard DIP switches.
*******************************************************************************/
#include "emu.h"
#include "bus/rs232/rs232.h"
#include "cpu/z8/z8.h"
#include "machine/ram.h"
class bert_state : public driver_device
{
public:
bert_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_mpu(*this, "mpu")
, m_ram(*this, RAM_TAG)
, m_serial(*this, "serial")
{
}
void bert(machine_config &config);
protected:
virtual void machine_start() override;
private:
void portb_w(u8 data);
void portd_w(u8 data);
void mem_map(address_map &map);
required_device<z8_device> m_mpu;
required_device<ram_device> m_ram;
required_device<rs232_port_device> m_serial;
};
void bert_state::machine_start()
{
m_mpu->space(AS_PROGRAM).install_ram(0x2000, 0x2000 + m_ram->size() - 1, 0x8000, m_ram->pointer());
}
void bert_state::portb_w(u8 data)
{
m_serial->write_txd(BIT(data, 7));
}
void bert_state::portd_w(u8 data)
{
}
void bert_state::mem_map(address_map &map)
{
// A15 (P07) is only decoded internally
map(0x0800, 0x0fff).mirror(0x8000).noprw();
map(0x1000, 0x1fff).mirror(0x8000).rom().region("eprom", 0).nopw(); // 2732
map(0x5000, 0x5000).mirror(0x8fff).portr("PORTC"); // 74LS373
map(0x6000, 0x6000).mirror(0x8fff).w(FUNC(bert_state::portd_w)); // 74LS373
map(0x7000, 0x7000).mirror(0x8fff).portr("PORTE"); // 74LS368
}
static INPUT_PORTS_START(bert)
PORT_START("PORTA")
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("PORTC")
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("PORTE")
PORT_DIPNAME(0x07, 0x02, "Baud Rate") PORT_DIPLOCATION("E:!1,!2,!3")
PORT_DIPSETTING(0x06, "110")
PORT_DIPSETTING(0x00, "150")
PORT_DIPSETTING(0x07, "300")
PORT_DIPSETTING(0x05, "1200")
PORT_DIPSETTING(0x04, "2400")
PORT_DIPSETTING(0x03, "4800")
PORT_DIPSETTING(0x02, "9600")
PORT_DIPSETTING(0x01, "19200")
PORT_DIPNAME(0x08, 0x00, DEF_STR(Unused)) PORT_DIPLOCATION("E:!4")
PORT_DIPSETTING(0x00, DEF_STR(Off))
PORT_DIPSETTING(0x08, DEF_STR(On))
PORT_DIPNAME(0x10, 0x00, DEF_STR(Unused)) PORT_DIPLOCATION("E:!5")
PORT_DIPSETTING(0x00, DEF_STR(Off))
PORT_DIPSETTING(0x10, DEF_STR(On))
PORT_DIPNAME(0x20, 0x00, DEF_STR(Unused)) PORT_DIPLOCATION("E:!6")
PORT_DIPSETTING(0x00, DEF_STR(Off))
PORT_DIPSETTING(0x20, DEF_STR(On))
PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
INPUT_PORTS_END
void bert_state::bert(machine_config &config)
{
Z8671(config, m_mpu, 7.3728_MHz_XTAL);
m_mpu->set_addrmap(AS_PROGRAM, &bert_state::mem_map);
m_mpu->p2_in_cb().set_ioport("PORTA");
m_mpu->p3_out_cb().set(FUNC(bert_state::portb_w));
RAM(config, m_ram).set_default_size("2K").set_extra_options("4K"); // two 6116 sockets
RS232_PORT(config, m_serial, default_rs232_devices, "terminal"); // TTL-level, not EIA/CCITT ±12V
m_serial->rxd_handler().set_inputline(m_mpu, INPUT_LINE_IRQ3).invert(); // no actual inverter
}
ROM_START(bert)
ROM_REGION(0x1000, "eprom", 0)
ROM_LOAD("bert.bin", 0x0000, 0x1000, CRC(52ece0e7) SHA1(d39cc9b6248547cfa8fd49d43532abf9399348a5))
ROM_END
COMP(1987, bert, 0, 0, bert, bert, bert_state, empty_init, "VGS Verlagsgesellschaft", "BERT", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)

View File

@ -2925,6 +2925,9 @@ ldrink //
ldrinka //
merryjn //
@source:bert.cpp
bert //
@source:berzerk.cpp
berzerk // (c) 1980
berzerk1 // (c) 1980

View File

@ -91,6 +91,7 @@ bbcbc.cpp
bcs3.cpp
bebox.cpp
beehive.cpp
bert.cpp
besta.cpp
beta.cpp
bigbord2.cpp