chess*: small cleanup (nw)

This commit is contained in:
hap 2019-02-21 21:26:54 +01:00
parent b61662e925
commit 24259c9377
23 changed files with 80 additions and 62 deletions

View File

@ -33,7 +33,7 @@
class mos6551_device : public device_t
{
public:
mos6551_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
mos6551_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
auto irq_handler() { return m_irq_handler.bind(); }
auto txd_handler() { return m_txd_handler.bind(); }

View File

@ -258,7 +258,7 @@ DECLARE_DEVICE_TYPE(_dac_type, _dac_class) \
class _dac_class : public dac_generator<_dac_interface, _dac_coding> \
{\
public: \
_dac_class(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : \
_dac_class(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0) : \
dac_generator(mconfig, _dac_type, tag, owner, clock, _dac_gain) {} \
}; \
DAC_GENERATOR_EPILOG(_dac_type, _dac_class, _dac_description, _dac_shortname)

View File

@ -12,11 +12,12 @@ TODO:
*******************************************************************************
Master: (yes, it's plainly named "Master")
- Z80 CPU(NEC D780C-1) @ 4MHz(8MHz XTAL), IRQ from 555 timer
- 8KB ROM(NEC D2764C-3), 2KB RAM(NEC D4016C), ROM is scrambled for easy PCB placement
- simple I/O via 2*74373 and a 74145
- 8*8 chessboard buttons, 32+1 border leds, piezo
Chess King Master (yes, it's plainly named "Master")
---------------
Z80 CPU(NEC D780C-1) @ 4MHz(8MHz XTAL), IRQ from 555 timer
8KB ROM(NEC D2764C-3), 2KB RAM(NEC D4016C), ROM is scrambled for easy PCB placement
simple I/O via 2*74373 and a 74145
8*8 chessboard buttons, 32+1 border leds, piezo
******************************************************************************/
@ -210,7 +211,7 @@ void master_state::master(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);

View File

@ -7,10 +7,11 @@
*******************************************************************************
Chess 2001:
- Zilog Z8400APS @ 4 MHz (8MHz XTAL)
- 2KB RAM HM6116, 16KB ROM D27128D
- TTL, piezo, 8*8+9 LEDs, magnetic sensors
CXG Chess 2001
--------------
Zilog Z8400APS @ 4 MHz (8MHz XTAL)
2KB RAM HM6116, 16KB ROM D27128D
TTL, piezo, 8*8+9 LEDs, magnetic sensors
******************************************************************************/
@ -166,7 +167,7 @@ void ch2001_state::ch2001(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}

View File

@ -158,7 +158,7 @@ void as12_state::as12(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */

View File

@ -447,7 +447,7 @@ void card_state::ubc(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}

View File

@ -210,7 +210,7 @@ void bcc_state::bcc(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}

View File

@ -157,7 +157,7 @@ void chesster_state::chesster(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_8BIT_R2R(config, "dac8", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // m74hc374b1.ic1 + 8l513_02.z2
DAC_8BIT_R2R(config, "dac8").add_route(ALL_OUTPUTS, "speaker", 0.5); // m74hc374b1.ic1 + 8l513_02.z2
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.add_route(0, "dac8", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac8", -1.0, DAC_VREF_NEG_INPUT);

View File

@ -524,7 +524,7 @@ void csc_state::csc(machine_config &config)
m_speech->ext_read().set(FUNC(csc_state::speech_r));
m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
@ -561,7 +561,7 @@ void csc_state::rsc(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}

View File

@ -153,7 +153,7 @@ void dsc_state::dsc(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}

View File

@ -265,7 +265,7 @@ void desdis_state::fdes2100d(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
@ -294,7 +294,7 @@ void desmas_state::fdes2265(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}

View File

@ -451,7 +451,7 @@ void excel68k_state::fex68k(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
@ -490,7 +490,7 @@ void eag_state::eag_base(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */

View File

@ -325,7 +325,7 @@ void elite_state::eas_base(machine_config &config)
m_speech->ext_read().set(FUNC(elite_state::speech_r));
m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */

View File

@ -353,7 +353,7 @@ void excel_state::fexcel(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}

View File

@ -114,7 +114,7 @@ void phantom_state::fphantom(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}

View File

@ -186,7 +186,7 @@ void sc12_state::sc12(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */

View File

@ -190,7 +190,7 @@ void sc6_state::sc6(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */

View File

@ -131,7 +131,7 @@ void scc_state::scc(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}

View File

@ -223,7 +223,7 @@ void sc9_state::sc9d(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */

View File

@ -1580,7 +1580,7 @@ void bship82_state::bship82(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
DAC_4BIT_BINARY_WEIGHTED_SIGN_MAGNITUDE(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.125); // see above
DAC_4BIT_BINARY_WEIGHTED_SIGN_MAGNITUDE(config, "dac").add_route(ALL_OUTPUTS, "mono", 0.125); // see above
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
@ -1803,7 +1803,7 @@ void vidchal_state::vidchal(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
DAC_4BIT_BINARY_WEIGHTED_SIGN_MAGNITUDE(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.125); // unknown DAC
DAC_4BIT_BINARY_WEIGHTED_SIGN_MAGNITUDE(config, "dac").add_route(ALL_OUTPUTS, "mono", 0.125); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);

View File

@ -6,7 +6,7 @@
* novag_diablo.cpp, subdriver of machine/novagbase.cpp, machine/chessbase.cpp
TODO:
- RS232 port (when connected, I'm only getting "New Game")
- hook up RS232 port (when connected, I'm only getting "New Game")
*******************************************************************************
@ -25,6 +25,7 @@ Scorpio 68000 hardware is very similar, but with chessboard buttons and side led
#include "emu.h"
#include "includes/novagbase.h"
#include "bus/rs232/rs232.h"
#include "cpu/m68000/m68000.h"
#include "machine/mos6551.h"
#include "machine/nvram.h"
@ -42,7 +43,10 @@ class diablo_state : public novagbase_state
{
public:
diablo_state(const machine_config &mconfig, device_type type, const char *tag) :
novagbase_state(mconfig, type, tag)
novagbase_state(mconfig, type, tag),
m_screen(*this, "screen"),
m_acia(*this, "acia"),
m_rs232(*this, "rs232")
{ }
// machine drivers
@ -50,6 +54,11 @@ public:
void scorpio68k(machine_config &config);
private:
// devices/pointers
required_device<screen_device> m_screen;
required_device<mos6551_device> m_acia;
required_device<rs232_port_device> m_rs232;
// address maps
void diablo68k_map(address_map &map);
void scorpio68k_map(address_map &map);
@ -216,19 +225,19 @@ void diablo_state::diablo68k(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(1100)); // active for 1.1us
TIMER(config, "irq_off").configure_periodic(FUNC(diablo_state::irq_off<M68K_IRQ_2>), irq_period);
mos6551_device &acia(MOS6551(config, "acia", 0));
acia.set_xtal(1.8432_MHz_XTAL);
MOS6551(config, m_acia).set_xtal(1.8432_MHz_XTAL);
RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
screen.set_refresh_hz(60); // arbitrary
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
screen.set_size(6*16+1, 10);
screen.set_visarea(0, 6*16, 0, 10-1);
screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
screen.set_palette("palette");
SCREEN(config, m_screen, SCREEN_TYPE_LCD);
m_screen->set_refresh_hz(60); // arbitrary
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
m_screen->set_size(6*16+1, 10);
m_screen->set_visarea(0, 6*16, 0, 10-1);
m_screen->set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
m_screen->set_palette("palette");
PALETTE(config, "palette", FUNC(diablo_state::novag_lcd_palette), 3);

View File

@ -167,7 +167,7 @@ void presto_state::presto(machine_config &config)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}

View File

@ -48,7 +48,10 @@ class sexpert_state : public novagbase_state
{
public:
sexpert_state(const machine_config &mconfig, device_type type, const char *tag) :
novagbase_state(mconfig, type, tag)
novagbase_state(mconfig, type, tag),
m_screen(*this, "screen"),
m_acia(*this, "acia"),
m_rs232(*this, "rs232")
{ }
// machine drivers
@ -59,6 +62,11 @@ public:
DECLARE_INPUT_CHANGED_MEMBER(sexpert_cpu_freq) { sexpert_set_cpu_freq(); }
protected:
// devices/pointers
required_device<screen_device> m_screen;
required_device<mos6551_device> m_acia;
required_device<rs232_port_device> m_rs232;
virtual void machine_reset() override;
void sexpert_set_cpu_freq();
@ -312,27 +320,26 @@ void sexpert_state::sexpert(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(21500)); // active for 21.5us
TIMER(config, "irq_off").configure_periodic(FUNC(sexpert_state::irq_off<M6502_IRQ_LINE>), irq_period);
mos6551_device &acia(MOS6551(config, "acia", 0)); // R65C51P2 - RTS to CTS, DCD to GND
acia.set_xtal(1.8432_MHz_XTAL);
acia.irq_handler().set_inputline("maincpu", m65c02_device::NMI_LINE);
acia.rts_handler().set("acia", FUNC(mos6551_device::write_cts));
acia.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
acia.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr));
MOS6551(config, m_acia).set_xtal(1.8432_MHz_XTAL); // R65C51P2 - RTS to CTS, DCD to GND
m_acia->irq_handler().set_inputline("maincpu", m65c02_device::NMI_LINE);
m_acia->rts_handler().set("acia", FUNC(mos6551_device::write_cts));
m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
m_acia->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr));
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
rs232.rxd_handler().set("acia", FUNC(mos6551_device::write_rxd));
rs232.dsr_handler().set("acia", FUNC(mos6551_device::write_dsr));
RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
m_rs232->rxd_handler().set("acia", FUNC(mos6551_device::write_rxd));
m_rs232->dsr_handler().set("acia", FUNC(mos6551_device::write_dsr));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
screen.set_refresh_hz(60); // arbitrary
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
screen.set_size(6*16+1, 10);
screen.set_visarea(0, 6*16, 0, 10-1);
screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
screen.set_palette("palette");
SCREEN(config, m_screen, SCREEN_TYPE_LCD);
m_screen->set_refresh_hz(60); // arbitrary
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
m_screen->set_size(6*16+1, 10);
m_screen->set_visarea(0, 6*16, 0, 10-1);
m_screen->set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
m_screen->set_palette("palette");
PALETTE(config, "palette", FUNC(sexpert_state::novag_lcd_palette), 3);