z80-macroasm-rename.gif

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

Помните времена, когда программы для ZX Spectrum писали на бумаге, транслировали в коды вручную и вбивали через монитор? А потом пришли ассемблеры-легенды: ALASM, STM, XAS, GENS... Они подарили нам метки, макросы и относительную свободу. Но их интерфейс оставался в рамках старого доброго Spectrum'а — 32 колонки, мерцающий экран и листинг, который не проскроллить мышкой.

Сегодня мы живем в другом мире. Мире, где правит бал Visual Studio Code. И ретро-сцена не стоит на месте — она интегрируется в современные реалии. Знакомьтесь: Z80 Macro-Assembler — это не просто ассемблер. Это расширение для VS Code, которое превращает ваш современный редактор в мощнейшую IDE для программирования на ассемблере Z80, сохраняя всю магию низкоуровневого кода, но добавляя удобства XXI века.

🏗️ ЧТО ЭТО ТАКОЕ И ЗАЧЕМ ОНО НУЖНО?​

Z80 Macro-Assembler (расширение от mborik) — это не отдельный исполняемый файл вроде ALASM или sjasmplus. Это языковой сервер и набор инструментов, которые встраиваются прямо в VS Code и обеспечивают интеллектуальную работу с кодом на ассемблере.

Если ALASM в свое время был прорывом как интегрированная среда на самом Spectrum, то Z80 Macro-Assembler — это прорыв как интеграция ретро-языка в мейнстрим-разработку.

🎯 КЛЮЧЕВЫЕ ВОЗМОЖНОСТИ (ЧТО ОН ДАЕТ ПРОГРАММИСТУ)

  1. Подсветка синтаксиса — команды Z80, директивы, метки, комментарии — всё разноцветное и наглядное.
  2. Автодополнение (IntelliSense) — начинает предлагать варианты команд и меток, как только вы начинаете печатать.
  3. Переход к определению (Go to Definition) — нажал на метку — сразу перешел туда, где она объявлена.
  4. Поиск всех ссылок (Find All References) — увидел, где еще используется эта метка или переменная.
  5. Переименование символов (Rename Symbol) — хочешь переименовать метку? Сделай это один раз — она поменяется везде в проекте.
  6. Наведение мыши (Hover Info) — навел на команду — видишь ее описание и сколько тактов она занимает.
  7. Диагностика ошибок — подчеркивает синтаксические ошибки прямо во время набора текста.

🧬 ИСТОРИЧЕСКИЙ КОНТЕКСТ: ДУХОВНЫЕ СКРЕПЫ


ПараметрALASM (1989)Z80 Macro-Assembler (2020-е)
ПлатформаZX Spectrum (Z80)VS Code (Windows, macOS, Linux)
СутьИнтегрированная среда на ретро-ПКРасширение-анализатор для современного редактора
ФишкиТеневые экраны, встроенный отладчикGo to Definition, Rename Symbol, IntelliSense
Целевая аудиторияЭнтузиасты конца 80-х — начала 90-хСовременные ретро-разработчики, сценаристы
Главное наследие"Молоток и гаечный ключ" своего времени"Швейцарский нож" в современном кроссплатформенном мире

Z80 Macro-Assembler не является прямым потомком ALASM по коду, но он является его идейным продолжателем. Как ALASM когда-то сделал ассемблер доступным и удобным на Spectrum, так это расширение делает его доступным и удобным в мире профессиональных инструментов разработки.

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

📥 Установка расширения​

  1. Запустите Visual Studio Code.
  2. Нажмите Ctrl+Shift+X (или иконку квадратиков слева), чтобы открыть вкладку Extensions.
  3. В поиске введите "Z80 Macro-Assembler".
  4. Найдите расширение от автора mborik (иконка "Z80 MACRO ASM") и нажмите Install.

🔧Что еще нужно для счастья?​

Само расширение отвечает только за редактирование кода. Чтобы компилировать его в бинарники для Spectrum, вам понадобится сам ассемблер. Обычно в паре с этим расширением используют sjasmplus.
  • sjasmplus — это мощный кросс-ассемблер с открытым кодом. Он поддерживает макросы, включает файлы, генерирует листинги и файлы для эмуляторов (.tap, .sna, .bin).
  • Расширение Z80 Macro-Assembler "дружит" со sjasmplus: оно понимает его синтаксис и файлы листинга.
Установите sjasmplus отдельно (скачайте с GitHub и положите в папку, прописанную в PATH, или укажите путь к нему в настройках задач VS Code).

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

🖥️ Как это выглядит в редакторе

Откройте файл с расширением .asm или .z80. VS Code сразу "подхватит" язык, и вы увидите магию:
  • Синим подсвечены команды Z80 (LD, JR, CALL).
  • Зеленым — комментарии.
  • Желтым/оранжевым — директивы ассемблера (.org, .include, macro).
  • Белым/светлым — метки и числа.

🔍 Навигация по коду (как в современных языках)

Это главная "фишка", которой так не хватало в старых редакторах.
  • Перейти к определению: Нажмите F12 на любой метке или включенном файле — и вы мгновенно переместитесь к тому месту, где она объявлена.
  • Найти все вхождения: Нажмите Shift+F12 — откроется список всех строк, где используется этот символ.
  • Переименовать символ: Нажмите F2, введите новое имя — и метка (или константа) переименуется во всем проекте. Это спасает от случайных ошибок.
  • Наведение: Наведите мышь на команду LDIR — всплывет подсказка: *"LDIR: Block transfer, 21 t-states, repeats until BC=0"*.

🏗️ Структура типичного проекта

Обычно проект выглядит так:
Код:
MyGame/
├── .vscode/
│   ├── tasks.json       (настройка сборки через sjasmplus)
│   └── launch.json      (настройка запуска отладчика, например, DeZog)
├── src/
│   ├── main.asm         (главный файл)
│   ├── variables.asm    (объявление переменных)
│   ├── macros.asm       (макросы)
│   └── includes/        (библиотеки)
└── Makefile             (или просто скрипт сборки)

🛠️ ДИРЕКТИВЫ И СИНТАКСИС (НА ПРИМЕРЕ sjasmplus)

Расширение "понимает" синтаксис популярных ассемблеров, особенно sjasmplus. Вот как выглядят типичные конструкции:
Assembler Z80:
; Пример программы для ZX Spectrum
    device zxspectrum48       ; Директива sjasmplus: указываем платформу
    org 32768                 ; Начальный адрес

; Определяем константы
SCR_ADDR    equ 16384
ATTR_ADDR   equ 22528
BLACK_WHITE equ %01111000     ; Бинарная константа (атрибут: белое на черном, яркий)

; Основная программа
Start:
    ; Чистим экран
    ld hl, SCR_ADDR
    ld de, SCR_ADDR + 1
    ld bc, 6912 - 1
    ld (hl), 0                ; Пиксели в 0
    ldir

    ; Заполняем атрибуты
    ld hl, ATTR_ADDR
    ld de, ATTR_ADDR + 1
    ld bc, 767
    ld (hl), BLACK_WHITE
    ldir

    ; Выводим сообщение
    ld hl, HelloMsg
    call PrintString

    jr $                      ; Бесконечный цикл

; Процедура печати строки (HL - адрес строки, заканчивается 0)
PrintString:
    ld a, (hl)
    or a
    ret z
    rst 16h                  ; Вызов системной процедуры ROM (вывод символа)
    inc hl
    jr PrintString

HelloMsg:
    db "HELLO, RETRO WORLD!", 0

; Область данных (переменные)
Variables:
    Score       dw 0         ; Счет (2 байта)
    Lives       db 3         ; Жизни (1 байт)
    PlayerPos   dw 0         ; Позиция игрока

    savebin "game.bin", Start, $-Start  ; Сохраняем бинарник
    savesna "game.sna", Start           ; Сохраняем снапшот

🧰 ЭКОСИСТЕМА: С ЧЕМ ДРУЖИТ РАСШИРЕНИЕ

Z80 Macro-Assembler — это только первый слой в современном стеке технологий для спектрумиста. Вместе с ним обычно используют:
  1. DeZog (отладчик) — позволяет ставить брейкпоинты прямо в VS Code, смотреть регистры, память, выполнять код пошагово в эмуляторе или на реальном ZX Next. ALDEBUG из 1989 года отдыхает.
  2. Z80 Instruction Set (еще одно расширение от maziac) — добавляет подробные подсказки по каждой инструкции.
  3. Hex Hover Converter — показывает значение числа под курсором в десятичном, двоичном и hex-формате.
  4. Sjasmplus — собственно, компилятор.
  5. Эмуляторы (ZEsarUX, CSpect, Fuse) — для запуска результата. Их можно вызывать прямо из VS Code через задачи.

📊 СРАВНЕНИЕ С КЛАССИЧЕСКИМИ АССЕМБЛЕРАМИ


ХарактеристикаALASM (на Spectrum)Z80 Macro-Assembler + VS Code
РедактированиеВстроенный редактор с "горячими" клавишамиПолноценный современный редактор с подсветкой, автодополнением, мультикурсором, неограниченным undo/redo
НавигацияПоиск метки по имениGo to Definition, Peek, Rename Symbol по всему проекту
МакросыМощные, но синтаксис требует привыканияПоддержка макросов sjasmplus (очень гибких)
ОтладкаВстроенный ALDEBUGВнешний DeZog с графическим интерфейсом в том же окне
Скорость работыЗависит от частоты SpectrumМгновенно на современном ПК
Работа с большими проектамиОграничена памятью 48/128КОграничена только диском и ОЗУ компьютера
Русский языкПолная поддержка CP866Поддержка Unicode, можно писать комментарии по-русски без проблем
Современный GitНетПолная интеграция с системами контроля версий

🎨 ПЛЮСЫ И МИНУСЫ (ГДЕ МОЛОТОК, А ГДЕ ГАЕЧНЫЙ КЛЮЧ)

✅ Плюсы (Почему это удобно)

  • Современный интерфейс: Вы не отвлекаетесь на ограничения ретро-машины во время написания кода.
  • Интеллектуальная помощь: Автодополнение и подсказки ускоряют написание и снижают число глупых ошибок.
  • Рефакторинг: Переименование метки в 2 клика — мечта любого, кто правил чужой код в ALASM.
  • Кроссплатформенность: Можно работать на Windows, сидя на macOS или Linux.
  • Интеграция: Все инструменты (компиляция, запуск, отладка) под рукой, в одном окне.

❌ Минусы (Кому это может не подойти)

  • Требует современного ПК: Нужен компьютер, на котором запускается VS Code (хотя это сейчас почти любой).
  • Потеря аутентичности: Нет того самого "лампового" ощущения работы на реальном Spectrum, когда код пишется прямо на "железе". Это эмуляция рабочего процесса, а не реальность.
  • Настройка окружения: Чтобы всё работало вместе (расширение + sjasmplus + DeZog + эмулятор), нужно один раз настроить, что может отпугнуть абсолютных новичков.
  • Нет встроенного эмулятора: Расширение отвечает только за код. Запуск и отладку нужно настраивать отдельно (через DeZog или задачи).

🧪 СОВЕТЫ БЫВАЛОГО (КАК ИСПОЛЬЗОВАТЬ ЭФФЕКТИВНЕЕ)

  1. Используйте сниппеты (snippets). Можно создать свои шаблоны для часто используемых конструкций (например, для процедуры вывода числа или обработки прерывания).
  2. Настройте Tasks. Пропишите в tasks.json задачу, которая будет запускать sjasmplus с нужными ключами. Тогда компиляция будет в один клик.
  3. Интегрируйте DeZog. Потратьте полчаса на настройку launch.json для DeZog. Возможность ставить брейкпоинты мышкой и видеть переменные в рантайме стоит этого.
  4. Держите под рукой документацию. Расширение облегчает написание кода, но знание команд Z80 и особенностей Spectrum никто не отменял.

📖 ЗАКЛЮЧЕНИЕ: ЭВОЛЮЦИЯ ИНСТРУМЕНТАРИЯ СПЕКТРУМИСТА

Z80 Macro-Assembler для VS Code — это не попытка заменить старичка ALASM или STORM. Это новый виток эволюции. Это инструмент для тех, кто хочет писать код для ZX Spectrum, используя все блага современной разработки: удобный редактор, систему контроля версий, мощный рефакторинг и интеграцию с отладчиками.

Как когда-то ALASM дал спектрумистам "молоток и гаечный ключ" для профессиональной сборки программ прямо на машине, так сегодня Z80 Macro-Assembler дает нам, современным разработчикам, целую автоматизированную мастерскую внутри VS Code.

Он не отменяет магии ретро-программирования. Он просто делает процесс создания этой магии более комфортным, быстрым и менее подверженным ошибкам. Хотите писать под Spectrum как профи 2020-х? Это ваш выбор.

Ссылка на аддон - Z80 Macro-Assembler


P.S. Некоторые пуристы скажут: "Настоящие пишут в ALASM на реальном спектруме!". И они будут по-своему правы. Но если вы цените своё время и хотите создавать сложные проекты, которые потом всё равно поедут на реальное железо — добро пожаловать в мир современных ассемблерных тулов. Удачи в разработке!