ZX81-Debugger.png

💡 ВСТУПЛЕНИЕ: ОТ ТЕЛЕВИЗОРА К VS CODE

Помните этот характерный белый корпус, мембранную клавиатуру и... всего 1 КБ оперативной памяти? Sinclair ZX81, выпущенный в 1981 году, стал для миллионов людей во всём мире первым шагом в мир программирования. Но разработка под него всегда была делом аскетичным: писать код приходилось в том же редакторе, где он и выполнялся, а отладка заключалась в мучительном втыкании команд PRINT и PAUSE.

Сегодня, когда мы привыкли к современным IDE, ностальгия по ZX81 не означает, что нужно отказываться от удобства. Благодаря разработчику Sebastien Andrivet у нас есть ZX81 Debugger — расширение для Visual Studio Code, которое превращает ваш современный редактор в полноценную среду разработки для ZX81 .

Это не просто эмулятор. Это интегрированное решение: ассемблер, отладчик, симулятор экрана и клавиатуры — всё в одном флаконе, готовое к работе сразу после установки.


🏗️ ЧТО ТАКОЕ ZX81 DEBUGGER И ЗАЧЕМ ОН НУЖЕН?

ZX81 Debugger — это специализированное расширение для VS Code, созданное для разработки на ассемблере Z80 под компьютер Sinclair ZX81 . Оно предоставляет полный цикл разработки:
  1. Написание кода с подсветкой синтаксиса.
  2. Ассемблирование без внешних инструментов.
  3. Отладка с точками останова, пошаговым исполнением.
  4. Запуск во встроенном симуляторе с отображением ZX81-экрана и приёмом ввода с клавиатуры.

🎯 КЛЮЧЕВЫЕ ОСОБЕННОСТИ (ЧЕМ ОН ОТЛИЧАЕТСЯ ОТ ДРУГИХ)


ОсобенностьОписание
Полная автономностьНе требует внешних ассемблеров, эмуляторов или сложной настройки. Установил — и работаешь .
Встроенный симуляторОснован на Z80.js и включает эмуляцию ZX81 (экран, клавиатура) .
Совместимость с SjASMPlusДля сложных проектов можно использовать внешний ассемблер .
Специализация на ZX81В отличие от универсального DeZog, это расширение заточено именно под одну машину, что упрощает настройку и интерфейс .
Walkthrough (обучалка)Встроенное пошаговое руководство для новичков .
Поддержка ZX81-спецификиОтображение системных переменных, показ символов в кодировке ZX81 в дампе памяти, виртуальная клавиатура с "липким" Shift .

🧬 ГЕНЕАЛОГИЯ: ZX81 DEBUGGER И DeZog

Важно понимать родственные связи. ZX81 Debugger — это форк (ответвление) знаменитого отладчика DeZog от Thomas Busse . Начиная с версии 3.5, DeZog получил возможность симулировать ZX81, и Sebastien Andrivet использовал это, чтобы создать специализированную версию .

Чем они отличаются:

КритерийDeZogZX81 Debugger
Целевые платформыУниверсальный (ZX Spectrum, ZX81, ZX Next, MSX, CPC...)Только ZX81
Встроенный ассемблерНет (только отладка)Да
Сложность настройкиВыше (нужен внешний компилятор)Минимальная ("всё включено")
Файлы исходниковОбычно .asm или .z80Специальное расширение .zx81 для автоподсветки
Отображение памятиСтандартноеZX81-символы и системные переменные

Таким образом, если DeZog — это многофункциональный комбайн, то ZX81 Debugger — это точный скальпель для одной задачи, но заточенный под неё идеально.


⚙️ УСТАНОВКА И ПЕРВЫЙ ЗАПУСК: ПЯТЬ МИНУТ — И ВЫ В ИГРЕ

📥 Шаг 1: Установка расширения

  1. Запустите Visual Studio Code.
  2. Нажмите Ctrl+Shift+X (или иконку квадратиков слева), чтобы открыть вкладку Extensions.
  3. В поиске введите "ZX81 Debugger".
  4. Найдите расширение от автора Sebastien Andrivet (andrivet.zx81-debugger) и нажмите Install .
Важно: В отличие от многих других инструментов, для работы этого расширения не требуется устанавливать дополнительные компиляторы, эмуляторы или прописывать пути в системе . Всё необходимое уже включено.

🚀 Шаг 2: Запуск Walkthrough (обязательно для новичков)

После установки разработчик предлагает пройти встроенное обучение :
  1. Нажмите Ctrl+Shift+P (или F1), чтобы открыть палитру команд.
  2. Найдите и выполните команду "ZX81-Debugger: Walkthrough".
  3. Откроется интерактивное руководство, которое шаг за шагом покажет, как создать проект, написать код, запустить отладку.

📁 Шаг 3: Создание первого файла

Расширение использует специальное расширение файлов .zx81, чтобы автоматически включать подсветку синтаксиса Z80 и связь с отладчиком .
  1. Создайте новый файл с именем, например, hello.zx81.
  2. Начните писать код. Базовый пример (выводит символы на экран):
Assembler Z80:
    org 16514   ; Стандартный адрес для машинного кода в ZX81

start:
    ld a, 2     ; Код символа (инвертированный пробел? или просто белый квадрат)
    rst 16      ; Вызов системной процедуры PRINT (как в ZX81)
    jr start    ; Бесконечный цикл

🖥️ ИНТЕРФЕЙС И РАБОЧИЙ ПРОЦЕСС

🎛️ Элементы управления

Когда вы запускаете отладку (F5), VS Code преображается. Появляются стандартные панели отладчика (переменные, наблюдение, стек вызовов), а также несколько специфических для ZX81 окон:
  1. Экран ZX81 — отдельное окно, симулирующее телевизионный вывод. Именно туда выводится графика и текст вашей программы.
  2. Виртуальная клавиатура — позволяет эмулировать нажатия клавиш мышкой, что полезно, если у вас ноутбук без нампада или вы хотите запомнить расположение клавиш ZX81 .
  3. Системные переменные — отдельный раздел, где отображаются значения стандартных системных переменных ZX81 (например, D_FILE, VARS, E_LINE и т.д.) .

🕹️ Отладка

  • Точки останова — ставятся кликом слева от номера строки, как в любом современном отладчике.
  • Пошаговое исполнение — F10 (Step Over), F11 (Step Into), Shift+F11 (Step Out).
  • Просмотр памяти — можно открыть окно Memory View и смотреть содержимое RAM. Приятная деталь: в дампе памяти символы отображаются в кодировке ZX81, а не ASCII . Это бесценно при работе с текстом.

⌨️ Особенности виртуальной клавиатуры

Клавиатура ZX81 была очень специфичной. Расширение эмулирует её поведение :
  • Клавиша Shift — "липкая" (sticky). То есть вы можете кликнуть на Shift, потом на другой символ, и он введётся как Shift+символ.
  • Остальные клавиши — не липкие. Если вы кликнете на букву, она "нажмётся" и отпустится автоматически через 0.5 секунды.

📟 Специальные команды отладчика

В консоли отладки (DEBUG CONSOLE) доступны полезные команды :
  • -dfile — открывает окно памяти с содержимым D-FILE (область экрана низкого разрешения ZX81). Это позволяет видеть, что именно ваша программа записала в видеопамять.
  • -mvc <число> — открывает окно памяти с заданным количеством колонок. Это удобно для просмотра структур данных (например, таблиц спрайтов).

🔧 ПРОДВИНУТАЯ КОНФИГУРАЦИЯ (LAUNCH.JSON)

Хотя расширение работает "из коробки", для сложных проектов можно настроить launch.json. Вот пример с комментариями (на основе информации из описания):
JSON:
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "zx81",
            "request": "launch",
            "name": "Отладка ZX81",
            
            // Основной файл исходного кода (.zx81)
            "source": "${workspaceFolder}/src/main.zx81",
            
            // Дополнительные бинарные файлы для загрузки в память
            "binaries": [
                {
                    "path": "${workspaceFolder}/data/chars.bin",
                    "address": 16384
                }
            ],
            
            // Остановиться ли на первой инструкции? (true/false)
            "stopOnEntry": true,
            
            // Включить ли симуляцию экрана? (должно быть true)
            "ulaScreen": true,
            
            // Включить ли виртуальную клавиатуру?
            "zxKeyboard": true,
            
            // Дополнительные параметры симулятора
            "zsim": {
                "model": "zx81"  // Модель ZX81 (может быть 16k, 48k и т.д. - нужно уточнять)
            }
        }
    ]
}

Параметры:
  • source — указывает на главный файл .zx81, который будет скомпилирован встроенным ассемблером.
  • binaries — массив дополнительных бинарных файлов, которые будут загружены по указанным адресам. Это аналог loadObjs из DeZog .
  • ulaScreen и zxKeyboard — булевы флаги для включения/выключения эмуляции экрана и клавиатуры (в DeZog они были строками) .
  • zsim.model — вероятно, позволяет выбрать модификацию ZX81 (с памятью 16K, 48K и т.д.), хотя в описании это не уточняется.

📊 СРАВНЕНИЕ: ИНСТРУМЕНТЫ ДЛЯ ZX81

ИнструментТипПлюсыМинусы
EightyOneКлассический эмуляторОтличная точность, много настроекОтладка на уровне ассемблера, нет интеграции с редактором
ZEsarUXУниверсальный эмуляторПоддерживает ZX81, мощный отладчикСложный, требует отдельной настройки для отладки
DeZog + sjasmplusVS Code + внешниеОчень мощно, гибкоСложно настраивать, много компонентов
ZX81 DebuggerVS Code (всё в одном)Максимально просто, "всё включено", отличная интеграцияТолько ZX81, встроенный ассемблер пока ограничен

🎨 ПЛЮСЫ И МИНУСЫ

✅ Плюсы (Почему это лучший выбор для ZX81)

  • Нулевой порог входа: установил, создал файл .zx81, нажал F5 — и уже отлаживаешь .
  • Всё включено: ассемблер, симулятор, отладчик, клавиатура, экран — в одном расширении .
  • Специализация: все функции заточены под ZX81, нет лишних настроек под Spectrum или MSX .
  • Понимание специфики ZX81: отображение системных переменных, ZX81-символы в памяти, поведение клавиатуры .
  • Встроенное обучение: Walkthrough проведёт новичка по всем шагам .
  • Совместимость с SjASMPlus: если встроенного ассемблера не хватит, можно использовать внешний .
  • Основан на DeZog: унаследовал все лучшие черты отладчика от Thomas Busse .

❌ Минусы (О чём нужно знать)

  • Только Z80, только ассемблер: не подойдёт, если вы пишете на Бейсике .
  • Ограниченный встроенный ассемблер: пока не поддерживает макросы и структуры . Для больших проектов придётся подключать SjASMPlus .
  • Нет встроенной справки: разработчик сознательно убрал её, чтобы расширение было компактным. Вся документация — на GitHub .
  • Узкая ниша: нужно только тем, кто пишет под ZX81. Если вы фанат Spectrum, вам нужен DeZog.
  • Относительно молодой проект: хотя база (DeZog) стабильна, специфические функции могут ещё дорабатываться (последнее обновление в описании датировано декабрём 2025) .

🧪 СОВЕТЫ БЫВАЛОГО (ОПТИМИЗАЦИЯ РАБОТЫ)

  1. Начните с Walkthrough. Не игнорируйте встроенное обучение — оно реально помогает понять, как работает расширение, и сразу увидеть результат .
  2. Для серьёзных проектов используйте внешний ассемблер. Если ваш код перерастает пару сотен строк и вам нужны макросы, настройте использование SjASMPlus. Расширение совместимо с ним .
  3. Изучите системные переменные. ZX81 имеет богатую систему переменных ОС. Возможность видеть их в отладчике — огромное подспорье для понимания того, что происходит внутри.
  4. Пользуйтесь -dfile и -mvc. Эти команды в консоли отладчика — ваши друзья для визуализации экрана и структур данных .
  5. Не забывайте про расширение .zx81. Именно оно включает всю магию. Если вы назовёте файл .asm, подсветка может не сработать .

📚 РЕСУРСЫ И ССЫЛКИ

  • Страница расширения на Marketplace: ZX81 Debugger
  • GitHub репозиторий (вероятно): поиск по автору Sebastien Andrivet
  • Документация Z80 Assembler in Typescript Library: используется внутри расширения
  • Сайт ZEsarUX: для тех, кто захочет использовать более точный внешний симулятор

📖 ЗАКЛЮЧЕНИЕ: ИДЕАЛЬНЫЙ ИНСТРУМЕНТ ДЛЯ ZX81-РАЗРАБОТЧИКА

ZX81 Debugger от Sebastien Andrivet — это блестящий пример того, как должен выглядеть современный инструмент для ретро-разработки: специализированный, автономный и удобный.

Он не пытается быть универсальным комбайном на все случаи жизни. Его задача — обеспечить максимально комфортную разработку на ассемблере именно для ZX81. И с этой задачей он справляется на отлично.

Если вы пишете под ZX81 — это расширение должно быть в вашем арсенале обязательно. Оно сэкономит вам часы настройки окружения и позволит сосредоточиться на главном — создании программ для легендарного компьютера.

Особая благодарность разработчику за то, что он не просто форкнул DeZog, а адаптировал его под нужды сообщества ZX81, добавив специфические фичи (ZX81-символы, системные переменные, виртуальную клавиатуру) и убрав всё лишнее.


P.S. Если вам не хватает возможностей встроенного ассемблера, не отчаивайтесь. Переход на внешний SjASMPlus не сложен, а мощь макросов и структур того стоит.

*P.P.S. Автору, Sebastien Andrivet, спасибо за этот подарок сообществу ZX81. Даже спустя 40+ лет после выхода компьютера, о нём продолжают заботиться!*