rk86
v2.0.31
Published
Эмулятор Радио-86РК (Intel 8080) для терминала
Maintainers
Readme
rk86
Эмулятор советского домашнего компьютера Радио-86РК (Intel 8080) для терминала.
Запуск
bunx rk86 # встроенный монитор mon32
bunx rk86 CHESS.GAM # загрузить и запустить файл из текущей директории
bunx rk86 -p CHESS.GAM # загрузить без запуска
bunx rk86 -g 0x100 prog.bin # запуск с адреса 0x100
bunx rk86 -m mon16.bin # другой монитор
bunx rk86 prog.asm # собрать и запустить .asm (i8080)
bunx rk86 --online CHESS.GAM # открыть файл в онлайн-эмуляторе rk86.ruОпции
-v версия
-h справка
-m <файл> монитор (по умолчанию: встроенный mon32.bin)
-p загрузить файл без запуска
-g <адрес> адрес запуска (несовместим с -p)
--exit-halt выход при выполнении HLT
--exit-address [адрес] выход при переходе на адрес (по умолчанию: 0xFFFE)
--headless без отображения экрана (для автотестов)
--timeout <сек> выход по таймауту
--memory <файл> сохранить память в файл при выходе
--memory-from <адрес> начало области дампа памяти (по умолчанию: 0x0000)
--memory-to <адрес> конец области дампа памяти включительно (по умолчанию: 0xFFFF)
--screen <файл> сохранить экран 78x30 как текст при выходе
--input <seq> инъекция клавиш (через запятую): KeyA,Digit1,Enter,...
--color <0|1|2|3> режим цвета: 0=ч/б (по умолчанию), 1=Толкалин,
2=Акименко, 3=Апогей
--online открыть в онлайн-эмуляторе rk86.ruУправление
- Клавиатура работает через stdin (raw mode)
Ctrl+C— выход
Онлайн-режим (--online)
Загружает локальный файл на одноразовый relay-сервер
(rk86.ea.deno.net) и открывает
rk86.ru в браузере с ?run=<URL>. Файл живёт на сервере
60 секунд (TTL в Deno KV), затем удаляется автоматически. Удобно когда нужно
быстро поделиться .rk/.gam или показать программу без публикации в
каталог.
bunx rk86 --online CHESS.GAM
# https://rk86.ru/index.html?run=https%3A%2F%2Frk86.ea.deno.net%2Ffile%2FCHESS.GAM%3F<id>Безголовый режим (headless) и автотесты
Флаг --headless отключает вывод на терминал и настройку stdin — удобно для
автоматизированных e2e-проверок. Обычно комбинируется с --input, --timeout,
--exit-halt и --screen/--memory для анализа результата.
Формат --input: через запятую указываются WebKit-коды клавиш
(KeyA..KeyZ, Digit0..Digit9, Enter, Space, Comma, Period,
Backspace, ArrowLeft, F1..F10, и т.д.). Инъекция начинается после того,
как эмулятор инициализируется (как при подгрузке файла — с небольшой задержкой),
клавиши нажимаются по одной с минимальной паузой.
Формат файла --screen: 30 строк по 78 символов, разделитель \r\n.
Байты \0, \t, \n, \r заменяются на ., остальные символы с кодами <0x20
рисуются псевдографикой (как на реальном РК-86).
Пример 1. Дамп памяти через команду монитора D
Монитор mon32 печатает дамп памяти с адреса 0 до FFh, через 10 секунд
эмулятор завершается по таймауту и содержимое экрана сохраняется в файл:
bunx rk86 --headless \
--input "KeyD,KeyF,Digit8,Digit0,Digit0,Comma,KeyF,Digit8,KeyF,KeyF,Enter" \
--timeout 10 \
--screen out.txtПосле выхода out.txt содержит приглашение -->DF800,F8FF и 16 строк шестнадцатеричного
дампа F800..F8FF.
Пример 2. Запись HLT и запуск через команды M / G
Командой M мы помещаем байт 76h (опкод HLT) в ячейку 0000, выходим из режима
редактирования (.), затем командой G 0 запускаем с адреса 0. На первой же
инструкции срабатывает HLT и --exit-halt завершает эмулятор:
bunx rk86 --headless \
--exit-halt \
--input "KeyM,Enter,Digit7,Digit6,Enter,Period,KeyG,Digit0,Enter" \
--timeout 15 \
--screen out.txt \
--memory mem.bin --memory-from 0x0000 --memory-to 0x0000После выхода mem.bin содержит один байт 76h, а out.txt — скриншот с
приглашениями -->M и -->G0.
Требования
- Bun runtime
