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

6.4 KiB
Raw Permalink Blame History

Эмулятор персонального компьютера Океан-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 - Раскраска синтаксиса ассемблера 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"
        }
    ]
}