Spectrophoby
#01
17 августа 1995 |
|
Секреты TR-DOS - мaлeнькие xитрости при использовaнии систeмныx процeдур ДОCa.
╓────────────────────────╖ ║ ─── СЕКРЕтЫ 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.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября