Жизнь на Векторе
Статья для тех, кто решит писать “с нуля” или портировать свои проекты на Вектор-06Ц: где что брать, как использовать, какие есть подходы. Платформа имеет массу нюансов, не меньше (а то и больше), чем ZX Spectrum. Опыт программирования для ZX Spectrum будет плюсом, т. к. все сравнения будут проводиться именно с ним — как наиболее изученным и документированным в России микрокомпьютером.
Бинарный rom-файл можно конвертировать утилитой bin2wav в .wav для записи на реальную кассету и загрузки через магнитофон на настоящий Вектор.

Чисто ленточный формат — .cas (англ. Cassette). Похож на форматы .tap и .tzx для ZX Spectrum. Содержит токенизированные программы на Бейсике для загрузки через магнитофонные бейсики. Программные эмуляторы перехватывают команды Бейсика CLOAD/CSAVE, позволяя программировать «под ленту». Аппаратные эмуляторы (FPGA, например MiSTer) не умеют перехватывать обращения к магнитофону, поэтому значительное «бейсиковское» наследие Вектора напрямую для них недоступно.
Однако программировать так неудобно. Тексты обычно пишут в редакторах на ПК, а затем конвертируют в .cas и обратно утилитами Vector06C-Basic-Converter или bin2cas.
Крупные программы на Бейсике часто состоят из двух .cas-файлов. Возможны варианты:
Это усложняет запуск для пользователя. Поэтому для распространения составных Бейсик-программ формат .rom предпочтительнее. Пользователь загружающий rom-файлы часто даже не отличает программы написанные на ассемблере от программ на Бейсике.
Программисту на Векторе нетрудно написать на ассемблере код, который будет работать медленнее аналогичного на Бейсик, т. к. КР580ВМ80А медленнее Intel 8080 и, тем более, Z80. В то же время 06Ц Бейсик, несмотря на нерациональный расход памяти, сложности с фоновой музыкой и подзагрузкой, обладает отточенными графическими и математическими процедурами и семикратно превосходит по производительности тот же Sinclair Basic. Характерная для ZX Spectrum парадигма превосходства ассемблера над Бейсиком на Векторе не вполне работает.
Кассета была просто неудобна, тем более что к Вектору подключали и дисководы, и винчестеры, и даже квазидиск объёмом 256 КБ с собственной файловой системой в памяти. Подавляющее большинство игр, демо и электронных журналов от ведущих вектористов Ленинграда, Кирова и Харькова создавалось исключительно для диска.

Вторым недостатком ленточных форматов является опосредованное превращение микрокомпьютера в игровую приставку. Неслучайно для Вектора в разное время было создано несколько проектов картриджей позволяющих быстро поиграть в исторические игры, например картридж GAME500.
Наиболее ярко преимущество дисковых форматов проявляется при написании больших и составных программ. Невозможно писать для ленты игры наподобие “Lemmings”, предполагающие подзагрузку большого (потенциально — неограниченного) числа уровней. При использовании дампов напрочь теряются заставки, интро и трейнеры, «кастрируя» программное обеспечение. Дисковые демонстрации разбитые на дампы, например ”Lyra II”, смотрятся нелепо.
Образа дискет для Вектор-06Ц имеют расширение .fdd, являются загрузочными и содержат в себе МикроДОС. Это советская ОС разработанная на основе CP/M 2.2 и совместимая с ПО для CP/M 2.2 и 3.1. Не следует путать её с MicroDOS для микрокомпьютеров БК-0010-01.

МикроДОС позволяет использовать сокровищницу серьёзных компиляторов для CP/M на уровне «бери и пользуйся». Например, на конкурсе RETROГРАД 2025 я выставил мини-сборник “Пять игр из CP/M на русском языке”, снабжённый загрузчиком объясняющим какая игра про что. Будет полезным рассказать о том, как это работает.
Загрузочный диск содержит МикроДОС Bold-BIOS в варианте 47K. Это означает, что запускаемым программам доступно 47 КБ. Данная версия МикроДОС имеет тональную озвучку ввода, что оживляет текстовые игры. Кроме того, в ней использует удобочитаемый шрифт для режима 80 символов в строке, а процедуры вывода текста — ускорены.
При старте МикроДОС ищет и исполняет текстовый файл INITIAL.SUB (аналог AUTOEXEC.BAT в MS-DOS). Важно упомянуть, что поскольку МикроДОС читает файлы посекторно, файл либо должен быть создан в её среде (например, в редакторе MEDIT), либо после основного содержимого необходимо добавить символы ^Z до конца сектора. Иначе после выполнения в консоли появится мусор в виде символов @.
Мой INITIAL.SUB состоит из двух строк:

Команда 0 исполняет ESC-последовательность задающую цвет терминала, после неё идёт аргумент с HEX-числом определяющим фон $88 (синий) и тон $FF (белый), затем следует завершающий аргумент P. Строка BOOT указывает, что надо загрузить и запустить с текущего диска BOOT.COM.
Загрузчик BOOT.COM написан на ассемблере. Он умеет загружать и запускать файлы с играми: ARTIL.COM, BOGATYR.COM, CIVILWAR.COM, ACEYDUCY.COM и HAMURABI.COM. После завершения игры можно выйти в МикроДОС, где игрок может набрать BOOT, нажать ВК (Enter) и вернуться в загрузчик.
Перечисленные игры изначально были написаны на английском языке, для разных архаичных Бейсиков и под разные терминалы. За конечное время я перевёл их на русский язык (в кодировке KOI8-R присущей МикроДОС), исправил форматирование, добавил звук “звонка” для острых игровых моментов и адаптировал к синтаксису Digital Research CBASIC v2 из CP/M. Который без проблем собрал мне исполняемые COM-файлы.
Для CP/M существует не только трилогия Zork и Гвоздь, но и порядка 2500 игр ждущих своего часа для того, чтобы быть открытыми русскими пользователями. Не считая огромного числа утилит и приложений самого разного назначения.
Вектор-06Ц имеет и свой набор языков программирования, из которых надо отметить дисковый Бейсик v2.5 идентичный натуральному ленточному. Файлы этого Бейсика на диске будут иметь расширение .bas (а не .cas) и могут быть приготовлены на ПК при помощи упоминавшейся выше утилиты Vector06C-Basic-Converter. Спрайтовая мультипликация в Бейсике может быть создана при помощи пакета BASS.

Из известного советского наследия ЯП можно обратить внимание на BASIC Корвет, BASIC СЧЁТМАШ, Система-Форт и ЛС-Паскаль. Для Вектор Плюс с процессором Z80 есть Turbo Pascal v3.02A. Из наследия CP/M чаще всего используют Microsoft BASCOM, Microsoft Macro-80 Assembler, BDS C Compiler, а также рекомендую DR CBASIC v2.
Продвинутый спектрумист может спросить: зачем всё это, если есть современные компиляторы для ассемблера 8080, Си и Форта? Если бы Вектор был платформой «без истории», это было бы верно. Однако легенды Вектора оставили немало исходников на перечисленных языках, которые можно использовать как готовую основу. Время на их адаптацию может быть сравнимо с написанием кода «с нуля». Вместо этого проще пользоваться историческими компиляторами и интерпретаторами — тем более, что они работают. В конечном итоге это вопрос настройки IDE, можно совмещать подходы.
Пользователи эмуляторов ZX Spectrum привыкли к простому алгоритму: открыть .scl/.trd-файл, поработать в эмуляторе и сохранить изменения обратно в тот же или другой .scl/.trd-файл. В эмуляторах Вектора опция «Open FDD Image…» может ввести в заблуждение. Тем более что опция «Save FDD Image...» отсутствует. На самом деле эмуляторы скорей не «открывают» .fdd-файлы, а монтируют их, подобно тому, как это делается в Linux.

