[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]