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

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

Moderator: Shaos

begoon
Maniac
Posts: 231
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: 231
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: 231
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: 231
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: 231
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: 231
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".
User avatar
Shaos
Admin
Posts: 25057
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Кстати да - я было даже хотел сам добавить тонкое управление ВГ75 в свою версию rk86.js - мне даже Alikberov свои хаки давал, но как-то руки не дошли...

Может ещё и наш видепроигрыватель научишь у себя работать? :roll:
begoon
Maniac
Posts: 231
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

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

Post by begoon »

А что такое «ваш видео проигрыватель»? Где почитать?
User avatar
Shaos
Admin
Posts: 25057
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

begoon wrote: 09 May 2026 22:39 А что такое «ваш видео проигрыватель»? Где почитать?
Да вон же - двумя темами выше :)
http://www.nedopc.org/forum/viewtopic.php?t=22417
Там видео рисуется обрезанными до 5 строк символами знакогенератора плюс 1-битный звук
Сами бинари образов для 8-мегабайтных ромдисков можно найти в "секретах" ;)
begoon
Maniac
Posts: 231
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.
begoon
Maniac
Posts: 231
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

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

Post by begoon »

Добавил Ёлку
tree2025.rk-1.png
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 25057
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Это круто :)

А можно переключаться между Самоцветом, Толкалиным и Апогеевским цветом?
begoon
Maniac
Posts: 231
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

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

Post by begoon »

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

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

Post by begoon »

Добавил цветной Питон
piton.rkr-1.png
piton.rkr-2.png
piton.rkr-3.png
You do not have the required permissions to view the files attached to this post.
begoon
Maniac
Posts: 231
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

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

Post by begoon »

Добавил Boulder Dash
boulder.rkr-1.png
boulder.rkr-2.png
boulder.rkr-3.png
You do not have the required permissions to view the files attached to this post.