Hooked up RTC. There are several issues. The day and month register are swapped. Even though it allows you to select between 12/24H the RTC is always saved in 24H mode and it always defaults to display in 12H mode. [smf]

This commit is contained in:
smf- 2014-01-26 22:23:15 +00:00
parent e5a80b0bdb
commit 50b90ce6ae

View File

@ -14,6 +14,7 @@
#include "machine/6522via.h" #include "machine/6522via.h"
#include "machine/bankdev.h" #include "machine/bankdev.h"
#include "machine/mos6551.h" #include "machine/mos6551.h"
#include "machine/msm58321.h"
#include "machine/ram.h" #include "machine/ram.h"
#include "machine/serial.h" #include "machine/serial.h"
#include "sound/speaker.h" #include "sound/speaker.h"
@ -27,6 +28,7 @@ public:
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_via0(*this, "via0"), m_via0(*this, "via0"),
m_rtc(*this, "rtc"),
m_ram(*this,"ram"), m_ram(*this,"ram"),
m_bank1(*this, "bank1"), m_bank1(*this, "bank1"),
m_bank2(*this, "bank2"), m_bank2(*this, "bank2"),
@ -80,6 +82,8 @@ public:
save_item(NAME(m_key_poll)); save_item(NAME(m_key_poll));
save_item(NAME(m_key_column)); save_item(NAME(m_key_column));
save_item(NAME(m_key_shift)); save_item(NAME(m_key_shift));
m_rtc->cs1_w(1);
} }
void palette_init() void palette_init()
@ -424,7 +428,8 @@ public:
WRITE8_MEMBER(via0_pb_w) WRITE8_MEMBER(via0_pb_w)
{ {
write_key_poll(data & 1); write_key_poll((data >> 0) & 1);
m_rtc->cs2_w((data >> 1) & 1);
} }
WRITE_LINE_MEMBER(write_key_poll) WRITE_LINE_MEMBER(write_key_poll)
@ -463,6 +468,17 @@ public:
} }
} }
WRITE8_MEMBER(via1_pa_w)
{
m_rtc->d0_w((data>>0) & 1);
m_rtc->d1_w((data>>1) & 1);
m_rtc->d2_w((data>>2) & 1);
m_rtc->d3_w((data>>3) & 1);
m_rtc->read_w((data>>4) & 1);
m_rtc->write_w((data>>5) & 1);
m_rtc->address_write_w((data>>6) & 1);
}
ram_device *ram() ram_device *ram()
{ {
return m_ram; return m_ram;
@ -471,6 +487,7 @@ public:
private: private:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<via6522_device> m_via0; required_device<via6522_device> m_via0;
required_device<msm58321_device> m_rtc;
required_device<ram_device> m_ram; required_device<ram_device> m_ram;
required_device<address_map_bank_device> m_bank1; required_device<address_map_bank_device> m_bank1;
required_device<address_map_bank_device> m_bank2; required_device<address_map_bank_device> m_bank2;
@ -671,6 +688,7 @@ static MACHINE_CONFIG_START(clcd, clcd_state)
MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m65c02_device, irq_line)) MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m65c02_device, irq_line))
MCFG_DEVICE_ADD("via1", VIA6522, 0) MCFG_DEVICE_ADD("via1", VIA6522, 0)
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(clcd_state, via1_pa_w))
MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m65c02_device, nmi_line)) MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m65c02_device, nmi_line))
MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE("speaker", speaker_sound_device, level_w)) MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE("speaker", speaker_sound_device, level_w))
@ -710,6 +728,15 @@ static MACHINE_CONFIG_START(clcd, clcd_state)
MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
MCFG_ADDRESS_MAP_BANK_STRIDE(0x400) MCFG_ADDRESS_MAP_BANK_STRIDE(0x400)
MCFG_DEVICE_ADD("rtc", MSM58321, XTAL_32_768kHz)
MCFG_MSM58321_D0_HANDLER(DEVWRITELINE("via1", via6522_device, write_pa0))
MCFG_MSM58321_D1_HANDLER(DEVWRITELINE("via1", via6522_device, write_pa1))
MCFG_MSM58321_D2_HANDLER(DEVWRITELINE("via1", via6522_device, write_pa2))
MCFG_MSM58321_D3_HANDLER(DEVWRITELINE("via1", via6522_device, write_pa3))
MCFG_MSM58321_BUSY_HANDLER(DEVWRITELINE("via1", via6522_device, write_pa7))
MCFG_MSM58321_YEAR0(1984)
MCFG_MSM58321_DEFAULT_24H(true)
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", LCD) MCFG_SCREEN_ADD("screen", LCD)
MCFG_SCREEN_REFRESH_RATE(80) MCFG_SCREEN_REFRESH_RATE(80)