mirror of
https://github.com/holub/mame
synced 2025-04-24 01:11:11 +03:00
mcs48: Further distinction of UPI variants (nw)
This commit is contained in:
parent
b9bc5cf151
commit
d95b0b95c7
@ -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));
|
||||
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
@ -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));
|
||||
|
@ -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)
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**************************************************************************************************************
|
||||
|
@ -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));
|
||||
|
@ -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 */
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user