1) отключаются все подсистемы "Консультанта" (распределение памя-
ти, обработчик системных ошибок, поддержка стандартного вида экрана и
т. д.);
2) администратор кучи сохраняет ее в оперативной памяти;
3) устанавливаются стандартные векторы прерываний DOS;
4) активизируется командный процессор DOS;
5) командному процессору передается необходимая команда для запус-
ка той или иной оболочки.
По окончании действий пользователя в оболочке:
1) устанавливаются векторы прерываний;
2) восстанавливается куча;
3) включаются все подсистемы системы;
4) восстанавливается предыдущий вид экрана системы.
Нужно отметить, что из оболочки, в которую выйдет пользователь,
можно будет загрузить любую другую программу. Если какая-либо из обо-
лочек в компьютере отсутствует, на экран выдастся сообщение "Невозмож-
но выполнить эту операцию!"
3.4. Программы, не входящие в комплект поставки
3.4.1. Создание и использование библиотек (модулей)
Система "Консультант" использует следующие модули:
1. Стандартные модули Турбо-Паскаля:
- SYSTEM.TPU (основной модуль Турбо-Паскаля);
- CRT.TPU (модуль, содержащий процедуры работы с текстовым экра-
ном);
- DOS.TPU (модуль, позволяющий работать с операциями среднего
уровня - уровня операционной системы);
- PRINTER.TPU (операции печати);
2. Стандартные модули Turbo-Vision%
- APP.TPU (базовый модуль для любой программы);
- OBJECTS.TPU (модуль, содержащий все невидимые объекты, использу-
ющиеся в программе);
- VIEWS.TPU (базовый модуль для создания видимых компонентов прог-
раммы);
- DIALOGS.TPU (модуль, включающий диалоговые окна и их компонен-
ты);
- MENUS.TPU (модуль, используемый при создании строк меню и стату-
са);
- MEMORY.TPU (модуль управления памятью);
- DRIVERS.TPU (модуль, служащий для обработки событий);
3. Демонстрационные модули Turbo-Vision, не входящие в состав
Turbo-Vision, но идущие в комплекте Турбо-Паскаль 6.0:
- CALC.TPU (реализация калькулятора);
- CALENDAR.TPU (создание календаря);
- PUZZLE.TPU (реализация игры-головоломки);
- MSGBOX.TPU (испрользование информационных окон);
- GAUGES.TPU (управление кучей);
4. Созданный при разработке системы модуль MAIN.TPU, содержащий
все объекты, используемые системой (см. выше), указатели на эти объек-
ты, регистрационные записи этих объектов, основные глобальные процеду-
ры СУБЗ, машины вывода и редактора знаний, а также константы команд
для обработчиков событий объектов.
Все используемые процедуры перечисленных модулей, кроме CRT, DOS,
DRIVERS и MAIN, включаются в файл EXPERT.OVR. CRT, DOS, DRIVERS,
MAIN - модули, использующие процедуры обработки прерываний (например,
модуль DRIVERS содержит процедуры обработки событий от клавиатуры и
"мыши"), а механизм оверлеев не распространяется на такие процедуры;
данные модули включены непосредственно в файл EXPERT.EXE.
Таблица 6.
Используемые объекты модулей Turbo-Vision.
┌─────────────┬──────────────┬───────────────────────────────────────┐
│ Модуль │ Объект │ Функция объекта │
├─────────────┼──────────────┼───────────────────────────────────────┤
│APP.TPU │TAPPLICATION │Стандартная программа. │
│ │TDESKTOP │Поверхность экрана. │
├─────────────┼──────────────┼───────────────────────────────────────┤
│OBJECTS.TPU │TOBJECT │Главный объект всей объектной иерархии │
│ │ │Turbo-Vision. │
│ │TCOLLECTION │Коллекция. │
│ │TBUFSTREAM │Буферизированный поток. │
│ │TRECT │Прямоугольник. │
│ │TSTREAMREC │Регстрационная запись. │
│ │TRESOURCEFILE │Файл ресурсов. │
│ │TSTRINGLIST │Коллекция строк. │
├─────────────┼──────────────┼───────────────────────────────────────┤
│VIEWS.TPU │TVIEW │Абстрактный видимый объект. │
│ │TGROUP │Объект-группа. │
│ │TTPALETTE │Тип палитры. │
│ │TWINDOW │Базовый объект всех окон. │
│ │TSCROLLBAR │Полоса скроллинга. │
│ │TFRAME │Рамка видимого объекта. │
│ │TCOMMANDSET │Группы разрешаемых или запрещаемых ко- │
│ │ │манд. │
├─────────────┼──────────────┼───────────────────────────────────────┤
│DIALOGS.TPU │TDIALOG │Диалоговое окно. │
│ │THISTORY │Протокол ввода. │
│ │TSTATICTEXT │Статический текст. │
│ │TSITEM │Элемент кластера. │
│ │TBUTTON │Командная кнопка. │
│ │TCHECKBOXES │Кластер с независимыми кнопками. │
│ │TRADIOBUTTONS │Кластер зависимых кнопок. │
│ │TINPUTLINE │Строка ввода. │
│ │TLABEL │Метка для кластера или строки ввода. │
│ │TLISTBOX │Скроллер списка строк. │
├─────────────┼──────────────┼───────────────────────────────────────┤
│MENUS.TPU │TMENU │Список связанных записей для меню. │
│ │TMENUBAR │Горизонтальная полоса меню. │
│ │TMENUITEM │Элемент меню. │
│ │TSTATUSDEF │Контекстная подсказка строки статуса. │
│ │TSTATUSLINE │Строка статуса. │
│ │TSTATUSITEM │Элемент строки статуса. │
├─────────────┼──────────────┼───────────────────────────────────────┤
│DRIVERS.TPU │TEVENT │Тип записи события. │
├─────────────┼──────────────┼───────────────────────────────────────┤
│CALC.TPU │TCALCDISPLAY │Табло дисплея и вычислительные действия│
│ │TCALCULATOR │Окно калькулятора. │
├─────────────┼──────────────┼───────────────────────────────────────┤
│CALENDAR.TPU │TCALENDARVIEW │"Начинка" календаря. │
│ │TCALENDWINDOW │Окно календаря. │
├─────────────┼──────────────┼───────────────────────────────────────┤
│PUZZLE.TPU │TPUZZLEVIEW │Игровое поле и правила игры. │
│ │TPUZZLEWINDOW │Окно игры. │
├─────────────┼──────────────┼───────────────────────────────────────┤
│GAUGES.TPU │THEAPVIEW │Индикатор доступной динамической памяти│
│ │ │ │
└─────────────┴──────────────┴───────────────────────────────────────┘
3.4.2. Подготовка ресурсов
Для уменьшения объема занимаемой памяти (как оперативной, так и
памяти "винчестера") и повышения "читаемости" программы, в системе ис-
пользуется механизм ресурсов. Его суть состоит в следующем: все объек-
ты, используемые в основной программе, записываются в отдельный файл,
затем по ходу выполнения программы, вызываются в ее тело по ее же ко-
мандам.
Программа M_VISUAL.EXE служит для подготовки файла ресурсов
EXPERT.AIR. Алгоритм ее работы следующий:
1. Создает на диске поток (полиморфный файл данных, ориентирован-
ный на работу с объектами).
2. Связывает с ним файл ресурсов EXPERT.AIR (в Turbo-Vision файл
ресурсов - это поток с произвольным доступом к данным).
3. Регистрирует все объекты, входящие в файл ресурсов, получая их
регистрационные записи из модулей записываемых объектов.
4. Загружает объекты из модулей и записывает их в файл ресурсов.
5. Закрывает поток.
Каждый объект записывается в файл ресурсов под определенным уни-
кальным ключом. Им может быть строка произвольных символов любой дли-
ны. В теле основной программы в конструкторе TEXPERT.INIT производит-
ся открытие файла ресурсов, а соответствующие процедуры используют
нужные им объекты, подгружая их из EXPERT.AIR.
Таблица 7.
Ресурсы системы "Консультант"
┌────────────────┬──────────────────┬────────────────┬───────────────┐