mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
pit8253: Reading back the count while in the middle of a 16-bit write returns a xor'ed version of the value written. Fixes apricot error 29.
This commit is contained in:
parent
9d7031d8b5
commit
f0faed6fc6
@ -724,7 +724,7 @@ void pit8253_device::update(pit8253_timer *timer)
|
|||||||
attotime elapsed_time = now - timer->last_updated;
|
attotime elapsed_time = now - timer->last_updated;
|
||||||
int64_t elapsed_cycles = elapsed_time.as_double() * timer->clockin;
|
int64_t elapsed_cycles = elapsed_time.as_double() * timer->clockin;
|
||||||
|
|
||||||
LOG1(("update(): timer %d, %d elapsed_cycles\n", timer->index, elapsed_cycles));
|
LOG2(("update(): timer %d, %d elapsed_cycles\n", timer->index, elapsed_cycles));
|
||||||
|
|
||||||
if (timer->clockin)
|
if (timer->clockin)
|
||||||
timer->last_updated += elapsed_cycles * attotime::from_hz(timer->clockin);
|
timer->last_updated += elapsed_cycles * attotime::from_hz(timer->clockin);
|
||||||
@ -809,7 +809,15 @@ READ8_MEMBER( pit8253_device::read )
|
|||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
/* read bits 0-7 first, then 8-15 */
|
/* read bits 0-7 first, then 8-15 */
|
||||||
data = (value >> (timer->rmsb ? 8 : 0)) & 0xff;
|
|
||||||
|
// reading back the current count while in the middle of a
|
||||||
|
// 16-bit write returns a xor'ed version of the value written
|
||||||
|
// (apricot diagnostic timer test tests this)
|
||||||
|
if (timer->wmsb)
|
||||||
|
data = ~timer->lowcount;
|
||||||
|
else
|
||||||
|
data = value >> (timer->rmsb ? 8 : 0);
|
||||||
|
|
||||||
timer->rmsb = 1 - timer->rmsb;
|
timer->rmsb = 1 - timer->rmsb;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
ACT Apricot PC/Xi
|
ACT Apricot PC/Xi
|
||||||
|
|
||||||
- Error 29 (timer failed)
|
- Error 31 (diagnostic keyboard failure)
|
||||||
- Dump of the keyboard MCU ROM needed (can be dumped using test mode)
|
- Dump of the keyboard MCU ROM needed (can be dumped using test mode)
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
@ -311,7 +311,7 @@ MC6845_UPDATE_ROW( apricot_state::crtc_update_row )
|
|||||||
for (int x = 0; x <= 10; x++)
|
for (int x = 0; x <= 10; x++)
|
||||||
{
|
{
|
||||||
int color = fill ? 1 : BIT(data, x);
|
int color = fill ? 1 : BIT(data, x);
|
||||||
if (BIT(code, 15)) color = !color; // reverse?
|
color ^= BIT(code, 15); // reverse?
|
||||||
bitmap.pix32(y, x + i*10) = pen[color ? 1 + BIT(code, 14) : 0];
|
bitmap.pix32(y, x + i*10) = pen[color ? 1 + BIT(code, 14) : 0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user