clxvme186: Add RTC device (nw)

cms6502: Use XTAL value from schematics (nw)
This commit is contained in:
AJR 2020-04-07 21:53:31 -04:00
parent 4d4b63b915
commit 19fde67618
4 changed files with 38 additions and 9 deletions

View File

@ -7,13 +7,14 @@
TODO:
- Pulse output (256 Hz, second, minute, hour)
- Test mode
- Emulate M 3000 differences (if any meaningful ones exist)
**********************************************************************/
#include "emu.h"
#include "m3002.h"
#define VERBOSE 1
#define VERBOSE 0
#include "logmacro.h"
//**************************************************************************
@ -21,6 +22,7 @@
//**************************************************************************
DEFINE_DEVICE_TYPE(M3002, m3002_device, "m3002", "EM M 3002 Real Time Clock")
DEFINE_DEVICE_TYPE(M3000, m3000_device, "m3000", "EM M 3000 Real Time Clock")
//**************************************************************************
// DEVICE CONSTRUCTION AND INITIALIZATION
@ -32,8 +34,8 @@ ALLOW_SAVE_TYPE(m3002_device::mux_state);
// m3002_device - constructor
//-------------------------------------------------
m3002_device::m3002_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: device_t(mconfig, M3002, tag, owner, clock)
m3002_device::m3002_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
: device_t(mconfig, type, tag, owner, clock)
, device_nvram_interface(mconfig, *this)
, device_rtc_interface(mconfig, *this)
, m_irq_callback(*this)
@ -46,6 +48,21 @@ m3002_device::m3002_device(const machine_config &mconfig, const char *tag, devic
std::fill_n(&m_ram[0], 0x10, 0);
}
m3002_device::m3002_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: m3002_device(mconfig, M3002, tag, owner, clock)
{
}
//-------------------------------------------------
// m3000_device - constructor
//-------------------------------------------------
m3000_device::m3000_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: m3002_device(mconfig, M3000, tag, owner, clock)
{
}
//-------------------------------------------------
// device_resolve_objects - resolve objects that

View File

@ -46,6 +46,8 @@ public:
DECLARE_READ_LINE_MEMBER(irq_r) { return m_irq_active ? 0 : 1; }
protected:
m3002_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
// device-level overrides
virtual void device_resolve_objects() override;
virtual void device_start() override;
@ -95,7 +97,17 @@ private:
emu_timer *m_second_timer;
};
// device type declaration
// ======================> m3000_device
class m3000_device : public m3002_device
{
public:
// device type constructor
m3000_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};
// device type declarations
DECLARE_DEVICE_TYPE(M3002, m3002_device)
DECLARE_DEVICE_TYPE(M3000, m3000_device)
#endif // MAME_MACHINE_M3002_H

View File

@ -10,7 +10,7 @@
#include "cpu/i86/i186.h"
//#include "bus/vme/vme.h"
#include "machine/74259.h"
//#include "machine/m3000.h"
#include "machine/m3002.h"
#include "machine/z80scc.h"
class clxvme186_state : public driver_device
@ -65,7 +65,7 @@ void clxvme186_state::io_map(address_map &map)
{
map(0xe000, 0xe001).unmaprw(); // SASI data port (PCS0)
map(0xe080, 0xe087).rw("scc", FUNC(scc8530_device::ab_dc_r), FUNC(scc8530_device::ab_dc_w)).umask16(0x00ff); // Serial I/O ports A & B (PCS1)
//map(0xe100, 0xe100).rw("rtc", FUNC(m3000_device::read), FUNC(m3000_device::write)); // Real time clock (PCS2)
map(0xe100, 0xe100).rw("rtc", FUNC(m3000_device::read), FUNC(m3000_device::write)); // Real time clock (PCS2)
map(0xe180, 0xe181).portr("TTL"); // TTL input port (PCS3)
map(0xe180, 0xe181).w(FUNC(clxvme186_state::unknown_w));
map(0xe190, 0xe190).r(FUNC(clxvme186_state::sasi_status_r)); // SASI status port (PCS3)
@ -85,7 +85,7 @@ static INPUT_PORTS_START(clxvme186)
PORT_BIT(0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN) // Printer busy
PORT_BIT(0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN) // Printer paper empty
PORT_BIT(0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN) // /SYSFAIL
PORT_BIT(0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN) // Real time clock busy
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_READ_LINE_DEVICE_MEMBER("rtc", m3000_device, busy_r)
PORT_BIT(0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN) // Colex use only
PORT_BIT(0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN) // Colex use only
PORT_BIT(0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN) // /ACFAIL
@ -102,7 +102,7 @@ void clxvme186_state::clxvme186(machine_config &config)
SCC8530N(config, "scc", 3.6864_MHz_XTAL);
//M3000(config, "rtc", 32.768_kHz_XTAL);
M3000(config, "rtc", 32.768_kHz_XTAL);
LS259(config, "ctrllatch");
}

View File

@ -167,7 +167,7 @@ void cms_state::cms6502(machine_config &config)
VIA6522(config, m_via, 1_MHz_XTAL);
m_via->irq_handler().set("irqs", FUNC(input_merger_device::in_w<0>));
M3002(config, "rtc", 32768);
M3002(config, "rtc", 32.768_kHz_XTAL);
/* 7 Slot Backplane */
ACORN_BUS(config, m_bus, 0);