a2bus: Cleanups

- Eliminate A2BUS_7M_CLOCK constant except in apple2e.cpp driver. Use DERIVED_CLOCK for almost all clocks formerly generated from this value.
- Don't default the 7M clock for the bus slots. Add confirmed or at least sensible-looking clocks (some differing from Apple's) to all configurations.
- Convert some more macros to constexpr variables and eliminate one tag macro.
This commit is contained in:
AJR 2024-10-31 22:29:07 -04:00
parent 173b9a2472
commit feb4b0ddf0
11 changed files with 124 additions and 129 deletions

View File

@ -17,16 +17,13 @@
// /INH special addresses
#define INH_START_INVALID 0xffff
#define INH_END_INVALID 0x0000
static constexpr uint16_t INH_START_INVALID = 0xffff;
static constexpr uint16_t INH_END_INVALID = 0x0000;
// /INH types
#define INH_NONE 0x00
#define INH_READ 0x01
#define INH_WRITE 0x02
// 7M = XTAL(14'318'181) / 2 or XTAL(28'636'363) / 4 (for IIgs)
static constexpr uint32_t A2BUS_7M_CLOCK = 7159090;
static constexpr int INH_NONE = 0x00;
static constexpr int INH_READ = 0x01;
static constexpr int INH_WRITE = 0x02;
//**************************************************************************
// TYPE DEFINITIONS
@ -40,11 +37,6 @@ class a2bus_slot_device : public device_t, public device_single_card_slot_interf
public:
// construction/destruction
template <typename T, typename U>
a2bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&a2bus_tag, U &&opts, const char *dflt)
: a2bus_slot_device(mconfig, tag, owner, A2BUS_7M_CLOCK, std::forward<T>(a2bus_tag), std::forward<U>(opts), dflt)
{
}
template <typename T, typename U>
a2bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&a2bus_tag, U &&opts, const char *dflt)
: a2bus_slot_device(mconfig, tag, owner, clock)
{
@ -54,7 +46,7 @@ public:
set_fixed(false);
m_a2bus.set_tag(std::forward<T>(a2bus_tag));
}
a2bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = A2BUS_7M_CLOCK);
a2bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
a2bus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);

View File

@ -134,7 +134,7 @@ void a2bus_byte8251_device::device_add_mconfig(machine_config &config)
I8251(config, m_usart, 1021800); // CLK tied to ϕ1 signal from bus pin 38
m_usart->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
MM5307AA(config, m_brg, A2BUS_7M_CLOCK / 8);
MM5307AA(config, m_brg, DERIVED_CLOCK(1, 8));
m_brg->output_cb().set(m_usart, FUNC(i8251_device::write_txc));
m_brg->output_cb().append(m_usart, FUNC(i8251_device::write_rxc));

View File

