mcs48: Further distinction of UPI variants (nw)

This commit is contained in:
AJR 2019-06-16 14:29:11 -04:00
parent b9bc5cf151
commit d95b0b95c7
26 changed files with 136 additions and 108 deletions

View File

@ -102,7 +102,7 @@ void dmv_k806_device::device_reset()
void dmv_k806_device::device_add_mconfig(machine_config &config)
{
I8741(config, m_mcu, XTAL(6'000'000));
I8741A(config, m_mcu, XTAL(6'000'000));
m_mcu->p1_in_cb().set(FUNC(dmv_k806_device::port1_r));
m_mcu->p2_out_cb().set(FUNC(dmv_k806_device::port2_w));
m_mcu->t1_in_cb().set(FUNC(dmv_k806_device::portt1_r));

View File

@ -145,26 +145,28 @@
DEFINE_DEVICE_TYPE(I8021, i8021_device, "i8021", "Intel I8021")
DEFINE_DEVICE_TYPE(I8022, i8022_device, "i8022", "Intel I8022")
DEFINE_DEVICE_TYPE(I8035, i8035_device, "i8035", "Intel I8035")
DEFINE_DEVICE_TYPE(I8048, i8048_device, "i8048", "Intel I8048")
DEFINE_DEVICE_TYPE(I8648, i8648_device, "i8648", "Intel I8648")
DEFINE_DEVICE_TYPE(I8748, i8748_device, "i8748", "Intel I8748")
DEFINE_DEVICE_TYPE(I8039, i8039_device, "i8039", "Intel I8039")
DEFINE_DEVICE_TYPE(I8049, i8049_device, "i8049", "Intel I8049")
DEFINE_DEVICE_TYPE(I8749, i8749_device, "i8749", "Intel I8749")
DEFINE_DEVICE_TYPE(I8040, i8040_device, "i8040", "Intel I8040")
DEFINE_DEVICE_TYPE(I8050, i8050_device, "i8050", "Intel I8050")
DEFINE_DEVICE_TYPE(I8041, i8041_device, "i8041", "Intel I8041")
DEFINE_DEVICE_TYPE(I8741, i8741_device, "i8741", "Intel I8741")
DEFINE_DEVICE_TYPE(I8042, i8042_device, "i8042", "Intel I8042")
DEFINE_DEVICE_TYPE(I8042AH,i8042ah_device,"i8042ah","Intel I8042AH")
DEFINE_DEVICE_TYPE(I8242, i8242_device, "i8242", "Intel I8242")
DEFINE_DEVICE_TYPE(I8742, i8742_device, "i8742", "Intel I8742")
DEFINE_DEVICE_TYPE(MB8884, mb8884_device, "mb8884", "MB8884")
DEFINE_DEVICE_TYPE(N7751, n7751_device, "n7751", "N7751")
DEFINE_DEVICE_TYPE(M58715, m58715_device, "m58715", "M58715")
DEFINE_DEVICE_TYPE(I8021, i8021_device, "i8021", "Intel 8021")
DEFINE_DEVICE_TYPE(I8022, i8022_device, "i8022", "Intel 8022")
DEFINE_DEVICE_TYPE(I8035, i8035_device, "i8035", "Intel 8035")
DEFINE_DEVICE_TYPE(I8048, i8048_device, "i8048", "Intel 8048")
DEFINE_DEVICE_TYPE(I8648, i8648_device, "i8648", "Intel 8648")
DEFINE_DEVICE_TYPE(I8748, i8748_device, "i8748", "Intel 8748")
DEFINE_DEVICE_TYPE(I8039, i8039_device, "i8039", "Intel 8039")
DEFINE_DEVICE_TYPE(I8049, i8049_device, "i8049", "Intel 8049")
DEFINE_DEVICE_TYPE(I8749, i8749_device, "i8749", "Intel 8749")
DEFINE_DEVICE_TYPE(I8040, i8040_device, "i8040", "Intel 8040")
DEFINE_DEVICE_TYPE(I8050, i8050_device, "i8050", "Intel 8050")
DEFINE_DEVICE_TYPE(I8041A, i8041a_device, "i8041a", "Intel 8041A")
DEFINE_DEVICE_TYPE(I8741A, i8741a_device, "i8741a", "Intel 8741A")
DEFINE_DEVICE_TYPE(I8041AH, i8041ah_device, "i8041ah", "Intel 8041AH")
DEFINE_DEVICE_TYPE(I8741AH, i8741ah_device, "i8741ah", "Intel 8741AH")
DEFINE_DEVICE_TYPE(I8042, i8042_device, "i8042", "Intel 8042")
DEFINE_DEVICE_TYPE(I8742, i8742_device, "i8742", "Intel 8742")
DEFINE_DEVICE_TYPE(I8042AH, i8042ah_device, "i8042ah", "Intel 8042AH")
DEFINE_DEVICE_TYPE(I8742AH, i8742ah_device, "i8742ah", "Intel 8742AH")
DEFINE_DEVICE_TYPE(MB8884, mb8884_device, "mb8884", "MB8884")
DEFINE_DEVICE_TYPE(N7751, n7751_device, "n7751", "N7751")
DEFINE_DEVICE_TYPE(M58715, m58715_device, "m58715", "M58715")
/***************************************************************************
@ -310,13 +312,23 @@ upi41_cpu_device::upi41_cpu_device(const machine_config &mconfig, device_type ty
{
}
i8041_device::i8041_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upi41_cpu_device(mconfig, I8041, tag, owner, clock, 1024, 128)
i8041a_device::i8041a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upi41_cpu_device(mconfig, I8041A, tag, owner, clock, 1024, 64)
{
}
i8741_device::i8741_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upi41_cpu_device(mconfig, I8741, tag, owner, clock, 1024, 128)
i8741a_device::i8741a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upi41_cpu_device(mconfig, I8741A, tag, owner, clock, 1024, 64)
{
}
i8041ah_device::i8041ah_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upi41_cpu_device(mconfig, I8041AH, tag, owner, clock, 1024, 128)
{
}
i8741ah_device::i8741ah_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upi41_cpu_device(mconfig, I8741AH, tag, owner, clock, 1024, 128)
{
}
@ -325,18 +337,18 @@ i8042_device::i8042_device(const machine_config &mconfig, const char *tag, devic
{
}
i8042ah_device::i8042ah_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upi41_cpu_device(mconfig, I8042, tag, owner, clock, 2048, 256)
{
}
i8242_device::i8242_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upi41_cpu_device(mconfig, I8242, tag, owner, clock, 2048, 256)
{
}
i8742_device::i8742_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upi41_cpu_device(mconfig, I8742, tag, owner, clock, 2048, 256)
: upi41_cpu_device(mconfig, I8742, tag, owner, clock, 2048, 128)
{
}
i8042ah_device::i8042ah_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upi41_cpu_device(mconfig, I8042AH, tag, owner, clock, 2048, 256)
{
}
i8742ah_device::i8742ah_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upi41_cpu_device(mconfig, I8742AH, tag, owner, clock, 2048, 256)
{
}

View File

@ -86,12 +86,14 @@ DECLARE_DEVICE_TYPE(I8040, i8040_device) /* external ROM, 256 bytes in
DECLARE_DEVICE_TYPE(I8050, i8050_device) /* 4k internal ROM, 256 bytes internal RAM */
/* Official Intel UPI-41 parts */
DECLARE_DEVICE_TYPE(I8041, i8041_device) /* 1k internal ROM, 128 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8741, i8741_device) /* 1k internal EEPROM, 128 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8042, i8042_device) /* 2k internal ROM, 128 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8042AH, i8042ah_device)/* 2k internal ROM, 256 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8242, i8242_device) /* 2k internal ROM, 256 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8742, i8742_device) /* 2k internal EEPROM, 256 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8041A, i8041a_device) /* 1k internal ROM, 64 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8741A, i8741a_device) /* 1k internal EEPROM, 64 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8041AH, i8041ah_device) /* 1k internal ROM, 128 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8741AH, i8741ah_device) /* 1k internal EEPROM, 128 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8042, i8042_device) /* 2k internal ROM, 128 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8742, i8742_device) /* 2k internal EEPROM, 128 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8042AH, i8042ah_device) /* 2k internal ROM, 256 bytes internal RAM */
DECLARE_DEVICE_TYPE(I8742AH, i8742ah_device) /* 2k internal EEPROM, 256 bytes internal RAM */
/* Clones */
DECLARE_DEVICE_TYPE(MB8884, mb8884_device) /* 8035 clone */
@ -636,18 +638,32 @@ protected:
TIMER_CALLBACK_MEMBER( master_callback );
};
class i8041_device : public upi41_cpu_device
class i8041a_device : public upi41_cpu_device
{
public:
// construction/destruction
i8041_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
i8041a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class i8741_device : public upi41_cpu_device
class i8741a_device : public upi41_cpu_device
{
public:
// construction/destruction
i8741_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
i8741a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class i8041ah_device : public upi41_cpu_device
{
public:
// construction/destruction
i8041ah_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class i8741ah_device : public upi41_cpu_device
{
public:
// construction/destruction
i8741ah_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class i8042_device : public upi41_cpu_device
@ -657,20 +673,6 @@ public:
i8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class i8042ah_device : public upi41_cpu_device
{
public:
// construction/destruction
i8042ah_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class i8242_device : public upi41_cpu_device
{
public:
// construction/destruction
i8242_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class i8742_device : public upi41_cpu_device
{
public:
@ -678,5 +680,19 @@ public:
i8742_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class i8042ah_device : public upi41_cpu_device
{
public:
// construction/destruction
i8042ah_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
class i8742ah_device : public upi41_cpu_device
{
public:
// construction/destruction
i8742ah_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
#endif // MAME_CPU_MCS48_MCS48_H

View File

@ -135,7 +135,7 @@ private:
void alphatp2_mem(address_map &map);
required_device<address_map_bank_device> m_bankdev;
required_device<i8041_device> m_kbdmcu;
required_device<i8041a_device> m_kbdmcu;
required_device<crt5027_device> m_crtc;
required_device<fd1791_device> m_fdc;
required_device_array<floppy_connector, 2> m_floppy;
@ -221,7 +221,7 @@ private:
void alphatp3_mem(address_map &map);
required_device<address_map_bank_device> m_bankdev;
required_device<i8041_device> m_kbdmcu;
required_device<i8041a_device> m_kbdmcu;
required_device<crt5037_device> m_crtc;
required_device<fd1791_device> m_fdc;
required_device_array<floppy_connector, 2> m_floppy;
@ -271,7 +271,7 @@ void alphatp_12_state::alphatp2_io(address_map &map)
{
map.unmap_value_high();
map(0x04, 0x05).rw("uart", FUNC(i8251_device::read), FUNC(i8251_device::write));
map(0x10, 0x11).rw(m_kbdmcu, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w));
map(0x10, 0x11).rw(m_kbdmcu, FUNC(i8041a_device::upi41_master_r), FUNC(i8041a_device::upi41_master_w));
map(0x12, 0x12).w(FUNC(alphatp_12_state::beep_w));
map(0x50, 0x53).rw(FUNC(alphatp_12_state::fdc_r), FUNC(alphatp_12_state::fdc_w));
map(0x54, 0x54).rw(FUNC(alphatp_12_state::fdc_stat_r), FUNC(alphatp_12_state::fdc_cmd_w));
@ -311,7 +311,7 @@ void alphatp_34_state::alphatp3_io(address_map &map)
//AM_RANGE(0x00, 0x00) AM_READ // unknown
map(0x04, 0x05).rw("uart", FUNC(i8251_device::read), FUNC(i8251_device::write));
map(0x08, 0x09).rw(FUNC(alphatp_34_state::comm88_r), FUNC(alphatp_34_state::comm88_w));
map(0x10, 0x11).rw(m_kbdmcu, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w));
map(0x10, 0x11).rw(m_kbdmcu, FUNC(i8041a_device::upi41_master_r), FUNC(i8041a_device::upi41_master_w));
map(0x12, 0x12).w(FUNC(alphatp_34_state::beep_w));
map(0x40, 0x41).r(FUNC(alphatp_34_state::start88_r));
//AM_RANGE(0x42, 0x42) AM_WRITE // unknown
@ -1212,7 +1212,7 @@ void alphatp_12_state::alphatp2(machine_config &config)
config.m_perfect_cpu_quantum = subtag("maincpu");
I8041(config, m_kbdmcu, 12.8544_MHz_XTAL / 2);
I8041A(config, m_kbdmcu, 12.8544_MHz_XTAL / 2);
m_kbdmcu->t0_in_cb().set(FUNC(alphatp_12_state::kbd_matrix_r));
m_kbdmcu->p1_out_cb().set(FUNC(alphatp_12_state::kbd_matrix_w));
m_kbdmcu->p2_in_cb().set(FUNC(alphatp_12_state::kbd_port2_r));
@ -1290,7 +1290,7 @@ void alphatp_34_state::alphatp3(machine_config &config)
config.m_perfect_cpu_quantum = subtag("maincpu");
I8041(config, m_kbdmcu, 12.8544_MHz_XTAL /2);
I8041A(config, m_kbdmcu, 12.8544_MHz_XTAL /2);
m_kbdmcu->t0_in_cb().set(FUNC(alphatp_34_state::kbd_matrix_r));
m_kbdmcu->p1_out_cb().set(FUNC(alphatp_34_state::kbd_matrix_w));
m_kbdmcu->p2_in_cb().set(FUNC(alphatp_34_state::kbd_port2_r));

View File

@ -960,7 +960,7 @@ void decocass_state::decocass(machine_config &config)
m_audiocpu->set_addrmap(AS_PROGRAM, &decocass_state::decocass_sound_map);
TIMER(config, "audionmi").configure_scanline(FUNC(decocass_state::decocass_audio_nmi_gen), "screen", 0, 8);
I8041(config, m_mcu, HCLK);
I8041A(config, m_mcu, HCLK);
m_mcu->p1_in_cb().set(FUNC(decocass_state::i8041_p1_r));
m_mcu->p1_out_cb().set(FUNC(decocass_state::i8041_p1_w));
m_mcu->p2_in_cb().set(FUNC(decocass_state::i8041_p2_r));

View File

@ -780,7 +780,7 @@ void dmv_state::dmv(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &dmv_state::dmv_mem);
m_maincpu->set_addrmap(AS_IO, &dmv_state::dmv_io);
i8741_device &kbmcu(I8741(config, "kb_ctrl_mcu", XTAL(6'000'000)));
i8741a_device &kbmcu(I8741A(config, "kb_ctrl_mcu", XTAL(6'000'000)));
kbmcu.p1_in_cb().set(FUNC(dmv_state::kb_mcu_port1_r)); // bit 0 data from kb
kbmcu.p1_out_cb().set(FUNC(dmv_state::kb_mcu_port1_w)); // bit 1 data to kb
kbmcu.p2_out_cb().set(FUNC(dmv_state::kb_mcu_port2_w));

View File

@ -367,7 +367,7 @@ void duet16_state::duet16(machine_config &config)
i8087.irq().set(m_pic, FUNC(pic8259_device::ir2_w)); // INT87
i8087.busy().set_inputline(m_maincpu, INPUT_LINE_TEST);
I8741(config, "i8741", 20_MHz_XTAL / 4);
I8741A(config, "i8741", 20_MHz_XTAL / 4);
PIC8259(config, m_pic, 0);
m_pic->out_int_callback().set_inputline(m_maincpu, 0);

View File

@ -206,7 +206,7 @@ private:
void brc_base(machine_config &config);
// devices/pointers
required_device<i8041_device> m_mcu;
required_device<i8041a_device> m_mcu;
required_device<i8243_device> m_i8243;
// address maps
@ -314,7 +314,7 @@ void card_state::main_map(address_map &map)
void card_state::main_io(address_map &map)
{
map.global_mask(0x01);
map(0x00, 0x01).rw(m_mcu, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w));
map(0x00, 0x01).rw(m_mcu, FUNC(i8041a_device::upi41_master_r), FUNC(i8041a_device::upi41_master_w));
}
@ -548,7 +548,7 @@ void card_state::brc_base(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &card_state::main_io);
config.m_perfect_cpu_quantum = subtag("maincpu");
I8041(config, m_mcu, 5_MHz_XTAL);
I8041A(config, m_mcu, 5_MHz_XTAL);
m_mcu->p1_out_cb().set(FUNC(card_state::mcu_p1_w));
m_mcu->p2_in_cb().set(FUNC(card_state::mcu_p2_r));
m_mcu->p2_out_cb().set(m_i8243, FUNC(i8243_device::p2_w));

View File

@ -1028,27 +1028,27 @@ void gladiatr_state::gladiatr(machine_config &config)
mainlatch.q_out_cb<4>().set_inputline("sub", INPUT_LINE_RESET); // shadowed by aforementioned hack
mainlatch.q_out_cb<7>().set(FUNC(gladiatr_state::flipscreen_w));
I8741(config, m_cctl, 12_MHz_XTAL/2); /* verified on pcb */
I8741A(config, m_cctl, 12_MHz_XTAL/2); /* verified on pcb */
m_cctl->t0_in_cb().set_ioport("COINS").bit(3);
m_cctl->t1_in_cb().set_ioport("COINS").bit(2);
m_cctl->p1_in_cb().set(FUNC(gladiatr_state::cctl_p1_r));
m_cctl->p2_in_cb().set(FUNC(gladiatr_state::cctl_p2_r));
I8741(config, m_ccpu, 12_MHz_XTAL/2); /* verified on pcb */
I8741A(config, m_ccpu, 12_MHz_XTAL/2); /* verified on pcb */
m_ccpu->p1_in_cb().set_ioport("IN0");
m_ccpu->p2_in_cb().set_ioport("IN1");
m_ccpu->p2_out_cb().set(FUNC(gladiatr_state::ccpu_p2_w));
m_ccpu->t0_in_cb().set_ioport("COINS").bit(1);
m_ccpu->t1_in_cb().set_ioport("COINS").bit(0);
I8741(config, m_ucpu, 12_MHz_XTAL/2); /* verified on pcb */
I8741A(config, m_ucpu, 12_MHz_XTAL/2); /* verified on pcb */
m_ucpu->p1_in_cb().set(FUNC(gladiatr_state::ucpu_p1_r));
m_ucpu->p1_out_cb().set(FUNC(gladiatr_state::ucpu_p1_w));
m_ucpu->p2_in_cb().set(FUNC(gladiatr_state::ucpu_p2_r));
m_ucpu->t0_in_cb().set(FUNC(gladiatr_state::tclk_r));
m_ucpu->t1_in_cb().set(FUNC(gladiatr_state::ucpu_t1_r));
I8741(config, m_csnd, 12_MHz_XTAL/2); /* verified on pcb */
I8741A(config, m_csnd, 12_MHz_XTAL/2); /* verified on pcb */
m_csnd->p1_in_cb().set(FUNC(gladiatr_state::csnd_p1_r));
m_csnd->p1_out_cb().set(FUNC(gladiatr_state::csnd_p1_w));
m_csnd->p2_in_cb().set(FUNC(gladiatr_state::csnd_p2_r));

View File

@ -930,21 +930,21 @@ void gsword_state::gsword(machine_config &config)
Z80(config, m_audiocpu, XTAL(18'000'000)/6); /* verified on pcb */
m_audiocpu->set_addrmap(AS_PROGRAM, &gsword_state::cpu3_map);
upi41_cpu_device &mcu1(I8041(config, "mcu1", 12'000'000/2)); // clock unknown, using value from gladiatr
upi41_cpu_device &mcu1(I8041A(config, "mcu1", 12'000'000/2)); // clock unknown, using value from gladiatr
mcu1.p1_in_cb().set([this] () { return ioport("MCU1.P1")->read() | BIT(m_mcu2_p1, 0); });
mcu1.p1_out_cb().set([this] (uint8_t data) { m_mcu1_p1 = data; });
mcu1.p2_in_cb().set_ioport("DSW2");
mcu1.t0_in_cb().set([this] () { return m_tclk_val ? 1 : 0; }); // serial clock
mcu1.t1_in_cb().set([this] () { return BIT(m_mcu2_p1, 1); }); // from P11 on other MCU
upi41_cpu_device &mcu2(I8041(config, "mcu2", 12'000'000/2)); // clock unknown, using value from gladiatr
upi41_cpu_device &mcu2(I8041A(config, "mcu2", 12'000'000/2)); // clock unknown, using value from gladiatr
mcu2.p1_in_cb().set(FUNC(gsword_state::mcu2_p1_r));
mcu2.p1_out_cb().set([this] (uint8_t data) { m_mcu2_p1 = data; });
mcu2.p2_in_cb().set_ioport("DSW1");
mcu2.t0_in_cb().set([this] () { return m_tclk_val ? 1 : 0; }); // serial clock
mcu2.t1_in_cb().set([this] () { return BIT(m_mcu1_p1, 1); }); // from P11 on other MCU
upi41_cpu_device &mcu3(I8041(config, "mcu3", 12'000'000/2)); // clock unknown, using value from gladiatr
upi41_cpu_device &mcu3(I8041A(config, "mcu3", 12'000'000/2)); // clock unknown, using value from gladiatr
mcu3.p1_in_cb().set_ioport("IN0");
mcu3.p2_in_cb().set_ioport("IN1");
mcu3.p2_out_cb().set(FUNC(gsword_state::mcu3_p2_w));
@ -998,13 +998,13 @@ void josvolly_state::josvolly(machine_config &config)
m_audiocpu->set_addrmap(AS_IO, &josvolly_state::josvolly_cpu2_io_map);
m_audiocpu->set_vblank_int("screen", FUNC(josvolly_state::irq0_line_assert));
upi41_cpu_device &mcu1(I8741(config, "mcu1", 18000000/2)); /* ? */
upi41_cpu_device &mcu1(I8741A(config, "mcu1", 18000000/2)); /* ? */
mcu1.p1_in_cb().set(FUNC(josvolly_state::mcu1_p1_r));
mcu1.p1_out_cb().set(FUNC(josvolly_state::mcu1_p1_w));
mcu1.p2_in_cb().set(FUNC(josvolly_state::mcu1_p2_r));
mcu1.p2_out_cb().set(FUNC(josvolly_state::mcu1_p2_w));
upi41_cpu_device &mcu2(I8741(config, "mcu2", 12000000/2)); /* ? */
upi41_cpu_device &mcu2(I8741A(config, "mcu2", 12000000/2)); /* ? */
mcu2.p1_in_cb().set(FUNC(josvolly_state::mcu2_p1_r));
mcu2.p1_out_cb().set(FUNC(josvolly_state::mcu2_p1_w));
mcu2.p2_in_cb().set(FUNC(josvolly_state::mcu2_p2_r));

View File

@ -79,7 +79,7 @@ void itt1700_state::io_map(address_map &map)
map.global_mask(0xff);
map(0x10, 0x10).w("crtc", FUNC(hd6845s_device::address_w));
map(0x11, 0x11).w("crtc", FUNC(hd6845s_device::register_w));
map(0x20, 0x21).rw("upi", FUNC(i8741_device::upi41_master_r), FUNC(i8741_device::upi41_master_w));
map(0x20, 0x21).rw("upi", FUNC(i8741a_device::upi41_master_r), FUNC(i8741a_device::upi41_master_w));
}
static INPUT_PORTS_START(itt1700)
@ -91,7 +91,7 @@ void itt1700_state::itt1700(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &itt1700_state::mem_map);
m_maincpu->set_addrmap(AS_IO, &itt1700_state::io_map);
upi41_cpu_device &upi(I8741(config, "upi", 16.6698_MHz_XTAL / 3)); // clock guessed
upi41_cpu_device &upi(I8741A(config, "upi", 16.6698_MHz_XTAL / 3)); // clock guessed
upi.p1_out_cb().set("keyboard", FUNC(itt1700_keyboard_device::clock_w)).bit(0);
upi.p1_out_cb().append("keyboard", FUNC(itt1700_keyboard_device::line1_w)).bit(1);
upi.p1_out_cb().append("keyboard", FUNC(itt1700_keyboard_device::line2_w)).bit(2);

View File

@ -266,7 +266,7 @@ private:
// devices
required_device<cpu_device> m_maincpu;
required_device<screen_device> m_screen;
required_device<i8741_device> m_kbdmcu;
required_device<i8741a_device> m_kbdmcu;
required_device<ram_device> m_ram;
required_device<crt5027_device> m_crtc;
required_device<address_map_bank_device> m_48kbank;
@ -311,7 +311,7 @@ void itt3030_state::itt3030_io(address_map &map)
{
map.global_mask(0xff);
map(0x20, 0x2f).rw(m_crtc, FUNC(crt5027_device::read), FUNC(crt5027_device::write));
map(0x30, 0x31).rw(m_kbdmcu, FUNC(i8741_device::upi41_master_r), FUNC(i8741_device::upi41_master_w));
map(0x30, 0x31).rw(m_kbdmcu, FUNC(i8741a_device::upi41_master_r), FUNC(i8741a_device::upi41_master_w));
map(0x32, 0x32).w(FUNC(itt3030_state::beep_w));
map(0x35, 0x35).r(FUNC(itt3030_state::vsync_r));
map(0x50, 0x53).rw(FUNC(itt3030_state::fdc_r), FUNC(itt3030_state::fdc_w));
@ -707,7 +707,7 @@ void itt3030_state::itt3030(machine_config &config)
// bits 0-2 select bit to read back, bits 3-6 choose column to read from, bit 7 clocks the process (rising edge strobes the row, falling edge reads the data)
// T0 is the key matrix return
// pin 23 is the UPI-41 host IRQ line, it's unknown how it's connected to the Z80
I8741(config, m_kbdmcu, 6_MHz_XTAL);
I8741A(config, m_kbdmcu, 6_MHz_XTAL);
m_kbdmcu->t0_in_cb().set(FUNC(itt3030_state::kbd_matrix_r));
m_kbdmcu->p1_out_cb().set(FUNC(itt3030_state::kbd_matrix_w));
m_kbdmcu->p2_in_cb().set(FUNC(itt3030_state::kbd_port2_r));

View File

@ -85,7 +85,7 @@ void itt9216_state::itt9216(machine_config &config)
M68008(config, m_maincpu, 8000000); // clock unknown
m_maincpu->set_addrmap(AS_PROGRAM, &itt9216_state::mem_map);
I8741(config, "upi", 6000000).set_disable(); // clock unknown
I8741A(config, "upi", 6000000).set_disable(); // clock unknown
}
// XTALs: 38.080 MHz (U7), 11.250(?) MHz (U1)

View File

@ -949,7 +949,7 @@ void pcw_state::pcw_io(address_map &map)
map(0x0f6, 0x0f6).w(FUNC(pcw_state::pcw_pointer_table_top_scan_w));
map(0x0f7, 0x0f7).w(FUNC(pcw_state::pcw_vdu_video_control_register_w));
map(0x0f8, 0x0f8).rw(FUNC(pcw_state::pcw_system_status_r), FUNC(pcw_state::pcw_system_control_w));
map(0x0fc, 0x0fd).rw(m_printer_mcu, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w));
map(0x0fc, 0x0fd).rw(m_printer_mcu, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w));
}
@ -1249,7 +1249,7 @@ void pcw_state::pcw(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &pcw_state::pcw_map);
m_maincpu->set_addrmap(AS_IO, &pcw_state::pcw_io);
I8041(config, m_printer_mcu, 11000000); // 11MHz
I8041AH(config, m_printer_mcu, 11000000); // 11MHz
m_printer_mcu->p2_in_cb().set(FUNC(pcw_state::mcu_printer_p2_r));
m_printer_mcu->p2_out_cb().set(FUNC(pcw_state::mcu_printer_p2_w));
m_printer_mcu->p1_in_cb().set(FUNC(pcw_state::mcu_printer_p1_r));

View File

@ -44,7 +44,7 @@ u32 qvt103_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, con
void qvt103_state::mem_map(address_map &map)
{
map(0x0000, 0x5fff).rom().region("maincpu", 0);
map(0x6000, 0x6001).rw("kbdmcu", FUNC(i8741_device::upi41_master_r), FUNC(i8741_device::upi41_master_w));
map(0x6000, 0x6001).rw("kbdmcu", FUNC(i8741a_device::upi41_master_r), FUNC(i8741a_device::upi41_master_w));
map(0x8000, 0x87ff).ram().share("nvram");
map(0xa000, 0xa03f).rw("vpac", FUNC(crt9007_device::read), FUNC(crt9007_device::write));
map(0xc000, 0xffff).ram(); // not entirely contiguous?
@ -91,7 +91,7 @@ void qvt103_state::qvt103(machine_config &config)
vpac.set_character_width(10);
vpac.int_callback().set("ctc", FUNC(z80ctc_device::trg3));
I8741(config, "kbdmcu", 6_MHz_XTAL);
I8741A(config, "kbdmcu", 6_MHz_XTAL);
}
/**************************************************************************************************************

View File

@ -280,7 +280,7 @@ void sdk51_state::sdk51(machine_config &config)
m_mem0->set_addr_width(14);
m_mem0->set_stride(0x2000);
I8041(config, m_upi, 6_MHz_XTAL);
I8041A(config, m_upi, 6_MHz_XTAL);
m_upi->p1_in_cb().set(FUNC(sdk51_state::upibus_r));
m_upi->p1_out_cb().set(FUNC(sdk51_state::upibus_w));
m_upi->p2_in_cb().set("upiexp", FUNC(i8243_device::p2_r));

View File

@ -730,7 +730,7 @@ void twincobr_state::fsharkbt(machine_config &config)
{
fshark(config);
I8741(config, "mcu", XTAL(28'000'000)/16).set_disable(); /* Internal program code is not dumped */
I8741A(config, "mcu", XTAL(28'000'000)/16).set_disable(); /* Internal program code is not dumped */
/* Program Map is internal to the CPU */
}

View File

@ -496,7 +496,7 @@ void vp415_state::vp415(machine_config &config)
m_datacpu->set_addrmap(AS_PROGRAM, &vp415_state::z80_program_map);
m_datacpu->set_addrmap(AS_IO, &vp415_state::z80_io_map);
I8041(config, m_datamcu, XTAL(4'000'000)); // Verified on schematic
I8041A(config, m_datamcu, XTAL(4'000'000)); // Verified on schematic
m_datamcu->p1_in_cb().set(FUNC(vp415_state::data_mcu_port1_r));
m_datamcu->p1_out_cb().set(FUNC(vp415_state::data_mcu_port1_w));
m_datamcu->p2_in_cb().set(FUNC(vp415_state::data_mcu_port2_r));
@ -515,7 +515,7 @@ void vp415_state::vp415(machine_config &config)
m_ctrlcpu->set_addrmap(AS_PROGRAM, &vp415_state::ctrl_program_map);
m_ctrlcpu->set_addrmap(AS_IO, &vp415_state::ctrl_io_map);
I8041(config, m_ctrlmcu, XTAL(4'000'000)); // Verified on schematic
I8041A(config, m_ctrlmcu, XTAL(4'000'000)); // Verified on schematic
m_ctrlmcu->p1_in_cb().set(FUNC(vp415_state::ctrl_mcu_port1_r));
m_ctrlmcu->p1_out_cb().set(FUNC(vp415_state::ctrl_mcu_port1_w));
m_ctrlmcu->p2_in_cb().set(FUNC(vp415_state::ctrl_mcu_port2_r));

View File

@ -493,7 +493,7 @@ void z100_state::z100_io(address_map &map)
map(0xec, 0xef).rw(m_epci[1], FUNC(mc2661_device::read), FUNC(mc2661_device::write));
map(0xf0, 0xf1).rw(m_pics, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
map(0xf2, 0xf3).rw(m_picm, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
map(0xf4, 0xf5).rw("kbdc", FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w));
map(0xf4, 0xf5).rw("kbdc", FUNC(i8041a_device::upi41_master_r), FUNC(i8041a_device::upi41_master_w));
// AM_RANGE (0xf6, 0xf6) expansion ROM is present (bit 0, active low)
map(0xfb, 0xfb).rw(FUNC(z100_state::tmr_status_r), FUNC(z100_state::tmr_status_w));
map(0xfc, 0xfc).w(FUNC(z100_state::memory_ctrl_w));
@ -763,7 +763,7 @@ void z100_state::z100(machine_config &config)
I8085A(config, "cpu85", 10_MHz_XTAL).set_disable();
i8041_device &kbdc(I8041(config, "kbdc", 6_MHz_XTAL));
i8041a_device &kbdc(I8041A(config, "kbdc", 6_MHz_XTAL));
kbdc.p1_in_cb().set(FUNC(z100_state::kbd_rows_r));
kbdc.p2_out_cb().set(FUNC(z100_state::kbd_col_w));
kbdc.p2_out_cb().append("keydspyint", FUNC(input_merger_device::in_w<0>)).bit(4);

View File

@ -135,7 +135,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( pcw_fdc_interrupt );
required_device<cpu_device> m_maincpu;
required_device<i8041_device> m_printer_mcu;
required_device<upi41_cpu_device> m_printer_mcu;
required_device<i8048_device> m_keyboard_mcu;
required_device<upd765a_device> m_fdc;
required_device_array<floppy_connector, 2> m_floppy;

View File

@ -233,11 +233,11 @@ private:
void drive_io_map(address_map &map);
required_device<z80_device> m_datacpu;
required_device<i8041_device> m_datamcu;
required_device<i8041a_device> m_datamcu;
required_device<ncr5385_device> m_scsi;
required_device<i8031_device> m_drivecpu;
required_device<i8031_device> m_ctrlcpu;
required_device<i8041_device> m_ctrlmcu;
required_device<i8041a_device> m_ctrlmcu;
required_device<mb88303_device> m_chargen;
required_shared_ptr<uint8_t> m_mainram;
required_shared_ptr<uint8_t> m_ctrlram;

View File

@ -229,7 +229,7 @@ void dmv_keyboard_device::device_reset()
void dmv_keyboard_device::device_add_mconfig(machine_config &config)
{
I8741(config, m_maincpu, XTAL(6'000'000));
I8741A(config, m_maincpu, XTAL(6'000'000));
m_maincpu->p1_in_cb().set(FUNC(dmv_keyboard_device::port1_r));
m_maincpu->p2_in_cb().set(FUNC(dmv_keyboard_device::port2_r));
m_maincpu->p2_out_cb().set(FUNC(dmv_keyboard_device::port2_w));

View File

@ -41,7 +41,7 @@ protected:
virtual ioport_constructor device_input_ports() const override;
private:
required_device<i8741_device> m_maincpu;
required_device<i8741a_device> m_maincpu;
required_ioport_array<16> m_keyboard;
uint8_t m_col;

View File

@ -626,13 +626,13 @@ void imds2ioc_device::device_add_mconfig(machine_config &config)
m_iocfdc->drq_wr_callback().set(m_iocdma, FUNC(i8257_device::dreq1_w));
FLOPPY_CONNECTOR(config, "iocfdc:0", imds2_floppies, "8sssd", floppy_image_device::default_floppy_formats, true);
I8041(config, m_iocpio, IOC_XTAL_Y3);
I8041A(config, m_iocpio, IOC_XTAL_Y3);
m_iocpio->p1_in_cb().set(FUNC(imds2ioc_device::pio_port_p1_r));
m_iocpio->p1_out_cb().set(FUNC(imds2ioc_device::pio_port_p1_w));
m_iocpio->p2_in_cb().set(FUNC(imds2ioc_device::pio_port_p2_r));
m_iocpio->p2_out_cb().set(FUNC(imds2ioc_device::pio_port_p2_w));
I8741(config, m_kbcpu, 3.579545_MHz_XTAL);
I8741A(config, m_kbcpu, 3.579545_MHz_XTAL);
m_kbcpu->p1_out_cb().set(FUNC(imds2ioc_device::kb_port_p1_w));
m_kbcpu->p2_in_cb().set(FUNC(imds2ioc_device::kb_port_p2_r));
m_kbcpu->t0_in_cb().set(FUNC(imds2ioc_device::kb_port_t0_r));

View File

@ -84,8 +84,8 @@ private:
required_device<pit8253_device> m_ioctimer;
required_device<i8271_device> m_iocfdc;
required_device<floppy_connector> m_flop0;
required_device<i8041_device> m_iocpio;
required_device<i8741_device> m_kbcpu;
required_device<i8041a_device> m_iocpio;
required_device<i8741a_device> m_kbcpu;
required_device<palette_device> m_palette;
required_device<gfxdecode_device> m_gfxdecode;
required_device<centronics_device> m_centronics;

View File

@ -101,7 +101,7 @@ ioport_constructor pcd_video_device::device_input_ports() const
void pcd_video_device::device_add_mconfig(machine_config &config)
{
i8741_device &mcu(I8741(config, "graphics", 16_MHz_XTAL / 2));
i8741a_device &mcu(I8741A(config, "graphics", 16_MHz_XTAL / 2)); // NEC D8741AD
mcu.p1_in_cb().set(FUNC(pcd_video_device::p1_r));
mcu.p2_out_cb().set(FUNC(pcd_video_device::p2_w));
mcu.t1_in_cb().set(FUNC(pcd_video_device::t1_r));
@ -420,7 +420,7 @@ void pcd_video_device::map(address_map &map)
map(0x00, 0x0f).w(m_crtc, FUNC(scn2674_device::write)).umask16(0x00ff);
map(0x00, 0x0f).r(m_crtc, FUNC(scn2674_device::read)).umask16(0xff00);
map(0x20, 0x20).w(FUNC(pcd_video_device::vram_sw_w));
map(0x30, 0x33).rw("graphics", FUNC(i8741_device::upi41_master_r), FUNC(i8741_device::upi41_master_w)).umask16(0x00ff);
map(0x30, 0x33).rw("graphics", FUNC(i8741a_device::upi41_master_r), FUNC(i8741a_device::upi41_master_w)).umask16(0x00ff);
}
void pcx_video_device::device_start()