Skip to content

Repository files navigation

Логотип KR580

CONTRIBUTORS FORKS STARS

CRATES.IO DOWNLOADS

Настольный эмулятор КР580 на Rust

Скриншот эмулятора KR580

Tip

English version: README-EN.md

KR580 – современный настольный эмулятор системы на КР580 / Intel 8080. Внутри – детерминированное ядро CPU, типизированные внешние устройства через I/O-порты и нативный многооконный интерфейс.

Проект сделан для наблюдаемого выполнения программ: можно редактировать ОЗУ и регистры, идти по командам или тактам, видеть живое обновление панелей управления, открывать окна внешних устройств, сохранять снимки и экспортировать состояние без чтения данных из UI-виджетов.

Note

Возможности KR580:

  • Детерминированное состояние КР580 / Intel 8080: регистры, флаги, PC, SP, 64 КиБ ОЗУ, прерывания, HLT, счётчики циклов и тактовая фаза.
  • Выполнение документированных 8080-опкодов с тестами семейств команд, флагов, условных переходов, стека, прерываний и маршрутизации I/O.
  • Пошаговое выполнение по команде, выполнение по такту, регулируемый запуск и быстрый burst-режим.
  • Нативный iced-интерфейс: список ОЗУ, редактор регистров, регистр состояния, схема машинных циклов, панель управления и локализованный установщик.
  • Окна внешних устройств: монитор, дисковод, жёсткий диск, сетевой адаптер и принтер.
  • Версионированные .580-снимки, загрузка сырых .krs-подпрограмм, прямой импорт/экспорт .txt / .xlsx и нативная системная печать с параметрами драйвера.
  • Графический установщик, деинсталлятор, терминальный launcher, опциональные ассоциации .580 и .krs и portable/system-режимы установки.

Скриншоты

Монитор

Скриншот окна монитора

Дисковод · Жёсткий диск

Скриншот окна дисковода Скриншот окна жёсткого диска

Сетевой адаптер · Принтер

Скриншот окна сетевого адаптера Скриншот окна принтера

Внешние устройства

IoBus направляет младший байт адреса I/O-порта в пять моделируемых устройств:

Порт Устройство Что делает
00h Монитор Текстовый framebuffer 64×20 и графический слой 256×256.
01h Дисковод Файловое или debug-buffer хранилище с окном просмотра.
02h HDD Append-backed hdd.kpd и отдельный просмотр принятого буфера.
03h Сетевой адаптер TCP client/server worker, RX/TX-счётчики и явное состояние соединения.
04h Принтер CP866 spool, буфер вывода и асинхронная системная печать.

Операции устройств возвращают типизированные статусы и ошибки. CPU обращается к ним только через IN / OUT, поэтому состояние эмулятора остаётся сериализуемым и тестируемым.

Установка

Требования

  • Rust 1.95.0 или новее.
  • Desktop-окружение, способное запускать нативные iced-окна.

Установка из crates.io

cargo install kr580

Этот вариант рассчитан на опубликованный релиз в crates.io. Пока пакет не опубликован, используй сборку из исходников или standalone-установщик.

Установка на NixOS

nix run github:WhoSowSee/KR580
nix profile install github:WhoSowSee/KR580

NixOS-пакет ставит готовые k580 и kr, desktop entry, иконки и MIME-типы .580 / .krs напрямую через Nix store. Standalone-установщик для этого сценария не используется.

Запуск из исходников

git clone https://github.com/WhoSowSee/KR580.git
cd KR580
cargo run -p kr580

Сборка GUI и launcher

cargo build --release -p kr580 --bin k580 --bin kr

Готовые бинарники появятся в target/release/ как k580 / kr или k580.exe / kr.exe.

Сборка standalone-установщика

Windows:

powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build_installer.ps1

Unix/macOS:

bash scripts/build_installer.sh

Готовый установщик будет записан в dist/.

Использование

# Запуск эмулятора из исходников
cargo run -p kr580

# Открыть snapshot или подпрограмму через launcher
cargo run -p kr580 --bin kr -- path/to/program.580

# Показать справку launcher
cargo run -p kr580 --bin kr -- --help

После установки kr может открывать .580-снимки и .krs-подпрограммы из терминала и регистрировать или удалять их ассоциации там, где это поддерживает платформа.

Форматы файлов

Формат Назначение
.580 Версионированный little-endian snapshot эмулятора с magic K580.
.krs Сырые байты подпрограммы, загружаемые по указанному базовому адресу.
.txt Текстовый экспорт регистров, флагов и памяти; также поддерживается импорт.
.xlsx Импорт/экспорт workbook через rust_xlsxwriter и calamine.

Структура workspace

Crate Ответственность
k580-core Публичное ядро CPU: state, opcode decode/execute, timing, interrupts и PortBus.
kr580 Публичный installable crate: desktop UI, launcher, installer, uninstaller, platform shims и внутренние modules backend, devices, persistence.

Разработка

cargo fmt --all
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace

Полезные документы:

История звёзд

История звёзд KR580

catppuccin

© 2026-present WhoSowSee

LICENSE

About

A modern Rust rewrite of the classic КР580ВМ80А desktop emulator

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages