glasgow: add notes (nw)

This commit is contained in:
hap 2019-08-14 20:12:29 +02:00
parent 54bd80ab43
commit a5fb1e1839
2 changed files with 25 additions and 49 deletions

View File

@ -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);
@ -151,15 +151,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;
@ -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));
}

View File

@ -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>