mos6530n: 6530 irq pin output is enabled when PB7 ddr is set to input,

kim1: move driver to commodore folder,
invqix: fix screensize off-by-1 error
This commit is contained in:
hap 2023-07-17 11:03:00 +02:00
parent 8ef3dd279f
commit 1703769bee
4 changed files with 31 additions and 31 deletions

View File

@ -229,9 +229,9 @@ void mos6530_new_device::update_pb()
{
uint8_t data = (m_pb_out & m_pb_ddr) | (m_pb_ddr ^ 0xff);
if (m_ie_timer) {
if (!BIT(m_pb_ddr, 7)) {
// active low!
if (m_irq_timer)
if (m_ie_timer && m_irq_timer)
data &= ~IRQ_TIMER;
else
data |= IRQ_TIMER;

View File

@ -101,16 +101,16 @@ public:
DECLARE_INPUT_CHANGED_MEMBER(trigger_nmi);
void kim1(machine_config &config);
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
private:
uint8_t kim1_u2_read_a();
void kim1_u2_write_a(uint8_t data);
uint8_t kim1_u2_read_b();
void kim1_u2_write_b(uint8_t data);
// device overrides
virtual void machine_start() override;
virtual void machine_reset() override;
TIMER_DEVICE_CALLBACK_MEMBER(kim1_cassette_input);
void mem_map(address_map &map);
@ -124,9 +124,9 @@ private:
required_ioport_array<3> m_row;
required_ioport m_special;
uint8_t m_u2_port_b;
uint8_t m_311_output;
uint32_t m_cassette_high_count;
uint8_t m_u2_port_b = 0;
uint8_t m_311_output = 0;
uint32_t m_cassette_high_count = 0;
};
@ -306,7 +306,7 @@ void kim1_state::kim1(machine_config &config)
m_cass->set_formats(kim1_cassette_formats);
m_cass->set_default_state(CASSETTE_STOPPED);
m_cass->add_route(ALL_OUTPUTS, "mono", 0.05);
m_cass->set_interface ("kim1_cass");
m_cass->set_interface("kim1_cass");
SPEAKER(config, "mono").front_center();
@ -323,8 +323,8 @@ void kim1_state::kim1(machine_config &config)
ROM_START(kim1)
ROM_REGION(0x0800,"maincpu",0)
ROM_LOAD("6530-003.bin", 0x0000, 0x0400, CRC(a2a56502) SHA1(60b6e48f35fe4899e29166641bac3e81e3b9d220))
ROM_LOAD("6530-002.bin", 0x0400, 0x0400, CRC(2b08e923) SHA1(054f7f6989af3a59462ffb0372b6f56f307b5362))
ROM_LOAD("6530-003", 0x0000, 0x0400, CRC(a2a56502) SHA1(60b6e48f35fe4899e29166641bac3e81e3b9d220))
ROM_LOAD("6530-002", 0x0400, 0x0400, CRC(2b08e923) SHA1(054f7f6989af3a59462ffb0372b6f56f307b5362))
ROM_END
} // anonymous namespace
@ -334,5 +334,5 @@ ROM_END
// SYSTEM DRIVERS
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
COMP( 1975, kim1, 0, 0, kim1, kim1, kim1_state, empty_init, "MOS Technologies", "KIM-1", MACHINE_SUPPORTS_SAVE)
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
COMP( 1976, kim1, 0, 0, kim1, kim1, kim1_state, empty_init, "MOS Technology", "KIM-1", MACHINE_SUPPORTS_SAVE)

View File

@ -16186,6 +16186,9 @@ chmate //
@source:commodore/clcd.cpp
clcd // Commodore LCD
@source:commodore/kim1.cpp
kim1 // Commodore (MOS) KIM-1 1976
@source:commodore/mps1230.cpp
mps1000 // 1986 Commodore MPS-1000 (dot matrix printer)
mps1230 // 1988 Commodore MPS-1230 near-letter-quality dot matrix printer
@ -31881,9 +31884,6 @@ mpz80 //
@source:morrow/tricep.cpp
tricep //
@source:mos/kim1.cpp
kim1 // Commodore (MOS) KIM-1 1975
@source:motorola/ampscarp.cpp
ampscarp // Motorola Amps Car Phone

View File

@ -132,8 +132,8 @@ namespace {
class invqix_state : public driver_device
{
public:
invqix_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
invqix_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_eeprom(*this, "eeprom"),
m_vram(*this, "vram")
@ -141,6 +141,9 @@ public:
void invqix(machine_config &config);
protected:
virtual void video_start() override;
private:
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
@ -162,9 +165,6 @@ private:
required_device<eeprom_serial_93cxx_device> m_eeprom;
required_shared_ptr<uint16_t> m_vram;
// driver_device overrides
virtual void video_start() override;
uint16_t m_vctl = 0; // 0000 for normal, 0001 for flip, 0100 when going to change (blank?)
};
@ -287,13 +287,13 @@ void invqix_state::invqix_prg_map(address_map &map)
static INPUT_PORTS_START( invqix )
PORT_START("SYSTEM")
PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) // coin 1
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Left 1 player start") // start A-1 ("left start" - picks Space Invaders)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) // coin 2
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START3 ) PORT_NAME("Left 2 players start") // start A-2
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) // coin 1
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Left 1 player start") // start A-1 ("left start" - picks Space Invaders)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) // coin 2
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START3 ) PORT_NAME("Left 2 players start") // start A-2
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
@ -313,7 +313,7 @@ static INPUT_PORTS_START( invqix )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Right 1 player start") // start B-1 ("Right start" - picks Qix)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
void invqix_state::invqix(machine_config &config)
@ -341,7 +341,7 @@ void invqix_state::invqix(machine_config &config)
screen.set_refresh_hz(60);
screen.set_screen_update(FUNC(invqix_state::screen_update));
screen.set_size(640, 480);
screen.set_visarea(0, 256, 0, 240);
screen.set_visarea(0, 256-1, 0, 240-1);
PALETTE(config, "palette").set_entries(65536);