Info Guide #01
27 ноября 1998

TR-DOS - Функции TR-DOS.

                TR-DOS
            Level 1: 15635
 Alone Coder

   Функции  TR-DOS, вызываемые из Бейсика,
обеспечивают  использование далеко не всех
возможностей системы. Разработчики предус-
мотрели  ряд  специальных функций работы с
дисководом, обращение к которым может про-
исходить  исключительно  из программ в ма-
шинных кодах. Это так называемая <работа с
диском  на  высоком  уровне>, в отличие от
файлового  уровня  и низкого, т.е. прямого
указания контроллеру.
   Все  вышеупомянутые функции выполняются
одной программой,переход к которой осущес-
твляется  по адресу 15635. На самом деле в
ячейке памяти с указанным адресом содержи-
тся  NOP/JR, но есть данные, что переход к
адресу  15636 срабатывает не на всех видах
Speccy. Параметром  для этой программы яв-
ляется регистр C процессора,в котором дол-
жен содержаться номер команды согласно ни-
жеследующего списка:

      #5 - чтение секторов.
   Считать  с текущего  дискодава подряд B
секторов по 256 байт и запомнить их по ад-
ресу HL. Начальная дорожка(трек)должна со-
держаться в D,начальный сектор на этой до-
рожке - в E. Обычно эта функция используе-
тся  в загрузчиках моноблочных программ. В
этом случае следует сделать LD DE,(23796),
то  есть  вспомнить номер сектора вслед за
последним считанным/записанным блоком дан-
ных,т.е. в данном случае сектор аккурат за
бейсиковой частью.
   Как  сделать моноблочный загрузчик? пи-
шете сначала вот такую бейсик-программу:
  10 REM 16 штук пробелов
  20 CLEAR 24575:RANDOMIZE USR 23872
Потом с адреса 23872 (если обращения к TR-
DOS  со времени последнего сброса не было,
то с 23760) любым  приятным  вам  способом
заносите кодовую программу:
   LD DE,(23796)
   LD BC,#NN05;где NN=длина кодовой части,
   LD HL,ADDR;а это - адрес загрузки.
   CALL 15635
   JP START;адрес запуска кодовой части.
Она, очевидно,занимает весь REM. Это самый
простой случай - когда кодовый блок один и
запускается без распаковки.В более сложных
случаях  добавьте  пробелов  после  REM  и
вставляйте всё, что вам заблагорассудится.
Запишем нашу бейсиковую прогу на диск:
 RANDOMIZE USR 15619:REM:SAVE"IGRA"LINE 10
За  ней впритык спишем кодовый блок, после
этого загрузим Disk Doctor и исправим дли-
ну бейсик-файла в секторах с 01 на суммар-
ную длину бейсика и кодов,в первом символе
кодового файла запишем код 00,а в 8-м сек-
торе уменьшим на число кодовых файлов байт
номер #E4. Загрузчик готов,и он даже копи-
руется.Конечно,лучше был бы загрузчик типа
   0 INK USR .<а дальше бред>

      #6 - запись секторов.
   Записать  B  секторов  подряд по тем же
правилам.Следует заметить,что эти процеду-
ры останавливаются по Break и выдают сооб-
щение Disk error и т.д. с очисткой экрана.
Если вам угодно это предупредить, запишите
предварительно  по адресу 23746 вместо RET
команду вызова обработчика ошибок.

      #7 - показ каталога.
   Эквивалентно команде CAT с тем исключе-
нием,что вывод производится в любой поток.
Номер потока задается в A(стандартно - 2).
Желательно записать номер дисковода(23798)
также по адресам(23800)и(23801). Абсолютно
бесполезная команда.

      #0 - команда восстановления.
   Головка дисковода возвращается на нуле-
вую дорожку.

      #1 - смена дисковода и тестирование.
   В регистре A должен быть номер дисково-
да:0="A",1="B",2="C",3="D". Тестирование -
определение количества дорожек (40 или 80)
и скорости перемещения магнитной головки -
не производится, если дисковод уже был от-
тестирован.

   Следует отметить, что перед использова-
нием этих команд нужно открыть область си-
стемных переменных TR-DOS.Сама по себе она
после сброса не открывается, отчего виснут
все известные мне ассемблеры.Можно войти и
сразу же выйти из DOS, можно также вызвать
процедуру 15649.
   Еще неприятной особенностью этих проце-
дур является то,что при чтении/записи сек-
торов  подряд они всякий раз делают лишний
оборот диска при переходе на следующую фи-
зическую дорожку.Этот недостаток исправля-
ют многочисленные TURBO-LOADER'ы,использу-
ющие непосредственное обращение к контрол-
леру дисковода КР1818ВГ93.
   Программа 15635 имеет и другие функции,
но они мало относятся к нашей теме.Коснусь
напоследок только одной:

      #13 - копирование дескриптора.
   Копирует 16 байт из адреса HL по адресу
23773 (область дескриптора в системных пе-
ременных TR-DOS). Этой командой можно про-
сматривать  коды  TR-DOS  из программы вне
зависимости  от версии системы, не включая
дисковода



Другие статьи номера:

Вступление - Вступление от редактора.

Оболочка - Об оболочке.

История создания - История создания журнала ZX-guide.

Программы - Описание текстового редактора AC Edit v0.09.

Ассемблер - Теневой многотекстовый ассемблер-отладчик ALASM v4.1 Краткое описание функциональных возможностей.

Ассемблер - Краткий урок ассемблера для ламеров.

Проза - БИЛЛ - ГЕРОЙ ГАЛАКТИКИ. Гарри Гаррисон Главы 1 - 4.

Программирование - К вопросу о выводе экрана за одно прерывание.

Игры - Описание игры Ikari warriors.

Проза - Чрезвычайное происшествие. А. и Б. Стругацкие

Юмор - Анекдоты.

Юмор - Объявления.

Интервью - Воспоминания Alone Coder-а.

Ассемблер - Основные требования к идеальному ассемблеру.

Программирование - Несколько коротких и быстрых процедур.

Игры - О грядущих играх.

TR-DOS - Функции TR-DOS.

Игры - Демо-версия игры Wolfenstein 3D.

Авторы - Авторы журнала.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Объявления - Реклама и объявления...
Marazm - Опять брежу :) История человека (человека ли ?!!), который прожил всего один день...
Кодерам - Размышления о 3D.

В этот день...   31 мая