[an error occurred while processing this directive]

I.5.1 Организация стартового файла драйвера и связь модулей

при ассемблировании

Как уже ясно читателю, библиотечная организация модулей команд и общих модулей Системы расширения интерпретатора "Бейсик" позволяет удобно и быстро собрать драйвер, имеюющий необходимый набор команд. Создание отдельной команды или модуля команд обсуждалось в Разделе I.4.1. После подготовки всех модулей необходимо связать все модули, составляющие драйвер, между собой для их ассемблирования. Проще всего осуществить это путем создания стартового файла (модуля), осуществляющего последовательные вызовы всех модулей, составляющих драйвер и организующего их связь. Стартовый модуль должен содержать стартовый адрес ассемблирования драйвера и главную константу ассемблирования ATRIBDR, определяющую процесс ассемблирования и настройки остальных модулей. (О формате константы ассемблирования см. Приложение 2 Раздела II.)

Ниже, в качестве приимера, приводится текст стартового модуля, предназначенного для сборки драйвера к программе "MASTER MENU" из очевидно известного читателю MASTER DISK II PROFESSIONAL PROGRAMS:

1 LST ON
2
3 *--------------------------------*
4 * СТАРТОВЫЙ ФАЙЛ СБОРКИ ДРАЙВЕРА *
5 * ПРОГРАММЫ MENU OF MASTER DISK  *
6 *--------------------------------*
7
8  LST OFF
9
10
11 CHN ALLDEFIN.ASM  ; файл общих меток
12
13
14 ATRIBDR    EQU :00100000 ; константа сборки драйвера
15
16     DO ATRIBDR&:00010000
17
18     REL
19
20     FIN
21
22            ORG ¤4000
23
24            DFB @44
25            DFB ATRIBDR   ; главный атрибут драйвера
26            DFB ¤2C
27 BEGDRIVE   DW DRIVE      ; адрес обработчика драйвера
28            DFB ¤2C
29 INITDR     DW 0          ; адрес программы инициализации
30            DFB ¤2C
31 TEXTHELP   DW 0          ; адрес заставки драйвера
32
33  CHN SETDRMOD.ASM  ; модуль установки драйвера
34  CHN INTPRALL.ASM  ; интерпретатор драйвера
35  CHN ALLSUBRS.ASM  ; общие подпрограммы  
36
37 *----------------
38 NEXTOPER
39 *----------------
40
41  CHN FILESFUN.ASM  ; функция "FILES"
42  CHN WINMODL2.ASM  ; "оконный модуль"
43  CHN INFMODUL.ASM  ; оператор "INFORM"
44  CHN PAL.OPER.ASM  ; оператор "PAL"    
45  CHN BELLOPER.ASM  ; оператор "BELL"
46  CHN RESETOPR.ASM  ; оператор "RESET"
47  CHN NCCMODUL.ASM  ; модуль работы с ячейкой часов
48  CHN CLOCKDRV.ASM  ; драйвер часов
49
50  CHN ERRORMOD.ASM  ; универсальный модуль обработки ошибок
51
52;END
53

Комментируя исходный текст этого стартового модуля следует отметить следующее:

В строках 11 и 33-35 помещены вызовы модулей ядра Системы. В строке 14 определена главная константа ассемблирования для данного драйвера. В строке 22 указан стартовый адрес начала ассемблирования. В строках 16-20 располагается проверка разряда константы ассемблирования, являющегося признаком "перемещаемого файла". Данный драйвер не перемещаемый (соответствующий бит главной константы ассемблирования равен "0") и поэтому псевдокоманда "REL" ассемблером не рассматривается. В строках 24-31 располагается заголовок драйвера (Формат см. в Приложении 2 РазделаII.) Метка NEXTOPER в строке 38 необходима для связи команды &"LIST", входящей в модуль интерпретации команд INTPRALL.ASM со второй командой драйвера (ей является функция FILES). Вызовы модулей команд, составляющих драйвер, расположены в строках 41-48. Каждая последняя команда модуля имеет ссылку на первую команду последующего модуля (в полях команд; см. Раздел I.4.1). Модуль универсальной обработки ошибок, которым очевидно пользуются какие-то команды драйвера присоединен к драйверу в строке 50.

Приведенный пример в полной мере иллюстрирует план строения стартового модуля. Любой другой стартовый модуль должен строиться по подобному плану. Такое строение модуля позволяет быстро дополнить драйвер (при необходимости) любыми модулями команд из библиотеки на Вашей дискетте с исходными текстами, включив их названия в стартовый модуль в теле команды "CHN".

Примечание: Следует заметить, что не все системы "Ассемблер" ПЭВМ АГАТ-9 поддерживают вложенные вызовы файлов с исходными текстами по псевдокоманде "CHN". Если Вы пользуетесь подобным ассемблером Вам придется связать модули последовательно, вызывая последующий из конца предыдущего. Это весьма неудобно, поэтому автор "Системы" пользуется так называемым "Оконным ассемблером", который поддерживает вложенные вызовы файлов по "CHN".

.ст Раздел I:5.2

[an error occurred while processing this directive]