Ocean-240.2-Emulator/README.md
2026-04-01 15:49:36 +03:00

89 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Эмулятор персонального компьютера Океан-240.2
![Icon](img/IconBig.png?raw=true "AppIcon")
## Зачем?
Эмулятор был разработан для удобства реверс-инжененринга программ монитора и приложений для этого старого компьютера.
Поэтому и имеет такой минималистичный интерфейс.
Если нужен более точный эмулятор Океана-240.2 и других компьютеров на безе процессора КР580ВМ80, рекомендую проект [Emu80](https://emu80.org/).
## Особенности реализации
- Микросхемы КР580ВВ55, ВИ53, ВИ51, ВТ59, КР1818ВГ93 эмулируются в степени, достаточной для работы операционной системы и монитора.
- В отличие от оригинала, который использует CPU КР580ВМ80, в эмуляторе использована эмуляция Z80.
Эмулятор Z80 у меня уже был написан, поэтому использовал его, возможно, позже, обрежу его до i8080.
Из за меньшего количества тактов у некоторых инструкций Z80, эмуляция работает несколько быстрее оригинала.
- Эмулируются 2 дисковода с дисками 720К, такой вариант используется с обазами ROM CP/M и Монитора R8.
- Работает под современными ОС Windows и Linux. Используется фреймворк [Fyne](https://fyne.io/), что позволяет скомпилировать код и под другие платформы, но я не пробовал.
- Поддерживает ZRCP - протокол отладки эмулятора [ZEsarUX](https://github.com/chernandezba/zesarux). Это позволяет использовать среду разработки VSCode с плагином DeZog
для отладки исходного кода прямо в эмуляторе.
## Возможности отладки
Работают все функции плагина Dezog и протокола: [документация плагина](https://github.com/maziac/DeZog/blob/main/documentation/Usage.md#remote-types).
- Выполнение кода по шагам, в том числе и назад (с ограничениями плагина DeZog)
- Просмотр и изменение памяти
- Просмотр и изменение значения регистров процессора
- Условные и безусловные брейкпоинты
- ASSERTION - остановка по несоблюдению указанного условия
- WPMEM - остановка при обращении к указанным ячейкам памяти (можно указать тип обращения r|w|rw)
- CodeCoverage - в коде, цветом помечаются строки, выполненные процессором.
![Debug](img/Debug.jpg?raw=true "Debug in VSCode")
Можно отлаживать код и без 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