Эмулятор компьютера Океан-240.2
Go to file
2026-04-08 13:13:48 +03:00
examples Code cleanup 2026-04-01 14:57:08 +03:00
floppy Fix reset and hard reset 2026-04-08 11:12:11 +03:00
img Fix doc 2026-04-01 15:49:36 +03:00
rom Code cleanup 2026-04-01 14:57:08 +03:00
src enable logging to file 2026-04-08 13:13:48 +03:00
.gitignore Fix reset and hard reset 2026-04-08 11:12:11 +03:00
LICENSE My license 2026-03-19 00:27:50 +03:00
okemu.yml def debug log level 2026-04-02 14:49:24 +03:00
README.md Fix doc 2026-04-01 15:49:36 +03:00

Эмулятор персонального компьютера Океан-240.2

Icon

Зачем?

Эмулятор был разработан для удобства реверс-инжененринга программ монитора и приложений для этого старого компьютера. Поэтому и имеет такой минималистичный интерфейс.

Если нужен более точный эмулятор Океана-240.2 и других компьютеров на безе процессора КР580ВМ80, рекомендую проект Emu80.

Особенности реализации

  • Микросхемы КР580ВВ55, ВИ53, ВИ51, ВТ59, КР1818ВГ93 эмулируются в степени, достаточной для работы операционной системы и монитора.
  • В отличие от оригинала, который использует CPU КР580ВМ80, в эмуляторе использована эмуляция Z80. Эмулятор Z80 у меня уже был написан, поэтому использовал его, возможно, позже, обрежу его до i8080. Из за меньшего количества тактов у некоторых инструкций Z80, эмуляция работает несколько быстрее оригинала.
  • Эмулируются 2 дисковода с дисками 720К, такой вариант используется с обазами ROM CP/M и Монитора R8.
  • Работает под современными ОС Windows и Linux. Используется фреймворк Fyne, что позволяет скомпилировать код и под другие платформы, но я не пробовал.
  • Поддерживает ZRCP - протокол отладки эмулятора ZEsarUX. Это позволяет использовать среду разработки VSCode с плагином DeZog для отладки исходного кода прямо в эмуляторе.

Возможности отладки

Работают все функции плагина Dezog и протокола: документация плагина.

  • Выполнение кода по шагам, в том числе и назад (с ограничениями плагина DeZog)
  • Просмотр и изменение памяти
  • Просмотр и изменение значения регистров процессора
  • Условные и безусловные брейкпоинты
  • ASSERTION - остановка по несоблюдению указанного условия
  • WPMEM - остановка при обращении к указанным ячейкам памяти (можно указать тип обращения r|w|rw)
  • CodeCoverage - в коде, цветом помечаются строки, выполненные процессором.

Debug

Можно отлаживать код и без VSCode, подключившись телнетом к порту отладчика, по умолчанию это localhost:10001, далее, можно передавать отладчику команды. Их список доступен по команде help.

telnet localhost 10001

Список доступных команд отладчика

about                   Shows about message
clear-membreakpoints    Clear all memory breakpoints
close-all-menus         Close all visible dialogs
cpu-code-coverage       Sets cpu code coverage parameters
cpu-history             Runs cpu history actions
cpu-step                Run single opcode cpu step
disable-breakpoint      Disable specific breakpoint
disable-breakpoints     Disable all breakpoints
disassemble             Disassemble at address
enable-breakpoint       Enable specific breakpoint
enable-breakpoints      Enable breakpoints
enter-cpu-step          Enter cpu step to step mode
evaluate                Evaluate expression
exit-cpu-step           Exit cpu step to step mode
extended-stack          Sets extended stack parameters, which allows you to see what kind of values are in the stack
get-cpu-frequency       Get cpu frequency in HZ
get-current-machine     Returns current machine name
get-machines            Returns list of emulated machines
get-membreakpoints      Get memory breakpoints list
get-memory-pages        Returns current state of memory pages
get-os                  Shows emulator operating system
get-registers           Get CPU registers
get-tstates-partial     Get the t-states partial counter
get-tstates             Get the t-states counter
get-version             Shows emulator version
hard-reset-cpu          Hard resets the machine
help                    Shows help screen or command help
hexdump                 Dumps memory at address, showing hex and ascii
load-binary             Load binary file "file" at address "addr" with length "len", on the current memory zone
quit                    Closes connection
read-memory             Dumps memory at address
reset-tstates-partial   Resets the t-states partial counter
run                     Run cpu when on cpu step mode
save-binary             Save binary file "file" from address "addr" with length "len", from the current memory zone
set-breakpoint          Sets a breakpoint at desired index entry with condition
set-breakpointaction    Sets a breakpoint action at desired index entry
set-breakpointpasscount Set pass count for breakpoint
set-debug-settings      Set debug settings on remote command protocol
set-machine             Set machine
set-membreakpoint       Sets a memory breakpoint starting at desired address entry for type
set-register            Changes register value
snapshot-load           Loads a snapshot
snapshot-save           Saves a snapshot
write-memory            Writes a sequence of bytes starting at desired address on memory
write-port              Writes value at port