mirror of
https://github.com/holub/mame
synced 2025-06-06 12:53:46 +03:00
mos6530n: 6530 irq pin (shared with PB7) is active low,
chessmate: use mos6530_new_device
This commit is contained in:
parent
ee5a323b28
commit
82d3b67a19
@ -485,7 +485,7 @@ void c2040_device::add_common_devices(machine_config &config)
|
|||||||
m_miot->pb_wr_callback<0>().set(m_fdc, FUNC(c2040_fdc_device::drv_sel_w));
|
m_miot->pb_wr_callback<0>().set(m_fdc, FUNC(c2040_fdc_device::drv_sel_w));
|
||||||
m_miot->pb_wr_callback<1>().set(m_fdc, FUNC(c2040_fdc_device::ds0_w));
|
m_miot->pb_wr_callback<1>().set(m_fdc, FUNC(c2040_fdc_device::ds0_w));
|
||||||
m_miot->pb_wr_callback<2>().set(m_fdc, FUNC(c2040_fdc_device::ds1_w));
|
m_miot->pb_wr_callback<2>().set(m_fdc, FUNC(c2040_fdc_device::ds1_w));
|
||||||
m_miot->pb_wr_callback<7>().set_inputline(m_fdccpu, M6502_IRQ_LINE);
|
m_miot->pb_wr_callback<7>().set_inputline(m_fdccpu, M6502_IRQ_LINE).invert();
|
||||||
m_miot->pb_rd_callback<3>().set(m_fdc, FUNC(c2040_fdc_device::wps_r));
|
m_miot->pb_rd_callback<3>().set(m_fdc, FUNC(c2040_fdc_device::wps_r));
|
||||||
|
|
||||||
C2040_FDC(config, m_fdc, XTAL(16'000'000));
|
C2040_FDC(config, m_fdc, XTAL(16'000'000));
|
||||||
|
@ -564,7 +564,7 @@ void c8050_device::add_common_devices(machine_config &config)
|
|||||||
m_miot->pb_wr_callback<2>().set(m_fdc, FUNC(c8050_fdc_device::ds1_w));
|
m_miot->pb_wr_callback<2>().set(m_fdc, FUNC(c8050_fdc_device::ds1_w));
|
||||||
m_miot->pb_rd_callback<3>().set(m_fdc, FUNC(c8050_fdc_device::wps_r));
|
m_miot->pb_rd_callback<3>().set(m_fdc, FUNC(c8050_fdc_device::wps_r));
|
||||||
m_miot->pb_rd_callback<6>().set_constant(1); // SINGLE SIDED
|
m_miot->pb_rd_callback<6>().set_constant(1); // SINGLE SIDED
|
||||||
m_miot->pb_wr_callback<7>().set_inputline(m_fdccpu, M6502_IRQ_LINE);
|
m_miot->pb_wr_callback<7>().set_inputline(m_fdccpu, M6502_IRQ_LINE).invert();
|
||||||
|
|
||||||
C8050_FDC(config, m_fdc, XTAL(12'000'000)/2);
|
C8050_FDC(config, m_fdc, XTAL(12'000'000)/2);
|
||||||
m_fdc->sync_wr_callback().set(m_via, FUNC(via6522_device::write_pb7));
|
m_fdc->sync_wr_callback().set(m_via, FUNC(via6522_device::write_pb7));
|
||||||
|
@ -2,8 +2,10 @@
|
|||||||
// copyright-holders:Curt Coder
|
// copyright-holders:Curt Coder
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
|
|
||||||
MOS Technology 6530 Memory, I/O, Timer Array emulation
|
MOS Technology 6530 MIOT (Memory, I/O, Timer Array)
|
||||||
MOS Technology 6532 RAM, I/O, Timer Array emulation
|
Rockwell calls it RRIOT: ROM, RAM, I/O, Timer
|
||||||
|
|
||||||
|
MOS Technology 6532 RIOT (RAM, I/O, Timer Array)
|
||||||
|
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
@ -105,7 +107,7 @@ mos6530_device_base::mos6530_device_base(const machine_config &mconfig, device_t
|
|||||||
m_pb_out(0),
|
m_pb_out(0),
|
||||||
m_pb_ddr(0),
|
m_pb_ddr(0),
|
||||||
m_ie_timer(false),
|
m_ie_timer(false),
|
||||||
m_irq_timer(true),
|
m_irq_timer(false),
|
||||||
m_ie_edge(false),
|
m_ie_edge(false),
|
||||||
m_irq_edge(false),
|
m_irq_edge(false),
|
||||||
m_timershift(0),
|
m_timershift(0),
|
||||||
@ -228,10 +230,11 @@ void mos6530_new_device::update_pb()
|
|||||||
uint8_t data = (m_pb_out & m_pb_ddr) | (m_pb_ddr ^ 0xff);
|
uint8_t data = (m_pb_out & m_pb_ddr) | (m_pb_ddr ^ 0xff);
|
||||||
|
|
||||||
if (m_ie_timer) {
|
if (m_ie_timer) {
|
||||||
|
// active low!
|
||||||
if (m_irq_timer)
|
if (m_irq_timer)
|
||||||
data |= IRQ_TIMER;
|
|
||||||
else
|
|
||||||
data &= ~IRQ_TIMER;
|
data &= ~IRQ_TIMER;
|
||||||
|
else
|
||||||
|
data |= IRQ_TIMER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_out8_pb_cb.isunset()) {
|
if (m_out8_pb_cb.isunset()) {
|
||||||
@ -505,8 +508,7 @@ uint8_t mos6530_device_base::timer_r(bool ie)
|
|||||||
{
|
{
|
||||||
uint8_t data = get_timer();
|
uint8_t data = get_timer();
|
||||||
|
|
||||||
if (!machine().side_effects_disabled())
|
if (!machine().side_effects_disabled()) {
|
||||||
{
|
|
||||||
timer_irq_enable(ie);
|
timer_irq_enable(ie);
|
||||||
|
|
||||||
LOGTIMER("%s %s %s Timer read %02x IE %u\n", machine().time().as_string(), machine().describe_context(), name(), data, m_ie_timer ? 1 : 0);
|
LOGTIMER("%s %s %s Timer read %02x IE %u\n", machine().time().as_string(), machine().describe_context(), name(), data, m_ie_timer ? 1 : 0);
|
||||||
|
@ -45,7 +45,7 @@ MOS MPS 6332 005 2179
|
|||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/m6502/m6504.h"
|
#include "cpu/m6502/m6504.h"
|
||||||
#include "machine/mos6530.h"
|
#include "machine/mos6530n.h"
|
||||||
#include "sound/dac.h"
|
#include "sound/dac.h"
|
||||||
#include "video/pwm.h"
|
#include "video/pwm.h"
|
||||||
#include "speaker.h"
|
#include "speaker.h"
|
||||||
@ -83,7 +83,7 @@ protected:
|
|||||||
private:
|
private:
|
||||||
// devices/pointers
|
// devices/pointers
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<mos6530_device> m_miot;
|
required_device<mos6530_new_device> m_miot;
|
||||||
required_device<pwm_display_device> m_display;
|
required_device<pwm_display_device> m_display;
|
||||||
required_device<dac_bit_interface> m_dac;
|
required_device<dac_bit_interface> m_dac;
|
||||||
optional_ioport_array<5> m_inputs;
|
optional_ioport_array<5> m_inputs;
|
||||||
@ -179,10 +179,10 @@ u8 chmate_state::input_r()
|
|||||||
void chmate_state::main_map(address_map &map)
|
void chmate_state::main_map(address_map &map)
|
||||||
{
|
{
|
||||||
map.global_mask(0x1fff);
|
map.global_mask(0x1fff);
|
||||||
map(0x0000, 0x00ff).mirror(0x100).ram();
|
map(0x0000, 0x00ff).mirror(0x0100).ram();
|
||||||
map(0x0b00, 0x0b0f).rw(m_miot, FUNC(mos6530_device::read), FUNC(mos6530_device::write));
|
map(0x0b00, 0x0b0f).mirror(0x0030).m(m_miot, FUNC(mos6530_new_device::io_map));
|
||||||
map(0x0b80, 0x0bbf).ram(); // 6530 RAM
|
map(0x0b80, 0x0bbf).m(m_miot, FUNC(mos6530_new_device::ram_map));
|
||||||
map(0x0c00, 0x0fff).rom(); // 6530 ROM
|
map(0x0c00, 0x0fff).m(m_miot, FUNC(mos6530_new_device::rom_map));
|
||||||
map(0x1000, 0x1fff).rom();
|
map(0x1000, 0x1fff).rom();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -268,10 +268,10 @@ void chmate_state::chmate(machine_config &config)
|
|||||||
M6504(config, m_maincpu, 8_MHz_XTAL/8);
|
M6504(config, m_maincpu, 8_MHz_XTAL/8);
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &chmate_state::main_map);
|
m_maincpu->set_addrmap(AS_PROGRAM, &chmate_state::main_map);
|
||||||
|
|
||||||
MOS6530(config, m_miot, 8_MHz_XTAL/8);
|
MOS6530_NEW(config, m_miot, 8_MHz_XTAL/8);
|
||||||
m_miot->in_pa_callback().set(FUNC(chmate_state::input_r));
|
m_miot->pa_rd_callback().set(FUNC(chmate_state::input_r));
|
||||||
m_miot->out_pa_callback().set(FUNC(chmate_state::digit_w));
|
m_miot->pa_wr_callback().set(FUNC(chmate_state::digit_w));
|
||||||
m_miot->out_pb_callback().set(FUNC(chmate_state::control_w));
|
m_miot->pb_wr_callback().set(FUNC(chmate_state::control_w));
|
||||||
|
|
||||||
// video hardware
|
// video hardware
|
||||||
PWM_DISPLAY(config, m_display).set_size(4+1, 8);
|
PWM_DISPLAY(config, m_display).set_size(4+1, 8);
|
||||||
@ -302,22 +302,15 @@ void chmate_state::mk2a(machine_config &config)
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
ROM_START( chmate )
|
ROM_START( chmate )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x2000, "maincpu", 0 )
|
||||||
ROM_LOAD("6530_024", 0x0c00, 0x0400, CRC(4f28c443) SHA1(e33f8b7f38e54d7a6e0f0763f2328cc12cb0eade) )
|
|
||||||
ROM_LOAD("6332_005", 0x1000, 0x1000, CRC(6f10991b) SHA1(90cdc5a15d9ad813ad20410f21081c6e3e481812) )
|
ROM_LOAD("6332_005", 0x1000, 0x1000, CRC(6f10991b) SHA1(90cdc5a15d9ad813ad20410f21081c6e3e481812) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x400, "miot", 0 )
|
||||||
|
ROM_LOAD("6530_024", 0x0000, 0x0400, CRC(4f28c443) SHA1(e33f8b7f38e54d7a6e0f0763f2328cc12cb0eade) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( ccmk2 )
|
#define rom_ccmk2 rom_chmate
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
#define rom_ccmk2a rom_chmate
|
||||||
ROM_LOAD("6530_024", 0x0c00, 0x0400, CRC(4f28c443) SHA1(e33f8b7f38e54d7a6e0f0763f2328cc12cb0eade) )
|
|
||||||
ROM_LOAD("6332_005", 0x1000, 0x1000, CRC(6f10991b) SHA1(90cdc5a15d9ad813ad20410f21081c6e3e481812) )
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( ccmk2a )
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("6530_024", 0x0c00, 0x0400, CRC(4f28c443) SHA1(e33f8b7f38e54d7a6e0f0763f2328cc12cb0eade) )
|
|
||||||
ROM_LOAD("6332_005", 0x1000, 0x1000, CRC(6f10991b) SHA1(90cdc5a15d9ad813ad20410f21081c6e3e481812) )
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user