Ocean-240.2-Emulator/README.md
2026-04-01 14:57:08 +03:00

89 lines
6.6 KiB
Markdown
Raw 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К, такой вариант используется с 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