Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

begoon
Maniac
Posts: 219
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by begoon »

Новый селектор файлов для запуска.
selector.png
You do not have the required permissions to view the files attached to this post.
begoon
Maniac
Posts: 219
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by begoon »

Добавил Сквош
squash.rkr-2.png
Благодаря этой игры выловил аж 3 (!) фундаментальных бага в эмуляторе, которые были в нем все эти годы.

VG75: специальные управляющие символы 0xF0..0xFF (End of Row / End of Frame)

В микросхеме i8275 (К580ВГ75) старший hex-блок 0xF0..0xFF
зарезервирован под специальные управляющие коды (Special Control
Characters). Эти байты не рисуются как глифы — VG75 их
интерпретирует как команды управления выводом:

- 0xF0..0xF7 — End of Row: оборвать текущую строку. VG75 не рисует
ни байт-команду, ни оставшиеся столбцы строки. Подварианты
отличаются атрибутами и наличием Stop-DMA.
- 0xF8..0xFF — End of Frame / End of Screen: оборвать текущую
строку и все последующие. Применяется для динамической
обрезки кадра.

В РК86 это широко используется для аккуратного обрезания строки
до меньшей ширины, чем запрограммированные 78 столбцов VG75.

IK57: повторное программирование канала через flip-flop первого/второго байта

В микросхеме i8257 (КР580ВТ57, она же ИК57) каждый из адресных
регистров каналов 16-битный, но обращение к нему идёт через 8-битные
порты. Внутренний flip-flop (F/F) определяет, в какую половину
попадёт следующая запись — в младшую или старшую. F/F сбрасывается
командой master-clear (E008 = 0x80) и переключается при каждой
записи в адресный регистр канала.

Старая реализация распознавала только начальную последовательность
инициализации:
E008,80 → E004,lo → E004,hi → E005,lo → E005,hi → E008,A4.

Любая последующая прямая запись в E004/E005 без повторного
master-clear считалась случайной и просто складывалась в RAM, не
оказывая влияния на DMA. Программы, которые после инициализации
перепрограммируют адрес видеопамяти на лету, не получали ожидаемого
эффекта: DMA продолжал читать кадр со старого адреса, и игровое
поле рисовалось в одну область памяти, а на экран отображалась
другая.

VG75: корректный сигнал VRTC в регистре состояния 0xC001

Чтение регистра состояния VG75 по адресу 0xC001 всегда возвращало
константу 0x20 — то есть бит 5 (VRTC, vertical retrace) был
постоянно поднят. Программы, использующие классическую идиому
ожидания вертикальной синхронизации (LXI H,C001 / MOV A,M / ANI 20 /
JZ), выходили из цикла ожидания мгновенно: кадровая синхронизация
полностью игнорировалась, и эмулируемая программа выполняла своё
тело кадра на максимальной скорости процессора, без покадровой
паузы.

Симптом, на котором это поймалось: игра Squash от Дмитрия Иванова
(2024). Полный цикл «splash → запуск игры → потеря 3 жизней → game
over → splash» проходил за ~35 мс CPU-времени — ниже порога
восприятия, экран не успевал ни обновиться, ни прокачать DMA, и
визуально это выглядело как «пробел не работает».
You do not have the required permissions to view the files attached to this post.
Last edited by begoon on 09 May 2026 10:15, edited 2 times in total.
begoon
Maniac
Posts: 219
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by begoon »

Добавил Dizzy
dizzy75.rkr-1.png
Игруха реально шедевр.

Кому лень рубиться самому - вот стрим, где человек реально прошел всю игру.
You do not have the required permissions to view the files attached to this post.
Last edited by begoon on 09 May 2026 10:16, edited 1 time in total.
begoon
Maniac
Posts: 219
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by begoon »

Добавил Trex
trex.rk-3.png
You do not have the required permissions to view the files attached to this post.
begoon
Maniac
Posts: 219
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by begoon »

Добавил Weird
weird.rkr-1.png
You do not have the required permissions to view the files attached to this post.
begoon
Maniac
Posts: 219
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by begoon »

Добавил drag-and-drop в браузер эмулятора, чтоб быстрее запускать.

Как альтернатива "bunx rk86 --online squash.rkr".