summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/novag68k.cpp
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2018-04-30 17:38:47 +0200
committer hap <happppp@users.noreply.github.com>2018-04-30 17:39:00 +0200
commit9f2e687dbe498bb5f4a4c36d5e440c26374b1176 (patch)
tree5f7e1a2c981baad65737aab56b4735010428c4f6 /src/mame/drivers/novag68k.cpp
parentb60c852f119db04564731fa86d73e0a986771258 (diff)
New working machine added
----------- Scorpio 68000 [hap, yoyo_chessboard]
Diffstat (limited to 'src/mame/drivers/novag68k.cpp')
-rw-r--r--src/mame/drivers/novag68k.cpp82
1 files changed, 73 insertions, 9 deletions
diff --git a/src/mame/drivers/novag68k.cpp b/src/mame/drivers/novag68k.cpp
index 0c48b204951..b0c041d0d8a 100644
--- a/src/mame/drivers/novag68k.cpp
+++ b/src/mame/drivers/novag68k.cpp
@@ -1,5 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:hap
+// thanks-to:yoyo_chessboard
/******************************************************************************
Novag generic 68000 based chess computer driver
@@ -11,6 +12,7 @@
TODO:
- verify irq/beeper timing
+ - scorpio68 internal artwork
- RS232 port
******************************************************************************
@@ -22,6 +24,8 @@ Diablo 68000:
- R65C51P2 ACIA @ 1.8432MHz, RS232
- magnetic sensors, 8*8 chessboard leds
+Scorpio 68000 hardware is very similar, but with chessboard buttons and side leds.
+
******************************************************************************/
#include "emu.h"
@@ -52,6 +56,11 @@ public:
DECLARE_READ8_MEMBER(diablo68k_input2_r);
void diablo68k_map(address_map &map);
void diablo68k(machine_config &config);
+
+ // Scorpio 68000
+ DECLARE_WRITE8_MEMBER(scorpio68k_control_w);
+ void scorpio68k_map(address_map &map);
+ void scorpio68k(machine_config &config);
};
@@ -66,9 +75,9 @@ public:
WRITE8_MEMBER(novag68k_state::diablo68k_control_w)
{
+ // d0: HD44780 E?
// d1: HD44780 RS
- // other: ?
- m_lcd_control = data & 7;
+ m_lcd_control = data & 3;
// d7: enable beeper
m_beeper->set_state(data >> 7 & 1);
@@ -107,10 +116,31 @@ READ8_MEMBER(novag68k_state::diablo68k_input2_r)
/******************************************************************************
+ Scorpio 68000
+******************************************************************************/
+
+WRITE8_MEMBER(novag68k_state::scorpio68k_control_w)
+{
+ // d0: HD44780 E?
+ // d1: HD44780 RS
+ m_lcd_control = data & 3;
+
+ // d7: enable beeper
+ m_beeper->set_state(data >> 7 & 1);
+
+ // d4-d6: input mux, led select
+ // d2,d3: led data
+ m_inp_mux = 1 << (data >> 4 & 0x7) & 0xff;
+ display_matrix(2, 8, ~data >> 2 & 3, m_inp_mux);
+}
+
+
+
+/******************************************************************************
Address Maps
******************************************************************************/
-// Diablo 68000
+// Diablo 68000 / Scorpio 68000
void novag68k_state::diablo68k_map(address_map &map)
{
@@ -126,15 +156,20 @@ void novag68k_state::diablo68k_map(address_map &map)
map(0xff8000, 0xffbfff).ram().share("nvram");
}
+void novag68k_state::scorpio68k_map(address_map &map)
+{
+ diablo68k_map(map);
+ map(0x380000, 0x380000).w(this, FUNC(novag68k_state::scorpio68k_control_w));
+ map(0x3c0000, 0x3c0001).nopw();
+}
+
/******************************************************************************
Input Ports
******************************************************************************/
-static INPUT_PORTS_START( diablo68k )
- PORT_INCLUDE( novag_cb_magnets )
-
+static INPUT_PORTS_START( diablo68k_sidepanel )
PORT_MODIFY("IN.0")
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Go")
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Take Back / Analyze Games")
@@ -176,6 +211,16 @@ static INPUT_PORTS_START( diablo68k )
PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Print Board / Interface")
INPUT_PORTS_END
+static INPUT_PORTS_START( diablo68k )
+ PORT_INCLUDE( novag_cb_magnets )
+ PORT_INCLUDE( diablo68k_sidepanel )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( scorpio68k )
+ PORT_INCLUDE( novag_cb_buttons )
+ PORT_INCLUDE( diablo68k_sidepanel )
+INPUT_PORTS_END
+
/******************************************************************************
@@ -218,6 +263,16 @@ MACHINE_CONFIG_START(novag68k_state::diablo68k)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
+MACHINE_CONFIG_START(novag68k_state::scorpio68k)
+ diablo68k(config);
+
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(scorpio68k_map)
+
+ //MCFG_DEFAULT_LAYOUT(layout_novag_scorpio68k)
+MACHINE_CONFIG_END
+
/******************************************************************************
@@ -228,7 +283,15 @@ ROM_START( diablo68 )
ROM_REGION16_BE( 0x20000, "maincpu", 0 )
ROM_LOAD16_BYTE("evenurom.bin", 0x00000, 0x8000, CRC(03477746) SHA1(8bffcb159a61e59bfc45411e319aea6501ebe2f9) )
ROM_LOAD16_BYTE("oddlrom.bin", 0x00001, 0x8000, CRC(e182dbdd) SHA1(24dacbef2173fa737636e4729ff22ec1e6623ca5) )
- ROM_LOAD16_BYTE("book.bin", 0x10000, 0x8000, CRC(553a5c8c) SHA1(ccb5460ff10766a5ca8008ae2cffcff794318108) ) // no odd rom
+ ROM_LOAD16_BYTE("book.bin", 0x10000, 0x8000, CRC(553a5c8c) SHA1(ccb5460ff10766a5ca8008ae2cffcff794318108) ) // no odd rom
+ROM_END
+
+
+ROM_START( scorpio68 )
+ ROM_REGION16_BE( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("s_evn_904.u3", 0x00000, 0x8000, CRC(a8f63245) SHA1(0ffdc6eb8ecad730440b0bfb2620fb00820e1aea) )
+ ROM_LOAD16_BYTE("s_odd_c18.u2", 0x00001, 0x8000, CRC(4f033319) SHA1(fce228b1705b7156d4d01ef92b22a875d0f6f321) )
+ ROM_LOAD16_BYTE("502.u4", 0x10000, 0x8000, CRC(553a5c8c) SHA1(ccb5460ff10766a5ca8008ae2cffcff794318108) ) // no odd rom
ROM_END
@@ -237,5 +300,6 @@ ROM_END
Drivers
******************************************************************************/
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1991, diablo68, 0, 0, diablo68k, diablo68k, novag68k_state, 0, "Novag", "Diablo 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
+CONS( 1991, diablo68, 0, 0, diablo68k, diablo68k, novag68k_state, 0, "Novag", "Diablo 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1991, scorpio68, 0, 0, scorpio68k, scorpio68k, novag68k_state, 0, "Novag", "Scorpio 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )