[an error occurred while processing this directive]
( ПРОДОЛЖЕНИЕ ) 

     3.2.1.7 Чтение байта с устройства 

       3.2.1.7.1 Общие слова 

         Данная функция введена для устройств с побайтовым 
         обменом( принтер, сеть и т.д. ), она не реализо- 
         вана в базовом комплекте библиотеки SYSTEM, но 
         может быть без проблем написана по ВАШЕМУ желанию. 

     3.2.1.8 Запись байта на устройство 

       3.2.1.8.1 Общие слова 

         То же, что и при чтении. 

     3.2.1.9* Инициализация устройства 

       3.2.1.9.1 Общие слова 

         Данная функция введена для устройств, обладающих 
         памятью( дисковод, RAMDisk и т.д. )для полного уни- 
         чтожения ВСЕЙ информации на них. Для устройств дру- 
         гого типа может игнорироваться. 
         Приношу свои извинения за непродуманность данного 
         пункта т.к. эта функция не реализована пока в 
         библиотеке SYSTEM. 

     3.2.1.10* Установка параметров "своего" устройства 

       3.2.1.10.1 Общие слова 

         Эта функция устанавливает необ- 
         ходимые ячейки системы для того, чтобы система 
         смогла вообще работать с логическим УСТРОЙСТВОМ. 
         Данная функция выполняется только при смене актив- 
         ного УСТРОЙСТВА. 

       3.2.1.10.2 Входные параметры 

         WorkSltAdr- адрес слотовой области. 

       3.2.1.10.3 Ячейки для установки 

         Для системы необходимо установить только ячейку 
         WorkSlt( адрес рабочей слотовой области ), 
         все остальные ячейки нулевой страницы, 
         отведенные под рабочие параметры УСТРОЙСТВА( SW+ ) 
         могут быть установлены по желанию разработчика 
         УСТРОЙСТВА. 

3.3 Организация прерываний 

  3.3.1 Общие слова 

    В BForth существует возможность написать свои собственные
    обработчики прерываний, причем, как и при организации 
    ВВОДА/ВЫВОДА прерывания имеют структуру цепочки и свои 
    слова, создающие слова- прерывания. Также имеется раз- 
    личие между прерываниями типа NMI и IRQ. 

  3.3.2 Особенности слов- прерываний 

    Слова- прерывания могут быть написаны только на ассемб-
    лере, что связано с критичностью времени выполнения слов
    обработчиков. Ввиду этого слова- прерывания нельзя на-
    писать в форт- системе, но для этого существует такая
    вещь как БИБЛИОТЕКА. Подробно о написании библиотек см.
    главу 5.
    
  3.3.3* Создание слов- прерываний 

    Здесь не все так просто, как в пункте 3.1.3( создание 
    слов- обработчиков IN/OUT ). Т.к. слово- обработчик 
    прерывания пишется на ассемблере, то здесь не будет при- 
    ведена структура слова- обработчика прерывания( она бу- 
    дет рассмотрена в ПРИМЕРЕ к этому пункту ). 

  3.3.4 Системные установки прерываний 

    Для прерывания NMI системные установки выглядят: 

     NMIRESET    ( сброс всей цепочки прерываний NMI ) 
     ' KBDINT    ( на стек адрес процедуры обработки прерыва-
                   ний клавиатуры ) 
     NMISET      ( установим первый элемент цепочки ) 
     ' CURSORNMI ( на стек адрес процедуры обработки мерцаний
                   курсора ) 
     NMISET      ( установим эту процедуру первой в цепочке) 

    Для прерывания IRQ системных установок не предусмотрено 

