summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2021-03-11 15:36:55 +0100
committer hap <happppp@users.noreply.github.com>2021-03-11 15:37:12 +0100
commit0b371f59629fa2742bf938789ab89c701140102b (patch)
tree95f8e0a05405e890bae798f15ddb095c4d084ed1
parent4cf96da22c09651c1da2b27ee61028d558e7af49 (diff)
New machines marked as NOT_WORKING
---------------------------------- Tri-1 (Fonas) [hap, Sean Riddle]
-rw-r--r--src/devices/cpu/pps41/pps41base.cpp10
-rw-r--r--src/devices/cpu/pps41/pps41base.h2
-rw-r--r--src/mame/drivers/fidel_cc7.cpp16
-rw-r--r--src/mame/drivers/hh_pps41.cpp110
-rw-r--r--src/mame/drivers/hh_tms1k.cpp6
-rw-r--r--src/mame/layout/hh_pps41_test.lay2
-rw-r--r--src/mame/mame.lst1
7 files changed, 123 insertions, 24 deletions
diff --git a/src/devices/cpu/pps41/pps41base.cpp b/src/devices/cpu/pps41/pps41base.cpp
index 7250383e664..4c824022b39 100644
--- a/src/devices/cpu/pps41/pps41base.cpp
+++ b/src/devices/cpu/pps41/pps41base.cpp
@@ -23,6 +23,10 @@ Part numbers:
"spider" = 2 rows of pins on each side, just like standard PPS-4 CPUs.
"L" main difference is low-power
+Internal clock is 4-phase (4 subcycles per 1-byte opcode), and when running
+from an external oscillator, it is divided by 2 first. It also has an internal
+oscillator which can be enabled up with a resistor to VC.
+
References:
- Series MM76 Product Description
- Series MM77 Product Description
@@ -117,7 +121,7 @@ void pps41_base_device::device_start()
m_s = 0;
m_sdi = 0;
- m_sclock_in = 0;
+ m_sclock_in = 1;
m_sclock_count = 0;
m_ss_pending = false;
@@ -125,7 +129,7 @@ void pps41_base_device::device_start()
m_d_mask = (1 << m_d_pins) - 1;
m_d_output = 0;
m_r_output = 0;
- m_int_line[0] = m_int_line[1] = 0;
+ m_int_line[0] = m_int_line[1] = 1; // GND = 1
m_int_ff[0] = m_int_ff[1] = 0;
// register for savestates
@@ -255,7 +259,7 @@ void pps41_base_device::execute_set_input(int line, int state)
void pps41_base_device::cycle()
{
- m_icount--;
+ m_icount -= 4;
// clock serial i/o
m_ss_pending = m_ss_pending || bool(m_sclock_count & 1);
diff --git a/src/devices/cpu/pps41/pps41base.h b/src/devices/cpu/pps41/pps41base.h
index ce60c6692ce..af5e12ddbcc 100644
--- a/src/devices/cpu/pps41/pps41base.h
+++ b/src/devices/cpu/pps41/pps41base.h
@@ -52,6 +52,8 @@ protected:
virtual void device_reset() override;
// device_execute_interface overrides
+ virtual u64 execute_clocks_to_cycles(u64 clocks) const noexcept override { return (clocks + 2 - 1) / 2; }
+ virtual u64 execute_cycles_to_clocks(u64 cycles) const noexcept override { return (cycles * 2); }
virtual u32 execute_min_cycles() const noexcept override { return 1; }
virtual u32 execute_max_cycles() const noexcept override { return 2; }
virtual u32 execute_input_lines() const noexcept override { return 4; }
diff --git a/src/mame/drivers/fidel_cc7.cpp b/src/mame/drivers/fidel_cc7.cpp
index ce466993ad8..0446a0a1977 100644
--- a/src/mame/drivers/fidel_cc7.cpp
+++ b/src/mame/drivers/fidel_cc7.cpp
@@ -3,10 +3,10 @@
// thanks-to:Berger
/******************************************************************************
-Fidelity Chess Challenger 7 (CC7, BCC)
+Fidelity Chess Challenger 7 (BCC)
------------------------
-It was Fidelity's most sold chess computer. Model BCC appears to be the first
-version, and the CC7 model was produced starting from 1980.
+It was Fidelity's most sold chess computer. The first version was released in
+1979, and a newer PCB revision was produced in 1980.
Zilog Z80A, 3.579MHz from XTAL
Z80 IRQ/NMI unused, no timer IC.
@@ -18,7 +18,7 @@ to the display panel instead.
CC7 (BCC) was also bootlegged around 1981 by Splice Industria Brasileira,
as "Byte XD-300". Mostek MK3880N-4 @ 4MHz, ROM contents is same as BCC REVB.
-RE information from netlist by Berger (a BCC model)
+RE information from netlist by Berger (1st version PCB)
Memory map:
-----------
@@ -249,12 +249,12 @@ void bcc_state::bcc(machine_config &config)
ROM Definitions
******************************************************************************/
-ROM_START( cc7 ) // model CC7, PCB label 510-380
+ROM_START( cc7 ) // PCB label 510-380
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "101-32016", 0x0000, 0x1000, CRC(b9076c52) SHA1(09b17ac6cd6a1c5c62aea3649f3367bcf4405598) ) // 2332
ROM_END
-ROM_START( cc7a ) // model BCC
+ROM_START( cc7a )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "cn19103n_bcc-revb", 0x0000, 0x1000, CRC(a397d471) SHA1(9b12bc442fccee40f4d8500c792bc9d886c5e1a5) ) // 2332
ROM_END
@@ -274,7 +274,7 @@ ROM_END
******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1980, cc7, 0, 0, bcc, bcc, bcc_state, empty_init, "Fidelity Electronics", "Chess Challenger \"7\" (model CC7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1979, cc7a, cc7, 0, bcc, bcc, bcc_state, empty_init, "Fidelity Electronics", "Chess Challenger \"7\" (model BCC, rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1980, cc7, 0, 0, bcc, bcc, bcc_state, empty_init, "Fidelity Electronics", "Chess Challenger \"7\" (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1979, cc7a, cc7, 0, bcc, bcc, bcc_state, empty_init, "Fidelity Electronics", "Chess Challenger \"7\" (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, backgamc, 0, 0, bkc, bkc, bcc_state, empty_init, "Fidelity Electronics", "Backgammon Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/hh_pps41.cpp b/src/mame/drivers/hh_pps41.cpp
index b5568301666..d24be147b12 100644
--- a/src/mame/drivers/hh_pps41.cpp
+++ b/src/mame/drivers/hh_pps41.cpp
@@ -11,6 +11,7 @@
#include "cpu/pps41/mm75.h"
#include "cpu/pps41/mm76.h"
+#include "cpu/pps41/mm78.h"
#include "video/pwm.h"
#include "sound/spkrdev.h"
#include "speaker.h"
@@ -20,7 +21,7 @@
#include "memoquiz.lh"
#include "scrabsen.lh"
-//#include "hh_pps41_test.lh" // common test-layout - use external artwork
+#include "hh_pps41_test.lh" // common test-layout - use external artwork
class hh_pps41_state : public driver_device
@@ -86,7 +87,8 @@ u8 hh_pps41_state::read_inputs(int columns)
if (m_inp_mux >> i & 1)
ret |= m_inputs[i]->read();
- return ret;
+ // active low by default
+ return ~ret;
}
@@ -101,6 +103,96 @@ namespace {
/***************************************************************************
+ Fonas Tri-1
+ * MM78 MCU variant with 40 pins (label ?, die label A7859)
+ * 4 7seg leds, 41 other leds, 1-bit sound
+
+***************************************************************************/
+
+class ftri1_state : public hh_pps41_state
+{
+public:
+ ftri1_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_pps41_state(mconfig, type, tag)
+ { }
+
+ void update_display();
+ void write_d(u16 data);
+ void write_r(u8 data);
+ void ftri1(machine_config &config);
+};
+
+// handlers
+
+void ftri1_state::update_display()
+{
+ m_display->matrix((m_d << 4 & 0x100) | (~m_r & 0xff), bitswap<8>(m_d, 2,5,8,0,1,3,7,6));
+}
+
+void ftri1_state::write_d(u16 data)
+{
+ // DIO0-DIO3, DIO5-DIO8: digit/led data
+ // DIO4: another led select
+ m_d = data;
+ update_display();
+
+ // DIO9: speaker out
+ m_speaker->level_w(BIT(data, 9));
+}
+
+void ftri1_state::write_r(u8 data)
+{
+ // RIO1-RIO8: digit/led select
+ m_r = data;
+ update_display();
+}
+
+// config
+
+static INPUT_PORTS_START( ftri1 )
+ PORT_START("IN.0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_4)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_5)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_6)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_7)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_8)
+INPUT_PORTS_END
+
+void ftri1_state::ftri1(machine_config &config)
+{
+ /* basic machine hardware */
+ MM78(config, m_maincpu, 600000); // approximation
+ m_maincpu->write_d().set(FUNC(ftri1_state::write_d));
+ m_maincpu->write_r().set(FUNC(ftri1_state::write_r));
+ m_maincpu->read_p().set_ioport("IN.0");
+
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(9, 8);
+ m_display->set_segmask(0xff, 0x7f);
+ config.set_default_layout(layout_hh_pps41_test);
+
+ /* sound hardware */
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, m_speaker);
+ m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+
+// roms
+
+ROM_START( ftri1 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "ftri1.bin", 0x0000, 0x0800, CRC(3c957f1d) SHA1(42db81a78bbef971a84e61a26d91f7411980d79c) )
+ROM_END
+
+
+
+
+
+/***************************************************************************
+
Invicta Electronic Master Mind
* MM75 MCU (label MM75 A7525-11, die label A7525)
* 9-digit 7seg VFD display (Futaba 9-ST)
@@ -150,7 +242,7 @@ void mastmind_state::write_r(u8 data)
u8 mastmind_state::read_p()
{
// PI1-PI4: multiplexed inputs
- return ~read_inputs(4);
+ return read_inputs(4);
}
// config
@@ -184,7 +276,7 @@ INPUT_PORTS_END
void mastmind_state::mastmind(machine_config &config)
{
/* basic machine hardware */
- MM75(config, m_maincpu, 90000); // approximation
+ MM75(config, m_maincpu, 700000); // approximation
m_maincpu->write_d().set(FUNC(mastmind_state::write_d));
m_maincpu->write_r().set(FUNC(mastmind_state::write_r));
m_maincpu->read_p().set(FUNC(mastmind_state::read_p));
@@ -282,7 +374,7 @@ void memoquiz_state::write_r(u8 data)
u8 memoquiz_state::read_p()
{
// PI1-PI4: multiplexed inputs
- return ~read_inputs(4);
+ return read_inputs(4);
}
// config
@@ -322,7 +414,7 @@ INPUT_PORTS_END
void memoquiz_state::memoquiz(machine_config &config)
{
/* basic machine hardware */
- MM75(config, m_maincpu, 90000); // approximation
+ MM75(config, m_maincpu, 700000); // approximation
m_maincpu->write_d().set(FUNC(memoquiz_state::write_d));
m_maincpu->write_r().set(FUNC(memoquiz_state::write_r));
m_maincpu->read_p().set(FUNC(memoquiz_state::read_p));
@@ -412,7 +504,7 @@ void scrabsen_state::write_r(u8 data)
u8 scrabsen_state::read_p()
{
// PI1-PI7: multiplexed inputs
- return ~read_inputs(5);
+ return read_inputs(5);
}
// config
@@ -477,7 +569,7 @@ INPUT_PORTS_END
void scrabsen_state::scrabsen(machine_config &config)
{
/* basic machine hardware */
- MM76EL(config, m_maincpu, 95000); // approximation
+ MM76EL(config, m_maincpu, 750000); // approximation
m_maincpu->write_d().set(FUNC(scrabsen_state::write_d));
m_maincpu->write_r().set(FUNC(scrabsen_state::write_r));
m_maincpu->read_p().set(FUNC(scrabsen_state::read_p));
@@ -513,6 +605,8 @@ ROM_END
***************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
+CONS( 1979, ftri1, 0, 0, ftri1, ftri1, ftri1_state, empty_init, "Fonas", "Tri-1 (Fonas)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+
CONS( 1979, mastmind, 0, 0, mastmind, mastmind, mastmind_state, empty_init, "Invicta Plastics", "Electronic Master Mind (Invicta)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
CONS( 1978, memoquiz, 0, 0, memoquiz, memoquiz, memoquiz_state, empty_init, "M.E.M. Belgium", "Memoquiz", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index 360ce6434aa..af8182cdce3 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -6295,10 +6295,8 @@ ROM_END
This handheld is not a toy, read the manual for more information. In short,
it is a device for predicting the winning chance of a gambling horserace.
- known releases:
- - USA: Thoroughbred Horse Race Analyzer
- - China/Canada: Thoroughbred Horse Race Analyzer, published in 1994 by
- Advanced Handicapping Technologies, Inc.
+ It was rereleased in 1994 in China/Canada by AHTI(Advanced Handicapping
+ Technologies, Inc.), on a Hitachi HD613901.
***************************************************************************/
diff --git a/src/mame/layout/hh_pps41_test.lay b/src/mame/layout/hh_pps41_test.lay
index d737d012688..1f4755364e9 100644
--- a/src/mame/layout/hh_pps41_test.lay
+++ b/src/mame/layout/hh_pps41_test.lay
@@ -10,7 +10,7 @@ license:CC0
<element name="led" defstate="0">
<disk state="0"><color red="0.0" green="0.0" blue="0.0" /></disk>
- <disk state="1"><color red="0.5" green="1.0" blue="1.0" /></disk>
+ <disk state="1"><color red="1.0" green="0.2" blue="0.23" /></disk>
</element>
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 3e56f6ac0f7..0788a242457 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -16176,6 +16176,7 @@ us2pfball // US Games
uspbball // US Games
@source:hh_pps41.cpp
+ftri1 // Fonas
mastmind // Invicta
memoquiz // MEM
scrabsen // Selchow & Righter