@ -117,6 +117,7 @@ protected:
virtual void device_start() override ATTR_COLD;
virtual void device_reset() override ATTR_COLD;
virtual void device_add_mconfig(machine_config &config) override ATTR_COLD;
virtual void device_resolve_objects() override ATTR_COLD;
// overrides of standard a2bus slot functions
virtual uint8_t read_c0nx(uint8_t offset) override;
@ -218,21 +219,18 @@ void a2bus_pcxporter_device::pc_io(address_map &map)
void a2bus_pcxporter_device::device_add_mconfig(machine_config &config)
{
V30(config, m_v30, A2BUS_7M_CLOCK); // 7.16 MHz as per manual
V30(config, m_v30, DERIVED_CLOCK(1, 1)); // 7.16 MHz as per manual
m_v30->set_addrmap(AS_PROGRAM, &a2bus_pcxporter_device::pc_map);
m_v30->set_addrmap(AS_IO, &a2bus_pcxporter_device::pc_io);
m_v30->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
m_v30->set_disable();
PIT8253(config, m_pit8253);
m_pit8253->set_clk<0>(A2BUS_7M_CLOCK / 6.0); // heartbeat IRQ
m_pit8253->out_handler<0>().set(m_pic8259, FUNC(pic8259_device::ir0_w));
m_pit8253->set_clk<1>(A2BUS_7M_CLOCK / 6.0); // DRAM refresh
m_pit8253->out_handler<1>().set(FUNC(a2bus_pcxporter_device::pc_pit8253_out1_changed));
m_pit8253->set_clk<2>(A2BUS_7M_CLOCK / 6.0); // PIO port C pin 4, and speaker polling enough
m_pit8253->out_handler<2>().set(FUNC(a2bus_pcxporter_device::pc_pit8253_out2_changed));
PCXPORT_DMAC(config, m_dma8237, A2BUS_7M_CLOCK / 2);
PCXPORT_DMAC(config, m_dma8237, DERIVED_CLOCK(1, 2));
m_dma8237->out_hreq_callback().set(FUNC(a2bus_pcxporter_device::pc_dma_hrq_changed));
m_dma8237->out_eop_callback().set(FUNC(a2bus_pcxporter_device::pc_dma8237_out_eop));
m_dma8237->in_memr_callback().set(FUNC(a2bus_pcxporter_device::pc_dma_read_byte));
@ -277,6 +275,14 @@ void a2bus_pcxporter_device::device_add_mconfig(machine_config &config)
ISA8_SLOT(config, "isa2", 0, m_isabus, pc_isa8_cards, "fdc_xt", true);
}
void a2bus_pcxporter_device::device_resolve_objects()
{
// DERIVED_CLOCK doesn't work for this case, so do this here instead
m_pit8253->set_clk<0>(clock() / 6.0); // heartbeat IRQ
m_pit8253->set_clk<1>(clock() / 6.0); // DRAM refresh
m_pit8253->set_clk<2>(clock() / 6.0); // PIO port C pin 4, and speaker polling enough
}
//**************************************************************************
// LIVE DEVICE
//**************************************************************************

View File

@ -24,17 +24,58 @@
#include "cpu/m6502/m6502.h"
#include "cpu/m6502/m65c02.h"
/***************************************************************************
PARAMETERS
***************************************************************************/
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
class a2bus_transwarp_device:
public device_t,
public device_a2bus_card_interface
{
public:
// construction/destruction
a2bus_transwarp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
a2bus_transwarp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// overrides of device_t functions
virtual void device_start() override ATTR_COLD;
virtual void device_reset() override ATTR_COLD;
virtual void device_add_mconfig(machine_config &config) override ATTR_COLD;
virtual ioport_constructor device_input_ports() const override ATTR_COLD;
virtual const tiny_rom_entry *device_rom_region() const override ATTR_COLD;
// overrides of standard a2bus slot functions
virtual bool take_c800() override;
private:
bool m_bEnabled;
bool m_bReadA2ROM;
bool m_bIn1MHzMode;
emu_timer *m_timer;
required_device<cpu_device> m_ourcpu;
required_region_ptr<uint8_t> m_rom;
required_ioport m_dsw1, m_dsw2;
TIMER_CALLBACK_MEMBER(clock_adjust_tick);
uint8_t dma_r(offs_t offset);
void dma_w(offs_t offset, uint8_t data);
void m65c02_mem(address_map &map) ATTR_COLD;
void hit_slot(int slot);
void hit_slot_joy();
};
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
DEFINE_DEVICE_TYPE(A2BUS_TRANSWARP, a2bus_transwarp_device, "a2twarp", "Applied Engineering TransWarp")
#define CPU_TAG "tw65c02"
DEFINE_DEVICE_TYPE_PRIVATE(A2BUS_TRANSWARP, device_a2bus_card_interface, a2bus_transwarp_device, "a2twarp", "Applied Engineering TransWarp")
void a2bus_transwarp_device::m65c02_mem(address_map &map)
{
@ -128,7 +169,7 @@ ioport_constructor a2bus_transwarp_device::device_input_ports() const
void a2bus_transwarp_device::device_add_mconfig(machine_config &config)
{
M65C02(config, m_ourcpu, A2BUS_7M_CLOCK / 2);
M65C02(config, m_ourcpu, DERIVED_CLOCK(1, 2));
m_ourcpu->set_addrmap(AS_PROGRAM, &a2bus_transwarp_device::m65c02_mem);
}
@ -140,7 +181,7 @@ a2bus_transwarp_device::a2bus_transwarp_device(const machine_config &mconfig, de
device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_bEnabled(false),
m_ourcpu(*this, CPU_TAG),
m_ourcpu(*this, "tw65c02"),
m_rom(*this, "twrom"),
m_dsw1(*this, "DSW1"),
m_dsw2(*this, "DSW2")
@ -174,11 +215,11 @@ void a2bus_transwarp_device::device_reset()
{
if (m_dsw1->read() & 0x80)
{
m_ourcpu->set_unscaled_clock(A2BUS_7M_CLOCK / 4);
m_ourcpu->set_unscaled_clock(clock() / 4);
}
else
{
m_ourcpu->set_unscaled_clock(A2BUS_7M_CLOCK / 2);
m_ourcpu->set_unscaled_clock(clock() / 2);
}
}
else
@ -199,11 +240,11 @@ TIMER_CALLBACK_MEMBER(a2bus_transwarp_device::clock_adjust_tick)
{
if (m_dsw1->read() & 0x80)
{
m_ourcpu->set_unscaled_clock(A2BUS_7M_CLOCK / 4);
m_ourcpu->set_unscaled_clock(clock() / 4);
}
else
{
m_ourcpu->set_unscaled_clock(A2BUS_7M_CLOCK / 2);
m_ourcpu->set_unscaled_clock(clock() / 2);
}
}
}
@ -255,11 +296,11 @@ void a2bus_transwarp_device::dma_w(offs_t offset, uint8_t data)
{
if (m_dsw1->read() & 0x80)
{
m_ourcpu->set_unscaled_clock(A2BUS_7M_CLOCK / 4);
m_ourcpu->set_unscaled_clock(clock() / 4);
}
else
{
m_ourcpu->set_unscaled_clock(A2BUS_7M_CLOCK / 2);
m_ourcpu->set_unscaled_clock(clock() / 2);
}
m_bIn1MHzMode = false;
}

View File

@ -13,53 +13,7 @@
#include "a2bus.h"
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
class a2bus_transwarp_device:
public device_t,
public device_a2bus_card_interface
{
public:
// construction/destruction
a2bus_transwarp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
a2bus_transwarp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// overrides of device_t functions
virtual void device_start() override ATTR_COLD;
virtual void device_reset() override ATTR_COLD;
virtual void device_add_mconfig(machine_config &config) override ATTR_COLD;
virtual ioport_constructor device_input_ports() const override ATTR_COLD;
virtual const tiny_rom_entry *device_rom_region() const override ATTR_COLD;
// overrides of standard a2bus slot functions
virtual bool take_c800() override;
private:
bool m_bEnabled;
bool m_bReadA2ROM;
bool m_bIn1MHzMode;
emu_timer *m_timer;
required_device<cpu_device> m_ourcpu;
required_region_ptr<uint8_t> m_rom;
required_ioport m_dsw1, m_dsw2;
TIMER_CALLBACK_MEMBER(clock_adjust_tick);
uint8_t dma_r(offs_t offset);
void dma_w(offs_t offset, uint8_t data);
void m65c02_mem(address_map &map) ATTR_COLD;
void hit_slot(int slot);
void hit_slot_joy();
};
// device type definition
DECLARE_DEVICE_TYPE(A2BUS_TRANSWARP, a2bus_transwarp_device)
DECLARE_DEVICE_TYPE(A2BUS_TRANSWARP, device_a2bus_card_interface)
#endif // MAME_BUS_A2BUS_TRANSWARP_H

View File

@ -1264,11 +1264,11 @@ void agat7_state::agat7(machine_config &config)
m_a2bus->nmi_w().set(FUNC(agat_base_state::a2bus_nmi_w));
m_a2bus->inh_w().set(FUNC(agat_base_state::a2bus_inh_w));
m_a2bus->dma_w().set_inputline(m_maincpu, INPUT_LINE_HALT);
A2BUS_SLOT(config, "sl2", m_a2bus, agat7_cards, "a7lang");
A2BUS_SLOT(config, "sl3", m_a2bus, agat7_cards, "a7fdc");
A2BUS_SLOT(config, "sl4", m_a2bus, agat7_cards, "a7ports");
A2BUS_SLOT(config, "sl5", m_a2bus, agat7_cards, nullptr);
A2BUS_SLOT(config, "sl6", m_a2bus, agat7_cards, "a7ram");
A2BUS_SLOT(config, "sl2", XTAL(14'300'000) / 2, m_a2bus, agat7_cards, "a7lang");
A2BUS_SLOT(config, "sl3", XTAL(14'300'000) / 2, m_a2bus, agat7_cards, "a7fdc");
A2BUS_SLOT(config, "sl4", XTAL(14'300'000) / 2, m_a2bus, agat7_cards, "a7ports");
A2BUS_SLOT(config, "sl5", XTAL(14'300'000) / 2, m_a2bus, agat7_cards, nullptr);
A2BUS_SLOT(config, "sl6", XTAL(14'300'000) / 2, m_a2bus, agat7_cards, "a7ram");
CASSETTE(config,m_cassette);
m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED);
@ -1306,12 +1306,12 @@ void agat9_state::agat9(machine_config &config)
m_a2bus->inh_w().set(FUNC(agat_base_state::a2bus_inh_w));
m_a2bus->dma_w().set_inputline(m_maincpu, INPUT_LINE_HALT);
// slot 0 does not exist
A2BUS_SLOT(config, "sl1", m_a2bus, agat9_cards, nullptr);
A2BUS_SLOT(config, "sl2", m_a2bus, agat9_cards, nullptr); // a9ram
A2BUS_SLOT(config, "sl3", m_a2bus, agat9_cards, nullptr); // printer->mouse
A2BUS_SLOT(config, "sl4", m_a2bus, agat9_cards, nullptr); // printer
A2BUS_SLOT(config, "sl5", m_a2bus, agat9_cards, "a9fdc");
A2BUS_SLOT(config, "sl6", m_a2bus, agat9_cards, "a9fdc140");
A2BUS_SLOT(config, "sl1", XTAL(14'300'000) / 2, m_a2bus, agat9_cards, nullptr);
A2BUS_SLOT(config, "sl2", XTAL(14'300'000) / 2, m_a2bus, agat9_cards, nullptr); // a9ram
A2BUS_SLOT(config, "sl3", XTAL(14'300'000) / 2, m_a2bus, agat9_cards, nullptr); // printer->mouse
A2BUS_SLOT(config, "sl4", XTAL(14'300'000) / 2, m_a2bus, agat9_cards, nullptr); // printer
A2BUS_SLOT(config, "sl5", XTAL(14'300'000) / 2, m_a2bus, agat9_cards, "a9fdc");
A2BUS_SLOT(config, "sl6", XTAL(14'300'000) / 2, m_a2bus, agat9_cards, "a9fdc140");
CASSETTE(config,m_cassette);
m_cassette->set_default_state(CASSETTE_STOPPED);

