summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2019-08-14 20:12:29 +0200
committer hap <happppp@users.noreply.github.com>2019-08-14 20:12:48 +0200
commita5fb1e1839db84e6aa4bf40b7407a39bc7fe08ed (patch)
treebd3daa4f5932c7ad3388659c8da506f39dc4ded3
parent54bd80ab43c089a81ed05a452a521a86e1b4ea67 (diff)
glasgow: add notes (nw)
-rw-r--r--src/mame/drivers/mephisto_glasgow.cpp56
-rw-r--r--src/mame/layout/mephisto_mirage.lay18
2 files changed, 25 insertions, 49 deletions
diff --git a/src/mame/drivers/mephisto_glasgow.cpp b/src/mame/drivers/mephisto_glasgow.cpp
index 225942115f1..9ec71765ae6 100644
--- a/src/mame/drivers/mephisto_glasgow.cpp
+++ b/src/mame/drivers/mephisto_glasgow.cpp
@@ -10,17 +10,17 @@ sp_rinter@gmx.de
16 KB RAM
4 Digit LCD
-3* 74LS138 Decoder/Multiplexer
-1*74LS74 Dual positive edge triggered D Flip Flop
+3*74LS138 Decoder/Multiplexer
+1*74LS74 Dual positive edge triggered D Flip Flop
1*74LS139 1of4 Demultiplexer
-1*74LS05 HexInverter
-1*NE555 R=100K C=10uF
+1*74LS05 Hex Inverter
+1*NE555 R=100K C=10uF
2*74LS04 Hex Inverter
-1*74LS164 8 Bit Shift register
-1*74121 Monostable Multivibrator with Schmitt Trigger Inputs
-1*74LS20 Dual 4 Input NAND GAte
+1*74LS164 8 Bit Shift register
+1*74121 Monostable Multivibrator with Schmitt Trigger Inputs
+1*74LS20 Dual 4 Input NAND GAte
1*74LS367 3 State Hex Buffers
-
+1*SG-10 Seiko 4-pin plastic XTAL chip "50H", to IPL0+2
Made playable by Robbbert in Nov 2009.
@@ -33,13 +33,16 @@ How to play (quick guide)
6. You'll need to read the official user manual for advanced features, or if
you get messages such as "Err1".
+TODO:
+- add waitstates(applies to glasgow, amsterd, others?), CPU is 12MHz but with DTACK
+ waitstates for slow EPROMs, effective speed is less than 10MHz
+- LCD module is 8.8.:8.8 like mephisto_brikett/mm1 (so, add ":" in the middle)
***************************************************************************/
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "machine/mmboard.h"
-#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
#include "speaker.h"
@@ -68,7 +71,6 @@ protected:
DECLARE_WRITE8_MEMBER(glasgow_lcd_flag_w);
DECLARE_READ8_MEMBER(glasgow_keys_r);
DECLARE_WRITE8_MEMBER(glasgow_keys_w);
- TIMER_DEVICE_CALLBACK_MEMBER(update_nmi);
virtual void machine_start() override;
virtual void machine_reset() override;
@@ -97,12 +99,10 @@ public:
protected:
DECLARE_WRITE8_MEMBER(write_lcd);
- DECLARE_WRITE8_MEMBER(write_lcd32);
DECLARE_WRITE8_MEMBER(write_lcd_flag);
DECLARE_WRITE8_MEMBER(write_beeper);
DECLARE_WRITE8_MEMBER(write_board);
DECLARE_READ8_MEMBER(read_newkeys);
- TIMER_DEVICE_CALLBACK_MEMBER(update_nmi32);
void amsterd_mem(address_map &map);
void dallas32_mem(address_map &map);
@@ -153,15 +153,6 @@ WRITE8_MEMBER( glasgow_state::glasgow_keys_w )
WRITE8_MEMBER( amsterd_state::write_lcd )
{
if (m_lcd_shift_counter & 4)
- m_digits[m_lcd_shift_counter & 3] = data ^ 0xff;
-
- m_lcd_shift_counter--;
- m_lcd_shift_counter &= 7;
-}
-
-WRITE8_MEMBER( amsterd_state::write_lcd32 )
-{
- if (m_lcd_shift_counter & 4)
m_digits[m_lcd_shift_counter & 3] = data;
m_lcd_shift_counter--;
@@ -170,13 +161,11 @@ WRITE8_MEMBER( amsterd_state::write_lcd32 )
WRITE8_MEMBER( amsterd_state::write_lcd_flag )
{
- //beep_set_state(0, (data & 1) ? 1 : 0);
m_key_select = 1;
// The key function in the rom expects after writing to
// the a value from the second key row;
m_led7 = data ? 255 : 0;
-
}
WRITE8_MEMBER( amsterd_state::write_board )
@@ -191,21 +180,11 @@ WRITE8_MEMBER( amsterd_state::write_beeper )
m_dac->write(BIT(data, 0));
}
-READ8_MEMBER( amsterd_state::read_newkeys ) //Amsterdam, Roma, Dallas 32, Roma 32
+READ8_MEMBER( amsterd_state::read_newkeys )
{
return m_keyboard[m_key_select & 1]->read();
}
-TIMER_DEVICE_CALLBACK_MEMBER( glasgow_state::update_nmi)
-{
- m_maincpu->set_input_line(7, HOLD_LINE);
-}
-
-TIMER_DEVICE_CALLBACK_MEMBER( amsterd_state::update_nmi32 )
-{
- m_maincpu->set_input_line(6, HOLD_LINE); // this was 7 in the old code, which is correct?
-}
-
void glasgow_state::machine_start()
{
m_digits.resolve();
@@ -253,7 +232,7 @@ void amsterd_state::dallas32_mem(address_map &map)
{
map(0x000000, 0x00ffff).rom();
map(0x010000, 0x01ffff).ram(); // 64KB
- map(0x800002, 0x800002).w(FUNC(amsterd_state::write_lcd32));
+ map(0x800002, 0x800002).w(FUNC(amsterd_state::write_lcd));
map(0x800004, 0x800004).w(FUNC(amsterd_state::write_beeper));
map(0x800008, 0x800008).w(FUNC(amsterd_state::write_lcd_flag));
map(0x800010, 0x800010).w(FUNC(amsterd_state::write_board));
@@ -311,13 +290,12 @@ void glasgow_state::glasgow(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, 12_MHz_XTAL);
+ m_maincpu->set_periodic_int(FUNC(glasgow_state::irq5_line_hold), attotime::from_hz(50));
m_maincpu->set_addrmap(AS_PROGRAM, &glasgow_state::glasgow_mem);
MEPHISTO_SENSORS_BOARD(config, m_board);
m_board->set_delay(attotime::from_msec(200));
- TIMER(config, "nmi_timer").configure_periodic(FUNC(glasgow_state::update_nmi), attotime::from_hz(50));
-
/* video hardware */
config.set_default_layout(layout_mephisto_glasgow);
@@ -343,10 +321,8 @@ void amsterd_state::dallas32(machine_config &config)
/* basic machine hardware */
M68020(config.replace(), m_maincpu, 14_MHz_XTAL);
+ m_maincpu->set_periodic_int(FUNC(amsterd_state::irq5_line_hold), attotime::from_hz(50));
m_maincpu->set_addrmap(AS_PROGRAM, &amsterd_state::dallas32_mem);
-
- config.device_remove("nmi_timer");
- TIMER(config, "nmi_timer").configure_periodic(FUNC(amsterd_state::update_nmi32), attotime::from_hz(50));
}
diff --git a/src/mame/layout/mephisto_mirage.lay b/src/mame/layout/mephisto_mirage.lay
index 30bac0e0b60..6ac133edfcb 100644
--- a/src/mame/layout/mephisto_mirage.lay
+++ b/src/mame/layout/mephisto_mirage.lay
@@ -181,16 +181,16 @@
</repeat>
<repeat count="4">
- <param name="y1" start="8.2" increment="20" />
- <param name="y2" start="18.2" increment="20" />
+ <param name="y1" start="8.3" increment="20" />
+ <param name="y2" start="18.3" increment="20" />
<repeat count="4">
- <param name="x1" start="8.2" increment="20" />
- <param name="x2" start="18.2" increment="20" />
- <bezel element="hidew" inputtag="FAKE" inputmask="0x01" inputraw="1"><bounds x="~x1~" y="~y1~" width="1.7" height="1.7" /></bezel>
- <bezel element="hidew" inputtag="FAKE" inputmask="0x01" inputraw="1"><bounds x="~x2~" y="~y2~" width="1.7" height="1.7" /></bezel>
- <bezel element="hideb" inputtag="FAKE" inputmask="0x01" inputraw="1"><bounds x="~x1~" y="~y2~" width="1.7" height="1.7" /></bezel>
- <bezel element="hideb" inputtag="FAKE" inputmask="0x01" inputraw="1"><bounds x="~x2~" y="~y1~" width="1.7" height="1.7" /></bezel>
+ <param name="x1" start="8.3" increment="20" />
+ <param name="x2" start="18.3" increment="20" />
+ <bezel element="hidew" inputtag="FAKE" inputmask="0x01" inputraw="1"><bounds x="~x1~" y="~y1~" width="1.5" height="1.5" /></bezel>
+ <bezel element="hidew" inputtag="FAKE" inputmask="0x01" inputraw="1"><bounds x="~x2~" y="~y2~" width="1.5" height="1.5" /></bezel>
+ <bezel element="hideb" inputtag="FAKE" inputmask="0x01" inputraw="1"><bounds x="~x1~" y="~y2~" width="1.5" height="1.5" /></bezel>
+ <bezel element="hideb" inputtag="FAKE" inputmask="0x01" inputraw="1"><bounds x="~x2~" y="~y1~" width="1.5" height="1.5" /></bezel>
</repeat>
</repeat>
@@ -487,7 +487,7 @@
<!-- build screen -->
<view name="Internal Layout">
- <bounds left="-11.5" right="88" top="-1" bottom="107" />
+ <bounds left="-11.5" right="87" top="0" bottom="107" />
<group ref="sb_board"><bounds x="4" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="-10" y="3" width="10" height="80" /></group>