Welcome Press #01
31 декабря 1995

Справочник программиста - точки входа в TR-DOS.

<b>Справочник программиста</b> - точки входа в TR-DOS.
 
 
 

    Не  секрет,  что  у многих, кто читает сейчас
этот   журнал,  есть  дисковод.  Также  не  будет
секретом, что многих уже стесняют рамки "Бейсика"
для  работы  в  системе  TR-DOS. Конечно у многих
есть  книга А.Ларченко и Н.Родионова" ZX SPECTRUM
&  TR-DOS". Данная статья предназначена для тех у
кого  не  было  возможности  познакомиться с этой
замечательной книгой.
    Итак, перед тем как рассмотреть точки входа в
TR-DOS, давайте кое-что разберём (не в физическом
смысле).  Не  секрет, что  ПЗУ  занимает  область
памяти  начиная  с  0 и заканчивая адресом 16384,
дальше простирается ОЗУ. Ну, а где же TR-DOS? Всё
дело   в   том,   что   при   разработке   TR-DOS
разработчики    этой    системы    стремились   к
максимальной  совместимости с другими видами этой
машины   не  имеющими  TR-DOS,  поэтому  пришлось
придумать  остроумный  способ, называемый теневой
памятью.
    Для   самых  любопытных  скажу,  что  увидеть
TR-DOS  можно!  Для  этого  войдите  в  систему и
наберите SAVE "TR-DOS" CODE 0,16384.
    Дизассемблировав этот фаил, Вы сможете глубже
понять и разобраться в этой системе.
    При    нормальной   работе  Z80 (центрального
микропроцессора) TR-DOS  в памяти отсутствует, но
если  вызвать  точку  входа  15616  или 15619, то
TR-DOS  занимает место где обычно находится ПЗУ и
берёт  управление  на  себя.  При  возврате, если
адрес  возврата  больше  16384,  управление снова
переходит к ПЗУ "Бейсика".
    Ну, ладно, начнём рассказ о точках.
    Первые  две точки всем известны - это 15616 и
15619. О них говорить особо не буду.
    Следующая точка 15649 является подготовитель-
ным этапом перед обращением к другим точкам.
    Ее  назначение - это установка системы TR-DOS
и ее инициализация .
    Точка  15635  является наиболее важной точкой
входа, она   позволяет   обратиться  напрямую   к
интерпритатору   команд  TR-DOS.  При  обращении,
номер команды задается в регистре C.

    Рассмотрим команды интерпритатора:

    #00  -  эта команда позволяет установить блок
магнитных  головок дисковода на нулевую дорожку и
сбросить  "сердце"  микроконтроллера КР 1818ВГ93.
Эту  команду лучше всего применять в самом начале
работы с точкой 15635.

    #01  -  это  команда  настройки  на дисковод.
Служит    для    записи    параметров   дисковода
(количество   дорожек   и   скорость  перемещения
магнитных   головок)   в   системмные  переменные
TR-DOS. Эту  команду  можно  не  выполнять,  если
вручную  занести  все  характеристики  по  адресу
23752  (количество  дорожек)  и  23802  (скорость
перемещения). Номер дисковода в аккумуляторе.

    Пример:

        LD   A,#00
        LD   C,#01    ;Настройка на дисковод А
        CALL 15635

    #02   -   это   позиционирование. Служит  для
перемещения  блока  магнитных головок на заданную
дорожку. Номер сектора в аккумуляторе.

    Пример:

        LD   A,#05
        LD   C,#02    ;Перемещение магнитных
        CALL 15635     головок на пятую дорожку.

    #03  - это команда установки номера сектора в
аккумуляторе.

    Пример:

        LD   A,#03
        LD   C,#03    ;Выбор 3-го сектора
        CALL 15635

    #04   -  установка  адреса  пользовательского
буфера. Смотри #05 и #06.

    Пример:

        LD   HL,Адрес буфера
        LD   C,#04
        CALL 15635

    #05   -   чтение   группы  секторов.  Команда
считывает  в  память  с  диска сектора, начиная с
сектора заданного в регистре Е, расположенного на
дорожке заданной в регистре D, в память начиная с
адреса заданного в регистре HL.

    Пример:

        LD   BC,#0805
        LD   DE,#0000  ; Считывание каталога
        LD   HL,50000  ; диска в память, начиная
        CALL 15635     ; с адреса 50000

    #06   -   запись   группы  секторов.  Команда
записывает информацию из области памяти, заданной
в регистре HL, на дорожку, заданную в регистре D,
в сектор, заданный в регистре E. Количество целых
секторов задается в регистре B.

    Пример:

    LD   BC,#0106
    LD   DE,#08    ; Запись  в  служебный  сектор
                   ; информации из памяти
    LD HL,50000    ; начиная с адреса 50000
    CALL 15635 

    #07  -  вывод  каталога  диска. В аккумулятор
