mirror of
https://github.com/romychs/Ocean-240.2-Emulator.git
synced 2026-04-19 10:03:20 +03:00
Эмулятор компьютера Океан-240.2
| examples | ||
| floppy | ||
| img | ||
| rom | ||
| src | ||
| .gitignore | ||
| LICENSE | ||
| okemu.yml | ||
| README.md | ||
Эмулятор персонального компьютера Океан-240.2
Зачем?
Эмулятор был разработан для удобства реверс-инжененринга программ монитора и приложений для этого старого компьютера. Поэтому и имеет такой минималистичный интерфейс.
Если нужен более точный эмулятор Океана-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 - в коде, цветом помечаются строки, выполненные процессором.
Можно отлаживать код и без 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
