From 611759686de4dae4064459bb7c8a2839f875686b Mon Sep 17 00:00:00 2001 From: Couriersud Date: Sat, 19 Sep 2009 00:37:00 +0000 Subject: [PATCH] tms5110 now exhibits Rom Clock signal --- src/emu/sound/tms5110.c | 31 ++++++++++++++++++++++++++++++- src/emu/sound/tms5110.h | 2 ++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/emu/sound/tms5110.c b/src/emu/sound/tms5110.c index 8cedf281804..63c3e53aacc 100644 --- a/src/emu/sound/tms5110.c +++ b/src/emu/sound/tms5110.c @@ -173,6 +173,9 @@ struct _tms5110_state const UINT8 *table; sound_stream *stream; INT32 speech_rom_bitnum; + + emu_timer *romclk_timer; + UINT8 romclk_state; }; @@ -1116,7 +1119,33 @@ READ8_DEVICE_HANDLER( m58817_status_r ) return (tms->talk_status << 0); /*CTL1 = still talking ? */ } -WRITE8_DEVICE_HANDLER( tms5110_ctl_w ); +/****************************************************************************** + + tms5110_romclk_r -- read status of romclk + +******************************************************************************/ + +static TIMER_CALLBACK( romclk_timer_cb ) +{ + tms5110_state *tms = get_safe_token(ptr); + tms->romclk_state = !tms->romclk_state; +} + +READ8_DEVICE_HANDLER( tms5110_romclk_r ) +{ + tms5110_state *tms = get_safe_token(device); + + /* bring up to date first */ + stream_update(tms->stream); + + /* create and start timer if necessary */ + if (tms->romclk_timer == NULL) + { + tms->romclk_timer = timer_alloc(device->machine, romclk_timer_cb, (void *) device); + timer_adjust_periodic(tms->romclk_timer, ATTOTIME_IN_HZ(device->clock / 40), 0, ATTOTIME_IN_HZ(device->clock / 40)); + } + return tms->romclk_state; +} diff --git a/src/emu/sound/tms5110.h b/src/emu/sound/tms5110.h index 89199c302d3..ee93c0e0e27 100644 --- a/src/emu/sound/tms5110.h +++ b/src/emu/sound/tms5110.h @@ -29,6 +29,8 @@ WRITE8_DEVICE_HANDLER( tms5110_ctl_w ); READ8_DEVICE_HANDLER( tms5110_ctl_r ); WRITE8_DEVICE_HANDLER( tms5110_pdc_w ); +READ8_DEVICE_HANDLER( tms5110_romclk_r ); + /* m58817 status line */ READ8_DEVICE_HANDLER( m58817_status_r );