Book #01
05 февраля 2003

Системные сведения - Справочник по TR-DOS`у.

<b>Системные сведения</b> - Справочник по TR-DOS`у.
   Системные переменные TR-DOS 5.04T.

╔═════╤═══╤══════════════════════════════════════════════════╗
║Адрес│Дл.│                 Содержимое.                      ║
╟─────┼───┼──────────────────────────────────────────────────╢
║23734│ 1 │Используется, если есть ИНТЕРФЕЙС-1. Если равно   ║
║     │   │244, то область переменных не переносится, иначе  ║
║     │   │проверяется 23832.                                ║
║23735│ 11│Не используется.                                  ║
║23746│ 1 │Содержит команду RET. Используется для переключе- ║
║     │   │ния ПЗУ на бейсик.                                ║
║23747│ 5 │Не используется.                                  ║
║23752│ 1 │Тип дисковода A:                                  ║
║     │   │ бит 7=0 - дисковод 40-дорожечный.                ║
║     │   │       1 - дисковод 80-дорожечный.                ║
║     │   │ бит 1=0 - дисковод односторонний.                ║
║     │   │       1 - дисковод двухсторонний.                ║
║     │   │ бит 0=0 - использовать 80-дорожечный дисковод как║
║     │   │           40-дорожечный.                         ║
║23753│ 1 │Тип дисковода B.                                  ║
║23754│ 1 │Тип дисковода C.                                  ║
║23755│ 1 │Тип дисковода D.                                  ║
║23756│ 1 │Текущий сектор при работе с каталогом.            ║
║23757│ 1 │Если не 0, то после позиционирования будет задерж-║
║     │   │ка. Регистр состояния ВГ-93 перед проверкой дорож-║
║     │   │ки. Бит 7 регистра состояния ВГ-93 перед чтением  ║
║     │   │адресного маркера.                                ║
║23758│ 1 │Флаг операции с секторами. При 0 -чтение секторов,║
║     │   │при 255 - запись.                                 ║
║23759│ 2 │Адрес рабочей области памяти для MOVE, COPY, LIST.║
║     │   │и при обработке номера записи при выводе в файл   ║
║     │   │данных прямого доступа.                           ║
║23761│ 1 │Длина перемещаемого файла для MOVE.               ║
║23762│ 1 │Имя массива при записи / загрузке массива в виде: ║
║     │   │биты 0 - 4 - имя массива ( от "A"=1 до "Z"=26),   ║
║     │   │бит 5 - если 0, то массив числовой,               ║
║     │   │бит 6 - если 1, то массив строковый,              ║
║     │   │бит 7 - всегда 1.                                 ║
║23761│ 2 │Номер строки автостарта при записи программы на   ║
║     │   │бейсике.                                          ║
║23763│ 2 │Счетчик секторов перемещаемого файла для MOVE.    ║
║23764│ 1 │Номер стираемого файла для MOVE.                  ║
║23765│ 1 │Текущий сектор перемещаемого файла для MOVE.      ║
║23766│ 1 │Текущая дорожка перемещаемого файла для MOVE. Ко- ║
║     │   │личество дефектных секторов при форматировании и  ║
║     │   │проверке диска. Для подпрограммы сжатия строки:   ║
║     │   │если 0, то команда находится в строке программы на║
║     │   │бейсике, иначе в другом месте. Для подпрограммы   ║
║     │   │загрузки файла: если 0, то адрес загрузки и длина ║
║     │   │берутся из описателя файла, если 3, то из 23769 и ║
║     │   │23771 соответственно, иначе адрес загрузки берется║
║     │   │из 23769, а длина - из описателя файла.           ║
║23767│ 1 │Текущий сектор стираемого файла при MOVE. Количес-║
║     │   │тво дорожек при определении типа дисковода и фор- ║
║     │   │матировании.                                      ║
║23768│ 1 │Текущая дорожка стираемого файла при MOVE. Если не║
║     │   │0, то форматируемая дорожка не проверяется.       ║
║23767│ 2 │Сохраняет CH_ADD при обработке номера записи в    ║
║     │   │файле последовательного доступа. Адрес переменной ║
║     │   │длины строки для подпрограммы сжатия строки. Адрес║
║     │   │старого массива при загрузке массива. Адрес секто-║
║     │   │ра для PEEK и POKE.                               ║
║23769│ 1 │Относительный адрес записи при обработке номера   ║
║     │   │записи в файле последовательного доступа.         ║
║23770│ 1 │Номер открываемого блока файла произвольного дос- ║
║     │   │тупа при обработке номера записи. Если равно 128, ║
║     │   │то форматируются две стороны, иначе только одна.  ║
║23769│ 2 │Счетчик освобождающихся секторов для MOVE. Адрес  ║
║     │   │загрузки файла для LOAD, номер сектора для PEEK и ║
║     │   │POKE. Адрес ключевого слова для подпрограммы сжа- ║
║     │   │тия строки. Длина файла для записи при SAVE.      ║
║23771│ 1 │Номер загружаемого сектора блока файла произволь- ║
║     │   │ного доступа при обработке номера записи. Номер   ║
║     │   │первого сектора перемещаемого файла для MOVE.     ║
║23772│ 1 │номер первой дорожки перемещаемого файла для MOVE.║
║23771│ 2 │Длина файла для LOAD. Длина файла для указания в  ║
║     │   │каталоге при SAVE. Номер потока для CAT и LIST.   ║
║23773│ 8 │Имя файла или диска при форматировании.           ║
║23781│ 1 │Расширение файла.                                 ║
║23782│ 2 │Адрес загрузки файла. Адрес таблицы секторов для  ║
║     │   │форматирования.                                   ║
║23784│ 2 │Длина файла. Адрес таблицы секторов для проверки  ║
║     │   │дорожки.                                          ║
║23786│ 1 │Обьем файла в секторах.                           ║
║23787│ 1 │Номер первого сектора файла.                      ║
║23788│ 1 │Номер первой дорожки файла.                       ║
║23789│ 2 │Адрес загрузки старого файла для COPY.            ║
║23791│ 2 │Длина старого файла в байтах для COPY.            ║
║23793│ 1 │Длина старого файла в секторах для COPY.          ║
║23794│ 1 │Номер первого сектора старого файла для COPY.     ║
║23795│ 1 │Номер первой дорожки старого файла для COPY.      ║
║23796│ 1 │Номер текущего сектора для подпрограммы           ║
║     │   │загрузки / записи секторов.                       ║
║23797│ 1 │Номер текущей дорожки для подпрограммы            ║
║     │   │загрузки / записи секторов.                       ║
║23798│ 2 │Номер дисковода для операции (0 - 3).             ║
║23800│ 1 │Дисковод-источник для COPY. Если равно 255, то при║
║     │   │выводе в файл данных буфер не удаляется.          ║
║23801│ 1 │Дисковод-приемник для COPY. Номер дисковода при   ║
║     │   │выводе каталога. Признак операции с файлом: 0 -   ║
║     │   │- загрузка, 255 - верификация.                    ║
║23802│ 1 │Время перемещения головки дисковода A: (8 - 11).  ║
║23803│ 1 │То же для дисковода B:.                           ║
║23804│ 1 │То же для дисковода C:.                           ║
║23805│ 1 │То же для дисковода D:.                           ║
║23806│ 1 │Команда контроллера для подпрограммы чтения / за- ║
║     │   │писи сектора.                                     ║
║23807│ 1 │Номер сектора для подпрограммы чтения / записи    ║
║     │   │сектора.                                          ║
║23808│ 2 │Адрес сектора для подпрограммы чтения / записи    ║
║     │   │сектора.                                          ║
║23810│ 2 │Сохраняет HL для подпрограммы вызова подпрограмм  ║
║     │   │из ПЗУ бейсика и 15635.                           ║
║23812│ 2 │Сохраняет DE.                                     ║
║23814│ 1 │Число проверяемых байтов описателя файла при его  ║
║     │   │поиске.                                           ║
║23815│ 1 │Количество стертых файлов для подпрограммы стира- ║
║     │   │ния файлов.                                       ║
║23816│ 1 │Первый символ имени файла для подпрограммы стира- ║
║     │   │ния файлов.                                       ║
║23817│ 1 │тип файла данных для OPEN# ("R", "W" или "RND").  ║
║23819│ 2 │Не используется.                                  ║
║23820│ 1 │Флаг наличия буфера: 0 - есть, иначе - нет.       ║
║23821│ 1 │Номер текущего файла при копировании всего диска с║
║     │   │двумя дисководами.                                ║
║23822│ 1 │Флаг состояния рабочей области памяти. Если равно ║
║     │   │255, то рабочая область использовалась. Если равно║
║     │   │254, то подпрограмма 963 игнорирует ошибки.       ║
║23823│ 1 │Код ошибки TR-DOS. При поиске файла подпрограммой ║
║     │   │15635: 255 - файл не найден, иначе - номер файла. ║
║23824│ 1 │Флаг операции для подпрограммы загрузки / верифи- ║
║     │   │кации файла: 0 - операция с файлом, 255 - загруз- ║
║     │   │ка / верификация сектора файла, иначе - запись    ║
║     │   │сектора файла.                                    ║
║23825│ 2 │Адрес командной строки.                           ║
║23827│ 2 │Сохраняет содержимое ERR_SP для подпрограмм воз-  ║
║     │   │врата в бейсик.                                   ║
║23829│ 1 │Если 0, то на экран выводятся сообщения об ошиб-  ║
║     │   │ках, иначе не выводятся.                          ║
║23830│ 1 │Копия системного регистра.                        ║
║23831│ 1 │Если равно 170, то при вызове 15612 заставка не   ║
║     │   │выводится, иначе выводится заставка и проверяется ║
║     │   │байт по адресу 23296. Если он равен 170, то проис-║
║     │   │ходит запуск файла "boot".                        ║
║23832│ 1 │Используется, если есть ИНТЕРФЕЙС-1. Если не 0, то║
║     │   │меняются местами блоки памяти длиной 45 байтов по ║
║     │   │адресам 23747 и 23859.                            ║
║23833│ 1 │Номер дисковода по умолчанию.                     ║
║23834│ 2 │Адрес возврата из подпрограммы завершения.        ║
║23836│ 2 │Сохраняет SP для подпрограмм возврата в бейсик.   ║
║23838│ 1 │Номер файла при его поиске.                       ║
║23839│ 1 │Флаг способа вызова TR-DOS. Если 0, то вызов был  ║
║     │   │из машинного кода, иначе - из бейсика. Первый сек-║
║     │   │тор файла на диске - приемнике для COPY S.        ║
║23840│ 1 │Первый сектор файла на диске-приемнике для COPY S.║
║23840│ 3 │Сохраняет 3 первых символа командной строки.      ║
║23841│ 1 │Если не 0, то идет первый проход копирования, ина-║
║     │   │че продолжение.                                   ║
║23843│ 1 │Размер доступной памяти в секторах для MOVE и     ║
║     │   │COPY.                                             ║
╚═════╧═══╧══════════════════════════════════════════════════╝
   При инициализации системы используются следующие ячейки:
╔═════╤═══╤══════════════════════════════════════════════════╗
║Адрес│Дл.│                 Содержимое.                      ║
╟─────┼───┼──────────────────────────────────────────────────╢
║23746│ 1 │Команда RET. Используется для вызова подпрограмм  ║
║     │   │из ПЗУ бейсика.                                   ║
║24320│ 2 │Сохраняет HL для подпрограммы выполнения команды  ║
║     │   │процессора в ОЗУ.                                 ║
║24322│ 14│Не используется.                                  ║
║24336│ 3 │Подпрограмма перемещения блоков памяти LDIR или   ║
║     │   │LDDR.                                             ║
║24339│237│Временный стек.                                   ║
╚═════╧═══╧══════════════════════════════════════════════════╝
   Также при инициализации системных переменных TR-DOS 20 бай-
тов  с  адреса  23698 используются для размещения подпрограммы
проверки наличия ИНТЕРФЕЙСа-1.

     Способы обращения к ПЗУ TR-DOS.

   ПЗУ  TR-DOS  является  теневым, поэтому к нему нельзя обра-
титься непосредственно при помощи CALL. Но для того, чтобы оно
было  доступно для использования, существуют адреса, при пере-
ходе на которые включается ПЗУ TR-DOS. В ПЗУ бейсика-48 в этих
адресах  находится знакогенератор, следовательно обычно управ-
ление  туда  никогда  не  передается. Внимание!!! В ПЗУ бейси-
ка-128  в  этих адресах находится программа, поэтому при вклю-
ченном  ПЗУ бейсика-128 ПЗУ TR-DOS блокируется полностью. Ниже
вы видите список точек входа, переключающих ПЗУ.

15616 - вход в командный процессор TR-DOS.
15619 - выполнение команд TR-DOS из бейсика.
15622 - подпрограмма ввода из файла данных.
15629 - подпрограмма вывода в файл данных.
15632 - подпрограмма изменения памяти.
15635 - вызов подпрограмм TR-DOS из машинного кода.
15638 - подпрограмма обработки ошибок, поступающих из ПЗУ бей-
        сика.
15663 - переход на любой адрес в ПЗУ TR-DOS.

  Как пользоваться этими точками входа.

15616 - простой вызов. Можно установить переменные 23831 и
        23296.
15619 - из бейсика:
        RANDOMIZE USR 15619:REM:<команда>
        из машинного кода:
        1) разместить в памяти командную строку в ASCII виде с
           префиксом REM:.
        2) поместить в CH_ADD адрес этой строки.
        3) CALL 15619.
        Например:
       LD HL,LINE    ;установка CH_ADD
       LD (23645),HL
       JP 15619      ;выполнение команды
                     ;командная строка
LINE   DEFB 234      ;REM
       DEFB ":"      ;:
       DEFB 239      ;HOAD
       DEFB 34       ;"
       DEFM "EXAMPLE";EXAMPLE
       DEFB 34       ;"
       DEFB 13       ;ENTER