Для создания образов дисков под Вектор необходима утилита SteinBlume, которая позволяет создавать файлы в формате .fdd. В окне «Create Image File» будет предложено выбрать один из 18 файлов имеющих расширение .bin – это и есть разные модификации МикроДОС из коллекции авторов программы. Ниже будет дано краткое пояснение, например для biosfh51.bin будет написано «MicroDOS 3.1 BIOS FH5.1 ABCD-DISK DRIVE-FILIPOV, HDD-FROLOV». Откуда видно, что данная версия поддерживает 4 дисковода (автор поддержки Филлипов) и винчестер (автор поддержки Фролов).
МикроДОС и CP/M имеют особенность: один и тот же диск могут использовать до 15 пользователей и каждый будет иметь свою файловую область «User N». Области пользователей переключаются командой U <число 1-15>. Область «User 0» общесистемная. Существуют утилиты позволяющие запаролить каждую область.
Вектористы часто используют файловые области вместо директорий, которые их ОС не поддерживает. Часто удаляют утилиты которыми пользовались и исходники после компиляции. Поэтому, открывая чужой fdd-образ из какой-нибудь коллекции в программе SteinBlume, стоит пробежаться по областям и заглянуть в Deleted. С большой вероятностью там найдёте много интересного.
Хотите использовать версию МикроДОС, которой нет в SteinBlume? Скачайте нужный дистрибутив (например, с сайта OLD-DOS) и утилиту SYSGEN.COM. Поместите файлы дистрибутива (скажем, MDBOLD56.COM) и SYSGEN.COM на чистый образ дискеты и загрузитесь с него. После этого можно запустить MDBOLD56.COM, чтобы увидеть выбранную версию МикроДОС. Для её установки на диск выполните команду:
, где
Скопировать INITIAL.SUB в empty.fdd
Скопировать файл BOGATYR.BAS из образа CPMGAMES.fdd на ПК
Так это может выглядеть в Windows:

Описание остальных операций есть в файле file_id.diz внутри архива.
У пакета CPMTools (при всех его великих возможностях) есть неустранимый недостаток: он не работает с файлами по абсолютным путям.
Годная стратегия — создать в директории cpmtools-2.23-vector подкаталоги:
Ваша среда сборки может копировать скомпилированные com-файлы в директорию src, а затем вызывать cpmcp для их переноса в целевой fdd-образ.
Также стоит упомянуть простую утилиту v06c-fddutil для создания образов МикроДОС и добавления в них файлов. Возможно, это всё, что вам нужно.
Эмуляторы
Для работы потребуются все три:| Virtual Vector (VV) – самый интуитивно-понятный эмулятор. Поддерживает большинство форматов и четыре процессора платформы (8080A, 8085A, КР580ВМ1, Z80), между которыми можно переключаться в один клик и менять им частоту. Удобен для записи экрана через OBS. Имеет примитивные отладчик и профайлер. | ![]() |
| Emu80 QT – наиболее точный эмулятор, отладку следует вести именно в нём. Обладает лучшим для Вектора отладчиком. Позволяет гибко менять частоту процессора, а не выбирать из фиксированных значений, как VV. Запись экрана этого эмулятора через OBS не работает. | ![]() |
v06x – эмулятор на движке Godot. Имеет утилитарный отладчик и обладает двумя ключевыми фишками:
| ![]() |
Форматы ПО
Выбор формата влияет на инструменты разработки и доступность готового продукта. Есть два типа носителей: лента (картридж) и диск (винчестер, квазидиск). Для каждого — два подхода: ассемблер или языки программирования.Лента
Наиболее распространены форматы .rom и .ram (эмуляторы также поддерживают .r0m и .vec). Похожи на форматы .sna, .z80, .frozen и т. п. для эмуляторов ZX Spectrum, т. к. являются снимками памяти (дампами).- .rom — дамп памяти с адреса $00100 (точка входа в МикроДОС и CP/M), может иметь произвольный размер.
- .ram (64КБ) — дамп всей памяти с $00000 по $0FFFF.
Бинарный rom-файл можно конвертировать утилитой bin2wav в .wav для записи на реальную кассету и загрузки через магнитофон на настоящий Вектор.
Подробное описание ленточного rom-формата можно найти в "Справочное руководство по компьютеру «Вектор-06Ц»" А.Ю.Черезов, фирма Системотехника, г.Волгоград, 1993

