ВСТУПЛЕНИЕ: ОТ ТЕЛЕВИЗОРА К 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 . Оно предоставляет полный цикл разработки:- Написание кода с подсветкой синтаксиса.
- Ассемблирование без внешних инструментов.
- Отладка с точками останова, пошаговым исполнением.
- Запуск во встроенном симуляторе с отображением 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 использовал это, чтобы создать специализированную версию .Чем они отличаются:
| Критерий | DeZog | ZX81 Debugger |
|---|---|---|
| Целевые платформы | Универсальный (ZX Spectrum, ZX81, ZX Next, MSX, CPC...) | Только ZX81 |
| Встроенный ассемблер | Нет (только отладка) | Да |
| Сложность настройки | Выше (нужен внешний компилятор) | Минимальная ("всё включено") |
| Файлы исходников | Обычно .asm или .z80 | Специальное расширение .zx81 для автоподсветки |
| Отображение памяти | Стандартное | ZX81-символы и системные переменные |
Таким образом, если DeZog — это многофункциональный комбайн, то ZX81 Debugger — это точный скальпель для одной задачи, но заточенный под неё идеально.
УСТАНОВКА И ПЕРВЫЙ ЗАПУСК: ПЯТЬ МИНУТ — И ВЫ В ИГРЕ
Шаг 1: Установка расширения
- Запустите Visual Studio Code.
- Нажмите Ctrl+Shift+X (или иконку квадратиков слева), чтобы открыть вкладку Extensions.
- В поиске введите "ZX81 Debugger".
- Найдите расширение от автора Sebastien Andrivet (andrivet.zx81-debugger) и нажмите Install .
Шаг 2: Запуск Walkthrough (обязательно для новичков)
После установки разработчик предлагает пройти встроенное обучение :- Нажмите Ctrl+Shift+P (или F1), чтобы открыть палитру команд.
- Найдите и выполните команду "ZX81-Debugger: Walkthrough".
- Откроется интерактивное руководство, которое шаг за шагом покажет, как создать проект, написать код, запустить отладку.
Шаг 3: Создание первого файла
Расширение использует специальное расширение файлов .zx81, чтобы автоматически включать подсветку синтаксиса Z80 и связь с отладчиком .- Создайте новый файл с именем, например, hello.zx81.
- Начните писать код. Базовый пример (выводит символы на экран):
Assembler Z80:
org 16514 ; Стандартный адрес для машинного кода в ZX81
start:
ld a, 2 ; Код символа (инвертированный пробел? или просто белый квадрат)
rst 16 ; Вызов системной процедуры PRINT (как в ZX81)
jr start ; Бесконечный цикл
ИНТЕРФЕЙС И РАБОЧИЙ ПРОЦЕСС
Элементы управления
Когда вы запускаете отладку (F5), VS Code преображается. Появляются стандартные панели отладчика (переменные, наблюдение, стек вызовов), а также несколько специфических для ZX81 окон:- Экран ZX81 — отдельное окно, симулирующее телевизионный вывод. Именно туда выводится графика и текст вашей программы.
- Виртуальная клавиатура — позволяет эмулировать нажатия клавиш мышкой, что полезно, если у вас ноутбук без нампада или вы хотите запомнить расположение клавиш ZX81 .
- Системные переменные — отдельный раздел, где отображаются значения стандартных системных переменных 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 + sjasmplus | VS Code + внешние | Очень мощно, гибко | Сложно настраивать, много компонентов |
| ZX81 Debugger | VS Code (всё в одном) | Максимально просто, "всё включено", отличная интеграция | Только ZX81, встроенный ассемблер пока ограничен |
ПЛЮСЫ И МИНУСЫ
Плюсы (Почему это лучший выбор для ZX81)
- Нулевой порог входа: установил, создал файл .zx81, нажал F5 — и уже отлаживаешь .
- Всё включено: ассемблер, симулятор, отладчик, клавиатура, экран — в одном расширении .
- Специализация: все функции заточены под ZX81, нет лишних настроек под Spectrum или MSX .
- Понимание специфики ZX81: отображение системных переменных, ZX81-символы в памяти, поведение клавиатуры .
- Встроенное обучение: Walkthrough проведёт новичка по всем шагам .
- Совместимость с SjASMPlus: если встроенного ассемблера не хватит, можно использовать внешний .
- Основан на DeZog: унаследовал все лучшие черты отладчика от Thomas Busse .
Минусы (О чём нужно знать)
- Только Z80, только ассемблер: не подойдёт, если вы пишете на Бейсике .
- Ограниченный встроенный ассемблер: пока не поддерживает макросы и структуры . Для больших проектов придётся подключать SjASMPlus .
- Нет встроенной справки: разработчик сознательно убрал её, чтобы расширение было компактным. Вся документация — на GitHub .
- Узкая ниша: нужно только тем, кто пишет под ZX81. Если вы фанат Spectrum, вам нужен DeZog.
- Относительно молодой проект: хотя база (DeZog) стабильна, специфические функции могут ещё дорабатываться (последнее обновление в описании датировано декабрём 2025) .
СОВЕТЫ БЫВАЛОГО (ОПТИМИЗАЦИЯ РАБОТЫ)
- Начните с Walkthrough. Не игнорируйте встроенное обучение — оно реально помогает понять, как работает расширение, и сразу увидеть результат .
- Для серьёзных проектов используйте внешний ассемблер. Если ваш код перерастает пару сотен строк и вам нужны макросы, настройте использование SjASMPlus. Расширение совместимо с ним .
- Изучите системные переменные. ZX81 имеет богатую систему переменных ОС. Возможность видеть их в отладчике — огромное подспорье для понимания того, что происходит внутри.
- Пользуйтесь -dfile и -mvc. Эти команды в консоли отладчика — ваши друзья для визуализации экрана и структур данных .
- Не забывайте про расширение .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+ лет после выхода компьютера, о нём продолжают заботиться!*