-
Notifications
You must be signed in to change notification settings - Fork 4
Timing ru
Функционирование эмулятора основано на периодическом вызове метода CMotherboard::SystemFrame(), который управляет выполнением одного фрейма. За секунду метод должен вызываться 25 раз -- тогда мы получим скорость реальной машины 1:1.
Каждый фрейм равен 1/25 секунды = 40 мс = 20000 тиков, 1 тик = 2 мкс. За каждый фрейм происходит:
- 2 сигнала EVNT, в 0-й и 10000-й тик фрейма
- 120000 тиков ЦП - 6 раз за тик (БК-0010, 12МГц / 4 = 3 МГц, 3.3(3) мкс), либо
- 160000 тиков ЦП - 8 раз за тик (БК-0011, 12МГц / 3 = 4 МГц, 2.5 мкс)
- программируемый таймер - на каждый 128-й тик процессора; 42.6(6) мкс либо 32 мкс
- 2 тика IRQ2 50 Гц, в 0-й и 10000-й тик фрейма
- 625 тиков FDD - каждый 32-й тик (300 RPM = 5 оборотов в секунду)
- 68571 тиков AY-3-891x: 1.714275 МГц (12МГц / 7 = 1.714 МГц, 5.83(3) мкс)
Примерное время выполнения команд БК-0010 приведено в статье Зальцмана, №1 за 1995-й год: http://bk0010.narod.ru/docs/BK_Magazine/bk-1995.1.djvu -- по-видимому, эти данные получены экспериментально.
Тайминг из ОСТ 11 348.918-83 приведен здесь: http://bk0010.org/forum/?id=3012&page= Те же данные также здесь: http://vak.ru/doku.php/proj/bk/1801vm-series
БК использует бытовой телевизор в качестве монитора, поэтому согласно стандарту SECAM:
- Длительность телевизионной строки - 64 мкс
- Длителность полукадра - 20 мс
- Количество строк в полукадре - 312.5
Верхнее поле над первой видимой строкой - 40 строк.
Вращается со скоростью 300 оборотов в минуту = 5 оборотов в секунду.
Скорость обмена данными -- 250 килобит в секунду = 250000 бит в секунду = 31250 байт в секунду = 6250 байт за оборот = 3125 слов за оборот. За фрейм (1/25 секунды) -- 1250 байт = 625 слов.
Гибкий диск БК имеет 80 дорожек на 2-х сторонах. Каждая дорожка имеет 10 секторов по 512 байт каждый. Итого: 80 x 2 x 10 x 512 = 819200 байт = 800 килобайт.