mirror of
https://github.com/romychs/Ocean-240.2-Emulator.git
synced 2026-04-21 11:03:21 +03:00
89 lines
6.4 KiB
Markdown
89 lines
6.4 KiB
Markdown
# Эмулятор персонального компьютера Океан-240.2
|
||
|
||

|
||
|
||
## Зачем?
|
||
|
||
Эмулятор был разработан для удобства реверс-инжененринга программ монитора и приложений для этого старого компьютера.
|
||
Поэтому и имеет такой минималистичный интерфейс.
|
||
|
||
Если нужен более точный эмулятор Океана-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 - в коде, цветом помечаются строки, выполненные процессором.
|
||
|
||

|
||
|
||
Можно отлаживать код и без 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
|