💡 ВСТУПЛЕНИЕ: ОТ ПУСТОГО ЛИСТА К ГОТОВОЙ СТРОЙКЕ

Помните это чувство, когда вы садитесь писать новый проект на ассемблере? Сначала нужно создать папку, потом файл .z80, потом открыть VS Code, потом вспомнить, как там правильно настроить tasks.json, чтобы компилировалось, потом прописать пути к ассемблеру, потом... А ведь хочется просто писать код!

Это как строить дом: можно начать с нуля — копать котлован, замешивать бетон, класть кирпичи... А можно взять готовый типовой проект дома и просто достроить к нему свои комнаты.

Z80-ProjectTemplate от разработчика Egbert-Azure — это именно такой готовый типовой проект. Это не просто расширение, а полностью настроенная среда для разработки на ассемблере Z80 с использованием компилятора Pasmo, которая работает в VS Code сразу после клонирования .

Никаких больше танцев с бубном при настройке нового проекта. Скачал, открыл, нажал Ctrl+Shift+B — и код компилируется.


🏗️ ЧТО ТАКОЕ Z80-PROJECTTEMPLATE И ЗАЧЕМ ОН НУЖЕН?

Z80-ProjectTemplate — это шаблон репозитория на GitHub, который содержит готовую структуру папок и файлов для разработки на ассемблере Z80 в Visual Studio Code с использованием ассемблера Pasmo .

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

  1. Готовая структура проекта — папки и файлы уже разложены по местам.
  2. Преднастроенный tasks.json — задача сборки для Pasmo уже прописана. Нажал Ctrl+Shift+B — код компилируется .
  3. Пример hello.z80 — можно сразу посмотреть, как писать код, и проверить, что сборка работает.
  4. Интеграция с z80-macroasm — шаблон рассчитан на совместную работу с расширением Z80 Macro-Assembler от mborik (подсветка, автодополнение, навигация) .
  5. Поддержка отладочной информации — Pasmo запускается с ключом -d, генерируя информацию для отладчиков .
  6. Готовые .gitattributes и лицензия — для тех, кто использует Git.
  7. MIT License — можно использовать в любых проектах, даже коммерческих .

🧬 ИСТОРИЧЕСКИЙ КОНТЕКСТ: ЭВОЛЮЦИЯ НАЧАЛА ПРОЕКТОВ


ЭпохаМетод начала проектаВремя настройкиБоль
1980-еВставить дискету с ALASM1 минутаМаленькая (дискета уже готова)
1990-еСоздать файл в текстовом редакторе, потом компилировать вручную5 минутСредняя (нужно помнить ключи)
2000-еНастроить Makefile с нуля30 минутВысокая (особенно на Windows)
2010-еСкачать готовый Makefile из интернета, подправить под себя15 минутСредняя
2020-еZ80-ProjectTemplate2 минутыНулевая

Z80-ProjectTemplate — это эволюционный шаг. Он берёт лучшее из эпохи "всё на дискете" (готовое окружение) и переносит это в современный мир Git и VS Code.


⚙️ УСТАНОВКА И НАСТРОЙКА: 5 ШАГОВ ЗА 5 МИНУТ

📥 Шаг 1: Установка необходимого ПО

Прежде чем клонировать шаблон, убедитесь, что у вас установлены :
  1. Visual Studio Code — скачайте с code.visualstudio.com.
  2. Pasmo Assembler— кросс-ассемблер для Z80.
    • Windows: скачайте с pasmo.speccy.org (есть готовые бинарники).
    • Linux: sudo apt install pasmo (или через менеджер пакетов вашего дистрибутива).
    • macOS: brew install pasmo (если есть Homebrew).
  3. Z80 Macro-Assembler extension — расширение для VS Code от mborik. Установите через маркет расширений (иконка с синей микросхемой) .

📦 Шаг 2: Получение шаблона

Есть два способа:

Способ А: Клонировать репозиторий (рекомендуется)
Bash:
git clone https://github.com/Egbert-Azure/Z80-ProjectTemplate.git мой-новый-проект
cd мой-новый-проект
code .  # Открыть в VS Code

Способ Б: Скачать ZIP
  1. Перейдите на страницу репозитория.
  2. Нажмите зелёную кнопку "Code""Download ZIP".
  3. Распакуйте архив в папку нового проекта.
  4. Откройте эту папку в VS Code.

🔧 Шаг 3: Настройка путей к Pasmo (важно!)

Шаблон уже содержит .vscode/tasks.json, но в нём нужно прописать правильный путь к вашему pasmo.

Откройте файл .vscode/tasks.json и найдите секцию:
JSON:
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "assemble",
            "type": "shell",
            "command": "pasmo",  // ← ЗДЕСЬ МОЖЕТ БЫТЬ НУЖЕН ПОЛНЫЙ ПУТЬ
            "args": [
                "-d",           // Отладочная информация
                "${file}",
                "${fileDirname}/${fileBasenameNoExtension}.com"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": []
        }
    ]
}

Если pasmo не находится по PATH (например, на Windows после ручной установки), замените "pasmo" на полный путь, например:
  • Windows: "C:\\pasmo\\pasmo.exe" (обратите внимание на двойные обратные слеши)
  • macOS/Linux: "/usr/local/bin/pasmo" (или где он у вас установлен)

✍️ Шаг 4: Создание своего файла

В папке src (или в корне проекта) создайте новый файл с расширением .z80. Например, game.z80.

Можно также использовать готовый hello.z80, который идёт в комплекте .

🏃 Шаг 5: Проверка сборки

  1. Откройте любой .z80 файл.
  2. Нажмите Ctrl+Shift+B (или ⇧+⌘+B на macOS).
  3. Посмотрите в терминал VS Code. Если всё хорошо, вы увидите что-то вроде:
Код:
> Executing task: pasmo -d hello.z80 hello.com <

Terminal will be reused by tasks, press any key to close it.

📁 СТРУКТУРА ПРОЕКТА (ЧТО ВНУТРИ)

После клонирования вы увидите такую структуру:
Код:
Z80-ProjectTemplate/
├── .vscode/
│   └── tasks.json           # Задача сборки для Pasmo
├── .gitattributes           # Настройки Git (окончания строк и т.д.)
├── hello.z80                # Пример программы Hello World
├── LICENSE.md               # Лицензия MIT
└── README.md                # Документация (на английском)

📄 Что внутри hello.z80?

Assembler Z80:
; Пример программы Hello World
; для ассемблера Pasmo

    org 0x8000        ; Начальный адрес (можно изменить под вашу платформу)

start:
    ld hl, message    ; HL = адрес строки
    call print_string ; Вызов процедуры вывода
    ret               ; Возврат (для CP/M или монитора)

print_string:
    ld a, (hl)        ; Загружаем символ
    or a              ; Проверка на 0 (конец строки)
    ret z             ; Если 0 — возврат
    rst 0x10          ; Вывод символа через системный вызов (для CP/M)
    inc hl            ; Следующий символ
    jr print_string   ; Повтор

message:
    db "Hello, Z80 World!", 0

    end start

Этот пример демонстрирует:
  • Директиву org для задания адреса.
  • Метки (start, print_string, message).
  • Команды Z80 (ld, call, ret, rst, inc, jr).
  • Объявление строки через db с нулевым терминатором.

🚀 РАБОЧИЙ ПРОЦЕСС (ДЕНЬ ОПЛАТЫ)​

✍️ Шаг 1: Пишем код​

Открываем game.z80 (или переименовываем hello.z80). Благодаря расширению Z80 Macro-Assembler у вас будет:
  • Подсветка синтаксиса.
  • Автодополнение команд.
  • Переход к определению меток (F12).

🔨 Шаг 2: Собираем

Нажимаем Ctrl+Shift+B. В терминале VS Code запускается команда:
Bash:
pasmo -d game.z80 game.com

Ключ -d включает генерацию отладочной информации .

🐛 Шаг 3: Отлаживаем​

Шаблон не включает встроенный отладчик, но автор предлагает использовать :
  • SIMH, MAME или QEMU — эмуляторы, поддерживающие Z80-системы (особенно с CP/M).
  • GDB в связке с эмулятором для пошаговой отладки.
