mirror of
https://github.com/romychs/Ocean-240.2-Emulator.git
synced 2026-04-21 11:03:21 +03:00
| .. | ||
| hello | ||
| README.md | ||
Эмулятор персонального компьютера Океан-240.2
Пример, кода для работы в среде VSCode.
- Установите VSCode
- Установите плагин DeZog для возможности отладки исходного кода в эмуляторе okemu
- Откройте в VSCode папку examples/hello
- Запустите эмулятор okemu
- Запустите отладку через меню Run -> Start debuging в VSCode.
- Используйте инструменты отладки VSCode для выполнения кода, просмотра регистров процессора и состояния памяти и т.д.
Рекомендуемые плагины VSCode
- mborik.z80-macroasm-vscode - Раскраска синтаксиса ассемблера Z80, поддержка разных ассемблеров, переименование меток и т.п.
- maziac.dezog - Отладчик кода Z80 с помощью эмуляторов
- maziac.hex-hover-converter - Перевод чисел в другие системы счисления при наведении курсора
- maziac.z80-instruction-set - Подсказки по инструкциям Z80 при наведении курсора (коды, такты, влияние на флаги)
Пример файла .vscode/tasks.json
Конфигурация задачи для компиляции исходного кода ассемблером sjasmplus
{
"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). Для отладки нужен плагин DeZog. Подробное описание настроек в документации плагина.
{
"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"
}
]
}