mirror of
https://github.com/holub/mame
synced 2025-05-04 21:43:05 +03:00
te7750: Default clock; update docs; add TE7752 type (nw)
This commit is contained in:
parent
0910676c40
commit
911376bd24
@ -26,13 +26,14 @@
|
||||
RD becomes a Motorola-style R/W control signal (R = 1, W = 0),
|
||||
and WR becomes an active-low "M Enable" input.
|
||||
|
||||
TE7750, TE7751, TE7753 and TE7754 appear to be functionally
|
||||
almost identical, though only the last two are pin-compatible.
|
||||
TE7750, TE7751, TE7752, TE7753 and TE7754 appear to be nearly
|
||||
identical functionally, though they have three different pinouts
|
||||
(TE7751/TE7752 appear to be pin-compatible, as are TE7753/TE7754).
|
||||
One known difference is that TE7753 resets all output latches to
|
||||
"H" and TE7754 resets them to "L" (the latches can be written in
|
||||
soft mode before the ports are set for output). TE7750 and TE7751
|
||||
probably do either one or the other, but available documentation
|
||||
is incomplete.
|
||||
soft mode before the ports are set for output). TE7750, TE7751 and
|
||||
TE7752 should do either one or the other, but available
|
||||
documentation for these parts is incomplete.
|
||||
|
||||
***********************************************************************
|
||||
|
||||
@ -54,6 +55,17 @@
|
||||
|
||||
* CR1-CR3 are only writable in soft mode.
|
||||
|
||||
IOS0 IOS1 IOS2 P1 P2 P3 P4 P5 P6 P7 P8 P9
|
||||
---- ---- ---- -- -- -- -- -- -- -- -- --
|
||||
0 0 0 CR1 CR1 CR1 CR2 CR2 CR2 CR3 CR0 CR3
|
||||
0 0 1 I O O O O O O CR0 O
|
||||
0 1 0 I I O O O O O CR0 O
|
||||
0 1 1 I I I O O O O CR0 O
|
||||
1 0 0 I I I I O O O CR0 O
|
||||
1 0 1 I I I I I O O CR0 O
|
||||
1 1 0 I I I I I I O CR0 O
|
||||
1 1 1 I I I I I I I CR0 O
|
||||
|
||||
***********************************************************************
|
||||
|
||||
Table of pin assignments
|
||||
@ -165,6 +177,7 @@
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(TE7750, te7750_device, "te7750", "TE7750 Super I/O Expander")
|
||||
DEFINE_DEVICE_TYPE(TE7752, te7752_device, "te7752", "TE7752 Super I/O Expander")
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE DEFINITION
|
||||
@ -174,15 +187,29 @@ DEFINE_DEVICE_TYPE(TE7750, te7750_device, "te7750", "TE7750 Super I/O Expander")
|
||||
// te7750_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
te7750_device::te7750_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: device_t(mconfig, TE7750, tag, owner, clock),
|
||||
m_input_cb{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}},
|
||||
m_output_cb{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}},
|
||||
m_ios_cb(*this)
|
||||
te7750_device::te7750_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
|
||||
: device_t(mconfig, type, tag, owner, clock)
|
||||
, m_input_cb{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}}
|
||||
, m_output_cb{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}}
|
||||
, m_ios_cb(*this)
|
||||
{
|
||||
std::fill(std::begin(m_data_dir), std::end(m_data_dir), 0xff);
|
||||
}
|
||||
|
||||
te7750_device::te7750_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: te7750_device(mconfig, TE7750, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// te7752_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
te7752_device::te7752_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: te7750_device(mconfig, TE7752, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
@ -22,7 +22,7 @@ class te7750_device : public device_t
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
te7750_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||
te7750_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
|
||||
|
||||
// configuration
|
||||
auto in_port1_cb() { return m_input_cb[0].bind(); }
|
||||
@ -50,6 +50,8 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(write);
|
||||
|
||||
protected:
|
||||
te7750_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
@ -71,7 +73,16 @@ private:
|
||||
u8 m_data_dir[9];
|
||||
};
|
||||
|
||||
// device type definition
|
||||
// ======================> te7752_device
|
||||
|
||||
class te7752_device : public te7750_device
|
||||
{
|
||||
public:
|
||||
te7752_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
|
||||
};
|
||||
|
||||
// device type definitions
|
||||
DECLARE_DEVICE_TYPE(TE7750, te7750_device)
|
||||
DECLARE_DEVICE_TYPE(TE7752, te7752_device)
|
||||
|
||||
#endif // MAME_MACHINE_TE7750_H
|
||||
|
@ -119,10 +119,10 @@ MACHINE_CONFIG_START(bingowav_state::bingowav)
|
||||
tmp68301_device &tmp68301(TMP68301(config, "maintmp", 0)); // wrong
|
||||
tmp68301.set_cputag(m_maincpu);
|
||||
|
||||
te7750_device &mainioh(TE7750(config, "mainioh", 0));
|
||||
te7750_device &mainioh(TE7750(config, "mainioh"));
|
||||
mainioh.ios_cb().set_constant(5);
|
||||
|
||||
te7750_device &mainiol(TE7750(config, "mainiol", 0));
|
||||
te7750_device &mainiol(TE7750(config, "mainiol"));
|
||||
mainiol.ios_cb().set_constant(4);
|
||||
|
||||
MCFG_DEVICE_ADD("audiocpu", Z80, 4000000)
|
||||
|
@ -205,7 +205,7 @@ void capr1_state::cspin2(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &capr1_state::cspin2_map);
|
||||
//m_maincpu->set_periodic_int(FUNC(capr1_state::nmi_line_pulse), attotime::from_hz(20));
|
||||
|
||||
te7750_device &te7750(TE7750(config, "te7750", 0)); // guess
|
||||
te7750_device &te7750(TE7750(config, "te7750")); // guess
|
||||
te7750.ios_cb().set_constant(7);
|
||||
te7750.in_port1_cb().set_ioport("IN1");
|
||||
te7750.in_port2_cb().set_ioport("IN2");
|
||||
|
@ -168,7 +168,7 @@ void cpzodiac_state::cpzodiac(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &cpzodiac_state::main_io_map);
|
||||
m_maincpu->set_daisy_config(daisy_chain);
|
||||
|
||||
te7750_device &io(TE7750(config, "io", 0));
|
||||
te7750_device &io(TE7750(config, "io"));
|
||||
io.ios_cb().set_constant(4);
|
||||
io.in_port1_cb().set_ioport("IN1");
|
||||
io.in_port2_cb().set_ioport("IN2");
|
||||
|
@ -127,7 +127,7 @@ MACHINE_CONFIG_START(gokidetor_state::gokidetor)
|
||||
// IRQ from ???
|
||||
// NMI related to E002 input and TE7750 port 7
|
||||
|
||||
te7750_device &te7750(TE7750(config, "te7750", 0));
|
||||
te7750_device &te7750(TE7750(config, "te7750"));
|
||||
te7750.ios_cb().set_constant(3);
|
||||
te7750.in_port1_cb().set_ioport("IN1");
|
||||
te7750.in_port2_cb().set_ioport("IN2");
|
||||
|
@ -2928,7 +2928,7 @@ void taitof2_state::taito_f2_te7750(machine_config &config)
|
||||
{
|
||||
taito_f2(config);
|
||||
|
||||
te7750_device &te7750(TE7750(config, "te7750", 0));
|
||||
te7750_device &te7750(TE7750(config, "te7750"));
|
||||
te7750.in_port1_cb().set_ioport("DSWA");
|
||||
te7750.in_port2_cb().set_ioport("DSWB");
|
||||
te7750.in_port3_cb().set_ioport("IN2");
|
||||
@ -3372,7 +3372,7 @@ MACHINE_CONFIG_START(taitof2_state::ninjak)
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(ninjak_map)
|
||||
|
||||
te7750_device &te7750(TE7750(config, "te7750", 0));
|
||||
te7750_device &te7750(TE7750(config, "te7750"));
|
||||
te7750.in_port1_cb().set_ioport("DSWA");
|
||||
te7750.in_port2_cb().set_ioport("DSWB");
|
||||
te7750.in_port3_cb().set_ioport("IN0");
|
||||
|
Loading…
Reference in New Issue
Block a user