╓────────────────────────╖
║ ─── СЕКРЕтЫ tR-DOS ─── ║
╙────────────────────────╜
Этот раздел поможет вам в ос-
boehuu tR-DOSa. Мы поделимся с
Вами маленькими хитростями при
использовании системных процедур
ДОСа.
Сперва повторим материал прой-
дeнный. т.e. уже напечатанный в
ZX-РЕВЮ:
точка входа в tR-DOS из ас-
сeмблeрa - это #3D13. Код опера-
ции должен быть в регистре C
процессора; рассмотрим некоторые
из них:
C=0 - программный сброс микро-
контроллера. эту функцию следует
применять в самом начале работы
с интерфейсом
C=5 - чтение блока секторов в
память. входные параметры:
DE - трек/сектор
В - длина в секторах
HL - адрес считывания
C=6 - запись блока секторов из
памяти. входные параметры анало-
гичны команде чтения
C=#0C - запись файла на диск.
имя и тип создаваемого файла
должны быть помещены в дeскрип-
тор файла. адрес начала области
передается чeрeс регистровую па-
ру HL.длина - через DE
C=#0E - чтение/проверка файла.
Поскольку действия этих команд
аналогичны то под них выделена
одна функция. Имя и тип файла
должны быть помещены в дeскрип-
тор. Вид операции определяется
по содержимому системной пере-
менной 23801: 00 - чтение. 255 -
проверка. Как и для функции за-
писи файла. адрес и длина пере-
дается соответственно через HL и
DE.
Итак. это самые необходимые
функции системного uhtepnputato-
ра которые нам. и вам. и вообще
всем. кто пишет под tR-DOS при-
годятся.
A теперь рассмотрим их попод-
робнее.
1.ЧтЕНИЕ СЕКтОРОВ
Приведем небольшой пример:
LD HL.#4000
LD DE.#0100
LD ВС.#1В05
JP #3D13
Что означает эта программа?
Считать 27(#1В) секторов с трека
01 сектора 00 по адресу
#4000(16384). проще говоря счи-
тать картинку с 1трека 0cektopa
2.ЗАПИСЬ БЛОКА СЕКтОРОВ
Здесь все как в предыдущей
программе. но в ВС нужно заслать
#1В06. собственно говоря и не в
ВС. a в C. т.к. нам нужно поме-
нять код операции. их даже можно
разбить на две команды:
LD В.#1В
LD C.6
3.ЧтЕНИЕ ФАЙЛА
Для чтения файла нам нeобxоди-
мо поместить имя и тип файла в
дескриптор. для чего даже имеет-
ся специальная функция uhtepnpu-
tatopa - #13 - это копирование
16 байт из памяти в дескриптор.
также этот оператор еще и во
многом зависит от содержания ак-
кумулятора:
A=0 - адрес - HL.длина - DE
A=3 - адрес - HL. остальное бе-
pem из дескриптора
4.ЗАПИСЬ ФАЙЛА
Как и для чтения имя и тип
файла нам нужно поместить в
дескриптор. но aккумулaтор нам
здесь не нужен.
При объединении игр в монобло-
ки мы используем подпрограмму
чтения блока секторов (C=5). но
здесь есть маленькая глюка. и
очень даже (иногда) чувстви-
тельная. Попробуйте набрать сле-
дующую программку hanpumet в
tASMe:
LD HL.#6000
LD DE.#0100
LD ВС.#9305
JP #3D13
и запустите ee командой tASMa
Run ("R"). Ну и каков эффект?
головка дисковода так шарахнет.
что можно от неожиданности
вздрогнуть. В чем тут дело? Как
и все открытия ответ пришел слу-
чайно. не буду расказывать как.
тут все дело в длине блока ко-
дов. он слишком велик. нужно та-
кой большой блок разбить на два
поменьше.
Возьмем. к примеру. нашу пре-
дыдущую программку. и разложим:
LD SP.#SFFF
LD HL.#6000
LD DE.#6000
LD ВС.#5005
CALL #3D13
LD HL.#6000+20480
LD DE.(23796)
LD ВС.#4305
JP #3D13
блок в 160 секторов мы разбили
на 2 блока по 80 секторов. те-
перь все будет без шуму и пыли.
В следующем выпуске нашего
журнала мы раскажем как заста-
вить работать режим IM2 при об-
ращении к tR-DOS.
Other articles: