27 ноября 1998

                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  из программы вне
зависимости  от версии системы, не включая
дисковода.



Other articles:


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

Similar articles:
Schedule - Timetable BBS.
Beech - The Adventures of Shtiplitsa and one another in ppiklyucheniya Bopmana.
Party Zone - Mekka Symposium 2000 - one of the world party, that throughout its range and a commercial basis has not lost the spirit true demoparty.

В этот день...   21 November