помещается   номер   потока  куда  будет  выведен
каталог  (#2-экран;  #3-принтер). Номер дисковода
задается по адресам 23798, 23800, 23801.

    Пример:

    LD A,#0
    LD (23798),A
    LD (23800),A   ; Выбор дисковода А.
    LD (23801),A
    LD A,#2        ; Выбираем вывод на экран.
    LD C,#7
    CALL  15635    ; Печать  католога  на экране.

    #08 - считывание элемента каталога. Номер
    элемента задается в аккумуляторе. Эта команда
позволяет считывать элемент каталога в дескриптор
файла, расположенный по адресу с 23773 по 23788.

    Разберем по отдельности дескриптор файла:

    В  адресах  с  23773  по 23780 находиться имя
файла.     В     адресе     23781    тип    файла
(C-CODE; B-BASIK; D-DATA  и т.д). 23782-23783 при
типе   <C>-стартовый  адрес; при  типе  <B>-длина
бейсик   программы.   23784-23785   длина  файла.
23786-объем файла в секторах. 23787-номер первого
сектора файла. 23788-номер первой дорожки файла.

    Пример:

    LD A,#02
    LD  C,#08    ;Считывание информации о третьем
    CALL  15635  ;файле в дескриптор.

    #09  -  запись  дескриптора  файла. С помощью
этой  команды,  дескриптор  файла  записывается в
элемент каталога заданный в аккумуляторе.

    Пример:

    LD A,#02
    LD C,#09   ;Запись дескриптора файла на место
    CALL 15635 ;3-го элемента  каталога.

    #0A  -  поиск информации о файле. Эта команда
используется  для  поиска в каталоге информации о
фаиле.    Исходная    информация    задается    в
дескрипторе.   Количество   байтов   (шаблон)  по
которым  ведется  поиск задаются по адресу 23814.
Там обычно записано число 9.

    #0B - функция создания файла. Имя и тип файла
в дескрипторе, адрес в HL, длина в DE.

    #0C  -  создание  бейсик  файла.  Эта команда
аналогична  предыдущей,  только  тип записываемой
программы  должен  быть  обязательно <B>. Входной
параметр в дескрипторе.

    #0E   -   команда   чтения/проверки.  Входные
параметры  должны  быть помещены в дескриптор. По
адресу     23801-вид     операции     #00-чтение;
#FF-проверка.  Для  "не-BASIC"  файлов адрес в HL
длина  в DE, в аккумуляторе число не равное 0 или
3.

    #0F; #10; #11; #16 - отсутствие действия.

    #12   -  удаление  файла.  Эта  команда  ищет
элемент  каталога,  совпадающий  с дескриптором и
удаляет его.

    #13 - эта команда копирует из памяти, адрес в
HL, 16 байтов в дескриптор файла.

    #14  -  эта  команда  работает  наоборот, чем
предыдущая.   Копируется   дескриптор  в  память,
адресуемый регистром HL.

    #15  -  тестирование дорожки. Номер дорожки в
регистре   D,  номер  стороны  см.  #17 или  #02.
В адресе 23766 счетчик сбойных секторов.

    #17 - выбор нижней стороны диска.

    Пример:

    LD C,#17
    CALL 15635

    #18   -   настройка   на  диск.  Эта  команда
считывает  с  диска служебный сектор и производит
настройку некоторых переменных TR-DOS. Необходима
при смене диска.
    Для  тех  у  кого  нет кнопки "MAGIC". Данная
программа  для  этой  кнопки  находится по адресу
102.  Попасть  в  нее можно через точку по адресу
15664, где находится команда RET.

    Пример:

    LD HL,адрес возврата
    PUSH HL
    LD HL,#102
    PUSH HL
    JP   15664

    И   напоследок   хочу   привести   назначение
некоторых регистров. 
    HL - этот регистр в основном используется как
адресный регистр.
    DE  -  этот  регистр используется в командах,
где  помимо  основного  адреса,  нужен  ещё  один
адрес.

    Пример:

    LD HL,основной адрес
    LD DE,вспомогательный адрес
    LD BC,количество пересылаемых байт
    LDIR 

    BC  - счётный регистр. В основном применяется
как счётчик циклов, да и просто как счётчик.
 
    A  -  универсальный  накопительный регистр. В
самых  первых моделях компьютеров был только один
этот  регистр.  Основное  применение  находит при
операциях сравнения и как 8-ми разрядный счетчик.
Ну  вот,  наверное, и всё. Если найдете упущения,
просьба сильно не ругать. Старался как мог.


                                И.Майоров, 1996


                     *  *  *



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

Turbo Assembler 3.0 - полное описание.

Вопросы и ответы.

Конкурс - конкурс на лучший "boot" года.

Новости - новости от фирмы WELCOME.

Новости - обзор компьютерной прессы.

Объявления - обьявление к господам программистам.

От редакции.

Путеводитель - вступление.

Путеводитель - игра Academy (Академия).

Путеводитель - игра Last Battle (Последняя битва)

Путеводитель - игра Lords of Midnights (Повелители Полуночи)

Путеводитель - игра Stiflip & Company (Стиффлип и компания).

Путеводитель - игра Where Time Stood Still (Там, где время замерло).

Спекутрум изнутри - логические элементы.

Справочник программиста - в поисках вечной жизни.

Справочник программиста - точки входа в TR-DOS.

Справочник - вступление.

Старший брат - CD-ROM

Фотоскоп - фотографии читателей.

Юмор - судьба резидента, или паутина над страной.


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

Похожие статьи:
Блиц-опрос - Доклад на тему "Как я ездил на радиорынок и чего я там накопал".
Правила игры - Оглавление, Wizard - что это такое, как начать, оформление ответа.
БУК - Откудова у Герасима появилась энта Му-му.
Phantasmogore - Samael (русский).
Theme - Зондирование масс: ответы на вопрос к спектрумистам: 'Что вы можете сказать о Спектруме, который войдет в XXI век'.

В этот день...   7 октября