From 23fbf4a904439caafb7c19fbea0feadb0c6c2325 Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Wed, 15 Aug 2001 23:19:45 +0000 Subject: [PATCH] Don't call Dosvm functions when Dosvm isn't initialized. --- msdos/ioports.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/msdos/ioports.c b/msdos/ioports.c index 8047b8a29e4..759dfef6be2 100644 --- a/msdos/ioports.c +++ b/msdos/ioports.c @@ -98,7 +98,8 @@ static void set_timer_maxval(unsigned timer, unsigned maxval) { switch (timer) { case 0: /* System timer counter divisor */ - Dosvm.SetTimer(maxval); + if (Dosvm.Current()) + Dosvm.SetTimer(maxval); break; case 1: /* RAM refresh */ FIXME("RAM refresh counter handling not implemented !\n"); @@ -307,7 +308,10 @@ DWORD IO_inport( int port, int size ) if (chan == 0) /* System timer counter divisor */ { /* FIXME: Dosvm.GetTimer() returns quite rigid values */ - tempval = dummy_ctr + (WORD)Dosvm.GetTimer(); + if (Dosvm.Current()) + tempval = dummy_ctr + (WORD)Dosvm.GetTimer(); + else + tempval = dummy_ctr; } else { @@ -415,7 +419,8 @@ void IO_outport( int port, int size, DWORD value ) switch (port) { case 0x20: - Dosvm.OutPIC( port, (BYTE)value ); + if (Dosvm.Current()) + Dosvm.OutPIC( port, (BYTE)value ); break; case 0x40: case 0x41: @@ -472,7 +477,10 @@ void IO_outport( int port, int size, DWORD value ) tmr_8253[chan].latched = TRUE; dummy_ctr -= 1 + (int)(10.0 * rand() / (RAND_MAX + 1.0)); if (chan == 0) /* System timer divisor */ - tmr_8253[chan].latch = dummy_ctr + (WORD)Dosvm.GetTimer(); + if (Dosvm.Current()) + tmr_8253[chan].latch = dummy_ctr + (WORD)Dosvm.GetTimer(); + else + tmr_8253[chan].latch = dummy_ctr; else { /* FIXME: intelligent hardware timer emulation needed */