Секреты TR-DOS
--------------------------------
(C) Сергей Лярский,
Свердловская обл., 1995.
---------------------------------
Написать это письмо меня побу-
дила публикация Андрея Кулакова в
ZX-РЕВЮ-94, N5, стр. 19.
В моем компьютере установлена
прошивка ПЗУ TR-DOS 5.04T. Эта
версия отличается, в частности,
тем, что форматирование дисков
может производиться двумя спосо-
бами: обычным способом и
FAST-способом. Во втором случае
таблица расположения секторов на
дорожке начинается с адреса
#325A. Как из нее видно, сектора
расположены по порядку, чем и
достигается ускоренное считывание
и запись информации.
Далее, программирование микро-
контроллера 1818ВГ93 осуществля-
ется очень простым способом с по-
мощью небольшой подпрограммки,
расположенной по адресу #2А53:
2A53 ED79 OUT (C),A
2A55 C9 RET
Эта подпрограмма дает возмож-
ность записать любое число не
только в регистр сектора, но и в
любой другой регистр, необходимо
только предварительно записать
число в аккумулятор, а адрес ре-
гистра (порта) - в регистровую
пару ВС и вызвать подпрограмму
#2A53.
К сожалению, прочесть содержи-
мое регистров не так-то просто,
а, в особенности, регистра состо-
яния. Очевидно, разработчики сис-
темы просто не догадались запи-
сать на свободное место в TR-DOS,
которого там навалом, похожую
подпрограммку для чтения портов,
поэтому наши программисты изобре-
тают для этой цели различные ме-
тоды (см. например, А.Ларченко и
Н.Родионов "ZX Spectrum & TR-DOS
для пользователей и программис-
тов").
В разработке А.Кулакова есть
некоторая неточность. Действи-
тельно, в системе команд 1818ВГ93
есть команда "ЧТЕНИЕ ДОРОЖКИ", но
воспользоваться ею нет возможнос-
ти, так как поступающие с диска
данные не стробируются сигналом
DRQ. Следовательно, воспользо-
ваться ею для хранения ключей для
кодировки-раскодировки также не-
возможно.
В системе команд 1818ВГ93 есть
команда "ЧТЕНИЕ АДРЕСА", исполняя
которую, 1818ВГ93 считывает с
диска адрес первого встреченного
на дорожке сектора. Адрес сектора
имеет формат:
1. Номер физического трека
(#00...#4F).
2. Номер стороны диска (0/1).
3. Номер сектора (#01...x).
4. Длина сектора (#00, #01,
#02, #03).
5, 6. Контрольная сумма.
Номер сектора может быть любым
от 1 до 255, но не 0. Длина сек-
тора выбирается из известной таб-
лицы. Лишь с помощью этих данных
мы можем кодировать и раскодиро-
вать файлы. Есть еще возможность
создать дополнительный сектор, в
котором и будет храниться ключе-
вая информация. Кстати, так и
сделано на так называемых мас-
тер-дисках IS-DOS. Причем, номера
этих секторов, как я понял, выби-
раются с помощью генератора слу-
чайных чисел.
Кстати, об IS-DOS, а точнее, о
форматирующей программе. Как из-
вестно из инструкции по системе,
каждая дорожка разбивается на
пять секторов по 1024 байта каж-
дый. Расположение секторов на до-
рожке следующее: 01, 02, 03, 04,
09. Форматируя таким образом
диск, записав на него необходимые
файлы и подключив систему, как
указано в той же инструкции, я
получил IS-DOS диски, которые
прекрасно работают и автозапуска-
ются.