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 16 KB RAM
4 Digit LCD 4 Digit LCD
3* 74LS138 Decoder/Multiplexer 3*74LS138 Decoder/Multiplexer
1*74LS74 Dual positive edge triggered D Flip Flop 1*74LS74 Dual positive edge triggered D Flip Flop
1*74LS139 1of4 Demultiplexer 1*74LS139 1of4 Demultiplexer
1*74LS05 HexInverter 1*74LS05 Hex Inverter
1*NE555 R=100K C=10uF 1*NE555 R=100K C=10uF
2*74LS04 Hex Inverter 2*74LS04 Hex Inverter
1*74LS164 8 Bit Shift register 1*74LS164 8 Bit Shift register
1*74121 Monostable Multivibrator with Schmitt Trigger Inputs 1*74121 Monostable Multivibrator with Schmitt Trigger Inputs
1*74LS20 Dual 4 Input NAND GAte 1*74LS20 Dual 4 Input NAND GAte
1*74LS367 3 State Hex Buffers 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. 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 6. You'll need to read the official user manual for advanced features, or if
you get messages such as "Err1". 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 "emu.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/mmboard.h" #include "machine/mmboard.h"
#include "machine/timer.h"
#include "sound/dac.h" #include "sound/dac.h"
#include "sound/volt_reg.h" #include "sound/volt_reg.h"
#include "speaker.h" #include "speaker.h"
@ -68,7 +71,6 @@ protected:
DECLARE_WRITE8_MEMBER(glasgow_lcd_flag_w); DECLARE_WRITE8_MEMBER(glasgow_lcd_flag_w);
DECLARE_READ8_MEMBER(glasgow_keys_r); DECLARE_READ8_MEMBER(glasgow_keys_r);
DECLARE_WRITE8_MEMBER(glasgow_keys_w); DECLARE_WRITE8_MEMBER(glasgow_keys_w);
TIMER_DEVICE_CALLBACK_MEMBER(update_nmi);
virtual void machine_start() override; virtual void machine_start() override;
virtual void machine_reset() override; virtual void machine_reset() override;
@ -97,12 +99,10 @@ public:
protected: protected:
DECLARE_WRITE8_MEMBER(write_lcd); DECLARE_WRITE8_MEMBER(write_lcd);
DECLARE_WRITE8_MEMBER(write_lcd32);
DECLARE_WRITE8_MEMBER(write_lcd_flag); DECLARE_WRITE8_MEMBER(write_lcd_flag);
DECLARE_WRITE8_MEMBER(write_beeper); DECLARE_WRITE8_MEMBER(write_beeper);
DECLARE_WRITE8_MEMBER(write_board); DECLARE_WRITE8_MEMBER(write_board);
DECLARE_READ8_MEMBER(read_newkeys); DECLARE_READ8_MEMBER(read_newkeys);
TIMER_DEVICE_CALLBACK_MEMBER(update_nmi32);
void amsterd_mem(address_map &map); void amsterd_mem(address_map &map);
void dallas32_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 ) 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) if (m_lcd_shift_counter & 4)
m_digits[m_lcd_shift_counter & 3] = data; 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 ) WRITE8_MEMBER( amsterd_state::write_lcd_flag )
{ {
//beep_set_state(0, (data & 1) ? 1 : 0);
m_key_select = 1; m_key_select = 1;
// The key function in the rom expects after writing to // The key function in the rom expects after writing to
// the a value from the second key row; // the a value from the second key row;
m_led7 = data ? 255 : 0; m_led7 = data ? 255 : 0;
} }
WRITE8_MEMBER( amsterd_state::write_board ) WRITE8_MEMBER( amsterd_state::write_board )
@ -191,21 +180,11 @@ WRITE8_MEMBER( amsterd_state::write_beeper )
m_dac->write(BIT(data, 0)); 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(); 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() void glasgow_state::machine_start()
{ {
m_digits.resolve(); m_digits.resolve();
@ -253,7 +232,7 @@ void amsterd_state::dallas32_mem(address_map &map)
{ {
map(0x000000, 0x00ffff).rom(); map(0x000000, 0x00ffff).rom();
map(0x010000, 0x01ffff).ram(); // 64KB 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(0x800004, 0x800004).w(FUNC(amsterd_state::write_beeper));
map(0x800008, 0x800008).w(FUNC(amsterd_state::write_lcd_flag)); map(0x800008, 0x800008).w(FUNC(amsterd_state::write_lcd_flag));
map(0x800010, 0x800010).w(FUNC(amsterd_state::write_board)); map(0x800010, 0x800010).w(FUNC(amsterd_state::write_board));
@ -311,13 +290,12 @@ void glasgow_state::glasgow(machine_config &config)
{ {
/* basic machine hardware */ /* basic machine hardware */
M68000(config, m_maincpu, 12_MHz_XTAL); 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); m_maincpu->set_addrmap(AS_PROGRAM, &glasgow_state::glasgow_mem);
MEPHISTO_SENSORS_BOARD(config, m_board); MEPHISTO_SENSORS_BOARD(config, m_board);
m_board->set_delay(attotime::from_msec(200)); 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 */ /* video hardware */
config.set_default_layout(layout_mephisto_glasgow); config.set_default_layout(layout_mephisto_glasgow);
@ -343,10 +321,8 @@ void amsterd_state::dallas32(machine_config &config)
/* basic machine hardware */ /* basic machine hardware */
M68020(config.replace(), m_maincpu, 14_MHz_XTAL); 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); 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>
<repeat count="4"> <repeat count="4">
<param name="y1" start="8.2" increment="20" /> <param name="y1" start="8.3" increment="20" />
<param name="y2" start="18.2" increment="20" /> <param name="y2" start="18.3" increment="20" />
<repeat count="4"> <repeat count="4">
<param name="x1" start="8.2" increment="20" /> <param name="x1" start="8.3" increment="20" />
<param name="x2" start="18.2" 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.7" height="1.7" /></bezel> <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.7" height="1.7" /></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.7" height="1.7" /></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.7" height="1.7" /></bezel> <bezel element="hideb" inputtag="FAKE" inputmask="0x01" inputraw="1"><bounds x="~x2~" y="~y1~" width="1.5" height="1.5" /></bezel>
</repeat> </repeat>
</repeat> </repeat>
@ -487,7 +487,7 @@
<!-- build screen --> <!-- build screen -->
<view name="Internal Layout"> <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_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> <group ref="sb_ui"><bounds x="-10" y="3" width="10" height="80" /></group>