3.4 Организация памяти 

  3.4.1 Общие слова 

    Память в BForth организована в виде страниц, каждая из 
    которых представляет собой сегменты ( 8..f ) основ- 
    ной памяти и все сегменты ДОП памяти, которые подключают 
    ся на адреса A000..BFFF( т.е. на 5 банк ). В BForth также
    существует такое понятие как ЗАДАНИЕ, имеющее ID( иденти-
    фикационный номер ). Все это введено потому, что в форте 
    в любой момент времени может находиться несколько прог- 
    рамм, которые хотят сохранить свои данные за собой( нап- 
    ример EDITOR, GRAPHICS и т.д. ). 

  3.4.2* Как использовать память системы 

    Для того, чтобы ВАША программа могла использовать память 
    системы необходимо "зарегистрироваться", для того, чтобы 
    система могла "знать" кому она будет выделять память. 

    РЕГИСТРАЦИЯ: состоит в выдаче на стек ID своего ЗАДАНИЯ 
    и вызова слова SETID( ID ЗАДАНИЯ- слово в диапазоне 
    1- ff, но для ЗАДАНИЙ пользователя рекомендуются ID 
    80- ff, для того, чтобы не возникало конфликтов с систем-
    ными ЗАДАНИЯМИ ). При выполнении слова SETID с стеке 
    будет запомнено текущее состояние памяти системы и 
    номер текущего ЗАДАНИЯ. После этого текущим ЗАДАНИЕМ 
    будет объявлено то, номер которого на стеке. 
    После этого все слова, работы с памятью будут относиться 
    к ВАШЕМУ ЗАДАНИЮ. 

    ЗАХВАТ: состоит в том, что ВАШЕ ЗАДАНИЕ выставляет на 
    стек число необходимых ему блоков по 8 кб. и вызывает 
    слово ALLOC. Слово ALLOC возвращает число захваченных 
    у системы блоков. 

    ИСПОЛЬЗОВАНИЕ: состоит в выдаче номера требуемого блока 
    памяти на стек и исполнения слова SETMEM. После этого 
    на адреса A000..BFFF( 5 банк ) будет подключен нужный ВАМ
    кусок памяти( сегмент ). Если же ВЫ попросили систему 
    подключить несуществующий сегмент( например: ВЫ зарезер- 
    вировали у системы 3 блока, а просите включить 4 блок ), 
    то будет выдано сообшение об ошибке. 

    ВЫХОД_ИЗ_ЗАДАНИЯ: состоит из двух возможных альтернатив: 
     ВЫХОД_С_СОХРАНЕНИЕМ-  выполняется словом NOFREE. 
     ВЫХОД_БЕЗ_СОХРАНЕНИЯ- выполняется словом FREE. 
    при выходе из задания системой автоматически восстанав- 
    ливается предыдущая конфигурация памяти и предыдущее 
    ЗАДАНИЕ. 

    ПРИМЕЧАНИЕ: 1. Полный список слов для работы памяти см. 
                   ГЛОССАРИЙ. 
                2. Особый статус имеет ID= 1, этот ID 
                   принадлежит графике, поэтому память при 
                   использовании этого ID используется бло- 
                   ками по 16 кб. и подключается по адресам 
                   8000.. BFFF( т.к. графике 512*256 необхо- 
                   мо 16 кб. памяти ). Поэтому, если ВЫ не 
                   планируете работу с графикой, а хотите 
                   иметь не 8, а 16 кб., то МОЖЕТЕ исполь- 
                   зовать ID= 1. 

3.5 Организация экранного стека модуля CRT 

  3.5.1 Общие слова 

    Экранный стек модуля CRT представляет из себя всего- 
    навсего 4 кб. памяти, находящихся на адресах D000..DFFF. 
    Но напрямую к этим адресам обратиться( @, c@, cmove и 
    т.д. )нельзя т.к. эти же адреса занимает верх BForth, 
    а стек подключается лишь на время обращения к нему. 
    Данный стек используется в модуле CRT для сохранения 
    параметров текущего окна, содержимого экрана под окном 
    и для других целей. 

  3.5.2* Использование экранного стека 

    Напрямую экранный стек использовать нельзя. Но набор 
    слов, оперирующих экранным стеком приведен в ГЛОССАРИИ. 

  ПРИМЕЧАНИЕ: Данный вид стека был позаимствован из форта, 
              реализованного на IBM, пиплом из Москвы. За 
              идею ОГРОМНОЕ СПАСИБО. 

След. файл->bffeatr4.doc 
[an error occurred while processing this directive]