View File

@ -1183,14 +1183,14 @@ void apple2_state::apple2_common(machine_config &config)
m_a2bus->nmi_w().set(FUNC(apple2_state::a2bus_nmi_w));
m_a2bus->inh_w().set(FUNC(apple2_state::a2bus_inh_w));
m_a2bus->dma_w().set_inputline(m_maincpu, INPUT_LINE_HALT);
A2BUS_SLOT(config, "sl0", m_a2bus, apple2_slot0_cards, "lang");
A2BUS_SLOT(config, "sl1", m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl2", m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl3", m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl4", m_a2bus, apple2_cards, "mockingboard");
A2BUS_SLOT(config, "sl5", m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl6", m_a2bus, apple2_cards, "diskiing");
A2BUS_SLOT(config, "sl7", m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl0", XTAL(14'318'181) / 2, m_a2bus, apple2_slot0_cards, "lang");
A2BUS_SLOT(config, "sl1", XTAL(14'318'181) / 2, m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl2", XTAL(14'318'181) / 2, m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl3", XTAL(14'318'181) / 2, m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl4", XTAL(14'318'181) / 2, m_a2bus, apple2_cards, "mockingboard");
A2BUS_SLOT(config, "sl5", XTAL(14'318'181) / 2, m_a2bus, apple2_cards, nullptr);
A2BUS_SLOT(config, "sl6", XTAL(14'318'181) / 2, m_a2bus, apple2_cards, "diskiing");
A2BUS_SLOT(config, "sl7", XTAL(14'318'181) / 2, m_a2bus, apple2_cards, nullptr);
/* Set up the softlists: clean cracks priority, originals second, others last */
SOFTWARE_LIST(config, "flop_a2_clean").set_original("apple2_flop_clcracked");

View File

@ -190,6 +190,8 @@ static constexpr int IRQ_SLOT = 0;
static constexpr int IRQ_VBL = 1;
static constexpr int IRQ_MOUSEXY = 2;
static constexpr XTAL A2BUS_7M_CLOCK = XTAL(14'318'181) / 2;
class apple2e_state : public driver_device
{
public:
@ -2139,13 +2141,13 @@ void apple2e_state::laser_calc_speed()
break;
case 2:
m_accel_speed = A2BUS_7M_CLOCK/3; // 2.38 MHz
m_accel_speed = A2BUS_7M_CLOCK.value()/3; // 2.38 MHz
m_accel_fast = true;
accel_full_speed();
break;
case 3:
m_accel_speed = A2BUS_7M_CLOCK/2; // 3.58 MHz
m_accel_speed = A2BUS_7M_CLOCK.value()/2; // 3.58 MHz
m_accel_fast = true;
accel_full_speed();
break;
@ -5043,13 +5045,13 @@ void apple2e_state::apple2e_common(machine_config &config, bool enhanced, bool r
m_a2bus->nmi_w().set(FUNC(apple2e_state::a2bus_nmi_w));
m_a2bus->inh_w().set(FUNC(apple2e_state::a2bus_inh_w));
m_a2bus->dma_w().set_inputline(m_maincpu, INPUT_LINE_HALT);
A2BUS_SLOT(config, "sl1", m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl2", m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl3", m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl4", m_a2bus, apple2e_cards, "mockingboard");
A2BUS_SLOT(config, "sl5", m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl6", m_a2bus, apple2e_cards, "diskiing");
A2BUS_SLOT(config, "sl7", m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl1", A2BUS_7M_CLOCK, m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl2", A2BUS_7M_CLOCK, m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl3", A2BUS_7M_CLOCK, m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl4", A2BUS_7M_CLOCK, m_a2bus, apple2e_cards, "mockingboard");
A2BUS_SLOT(config, "sl5", A2BUS_7M_CLOCK, m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl6", A2BUS_7M_CLOCK, m_a2bus, apple2e_cards, "diskiing");
A2BUS_SLOT(config, "sl7", A2BUS_7M_CLOCK, m_a2bus, apple2e_cards, nullptr);
A2EAUXSLOT(config, m_a2eauxslot, 0);
m_a2eauxslot->set_space(m_maincpu, AS_PROGRAM);
@ -5254,9 +5256,9 @@ void apple2e_state::laser128(machine_config &config)
A2BUS_LASER128(config, "sl2", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
A2BUS_LASER128(config, "sl3", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
A2BUS_LASER128(config, "sl4", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
A2BUS_SLOT(config, "sl5", m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl5", A2BUS_7M_CLOCK, m_a2bus, apple2e_cards, nullptr);
A2BUS_LASER128(config, "sl6", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
A2BUS_SLOT(config, "sl7", m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl7", A2BUS_7M_CLOCK, m_a2bus, apple2e_cards, nullptr);
CENTRONICS(config, m_printer_conn, centronics_devices, "printer");
m_printer_conn->busy_handler().set(FUNC(apple2e_state::busy_w));
@ -5289,9 +5291,9 @@ void apple2e_state::laser128o(machine_config &config)
A2BUS_LASER128_ORIG(config, "sl2", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
A2BUS_LASER128_ORIG(config, "sl3", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
A2BUS_LASER128_ORIG(config, "sl4", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
A2BUS_SLOT(config, "sl5", m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl5", A2BUS_7M_CLOCK, m_a2bus, apple2e_cards, nullptr);
A2BUS_LASER128_ORIG(config, "sl6", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
A2BUS_SLOT(config, "sl7", m_a2bus, apple2e_cards, nullptr);
A2BUS_SLOT(config, "sl7", A2BUS_7M_CLOCK, m_a2bus, apple2e_cards, nullptr);
CENTRONICS(config, m_printer_conn, centronics_devices, "printer");
m_printer_conn->busy_handler().set(FUNC(apple2e_state::busy_w));
@ -5400,7 +5402,7 @@ void apple2e_state::ace2200(machine_config &config)
config.device_remove("sl6");
A2BUS_ACE2X00_SLOT1(config, "sl1", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
A2BUS_SLOT(config, "sl5", m_a2bus, apple2e_cards, "mockingboard");
A2BUS_SLOT(config, "sl5", A2BUS_7M_CLOCK, m_a2bus, apple2e_cards, "mockingboard");
A2BUS_ACE2X00_SLOT6(config, "sl6", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
config.device_remove("aux");

View File

@ -3860,13 +3860,13 @@ void apple2gs_state::apple2gs(machine_config &config)
m_a2bus->nmi_w().set(FUNC(apple2gs_state::a2bus_nmi_w));
m_a2bus->inh_w().set(FUNC(apple2gs_state::a2bus_inh_w));
m_a2bus->dma_w().set_inputline(m_maincpu, INPUT_LINE_HALT);
A2BUS_SLOT(config, "sl1", m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl2", m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl3", m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl4", m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl5", m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl6", m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl7", m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl1", A2GS_7M, m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl2", A2GS_7M, m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl3", A2GS_7M, m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl4", A2GS_7M, m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl5", A2GS_7M, m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl6", A2GS_7M, m_a2bus, apple2gs_cards, nullptr);
A2BUS_SLOT(config, "sl7", A2GS_7M, m_a2bus, apple2gs_cards, nullptr);
IWM(config, m_iwm, A2GS_7M, A2GS_MASTER_CLOCK/14);
m_iwm->phases_cb().set(FUNC(apple2gs_state::phases_w));

View File

@ -86,10 +86,10 @@ void apple3_state::apple3(machine_config &config)
m_a2bus->nmi_w().set(FUNC(apple3_state::a2bus_nmi_w));
m_a2bus->inh_w().set(FUNC(apple3_state::a2bus_inh_w));
m_a2bus->dma_w().set_inputline(m_maincpu, INPUT_LINE_HALT);
A2BUS_SLOT(config, "sl1", m_a2bus, apple3_cards, nullptr);
A2BUS_SLOT(config, "sl2", m_a2bus, apple3_cards, nullptr);
A2BUS_SLOT(config, "sl3", m_a2bus, apple3_cards, nullptr);
A2BUS_SLOT(config, "sl4", m_a2bus, apple3_cards, nullptr);
A2BUS_SLOT(config, "sl1", 14.318181_MHz_XTAL / 2, m_a2bus, apple3_cards, nullptr);
A2BUS_SLOT(config, "sl2", 14.318181_MHz_XTAL / 2, m_a2bus, apple3_cards, nullptr);
A2BUS_SLOT(config, "sl3", 14.318181_MHz_XTAL / 2, m_a2bus, apple3_cards, nullptr);
A2BUS_SLOT(config, "sl4", 14.318181_MHz_XTAL / 2, m_a2bus, apple3_cards, nullptr);
/* fdc */
APPLEIII_FDC(config, m_fdc, 1021800*2);

View File

@ -170,10 +170,10 @@ void concept_state::corvus_concept(machine_config &config)
A2BUS(config, m_a2bus, 0).set_space(m_maincpu, AS_PROGRAM);
m_a2bus->nmi_w().set("iocint", FUNC(input_merger_device::in_w<0>));
m_a2bus->irq_w().set("iocint", FUNC(input_merger_device::in_w<1>));
A2BUS_SLOT(config, "sl1", m_a2bus, concept_a2_cards, nullptr);
A2BUS_SLOT(config, "sl2", m_a2bus, concept_a2_cards, nullptr);
A2BUS_SLOT(config, "sl3", m_a2bus, concept_a2_cards, nullptr);
A2BUS_SLOT(config, "sl4", m_a2bus, concept_a2_cards, "fdc01");
A2BUS_SLOT(config, "sl1", 16.364_MHz_XTAL / 2, m_a2bus, concept_a2_cards, nullptr);
A2BUS_SLOT(config, "sl2", 16.364_MHz_XTAL / 2, m_a2bus, concept_a2_cards, nullptr);
A2BUS_SLOT(config, "sl3", 16.364_MHz_XTAL / 2, m_a2bus, concept_a2_cards, nullptr);
A2BUS_SLOT(config, "sl4", 16.364_MHz_XTAL / 2, m_a2bus, concept_a2_cards, "fdc01");
INPUT_MERGER_ANY_HIGH(config, "iocint").output_handler().set_inputline(m_maincpu, M68K_IRQ_1);