diff options
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 |
commit | a5fb1e1839db84e6aa4bf40b7407a39bc7fe08ed (patch) | |
tree | bd3daa4f5932c7ad3388659c8da506f39dc4ded3 | |
parent | 54bd80ab43c089a81ed05a452a521a86e1b4ea67 (diff) |
glasgow: add notes (nw)
-rw-r--r-- | src/mame/drivers/mephisto_glasgow.cpp | 56 | ||||
-rw-r--r-- | src/mame/layout/mephisto_mirage.lay | 18 |
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> |