From abfaf54b0a71c59a6fd19eab702d9cb2e508ec39 Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Wed, 24 Jun 2009 16:56:50 +0000 Subject: [PATCH] 02974: dmdtouch: Freeze/Hang of process --- src/mame/machine/archimds.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mame/machine/archimds.c b/src/mame/machine/archimds.c index e1162731e66..7d5577418e9 100644 --- a/src/mame/machine/archimds.c +++ b/src/mame/machine/archimds.c @@ -113,11 +113,14 @@ static TIMER_CALLBACK( a310_audio_tick ) static void a310_set_timer(int tmr) { - double freq = 2000000.0 / (double)ioc_timercnt[tmr]; + double freq; -// logerror("IOC: starting timer %d, %d ticks, freq %f Hz\n", tmr, ioc_timercnt[tmr], freq); - - timer_adjust_oneshot(timer[tmr], ATTOTIME_IN_HZ(freq), tmr); + if((double)ioc_timercnt[tmr] != 0) // FIXME: dmdtouch does a divide by zero? + { + freq = 2000000.0 / (double)ioc_timercnt[tmr]; + // logerror("IOC: starting timer %d, %d ticks, freq %f Hz\n", tmr, ioc_timercnt[tmr], freq); + timer_adjust_oneshot(timer[tmr], ATTOTIME_IN_HZ(freq), tmr); + } } // param @@ -366,6 +369,7 @@ WRITE32_HANDLER(ioc_w) #ifdef MESS const device_config *fdc = (const device_config *)devtag_get_device(space->machine, "wd1772"); #endif + if (offset >= 0x80000 && offset < 0xc0000) { // logerror("IOC: W %02x @ reg %s (PC=%x)\n", data&0xff, ioc_regnames[offset&0x1f], cpu_get_pc( space->cpu ));