Чисто ленточный формат — .cas (англ. Cassette). Похож на форматы .tap и .tzx для ZX Spectrum. Содержит токенизированные программы на Бейсике для загрузки через магнитофонные бейсики. Программные эмуляторы перехватывают команды Бейсика CLOAD/CSAVE, позволяя программировать «под ленту». Аппаратные эмуляторы (FPGA, например MiSTer) не умеют перехватывать обращения к магнитофону, поэтому значительное «бейсиковское» наследие Вектора напрямую для них недоступно.
Однако программировать так неудобно. Тексты обычно пишут в редакторах на ПК, а затем конвертируют в .cas и обратно утилитами Vector06C-Basic-Converter или bin2cas.
Крупные программы на Бейсике часто состоят из двух .cas-файлов. Возможны варианты:
- первый — подготавливает окружение, второй — содержит исполняемый код (например, игра «Поле Чудес»).
- второй содержит данные для первого (например, игра «Приключения Флэксика»).
Это усложняет запуск для пользователя. Поэтому для распространения составных Бейсик-программ формат .rom предпочтительнее. Пользователь загружающий rom-файлы часто даже не отличает программы написанные на ассемблере от программ на Бейсике.
Программисту на Векторе нетрудно написать на ассемблере код, который будет работать медленнее аналогичного на Бейсик, т. к. КР580ВМ80А медленнее Intel 8080 и, тем более, Z80. В то же время 06Ц Бейсик, несмотря на нерациональный расход памяти, сложности с фоновой музыкой и подзагрузкой, обладает отточенными графическими и математическими процедурами и семикратно превосходит по производительности тот же Sinclair Basic. Характерная для ZX Spectrum парадигма превосходства ассемблера над Бейсиком на Векторе не вполне работает.
Диск
Из описания ленточных форматов могло сложиться впечатление, что они предпочтительнее дисковых. Однако это не так. Подобно тому, как для ZX Spectrum наиболее достойное ПО существует в форматах .scl и .trd, для Вектора таким форматом является .fdd.Кассета была просто неудобна, тем более что к Вектору подключали и дисководы, и винчестеры, и даже квазидиск объёмом 256 КБ с собственной файловой системой в памяти. Подавляющее большинство игр, демо и электронных журналов от ведущих вектористов Ленинграда, Кирова и Харькова создавалось исключительно для диска.

Вторым недостатком ленточных форматов является опосредованное превращение микрокомпьютера в игровую приставку. Неслучайно для Вектора в разное время было создано несколько проектов картриджей позволяющих быстро поиграть в исторические игры, например картридж GAME500.
Наиболее ярко преимущество дисковых форматов проявляется при написании больших и составных программ. Невозможно писать для ленты игры наподобие “Lemmings”, предполагающие подзагрузку большого (потенциально — неограниченного) числа уровней. При использовании дампов напрочь теряются заставки, интро и трейнеры, «кастрируя» программное обеспечение. Дисковые демонстрации разбитые на дампы, например ”Lyra II”, смотрятся нелепо.
Образа дискет для Вектор-06Ц имеют расширение .fdd, являются загрузочными и содержат в себе МикроДОС. Это советская ОС разработанная на основе CP/M 2.2 и совместимая с ПО для CP/M 2.2 и 3.1. Не следует путать её с MicroDOS для микрокомпьютеров БК-0010-01.
Можно просто переименовать rom-файл, сменив расширение с .rom на .com, скопировать его на дискету и запустить с диска. Надо понимать, что из дампа которому сменили расширение на .com не удастся вернуться в МикроДОС иначе чем через перезагрузку. В обратной ситуации, если у вас есть программа в виде com-файла, которая после запуска должна работать с диском, то после смены ей расширения на .rom она, конечно же, работать не будет.

МикроДОС позволяет использовать сокровищницу серьёзных компиляторов для CP/M на уровне «бери и пользуйся». Например, на конкурсе RETROГРАД 2025 я выставил мини-сборник “Пять игр из CP/M на русском языке”, снабжённый загрузчиком объясняющим какая игра про что. Будет полезным рассказать о том, как это работает.
Загрузочный диск содержит МикроДОС Bold-BIOS в варианте 47K. Это означает, что запускаемым программам доступно 47 КБ. Данная версия МикроДОС имеет тональную озвучку ввода, что оживляет текстовые игры. Кроме того, в ней использует удобочитаемый шрифт для режима 80 символов в строке, а процедуры вывода текста — ускорены.
При старте МикроДОС ищет и исполняет текстовый файл INITIAL.SUB (аналог AUTOEXEC.BAT в MS-DOS). Важно упомянуть, что поскольку МикроДОС читает файлы посекторно, файл либо должен быть создан в её среде (например, в редакторе MEDIT), либо после основного содержимого необходимо добавить символы ^Z до конца сектора. Иначе после выполнения в консоли появится мусор в виде символов @.
Мой INITIAL.SUB состоит из двух строк:
0 88FF P
BOOT

