New machines marked as NOT_WORKING

----------------------------------
F387X PEP System [Bitsavers]
This commit is contained in:
AJR 2021-10-30 15:50:48 -04:00
parent c6993affc6
commit ba4b7c7d84
4 changed files with 178 additions and 0 deletions

View File

@ -2439,6 +2439,7 @@ files {
MAME_DIR .. "src/mame/audio/channelf.cpp",
MAME_DIR .. "src/mame/audio/channelf.h",
MAME_DIR .. "src/mame/video/channelf.cpp",
MAME_DIR .. "src/mame/drivers/f387x.cpp",
}
createMESSProjects(_target, _subtarget, "fairlight")

173
src/mame/drivers/f387x.cpp Normal file
View File

@ -0,0 +1,173 @@
// license:BSD-3-Clause
// copyright-holders:AJR
/************************************************************************************************************
Skeleton driver for Fairchild F387X PEP (Prototyping, Emulating and Programming) System.
************************************************************************************************************/
#include "emu.h"
#include "bus/rs232/rs232.h"
#include "cpu/f8/f8.h"
#include "machine/f3853.h"
class f387x_state : public driver_device
{
public:
f387x_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_rs232c(*this, "rs232c")
, m_keypad(*this, "ROW%u", 0U)
{
}
void f387x(machine_config &config);
private:
u8 p8_r();
void p8_w(u8 data);
u8 p9_r();
void p9_w(u8 data);
u8 ipor_r();
void opor_w(u8 data);
void mem_map(address_map &map);
void io_map(address_map &map);
required_device<cpu_device> m_maincpu;
required_device<rs232_port_device> m_rs232c;
required_ioport_array<6> m_keypad;
};
u8 f387x_state::p8_r()
{
return 0;
}
void f387x_state::p8_w(u8 data)
{
}
u8 f387x_state::p9_r()
{
return 0;
}
void f387x_state::p9_w(u8 data)
{
}
u8 f387x_state::ipor_r()
{
return m_rs232c->rxd_r() ? 0x80 : 0;
}
void f387x_state::opor_w(u8 data)
{
m_rs232c->write_txd(BIT(data, 0));
}
void f387x_state::mem_map(address_map &map)
{
map(0x0000, 0x0002).lr8(NAME([](offs_t offset) { return offset == 0 ? 0x29 : 0x80; })); // FIXME: actually done by decoding ROMC and masking D7
map(0x2b80, 0x2bff).ram(); // F6810
map(0x8000, 0x87ff).rom().region("pepbug", 0);
}
void f387x_state::io_map(address_map &map)
{
map(0x20, 0x20).rw(FUNC(f387x_state::p8_r), FUNC(f387x_state::p8_w));
map(0x21, 0x21).rw(FUNC(f387x_state::p9_r), FUNC(f387x_state::p9_w));
map(0x24, 0x24).rw(FUNC(f387x_state::ipor_r), FUNC(f387x_state::opor_w));
map(0xeb, 0xeb).nopw(); // code deliberately outputs to nonexistent port here
}
static INPUT_PORTS_START(f387x)
PORT_START("ROW0")
PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("C/R") PORT_CODE(KEYCODE_ENTER)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("DEL") PORT_CODE(KEYCODE_BACKSPACE)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CHG") PORT_CODE(KEYCODE_BACKSLASH)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("+") PORT_CODE(KEYCODE_EQUALS)
PORT_START("ROW1")
PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("REG") PORT_CODE(KEYCODE_R)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("PORT") PORT_CODE(KEYCODE_O)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS)
PORT_START("ROW2")
PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("3 NEXT") PORT_CODE(KEYCODE_3)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("7 ACC") PORT_CODE(KEYCODE_7)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("B FIND") PORT_CODE(KEYCODE_B)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("F GO") PORT_CODE(KEYCODE_F)
PORT_START("ROW3")
PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("2 PREV") PORT_CODE(KEYCODE_2)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("6 W") PORT_CODE(KEYCODE_6)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("A MOVE") PORT_CODE(KEYCODE_A)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("E LOAD") PORT_CODE(KEYCODE_E)
PORT_START("ROW4")
PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("1 DC") PORT_CODE(KEYCODE_1)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("5 ISAR") PORT_CODE(KEYCODE_5)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("9 HEX") PORT_CODE(KEYCODE_9)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("D B CLR") PORT_CODE(KEYCODE_D)
PORT_START("ROW5")
PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("0 PC") PORT_CODE(KEYCODE_0)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("4 2716") PORT_CODE(KEYCODE_4)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("8 E70") PORT_CODE(KEYCODE_8)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("C BRPT") PORT_CODE(KEYCODE_C)
PORT_START("SW3")
PORT_DIPNAME(1, 1, DEF_STR(Unknown)) PORT_DIPLOCATION("SW3:1")
PORT_DIPSETTING(1, DEF_STR(Off))
PORT_DIPSETTING(0, DEF_STR(On))
PORT_DIPNAME(2, 2, DEF_STR(Unknown)) PORT_DIPLOCATION("SW3:2")
PORT_DIPSETTING(2, DEF_STR(Off))
PORT_DIPSETTING(0, DEF_STR(On))
PORT_DIPNAME(4, 4, DEF_STR(Unknown)) PORT_DIPLOCATION("SW3:3")
PORT_DIPSETTING(4, DEF_STR(Off))
PORT_DIPSETTING(0, DEF_STR(On))
PORT_DIPNAME(8, 8, DEF_STR(Unknown)) PORT_DIPLOCATION("SW3:4")
PORT_DIPSETTING(8, DEF_STR(Off))
PORT_DIPSETTING(0, DEF_STR(On))
INPUT_PORTS_END
static DEVICE_INPUT_DEFAULTS_START(terminal)
DEVICE_INPUT_DEFAULTS("RS232_RXBAUD", 0xff, RS232_BAUD_110)
DEVICE_INPUT_DEFAULTS("RS232_TXBAUD", 0xff, RS232_BAUD_110)
DEVICE_INPUT_DEFAULTS("RS232_DATABITS", 0xff, RS232_DATABITS_8)
DEVICE_INPUT_DEFAULTS("RS232_PARITY", 0xff, RS232_PARITY_NONE)
DEVICE_INPUT_DEFAULTS("RS232_STOPBITS", 0xff, RS232_STOPBITS_2)
DEVICE_INPUT_DEFAULTS_END
void f387x_state::f387x(machine_config &config)
{
F8(config, m_maincpu, 2_MHz_XTAL); // F3850PC
m_maincpu->set_addrmap(AS_PROGRAM, &f387x_state::mem_map);
m_maincpu->set_addrmap(AS_IO, &f387x_state::io_map);
F3853(config, "smi", 0);
RS232_PORT(config, m_rs232c, default_rs232_devices, "terminal");
m_rs232c->set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
}
ROM_START(f387x)
ROM_REGION(0x1800, "pepbug", 0)
ROM_LOAD("pepbug.u16", 0x0000, 0x0800, CRC(de05ac6d) SHA1(220281a7016aae785417bbfe8383c76f72f8fac2))
// 2716 sockets at U14 and U15 are not populated
ROM_END
COMP(1979, f387x, 0, 0, f387x, f387x, f387x_state, empty_init, "Fairchild Instrument & Camera Corporation", "F387X PEP System", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)

View File

@ -13706,6 +13706,9 @@ f1gpb // bootleg
mosaicf2 // (c) 1999 F2 System
royalpk2 //
@source:f387x.cpp
f387x // (c) 1979 Fairchild
@source:facit4440.cpp
facit4440 // 1984

View File

@ -304,6 +304,7 @@ exelv.cpp
exorciser.cpp
exorterm.cpp
exp85.cpp
f387x.cpp
facit4440.cpp
falco5220.cpp
falcots.cpp