mirror of
https://github.com/holub/mame
synced 2025-05-25 15:25:33 +03:00
- (re)implement pm reporting - If a bit is not modified, do not throw away the whole nibble
This commit is contained in:
parent
e599aef4d9
commit
9991699ed3
@ -72,10 +72,14 @@ READ8_DEVICE_HANDLER( msm6242_r )
|
||||
case MSM6242_REG_H10:
|
||||
{
|
||||
int hour = systime->local_time.hour;
|
||||
int pm = 0;
|
||||
|
||||
/* check for 12/24 hour mode */
|
||||
if ((msm6242->reg[2] & 0x04) == 0) /* 12 hour mode? */
|
||||
{
|
||||
if (hour >= 12)
|
||||
pm = 1;
|
||||
|
||||
hour %= 12;
|
||||
|
||||
if ( hour == 0 )
|
||||
@ -85,7 +89,7 @@ READ8_DEVICE_HANDLER( msm6242_r )
|
||||
if ( offset == MSM6242_REG_H1 )
|
||||
return hour % 10;
|
||||
|
||||
return hour / 10;
|
||||
return (hour / 10) | (pm <<2);
|
||||
}
|
||||
|
||||
case MSM6242_REG_D1: return systime->local_time.mday % 10;
|
||||
@ -113,7 +117,7 @@ WRITE8_DEVICE_HANDLER( msm6242_w )
|
||||
{
|
||||
case MSM6242_REG_CD:
|
||||
{
|
||||
msm6242->reg[0] = data;
|
||||
msm6242->reg[0] = data & 0x0f;
|
||||
|
||||
if (data & 1) /* was Hold set? */
|
||||
{
|
||||
@ -123,19 +127,21 @@ WRITE8_DEVICE_HANDLER( msm6242_w )
|
||||
return;
|
||||
}
|
||||
|
||||
case MSM6242_REG_CE: msm6242->reg[1] = data; return;
|
||||
case MSM6242_REG_CE: msm6242->reg[1] = data & 0x0f; return;
|
||||
|
||||
case MSM6242_REG_CF:
|
||||
{
|
||||
/* the 12/24 mode bit can only be changed while REST is 1 */
|
||||
if ((data ^ msm6242->reg[2]) & 0x04)
|
||||
{
|
||||
msm6242->reg[2] = (msm6242->reg[2] & 0x04) | (data & ~0x04);
|
||||
|
||||
if (msm6242->reg[2] & 1)
|
||||
msm6242->reg[2] = data;
|
||||
msm6242->reg[2] = (msm6242->reg[2] & ~0x04) | (data & 0x04);
|
||||
}
|
||||
else
|
||||
{
|
||||
msm6242->reg[2] = data;
|
||||
msm6242->reg[2] = data & 0x0f;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user