[an error occurred while processing this directive]

┌──────────────────────────────────────────────────────────┐
| Стандарт драйверов библиотеки BASIC-процедур от 23.10.95 |
└──────────────────────────────────────────────────────────┘

( только для среды BASIC 'MASTER'95 )

Настоящий стандарт был выработан в результате длительного творческого поиска програмистов фирмы "Friends' software" с целью облегчить сборку и привести к единой системе процесс ассемблирования драйверов процедур фирмы. Естественно строение объектного кода собираемых драйверов стало более логичным и соответствует принципам объектного ориентирования.

Драйвера, собираемые (ассемблируемые) по стандарту от 23.10.95 предполагают:

1. Общую схему ассемблирования определяемую главной константой ассемблирования ATRIBDR (см. исходные тексты) и спланированную в стартовых файлах сборки.

2. Наличие обязательных общих исходных модулей ассемблирования (существенно их взаиморасположение при ассемблировании):

А] ALLDEFIN.ASM (версия 23.10.95; содержит определения общих меток)

Б] SETDRMOD.ASM (версия 15.08.95; обеспечивает установку драйвера в оперативную память, систему "Диспетчер", инициализацию, вывод заставки итд... если это предусмотрено)

В] INTBAS95.ASM (версия 15.09.95; интерпретатор команд драйвера, обеспечивающий связь драйвера со средой BASIC 'MASTER'95)

Г] ALLSUBRS.ASM (версия 23.10.95; содержит общие подпрограммы драйвера)

3. Наличие необязательных модулей (непосредственно составляющих исходный текст драйвера).

4. Наличие необязательного модуля универсальной обработки ошибок ERRORMOD.ASM.

5. Возможность поддержки формата перемещаемых файлов ассемблера ДОК (для их функционирования в среде BASIC MASTER'95 необходимо установить в ДОС драйвер RELDRIVE.BIN (см. соответствующее описанием).

6. Возможность поддержки системы взаимодействия драйверов "Диспетчер" (версия 2.00).

7. Полную корректность взаимодействия со всеми структурами рабочей среды (DOS 3.3 и интерпретатор BASIC MASTER'95)

8. Поддержку обработки ошибок среды BASIC в стандартном варианте и при использовании оператора "ONERR GOTO" (при этом передаваемые коды ошибок соответствуют таковым у интерпретатора и DOS)

9. После ассемблирования и сборки, драйвера стандарта 23.10.95 имеют общую схему строения объектного кода (приводится ниже)

─────────────────────────────────────────────────────────────

Схема внутренней структуры драйвера процедур для итерпретатора "Бейсик MASTER'95"

(для версий, выпущенных после 23.10.95)

─────────────────────────────────────────────────────────────

     ┌───────────┐            
1)   |Зaгoлoвoк  ||            |
     |  драйвера ||            |
     └───────────┘| простой    |
                  ├            |
     ┌───────────┐| драйвер    |
2)   | Кодовая   ||            |
     |     часть ||            |
     └───────────┘             | перемещаемый
                               ├
     ┌───────────┐             | драйвер
3)   |Taблицa    |             |
     |пepeмeщeния|             |
     └───────────┘             |
                               |
     ┌-----------┐             |
     ! Taблицa   !             |
4)   !глoбaльныx !             |
     !  мeтoк    !             |
     └-----------┘             

* Объяснения:

Простой драйвер содержит только части 1 и 2, перемещаемый - все (обычно кроме 5-й).

1) Зaгoлoвoк дpaйвepa (длинa ¤D бaйт). Heoбxoдим для дaльнeйшиx дeйcтвий дpaйвepa пocлe зaгpузки.

Фopмaт зaгoлoвкa драйвера:

────────────┬────────────────────────────────────────────────
 ном. байта |               значение
────────────┼────────────────────────────────────────────────
     1      |   первый разделитель (константа ¤24 или @44)
            |
     2      |   главный атрибут драйвера
            |  (эквивалентен главной константе ассемблиро-
            |  вания; помещен в заголовок для пользователя)
-------------------------------------------------------------
 ном. битов !                   значение
------------!                                             
            !     бит установлен            бит сброшен
            !------------------------------------------------
            !                           !
     0      ! резерв                    !
     1      ! драйвер имеет функции     ! функций нет
     2      ! драйвер имеет процедуры   ! процедур нет
     3      ! есть заставка             ! нет заставки 
     4      ! драйвер перемемещаемый    ! не перемещаемый
     5      ! работает с "Диспетчером"  ! не работает
     6      ! есть прог-ма инициализации! нет 
     7      ! драйвер в банках 8-F      ! драйвер в норм. ОЗУ
            !                           !
-------------------------------------------------------------
            |
     3      |   второй разделитель (константа ¤2C)
            |
     4-5    |   адрес начала интерпретатора драйвера
            |
     6      |   третий разделитель (константа ¤2C)
            |
     7-8    |   адрес программы инициализации драйвера
            |   (если бит 6, 2-го байта сброшен, то игнориру-
            |   ется)
            |
     9      |   четвертый разделитель (константа ¤2C)
            |
     10-11  |   адрес текста заставки драйвера
            |   (если бит 3, 2-го байта сброшен, то игнориру-
            |   ется)
            |
     12     |   пятый разделитель (константа ¤24)
            |
     13     |   индивидуальный номер драйвера,
            |   устанавливается фирмой Friends' software или
            |   другой фирмой-производителем по соглашению
            |   с указанной фирмой
────────────┴────────────────────────────────────────────────

2) Koдoвaя чacть дpaйвepa - нeпocpeдcтвeннo тeлo дpaйвepa, включaющee микpoинтepпpeтaтop кoмaнд, cпeциaльныe пoдпpoгpaммы и кoд мoдульныx тeкcтoв пpoцeдуp дpaйвepa.

3) Taблицa пepeмeщeния - cпeциaльнaя тaблицa дaнныx o мeткax в ocoбoм фopмaтe. Пopoждaeтcя acceмблepoм пpи укaзaнии пceвдoкoмaнды REL (тoлькo для пepeмeщaeмыx фaйлoв).

4) Taблицa глoбaльныx мeтoк - coздaeтcя acceмблepoм пpи укaзaнии пceвдoкoмaнды REL и нaличии в иcxoднoм тeкcтe пpoгpaммы пceвдoкoмaнд EXTRN/ENTRY. Служит для связывания перемещаемых объектных программ. В драйверах фирмы "Friends' Software" не создается.

Простые алгоритмы, полезные пользователю:

1.Определение свободных зон.

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

В драйверах стандарта 23.10.95 могут быть использованы две зоны:

1 - код, расположенный до интерпретатора команд драйвера

2 - код, расположенный после последнего оператора драйвера

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

* Примечание:

Драйвера, работающие в банках ОЗУ переносят свой код в эти области и после загрузки их объектный код в стандартной ОП может быть утерян полностью (например драйвер DIR 4.07.BIN). Эти драйвера не могут быть перемещаемыми.

[an error occurred while processing this directive]