[an error occurred while processing this directive]


             3. Характерные особенности BForth 
-------------------------------------------------------------

Введение: В данной главе будут описаны особенности BForth, 
          которые не входят в стандарт и являются, в основе, 
          авторской разработкой. Именно эти особенности и 
          придают BForth статус ЯЗЫКА. 

          ПРИМЕЧАНИЕ: Полный список слов не вошедших в 
                      стандарт ВЫ найдете в ГЛОССАРИИ. 

3.1 Организация потоков ВВОДА/ВЫВОДА( IN/OUT ) 

  3.1.1 Общие слова 

    В BForth не существует никаких специальных слов для 
    работы с принтером, сетью и т.д. Все это компенсирует- 
    ся ОБРАБОТКОЙ ПО ЦЕПОЧКЕ с едиными словами IN и OUT. 
    Каждое из этих этих слов представляет 
    из себя ЦЕПОЧКУ слов, которые могут обрабатывать 
    свои устройства( память, сеть, принтер и т.д. ). Причем 
    каждое слово в ЦЕПОЧКЕ "знает" только о следующем за ним 
    слове, которому и будет передано управление после завер- 
    шения работы этого слова. Также каждое звено цепочки мо- 
    жет информировать все последующие звенья о свой работе. 
    Понятно, что о первом слове "знает" сам  IN или OUT. 

  3.1.2* Особенности слов IN и OUT 

     OUT: 1. Данные для вывода( байт ) находятся в ячейке 
             OUTCHR. 
          2. Ячейка для информирования след. звеньев: OUTWAS 

          ПРИМЕЧАНИЕ: На время работы цепочки OUT запреща- 
                      ются ВСЕ прерывания системы. 

      IN: 1. Если звено получает данные из своего устройства,
             то оно обязано: а) Поместить эти данные на стек 
                             б) Установить ячейку INWAS 
          2. Если в результате каких- либо действий пре- 
             дыдущие звенья цепочки установили INWAS, то 
             любое звено цепочки может игнорироваться( т.е. 
             добровольно прервать свое исполнение ), испол- 
             нив слово INWAS? в результате выполнения данного
             слова процедура будет продолжена, если не была 
             установлена INWAS и будет совершен переход к 
             следующему звену цепочки в обратном случае. 
          3. После завершения последнего звена цепочки IN 
             на стек выдается содержимое INWAS. 

    Понятно, что подключив к IN и OUT нужные ВАМ процедуры 
    можно работать даже и на другом компьтере( с ВАШЕЙ клави-
    атуры разумеется ), а также работать в графике как в тек-
    сте поскольку все операторы в/в( OUTS, GETS, . и т.д. ) 
    работают только через IN и OUT. 
 
    ПРИМЕЧАНИЕ: Удалить обработчик можно, только используя 
                знания о структуре обработчиков, которая 
                будет рассматриваться в примерах. 

  3.1.3* Создание слов обработчиков IN/OUT 

     Данные слова особые и создаются с помощью 
     :dev <WName> .....   ;dev 

     Понятно, что о содержимом внутри слова заботитесь 
     только ВЫ. 

  3.1.4 Системные установки IN/OUT 

     В системе инициализация происходит примерно так: 

     для OUT 
        OUTRESET ( Сбросим весь ВЫВОД 
        ' CONOUT ( Получим адрес CFA процедуры вывода на 
                 ( консоль 
        OUTSET   ( Установим первое звено для OUT 

     для IN 
        INRESET  ( Сбросим весь ВВОД 
        ' KBDIN  ( Получим адрес CFA процедуры ввода с 
                 ( клавиатуры 
        INSET    ( Установим первое звено для IN 

    ПРИМЕР: 
                МЫ ХОТИМ 
            Чтобы вывод с экрана шел также и на 
            принтер и у нас есть слово, которое может посы- 
            лать байт на принтер( пусть OUTPRN ). Тогда 
            цепочка вывода будет выглядеть: 
                   OUT      Единое слово для вывода 
                    ! 
                    ! 
                    V 
                  OUTPRN    Вывод на принтер 
                    ! 
                    ! 
                    V 
                  CONOUT    Вывод на консоль 
                    ! 
                    ! 
                    V 
            Выход_из_цепочки_OUT 

                КАК ЭТО СДЕЛАТЬ? 
            В диалоговом режиме: ' OUTPRN SETOUT 

                ЧТО ДАЛЬШЕ БУДЕТ? 
            После этого все символы, которые посылаются 
            на консоль будут сначала приходить в OUTPRN, а 
            потом CONOUT, причем вывод на экран будет идти 
            вне зависимости от того, был или нет вывод на 
            принтер( вне зависимости от OUTWAS ). 

    ПРИМЕЧАНИЕ: Из ПРИМЕРА видно, что одно и то же слово 
                НЕ может быть, ни два раза в цепочке, 
                ни в какой- либо другой цепочке. 

3.2 Организация устройств 

  В BForth для работы с внешними устройствами применяется 
  обозначение УСТРОЙСТВО. Основной принцип- это абстра- 
  гирование от природы УСТРОЙСТВА посредством стандартиза- 
  ции операций УСТРОЙСТВА. Т.е. ВЫ можете не знать с ка- 
  ким устройством ВЫ сейчас работаете, но это будет знать 
  за ВАС система, которая будет работать с внешним устрой- 
  ством так, чтобы ВАМ не приходилось задумываться о том, 
  как работать с ним. 
  Теперь по делу. Примем постулаты: 
                   а) Есть УСТРОЙСТВО, т.е. абстрактная 
                      вещь. 
                   б) Есть устройство, т.е. конкретная вещь 
                      ( например дисковод ) 
                   в) Есть ОБРАБОТЧИК, т.е. программа, ко- 
                      торая знает свое устройство, и умеет: 
                      0) Опознать  устройство 
                      1) Включить  устройство 
                      2) Выключить устройство 
                      3) Считать   блок с  устройства 
                      4) Записать  блок на устройство 
                      5) Оперировать функциями чт. файлов 
                      6) Оперировать функциями зп. файлов 
                      7) Считать   байт с  устройства 
                      8) Записать  байт на устройство 
                      9) Инициализировать устройство 
                         ( форматировать ) 
                     10) Установить свои параметры 
                         в рабочую область 
                           
  3.2.1 Описание каждой функции 

    3.2.1.0 Функция 0- Опознать устройство 

      3.2.1.0.1 Общие слова 

        При начальной загрузке система проверяет все 
        слоты машины на наличие в них устройств. Для этого 
        система выдает в стек номер слота и поочередно 
        запускает ОБРАБОТЧИКИ из системного набора 
        с 0 на стеке( т.е. 0- функция ). 
        Если ОБРАБОТЧИК по 0- функции опознал в сло- 
        те, номер которой на стеке, "свое" устройство, то 
        ему предоставляется на "свои" 
        нужды 256 байт в области, которая отведена системой 
        для этой слоты( см. 0.3 ). 
 
       3.2.1.0.2 Системный набор ОБРАБОТЧИКОВ 

         ЧТО ЭТО ТАКОЕ? 
         В системе предусмотрена область для хранения адре- 
         сов ОБРАБОТЧИКОВ. Другими словами система хранит 
         в себе "знания" о том, как обрабатывать какие- либо 
         внешние устройства. Причем она не должна заботиться 
         о том, чтобы знать где и в какой слоте то или иное 
         устройство, система предоставляет ОБРАБОТЧИКАМ 
         самим опознавать "свое" устройство. 

         ГДЕ ЭТО НАХОДИТСЯ? 
         Итак переменная, в которой хранятся адреса ОБРАБОТ- 
         ЧИКОВ: TREATERS 

         КАК ЗАРЕГИСТРИРОВАТЬ СВОЙ ОБРАБОТЧИК? 
         Необходимо выдать в стек адрес CFA своего ОБРАБОТЧИ-
         КА и выполнить слово REGTREAT. При этом адр. ОБРАБ. 
         будет занесен в системный набор на первую свободную 
         позицию, если же место в наборе исчерпано, то 
         будет удален адрес последнего в наборе ОБРАБОТЧИКА 
         и на его место записан адрес нового. 

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