Введение: Революция в хранении данных
К середине 1980-х кассетная загрузка на ZX Spectrum стала основным узким местом. Загрузка крупной игры могла занимать 5-10 минут, а ошибки чтения были обычным делом. Ответом на эти вызовы стало появление дисковых контроллеров, самым массовым из которых стал Beta Disk от компании Technology Research Ltd (позже известной как TR-DOS).Формат .TRD — это образ диска, созданного для этой дисководной системы. Он представляет собой полный посекторный дамп 5.25-дюймовой дискеты (реже 3.5-дюймовой), отформатированной под управление операционной системы TR-DOS. Появление дисков и этого формата разделило эпоху Spectrum на «до» и «после», кардинально повысив скорость и удобство работы.
Историческая справка: От Beta Disk до стандарта де-факто
Система Beta Disk (интерфейсный блок + дисковод) появилась примерно в 1986 году. Её сердцем была операционная система TR-DOS (версии 5.03, 5.04T были наиболее популярны), которая загружалась в память Spectrum и полностью брала на себя управление дискетами.Почему TR-DOS и .TRD стали стандартом?
- Доступность: Контроллер был относительно недорогим и хорошо документированным.
- Ёмкость: Одна двусторонняя дискета на 80 дорожек вмещала до 800 КБ данных (обычно использовалось 640 КБ), что было несравнимо с кассетой.
- Скорость: Загрузка программы с диска занимала секунды вместо минут.
- Экосистема: Под TR-DOS была адаптирована огромная библиотека софта, особенно в Восточной Европе и СССР, где этот формат стал доминирующим.
Детальная структура формата .TRD
Файл .TRD — это посекторная копия дискеты. Его стандартный размер для эмуляции — 655360 байт (640 КБ), что соответствует 80 дорожкам, 2 сторонам, 16 секторам на дорожку и 256 байтам в секторе: 80 * 2 * 16 * 256 = 655360.Структура диска жёстко определена TR-DOS.
1. Сектор 0, Дорожка 0, Сторона 0: Загрузочный сектор и каталог диска
Первый сектор диска содержит системную информацию и начало каталога файлов.| Смещение (в секторе) | Длина | Содержимое и описание |
|---|---|---|
0x00 | 224 байта | Программа-загрузчик (Loader). Небольшой машинный код, который первым считывается при обращении к диску. Его основная задача — загрузить с диска саму ОС TR-DOS в память. |
0xE0 | 1 байт | Количество файлов в каталоге (максимум 128). Значение 0xE5 обозначает удалённый файл. |
0xE1 | 1 байт | Общее количество секторов (дорожек), занимаемых файлами на диске. |
0xE2 | 2 байта | Служебная информация TR-DOS (номер диска, тип диска). |
0xE4 | 8 байт | Метка диска (Disk Label). Название диска в ASCII (например, "GAMES-A "). Если первый байт 0x00 — метки нет. |
0xEC | 3 байта | Резерв, обычно нули. |
0xEF | 1 байт | Количество свободных секторов на диске. |
0xF0 | 16 байт | Начало каталога файлов. Содержит первые 4 записи о файлах (по 16 байт каждая). |
2. Структура записи о файле в каталоге (16 байт)
Начиная со смещения 0xF0 в первом секторе, и далее в следующих секторах (сектора 1-7 на нулевой дорожке) расположен полный каталог. Каждая запись имеет фиксированный формат:| Смещение (в записи) | Длина | Описание |
|---|---|---|
0x00 (0) | 1 байт | Имя файла, первый символ. Если 0x00 — запись пуста, если 0x01 — файл удалён. |
0x01 (1) | 8 байт | Имя файла, символы 2-9 в ASCII. Дополняется пробелами. |
0x09 (9) | 1 байт | Тип (расширение) файла. Кодируется одним символом: "B" — Бейсик "C" — Код (машинный код) "D" — Данные (массив чисел) "#" — Блок данных (двоичный файл) |
0x0A (10) | 2 байта | Длина файла (в байтах). Младший байт первый (Little Endian). |
0x0C (12) | 2 байта | Адрес загрузки в памяти (для типов "C" и "#"). |
0x0E (14) | 2 байта | Параметр. — Для "B" (Бейсик): номер строки, с которой начнётся автостарт (0x8000 = RUN).— Для "C" (Код): адрес запуска (обычно равен адресу загрузки). |
3. Область данных файлов
Начиная с 8-го сектора дорожки 0 (после секторов каталога) и далее по всем дорожкам диска расположены сектора с данными файлов.Важнейшая особенность TR-DOS — это нелинейное отображение логических секторов файла на физические сектора диска. ОС использует собственную таблицу размещения (FAT), которая хранится в её резидентной части в памяти, а не на диске. Поэтому просто прочитать сектор диска подряд нельзя — для извлечения файла нужен эмулятор или утилита, понимающая логику TR-DOS.
Стандартная схема размещения на диске 640K:
- Дорожки 0-1: Служебная информация, каталог.
- Дорожки 2-79: Данные файлов.
Как работать с .TRD-образами: Инструменты и методы
1. Просмотр и извлечение файлов (на ПК)
Самый простой способ — использовать специализированные утилиты для Windows или кроссплатформенные инструменты.| Инструмент | Платформа | Возможности |
|---|---|---|
| trdman | Windows, командная строка | Классическая утилита для просмотра каталога, извлечения и добавления файлов в .TRD образ. |
| Fuse (эмулятор) | Windows, Linux, macOS | Встроенный файловый менеджер (Export / Import в диалоге Media > Disk > Open) позволяет просматривать .TRD и извлекать файлы в форматы .TAP или прямо в память. |
| ZXDS (эмулятор для Nintendo DS) | Встроенный инструмент | Имеет мощный встроенный файловый менеджер для .TRD. |
| zxtools | Мультиплатформенный (Python/C) | Набор утилит командной строки для работы с разными форматами Spectrum, включая .TRD. |
Пример работы с trdman (команды):
Код:
trdman.exe list games.trd # Просмотр каталога диска
trdman.exe extract games.trd 5 # Извлечь файл №5 из образа
trdman.exe addfile games.trd myfile.C # Добавить файл в образ
2. Монтирование .TRD в эмуляторе
Практически все современные эмуляторы (Fuse, UnrealSpeccy, ZXSpin) поддерживают загрузку .TRD-образов как виртуальных дискет:- Запустить эмулятор с TR-DOS (обычно модель ZX Spectrum +3 или Pentagon 128).
- Смонтировать .TRD-файл в виртуальный дисковод A: (например, через меню Media > Disk > Insert).
- В эмуляторе набрать команду CAT — появится список файлов.
- Для загрузки: LOAD "имя_файла" (для Бейсика) или LOAD "имя_файла" CODE (для машинного кода).
3. Создание собственных .TRD-образов
Можно создать образ с нуля:- Взять пустой шаблон (blank.trd) размером 655360 байт.
- С помощью trdman или аналогов добавить в него файлы.
- Для Бейсик-программ: предварительно конвертировать в внутренний двоичный формат Spectrum (часто через .TAP).
- Для машинного кода: указать адрес загрузки и запуска.
- Установить метку диска (опционально).
Конвертация и родственные форматы
.TRD — не единственный формат образов для Spectrum. Часто требуется конвертация:| Формат | Отличия от .TRD | Инструменты для конвертации |
|---|---|---|
| .SCL | Сжатый образ TR-DOS диска. Содержит только файлы, но не пустые сектора. Удобен для архивации. | scl2trd, trd2scl (входят в пакет trdman) |
| .FDI | Более продвинутый посекторный образ, может содержать информацию о защите диска. | Специализированные конвертеры эмуляторов |
| .DSK (для +3DOS) | Формат дисков для встроенного дисковода ZX Spectrum +3. Другая файловая система. | dsk2trd конвертеры (частичная потеря данных) |
Важно: Конвертация из .SCL в .TRD обратима и без потерь. Конвертация в/из форматов других систем (например, +3DOS) может быть сложной.
Историческое и культурное значение
Формат .TRD — это культурный код советской и восточноевропейской компьютерной сцены. В то время как на Западе Spectrum часто ассоциируется с кассетами, в странах Восточного блока именно дисковые копии игр и софта на «тредах» были основным способом распространения.- «Тредами» обменивались на школьных дворах и компьютерных клубах.
- «Сборники» — диски, битком набитые десятками игр, — были ценным ресурсом.
- Формат способствовал развитию демосцены и любительского программирования, так как упрощал работу с инструментами разработки.
Заключение: Цифровой артефакт целой эпохи
.TRD — это больше чем просто формат образа диска. Это:- Технический артефакт элегантной, хотя и своеобразной, файловой системы TR-DOS.
- Культурный символ целого поколения программистов и геймеров Восточной Европы.
- Живой стандарт, который до сих пор поддерживается эмуляторами и используется для создания нового ретро-софта.
Статья составлена на основе технической документации TR-DOS, исходного кода утилит trdman и zxtools, а также спецификаций, опубликованных в сообществе World of Spectrum.