mirror of
https://github.com/holub/mame
synced 2025-04-16 05:24:54 +03:00
New machines marked as NOT_WORKING
---------------------------------- MBC020-65 CPU/Video Board (Torque Systems OEM)
This commit is contained in:
parent
9fe840d3fe
commit
6b0288beee
@ -3758,6 +3758,7 @@ files {
|
||||
createMESSProjects(_target, _subtarget, "synertek")
|
||||
files {
|
||||
MAME_DIR .. "src/mame/drivers/ktm3.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/mbc020.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/sym1.cpp",
|
||||
}
|
||||
|
||||
|
147
src/mame/drivers/mbc020.cpp
Normal file
147
src/mame/drivers/mbc020.cpp
Normal file
@ -0,0 +1,147 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/****************************************************************************
|
||||
|
||||
Preliminary driver for single-board computers by Synertek/Sym Systems.
|
||||
|
||||
The bottom edge connector is compatible with Motorola's EXORciser/
|
||||
Micromodule bus. One of MBC020's other connectors is claimed to allow
|
||||
"Direct Attachment to a CRT Monitor"; this was omitted in MBC010.
|
||||
|
||||
MBC010 and MBC020 were available with either a SY6512 CPU (-65) or
|
||||
MC6800 CPU (-68), running at either 1 or 2 MHz.
|
||||
|
||||
Though the timing circuit includes dynamic RAM refresh control, the
|
||||
onboard RAM is entirely static (6 SY2114s or equivalent, plus an optional
|
||||
socketed 6116).
|
||||
|
||||
"Sym Systems Corp." may have been a short-lived spinoff or subsidiary of
|
||||
Synertek, named in reference to their SYM-1 SBC. Synertek clearly did not
|
||||
insist on in-house sourcing of the 6500-series peripherals, since their
|
||||
catalog photo of the MBC020 includes a Motorola-branded MC6845 CRTC, and
|
||||
the dumped board has a Rockwell VIA and AMI ACIA.
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "bus/rs232/rs232.h"
|
||||
#include "cpu/m6502/m6502.h"
|
||||
#include "machine/6522via.h"
|
||||
#include "machine/mos6551.h"
|
||||
#include "video/mc6845.h"
|
||||
#include "screen.h"
|
||||
|
||||
class mbc020_state : public driver_device
|
||||
{
|
||||
public:
|
||||
mbc020_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_chargen(*this, "chargen")
|
||||
{
|
||||
}
|
||||
|
||||
void mbc020(machine_config &config);
|
||||
|
||||
private:
|
||||
MC6845_UPDATE_ROW(update_row);
|
||||
MC6845_ON_UPDATE_ADDR_CHANGED(update_cb);
|
||||
|
||||
void mem_map(address_map &map);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_region_ptr<u8> m_chargen;
|
||||
};
|
||||
|
||||
MC6845_UPDATE_ROW(mbc020_state::update_row)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
MC6845_ON_UPDATE_ADDR_CHANGED(mbc020_state::update_cb)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void mbc020_state::mem_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x03ff).ram();
|
||||
map(0x8000, 0x8fff).rom().region("monitor", 0x2000);
|
||||
map(0x9000, 0x900f).m("via", FUNC(via6522_device::map));
|
||||
map(0x9a00, 0x9a03).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
|
||||
map(0x9c00, 0x9c00).rw("crtc", FUNC(sy6545_1_device::status_r), FUNC(sy6545_1_device::address_w));
|
||||
map(0x9c01, 0x9c01).rw("crtc", FUNC(sy6545_1_device::register_r), FUNC(sy6545_1_device::register_w));
|
||||
map(0xa000, 0xafff).ram();
|
||||
map(0xb000, 0xcfff).rom().region("monitor", 0);
|
||||
map(0xf800, 0xffff).rom().region("monitor", 0x2800);
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START(mbc020)
|
||||
PORT_START("PA")
|
||||
PORT_CONFNAME(0x38, 0x30, "Baud Rate")
|
||||
PORT_CONFSETTING(0x00, "110")
|
||||
PORT_CONFSETTING(0x08, "300")
|
||||
PORT_CONFSETTING(0x10, "600")
|
||||
PORT_CONFSETTING(0x18, "1200")
|
||||
PORT_CONFSETTING(0x20, "2400")
|
||||
PORT_CONFSETTING(0x28, "4800")
|
||||
PORT_CONFSETTING(0x30, "9600")
|
||||
PORT_CONFSETTING(0x38, "19200")
|
||||
PORT_BIT(0xc3, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static DEVICE_INPUT_DEFAULTS_START( terminal )
|
||||
DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9600 )
|
||||
DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9600 )
|
||||
DEVICE_INPUT_DEFAULTS( "RS232_STARTBITS", 0xff, RS232_STARTBITS_1 )
|
||||
DEVICE_INPUT_DEFAULTS( "RS232_DATABITS", 0xff, RS232_DATABITS_7 )
|
||||
DEVICE_INPUT_DEFAULTS( "RS232_PARITY", 0xff, RS232_PARITY_NONE )
|
||||
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_2 )
|
||||
DEVICE_INPUT_DEFAULTS_END
|
||||
|
||||
void mbc020_state::mbc020(machine_config &config)
|
||||
{
|
||||
M6512(config, m_maincpu, 16_MHz_XTAL / 8); // SYU6512A
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &mbc020_state::mem_map);
|
||||
|
||||
via6522_device &via(VIA6522(config, "via", 16_MHz_XTAL / 8)); // R6522AP
|
||||
via.readpa_handler().set_ioport("PA");
|
||||
|
||||
mos6551_device &acia(MOS6551(config, "acia", 16_MHz_XTAL / 8)); // S6551AP
|
||||
acia.set_xtal(1.8432_MHz_XTAL);
|
||||
acia.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
|
||||
acia.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts));
|
||||
acia.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr));
|
||||
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_raw(16_MHz_XTAL, 1016, 0, 640, 263, 0, 225);
|
||||
screen.set_screen_update("crtc", FUNC(sy6545_1_device::screen_update));
|
||||
|
||||
sy6545_1_device &crtc(SY6545_1(config, "crtc", 16_MHz_XTAL / 8)); // SY6545-1
|
||||
crtc.set_screen("screen");
|
||||
crtc.set_show_border_area(false);
|
||||
crtc.set_char_width(8);
|
||||
crtc.set_update_row_callback(FUNC(mbc020_state::update_row));
|
||||
crtc.set_on_update_addr_change_callback(FUNC(mbc020_state::update_cb));
|
||||
|
||||
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
|
||||
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
|
||||
rs232.rxd_handler().set("acia", FUNC(mos6551_device::write_rxd));
|
||||
rs232.dsr_handler().set("acia", FUNC(mos6551_device::write_dsr));
|
||||
rs232.cts_handler().set("acia", FUNC(mos6551_device::write_cts));
|
||||
}
|
||||
|
||||
ROM_START(mbc020) // Silkscreened on PCB: "© 1980 by SYM Systems Corp."
|
||||
ROM_REGION(0x3000, "monitor", 0) // "SERVOMON VER 4.0 COPYRIGHT JUL-1983 TORQUE SYSTEMS INC."
|
||||
ROM_LOAD("20013-4.u13", 0x0000, 0x1000, CRC(53cbfc68) SHA1(72834ac1d8e8feed1941c7b7d53b264d8333a496)) // TMS2532JL-35
|
||||
ROM_LOAD("20014-4.u14", 0x1000, 0x1000, CRC(f7ed5508) SHA1(a6d644f07c889c24291fe6d64f9ef90ef34324ba)) // TMS2532JL-35
|
||||
ROM_LOAD("20015-4.u15", 0x2000, 0x1000, CRC(17485482) SHA1(57a6f684dd5111f2499b655f27794116aef354d7)) // TMS2532JL-35
|
||||
|
||||
ROM_REGION(0x800, "chargen", 0)
|
||||
ROM_LOAD("02-0054a.u5", 0x000, 0x800, CRC(3ed97af7) SHA1(26d5a1c96b9896336e7ccf9e66dbeb2733ab4593))
|
||||
|
||||
ROM_REGION(0x20, "mmap", 0) // memory mapping PROM (decodes A11–A15)
|
||||
ROM_LOAD("n82s123n.u17", 0x00, 0x20, NO_DUMP)
|
||||
ROM_END
|
||||
|
||||
COMP(1983, mbc020, 0, 0, mbc020, mbc020, mbc020_state, empty_init, "Sym Systems / Torque Systems", "MBC020-65 CPU/Video Board (Torque Systems OEM)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
|
@ -22150,6 +22150,9 @@ greatgun // (c) 1983
|
||||
mazerbla // (c) 1983
|
||||
mazerblaa // (c) 1983
|
||||
|
||||
@source:mbc020.cpp
|
||||
mbc020 //
|
||||
|
||||
@source:mbc200.cpp
|
||||
mbc200 //
|
||||
|
||||
|
@ -541,6 +541,7 @@ macquadra700.cpp
|
||||
magiceyes_pollux_vr3520f.cpp
|
||||
magnum.cpp
|
||||
mattelchess.cpp
|
||||
mbc020.cpp
|
||||
mbc200.cpp
|
||||
mbc55x.cpp
|
||||
mbee.cpp
|
||||
|
Loading…
Reference in New Issue
Block a user