polgar10: faster irq (nw)

This commit is contained in:
hap 2020-03-09 12:11:54 +01:00
parent 669e0ba433
commit cd65d52fcd

View File

@ -35,6 +35,7 @@ class mephisto_polgar_state : public driver_device
public:
mephisto_polgar_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_keys(*this, "KEY")
{ }
@ -44,6 +45,7 @@ public:
void polgar(machine_config &config);
void polgar_mem(address_map &map);
protected:
required_device<cpu_device> m_maincpu;
required_ioport m_keys;
};
@ -300,9 +302,9 @@ void mephisto_academy_state::machine_reset()
void mephisto_polgar_state::polgar(machine_config &config)
{
m65c02_device &maincpu(M65C02(config, "maincpu", XTAL(4'915'200))); // RP65C02G
maincpu.set_addrmap(AS_PROGRAM, &mephisto_polgar_state::polgar_mem);
maincpu.set_periodic_int(FUNC(mephisto_polgar_state::nmi_line_pulse), attotime::from_hz(XTAL(4'915'200) / (1 << 13)));
M65C02(config, m_maincpu, XTAL(4'915'200)); // RP65C02G
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_polgar_state::polgar_mem);
m_maincpu->set_periodic_int(FUNC(mephisto_polgar_state::nmi_line_pulse), attotime::from_hz(XTAL(4'915'200) / (1 << 13)));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@ -322,17 +324,18 @@ void mephisto_polgar_state::polgar(machine_config &config)
void mephisto_polgar_state::polgar10(machine_config &config)
{
polgar(config);
subdevice<m65c02_device>("maincpu")->set_clock(9.8304_MHz_XTAL); // W65C02P-8
m_maincpu->set_clock(9.8304_MHz_XTAL); // W65C02P-8
m_maincpu->set_periodic_int(FUNC(mephisto_polgar_state::nmi_line_pulse), attotime::from_hz(9.8304_MHz_XTAL / (1 << 13)));
}
void mephisto_risc_state::mrisc(machine_config &config)
{
m65sc02_device &maincpu(M65SC02(config, "maincpu", XTAL(10'000'000) / 4)); // G65SC02P-4
maincpu.set_addrmap(AS_PROGRAM, &mephisto_risc_state::mrisc_mem);
maincpu.set_periodic_int(FUNC(mephisto_risc_state::irq0_line_hold), attotime::from_hz(XTAL(10'000'000) / (1 << 14)));
M65SC02(config, m_maincpu, XTAL(10'000'000) / 4); // G65SC02P-4
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_risc_state::mrisc_mem);
m_maincpu->set_periodic_int(FUNC(mephisto_risc_state::irq0_line_hold), attotime::from_hz(XTAL(10'000'000) / (1 << 14)));
CHESSMACHINE(config, m_chessm, 14'000'000); // Tasc ChessMachine EC PCB, Mephisto manual says 14MHz (no XTAL)
config.set_perfect_quantum("maincpu");
config.set_perfect_quantum(m_maincpu);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@ -353,7 +356,7 @@ void mephisto_risc_state::mrisc(machine_config &config)
void mephisto_milano_state::milano(machine_config &config)
{
polgar(config); // CPU: W65C02P-8, 4.9152Mhz
subdevice<m65c02_device>("maincpu")->set_addrmap(AS_PROGRAM, &mephisto_milano_state::milano_mem);
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_milano_state::milano_mem);
MEPHISTO_BUTTONS_BOARD(config.replace(), m_board);
m_board->set_disable_leds(true);
@ -363,7 +366,7 @@ void mephisto_milano_state::milano(machine_config &config)
void mephisto_academy_state::academy(machine_config &config)
{
polgar(config); // CPU: VL65NC02-04PC, 4.9152Mhz
subdevice<m65c02_device>("maincpu")->set_addrmap(AS_PROGRAM, &mephisto_academy_state::academy_mem);
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_academy_state::academy_mem);
hc259_device &outlatch(HC259(config.replace(), "outlatch"));
outlatch.q_out_cb<1>().set(FUNC(mephisto_academy_state::academy_nmi_w));