Команда 0 исполняет ESC-последовательность задающую цвет терминала, после неё идёт аргумент с HEX-числом определяющим фон $88 (синий) и тон $FF (белый), затем следует завершающий аргумент P. Строка BOOT указывает, что надо загрузить и запустить с текущего диска BOOT.COM.
Загрузчик BOOT.COM написан на ассемблере. Он умеет загружать и запускать файлы с играми: ARTIL.COM, BOGATYR.COM, CIVILWAR.COM, ACEYDUCY.COM и HAMURABI.COM. После завершения игры можно выйти в МикроДОС, где игрок может набрать BOOT, нажать ВК (Enter) и вернуться в загрузчик.
Перечисленные игры изначально были написаны на английском языке, для разных архаичных Бейсиков и под разные терминалы. За конечное время я перевёл их на русский язык (в кодировке KOI8-R присущей МикроДОС), исправил форматирование, добавил звук “звонка” для острых игровых моментов и адаптировал к синтаксису Digital Research CBASIC v2 из CP/M. Который без проблем собрал мне исполняемые COM-файлы.
Для CP/M существует не только трилогия Zork и Гвоздь, но и порядка 2500 игр ждущих своего часа для того, чтобы быть открытыми русскими пользователями. Не считая огромного числа утилит и приложений самого разного назначения.
Вектор-06Ц имеет и свой набор языков программирования, из которых надо отметить дисковый Бейсик v2.5 идентичный натуральному ленточному. Файлы этого Бейсика на диске будут иметь расширение .bas (а не .cas) и могут быть приготовлены на ПК при помощи упоминавшейся выше утилиты Vector06C-Basic-Converter. Спрайтовая мультипликация в Бейсике может быть создана при помощи пакета BASS.

Из известного советского наследия ЯП можно обратить внимание на BASIC Корвет, BASIC СЧЁТМАШ, Система-Форт и ЛС-Паскаль. Для Вектор Плюс с процессором Z80 есть Turbo Pascal v3.02A. Из наследия CP/M чаще всего используют Microsoft BASCOM, Microsoft Macro-80 Assembler, BDS C Compiler, а также рекомендую DR CBASIC v2.
Продвинутый спектрумист может спросить: зачем всё это, если есть современные компиляторы для ассемблера 8080, Си и Форта? Если бы Вектор был платформой «без истории», это было бы верно. Однако легенды Вектора оставили немало исходников на перечисленных языках, которые можно использовать как готовую основу. Время на их адаптацию может быть сравнимо с написанием кода «с нуля». Вместо этого проще пользоваться историческими компиляторами и интерпретаторами — тем более, что они работают. В конечном итоге это вопрос настройки IDE, можно совмещать подходы.
МикроДОС
Эксплуатация
Вектор-06Ц мог поставляться с МикроДОС v3.1 и BIOS vD1.0, но оригинальную версию сегодня уже не найти. За годы существования платформы энтузиасты многократно дорабатывали МикроДОС, меняя настройки по умолчанию: выбор дисков и квазидиска, добавление поддержки винчестера, энергонезависимых часов, переключение режимов 40/50/80 символов в строке, озвучивание ввода, увеличение памяти для приложений, замена шрифтов на более читаемые, а также изменение кодировки и даже регистра ввода. Существует около сотни различных версий и модификаций МикроДОС, и ни одна из них не совместима с переменными и константами, описанными в документации к оригиналу.Пользователи эмуляторов ZX Spectrum привыкли к простому алгоритму: открыть .scl/.trd-файл, поработать в эмуляторе и сохранить изменения обратно в тот же или другой .scl/.trd-файл. В эмуляторах Вектора опция «Open FDD Image…» может ввести в заблуждение. Тем более что опция «Save FDD Image...» отсутствует. На самом деле эмуляторы скорей не «открывают» .fdd-файлы, а монтируют их, подобно тому, как это делается в Linux.
- Emu80 QT по умолчанию монтирует образ дискеты с защитой от записи и блокирует файл. Поэтому вы не сможете изменять в SteinBlume образ, подключённый в Emu80, пока эмулятор запущен. Чтобы запретить запись на диск, поставьте галочку напротив пункта «Защита записи» в меню.
- Virtual Vector, напротив, по умолчанию монтирует образ только для чтения, но не блокирует файл. Чтобы изменения в эмуляторе сохранялись в образе, снимите галочку с опции «Read Only» перед его подключением.
Создание образов дисков

Для создания образов дисков под Вектор необходима утилита SteinBlume, которая позволяет создавать файлы в формате .fdd. В окне «Create Image File» будет предложено выбрать один из 18 файлов имеющих расширение .bin – это и есть разные модификации МикроДОС из коллекции авторов программы. Ниже будет дано краткое пояснение, например для biosfh51.bin будет написано «MicroDOS 3.1 BIOS FH5.1 ABCD-DISK DRIVE-FILIPOV, HDD-FROLOV». Откуда видно, что данная версия поддерживает 4 дисковода (автор поддержки Филлипов) и винчестер (автор поддержки Фролов).
МикроДОС и CP/M имеют особенность: один и тот же диск могут использовать до 15 пользователей и каждый будет иметь свою файловую область «User N». Области пользователей переключаются командой U <число 1-15>. Область «User 0» общесистемная. Существуют утилиты позволяющие запаролить каждую область.
Вектористы часто используют файловые области вместо директорий, которые их ОС не поддерживает. Часто удаляют утилиты которыми пользовались и исходники после компиляции. Поэтому, открывая чужой fdd-образ из какой-нибудь коллекции в программе SteinBlume, стоит пробежаться по областям и заглянуть в Deleted. С большой вероятностью там найдёте много интересного.
Хотите использовать версию МикроДОС, которой нет в SteinBlume? Скачайте нужный дистрибутив (например, с сайта OLD-DOS) и утилиту SYSGEN.COM. Поместите файлы дистрибутива (скажем, MDBOLD56.COM) и SYSGEN.COM на чистый образ дискеты и загрузитесь с него. После этого можно запустить MDBOLD56.COM, чтобы увидеть выбранную версию МикроДОС. Для её установки на диск выполните команду:
SYSGEN A:MDBOLD56.COM A:100, где
- A: — диск;
- MDBOLD56.COM — имя дистрибутива;
- 100 — 16-тиричный адрес начальной загрузки МикроДОС в ОЗУ.
Обмен файлами
Обмен файлами между ПК и fdd-образами часто требуется автоматизировать. Это можно сделать используя CPMTools 2.23 с добавленными определениями для образов дисков используемых на Вектор-06Ц (.fdd), а также его брате Корвет (.kdi, .z88dk). Michael Haardt обещал мне добавить их в официальный релиз, так что существует вероятность получения cpmtools с поддержкой Вектора и Корвета из пакетов вашего любимого дистрибутива Linux.Скопировать INITIAL.SUB в empty.fdd
cpmcp -f vector images\empty.fdd src\INITIAL.SUB 0:INITIAL.SUBСкопировать файл BOGATYR.BAS из образа CPMGAMES.fdd на ПК
cpmcp -f vector images\CPMGAMES.fdd 0:BOGATYR.BAS BOGATYR.BASТак это может выглядеть в Windows:

Описание остальных операций есть в файле file_id.diz внутри архива.
У пакета CPMTools (при всех его великих возможностях) есть неустранимый недостаток: он не работает с файлами по абсолютным путям.
Годная стратегия — создать в директории cpmtools-2.23-vector подкаталоги:
- images — для пустых и итоговых образов дискет.
- src — для файлов, которые нужно часто помещать в образы.
Ваша среда сборки может копировать скомпилированные com-файлы в директорию src, а затем вызывать cpmcp для их переноса в целевой fdd-образ.
Также стоит упомянуть простую утилиту v06c-fddutil для создания образов МикроДОС и добавления в них файлов. Возможно, это всё, что вам нужно.




0 комментариев