Previous 199869 Revisions Next

r29533 Friday 11th April, 2014 at 08:54:54 UTC by smf
Stop the internal timer if DTR is high and there is no character being received as neither the transmit or receive will do anything anyway. The default is for the internal divider to be disabled so if the chip wasn't initialised then the timer would be running at the full rate of the xtal. (nw)
[src/emu/machine]mos6551.c

trunk/src/emu/machine/mos6551.c
r29532r29533
240240      m_tx_internal_clock = true;
241241
242242      m_divide = 16;
243      scale = (double) 1 / scale;
243
244      if (!m_dtr || m_rx_state != STATE_START)
245      {
246         scale = (double) 1 / scale;
247      }
248      else
249      {
250         scale = 0;
251      }
244252   }
245253   else
246254   {
r29532r29533
355363      m_tx_output = OUTPUT_MARK;
356364      output_txd(1);
357365   }
366
367   update_divider();
358368}
359369
360370READ8_MEMBER( mos6551_device::read )
r29532r29533
629639               }
630640
631641               m_rx_state = STATE_START;
642
643               if (m_dtr)
644               {
645                  update_divider();
646               }
632647            }
633648            break;
634649         }

Previous 199869 Revisions Next


© 1997-2024 The MAME Team