15622 - открыть канал файла данных и вызвать. На выходе символ
        из файла будет в аккумуляторе.
15629 - открыть канал файла данных, поместить в A символ и
        вызвать. Внимание!!! Содержит ошибку.
15632 - просто вызвать. Проверяет 23734 и 23832 и меняет блоки
        памяти местами, если нужно.
15635 - Номер подпрограммы поместите в регистр C, остальное
        согласно таблице:

╔═════╤══════════════════════════════════════════════════════╗
║ Ком. Функции                            ║
╟─────┼──────────────────────────────────────────────────────╢
║  0  │Восстановление с ожиданием INTRQ. Воспринимает BREAK. ║
║  1  │Выбор дисковода. Номер дисковода поместите в регистр  ║
║     │A. Если в переменной с временем перемещения головки   ║
║     │дисковода бит 7 включен, то определяется времЯ nepeme-║
║     │щения головки и проверяется переменная с типом диско- ║
║     │вода. Если она не равна 255 (ошибка), то будет опреде-║
║     │лено количество дорожек дисковода. При этом предпола- ║
║     │гается, что дисковод односторонний (ошибка). При воз- ║
║     │врате определяется номер дорожки, на которой стоит го-║
║     │ловка дисковода и заносится в регистр дорожки.        ║
║  2  │Позиционирование. Логический ноль  дорожки поместите в║
║     │A. Если по адресу 23757 не 0, то после позиционирова- ║
║     │ния будет задержка. В программе есть ошибка.          ║
║  3  │Помещает содержимое аккумулятора по адресу 23807.     ║
║  4  │Помещает содержимое HL по адресу 23808.               ║
║  5  │Чтение группы секторов. В HL поместите адрес в памяти,║
║     │в D - номер первой дорожки, в E - номер первого секто-║
║     │ра, в B - количество секторов. В программе есть ошиб- ║
║     │ка.                                                   ║
║  6  │Запись группы секторов. Параметры и ошибка аналогично ║
║     │команде 5.                                            ║
║  7  │Вывод каталога. В аккумулятор поместите номер потока, ║
║     │а в 23801 поместите номер дисковода из 23798. В прог- ║
║     │рамме есть ошибка.                                    ║
║  8  │Чтение описателя файла по адресу 23773. Номер файла   ║
║     │поместите в аккумулятор.                              ║
║  9  │Запись описателя файла. Описатель разместите по адре- ║
║     │су 23773 и поместите номер файла в аккумулятор.       ║
║  10 │Поиск файла. Проверяемую часть описателя разместите с ║
║     │адреса 23773, а ее длину поместите в 23814. Если файл ║
║     │найден, то в BC, 23823 и 23838 будет его номер, иначе ║
║     │23838 не меняется, а в 23823 и BC будет 255.          ║
║  11 │Запись файла. Имя и расширение поместите с 23773, на- ║
║     │чало в памяти поместите в HL, а длину - в DE.         ║
║  12 │Запись программы на бейсике. Имя и расширение помести-║
║     │те с адреса 23773. Если расширение не "B", то файл за-║
║     │писывается как кодовый.                               ║
║  13 │Не используется.                                      ║
║  14 │Выполняет 5 функций:                                  ║
║     │ Загрузка файла: в 23801 и 23824 поместите 0, имя и   ║
║     │ расширение поместите с 23773, а также:               ║
║     │  Для бейсик - программ - больше ничего.              ║
║     │  Для файлов CODE :                                   ║
║     │   При A=0 - адрес загрузки и длина берутся из катало-║
║     │             га.                                      ║
║     │   При A=3 - адрес загрузки берется из HL, длина - из ║
║     │             DE.                                      ║
║     │   Иначе   - адрес загрузки берется из HL, длина - из ║
║     │             каталога.                                ║
║     │  Для массивов - A<>0, в HL - длина тела старого мас- ║
║     │  сива или 0, если такового нет; в 23767 - адрес тела ║
║     │  старого массива в памяти, в 23762 - имя массива.    ║
║     │ Верификация файла - все как и для загрузки, только в ║
║     │ 23801 поместите 255.                                 ║
║     │ Загрузка сектора файла - в 23801 поместите 0, в      ║
║     │ 23824 - 255, в 23767 - адрес загрузки, в HL - номер  ║
║     │ сектора, в A - 3, в DE - 0 (два последних действия - ║
║     │ для обхода ошибки. Внимание!!! Не работает с файлами ║
║     │ BASIC и DATA из-за ошибки.                           ║
║     │ Верификация сектора файла - все как и при загрузке,  ║
║     │ только в 23801 поместите 255.                        ║
║     │ Запись сектора файла - в 23801 поместите 255 (для об-║
║     │ хода ошибки), в 23824 - не 0 и не 255, в A - не 0, в ║
║     │ HL - номер сектора, в 23767 - адрес в памяти.        ║
║15-17│ Не используется.                                     ║
║  18 │ Стирание файлов. Имя и расширение поместите с 23773, ║
║     │ можно обнулить 23815, тогда по окончании там будет   ║
║     │ число стертых файлов.                                ║
║  19 │ Перенос 16 байтов с адреса в HL по адресу 23873.     ║
║  20 │ Обратное 19.                                         ║
║  21 │Проверка дорожки. Физический номер дорожки поместите в║
║     │аккумулятор и выберите сторону диска. Если обнаружены ║
║     │плохие сектора, то в 23823 и BC будет 7, а в 23766 бу-║
║     │дет их количество.                                    ║
║  22 │Выбирает верхнюю сторону диска.                       ║
║  23 │Выбирает нижнюю сторону диска.                        ║
║  24 │Проверяет принадлежность диска и настраивает систему  ║
║     │на его тип. Содержит ошибку.                          ║
╚═════╧══════════════════════════════════════════════════════╝

15638 - внутренняя точка входа. Как использовать, смотрите в
        дизассемблере.
15663 - поместите на стек нужный адрес, затем JP 15663. В ка-
        честве примера привожу подпрограммы выполнения двух
        команд TR-DOS, отсутствующих в 15635.

Форматирование диска. Имя диска поместите в 23773.

        CAHL 15632   ;изменение памяти
        LD A,255     ;эта часть программы повторяет 15635
        LD (23829),A ;сообщения не печатать
        LD (23839),A ;работает машинный код
        LD (23768),A ;дорожки не проверять
        LD (23761),A ;NO DISC при чтении адресного маркера
                     ;игнорировать
        LD HL,513    ;после завершения возврат будет в бейсик
        LD (23834),HL
        LD (23836),SP;сохранение SP
        PUSH AF      ;выделение места для адреса подпрограммы
                     ;обработки ошибок
        LD HL,7901   ;адрес подпрограммы форматирования
        PUSH HL      ;помещение его на стек
        LD HL,541    ;адрес подпрограммы установки адреса об-
                     ;работки ошибок
        PUSH HL      ;помещение его на стек
        JP 15663     ;вход в ПЗУ TR-DOS

Упаковка пространства диска.

        CALL 15632   ;снова повторяем 15635
        LD A,255
        LD (23829),A
        LD (23839),A
        LD HL,513
        LD (23834),HL
        LD (23836),SP
        PUSH AF
        LD HL,5806   ;адрес подпрограммы упаковки пространства
                     ;диска
        PUSH HL      ;помещение его на стек
        LD HL,541    ;дальше как в предыдущем примере
        PUSH HL
        JP 15663



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

Художественная литература - В. Фирсов: "И жизнь, и смерть".

Художественная литература - Фредерик Браун: "А что будет?"

Художественная литература - Фредерик Браун: "Письмо Фениксу"

Художественная литература - Фредерик Браун: "Ещё не конец"

Художественная литература - Фредерик Браун: "Оно и видно"

Художественная литература - Фредерик Браун: "Вуду"

Художественная литература - Федор Михайлович Достоевский: Отрывок из романа "Преступление и наказание"

IZHnews #0C - Рапорт.

IZHnews #0C - Hidden part.

IZHnews #0C - Visitors.

IZHnews #0C - Copyright.

IZHnews #0C - Nonsense.

IZHnews #0C - Commanders.

IZHnews #0C - Cheats.

IZHnews #0C - POKEmonZЫ.

IZHnews #0C - Rezuльты: Результаты анкетирования.

IZHnews #0C - Рулезники.

Системные сведения - Справочник по TR-DOS`у.

The Prodigy - Политическое самоосознание.

The Prodigy - Музыка нашего поколения.

The Prodigy - Мы вернулись, мы в ярости!


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

Похожие статьи:
Обзор - Обзор новинок: Forever, Heresy #1, Helicopter, Pussy.
Проза - приключение металлиста.
В паутине - График работы городских серверов.
scene intro - сценовое вступление.
Путеводитель - вступление.

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