ZX-Spectrum & TR-DOS для пользователей и программистов 1994 г.

TR-DOS для программистов - идеология и структура. Точки входа в систему.


II. TR-DOS для программистов

Эта часть, с точки зрения программистов, наверное, самая инте-
ресная в данной главе. Здесь рассматриваются «внутренности» TR-DOS,
без знания которых невозможно использовать ОС из программ, напи-
санных на языках как высокого, так и низкого уровня.

TR-DOS ИЗНУТРИ
Идеология и структура

Как уже было сказано, вся TR-DOS расположена в ПЗУ объемом 16К.
Однако если проанализировать память ZX Spectrum, окажется, что все оста-
лось на своих местах — бейсик-система по-прежнему занимает нижние 16К
адресного пространства процессора, а верхние 48К занимает ОЗУ. Где же
находится программное обеспечение TR-DOS? Не будем вдаваться в детали
(тем более, что этому посвящена следующая глава), скажем лишь, что ядро
ОС размещено в так называемом теневом ПЗУ.

Попасть в теневое ПЗУ и, следовательно, в TR-DOS можно нескольки-
ми путями, как чисто программными, так и используя аппаратную поддер-
жку, Назовем эти пути точками входа в систему. Основных точек входа всего
шесть, и как минимум двумя из них Вы уже пользовались при входе в TR-DOS
из Бейсика — это вызов подпрограмм по адресам 15616 и 15619,

Позвольте, скажет любознательный читатель, ведь в этих адресах
расположены коды знакогенератора. Да, действительно, но аппаратная часть
сконструирована так, что при передаче управления на любую из 256 ячеек,
начиная с адреса 15616, вместо стандартного ПЗУ бейсик-системы будет
подключено ПЗУ, содержащее коды TR-DOS. Взяв на себя управление,
дисковая система выполнит требуемые от нее действия и так или иначе
вернет управление вызывающей программе. При этом восстанавливается
стандартная конфигурация памяти. Таким образом, коды TR-DOS «прозрач-
ны» как для бейсик-сисгемы, так и для пользователя. Однако есть способ,
позволяющий все же посмотреть, что представляет из себя TR-DOS. Попро-
буйте выполнить ко—-манду

SAVE "TR-DOS"CODE 0,16384

а затем загрузите файл "'TR-DOS" в ОЗУ и посмотрите его каким-либо
монитором, например MONS4. Не правда ли, что на бейсик-систему это мало
похоже, хотя опытный программист может и заметит некоторое сходство в
начальных адресах. Итак, Вы получили коды TR-DOS, но как это произошло
и куда на сей раз подевался Бейсик? Все очень просто. Когда TR-DOS
выполняет команды, в нижних 16К процессора присутствуют ее коды, вот
их-то Вы и записали.

На рис. 25 представлена блок-схема TR-DOS, для большей наглядно-
сти приведены также схемы бейсик-системы и аппаратной поддержки.
Блок-схема дана в несколько упрощенной форме. Сделано это преднамерен-
но, дабы не усложнять восприятие материала. Некоторые блоки и функции
вызываются во время исполнения команд ОС по несколько раз.

Блок установки бейсик-системы вызывается только единожды — при
включении питания или при нажатии на кнопку «Сброс» компьютера. Его
прямое назначение — выполнить те же действия, что выполняет бейсик-си-
стема при старте: тест памяти, инициализация системных переменных и др.
Этот блок позволяет напрямую попасть в TR-DOS, минуя Бейсик. Выполнить
установочные программы из бейсик-системы не удается, так как они не
возвращают управления в TR-DOS.

Блок установки TR-DOS вызывается всякий раз при вызове системы
из Бейсика. Основное его назначение — установка и инициализация обла-
сти системных переменных TR-DOS.

Инициализация системы заключается в следующем. Как бы ни про-
исходил старт системы, в первую очередь устанавливаются системные пере-
менные бейсик-системы (из Бейсика или из TR-DOS, в зависимости от того,
откуда производится запуск). Затем проверяется наличие Interface 1, и если
он присутствует, устанавливается область системных переменных для него.
Эта область расположена в постоянном месте памяти — между областью
системных переменных Бейсика и описателями каналов (на которую указы-
вает CHANS). Далее происходит открытие области переменных TR-DOS. Если
Interface 1 нет, то переменные занимают ту же область, если есть, то область
между переменными Interface 1 и описателями каналов. На этом блок уста-
новки TR-DOS заканчивает свою работу, и при последующих вызовах просто
пропускается.

Работа Диспетчера памяти заключается в манипулировании областью
системных переменных TR-DOS. Если в системе нет Interface 1, то Диспетчер
просто пропускается, не выполняя никаких действий. Если же Interface 1
присутствует, то переменные TR-DOS оказываются сдвинутыми на величину
области его системных переменных. Для большинства подпрограмм TR-DOS
это не приемлемо, так как они написаны для работы с абсолютными
адресами ячеек памяти. Для устранения этого конфликта и служит Диспет-
чер памяти. Для TR-DOS он меняет местами 45 байт между адресами 23747
и 23859, тем самым устанавливая «реальную» схему памяти, а затем, при
возврате, производит обратный обмен. Таким образом, для пользователя
нижняя часть системных переменных находится сверху. Это обстоятельство
необходимо учитывать в программах, работающих непосредственно с пере-
менными TR-DOS*.

При входе в TR-DOS из Бейсика или по старту управление получает
Интерфейс пользователя. Используя Строчный редактор бейсик-системы, эта
программа отвечает за ввод команд TR-DOS в непосредственном режиме. На
экран программа выдает подсказку вида

А>

где А — это имя дисковода по умолчанию.

Конвертор 128 —> 48 подготавливает введенную команду для Интер-
претатора команд. Дело в том» что в 48- и в 12 8-Бейсике по разному хранится

*) Так как Interface 1 у нас не получил большого распространения, то
материал, приведенный здесь, представляет скорее академический инте-
рес»

текст, набранный за оператором REM (а ведь именно так TR-DOS получает
команды из программы). В Бейсике-48 команды TR-DOS набираются токе-
нами, а в 128 — посимвольно. Для приведения команд к одному виду й
служит Конвертор 128 --> 48.

Синтаксический анализатор проверяет правильность написания ко-
манды TR-DOS.

Селектор и интерпретатор команд находят, а затем выполняют задан-
ную команду. При своей работе интерпретатор команд постоянно обращает-
ся к Интерпретатору системных функций, который наряду с Диспетчером
файловой системы и Дисковыми драйверами образуют Ядро ОС.

Интерпретатор системных функций представляет собой набор под-
программ, выполняющих некоторые элементарные действия, такие как
сброс микроконтроллера, выбор дисковода, чтение/запись с дискеты в фи-
зическом формате, создание, открытие, чтение/запись и удаление файлов,
а также некоторые другие. Интерпретатором полезно пользоваться из при-
кладных программ, минуя Командный процессор.

Диспетчер файловой системы отвечает за логический формат дискет,
поддержку каталога и все файловые запросы к Интерпретатору системных
функций.

Дисковые драйверы предназначены для программирования микро-
схемы контроллера КР1818ВГ93. Они также отвечают за некоторые запросы
к Интерпретатору.

Особняком стоят Программы подготовки н восстановления памяти.
Эти программы используются при сохранения копии памяти кнопкой
MAGIC, Так как необходимо обеспечить полное сохранение памяти, Программа
подготовки памяти перед выполнением операции сохраняет в специальной
области дискеты (сектора 10 и 11 на нулевой дорожке) чать оперативной
памяти, используемой для работы TR-DOS. По завершению операции память
с диска полностью восстанавливается Программой восстановления памяти*.

Точки входа в систему

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

Итак, вспомним точки (т. е. адреса программ входа), которые нам уже
известны: 15616 — вход в TR-DOS и 15619 — вызов команд TR-DOS из
Бейсика. Любителям этого языка придется ограничиться только ими, так как
другие точки предназначены для использования преимущественно из ассем-
блера**.

Точка по адресу 15649 является достаточно важной, но, к сожалению,
часто забываемой программистами. Ее назначение — установка системы
TR-DOS. При этом в памяти открывается область системных переменных и
происходит ее инициализация. Без этих действий невозможно пользоваться
следующей точкой***.

А) Необходимо отметить, что два байта, расположенные по адресам 23304 и
23552 все же теряются. Используются также как минимум 40 байт из
стека процессора.

Возможно использовать их и из других языков, например, Паскаля, Си,
но и там все опять-таки сводится к ассемблеру.

***) Пользователям компьютера «Хоббит» (новая модель) следует учесть, что
в начале программы по адресу 15649 не стоит незначащий оператор
NOP, и поэтому подпрограмма для них недоступна.

Следующая точка входа в TR-DOS (15635) наиболее интересна с точки
зрения системных программистов. Это вызов Интерпретатора системных
функций, используя который, можно получить не только доступ к файловой
системе, но и «спуститься» на уровень ниже — к физическому формату
дискеты. Еще раз отметим, что использование Интерпретатора без установки
области системных переменных недопустимо.

В большинстве случаев к моменту вызова Интерпретатора эта область
уже открыта вызовами 15616 или 15619, но если где-то по ходу выполнения
пользовательской программы происходит инициализация памяти, то область
системных переменных TR-DOS необходимо вновь создать.

В разделе «Ввод команд» было сказано о том, что в компьютерах
ZX Spectum с объемом оперативной памяти 48К вход в TR-DOS происходит
при нажатии на кнопку «сброс». Это еще одна точка входа в систему.

Вход в систему при нажатии кнопки MAGIC происходит через специ-
альную точку входа с адресом 102. В интерфейсе Beta Disk это сделано
аппаратно, хота, используя прием, описанный на стр. 210, это можно сделать
и программно.

И, наконец, последняя точка используется при наступлении маскиру-
емого прерывания. TR-DOS не имеет программ, обслуживающих это преры-
вание, и поэтому просто передает управление стандартной процедуре бей-
сик-системы. Для программиста здесь практического интереса не видно, за
исключением случая, когда используется второй режим прерываний процес-
сора.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
Советы мастеру - 4 совета домашнему мастеру.
Форум - О русификации игровых программ.
Программистам - Заначка: как делать догрузку уровней в ТR-DОS.
Новелла - 12 ТАЙНЫХ КНИГ (глава 0,1).
Enlight'96 - Kano сталкивает лбами создателей журналов Spectrofon и ZX-Format.

В этот день...   19 апреля