Для ZX Spectrum можно использовать полученный .com файл как бинарник и загружать его в эмулятор (например, в Fuse через FILE -&gt; Open Binary... или конвертировать в TAP утилитами типа bin2tap).

🚀 Шаг 4: Запускаем​

Полученный .com файл можно:
  • Запустить в эмуляторе CP/M (например, в CP/M Box или MAME с CP/M).
  • Использовать как чистый бинарник для ZX Spectrum, загрузив по нужному адресу (укажите правильный org).
  • Конвертировать в другие форматы (TAP, SNA) с помощью дополнительных утилит.

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

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

  • Мгновенный старт: не нужно вспоминать синтаксис tasks.json или ключи Pasmo. Скачал — и работаешь .
  • Минимализм: шаблон содержит ровно то, что нужно, и ничего лишнего.
  • Интеграция с z80-macroasm: лучшая подсветка и навигация работают сразу .
  • Открытая лицензия (MIT): можно форкать, модифицировать и использовать в коммерческих проектах без ограничений .
  • Подходит для любой платформы Z80: меняете org в начале файла — и код работает под CP/M, Spectrum, MSX, SAM Coupé и т.д.
  • Пример кода в комплекте: hello.z80 — готовый шаблон для изучения и теста .

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

  • Только для Pasmo: если вы используете sjasmplus или z88dk, этот шаблон придётся переделывать (или искать другой).
  • Нет автоматического запуска в эмуляторе: шаблон только компилирует. Запуск полученного бинарника — ваша забота .
  • Нет встроенной отладки: автор честно пишет, что для отладки нужно использовать внешние инструменты .
  • Требует ручной настройки путей: если Pasmo не в PATH, нужно прописать путь в tasks.json вручную.
  • Звёзд на GitHub пока мало: всего 1 звезда на момент написания статьи, что говорит о небольшой популярности . Но для такой простой и полезной вещи это не показатель качества.

📚 ДОПОЛНИТЕЛЬНЫЕ РЕСУРСЫ

Автор шаблона любезно добавил ссылки на полезные материалы :
  1. Pasmo Documentationpasmo.speccy.org/pasmodoc.html. Полное описание всех директив и возможностей ассемблера.
  2. Z80 Assembly Language Tutorialtutorialspoint.com. Для начинающих — основы Z80.

🧩 ИНТЕГРАЦИЯ С ЭКОСИСТЕМОЙ

Z80-ProjectTemplate отлично работает вместе с:
ИнструментЗачем нужен
Z80 Macro-AssemblerПодсветка, автодополнение, навигация (обязательно)
Z80 Assembly MeterПодсчёт тактов прямо в редакторе
DeZogОтладка (можно подключить, добавив launch.json)
Hex Hover ConverterУдобный просмотр чисел в разных системах
Fuse / ZEsarUX / CSpectЭмуляторы для запуска готовых бинарников

📖 ЗАКЛЮЧЕНИЕ: МАЛ, ДА УДАЛ

Z80-ProjectTemplate — это идеальный пример инструмента, который решает одну конкретную проблему и решает её идеально.

Он не пытается заменить ассемблер, отладчик или документацию. Он просто даёт вам готовую стартовую площадку, с которой вы можете начать писать код через 2 минуты после того, как решили начать новый проект.

Если вы пишете на Pasmo и используете VS Code — этот шаблон сэкономит вам часы суммарно за год. Не нужно каждый раз вспоминать, как настраивается tasks.json, не нужно копировать старые настройки из другого проекта. Просто склонировал — и работаешь.

Особая благодарность автору, Egbert-Azure, за то, что поделился этим с сообществом под лицензией MIT. Такие маленькие, но добротные инструменты делают нашу ретро-разработку чуточку комфортнее.

Ссылка на аддон - Z80-ProjectTemplate


P.S. Если вы используете другой ассемблер (не Pasmo), не расстраивайтесь. Возьмите структуру этого шаблона и замените в tasks.json команду на вашу (например, sjasmplus). Принцип тот же.

P.P.S. Не забудьте поставить звёздочку автору на GitHub, если шаблон оказался полезным — он это заслужил .