mirror of
https://github.com/romychs/Ocean-240.2-Emulator.git
synced 2026-04-21 11:03:21 +03:00
110 lines
6.4 KiB
Markdown
110 lines
6.4 KiB
Markdown
# Эмулятор персонального компьютера Океан-240.2
|
||
|
||
## Пример, кода для работы в среде VSCode.
|
||
|
||
1. Установите VSCode
|
||
2. Установите плагин DeZog для возможности отладки исходного кода в эмуляторе okemu
|
||
3. Откройте в VSCode папку examples/hello
|
||
4. Запустите эмулятор okemu
|
||
5. Запустите отладку через меню Run -> Start debuging в VSCode.
|
||
6. Используйте инструменты отладки VSCode для выполнения кода, просмотра регистров процессора и состояния памяти и т.д.
|
||
|
||
## Рекомендуемые плагины VSCode
|
||
- [mborik.z80-macroasm-vscode](https://github.com/mborik/z80-macroasm-vscode) - Раскраска синтаксиса ассемблера Z80, поддержка разных ассемблеров, переименование меток и т.п.
|
||
- [maziac.dezog](https://github.com/maziac/DeZog/) - Отладчик кода Z80 с помощью эмуляторов
|
||
- [maziac.hex-hover-converter](https://github.com/maziac/hex-hover-converter) - Перевод чисел в другие системы счисления при наведении курсора
|
||
- [maziac.z80-instruction-set](https://github.com/maziac/z80-instruction-set) - Подсказки по инструкциям Z80 при наведении курсора (коды, такты, влияние на флаги)
|
||
|
||
## Пример файла .vscode/tasks.json
|
||
Конфигурация задачи для компиляции исходного кода ассемблером [sjasmplus](https://github.com/z00m128/sjasmplus)
|
||
```json
|
||
{
|
||
"version": "2.0.0",
|
||
"tasks": [
|
||
{
|
||
"label": "make (sjasmplus)", // так задача будет называться в меню Terminal -> Run task... VSCode
|
||
"type": "shell",
|
||
"command": "sjasmplus",
|
||
"args": [
|
||
"--i8080", // используем только инструкции КР580ВМ80
|
||
"--sld=main.sld", // генерируем файл с таблицей символов для отладчика
|
||
"--raw=main.obj", // сохраняем результат компиляции в двоичный файл
|
||
"--fullpath",
|
||
"main.asm" // основной файл исходного кода программы
|
||
],
|
||
"problemMatcher": "$problem-matcher-sjasmplus",
|
||
"group": {
|
||
"kind": "build",
|
||
"isDefault": true
|
||
}
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
## Пример файла .vscode/launch.json
|
||
Конфигурация задачи для отладки исходного кода нашей программы с помощью эмулятора okemu. Эмулятор поддерживает подмножество протокола ZRCP (протокол отладки эмулятора [ZEsarUX](https://github.com/chernandezba/zesarux)).
|
||
Для отладки нужен плагин DeZog. Подробное описание настроек в [документации плагина](https://github.com/maziac/DeZog/blob/main/documentation/Usage.md#remote-types).
|
||
|
||
```json
|
||
{
|
||
"version": "0.2.0",
|
||
"configurations": [
|
||
{
|
||
"type": "dezog",
|
||
"request": "launch",
|
||
"name": "Simulator",
|
||
"remoteType": "zrcp", // используем протокол ZRCP для соединения с okemu
|
||
"zrcp": {
|
||
"port": 10001, // порт, на котором, по умолчанию, отвечает отладчик okemu
|
||
// если эмулятор запущен на другом компьютере, нужно указать его имя или адрес в параметре "host"
|
||
},
|
||
|
||
"sjasmplus": [
|
||
{
|
||
"path": "main.sld", // файл с символами для отладки, созданный при компиляции
|
||
},
|
||
// ниже, исходники и файлы для отладки ОС и монитора Океана, если мы хотим видеть их исходный в VSCode в процессе отладки
|
||
// их можно убрать. Тогда при трассировке вызовов ОС и монитора мы будем видеть дизасм кода.
|
||
{
|
||
"path": "cpm/cpm.sld",
|
||
"srcDirs": [
|
||
"cpm/"
|
||
]
|
||
},
|
||
{
|
||
"path": "mon/monitor.sld",
|
||
"srcDirs": [
|
||
"mon/"
|
||
]
|
||
}
|
||
],
|
||
"smartDisassemblerArgs": {
|
||
"lowerCase": false
|
||
},
|
||
"history": {
|
||
"reverseDebugInstructionCount": 20, // количество инструкций, которые можно шагнуть назад
|
||
"spotCount": 10,
|
||
"codeCoverageEnabled": true //true Если мы хотим видеть, какие участки кода нашего приложения выполнялись
|
||
},
|
||
"startAutomatically": false,
|
||
"commandsAfterLaunch": [
|
||
//"-rmv", // открыть окно с памятью, на которую указывают 16-разрядные регистры BC,DE,HL,IX,IY
|
||
"-mv 0x100 0x80" // открыть окно для просмотра памяти с адреса 100h размером 80h байт
|
||
],
|
||
"rootFolder": "${workspaceFolder}",
|
||
"topOfStack": "stack",
|
||
"loadObjs": [
|
||
{
|
||
"path": "main.obj", // Этот файл будет загружен в эмулятор
|
||
"start": "0x0100" // Файл будет загружен с адреса 100h
|
||
}
|
||
],
|
||
"execAddress": "0x0100", // Загруженный код начнет выполняться с адреса 100h
|
||
"smallValuesMaximum": 513,
|
||
"tmpDir": ".tmp"
|
||
}
|
||
]
|
||
}
|
||
```
|