QUASIC-2

Материал из Emuverse
Перейти к: навигация, поиск
Red copyright.png Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

 


                       АКАДЕМИЯ НАУК СССР
            НАУЧНЫЙ ЦЕНТР БИОЛОГИЧЕСКИХ ИССЛЕДОВАНИЙ
            НАУЧНО-ИССЛЕДОВАТЕЛЬСКИЙ ВЫЧИСЛИТЕЛЬНЫЙ
                             ЦЕНТР















                 Л.И.ПОДОЛЬСКИЙ, А.П.ЛЯСКОВСКИЙ


             СИСТЕМА QUASIC-2 ДЛЯ ПРОГРАММИРОВАНИЯ
                          НА МИКРО-ЭВМ


                  ВЕРСИЯ 2.2 (ПРЕДВАРИТЕЛЬНАЯ)





























                          ПУЩИНО  1985
.C
�                             - 2 -








                           АННОТАЦИЯ



        ОПИСАНА СИСТЕМА ДЛЯ СОЗДАНИЯ  ПРОГРАММ  ДЛЯ  МИКРО-ЭВМ
   "ЭЛЕКТРОНИКА-60"  И  ПРОГРАММНО  СОВМЕСТИМЫХ  С  НЕЙ   ЭВМ.
   СИСТЕМА  ОБЕСПЕЧИВАЕТ  ДИАЛОГОВУЮ  РАЗРАБОТКУ  ПРОГРАММ  НА
   МИКРО-ЭВМ  В  РАЗЛИЧНЫХ  АППАРАТНЫХ   КОНФИГУРАЦИЯХ.   ЯЗЫК
   ПРОГРАММИРОВАНИЯ ОБЛАДАЕТ КАК ВОЗМОЖНОСТЯМИ ЯЗЫКОВ ВЫСОКОГО
   УРОВНЯ  ТАК   И   МАШИННО-ОРИЕНТИРОВАННЫМИ   ВОЗМОЖНОСТЯМИ.
   СИСТЕМА  МОЖЕТ  ИСПОЛЬЗОВАТЬСЯ  АВТОНОМНО  ИЛИ   В   РАМКАХ
   СТАНДАРТНЫХ ОПЕРАЦИОННЫХ СИСТЕМ.

        ДЛЯ  СПЕЦИАЛИСТОВ  ПО  АВТОМАТИЗАЦИИ  ИССЛЕДОВАНИЙ   И
   АВТОМАТИЗАЦИИ ТЕХНОЛОГИЧЕСКИХ ПРОЦЕССОВ.
.C
�                             - 3 -




                           ПРЕДИСЛОВИЕ



        СИСТЕМА QUASIC-2 ПРЕДСТАВЛЯЕТ СОБОЙ  РАЗВИТИЕ  СИСТЕМЫ
   QUASIC, РАЗРАБОТАННОЙ В 1980 Г (*). ЭТО  РАЗВИТИЕ  ОТРАЖАЕТ
   5-ТИ   ЛЕТНИЙ   ОПЫТ   ЭКСПЛУАТАЦИИ   СИСТЕМЫ   ВО   МНОГИХ
   ОРГАНИЗАЦИЯХ.

        ОСНОВНАЯ ИДЕЯ СОЗДАНИЯ СИСТЕМЫ QUASIC СОСТОЯЛА В  ТОМ,
   ЧТОБЫ    ОБЕСПЕЧИТЬ    ДИАЛОГОВУЮ    РАЗРАБОТКУ    ПРОГРАММ
   НЕПОСРЕДСТВЕННО  НА  МИКРО-ЭВМ.  ПРИ   ЭТОМ   НАКЛАДЫВАЛОСЬ
   ДОПОЛНИТЕЛЬНОЕ ОГРАНИЧЕНИЕ,  ЧТО  ЭВМ  НЕ  ИМЕЕТ  МАГНИТНЫХ
   ДИСКОВ   И   ЛЕНТ,   А   ОСНАЩЕНА   ТОЛЬКО   ПЕРФОЛЕНТОЧНЫМ
   ОБОРУДОВАНИЕМ. ОПЫТ ИСПОЛЬЗОВАНИЯ СИСТЕМЫ QUASIC,  КАК  НАМ
   КАЖЕТСЯ,  ПОДТВЕРДИЛ,  ПОЛЕЗНОСТЬ  ПРИНЯТОГО  ПОДХОДА   ДЛЯ
   БОЛЬШОГО ЧИСЛА  ПРИЛОЖЕНИЙ.  БОЛЕЕ  ТОГО,  ВЫЯСНИЛОСЬ,  ЧТО
   ОБЛАСТЬ  ПРИЛОЖЕНИЯ  СИСТЕМЫ  НЕ  ОГРАНИЧИВАЕТСЯ  МАШИНАМИ,
   ОСНАЩЕННЫМИ    ТОЛЬКО     ПЕРФОЛЕНТОЧНЫМ     ОБОРУДОВАНИЕМ.
   ВОЗМОЖНОСТЬ ДИАЛОГОВОЙ РАБОТЫ, ПРИГОДНОСТЬ ЯЗЫКА ДЛЯ  ЗАДАЧ
   РЕАЛЬНОГО ВРЕМЕНИ И ДОСТАТОЧНО ВЫСОКАЯ СКОРОСТЬ  ВЫПОЛНЕНИЯ
   ПРОГРАММ  ДЕЛАЮТ  ЭТУ  СИСТЕМУ  ПОЛЕЗНОЙ  И  НА  МИКРО-ЭВМ,
   ИМЕЮЩИХ   ДИСКИ,   ИЛИ,   СВЯЗАННЫХ   ЛИНИЯМИ    СВЯЗИ    С
   МИНИ-МАШИНАМИ.

        ПОЭТОМУ  БЫЛО  ПРИНЯТО  РЕШЕНИЕ  ПРОДОЛЖИТЬ   РАЗВИТИЕ
   СИСТЕМЫ QUASIC. ОСНОВНЫМИ НАПРАВЛЕНИЯМИ  РАЗВИТИЯ  ЯВЛЯЮТСЯ
   СЛЕДУЮЩИЕ.  ВО-ПЕРВЫХ,  ОБЕСПЕЧЕНИЕ  ДОСТУПА  К  ФАЙЛАМ  НА
   ГИБКИХ  ДИСКАХ  ИЛИ  МАГНИТНЫХ  ЛЕНТАХ,  ПРИСОЕДИНЕННЫХ   К
   МИКРО-ЭВМ, ИЛИ К  УДАЛЕННЫМ  ФАЙЛАМ  ЧЕРЕЗ  ЛИНИЮ  СВЯЗИ  К
   МИНИ-ЭВМ.  ВО-ВТОРЫХ,  ВОЗМОЖНОСТЬ  ПОЛУЧЕНИЯ   ИСПОЛНЯЕМОЙ
   ПРОГРАММЫ, КОТОРАЯ МОЖЕТ ИСПОЛЬЗОВАТЬСЯ БЕЗ СИСТЕМЫ  QUASIC
   И, В ЧАСТНОСТИ, МОЖЕТ БЫТЬ ЗАПИСАНА И  ВЫПОЛНЯТЬСЯ  В  ПЗУ.
   В-ТРЕТЬИХ, МОДИФИКАЦИЯ ЯЗЫКА В ЦЕЛЯХ ПРИДАНИЯ  ЕМУ  БОЛЬШЕЙ
   ВЫРАЗИТЕЛЬНОСТИ И ЛОГИЧНОСТИ.

        ПОДЧЕРКНЕМ, ЧТО В СИСТЕМЕ И В  ЯЗЫКЕ  СДЕЛАНО  БОЛЬШОЕ
   КОЛИЧЕСТВО ИЗМЕНЕНИЙ. ВО ВСЕХ СЛУЧАЯХ,  КОГДА  МЫ  СЧИТАЛИ,
   ЧТО ПЕРВОНАЧАЛЬНОЕ РЕШЕНИЕ БЫЛО НЕУДАЧНЫМ,  ОНО  ИЗМЕНЯЛОСЬ
   БЕЗ КАКИХ-ЛИБО ПОПЫТОК  СОХРАНИТЬ  СОВМЕСТИМОСТЬ.  КОНЕЧНО,
   ИЗМЕНЕНИЕ ЯЗЫКА, У КОТОРОГО УЖЕ ЕСТЬ  ПОТРЕБИТЕЛИ,  ЯВЛЕНИЕ
   НЕЖЕЛАТЕЛЬНОЕ. НО НА  QUASIC,  ПО-ВИДИМОМУ,  НЕ  ПРОИСХОДИТ
   ЗНАЧИТЕЛЬНОГО НАКОПЛЕНИЯ ПРОГРАММНОГО  ОБЕСПЕЧЕНИЯ,  И  НАМ
   КАЖЕТСЯ БОЛЕЕ ВАЖНЫМ ОБЕСПЕЧЕНИЕ "ХОРОШЕГО СТИЛЯ".

        В    ЗАКЛЮЧЕНИЕ    ОТМЕТИМ,    ЧТО    ЗДЕСЬ    ОПИСАНА
   ПРЕДВАРИТЕЛЬНАЯ  ВЕРСИЯ  (2.2)   СИСТЕМЫ   ПРОГРАММИРОВАНИЯ
   QUASIC-2. РАБОТА НАД ЭТОЙ СИСТЕМОЙ ПРОДОЛЖАЕТСЯ.  ОКОНЧАНИЕ
   РАЗРАБОТКИ ПЛАНИРУЕТСЯ В 1986 Г.


                                               Л.И.ПОДОЛЬСКИЙ
   20.11.85


   -----------------------------------------------------------
   (*) ПОДОЛЬСКИЙ Л.И., СИСТЕМА QUASIC ДЛЯ ПРОГРАММИРОВАНИЯ НА
   МИНИ-ЭВМ, ПУЩИНО, ОНТИ НЦБИ АН СССР, 1980.
.C
�                             - 4 -








                           СОДЕРЖАНИЕ



       АННОТАЦИЯ ..........................................  2

       ПРЕДИСЛОВИЕ ........................................

   1.  ВВЕДЕНИЕ............................................  6


   2.  ОПИСАНИЕ ЯЗЫКА......................................  8

   2.1.   ОСНОВНЫЕ ПОНЯТИЯ.................................  8
   2.1.1.   СТРУКТУРА ПРОГРАММЫ............................  8
   2.1.2.   ОПЦИИ, ПСЕВДО-КОММЕНТАРИИ......................  8
   2.1.3.   КОНСТАНТЫ......................................  9
   2.1.4.   ПЕРЕМЕННЫЕ..................................... 10
   2.1.5.   ФУНКЦИИ........................................ 12
   2.1.6.   ПРОЦЕДУРЫ...................................... 12
   2.1.7.   АДРЕСНЫЕ КОНСТАНТЫ............................. 12
   2.1.8.   ВЫРАЖЕНИЯ...................................... 13
   2.1.9.   УСЛОВИЯ........................................ 14
   2.2.   ОПЕРАТОРЫ........................................ 15
   2.2.1.   ОПЕРАТОРЫ ОПИСАНИЯ............................. 15
   2.2.2.   ОПЕРАТОР ПРИСВАИВАНИЯ.......................... 16
   2.2.3.   ОПЕРАТОРЫ УПРАВЛЕНИЯ........................... 17
   2.2.4.   ОПИСАНИЕ И ВЫЗОВ ПРОЦЕДУР...................... 23
   2.2.5.   ОБРАБОТКА ПРЕРЫВАНИЙ........................... 24
   2.2.6.   ОПЕРАТОРЫ ВВОДА-ВЫВОДА......................... 26
   2.2.7.   РАЗНОЕ......................................... 30
   2.2.8.   СПЕЦИАЛЬНЫЕ ОПЕРАТОРЫ.......................... 31
   2.2.9.   ПРОГРАММИРОВАНИЕ ВВОДА-ВЫВОДА.................. 31
   2.2.10.  О СТИЛЕ ПРОГРАММИРОВАНИЯ....................... 32

   3.  ВВОД-ВЫВОД.......................................... 32


   4.  РАБОТА С СИСТЕМОЙ................................... 34

   4.1.   ИСПОЛЬЗОВАНИЕ ТЕРМИНАЛА.......................... 34
   4.2.   МОНИТОР.......................................... 36
   4.2.1.   ОБЩЕЕ ОПИСАНИЕ МОНИТОРА........................ 36
   4.2.2.   КОМАНДЫ МОНИТОРА............................... 37
   4.2.3.   НЕПОСРЕДСТВЕННЫЙ РЕЖИМ......................... 41
   4.3.   КОМПИЛЯЦИЯ, ВЫПОЛНЕНИЕ И ОТЛАДКА................. 41
   4.3.1.   КОМПИЛЯЦИЯ ПРОГРАММЫ........................... 41
   4.3.2.   РЕЖИМЫ КОМПИЛЯЦИЯ.............................. 42
   4.3.3.   ВЫПОЛНЕНИЕ И ОТЛАДКА........................... 43
   4.4.   СООБЩЕНИЯ СИСТЕМЫ................................ 43

   5.  ОБ УСТРОЙСТВЕ СИСТЕМЫ............................... 44

   5.1.   РАСПРЕДЕЛЕНИЕ ПАМЯТИ............................. 44
.C
�                             - 5 -




   5.2.   СВЯЗЬ С ВНЕШНИМИ ПРОЦЕДУРАМИ..................... 45

   ПРИЛОЖЕНИЕ  1. СПЕЦИАЛЬНЫЕ СИМВОЛЫ.....................  47


   ПРИЛОЖЕНИЕ  2. ВЕКТОРА И РЕГИСТРЫ УСТРОЙСТВ............  48


   ПРИЛОЖЕНИЕ  3. СТАТУСНАЯ ИНФОРМАЦИЯ ВВОДА-ВЫВОДА.......  49


   ПРИЛОЖЕНИЕ  4. КОДЫ ОШИБОК.............................  51


   ЛИТЕРАТУРА .............................................
.C
�                             - 6 -




                          1. ВВЕДЕНИЕ




        СИСТЕМА  QUASIC-2  ПРЕДНАЗНАЧЕНА  ДЛЯ   РАЗРАБОТКИ   И
   ВЫПОЛНЕНИЯ  ПРОГРАММ  НА  МИНИ-  И  МИКРО-  ЭВМ   В   МАЛЫХ
   КОНФИГУРАЦИЯХ. РЕЧЬ ИДЕТ О МАШИНАХ,  ПРОГРАММНО-СОВМЕСТИМЫХ
   С ЭВМ "ЭЛЕКТРОНИКА-60", ИМЕЮЩИХ ПАМЯТЬ ОТ 8 ДО 28 К СЛОВ  И
   НЕОБЯЗАТЕЛЬНО ИМЕЮЩИХ МАГНИТНЫЕ ДИСКИ ИЛИ ЛЕНТЫ. ТАКИЕ  ЭВМ
   ПОЛУЧИЛИ    ШИРОКОЕ     РАСПРОСТРАНЕНИЕ,     А     СРЕДСТВА
   ПРОГРАММИРОВАНИЯ ДЛЯ НИХ НЕДОСТАТОЧНО РАЗВИТЫ.

        СТАНДАРТНО ПОСТАВЛЯЕМЫЕ СРЕДСТВА СОЗДАНИЯ ПРОГРАММ ДЛЯ
   МАШИН, НЕ ИМЕЮЩИХ ДИСКОВ, ВКЛЮЧАЮТ ПЕРФОЛЕНТОЧНЫЕ АССЕМБЛЕР
   И БЭЙСИК. СОЗДАНИЕ ПРОГРАММ  НА  АССЕМБЛЕРЕ  В  БОЛЬШИНСТВЕ
   СЛУЧАЕВ  НЕ  РАЦИОНАЛЬНО.  КРОМЕ  ТОГО,   ОНО   ЧРЕЗВЫЧАЙНО
   ОСЛОЖНЯЕТСЯ НЕОБХОДИМОСТЬЮ МНОГОКРАТНО ВВОДИТЬ  И  ВЫВОДИТЬ
   ПЕРФОЛЕНТЫ. ЧТО КАСАЕТСЯ ПРОГРАММИРОВАНИЯ  НА  БЭЙСИКЕ,  ТО
   ОГРАНИЧЕННОСТЬ ЯЗЫКОВЫХ ВОЗМОЖНОСТЕЙ И МАЛОЕ БЫСТРОДЕЙСТВИЕ
   (ПОРЯДКА 100 ОП/С) ДЕЛАЮТ КЛАСС ЗАДАЧ, КОТОРЫЕ ОН ПОЗВОЛЯЕТ
   РЕШАТЬ, ОЧЕНЬ УЗКИМ.

        ПРЕДЛАГАЕМАЯ НАМИ СИСТЕМА  ПРОГРАММИРОВАНИЯ  СОВМЕЩАЕТ
   НЕКОТОРЫЕ  ПРЕИМУЩЕСТВА  ДВУХ  НАЗВАННЫХ  ПОДХОДОВ.  КАК  И
   АССЕМБЛЕР ОНА ОБЕСПЕЧИВАЕТ ШИРОТУ  ВОЗМОЖНОСТЕЙ  И  БОЛЬШОЕ
   БЫСТРОДЕЙСТВИЕ, КАК И БЭЙСИК -  ПРОГРАММИРОВАНИЕ  НА  ЯЗЫКЕ
   ВЫСОКОГО УРОВНЯ И ДИАЛОГОВЫЙ РЕЖИМ РАБОТЫ.

        СИСТЕМА QUASIC-2 СОСТОИТ ИЗ ТРЕХ КОМПОНЕНТОВ:

          - МОНИТОР (КОТОРЫЙ ПОЗВОЛЯЕТ РЕДАКТИРОВАТЬ  ИСХОДНЫЙ
            ТЕКСТ, УПРАВЛЯТЬ ВЫПОЛНЕНИЕМ ПРОГРАММ И ДР.);
          - ТРАНСЛЯТОР;
          - ПОДПРОГРАММЫ, ИСПОЛЬЗУЮЩИЕСЯ ВО ВРЕМЯ ВЫПОЛНЕНИЯ.

        ЯЗЫК СИСТЕМЫ QUASIC-2 ОРИЕНТИРОВАН В ПЕРВУЮ ОЧЕРЕДЬ НА
   ЗАДАЧИ РЕАЛЬНОГО ВРЕМЕНИ. ОТМЕТИМ, ЧТО ПРИНЯТЫЙ НАМИ ПОДХОД
   СОСТОИТ   В   ОТОБРАЖЕНИИ   В   ЯЗЫКЕ    АРХИТЕКТУРЫ    ЭВМ
   "ЭЛЕКТРОНИКА-60".

   ЯЗЫК ИМЕЕТ СЛЕДУЮЩИЕ СВОЙСТВА МАШИННОГО УРОВНЯ:

          - ВОЗМОЖНОСТЬ   РАБОТЫ   С   ЦЕЛЫМИ   (16    БИТОВ),
            ВЕЩЕСТВЕННЫМИ (32 БИТА) И БАЙТОВЫМИ ПЕРЕМЕННЫМИ;
          - ОПЕРАЦИИ С БИТАМИ, СДВИГИ И Т.П.;
          - ДОСТУП К РЕГИСТРАМ ВНЕШНИХ УСТРОЙСТВ;
          - ОБРАБОТКА ПРЕРЫВАНИЙ;
          - СВЯЗЬ С ПОДПРОГРАММАМИ, НАПИСАННЫМИ НА АССЕМБЛЕРЕ.

        КРОМЕ ОСНОВНЫХ  СРЕДСТВ,  ОПИСАННЫХ  ВЫШЕ,  СУЩЕСТВУЮТ
   РАСШИРЕНИЯ  ЯЗЫКА  ДЛЯ  СПЕЦИАЛЬНЫХ  СЛУЧАЕВ,  В  ЧАСТНОСТИ
   ПОДДЕРЖКА  ТАЙМЕРА  И  АППАРАТУРЫ  CAMAC.  ЭТИ   РАСШИРЕНИЯ
   ОПИСАНЫ В ОТДЕЛЬНЫХ РУКОВОДСТВАХ.

        ТРАНСЛЯТОР, ВХОДЯЩИЙ В СИСТЕМУ, ЯВЛЯЕТСЯ КОМПИЛЯТОРОМ,
   ТО ЕСТЬ ОН ПРЕОБРАЗУЕТ ИСХОДНУЮ ПРОГРАММУ НА ЯЗЫКЕ QUASIC-2
   В ОБ'ЕКТНУЮ ПРОГРАММУ В МАШИННЫХ КОМАНДАХ. ЭТО ОБЕСПЕЧИВАЕТ
.C
�                             - 7 -




   ВЫСОКУЮ СКОРОСТЬ ВЫПОЛНЕНИЯ ПРОГРАММ (ПОРЯДКА 10**4 ОП/С).

        ВМЕСТЕ С ТЕМ, УДОБСТВО РАБОТЫ С СИСТЕМОЙ ЗАКЛЮЧАЕТСЯ В
   ТОМ, ЧТО ПРИ РАЗРАБОТКЕ  ПРОГРАММ  ПРОГРАММИСТ  ИМЕЕТ  ДЕЛО
   ТОЛЬКО С ИСХОДНОЙ ПРОГРАММОЙ: С НОМЕРАМИ  СТРОК  И  ИМЕНАМИ
   ПЕРЕМЕННЫХ ВМЕСТО АДРЕСОВ  ПАМЯТИ.  ЭТО  ОСУЩЕСТВЛЯЕТСЯ  ЗА
   СЧЕТ ТОГО, ЧТО В ПАМЯТИ  ВО  ВРЕМЯ  ВЫПОЛНЕНИЯ  СОХРАНЯЮТСЯ
   ТАБЛИЦЫ СВЯЗИ МЕЖДУ ОБ'ЕКТНОЙ И ИСХОДНОЙ  ПРОГРАММАМИ.  ДЛЯ
   ТОГО, ЧТОБЫ МОЖНО БЫЛО ЛЕГКО ВНОСИТЬ ИЗМЕНЕНИЯ В ПРОГРАММУ,
   В ПАМЯТИ СОХРАНЯЕТСЯ ИСХОДНЫЙ ТЕКСТ.

        ВСЕ ЭТАПЫ РАЗРАБОТКИ ПРОГРАММ: РЕДАКТИРОВАНИЕ  ТЕКСТА,
   ТРАНСЛЯЦИЯ,  ВЫПОЛНЕНИЕ  И   ОТЛАДКА   ОСУЩЕСТВЛЯЮТСЯ   БЕЗ
   ОБРАЩЕНИЙ К ВНЕШНИМ НОСИТЕЛЯМ ИНФОРМАЦИИ.

        СИСТЕМА МОЖЕТ ИСПОЛЬЗОВАТЬСЯ АВТОНОМНО (НА МАШИНЕ  БЕЗ
   ОПЕРАЦИОННОЙ СИСТЕМЫ) ИЛИ В РАМКАХ СТАНДАРТНОЙ ОПЕРАЦИОННОЙ
   СИСТЕМЫ (RT-11/SJ (РАФОС) ИЛИ RSX-11М (ОС РВ)).


          СОГЛАШЕНИЯ
          ----------

        В ОПИСАНИИ ПРИНЯТЫ СЛЕДУЮЩИЕ СОГЛАШЕНИЯ.

        УГЛОВЫЕ СКОБКИ ИСПОЛЬЗУЮТСЯ ДЛЯ ОБОЗНАЧЕНИЯ  ЭЛЕМЕНТОВ
   ЯЗЫКА. НАПРИМЕР, ОПЕРАТОР ПРИСВАИВАНИЯ ОПИСЫВАЕТСЯ ТАК:

          <ПЕРЕМЕННАЯ>=<ВЫРАЖЕНИЕ>

        КВАДРАТНЫЕ   СКОБКИ   ИСПОЛЬЗУЮТСЯ   ДЛЯ   ОБОЗНАЧЕНИЯ
   НЕОБЯЗАТЕЛЬНЫХ ЭЛЕМЕНТОВ. МНОГОТОЧИЕ ОБОЗНАЧАЕТ ВОЗМОЖНОСТЬ
   ПОВТОРЕНИЯ.

        В  ОПИСАНИИ   ИСПОЛЬЗУЮТСЯ   СТАНДАРТНЫЕ   ОБОЗНАЧЕНИЯ
   СИМВОЛОВ КОДА ASCII (CR, LF,  FF,  ESC).  ПОЯСНЕНИЯ  К  НИМ
   ПРИВЕДЕНЫ В ПРИЛОЖЕНИИ 1.

        ПРИ ОПИСАНИИ ЯЗЫКА ПРЕДПОЛАГАЕТСЯ  ЗНАНИЕ  АРХИТЕКТУРЫ
   МАШИНЫ /1/.


          БЛАГОДАРНОСТИ
          -------------

        В  СИСТЕМУ  QUASIC-2  ВХОДИТ   СИСТЕМА   ВВОДА-ВЫВОДА,
   РАЗРАБОТАННАЯ  СОВМЕСТНО  С  А.А.ГАЛЬЧЕНКО.   ЭТА   СИСТЕМА
   ПОЗВОЛИЛА  ПОСТАВИТЬ  QUASIC-2  В  РАЗЛИЧНЫЕ   ОПЕРАЦИОННЫЕ
   СРЕДЫ.

        АВТОРЫ   ТАКЖЕ    БЛАГОДАРНЫ    ВСЕМ    ПОЛЬЗОВАТЕЛЯМ,
   ВЫСКАЗАВШИМ    МНОГОЧИСЛЕННЫЕ    ПОЛЕЗНЫЕ    ЗАМЕЧАНИЯ    И
   ПРЕДЛОЖЕНИЯ.
.C
�                             - 8 -




                       2. ОПИСАНИЕ ЯЗЫКА






         2.1. ОСНОВНЫЕ ПОНЯТИЯ





       2.1.1. СТРУКТУРА ПРОГРАММЫ



        ПРОГРАММА НА QUASIC-2  СОСТОИТ  ИЗ  СТРОК,  КАЖДАЯ  ИЗ
   КОТОРЫХ ИМЕЕТ НОМЕР (ЦЕЛОЕ ЧИСЛО ОТ  1  ДО  32767).  СТРОКИ
   РАСПОЛАГАЮТСЯ В ПОРЯДКЕ ВОЗРАСТАНИЯ НОМЕРОВ  НЕЗАВИСИМО  ОТ
   ТОЙ ПОСЛЕДОВАТЕЛЬНОСТИ, В КОТОРОЙ ОНИ ПОЯВЛЯЮТСЯ ПРИ ВВОДЕ.
   ДЛИНА СТРОКИ НЕ ДОЛЖНА ПРЕВЫШАТЬ 72 СИМВОЛА.

        КАЖДАЯ СТРОКА СОДЕРЖИТ ОДИН ИЛИ НЕСКОЛЬКО  ОПЕРАТОРОВ.
   ОПЕРАТОРЫ В СТРОКЕ РАЗДЕЛЯЮТСЯ СИМВОЛОМ \. ОПЕРАТОРЫ НЕЛЬЗЯ
   ПЕРЕНОСИТЬ НА ДРУГУЮ СТРОКУ. ДОПУСКАЕТСЯ ПУСТОЙ ОПЕРАТОР.

        ОПЕРАТОРЫ, КАК ПРАВИЛО, НАЧИНАЮТСЯ С  КЛЮЧЕВОГО  СЛОВА
   (ИМЕНИ ОПЕРАТОРА) И МОГУТ СОДЕРЖАТЬ ДРУГИЕ КЛЮЧЕВЫЕ  СЛОВА.
   ПРИМЕРЫ КЛЮЧЕВЫХ СЛОВ: FOR, TO, STEP, WHILE И Т.Д. КЛЮЧЕВЫЕ
   СЛОВА РАСПОЗНАЮТСЯ ПО ПЕРВЫМ 6 СИМВОЛАМ.

        ОПЕРАТОРЫ МОГУТ СОДЕРЖАТЬ КОММЕНТАРИИ, КОТОРЫЕ  ДОЛЖНЫ
   НАЧИНАТЬСЯ С СИМВОЛА !. ЧАСТЬ ПРОГРАММЫ, НАЧИНАЯ С !  И  ДО
   КОНЦА ОПЕРАТОРА (ДО ПЕРВОГО СИМВОЛА \  ИЛИ  КОНЦА  СТРОКИ),
   ИГНОРИРУЕТСЯ  (ЗА  ИСКЛЮЧЕНИЕМ   ПСЕВДО-КОММЕНТАРИЕВ,   СМ.
   НИЖЕ).



       2.1.2. ОПЦИИ, ПСЕВДО-КОММЕНТАРИИ



        ОПЦИИ ОПРЕДЕЛЯЮТ ОСОБЕННОСТИ (РЕЖИМЫ)  ТРАНСЛЯЦИИ  ИЛИ
   ОСОБЕННОСТИ ВЫПОЛНЕНИЯ ОТДЕЛЬНОГО  ОПЕРАТОРА.  ОПЦИИ  ИМЕЮТ
   ВИД +X ИЛИ -X, ГДЕ X - НЕКОТОРЫЙ СИМВОЛ. +X  ОЗНАЧАЕТ,  ЧТО
   ДАННАЯ ОСОБЕННОСТЬ ТРЕБУЕТСЯ, -X - ЧТО НЕТ.

        ОПЦИИ, ОТНОСЯЩИЕСЯ К ОТДЕЛЬНЫМ  ОПЕРАТОРАМ,  ВХОДЯТ  В
   СОСТАВ ЭТИХ ОПЕРАТОРОВ И ОПИСАНЫ В  СООТВЕТСТВУЮЩЕМ  МЕСТЕ.
   ОПЦИИ,  УСТАНАВЛИВАЮЩИЕ  РЕЖИМЫ  ТРАНСЛЯЦИИ,  ЗАДАЮТСЯ  ПРИ
   ПОМОЩИ ПСЕВДО-КОММЕНТАРИЕВ.

        ПСЕВДО-КОММЕНТАРИИ НАЧИНАЮТСЯ С СИМВОЛА !, ЗА  КОТОРЫМ
   ДОЛЖНА СРАЗУ ЖЕ  ИДТИ  ОПЦИЯ.  ТАКИМ  ОБРАЗОМ  ЕСЛИ  ПЕРВЫЙ
   СИМВОЛ ПОСЛЕ ! ЕСТЬ + ИЛИ -, ТО ЭТО - ПСЕВДО-КОММЕНТАРИЙ, В
   ПРОТИВНОМ  СЛУЧАЕ,  ЭТО  -  НАСТОЯЩИЙ  КОММЕНТАРИЙ.  РЕЖИМЫ
.C
�                             - 9 -




   ТРАНСЛЯЦИИ ОПИСАНЫ В П.4.3.2.



       2.1.3. КОНСТАНТЫ




          ЦЕЛЫЕ КОНСТАНТЫ
          ---------------

        ЦЕЛОЕ  (ДЕСЯТИЧНОЕ)  ЧИСЛО  -  ЭТО  ПОСЛЕДОВАТЕЛЬНОСТЬ
   ДЕСЯТИЧНЫХ ЦИФР. ЗНАЧЕНИЕ ЦЕЛОГО ЧИСЛА НЕ ДОЛЖНО  ПРЕВЫШАТЬ
   32767.

        ВОСЬМЕРИЧНОЕ   ЧИСЛО    -    ЭТО    ПОСЛЕДОВАТЕЛЬНОСТЬ
   ВОСЬМЕРИЧНЫХ ЦИФР. КОЛИЧЕСТВО ЦИФР  МОЖЕТ  БЫТЬ  ЛЮБЫМ,  НО
   ПРИНИМАЮТСЯ  ВО  ВНИМАНИЕ  ТОЛЬКО   МЛАДШИЕ   16   ДВОИЧНЫХ
   РАЗРЯДОВ. НАПРИМЕР, 52525252=125252.

        СТРОКА СИМВОЛОВ  -  ЭТО  ПОСЛЕДОВАТЕЛЬНОСТЬ  СИМВОЛОВ,
   ЗАКЛЮЧЕННАЯ В АПОСТРОФЫ  (')  ИЛИ  КАВЫЧКИ  (").  НАПРИМЕР,
   'СТРОКА',"'",''.  КОЛИЧЕСТВО  СИМВОЛОВ  НАЗЫВАЕТСЯ   ДЛИНОЙ
   СТРОКИ.

        ЦЕЛАЯ КОНСТАНТА - ЭТО ЛИБО ДЕСЯТИЧНАЯ КОНСТАНТА,  ЛИБО
   ВОСЬМЕРИЧНАЯ КОНСТАНТА, ЛИБО СИМВОЛЬНАЯ КОНСТАНТА.

   ДЕСЯТИЧНАЯ КОНСТАНТА
          - ЦЕЛОЕ ЧИСЛО, ЛИБО ЦЕЛОЕ ЧИСЛО, ПЕРЕД КОТОРЫМ СТОИТ
            ЗНАК + ИЛИ -.

   ВОСЬМЕРИЧНАЯ КОНСТАНТА
          - ВОСЬМЕРИЧНОЕ ЧИСЛО, ПОСЛЕ КОТОРОГО СТОИТ СИМВОЛ B.
            ПРИМЕРЫ: 377B, 100001B.

   СИМВОЛЬНАЯ КОНСТАНТА
          - СТРОКА СИМВОЛОВ ДЛИНЫ НЕ БОЛЬШЕ 2.

        ЛЮБАЯ ЦЕЛАЯ КОНСТАНТА ЗАНИМАЕТ В ПАМЯТИ ОДНО СЛОВО.


          ВЕЩЕСТВЕННЫЕ КОНСТАНТЫ
          ----------------------

        ВЕЩЕСТВЕННЫЕ  КОНСТАНТЫ   ЗАПИСЫВАЮТСЯ   В   ФОРМЕ   С
   ДЕСЯТИЧНОЙ   ТОЧКОЙ   И,   ВОЗМОЖНО,   С   ЭКСПОНЕНЦИАЛЬНЫМ
   МНОЖИТЕЛЕМ. ПЕРЕД  И  ПОСЛЕ  ДЕСЯТИЧНОЙ  ТОЧКИ  ОБЯЗАТЕЛЬНО
   ДОЛЖНА  БЫТЬ  ЦИФРА.  ОБЩАЯ  ФОРМА  ВЕЩЕСТВЕННОЙ  КОНСТАНТЫ
   СЛЕДУЮЩАЯ:
          [+,-]<ЦЕЛОЕ>.<ЦЕЛОЕ>[Е[+,-]<ЦЕЛОЕ>]

   ПРИМЕРЫ.
          ПРАВИЛЬНО:      0.12345, 12345.0Е-5
          НЕПРАВИЛЬНО:    .12345, 12345.Е-5, 12345Е-5

        ВЕЩЕСТВЕННАЯ КОНСТАНТА ЗАНИМАЕТ В  ПАМЯТИ  2  СЛОВА  В
.C
�                             - 10 -




   СТАНДАРТНОМ ФОРМАТЕ С ПЛАВАЮЩЕЙ ТОЧКОЙ (СМ. /2/).



       2.1.4. ПЕРЕМЕННЫЕ




          ИМЕНА ПЕРЕМЕНЫХ
          ---------------

        ИМЯ ПЕРЕМЕННОЙ - ЭТО ПОСЛЕДОВАТЕЛЬНОСТЬ БУКВ  И  ЦИФР,
   ПРИЧЕМ ПЕРВЫМ СИМВОЛОМ ДОЛЖНА БЫТЬ БУКВА. БУКВАМИ СЧИТАЮТСЯ
   СТРОЧНЫЕ ЛАТИНСКИЕ БУКВЫ И СИМВОЛ $.


          ТИП И СТРУКТУРА ПЕРЕМЕННОЙ
          --------------------------

        ПЕРЕМЕННЫЕ МОГУТ БЫТЬ ОДНОГО ИЗ СЛЕДУЮЩИХ ТИПОВ:

          - ЦЕЛЫЕ;
          - ВЕЩЕСТВЕННЫЕ;
          - БАЙТОВЫЕ.

        ВСЕ  ПЕРЕМЕННЫЕ  ИМЕЮТ  СТРУКТУРУ  МАССИВА,  ТО   ЕСТЬ
   СОСТОЯТ  ИЗ  КОМПОНЕНТОВ,  К  КАЖДОМУ  ИЗ  КОТОРЫХ  ИМЕЕТСЯ
   ДОСТУП. КОЛИЧЕСТВО КОМПОНЕНТОВ В ПЕРЕМЕННОЙ  НАЗЫВАЕТСЯ  ЕЕ
   РАЗМЕРОМ. ЕСЛИ РАЗМЕР ПЕРЕМЕННОЙ РАВЕН 1, ТО ОНА НАЗЫВАЕТСЯ
   ПРОСТОЙ.

        ТИП  И  РАЗМЕР  ПЕРЕМЕННЫХ   ОПИСЫВАЕТСЯ   ОПЕРАТОРАМИ
   INTEGER, REAL И BYTE. ЕСЛИ ПЕРЕМЕННАЯ НЕ БЫЛА  ОПИСАНА,  ТО
   ОНА СЧИТАЕТСЯ ПРОСТОЙ ЦЕЛОЙ ПЕРЕМЕННОЙ.


        З_А_М_Е_Ч_А_Н_И_Е. ТАК КАК ЯЗЫК НЕ ПОЗВОЛЯЕТ  РАБОТАТЬ
   С ПЕРЕМЕННОЙ В ЦЕЛОМ, А ТОЛЬКО  С  ОТДЕЛЬНЫМИ  КОМПОНЕНТАМИ
   (КРОМЕ ПРОСТЫХ ПЕРЕМЕННЫХ),  ТО  В  ДАЛЬНЕЙШЕМ,  УПОТРЕБЛЯЯ
   СЛОВО  ПЕРЕМЕННАЯ,  ЧАСТО  БУДЕМ  ИМЕТЬ  В  ВИДУ  КОМПОНЕНТ
   ПЕРЕМЕННОЙ.


          ИНДЕКСЫ
          -------

        КОМПОНЕНТЫ ПЕРЕМЕННОЙ УКАЗЫВАЮТСЯ ПРИ ПОМОЩИ ИНДЕКСОВ.
   ПЕРВЫЙ КОМПОНЕНТ ПЕРЕМЕННОЙ ИМЕЕТ  ИНДЕКС  0,  ПОСЛЕДНИЙ  -
   РАЗМЕР ПЕРЕМЕННОЙ -  1.  ЕСЛИ  ЗАДАНО  ИМЯ  ПЕРЕМЕННОЙ  БЕЗ
   ИНДЕКСА, ТО ЭТО ЭКВИВАЛЕНТНО ЗАДАНИЮ ИНДЕКСА 0:

          VAR = VAR(0)

        ИНДЕКС ДОЛЖЕН БЫТЬ ОДНОГО ИЗ СЛЕДУЮЩИХ ВИДОВ:

          - ЦЕЛОЕ ЧИСЛО;
          - ПРОСТАЯ ЦЕЛАЯ ПЕРЕМЕННАЯ (БЕЗ ИНДЕКСА);
.C
�                             - 11 -




          - ПРОСТАЯ ЦЕЛАЯ ПЕРЕМЕННАЯ +/- ЦЕЛОЕ ЧИСЛО.

        ПРИМЕРЫ:

          AR(5)           TABL(I)         LINE(K+1)


        З_А_М_Е_Ч_А_Н_И_Е. НЕ КОНТРОЛИРУЕТСЯ ВЫХОД ИНДЕКСА  ЗА
   ГРАНИЦЫ МАССИВА, КРОМЕ  ТЕХ  СЛУЧАЕВ,  КОГДА  ИНДЕКС  ЗАДАН
   КОНСТАНТОЙ, И ВЫХОД ОБНАРУЖИВАЕТСЯ ПРИ ТРАНСЛЯЦИИ. ЗАМЕТИМ,
   ЧТО  ВЫХОД  ИНДЕКСА  ЗА  ГРАНИЦЫ  МАССИВА   МОЖЕТ   ВЫЗВАТЬ
   СЕРЬЕЗНЫЕ ОШИБКИ. В НЕКОТОРЫХ СЛУЧАЯХ МОЖЕТ БЫТЬ  ИСПОРЧЕНА
   СИСТЕМА. ВО ИЗБЕЖАНИЕ ЭТОГО  ПРОГРАММИСТ  ДОЛЖЕН  ТЩАТЕЛЬНО
   СЛЕДИТЬ ЗА ИНДЕКСАМИ.


          ПРЕОБРАЗОВАTЕЛЬ ТИПОВ
          ---------------------

        В ЯЗЫКЕ ИМЕЕТСЯ ВОЗМОЖНОСТЬ ДОСТУПА К БАЙТАМ ДЛЯ ЛЮБЫХ
   ПЕРЕМЕННЫХ (НЕ ОБЯЗАТЕЛЬНО  ОПИСАННЫХ  КАК  БАЙТОВЫЕ).  ДЛЯ
   ЭТОГО К ИМЕНИ ПЕРЕМЕННОЙ ДОБАВЛЯЕТСЯ  СИМВОЛ  %.  СЛЕДУЮЩИЙ
   РИСУНОК ИЛЛЮСТРИРУЕТ ЭТО ДЛЯ ЦЕЛОЙ ПЕРЕМЕННОЙ:

                                                  A=A(0)
                                  -----------------------------------
   ПРОСТАЯ ПЕРЕМЕННАЯ             I    СТ. БАЙТ    I    МЛ. БАЙТ    I
                                  -----------------------------------
                                          A%(1)           A%=A%(0)

   ПЕРЕМЕННАЯ РАЗМЕРА >1
           ! ! !A(2)                  A(1)                  A=A(0)
        -----------------     -----------------     -----------------
   ...  I       I       I     I       I       I     I       I       I
        -----------------     -----------------     -----------------
        A%(5)   A%(4)         A%(3)   A%(2)         A%(1)   A%=A%(0)


          СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ
          --------------------

        ДЛЯ УПРОЩЕНИЯ СИНТАКСИЧЕСКИХ КОНСТРУКЦИЙ ЯЗЫКА ВВЕДЕНЫ
   СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ. ЭТИ ПЕРЕМЕННЫЕ ЗАРАНЕЕ  ОПРЕДЕЛЕНЫ  В
   ЛЮБОЙ ПРОГРАММЕ. ОНИ МОГУТ ИСПОЛЬЗОВАТЬСЯ  ТАК  ЖЕ,  КАК  И
   ОБЫЧНЫЕ  ПЕРЕМЕННЫЕ,  НО  ИМЕЮТ  ДОПОЛНИТЕЛЬНУЮ   СЛУЖЕБНУЮ
   НАГРУЗКУ.  ИМЕЮТСЯ  СЛЕДУЮЩИЕ  СЛУЖЕБНЫЕ  ПЕРЕМЕННЫЕ   (ВСЕ
   ЦЕЛОГО ТИПА):

   $MOD
          - ПОСЛЕ   ВЫПОЛНЕНИЯ   ОПЕРАЦИИ   ДЕЛЕНИЯ   ПОЛУЧАЕТ
            ЗНАЧЕНИЕ, РАВНОЕ ОСТАТКУ;

   $IOSW
          - СТАТУСНОЕ СЛОВO ВВОДА-ВЫВОДА (СМ. ПРИЛОЖЕНИЕ 3);
.C
�                             - 12 -




       2.1.5. ФУНКЦИИ



        В  ЯЗЫКЕ  ИМЕЕТСЯ  ФИКСИРОВАННЫЙ   НАБОР   СТАНДАРТНЫХ
   ЭЛЕМЕНТАРНЫХ ФУНКЦИЙ.  ВСЕ  ФУНКЦИИ  ИМЕЮТ  ОДИН  АРГУМЕНТ,
   КОТОРЫЙ МОЖЕТ БЫТЬ ЗАДАН ЦЕЛЫМ ИЛИ ВЕЩЕСТВЕННЫМ ВЫРАЖЕНИЕМ.
   ЗНАЧЕНИЕ ФУНКЦИЙ ВСЕГДА ВЕЩЕСТВЕННОЕ.

        СПИСОК ИМЕН СТАНДАРТНЫХ ФУНКЦИЙ:

   ABS  - АБСОЛЮТНОЕ ЗНАЧЕНИЕ
   SQRT - КВАДРАТНЫЙ КОРЕНЬ
   SIN  - СИНУС
   COS  - КОСИНУС
   ATAN - АРКТАНГЕНС
   EXP  - ЭКСПОНЕНТА
   LOG  - ЛОГАРИФМ (НАТУРАЛЬНЫЙ)



       2.1.6. ПРОЦЕДУРЫ



        ПРОЦЕДУРЫ (ПОДПРОГРАММЫ) МОГУТ БЫТЬ  НАПИСАНЫ  КАК  НА
   САМОМ QUASIC-2 (В ЭТОМ  СЛУЧАЕ  ОНИ  ДОЛЖНЫ  СОДЕРЖАТЬСЯ  В
   ТЕКСТЕ ПРОГРАММЫ), ТАК И НА АССЕМБЛЕРЕ ИЛИ ДРУГОМ ЯЗЫКЕ  (В
   ЭТОМ СЛУЧАЕ ОНИ ДОЛЖНЫ  БЫТЬ  ОТТРАНСЛИРОВАНЫ  И  ЗАГРУЖЕНЫ
   ОТДЕЛЬНО). ДЛЯ ПРОЦЕДУР, НАПИСАННЫХ НА  QUASIC-2,  ПЕРЕДАЧА
   ПАРАМЕТРОВ НЕ ПОДДЕРЖИВАЕТСЯ.

        КАЖДАЯ ПРОЦЕДУРА ИМЕЕТ ИМЯ, КОТОРОЕ ДОЛЖНО ПОДЧИНЯТЬСЯ
   ТЕМ ЖЕ ПРАВИЛАМ, ЧТО И ИМЕНА ПЕРЕМЕННЫХ.



       2.1.7. АДРЕСНЫЕ КОНСТАНТЫ



        АДРЕСНАЯ КОНСТАНТА ЗАПИСЫВАЕТСЯ В ВИДЕ

          #<ПЕРЕМЕННАЯ>
   ИЛИ
          #<ИМЯ ФУНКЦИИ ИЛИ ПРОЦЕДУРЫ>

   ПЕРЕМЕННАЯ ДОЛЖНА ЛИБО НЕ ИМЕТЬ ИНДЕКСА, ЛИБО ИНДЕКС ДОЛЖЕН
   БЫТЬ ЗАДАН КОНСТАНТОЙ. АДРЕСНАЯ КОНСТАНТА  ИМЕЕТ  ЗНАЧЕНИЕ,
   РАВНОЕ АДРЕСУ ПЕРЕМЕННОЙ (ФУНКЦИИ, ПРОЦЕДУРЫ).
.C
�                             - 13 -




       2.1.8. ВЫРАЖЕНИЯ



        ВЫРАЖЕНИЯ СТРОЯТСЯ ИЗ ЭЛЕМЕНТОВ ВЫРАЖЕНИЙ  ПРИ  ПОМОЩИ
   ОПЕРАЦИЙ И  СКОБОК.  ЭЛЕМЕНТ  ВЫРАЖЕНИЯ  -  ЭТО  КОНСТАНТА,
   ПЕРЕМЕННАЯ, АДРЕСНАЯ КОНСТАНТА ИЛИ ОБРАЩЕНИЕ К ФУНКЦИИ.

        В ВЫРАЖЕНИЯХ РАЗРЕШАЕТСЯ  СМЕШИВАТЬ  ЭЛЕМЕНТЫ  РАЗНОГО
   ТИПА. ЕСЛИ В ОПЕРАЦИИ ОПЕРАНДЫ ИМЕЮТ ОДИНАКОВЫЙ ТИП,  ТО  И
   РЕЗУЛЬТАТ  ОПЕРАЦИИ  БУДЕТ  ИМЕТЬ  ТАКОЙ  ЖЕ  ТИП.  ЕСЛИ  В
   ОПЕРАЦИИ  ОДИН  ОПЕРАНД   ИМЕЕТ   ЦЕЛЫЙ   ТИП,   А   ДРУГОЙ
   ВЕЩЕСТВЕННЫЙ, ТО ПРОИЗВОДИТСЯ АВТОМАТИЧЕСКОЕ ПРЕОБРАЗОВАНИЕ
   ЦЕЛОГО ОПЕРАНДА  В  ВЕЩЕСТВЕННЫЙ  ТИП.  РЕЗУЛЬТАТ  ОПЕРАЦИИ
   ТАКЖЕ  БУДЕТ  ВЕЩЕСТВЕННЫМ.  НАПРИМЕР,  1/2=0,   1.0/2=0.5.
   БАЙТОВЫЕ ОПЕРАНДЫ ВСЕГДА ПРЕОБРАЗУЮТСЯ В ЦЕЛЫЙ ТИП.

        ОТМЕТИМ,  ЧТО   С   ВЕЩЕСТВЕННЫМИ   ОПЕРАНДАМИ   МОЖНО
   ВЫПОЛНЯТЬ НЕ ВСЕ ОПЕРАЦИИ, КОТОРЫЕ МОЖНО ВЫПОЛНЯТЬ С ЦЕЛЫМИ
   (СМ. НИЖЕ).

        ОПЕРАЦИИ ДЕЛЯТСЯ НА 1-МЕСТНЫЕ И 2-МЕСТНЫЕ.

        1-МЕСТНЫЕ ОПЕРАЦИИ ЭТО:

   +              ПЛЮС
   - ИЛИ .NEG.    МИНУС
   .INC.          ПРИБАВЛЕНИЕ ЕДИНИЦЫ
   .DEC.          ВЫЧИТАНИЕ ЕДИНИЦЫ
   .ASL.          СДВИГ ВЛЕВО
   .ASR.          СДВИГ ВПРАВО
   .ROL.          ЦИКЛИЧЕСКИЙ СДВИГ ВЛЕВО
   .ROR.          ЦИКЛИЧЕСКИЙ СДВИГ ВПРАВО
   .COM.          ИНВЕРТИРОВАНИЕ
   .SWAB.         ПЕРЕСТАНОВКА БАЙТОВ
   .ADC.          ПРИБАВЛЕНИЕ ПЕРЕНОСА
   .SВC.          ВЫЧИТАНИЕ ПЕРЕНОСА

        2-МЕСТНЫЕ ОПЕРАЦИИ ЭТО:

   + ИЛИ .ADD.    СЛОЖЕНИЕ
   - ИЛИ .SUB.    ВЫЧИТАНИЕ
   *              УМНОЖЕНИЕ
   /              ДЕЛЕНИЕ
   .BIS.          УСТАНОВКА РАЗРЯДОВ
                  (ПОРАЗРЯДНОЕ ЛОГИЧЕСКОЕ ИЛИ)
   .BIC.          ОЧИСТКА РАЗРЯДОВ
                  (ПОРАЗРЯДНОЕ ЛОГИЧЕСКОЕ ВЫЧИТАНИЕ A-B=A&^B)

        С   ВЕЩЕСТВЕННЫМИ   ОПЕРАНДАМИ   РАЗРЕШАЕТСЯ    ТОЛЬКО
   ИСПОЛЬЗОВАНИЕ ОПЕРАЦИЙ: +, -, *, /.

        САМЫЙ  ВЫСОКИЙ  ПРИОРИТЕТ  ИМЕЮТ  1-МЕСТНЫЕ  ОПЕРАЦИИ,
   ЗАТЕМ ИДУТ *, / И .BIC., ЗАТЕМ +, - И .BIS. .
.C
�                             - 14 -




        З_А_М_Е_Ч_А_Н_И_Е. ДЛЯ ЦЕЛЫХ ОПЕРАНДОВ  ВСЕ  ОПЕРАЦИИ,
   КРОМЕ * И /, СООТВЕТСТВУЮТ ОДНОЙ  МАШИННОЙ  КОМАНДЕ,  И  ИХ
   НАЗВАНИЕ СОВПАДАЕТ С НАЗВАНИЕМ КОМАНДЫ.

        ПРИМЕРЫ ВЫРАЖЕНИЙ:

   1).    (А+В)*(С+D)
   2).    STATUS(I).BIC.177400B
   3).    .COM.ALPHA+.ASL..ASL.CODE
   4).    Х1.BIC.M1.BIS.Х2.BIC.M2

       ПОСЛЕДНЕЕ ВЫРАЖЕНИЕ ЭКВИВАЛЕНТНО СЛЕДУЮЩЕМУ:
          (Х1.BIC.M1).BIS.(Х2.BIC.M2)

   5).    .ASL..ASL..ASL.K+SIN(P.BIC.MASK)

       В ЭТОМ ВЫРАЖЕНИИ K, P И MASK ДОЛЖНЫ БЫТЬ ЦЕЛЫМИ,
       ЗНАЧЕНИЕ ВЫРАЖЕНИЯ ВЕЩЕСТВЕННОЕ.

   6). ПУСТЬ X - ВЕЩЕСТВЕННАЯ ПЕРЕМЕННАЯ. ТОГДА СЛЕДУЮЩИЕ
       ВЫРАЖЕНИЯ ЯВЛЯЮТСЯ НЕПРАВИЛЬНЫМИ:

          .ASL.X    X.BIS.100B    .INC.SIN(X)



       2.1.9. УСЛОВИЯ



        УСЛОВИЯ ИСПОЛЬЗУЮТСЯ В ОПЕРАТОРАХ  IF,  WHILE,  UNTIL.
   УСЛОВИЕ ЭТО:

          <ВЫРАЖЕНИЕ> <ОТНОШЕНИЕ> <ВЫРАЖЕНИЕ>

        ОТНОШЕНИЯ:

           =      РАВНО
           >      БОЛЬШЕ
           >=     БОЛЬШЕ ИЛИ РАВНО
           =>
           <      МЕНЬШЕ
           <=     МЕНЬШЕ ИЛИ РАВНО
           =<
           <>     НЕ РАВНО
           ><

        ПРИМЕРЫ:

   1). X=Y
   2). A+B>C+D
   3). CTL%.BIC.177776B<>0

.C
�                             - 15 -




         2.2. ОПЕРАТОРЫ



        ОПЕРАТОРЫ ЯЗЫКА РАЗДЕЛЯЮТСЯ НА СЛЕДУЮЩИЕ ГРУППЫ:

          - ОПЕРАТОРЫ ОПИСАНИЯ;
          - ОПЕРАТОР ПРИСВАИВАНИЯ;
          - ОПЕРАТОРЫ УПРАВЛЕНИЯ;
          - ОПИСАНИЕ И ВЫЗОВ ПРОЦЕДУР;
          - ОБРАБОТКА ПРЕРЫВАНИЙ;
          - ВВОД-ВЫВОД;
          - РАЗНОЕ;
          - СПЕЦИАЛЬНЫЕ ОПЕРАТОРЫ.



       2.2.1. ОПЕРАТОРЫ ОПИСАНИЯ



        ОПЕРАТОРЫ   ОПИСАНИЯ   ПРЕДНАЗНАЧЕНЫ   ДЛЯ    ОПИСАНИЯ
   ПЕРЕМЕННЫХ. ПРИ ОПИСАНИИ  ПЕРЕМЕННОЙ  УКАЗЫВАЕТСЯ  ЕЕ  ТИП,
   ИМЯ, РАЗМЕР И ВОЗМОЖНО АДРЕС, ПО КОТОРОМУ  БУДЕТ  РАЗМЕЩЕНА
   ПЕРЕМЕННАЯ.  ДЛЯ  КАЖДОГО  ДОПУСТИМОГО  ТИПА  ИМЕЕТСЯ  СВОЙ
   ОПЕРАТОР ОПИСАНИЯ. ВЫГЛЯДЯТ ЭТИ  ОПЕРАТОРЫ  ОДИНАКОВО:  ДЛЯ
   КАЖДОЙ  ПЕРЕМЕННОЙ  ЗАДАЕТСЯ  ИМЯ,  В  СКОБКАХ  УКАЗЫВАЕТСЯ
   МАКСИМАЛЬНОЕ ВОЗМОЖНОЕ ЗНАЧЕНИЕ ИНДЕКСА, Т.Е. РАЗМЕР - 1, И
   ЗАТЕМ ЧЕРЕЗ : ВОСЬМЕРИЧНЫЙ  АДРЕС.  ИМЯ  ПЕРЕМЕННОЙ  ДОЛЖНО
   ОТЛИЧАТЬСЯ ОТ ВСЕХ ИМЕН  ОПЕРАТОРОВ,  ФУНКЦИЙ  И  ПРОЦЕДУР.
   МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ИНДЕКСА И АДРЕС  НЕ  ОБЯЗАТЕЛЬНЫ.  ПО
   УМОЛЧАНИЮ, МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ИНДЕКСА = 0, T.E. РАЗМЕР =
   1. АДРЕС  ПЕРЕМЕННОЙ  ВЫБИРАЕТСЯ  ТРАНСЛЯТОРОМ  ПО   СВОЕМУ
   УСМОТРЕНИЮ.


   ----------
   I  INT   I
   ----------

        ОПИСЫВАЕТ  ЦЕЛЫЕ   ПЕРЕМЕННЫЕ.   МАКСИМАЛЬНЫЙ   РАЗМЕР
   ПЕРЕМЕННОЙ - 32768.

        ПРИМЕРЫ:

   10 INT А(100),LIST(255)
   20 INT TTS:177560,RK(6):177400


        З_А_М_Е_Ч_А_Н_И_Е. РАЗМЕЩЕНИЕ ПЕРЕМЕННОЙ  ПО  ЗАДАНОМУ
   АДРЕСУ ПОДРОБНЕЕ ОБСУЖДАЕТСЯ В П.2.2.9.


   ----------
   I  REAL  I
   ----------

        ОПИСЫВАЕТ ВЕЩЕСТВЕННЫЕ ПЕРЕМЕННЫЕ. МАКСИМАЛЬНЫЙ РАЗМЕР
.C
�                             - 16 -




   ПЕРЕМЕННОЙ - 16384.

        ПРИМЕР:

   10 REAL X,Y,LAMBDA(200)


   ----------
   I  BYTE  I
   ----------

        ОПИСЫВАЕТ  БАЙТОВЫЕ  ПЕРЕМЕННЫЕ.  МАКСИМАЛЬНЫЙ  РАЗМЕР
   ПЕРЕМЕННОЙ - 32768.

        ПРИМЕР:

   10 BYTE LINE(80)


        З_А_М_Е_Ч_А_Н_И_Е. БАЙТОВЫЕ ПЕРЕМЕННЫЕ  РАЗМЕЩАЮТСЯ  В
   ПАМЯТИ ПО ЧЕТНЫМ АДРЕСАМ (ПЕРЕМЕННЫЕ В ЦЕЛОМ, А  НЕ  КАЖДЫЙ
   КОМПОНЕНТ).



       2.2.2. ОПЕРАТОР ПРИСВАИВАНИЯ



        ОПЕРАТОР ПРИСВАИВАНИЯ ЗАПИСЫВАЕТСЯ В ВИДЕ

          <ПЕРЕМЕННАЯ> = <ВЫРАЖЕНИЕ>

        ВЫРАЖЕНИЕ ВЫЧИСЛЯЕТСЯ  И  ЕГО  ЗНАЧЕНИЕ  ПРИСВАИВАЕТСЯ
   ПЕРЕМЕННОЙ.  ЕСЛИ  ТИП  ВЫРАЖЕНИЯ  НЕ  СОВПАДАЕТ  С   ТИПОМ
   ПЕРЕМЕННОЙ, ТО ПРОИЗВОДИТСЯ АВТОМАТИЧЕСКОЕ ПРЕОБРАЗОВАНИЕ К
   ТИПУ ПЕРЕМЕННОЙ.

        ПРИМЕРЫ:

    70 X1=(-B+SQRT(B*B-4*A*C))/(2*A)
   100 RE(K)=COS(2*PI*K/N) \ IM(K)=SIN(2*PI*K/N)
   200 ANSWER='ДА'
   240 RAN=.ASL..ASL.RAN+RAN+1
   375 X%(0)=A+B*C

        В ПОСЛЕДНЕМ ПРИМЕРЕ ВЫРАЖЕНИЕ A+B*C ВЫЧИСЛЯЕТСЯ И  ЕГО
   МЛАДШИЙ БАЙТ ЗАПИСЫВАЕТСЯ  В  МЛАДШИЙ  БАЙТ  ПЕРЕМЕННОЙ  X.
   СТАРШИЙ БАЙТ ЭТОЙ ПЕРЕМЕННОЙ НЕ ИЗМЕНЯЕТСЯ.
.C
�                             - 17 -




       2.2.3. ОПЕРАТОРЫ УПРАВЛЕНИЯ



   --------
   I  IF  I
   --------

        ОПЕРАТОР IF СЛУЖИТ ДЛЯ УСЛОВНОГО ВЫПОЛНЕНИЯ  НЕКОТОРОЙ
   ПОСЛЕДОВАТЕЛЬНОСТИ ОПЕРАТОРОВ. ОПЕРАТОР IF ЯВЛЯЕТСЯ НАЧАЛОМ
   КОНСТРУКЦИИ IF, КОТОРАЯ  ОБЯЗАТЕЛЬНО  ДОЛЖНА  ЗАКАНЧИВАТЬСЯ
   ОПЕРАТОРОМ ENDI И МОЖЕТ СОДЕРЖАТЬ ОПЕРАТОРЫ ELSIF И ELSE. В
   ОБЩЕМ СЛУЧАЕ КОНСТРУКЦИЯ IF ВЫГЛЯДИТ ТАК:

          IF <УСЛОВИЕ> THEN
                  О П Е Р А Т О Р Ы
       [  ELSIF <УСЛОВИЕ> THEN
                  О П Е Р А Т О Р Ы
          . . . . . . . . . . . . .  ]
       [  ELSE
                  О П Е Р А Т О Р Ы  ]
          ENDI

        ОПЕРАТОР ELSIF МОЖЕТ ПОВТОРЯТЬСЯ >=  0  РАЗ.  ОПЕРАТОР
   ELSE МОЖЕТ БЫТЬ ТОЛЬКО ОДИН ИЛИ НИ ОДНОГО.

        КОНСТРУКЦИЯ IF СООТВЕТСТВУЕТ СЛЕДУЮЩИМ БЛОК-СХЕМАМ.

        I                                   I
        I                                   I
        /\                                  /\
       /  \  ДА   --------                 /  \  ДА   --------
        IF   ---- I THEN I -----            IF   ---- I THEN I -----
       \  /       --------     I           \  /       --------     I
        \/                     I            \/                     I
   НЕТ  I                      I       НЕТ  I                      I
        I <---------------------            I                      I
        I                                --------                  I
        I                                I ELSE I                  I
        V                                --------                  I
                                            I                      I
                                            I <---------------------
                                            I
                                            V

   ЗДЕСЬ НЕТ ELSIF И ELSE              ЗДЕСЬ НЕТ ELSIF, НО ЕСТЬ ELSE
.C
�                             - 18 -




        I
        I
        /\
       /  \  ДА   --------
        IF   ---- I THEN I -----
       \  /       --------     I
        \/                     I
   НЕТ  I                      I
        /\                     I
       /  \  ДА   --------     I
       ELSIF ---- I THEN I ----I
       \  /       --------     I
        \/                     I
   НЕТ  I                      I
        /\                     I
       /  \  ДА   --------     I
       ELSIF ---- I THEN I ----I
       \  /       --------     I
        \/                     I
   НЕТ  I                      I
        .                      .
        .                      .
        .                      .
        I                      I
     --------                  I
     I ELSE I                  I
     --------                  I
        I                      I
        I <---------------------
        I
        V

     ЗДЕСЬ ЕСТЬ И ELSIF И ELSE

        ПРИМЕРЫ.

        ПЕРВЫЙ ПРИМЕР  -  ЭТО  ПРОГРАММА  РЕШЕНИЯ  КВАДРАТНОГО
   УРАВНЕНИЯ A*X*X+B*X+C=0. В НЕЙ  ИСПОЛЬЗУЮТСЯ  ОПЕРАТОРЫ  IF
   КАК С ELSE, ТАК И БЕЗ ELSE.

   400 D=B*B-4*A*C
   420 IF D>=0 THEN
   430    D=SQRT(D)
   440    IF B>=0 THEN
   450       X1=(-B-D)/(2*A)
   460    ELSE
   470       X1=(-B+D)/(2*A)
   480    ENDI
   490    X2=C/(A*X1)
   500 ENDI

        ЕЩЕ ОДИН ПРИМЕР:

   1000 IF A=0 THEN GOTO 777 \ ENDI

        СЛЕДУЮЩИЙ ПРИМЕР ДЕМОНСТРИРУЕТ ОПЕРАТОРЫ ELSIF И ELSE.
.C
�                             - 19 -




   110 IF A='ДА' THEN
   120    ! ОБРАБОТКА ОТВЕТА 'ДА'
   130 ELSIF A='НЕ' THEN
   140    ! ОБРАБОТКА ОТВЕТА 'НЕТ'
   150 ELSIF A='?' THEN
   160    ! ОБРАБОТКА ОТВЕТА '?'
   170 ELSE
   180    ! ОБРАБОТКА ОШИБОЧНОГО ОТВЕТА
   190 ENDI


   -----------
   I  WHILE  I
   -----------

        ОПЕРАТОР  WHILE  СЛУЖИТ   ДЛЯ   УСЛОВНОГО   ПОВТОРЕНИЯ
   НЕКОТОРОЙ ПОСЛЕДОВАТЕЛЬНОСТИ ОПЕРАТОРОВ. УСЛОВИЕ ПОВТОРЕНИЯ
   ПРОВЕРЯЕТСЯ  ДО  ВЫПОЛНЕНИЯ  ПОСЛЕДОВАТЕЛЬНОСТИ.   ОПЕРАТОР
   WHILE   ЯВЛЯЕТСЯ   НАЧАЛОМ   КОНСТРУКЦИИ   WHILE,   КОТОРАЯ
   ОБЯЗАТЕЛЬНО  ДОЛЖНА  ЗАКАНЧИВАТЬСЯ  ОПЕРАТОРОМ  ENDW.   ЭТА
   КОНСТРУКЦИЯ ВЫГЛЯДИТ ТАК:

          WHILE <УСЛОВИЕ>
                  О П Е Р А Т О Р Ы
          ENDW

        БЛОК СХЕМА:

             I
   --------> I
   I         I
   I         /\
   I        /  \  НЕТ
   I        WHILE -------
   I        \  /        I
   I         \/         I
   I    ДА   I          I
   I         I          I
   I    -----------     I
   I    I         I     I
   I    -----------     I
   I         I          I
   ----------I          I
                        V

        ПРИМЕР.

   2000 ! ПРОГРАММА ВЫЧИСЛЕНИЯ НАИБОЛЬШЕГО ОБЩЕГО
   2002 ! ДЕЛИТЕЛЯ ДВУХ ЧИСЕЛ (АЛГОРИТМ ЭВКЛИДА).
   2004 ! ВХОД: N,M - ЦЕЛЫЕ ЧИСЛА
   2006 ! ВЫХОД: N - НАИБОЛЬШИЙ ОБЩИЙ ДЕЛИТЕЛЬ
   2010 WHILE M<>0
   2020    Q=N/M
   2030    N=M
   2040    M=$MOD
   2050 ENDW
.C
�                             - 20 -




   ------------
   I  REPEAT  I
   ------------

        ОПЕРАТОР  REPEAT  СЛУЖИТ  ДЛЯ   УСЛОВНОГО   ПОВТОРЕНИЯ
   НЕКОТОРОЙ ПОСЛЕДОВАТЕЛЬНОСТИ ОПЕРАТОРОВ. УСЛОВИЕ ПОВТОРЕНИЯ
   ПРОВЕРЯЕТСЯ ПОСЛЕ ВЫПОЛНЕНИЯ  ПОСЛЕДОВАТЕЛЬНОСТИ.  ОПЕРАТОР
   REPEAT  ЯВЛЯЕТСЯ  НАЧАЛОМ   КОНСТРУКЦИИ   REPEAT,   КОТОРАЯ
   ОБЯЗАТЕЛЬНО  ДОЛЖНА  ЗАКАНЧИВАТЬСЯ  ОПЕРАТОРОМ  UNTIL.  ЭТА
   КОНСТРУКЦИЯ ВЫГЛЯДИТ ТАК:

          REPEAT
                  О П Е Р А Т О Р Ы
          UNTIL <УСЛОВИЕ>

        БЛОК-СХЕМА:

             I
   --------> I
   I         I
   I    ------------
   I    I          I
   I    ------------
   I         I
   I         I
   I         /\
   I   НЕТ  /  \
   I------  UNTIL
            \  /
             \/
         ДА  I
             I
             V

        ПРИМЕР.

        ПОИСК В МАССИВЕ. ПУСТЬ ИМЕЕТСЯ МАССИВ A, СОДЕРЖАЩИЙ  N
   ЭЛЕМЕНТОВ, И ЧИСЛО X. ТРЕБУЕТСЯ НАЙТИ ИНДЕКС I  ТАКОЙ,  ЧТО
   A(I)=X, 1<=I<=N.  ЕСЛИ  ТАКОГО  I  НЕТ,  ВОЗВРАЩАЕТСЯ  I=0.
   ДОПОЛНИТЕЛЬНО ПРЕДПОЛАГАЕМ, ЧТО A(0) МОЖНО ПОРТИТЬ.

   100 А(0)=X
   110 I=N+1
   120 REPEAT
   130    I=I-1
   140 UNTIL A(I)=X


   ------------
   I  LOOP    I
   ------------

        ОПЕРАТОР  LOOP  СЛУЖИТ  ДЛЯ  БЕЗУСЛОВНОГО   ПОВТОРЕНИЯ
   НЕКОТОРОЙ  ПОСЛЕДОВАТЕЛЬНОСТИ  ОПЕРАТОРОВ.  ОПЕРАТОР   LOOP
   ЯВЛЯЕТСЯ  НАЧАЛОМ  КОНСТРУКЦИИ  LOOP,  КОТОРАЯ  ОБЯЗАТЕЛЬНО
   ДОЛЖНА ЗАКАНЧИВАТЬСЯ  ОПЕРАТОРОМ  ENDL  И  МОЖЕТ  СОДЕРЖАТЬ
   ПРОИЗВОЛЬНОЕ КОЛИЧЕСТВО ОПЕРАТОРОВ  EXIT.  ЭТА  КОНСТРУКЦИЯ
   ВЫГЛЯДИТ ТАК:
.C
�                             - 21 -




          LOOP
                  О П Е Р А Т О Р Ы
                  [ EXIT ]
                  О П Е Р А Т О Р Ы
          ENDL

        КАЖДЫЙ  ОПЕРАТОР  EXIT,  ВСТРЕЧАЮЩИЙСЯ  В  КОНСТРУКЦИИ
   LOOP, ПРИВОДИТ К ПЕРЕХОДУ НА ОПЕРАТОР,  СЛЕДУЮЩИЙ  ЗА  ENDL
   (ВЫХОД ИЗ  ЦИКЛА).  КОНСТРУКЦИЯ  LOOP  ЯВЛЯЕТСЯ  ОБОБЩЕНИЕМ
   КОНСТРУКЦИЙ WHILE И REPEAT.


   ---------
   I  FOR  I
   ---------

        ОПЕРАТОР   FOR   СЛУЖИТ   ДЛЯ   ПОВТОРЕНИЯ   НЕКОТОРОЙ
   ПОСЛЕДОВАТЕЛЬНОСТИ  ОПЕРАТОРОВ  ЗАДАННОЕ  ЧИСЛО  РАЗ.   ПРИ
   КАЖДОМ   ПОВТОРЕНИИ   НЕКОТОРАЯ   ПЕРЕМЕННАЯ,    НАЗЫВАЕМАЯ
   ПЕРЕМЕННОЙ  ЦИКЛА,   УВЕЛИЧИВАЕТСЯ   ИЛИ   УМЕНЬШАЕТСЯ   НА
   ОПРЕДЕЛЕННОЕ  ЗНАЧЕНИЕ,  НАЗЫВАЕМОЕ  ШАГОМ.  ОПЕРАТОР   FOR
   ЯВЛЯЕТСЯ  НАЧАЛОМ  КОНСТРУКЦИИ  FOR,  КОТОРАЯ   ОБЯЗАТЕЛЬНО
   ДОЛЖНА ЗАКАНЧИВАТЬСЯ ОПЕРАТОРОМ ENDF.

          СЛУЧАЙ 1. УВЕЛИЧЕНИЕ

                                     V=A1
   FOR V=A1 TO A2 [STEP A3]          WHILE V<=A2
           О П Е Р А Т О Р Ы             О П Е Р А Т О Р Ы
   ENDF                                  V=V+A3
                                     ENDW

          СЛУЧАЙ 2. УМЕНЬШЕНИЕ

                                     V=A1
   FOR V=A1 DOWNTO A2 [STEP A3]      WHILE V>=A2
           О П Е Р А Т О Р Ы             О П Е Р А Т О Р Ы
   ENDF                                  V=V-A3
                                     ENDW

        ЗДЕСЬ: V - ПЕРЕМЕННАЯ ЦИКЛА,  A1,  A2  -  НАЧАЛЬНОЕ  И
   КОНЕЧНОЕ  ЗНАЧЕНИЯ  ПЕРЕМЕННОЙ  ЦИКЛА,  A3  -  ШАГ.  СПРАВА
   ПРИВЕДЕНА  ЭКВИВАЛЕНТНАЯ   КОНСТРУКЦИЯ,   РЕАЛИЗОВАННАЯ   С
   ПОМОЩЬЮ ОПЕРАТОРА WHILE.

        В ОПЕРАТОРЕ FOR ПЕРЕМЕННАЯ ЦИКЛА ДОЛЖНА  БЫТЬ  ПРОСТОЙ
   ЦЕЛОЙ ПЕРЕМЕННОЙ. НАЧАЛЬНОЕ,  КОНЕЧНОЕ  ЗНАЧЕНИЯ  И  ШАГ  -
   ЦЕЛЫМИ  КОНСТАНТАМИ  ИЛИ  ПЕРЕМЕННЫМИ  БЕЗ  ИНДЕКСА  ИЛИ  С
   ИНДЕКСОМ,  ЗАДАННЫМ  КОНСТАНТОЙ.   ЕСЛИ   ШАГ   НЕ   ЗАДАН,
   ПОДРАЗУМЕВАЕТСЯ ШАГ 1.


        З_А_М_Е_Ч_А_Н_И_Е. ЕСЛИ НАЧАЛЬНОЕ ЗНАЧЕНИЕ  ПЕРЕМЕННОЙ
   ЦИКЛА МЕНЬШЕ (ДЛЯ DOWNTO - БОЛЬШЕ) КОНЕЧНОГО,  ТО  ЦИКЛ  НЕ
   ВЫПОЛНЯЕТСЯ НИ РАЗУ.

        ПРИМЕР.
.C
�                             - 22 -




        РАССМОТРИМ ДВЕ ПРОГРАММЫ ВЫЧИСЛЕНИЯ СУММЫ 10000 ЧЛЕНОВ
   ГАРМОНИЧЕСКОГО РЯДА. КАКАЯ ИЗ  НИХ  ДАЕТ  БОЛЕЕ  ПРАВИЛЬНЫЙ
   РЕЗУЛЬТАТ?

   10 REAL H                      10 REAL H2
   20 N=10000                     20 N=10000
   30 H=0.0                       30 H2=0.0
   40 FOR I=1 ТО N                40 FOR I=N DOWNTO 1
   50    H=H+1.0/I                50    H2=H2+1.0/I
   60 ENDF                        60 ENDF


   ----------
   I  GOTO  I
   ----------

        ПЕРЕДАЕТ УПРАВЛЕНИЕ НА СТРОКУ. ЗАПИСЫВАЕТСЯ В ВИДЕ:

          GOTO <НОМЕР СТРОКИ>

        GOTO ДОЛЖНО ПИСАТЬСЯ БЕЗ ПРОБЕЛА.

        ПРИМЕР:

   150 GOTO 60


   ----------
   I  STOP  I
   ----------

        ПРЕКРАЩАЕТ   ВЫПОЛНЕНИЕ   ПРОГРАММЫ.   НА    ТЕРМИНАЛЕ
   ПЕЧАТАЕТСЯ СООБЩЕНИЕ:

   STOP AT LINE N PC=A

   ГДЕ N - НОМЕР СТРОКИ, В КОТОРОЙ СТОИТ ОПЕРАТОР  STOP,  A  -
   ВОСЬМЕРИЧНЫЙ  АДРЕС   СООТВЕТСТВУЮЩЕЙ   ИНСТРУКЦИИ   +   2.
   УПРАВЛЕНИЕ ПЕРЕДАЕТСЯ МОНИТОРУ.

        ПРИМЕР:

   700 STOP


   ---------
   I  ЕND  I
   ---------

        ЗАКАНЧИВАЕТ ПРОГРАММУ.  ПРИСУТСТВИЕ  ОПЕРАТОРА  END  В
   ПРОГРАММЕ НЕ ОБЯЗАТЕЛЬНО. ЕСЛИ ОН  ОТСУТСТВУЕТ,  ТРАНСЛЯЦИЯ
   ЗАКАНЧИВАЕТСЯ  НА  СТРОКЕ   С   НАИБОЛЬШИМ   НОМЕРОМ.   ПРИ
   ВЫПОЛНЕНИИ,  ЕСЛИ  ОТСУТСТВУЮТ  ОПЕРАТОРЫ  END  И  STOP  (И
   ОТСУТСТВУЮТ БЕСКОНЕЧНЫЕ  ЦИКЛЫ),  ТО  ВЫПОЛНЕНИЕ  ПРОГРАММЫ
   ЗАВЕРШАЕТСЯ НА СТРОКЕ С НАИБОЛЬШИМ НОМЕРОМ.

.C
�                             - 23 -




       2.2.4. ОПИСАНИЕ И ВЫЗОВ ПРОЦЕДУР




          ОПИСАНИЕ ПРОЦЕДУР
          -----------------

        ОПИСАНИЕ  ПРОЦЕДУРЫ  СОДЕРЖИТ  ИМЯ  ПРОЦЕДУРЫ  И  (ДЛЯ
   ВНЕШНИХ ПРОЦЕДУР) АДРЕС ВХОДА В  ПРОЦЕДУРУ.  ИМЯ  ПРОЦЕДУРЫ
   ДОЛЖНО  ОТЛИЧАТЬСЯ  ОТ  ВСЕХ  ИМЕН  ОПЕРАТОРОВ,  ФУНКЦИЙ  И
   ПЕРЕМЕННЫХ.


   ----------
   I  PROC  I
   ----------

        ОПЕРАТОР ОПИСЫВАЕТ ПРОЦЕДУРУ. ИМЕЕТ ВИД:

          PROC <ИМЯ ПРОЦЕДУРЫ> [:<АДРЕС>]

        СЛУЧАЙ 1. ВНУТРЕННИЕ ПРОЦЕДУРЫ.

        В  ЭТОМ  СЛУЧАЕ  <АДРЕС>  ДОЛЖЕН   ОТСУТСТВОВАТЬ.   ЗА
   ОПЕРАТОРОМ PROC ДОЛЖНЫ  СЛЕДОВАТЬ  ОПЕРАТОРЫ,  СОСТАВЛЯЮЩИЕ
   ПРОЦЕДУРУ (ТЕЛО ПРОЦЕДУРЫ),  КОТОРЫЕ  ДОЛЖНЫ  ЗАКАНЧИВАТЬСЯ
   ОПЕРАТОРОМ   ENDP.   ТЕЛО   ПРОЦЕДУРЫ    МОЖЕТ    СОДЕРЖАТЬ
   ПРОИЗВОЛЬНОЕ  КОЛИЧЕСТВО  ОПЕРАТОРОВ  RETURN,  ПО   КОТОРЫМ
   ОСУЩЕСТВЛЯЕТСЯ ВОЗВРАТ ИЗ ПРОЦЕДУРЫ  ВО  ВРЕМЯ  ВЫПОЛНЕНИЯ.
   ОПЕРАТОРЫ   RETURN    НЕ    ОБЯЗАТЕЛЬНЫ,    Т.К.    ВОЗВРАТ
   ОСУЩЕСТВЛЯЕТСЯ ПО ОПЕРАТОРУ ENDP.

        ОБЩИЙ ВИД ОПИСАНИЯ ВНУТРЕННЕЙ ПРОЦЕДУРЫ:

          PROC NAME
                  О П Е Р А Т О Р Ы
                  [ RETURN ]
                  О П Е Р А Т О Р Ы
          ENDP

        СЛУЧАЙ 2. ВНЕШНЯЯ ПРОЦЕДУРА.

        В ЭТОМ СЛУЧАЕ <АДРЕС> ДОЛЖЕН БЫТЬ ЗАДАН. ОПЕРАТОР PROC
   СВЯЗЫВАЕТ ИМЯ ПРОЦЕДУРЫ С ЭТИМ АДРЕСОМ.  ТЕЛО  ПРОЦЕДУРЫ  И
   ОПЕРАТОР ENDP ДОЛЖНЫ ОТСУТСТВОВАТЬ.


          ВЫЗОВ ПРОЦЕДУРЫ
          ---------------

        ВЫЗОВ ПРОЦЕДУРЫ ИМЕЕТ ВИД:

          NAME [P1,P2 ...]

   ГДЕ NAME - ИМЯ ПРОЦЕДУРЫ, P1, P2 ... - ПАРАМЕТРЫ. ПАРАМЕТРЫ
   ДОЛЖНЫ  БЫТЬ  ПЕРЕМЕННЫМИ  БЕЗ  ИНДЕКСА  ИЛИ  С   ИНДЕКСОМ,
   ЗАДАННЫМ КОНСТАНТОЙ. ДЛЯ ПРОЦЕДУР, НАПИСАННЫХ НА  QUASIC-2,
.C
�                             - 24 -




   ПАРАМЕТРЫ  МОГУТ  БЫТЬ  ЗАДАНЫ,  НО   НЕ   БУДУТ   ПЕРЕДАНЫ
   ПРОЦЕДУРЕ.

        ПРИМЕРЫ.

    100 PROC PLOT:60000   !ОПИСАНИЕ ВНЕШНЕЙ ПРОЦЕДУРЫ PLOT
    200 PROC INIT         !ОПИСАНИЕ ПРОЦЕДУРЫ INIT
    210    FOR I=1 TO N   !\
    220       A(I)=0      ! ТЕЛО ПРОЦЕДУРЫ INIT
    230    ENDF           !/
    240 ENDP              !КОНЕЦ ТЕЛА ПРОЦЕДУРЫ INIT
   1010 INIT              !ВЫЗОВ ПРОЦЕДУРЫ INIT
   1350 PLOT X,Y          !ВЫЗОВ ПРОЦЕДУРЫ PLOT С ПАРАМЕТРАМИ X И Y

        СВЯЗЬ С ВНЕШНИМИ ПРОЦЕДУРАМИ БОЛЕЕ ПОДРОБНО ОПИСАНА  В
   П.5.2.



       2.2.5. ОБРАБОТКА ПРЕРЫВАНИЙ




   --------
   I  ON  I
   --------

        ОПЕРАТОР   ON   ОПИСЫВАЕТ   (БЕЗЫМЯННУЮ)    ПРОЦЕДУРУ,
   ПРЕДНАЗНАЧЕННУЮ ДЛЯ ОБРАБОТКИ НЕКОТОРОГО СОБЫТИЯ. СОБЫТИЕ -
   ЭТО  ПРЕРЫВАНИЕ  ПО  НЕКОТОРОМУ   ВЕКТОРУ   ИЛИ   ОКОНЧАНИЕ
   ПРОГРАММЫ.  КАЖДЫЙ  РАЗ  КОГДА  ДАННОЕ  СОБЫТИЕ  ПРОИЗОЙДЕТ
   ВЫПОЛНЕНИЕ ПРОГРАММЫ БУДЕТ ПРЕРВАНО, БУДЕТ  ВЫЗВАНА  ДАННАЯ
   ПОДПРОГРАММА,  И  ПОСЛЕ  ЕЕ  ЗАВЕРШЕНИЯ  БУДЕТ   ПРОДОЛЖЕНО
   ВЫПОЛНЕНИЕ  ПРОГРАММЫ   С   ТОЧКИ   ПРЕРЫВАНИЯ.   ПОЛОЖЕНИЕ
   ОПЕРАТОРА ON В ПРОГРАММЕ БЕЗРАЗЛИЧНО.

        ЗА   ОПЕРАТОРОМ   ON   ДОЛЖНЫ   СЛЕДОВАТЬ   ОПЕРАТОРЫ,
   СОСТАВЛЯЮЩИЕ ПРОЦЕДУРУ  (ТЕЛО  ПРОЦЕДУРЫ),  КОТОРЫЕ  ДОЛЖНЫ
   ЗАКАНЧИВАТЬСЯ  ОПЕРАТОРОМ  ENDO.   ТЕЛО   ПРОЦЕДУРЫ   МОЖЕТ
   СОДЕРЖАТЬ ПРОИЗВОЛЬНОЕ  КОЛИЧЕСТВО  ОПЕРАТОРОВ  RETURN,  ПО
   КОТОРЫМ  ОСУЩЕСТВЛЯЕТСЯ  ВОЗВРАТ  ИЗ  ПРОЦЕДУРЫ  ВО   ВРЕМЯ
   ВЫПОЛНЕНИЯ. ОПЕРАТОРЫ RETURN НЕ ОБЯЗАТЕЛЬНЫ,  Т.К.  ВОЗВРАТ
   ОСУЩЕСТВЛЯЕТСЯ ПО ОПЕРАТОРУ ENDO.

        ОБЩИЙ ВИД ОПИСАНИЯ ПРОЦЕДУРЫ ОБРАБОТКИ ПРЕРЫВАНИЙ:

          ON ...
                  О П Е Р А Т О Р Ы
                  [ RETURN ]
                  О П Е Р А Т О Р Ы
          ENDO

        ОПЕРАТОР ИМЕЕТ ДВА ВАРИАНТА:

          ON A [PSW S]
   И
          ON STOP
.C
�                             - 25 -




        ВАРИАНТ  ON  A  [PSW  S]  ПРЕДНАЗНАЧЕН  ДЛЯ  ОБРАБОТКИ
   ПРЕРЫВАНИЙ  ПО  ВЕКТОРУ  A,  ГДЕ  А  -  ВОСЬМЕРИЧНЫЙ  АДРЕС
   ВЕКТОРА. АДРЕС А  ДОЛЖЕН  БЫТЬ  <  500  И  ДЕЛИТЬСЯ  НА  4.
   НЕОБЯЗАТЕЛЬНЫЙ ЭЛЕМЕНТ PSW S, ГДЕ S -  ВОСЬМЕРИЧНОЕ  ЧИСЛО,
   ЗАДАЕТ СЛОВО СОСТОЯНИЯ ПРОЦЕССОРА ДЛЯ ОБРАБОТКИ ПРЕРЫВАНИЯ.
   ПО УМОЛЧАНИЮ S=200.


        З_А_М_Е_Ч_А_Н_И_Е.    ДЛЯ    ЭЛЕКТРОНИКИ-60    PSW=200
   ОЗНАЧАЕТ, ЧТО ПРОЦЕДУРА ОБРАБОТКИ ПРЕРЫВАНИЯ НЕ МОЖЕТ  БЫТЬ
   ПРЕРВАНА.

        ВАРИАНТ ON STOP УКАЗЫВАЕТ, ЧТО ПРОЦЕДУРА  ДОЛЖНА  БЫТЬ
   ВЫПОЛНЕНА ПРИ ОКОНЧАНИИ  ПРОГРАММЫ  ПОЛЬЗОВАТЕЛЯ  (ТО  ЕСТЬ
   КОГДА ВЫПОЛНЕНИЕ ПРОГРАММЫ ПРЕКРАЩАЕТСЯ НА  ОПЕРАТОРЕ  STOP
   ИЛИ END, ИЛИ НА ПОСЛЕДНЕМ ОПЕРАТОРЕ  ПРОГРАММЫ,  ИЛИ  КОГДА
   ПРОГРАММА ПРЕРЫВАЕТСЯ ПРИ ПОМОЩИ CTRL/P  ИЛИ  ПО  ФАТАЛЬНОЙ
   ОШИБКЕ).

        ГЛАВНОЕ   НАЗНАЧЕНИЕ   ЭТОГО   ОПЕРАТОРА   СОСТОИТ   В
   ЗАПРЕЩЕНИИ ПРЕРЫВАНИЙ ОТ ВНЕШНИХ УСТРОЙСТВ ПОЛЬЗОВАТЕЛЯ ПРИ
   ОКОНЧАНИИ  ПРОГРАММЫ.   НЕОБХОДИМОСТЬ   ТАКОГО   ЗАПРЕЩЕНИЯ
   СВЯЗАНА  СО  СЛЕДУЮШИМ.  ЕСЛИ   ПРИ   ОКОНЧАНИИ   ПРОГРАММЫ
   ПОЛЬЗОВАТЕЛЯ  ПРЕРЫВАНИЯ   ОТ   ВНЕШНИХ   УСТРОЙСТВ   БУДУТ
   ПРОДОЛЖАТЬ   ВОЗНИКАТЬ,   ТО   ОНИ   БУДУТ   ОБРАБАТЫВАТЬСЯ
   ПРОГРАММОЙ ПОЛЬЗОВАТЕЛЯ ВО ВРЕМЯ РАБОТЫ  МОНИТОРА.  ОДНАКО,
   ЕСЛИ БУДЕТ ВЫПОЛНЯТЬСЯ КОМПИЛЯЦИЯ, ТО  ПРОЦЕДУРА  ОБРАБОТКИ
   ПРЕРЫВАНИЙ ПОЛЬЗОВАТЕЛЯ БУДЕТ МОДИФИЦИРОВАТЬСЯ ВО ВРЕМЯ  ЕЕ
   РАБОТЫ. ЭТО МОЖЕТ ПРИВЕСТИ К НЕПРЕДСКАЗУЕМЫМ РЕЗУЛЬТАТАМ.

        ПРИМЕРЫ:

   100 ON 300
   110    BUFF(I)=DDB
   120    I=I+1
   130 ENDO
   140 ON STOP
   150    DDS=0
   160 ENDO


   -------------
   I  REQUEST  I
   -------------

        ЭТОТ ОПЕРАТОР ДАЕТ ВОЗМОЖНОСТЬ ПОЛЬЗОВАТЕЛЮ  УПРАВЛЯТЬ
   ВЫПОЛНЕНИЕМ  ПРОГРАММЫ  ПРЕРЫВАНИЯМИ   С   КЛАВИАТУРЫ,   НЕ
   ПЕРЕХОДЯ  К  МОНИТОРУ.  ПРЕРЫВАНИЕ  ОСУЩЕСТВЛЯЕТСЯ   ВВОДОМ
   СИМВОЛА ESC С КЛАВИАТУРЫ (СМ. ПРИЛОЖЕНИЕ 1). ОПЕРАТОР ИМЕЕТ
   ВИД:

          REQUEST  [<НОМЕР СТРОКИ>]

        ЕСЛИ  НОМЕР  СТРОКИ  ЗАДАН,  ТО   ОПЕРАТОР   РАЗРЕШАЕТ
   ПРЕРЫВАНИЯ ПО ESC. ПОСЛЕ ВЫПОЛНЕНИЯ ЭТОГО ОПЕРАТОРА  КАЖДОЕ
   НАЖАТИЕ КЛАВИШИ ESC ВЫЗЫВАЕТ ПРЕРЫВАНИЕ ПРОГРАММЫ И ПЕРЕХОД
   НА  УКАЗАННУЮ  СТРОКУ.  СЛЕДУЮЩИЙ  ОПЕРАТОР  REQUEST  МОЖЕТ
   УСТАНОВИТЬ НОВЫЙ АДРЕС  ПЕРЕХОДА  ПО  ПРЕРЫВАНИЮ.  ОПЕРАТОР
.C
�                             - 26 -




   REQUEST БЕЗ НОМЕРА СТРОКИ ЗАПРЕЩАЕТ ПРЕРЫВАНИЯ ПО ESC.

        ПРИМЕР:

        ЭТОТ ПРИМЕР ПОКАЗЫВАЕТ, КАК МОЖНО ПРЕРВАТЬ  ВЫПОЛНЕНИЕ
   БЕСКОНЕЧНОГО ЦИКЛА.

   100 REQUEST 200
   110 LOOP
   120    ............
   130    ............
   190 ENDL
   200 REQUEST



       2.2.6. ОПЕРАТОРЫ ВВОДА-ВЫВОДА



        ОПЕРАТОРЫ OPEN И CLOSE СЛУЖАТ ДЛЯ ОТКРЫТИЯ И  ЗАКРЫТИЯ
   КАНАЛОВ. ОПЕРАТОРЫ PUT И GET СЛУЖАТ ДЛЯ ФОРМАТНОГО ВЫВОДА И
   ВВОДА.

        ПРЕДВАРИТЕЛЬНЫЕ ПОНЯТИЯ:

   НОМЕР КАНАЛА
          - В ОПЕРАТОРАХ PUT И GET УКАЗЫВАЕТ КУДА ВЫВОДИТЬ ИЛИ
            ОТКУДА ВВОДИТЬ. ЗАДАЕТСЯ ЦЕЛЫМ ЧИСЛОМ ОТ 1  ДО  8.
            КАНАЛ ДОЛЖЕН БЫТЬ СВЯЗАН С ФАЙЛОМ ИЛИ  УСТРОЙСТВОМ
            ОПЕРАТОРОМ OPEN. ОПЕРАТОР CLOSE ОСВОБОЖДАЕТ КАНАЛ;

   СПИСОК
          - В ОПЕРАТОРАХ PUT И GET УКАЗЫВАЕТ ЧТО ВЫВОДИТЬ  ИЛИ
            ВВОДИТЬ.

        ПО УМОЛЧАНИЮ, ЕСЛИ  ПРИ  ВЫПОЛНЕНИИ  ЛЮБОГО  ОПЕРАТОРА
   ВВОДА-ВЫВОДА ПРОИСХОДИТ ОШИБКА, ТО ПРОГРАММА ПРЕКРАЩАЕТСЯ И
   НА ТЕРМИНАЛ ВЫДАЕТСЯ СООБЩЕНИЕ.  ЕСЛИ  В  ОПЕРАТОРЕ  ЗАДАНА
   ОПЦИЯ +Е, ТО ПРОГРАММА ПРОДОЛЖАЕТСЯ, А ПЕРЕМЕННАЯ  $IOSW(1)
   СОДЕРЖИТ КОД ОШИБКИ.  ОБНАРУЖЕНИЕ  КОНЦА  ФАЙЛА  ПРИ  ВВОДЕ
   СЧИТАЕТСЯ ОШИБКОЙ.

        БОЛЕЕ ПОДРОБНО ЭТИ ВОПРОСЫ ОБСУЖДАЮТСЯ В ГЛ.4.


   ----------
   I  OPEN  I
   ----------

        ОПЕРАТОР ЗАПИСЫВАЕТСЯ ТАК:

          OPEN [<ОПЦИИ>] <НОМЕР КАНАЛА> <ФАЙЛ>

        ОПЦИИ:

   N
          - СОЗДАНИЕ НОВОГО ФАЙЛА. ПО УМОЛЧАНИЮ, -N;
.C
�                             - 27 -




   C
          - ПРЕДВАРИТЕЛЬНОЕ  ЗАКРЫТИЕ  ОТКРЫТОГО   ФАЙЛА.   ПО
            УМОЛЧАНИЮ, -C;

   G
          - ГЛОБАЛЬНЫЙ КАНАЛ. ПО УМОЛЧАНИЮ, -G;

   E
          - ПРОДОЛЖЕНИЕ  ВЫПОЛНЕНИЯ   ПРОГРАММЫ   ПРИ   ОШИБКЕ
            ОТКРЫТИЯ КАНАЛА. ПО УМОЛЧАНИЮ, -E.

        ФАЙЛ ДОЛЖЕН БЫТЬ ЗАДАН  ИЛИ  СИМВОЛЬНОЙ  СТРОКОЙ,  ИЛИ
   ПЕРЕМЕННОЙ. ЕСЛИ ФАЙЛ ЗАДАН ПЕРЕМЕННОЙ, ТО  ЭТА  ПЕРЕМЕННАЯ
   ДОЛЖНА     СОДЕРЖАТЬ      ПОСЛЕДОВАТЕЛЬНОСТЬ      СИМВОЛОВ,
   ЗАКАНЧИВАЮЩУЮСЯ КОДОМ 0.

        ПРИМЕРЫ.

   1100 OPEN 1 'FI:INPUT.DAT' !ОТКРЫТИЕ СУЩЕСТВУЮЩЕГО ФАЙЛА
   1120 OPEN +N 2 'FI:OUTPUT.DAT' !СОЗДАНИЕ НОВОГО ФАЙЛА
   450 OPEN 3 'LP' !НАЗНАЧЕНИЕ КАНАЛА 3 НА ПЕЧАТАЮЩЕЕ УСТРОЙСТВО
   2002 OPEN +E+C 5 FILE


   -----------
   I  CLOSE  I
   -----------

        ОПЕРАТОР ЗАПИСЫВАЕТСЯ ТАК:

          CLOSE [<ОПЦИИ>] <НОМЕР КАНАЛА>

        ОПЦИИ:

   G
          - ГЛОБАЛЬНЫЙ КАНАЛ. ПО УМОЛЧАНИЮ, -G;

   E
          - ПРОДОЛЖЕНИЕ  ВЫПОЛНЕНИЯ   ПРОГРАММЫ   ПРИ   ОШИБКЕ
            ЗАКРЫТИЯ КАНАЛА. ПО УМОЛЧАНИЮ, -E.

        ПРИМЕР.

   900 CLOSE 5


   ---------
   I  PUT  I
   ---------

        ОПЕРАТОР ЗАПИСЫВАЕТСЯ ТАК:

          PUT [<ОПЦИИ>] [<НОМЕР КАНАЛА>] [<СПИСОК>]

        ОПЦИИ:

   L
          - ПЕРЕВОД СТРОКИ ПОСЛЕ ВЫВОДА СПИСКА. ПО  УМОЛЧАНИЮ,
.C
�                             - 28 -




            +L;

   E
          - ПРОДОЛЖЕНИЕ  ВЫПОЛНЕНИЯ   ПРОГРАММЫ   ПРИ   ОШИБКЕ
            ВЫВОДА. ПО УМОЛЧАНИЮ, -E.

        ЕСЛИ НОМЕР КАНАЛА ОТСУТСТВУЕТ, ТО  ПРОИЗВОДИТСЯ  ВЫВОД
   НА ТЕРМИНАЛ.

        СПИСОК УСТРОЕН ТАК:

          <ЭЛЕМЕНТ>,<ЭЛЕМЕНТ>,...

        ЭЛЕМЕНТ ЭТО:

          - /[//...] - ПЕРЕВОД СТРОКИ (ОДИН ИЛИ НЕСКОЛЬКО);

          - СТРОКА СИМВОЛОВ;

          - ПЕРЕМЕННАЯ   И,   ВОЗМОЖНО,    ФОРМАТ    В    ВИДЕ
            VAR[:FORMAT].

        ФОРМАТ ЭТО:

   I[N]
          - ЦЕЛЫЙ  ДЕСЯТИЧНЫЙ.  N  -  КОЛИЧЕСТВО  ПОЗИЦИЙ,  ПО
            УМОЛЧАНИЮ, 7 ДЛЯ ЦЕЛЫХ, 4 ДЛЯ БАЙТОВ;

   O[N]
          - ЦЕЛЫЙ ВОСЬМЕРИЧНЫЙ. N  -  КОЛИЧЕСТВО  ПОЗИЦИЙ,  ПО
            УМОЛЧАНИЮ, 7 ДЛЯ ЦЕЛЫХ, 4 ДЛЯ БАЙТОВ;

   G[N.M], F[N.M], E[N.M]
          - ВЕЩЕСТВЕННЫЕ.  N  -  КОЛИЧЕСТВО   ПОЗИЦИЙ,   M   -
            КОЛИЧЕСТВО ЗНАЧАЩИХ  ЦИФР  ДЛЯ  ФОРМАТОВ  G  И  E,
            КОЛИЧЕСТВО ЦИФР ПОСЛЕ  ТОЧКИ  ДЛЯ  ФОРМАТА  F.  ПО
            УМОЛЧАНИЮ, 15.7;

   A:EXP
          - СИМВОЛЬНЫЙ.   EXP   -   ВЫРАЖЕНИЕ,    ОПРЕДЕЛЯЮЩЕЕ
            КОЛИЧЕСТВО  БАЙТОВ.  ПО  ЭТОМУ  ФОРМАТУ  ВЫВОДИТСЯ
            ПОСЛЕДОВАТЕЛЬНОСТЬ БАЙТОВ БЕЗ ПРЕОБРАЗОВАНИЯ.

        ПО  УМОЛЧАНИЮ,  ДЛЯ  ЦЕЛЫХ   И   БАЙТОВЫХ   ПЕРЕМЕННЫХ
   ПОДРАЗУМЕВАЕТСЯ ФОРМАТ I, А ДЛЯ ВЕЩЕСТВЕННЫХ - G.

        ЕСЛИ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ НЕ  МОЖЕТ  БЫТЬ  ВЫВЕДЕНО  ПО
   УКАЗАННОМУ ФОРМАТУ, ТО ОНО ЗАМЕНЯЕТСЯ  ЗВЕЗДОЧКАМИ.  (ЧИСЛО
   -32768 ПО ФОРМАТУ I ВСЕГДА ЗАМЕНЯЕТСЯ ЗВЕЗДОЧКАМИ).

        ПРИ ВЫВОДЕ ПО ФОРМАТУ А СИМВОЛЫ  С  КОДАМИ  МЕНЬШЕ  32
   ИГНОРИРУЮТСЯ  КРОМЕ   СИМВОЛА   VEOL   (КОД   0),   КОТОРЫЙ
   ИНТЕРПРЕТИРУЕТСЯ КАК ПЕРЕВОД СТРОКИ.

        ЕСЛИ СПИСОК ОТСУТСТВУЕТ, ТО ВЫВОДИТСЯ ПУСТАЯ СТРОКА.

        ПРИМЕРЫ.
.C
�                             - 29 -




   100 PUT X ! ПЕЧАТАЕТ X И ПЕРЕВОДИТ СТРОКУ
   120 PUT -L X ! ПЕЧАТАЕТ X И НЕ ПЕРЕВОДИТ СТРОКУ
   330 PUT //,A,B,C,/,STAT:O
   200 PUT 5 'A(',I:I2,')=',A(I)
   500 PUT LINE:A:N+1 ! ВЫВОД N+1 СИМВОЛА ПО ФОРМАТУ A


   ---------
   I  GET  I
   ---------

        ОПЕРАТОР ЗАПИСЫВАЕТСЯ ТАК:

          GET [<ОПЦИИ>] [<НОМЕР КАНАЛА>] [<СПИСОК>]

        ОПЦИИ:

   P
          - ВЫВОД ПРИГЛАШЕНИЯ ?  ПРИ  ВВОДЕ  С  ТЕРМИНАЛА.  ПО
            УМОЛЧАНИЮ, +P;

   F
          - ПРОДОЛЖЕНИЕ ВЫПОЛНЕНИЯ ПРОГРАММЫ  ПРИ  ОБНАРУЖЕНИИ
            КОНЦА ФАЙЛА. ПО УМОЛЧАНИЮ, -F.

   E
          - ПРОДОЛЖЕНИЕ ВЫПОЛНЕНИЯ ПРОГРАММЫ ПРИ ОШИБКЕ ВВОДА.
            ПО УМОЛЧАНИЮ, -E.

        ЕСЛИ НОМЕР КАНАЛА ОТСУТСТВУЕТ, ТО ПРОИЗВОДИТСЯ ВВОД  С
   ТЕРМИНАЛА.

        СПИСОК УСТРОЕН ТАК:

          <ЭЛЕМЕНТ>,<ЭЛЕМЕНТ>...

   ГДЕ ЭЛЕМЕНТ ЭТО  ПЕРЕМЕННАЯ  И,  ВОЗМОЖНО,  ФОРМАТ  В  ВИДЕ
   VAR[:FORMAT].

        ФОРМАТ ЭТО:

   I
          - ЦЕЛЫЙ ДЕСЯТИЧНЫЙ. В ЭТОМ ФОРМАТЕ  МОГУТ  ВВОДИТЬСЯ
            ЛЮБЫЕ КОНСТАНТЫ;

   O
          - ЦЕЛЫЙ ВОСЬМЕРИЧНЫЙ. В ЭТОМ ФОРМАТЕ МОГУТ ВВОДИТЬСЯ
            ТОЛЬКО ВОСЬМЕРИЧНЫЕ ЧИСЛА;

   G, F, E
          - ВЕЩЕСТВЕННЫЕ (ДЛЯ ВВОДА ЭТИ ФОРМАТЫ ЭКВИВАЛЕНТНЫ);

   A:VAR
          - СИМВОЛЬНЫЙ. VAR - ПЕРЕМЕННАЯ, В КОТОРУЮ ПЕРЕДАЕТСЯ
            КОЛИЧЕСТВО  ВВЕДЕННЫХ  БАЙТОВ.  ПО  ЭТОМУ  ФОРМАТУ
            ВВОДИТСЯ     ПОСЛЕДОВАТЕЛЬНОСТЬ     БАЙТОВ     БЕЗ
            ПРЕОБРАЗОВАНИЯ.
.C
�                             - 30 -




        ПО  УМОЛЧАНИЮ,  ДЛЯ  ЦЕЛЫХ   И   БАЙТОВЫХ   ПЕРЕМЕННЫХ
   ПОДРАЗУМЕВАЕТСЯ ФОРМАТ I, А ДЛЯ ВЕЩЕСТВЕННЫХ - G.

        КОГДА В  СПИСКЕ  ВВОДА  ЗАДАНО  НЕСКОЛЬКО  ПЕРЕМЕННЫХ,
   ВВОДИМЫЕ  ЗНАЧЕНИЯ   ДОЛЖНЫ   РАЗДЕЛЯТЬСЯ   ЗАПЯТЫМИ   (,).
   ОПУЩЕННЫЕ  ЗНАЧЕНИЯ  ВВОДЯТСЯ  КАК  0.  ВВОД  С   ТЕРМИНАЛА
   ЗАКАНЧИВАЕТСЯ СИМВОЛОМ CR ИЛИ LF. ЕСЛИ ВВЕДЕН  LF,  ТО  ВСЕ
   ВВОДИМЫЕ  ПЕРЕМЕННЫЕ  СОХРАНЯЮТ  СВОИ  ЗНАЧЕНИЯ  (ОТКАЗ  ОТ
   ВВОДА). В  ФОРМАТЕ  A  ПОСЛЕ  ВВЕДЕННОЙ  ПОСЛЕДОВАТЕЛЬНОСТИ
   БАЙТОВ ПЕРЕДАЕТСЯ СИМВОЛ VEOL (КОД 0).

        ЕСЛИ ЗАДАНА ОПЦИЯ +E (+F) И ЕСЛИ ПРИ ВВОДЕ  ОБНАРУЖЕНА
   ОШИБКА (КОНЕЦ ФАЙЛА), ТО ВВОДИМЫЕ ПЕРЕМЕННЫЕ СОХРАНЯЮТ СВОИ
   ЗНАЧЕНИЯ. ПРИ ВВОДЕ С ТЕРМИНАЛА КОНЕЦ ФАЙЛА  -  ЭТО  СИМВОЛ
   FF.

        ЕСЛИ  СПИСОК  ОТСУТСТВУЕТ,  ТО  ПРОИЗВОДИТСЯ  ОЖИДАНИЕ
   ПРОИЗВОЛЬНОГО ВВОДА.

        ПРИМЕРЫ.

   400 GET X:O
   120 GET A,B,C
   550 GET LINE:A:N ! ВВОД ПО ФОРМАТУ A

   СЛЕДУЮЩАЯ ПРОГРАММА ВВОДИТ С ТЕРМИНАЛА ИМЯ ФАЙЛА, ОТКРЫВАЕТ
   КАНАЛ, ВВОДИТ ИЗ НЕГО СТРОКИ (ДО КОНЦА ФАЙЛА) И  ЗАПОМИНАЕТ
   ИХ В МАССИВЕ.

   10 BYTЕ TEXT(10000)
   20 GET TEXT:A:N
   30 OPEN 1 TEXT
   100 I=0
   110 LOOP
   120    GET +F 1 TEXT(I):A:N
   130    IF $IOSW(1)<0 THEN EXIT \ ENDI
   140    I=I+N
   150 ENDL
   160 CLOSE 1



       2.2.7. РАЗНОЕ




   ----------
   I  DATA  I
   ----------

        ОПЕРАТОР DATA СЛУЖИТ ДЛЯ  ЗАДАНИЯ  НАЧАЛЬНЫХ  ЗНАЧЕНИЙ
   ПЕРЕМЕННЫХ.   НАЧАЛЬНЫЕ    ЗНАЧЕНИЯ    ПРИСВАИВАЮТСЯ    ПРИ
   ТРАНСЛЯЦИИ. ИМЕЕТ ВИД:

          DATA V1/[K1*]D1,[K2*]D2,.../, V2/...

   ГДЕ  V1,V2,...  -  ПЕРЕМЕННЫЕ,   D1,D2,...   -   КОНСТАНТЫ,
.C
�                             - 31 -




   K1,K2,... - КРАТНОСТИ (ЦЕЛЫЕ ЧИСЛА). ПЕРЕМЕННЫЕ ДОЛЖНЫ ЛИБО
   НЕ   СОДЕРЖАТЬ   ИНДЕКСОВ,   ЛИБО   ИНДЕКСЫ   ДОЛЖНЫ   БЫТЬ
   КОНСТАНТАМИ. КРАТНОСТИ МОГУТ ОТСУТСТВОВАТЬ, В  ЭТОМ  СЛУЧАЕ
   СЧИТАЕТСЯ, ЧТО ОНИ РАВНЫ 1. ОБЩЕЕ КОЛИЧЕСТВО  КОНСТАНТ  (ТО
   ЕСТЬ K1+K2+...) ДОЛЖНО БЫТЬ  ТАКИМ,  ЧТОБЫ  НЕ  ПЕРЕПОЛНИТЬ
   РАЗМЕР ПЕРЕМЕННОЙ.

        ПРИМЕРЫ:

   10 INT A(50),B(50) \ DATA A/51*0/,B(40)/11*0/
   40 DATA EX/'ПР','ИМ','ЕР'/ !РАЗМЕР EX ДОЛЖЕН БЫТЬ >= 3



       2.2.8. СПЕЦИАЛЬНЫЕ ОПЕРАТОРЫ



        СПЕЦИАЛЬНЫЕ ОПЕРАТОРЫ - ЭТО  ОПЕРАТОРЫ  ДЛЯ  ПОДДЕРЖКИ
   ТАЙМЕРА, АППАРАТУРЫ CAMAC И ДР.  ОНИ  ОПИСАНЫ  В  ОТДЕЛЬНЫХ
   РУКОВОДСТВАХ.



       2.2.9. ПРОГРАММИРОВАНИЕ ВВОДА-ВЫВОДА



        ОПЕРАТОРЫ  ОПИСАНИЯ  ПОЗВОЛЯЮТ  РАЗМЕСТИТЬ  ПЕРЕМЕННУЮ
   ЛЮБОГО ТИПА ПО ЗАДАННОМУ АДРЕСУ. ЭТА ВОЗМОЖНОСТЬ  ПОЗВОЛЯЕТ
   ПРОГРАММИРОВАТЬ   НЕСТАНДАРТНЫЕ   ВНЕШНИЕ   УСТРОЙСТВА   НА
   ФИЗИЧЕСКОМ УРОВНЕ. В  ЭТОМ  ПУНКТЕ  ПРИВЕДЕНЫ  ДВА  ПРИМЕРА
   ПРОГРАММИРОВАНИЯ ВВОДА-ВЫВОДА.

        ПРИМЕР 1. ВВОД СИМВОЛА С ТЕРМИНАЛА

   10 BYTE TTS:177560,TTB:177562 !РЕГИСТРЫ ТЕРМИНАЛА
   20 WHILE TTS>=0 \ ENDW !ОЖИДАНИЕ ВВОДА СИМВОЛА
   30 CIAS=UTB !ЧТЕНИЕ СИМВОЛА ИЗ БУФЕРНОГО РЕГИСТРА

        ПРИМЕР 2. ВЫВОД БЛОКА НА МАГНИТНУЮ ЛЕНТУ

   10 INT BLOCK(1023)
   20 INT MTCS:172522,MTWC:172524,MTMA:172526
   30 MTMA=#BLOCK !ЗАПИСЬ АДРЕСА ПАМЯТИ
   40 MTWC=-1024 !ЗАПИСЬ СЧЕТЧИКА СЛОВ
   50 MTCS=5 !ЗАПИСЬ КОМАНДЫ
   60 WHILE MTCS%>=0 \ ENDW !ОЖИДАНИЕ ОКОНЧАНИЯ ОПЕРАЦИИ
.C
�                             - 32 -




      2.2.10. О СТИЛЕ ПРОГРАММИРОВАНИЯ



        В ЯЗЫКЕ QUASIC-2 ОПИСАНИЕ ПЕРЕМЕННЫХ  НЕ  ОБЯЗАТЕЛЬНО:
   ВСЕ  НЕОПИСАННЫЕ  ПЕРЕМЕННЫЕ  СЧИТАЮТСЯ   ПРОСТЫМИ   ЦЕЛЫМИ
   ПЕРЕМЕННЫМИ.  ОПИСАНИЕ  ПРОЦЕДУР  ОБЯЗАТЕЛЬНО,  НО  ОНО  НЕ
   ОБЯЗАТЕЛЬНО  ДОЛЖНО  ПРЕДШЕСТВОВАТЬ  ВЫЗОВУ  ПРОЦЕДУР.  ЭТИ
   ВОЗМОЖНОСТИ  МОГУТ  БЫТЬ  УДОБНЫ  ПРИ   СОЗДАНИИ   КОРОТКИХ
   ПРОГРАММ РАЗОВОГО ИСПОЛЬЗОВАНИЯ, НО  СТАНОВЯТСЯ  ИСТОЧНИКОМ
   ОШИБОК ДЛЯ БОЛЕЕ КРУПНЫХ ПРОГРАММ. КРОМЕ  ЭТОГО  ОНИ  ИМЕЮТ
   РЯД ИСКЛЮЧЕНИЙ.

        ХОРОШИЙ СТИЛЬ ПРОГРАММИРОВАНИЯ  ПРЕДПОЛАГАЕТ  ОПИСАНИЕ
   ВСЕХ ПЕРЕМЕННЫХ В  ПРОГРАММЕ  И  ОПИСАНИЕ  ПРОЦЕДУР  ДО  ИХ
   ИСПОЛЬЗОВАНИЯ.  ЗАДАНИЕ  РЕЖИМА  -A  ПРИ  ТРАНСЛЯЦИИ   (СМ.
   П.4.3.2) ОБЕСПЕЧИВАЕТ ПРОВЕРКУ ВЫПОЛНЕНИЯ ЭТИХ ПРАВИЛ.

        ЕСЛИ ЖЕ ЭТИ ПРАВИЛА НЕ ВЫПОЛНЯЮТСЯ (В РЕЖИМЕ  +A),  ТО
   СЛЕДУЕТ ИМЕТЬ В ВИДУ СЛЕДУЮЩИЕ ИСКЛЮЧЕНИЯ:

          - КОНСТРУКЦИЮ #<ИМЯ ПРОЦЕДУРЫ> НЕЛЬЗЯ УПОТРЕБЛЯТЬ ДО
            ОПИСАНИЯ ЭТОЙ ПРОЦЕДУРЫ;
          - ПРОЦЕДУРА С ФОРТРАНОВСКИМИ СОГЛАШЕНИЯМИ  О  СВЯЗЯХ
            ДОЛЖНА БЫТЬ ОПИСАНА ДО ЕЕ ИСПОЛЬЗОВАНИЯ.





                         3. ВВОД-ВЫВОД




        QUASIC-2  ОБСЛУЖИВАЕТ  ОПЕРАЦИИ  ВВОДА  И  ВЫВОДА  ДЛЯ
   СТАНДАРТНЫХ  ФИЗИЧЕСКИХ  УСТРОЙСТВ  ИЛИ  ФАЙЛОВ   НА   ЭТИХ
   УСТРОЙСТВАХ.    КАЖДОЕ    ФИЗИЧЕСКОЕ    УСТРОЙСТВО    ИМЕЕТ
   ФИКСИРОВАННОЕ  ИМЯ.  СЛЕДУЮЩАЯ  ТАБЛИЦА   СОДЕРЖИТ   СПИСОК
   ФИЗИЧЕСКИХ УСТРОЙСТВ, ПОДДЕРЖИВАЕМЫХ СИСТЕМОЙ.

   -------------------------------------------------------
   ФИЗИЧЕСКОЕ ИМЯ I       НАЗВАНИЕ УСТРОЙСТВА
   -------------------------------------------------------
          TT      I       ТЕРМИНАЛ
          PR      I       СЧИТЫВАТЕЛЬ ПЕРФОЛЕНТЫ
          PP      I       ПЕРФОРАТОР ЛЕНТЫ
          LP      I       ПЕЧАТАЮЩЕЕ УСТРОЙСТВО
          NL      I       НУЛЕВОЕ УСТРОЙСТВО
          FI      I       ИНТЕРФЕЙС С ФАЙЛОВОЙ СИСТЕМОЙ
          NT      I       ИНТЕРФЕЙС С СЕТЬЮ ЭВМ
   -------------------------------------------------------

        НУЛЕВОЕ  УСТРОЙСТВО  РЕАЛИЗУЕТСЯ  ПРОГРАММНО.  ВВОД  И
   ВЫВОД НА  ЭТО  УСТРОЙСТВО  НЕМЕДЛЕННО  УСПЕШНО  ЗАВЕРШАЮТСЯ
   (ВВОД - С ПРИЗНАКОМ КОНЦА ФАЙЛА).

        ИНТЕРФЕЙС С ФАЙЛОВОЙ СИСТЕМОЙ - ЭТО  ТАКЖЕ  ПРОГРАММНО
.C
�                             - 33 -




   РЕАЛИЗОВАННОЕ  УСТРОЙСТВО,   КОТОРОЕ   ОСУЩЕСТВЛЯЕТ   СВЯЗЬ
   QUASIC-2 С НЕКОТОРОЙ ВНЕШНЕЙ СРЕДОЙ (НАПРИМЕР, RSX-11M  ИЛИ
   RT-11). АНАЛОГИЧНО,  ИНТЕРФЕЙС  С  СЕТЬЮ  ЭВМ  ОСУЩЕСТВЛЯЕТ
   СВЯЗЬ С ВНЕШНИМИ УСТРОЙСТВАМИ ЧЕРЕЗ НЕКОТОРУЮ СЕТЬ.

        ИМЯ ФАЙЛА В  QUASIC-2  ЗАДАЕТСЯ  СТРОКОЙ  СИМВОЛОВ.  В
   ОБЩЕМ СЛУЧАЕ ОНО ВЫГЛЯДИТ ТАК:

          'DD[:FFFFFF]'

   ГДЕ DD - ИМЯ УСТРОЙСТВА В QUASIC-2, А FFFFFF - ВНЕШНЕЕ  ИМЯ
   ФАЙЛА.

        НАПРИМЕР (FI ДЛЯ СИСТЕМЫ RSX-11M):

   'LP'
          - ПЕЧАТАЮЩЕЕ УСТРОЙСТВО;

   'FI:SORT.Q'
          - ФАЙЛ SORT.Q В ТЕКУЩЕМ ОГЛАВЛЕНИИ ПОЛЬЗОВАТЕЛЯ;

   'FI:DK3:[140,2]CRT.Q'
          - ФАЙЛ CRT.Q НА ДИСКЕ DK3: В ОГЛАВЛЕНИИ [140,2];

   'FI:MT1:PROGRAM.Q'
          - ФАЙЛ PROGRAM.Q НА МАГНИТНОЙ ЛЕНТЕ MT1:.

        ПРОГРАММА ПОЛЬЗОВАТЕЛЯ ОБРАЩАЕТСЯ  К  УСТРОЙСТВАМ  ИЛИ
   ФАЙЛАМ ПО ЛОГИЧЕСКИМ КАНАЛАМ. ЛОГИЧЕСКИЙ КАНАЛ ИМЕЕТ НОМЕР:
   ЦЕЛОЕ  ЧИСЛО  ОТ  1  ДО  8.  ЛОГИЧЕСКИЙ  КАНАЛ  ОТКРЫВАЕТСЯ
   ОПЕРАТОРОМ OPEN  И  ЗАКРЫВАЕТСЯ  ОПЕРАТОРОМ  CLOSE.  КАНАЛЫ
   МОГУТ ОТКРЫВАТЬСЯ И ЗАКРЫВАТЬСЯ КАК НА УРОВНЕ МОНИТОРА, ТАК
   И НА УРОВНЕ ОБ'ЕКТНОЙ ПРОГРАММЫ. КАНАЛЫ, ОТКРЫТЫЕ НА УРОВНЕ
   МОНИТОРА, МОГУТ ЗАТЕМ ИСПОЛЬЗОВАТЬСЯ В ОБ'ЕКТНОЙ ПРОГРАММЕ.

        ЛОГИЧЕСКИЕ КАНАЛЫ МОГУТ БЫТЬ ЛОКАЛЬНЫМИ И ГЛОБАЛЬНЫМИ.
   ПО  ОКОНЧАНИИ  ОБ'ЕКТНОЙ  ПРОГРАММЫ  ВСЕ  ЛОКАЛЬНЫЕ  КАНАЛЫ
   АВТОМАТИЧЕСКИ  ЗАКРЫВАЮТСЯ.  ГЛОБАЛЬНЫЕ   КАНАЛЫ   ОСТАЮТСЯ
   ОТКРЫТЫМИ. ПО УМОЛЧАНИЮ, КАНАЛЫ ОТКРЫВАЮТСЯ КАК ЛОКАЛЬНЫЕ.
.C
�                             - 34 -




                      4. РАБОТА С СИСТЕМОЙ






         4.1. ИСПОЛЬЗОВАНИЕ ТЕРМИНАЛА



        ПОЛЬЗОВАТЕЛЬ ВЗАИМОДЕЙСТВУЕТ С СИСТЕМОЙ QUASIC-2 ЧЕРЕЗ
   ТЕРМИНАЛ.  С  КЛАВИАТУРЫ  ТЕРМИНАЛА   ПОЛЬЗОВАТЕЛЬ   ВВОДИТ
   КОМАНДЫ, А НА ЭКРАНЕ ТЕРМИНАЛА  (ИЛИ  НА  БУМАГЕ)  ПОЛУЧАЕТ
   СООБЩЕНИЯ ОТ СИСТЕМЫ.

        ПРИ ВВОДЕ С  ТЕРМИНАЛА  СИСТЕМА  ОПРЕДЕЛЕННЫМ  ОБРАЗОМ
   ОБРАБАТЫВАЕТ НЕКОТОРЫЕ  СИМВОЛЫ,  НАЗЫВАЕМЫЕ  УПРАВЛЯЮЩИМИ.
   НИЖЕ ОПИСАНЫ УПРАВЛЯЮЩИЕ  СИМВОЛЫ  СИСТЕМЫ  QUASIC-2  И  ИХ
   ДЕЙСТВИЯ. НАПОМНИМ,  ЧТО  В  ДАННОМ  ОПИСАНИИ  ИСПОЛЬЗУЮТСЯ
   МЕЖДУНАРОДНЫЕ НАЗВАНИЯ СИМВОЛОВ. В ПРИЛОЖЕНИИ  1  ПРИВЕДЕНЫ
   НАЗВАНИЯ ПО ГОСТ, А ТАКЖЕ КОДЫ ЭТИХ СИМВОЛОВ.

        ЗАМЕТИМ, ЧТО  НА  БОЛЬШИНСТВЕ  ТЕРМИНАЛОВ  ДЛЯ  МНОГИХ
   УПРАВЛЯЮЩИХ СИМВОЛОВ ИМЕЮТСЯ СПЕЦИАЛЬНЫЕ КЛАВИШИ. ЕСЛИ  ДЛЯ
   НЕКОТОРОГО СИМВОЛА НЕТ СПЕЦИАЛЬНОЙ КЛАВИШИ,  ТО  ЕГО  МОЖНО
   ПОЛУЧИТЬ  ПРИ  ОДНОВРЕМЕННОМ   НАЖАТИИ   КЛАВИШИ   CTRL   И
   НЕКОТОРОГО ПЕЧАТАЕМОГО СИМВОЛА. НАПРИМЕР, ESC = CTRL/[.

        ВСЕ СИМВОЛЫ, ОТЛИЧНЫЕ ОТ ПЕРЕЧИСЛЕННЫХ НИЖЕ И  ИМЕЮЩИЕ
   КОДЫ < 40(8), ПРИ ВВОДЕ ИГНОРИРУЮТСЯ.
.C
�                             - 35 -




   --------------------------------------------------------------------
    УПРАВЛЯЮЩИЕ   I              ОПИСАНИЕ
      СИМВОЛЫ     I
   --------------------------------------------------------------------
      CR          I  ЗАКАНЧИВАЕТ ВВОД СТРОКИ С ТЕРМИНАЛА.
                  I
      LF          I  ЗАКАНЧИВАЕТ ВВОД СТРОКИ С ТЕРМИНАЛА
                  I  (АЛЬТЕРНАТИВНЫЙ ТЕРМИНАТОР).
                  I  ПРИ ВЫПОЛНЕНИИ ОПЕРАТОРА GET СОХРАНЯЕТ ЗНАЧЕНИЯ
                  I  ВВОДИМЫХ ПЕРЕМЕННЫХ (ОТКАЗ ОТ ВВОДА).
                  I
      DEL         I  СТИРАЕТ ПОСЛЕДНИЙ НАПЕЧАТАННЫЙ СИМВОЛ В ТЕКУЩЕЙ
                  I  СТРОКЕ. ПРИ ПОВТОРНОМ НАЖАТИИ КЛАВИШИ СТИРАЕТСЯ
                  I  СЛЕДУЮЩИЙ СИМВОЛ СЛЕВА.
                  I
                  I  СИСТЕМА МОЖЕТ НАХОДИТЬСЯ В ОДНОМ ИЗ ДВУХ РЕЖИМОВ:
                  I   - В ОДНОМ ИЗ НИХ КАЖДЫЙ УНИЧТОЖЕННЫЙ СИМВОЛ
                  I     УДАЛЯЕТСЯ С ЭКРАНА, И КУРСОР ПЕРЕМЕЩАЕТСЯ
                  I     НА ОДНУ ПОЗИЦИЮ НАЗАД.
                  I   - В ДРУГОМ - ПРИ ПЕРВОМ НАЖАТИИ DEL ПЕЧАТАЕТСЯ
                  I     "\" И УНИЧТОЖЕННЫЙ СИМВОЛ, ПРИ ПОСЛЕДУЮЩИХ -
                  I     УНИЧТОЖАЕМЫЕ СИМВОЛЫ В ПОРЯДКЕ ИХ УНИЧТОЖЕНИЯ,
                  I     ПОКА НЕ БУДЕТ ВВЕДЕН ПЕРВЫЙ ПРАВИЛЬНЫЙ СИМВОЛ.
                  I     ТОГДА ПЕЧАТАЕТСЯ "\" И ЭТОТ СИМВОЛ. ПРИМЕР:
                  I             ОШИКБА\АБК\БКА
                  I
      CTRL/U      I  ПОЛНОСТЬЮ УНИЧТОЖАЕТ ТЕКУЩУЮ СТРОКУ, ЧТО ДАЕТ
                  I  ВОЗМОЖНОСТЬ ВВЕСТИ ЕЕ ЗАНОВО, КОГДА ПОСИМВОЛЬНЫЕ
                  I  ИЗМЕНЕНИЯ НЕ ИМЕЮТ СМЫСЛА. НЕОБХОДИМО ПОМНИТЬ,
                  I  ЧТО ДЛЯ УНИЧТОЖЕНИЯ СТРОКИ CTRL/U НУЖНО НАЖИМАТЬ
                  I  ДО НАЖАТИЯ КЛАВИШИ CR.
                  I
      CTRL/S      I  ПРИОСТАНАВЛИВАЕТ ВЫВОД НА ТЕРМИНАЛ, ДЛЯ ТОГО,
                  I  ЧТОБЫ МОЖНО БЫЛО ПРОЧИТАТЬ НАПЕЧАТАННУЮ ИНФОРМАЦИЮ
                  I  ПРЕЖДЕ, ЧЕМ ОНА СМЕНИТСЯ НОВОЙ.
                  I
      CTRL/Q      I  ВОЗОБНОВЛЯЕТ ВЫВОД НА ТЕРМИНАЛ, ПРИОСТАНОВЛЕННЫЙ
                  I  ПРИ ПОМОЩИ CTRL/S.
                  I
      CTRL/R      I  ОТМЕНЯЕТ И РАЗРЕШАЕТ ВЫВОД НА ТЕРМИНАЛ.
                  I
      CTRL/P      I  ВЫХОД В МОНИТОР. В ЛЮБОЙ МОМЕНТ НАЖАТИЕ CTRL/P
                  I  ПРИВОДИТ К ВЫХОДУ В МОНИТОР И ПЕЧАТИ READY.
                  I
      ESC         I  ПРЕРЫВАНИЕ ПРОГРАММЫ И ПЕРЕХОД ПО ЗАДАННОМУ АДРЕСУ.
                  I  АДРЕС ЗАДАЕТСЯ ОПЕРАТОРОМ REQUEST.
                  I
      FF          I  ЗАКАНЧИВАЕТ ВВОД С ТЕРМИНАЛА С ПРИЗНАКОМ
                  I  "КОНЕЦ ФАЙЛА"
                  I
      SO          I  РУССКИЙ РЕГИСТР (*)
                  I
      SI          I  ЛАТИНСКИЙ РЕГИСТР (*)
                  I
   --------------------------------------------------------------------

   (*) ДЛЯ НЕКОТОРЫХ ТЕРМИНАЛОВ.
.C
�                             - 36 -




         4.2. МОНИТОР





       4.2.1. ОБЩЕЕ ОПИСАНИЕ МОНИТОРА



        ПОСЛЕ ЗАГРУЗКИ СИСТЕМЫ  QUASIC-2  УПРАВЛЕНИЕ  ПОЛУЧАЕТ
   МОНИТОР, КОТОРЫЙ ПЕЧАТАЕТ

   QUASIC-2 SYSTEM
   READY

   И ОЖИДАЕТ ВВОДА  СТРОКИ  С  ТЕРМИНАЛА.  ПОЛЬЗОВАТЕЛЬ  МОЖЕТ
   ВВОДИТЬ ЛИБО ИСХОДНУЮ  ПРОГРАММУ  НА  ЯЗЫКЕ  QUASIC-2  ЛИБО
   КОМАНДЫ МОНИТОРА. ЕСЛИ ВВЕДЕННАЯ СТРОКА НАЧИНАЕТСЯ С ЦИФРЫ,
   ТО МОНИТОР СЧИТАЕТ ЕЕ  СТРОКОЙ  ПРОГРАММЫ  И  ЗАПОМИНАЕТ  В
   ТЕКСТОВОМ  БУФЕРЕ.  ЕСЛИ  СТРОКА  НАЧИНАЕТСЯ  С  БУКВЫ,  ТО
   МОНИТОР СЧИТАЕТ ЕЕ  КОМАНДОЙ  И  ПЫТАЕТСЯ  ВЫПОЛНИТЬ.  ВВОД
   ЛЮБОЙ СТРОКИ ЗАКАНЧИВАЕТСЯ НАЖАТИЕМ CR.

        КОМАНДЫ ИДЕНТИФИЦИРУЮТСЯ ПО ПЕРВЫМ  6  СИМВОЛАМ.  ЕСЛИ
   КОМАНДА СОДЕРЖИТ ОШИБКУ, ТО ОНА НЕ ВЫПОЛНЯЕТСЯ  И  ВЫДАЕТСЯ
   СООБЩЕНИЕ:

          ERROR I

   ГДЕ I - КОД ОШИБКИ. СООБЩЕНИЯ ОБ ОШИБКАХ  МОГУТ  ПОЯВЛЯТЬСЯ
   ТАКЖЕ ПРИ ВВОДЕ ИСХОДНОГО ТЕКСТА. КОДЫ ОШИБОК  ПРИВЕДЕНЫ  В
   ПРИЛОЖЕНИИ 4.

        ЕСЛИ МОНИТОР НЕ РАСПОЗНАЕТ КОМАНДУ, ТО ОН ПЕРЕДАЕТ ВСЮ
   СТРОКУ ТРАНСЛЯТОРУ И ПОСЛЕ ТРАНСЛЯЦИИ ВЫПОЛНЯЕТ  ПОЛУЧЕННЫЕ
   КОМАНДЫ.   ЭТО   НАЗЫВАЕТСЯ    НЕПОСРЕДСТВЕННЫМ    РЕЖИМОМ.
   НЕПОСРЕДСТВЕННЫЙ  РЕЖИМ  ПОЗВОЛЯЕТ,  НАХОДЯСЬ  В  МОНИТОРЕ,
   ВЫПОЛНИТЬ  ЛЮБОЙ  ОПЕРАТОР  ЯЗЫКА  ИЛИ   ПОСЛЕДОВАТЕЛЬНОСТЬ
   ОПЕРАТОРОВ, РАСПОЛОЖЕННУЮ В ОДНОЙ СТРОКЕ.

        СТРОКИ  ПРОГРАММЫ  ВНОСЯТСЯ  В   ТЕКСТОВОЙ   БУФЕР   В
   СООТВЕТСТВИИ С ИХ НОМЕРАМИ: ЕСЛИ В ТЕКСТЕ УЖЕ БЫЛА СТРОКА С
   ТАКИМ НОМЕРОМ, ТО НОВАЯ СТРОКА ЗАПИШЕТСЯ НА МЕСТО СТАРОЙ, В
   ПРОТИВНОМ СЛУЧАЕ СТРОКА  ВСТАВЛЯЕТСЯ  В  ТЕКСТ  ТАК,  ЧТОБЫ
   НОМЕРА СТРОК БЫЛИ УПОРЯДОЧЕНЫ ПО ВОЗРАСТАНИЮ.

        МОНИТОР ИМЕЕТ СРЕДСТВА РЕДАКТИРОВАНИЯ ТЕКСТА.  КОМАНДА
   DEL (DELETE)  ОСУЩЕСТВЛЯЕТ  СТИРАНИЕ  СТРОК.  КОМАНДА  EDIT
   ОСУЩЕСТВЛЯЕТ КОНТЕКСТНУЮ  ЗАМЕНУ  ВНУТРИ  СТРОКИ.  НАКОНЕЦ,
   КОМАНДА REPL  (REPLACE)  ПОЗВОЛЯЕТ  ИЗМЕНЯТЬ  НОМЕРА  СТРОК
   (ПЕРЕСТАНОВКА СТРОК).

        ЗАМЕТИМ, ЧТО ПРИ СТИРАНИИ СТРОК МЕСТО В БУФЕРЕ  ТЕКСТА
   НЕ ОСВОБОЖДАЕТСЯ, ПОЭТОМУ ПРИ ВНЕСЕНИИ БОЛЬШОГО  КОЛИЧЕСТВА
   ИЗМЕНЕНИЙ МОЖЕТ ВОЗНИКНУТЬ ПЕРЕПОЛНЕНИЕ БУФЕРА ТЕКСТА, ДАЖЕ
   ЕСЛИ  ОКОНЧАТЕЛЬНАЯ  ПРОГРАММА   НЕБОЛЬШАЯ.   КОМАНДА   DEL
   ПРОИЗВОДИТ ИНИЦИАЛИЗАЦИЮ БУФЕРА ТЕКСТА, КОГДА СТИРАЕТСЯ ВСЯ
.C
�                             - 37 -




   ПРОГРАММА. ИНИЦИАЛИЗАЦИЯ БУФЕРА ТЕКСТА  ПРОИЗВОДИТСЯ  ТАКЖЕ
   ПРИ ВВОДЕ НОВОЙ ПРОГРАММЫ (КОМАНДОЙ NEW).



       4.2.2. КОМАНДЫ МОНИТОРА




   ---------
   I  NEW  I
   ---------

        СТИРАНИЕ ПРОГРАММЫ И ВВОД НОВОЙ ПРОГРАММЫ ИЗ ЗАДАННОГО
   ФАЙЛА. ФОРМАТ КОМАНДЫ: NEW FILE,  ГДЕ  FILE  -  ИМЯ  ФАЙЛА.
   ЭКВИВАЛЕНТНА DEL ALL И READ FILE.


   ----------
   I  READ  I
   ----------

        ВВОД ПРОГРАММЫ ИЗ ЗАДАННОГО ФАЙЛА И  ДОБАВЛЕНИЕ  ЕЕ  К
   БУФЕРУ ТЕКСТА. ФОРМАТ КОМАНДЫ: READ FILE, ГДЕ  FILE  -  ИМЯ
   ФАЙЛА.


   -----------
   I  WRITE  I
   -----------

        ВЫВОД ИСХОДНОЙ  ПРОГРАММЫ  В  ЗАДАННЫЙ  ФАЙЛ.  КОМАНДА
   ИМЕЕТ ВИД: WRITE FILE [K[,L]], ГДЕ FILE - ИМЯ ФАЙЛА. К И  L
   - НОМЕРА СТРОК, ОПРЕДЕЛЯЮЩИЕ, ЧТО  ВЫВОДИТЬ.  ЕСЛИ  К  И  L
   ОТСУТСТВУЮТ, ИЛИ ВМЕСТО НИХ ЗАДАНО СЛОВО ALL, ТО  ВЫВОДИТСЯ
   ВСЯ ПРОГРАММА,  ЕСЛИ  L  ОТСУТСТВУЕТ,  ВЫВОДИТСЯ  СТРОКА  С
   НОМЕРОМ К, ЕСЛИ ПРИСУТСТВУЮТ И К, И L, ТО ВЫВОДЯТСЯ  СТРОКИ
   ОТ К ДО L ВКЛЮЧИТЕЛЬНО.


   ----------
   I  LIST  I
   ----------

        ВЫВОД ИСХОДНОЙ ПРОГРАММЫ В ВИДЕ, УДОБНОМ  ДЛЯ  ЧТЕНИЯ.
   КОМАНДА ИМЕЕТ ВИД: LIST [FILE] [K[,L]]. ПАРАМЕТРЫ ИМЕЮТ ТОТ
   ЖЕ СМЫСЛ, ЧТО И В  КОМАНДЕ  WRITE.  ЕСЛИ  FILE  ОПУЩЕН,  ТО
   ПОДРАЗУМЕВАЕТСЯ 'TT'.


   ----------
   I  DEL   I
   ----------

        СТИРАНИЕ СТРОК. ФОРМАТ: DEL K[,L]. К И L ИМЕЮТ ТОТ  ЖЕ
   СМЫСЛ, ЧТО И В КОМАНДЕ WRITE.
.C
�                             - 38 -




   ----------
   I  EDIT  I
   ----------

        РЕДАКТИРОВАНИЕ ИСХОДНОЙ ПРОГРАММЫ. КОМАНДА ИМЕЕТ  ВИД:
   EDIT [K[,L]], ГДЕ K И L - НОМЕРА СТРОК (СМ. WRITE). ПО ЭТОЙ
   КОМАНДЕ  ПРОИСХОДИТ  РЕДАКТИРОВАНИЕ  СТРОК  ОТ   K   ДО   L
   ВКЛЮЧИТЕЛЬНО.

        ДЛЯ   КАЖДОЙ   СТРОКИ   ПОЛЬЗОВАТЕЛЬ   ВВОДИТ   СТРОКУ
   МОДИФИКАЦИЙ, КОТОРАЯ ИМЕЕТ ВИД:

          /<ЧТО МЕНЯТЬ>/<НА ЧТО МЕНЯТЬ>

   ЗДЕСЬ  /  -  РАЗДЕЛИТЕЛЬ,   В   КАЧЕСТВЕ   КОТОРОГО   МОЖЕТ
   ИСПОЛЬЗОВАТЬСЯ ЛЮБОЙ СИМВОЛ, КРОМЕ БУКВ И ЦИФР.

        В РЕЗУЛЬТАТЕ ФРАГМЕНТ  "ЧТО  МЕНЯТЬ"  В  РЕДАКТИРУЕМОЙ
   СТРОКЕ ЗАМЕНЯЕТСЯ НА  ФРАГМЕНТ  "НА  ЧТО  МЕНЯТЬ".  ЕСЛИ  В
   СТРОКЕ МОДИФИКАЦИЙ  ФРАГМЕНТ  "ЧТО  МЕНЯТЬ"  НЕ  ЗАДАН,  ТО
   ПРОИЗВОДИТСЯ ВСТАВКА ФРАГМЕНТА "НА  ЧТО  МЕНЯТЬ"  В  НАЧАЛО
   СТРОКИ.  ЕСЛИ  ФРАГМЕНТ  "НА  ЧТО  МЕНЯТЬ"  НЕ  ЗАДАН,   ТО
   ПРОИЗВОДИТСЯ   СТИРАНИЕ   ФРАГМЕНТА    "ЧТО    МЕНЯТЬ"    В
   РЕДАКТИРУЕМОЙ СТРОКЕ.

        РЕДАКТИРОВАНИЕ КАЖДОЙ  СТРОКИ  ПРОДОЛЖАЕТСЯ  ДО  ВВОДА
   ПУСТОЙ СТРОКИ МОДИФИКАЦИЙ, ПОСЛЕ ЧЕГО ПРОИСХОДИТ ПЕРЕХОД  К
   СЛЕДУЮЩЕЙ  СТРОКЕ.   РЕДАКТИРОВАНИЕ   ЗАКАНЧИВАЕТСЯ   ПОСЛЕ
   ОКОНЧАНИЯ РЕДАКТИРОВАНИЯ СТРОКИ  L,  ИЛИ  ПРИ  ВВОДЕ  КОНЦА
   ФАЙЛА (СИМВОЛ FF).


   ----------
   I  REPL  I
   ----------

        ПЕРЕСТАНОВКА СТРОК. КОМАНДА ИМЕЕТ ВИД: REPL  K[,L]  TO
   N, ГДЕ K, L, N - НОМЕРА СТРОК (K И L  СМ.  WRITE).  СТРОКИ,
   ИМЕЮЩИЕ НОМЕРА I С K<=I<=L, ПОЛУЧАЮТ НОМЕРА N+I-K.


   ----------
   I  BYE   I
   ----------

        ЗАКАНЧИВАЕТ  РАБОТУ  С  СИСТЕМОЙ  QUASIC-2.  ПРИ  ЭТОМ
   ЗАКРЫВАЮТСЯ ВСЕ ОТКРЫТЫЕ КАНАЛЫ.


   ---------
   I  RUN  I
   ---------

        ВЫПОЛНЕНИЕ ПРОГРАММЫ. ВЫПОЛНЕНИЕ ВОЗМОЖНО ТОЛЬКО В ТОМ
   СЛУЧАЕ,  ЕСЛИ  ПРОГРАММА  ОТТРАНСЛИРОВАНА  И  НЕ   СОДЕРЖИТ
   ОШИБОК.
.C
�                             - 39 -




   ----------
   I  COMP  I
   ----------

        ТРАНСЛЯЦИЯ  ПРОГРАММЫ.   КОМАНДА   ИМЕЕТ   ВИД:   COMP
   [<ОПЦИИ>]  [FILE].  ОПЦИИ  ЗАДАЮТ  РЕЖИМЫ  КОМПИЛЯЦИИ  (СМ.
   П.4.3.2), FILE - ИМЯ  ФАЙЛА,  В  КОТОРЫЙ  БУДЕТ  ВЫВОДИТЬСЯ
   ЛИСТИНГ. ПО УМОЛЧАНИЮ, FILE='NL'.


   ----------
   I  SHOW  I
   ----------

        ПЕЧАТЬ РАЗЛИЧНОЙ ПОЛЕЗНОЙ ИНФОРМАЦИИ.

        ФОРМАТ КОМАНДЫ:

          SHOW [FILE] [KEY] [K[,L]]

   ГДЕ FILE - ФАЙЛ ВЫВОДА. ПО УМОЛЧАНИЮ, 'TT'. KEY -  КЛЮЧЕВОЕ
   СЛОВО, ОПРЕДЕЛЯЮЩЕЕ, ЧТО ВЫВОДИТЬ:

   ID
          - НАЗВАНИЕ   СИСТЕМЫ,   ВЕРСИЮ,   ДАТУ    ПОСЛЕДНЕГО
            ИЗМЕНЕНИЯ И КОД  ПОЛЬЗОВАТЕЛЯ.  ДАТА  ВЫВОДИТСЯ  В
            УПАКОВАННОМ ВОСЬМЕРИЧНОМ  ВИДЕ,  НАПРИМЕР:  51324.
            ЭТО  ОЗНАЧАЕТ:  5-13-24  (8)  =  5-11-20  (10)   =
            85-NOV-20.

   MEM

        - ИНФОРМАЦИЮ О РАСПРЕДЕЛЕНИИ  ПАМЯТИ.  ЭТА  ИНФОРМАЦИЯ
   СОСТОИТ ИЗ 4-Х СТРОК: В ПЕРВОЙ СТРОКЕ  СОДЕРЖАТСЯ  НАЗВАНИЯ
   ОБЛАСТЕЙ  ПАМЯТИ,  ВО  ВТОРОЙ   -   ИХ   НАЧАЛЬНЫЕ   АДРЕСА
   (ВОСЬМЕРИЧНЫЕ), А В ТРЕТЕЙ  -  ИХ  РАЗМЕРЫ  (ДЕСЯТИЧНЫЕ,  В
   СЛОВАХ).  ЧЕТВЕРТАЯ  СТРОКА  СОДЕРЖИТ   РАЗМЕРЫ   СИСТЕМНОЙ
   ОБЛАСТИ И БУФЕРА ВВОДА-ВЫВОДА (ВОСЬМЕРИЧНЫЕ И ДЕСЯТИЧНЫЕ, В
   БАЙТАХ). ПОДРОБНЕЕ О РАСПРЕДЕЛЕНИИ ПАМЯТИ СМ. ГЛ. 5;

   LUN
          - ИНФОРМАЦИЮ О ЛОГИЧЕСКИХ  КАНАЛАХ  (СМ.  ПРИЛОЖЕНИЕ
            3);

   CODE
          - КОМАНДЫ,   В   КОТОРЫЕ   ТРАНСЛИРУЕТСЯ    ИСХОДНАЯ
            ПРОГРАММА;

   DATA
          - ТАБЛИЦУ РАСПРЕДЕЛЕНИЯ В ПАМЯТИ ПЕРЕМЕННЫХ;

   OBJ
          - CODE + DATA;

   SYS
          - ТАБЛИЦУ   РАСПРЕДЕЛЕНИЯ    СИСТЕМНЫХ    ПЕРЕМЕННЫХ
            (ОПРЕДЕЛЕННЫХ В ЛЮБОЙ ПРОГРАММЕ).
.C
�                             - 40 -




   ПО  УМОЛЧАНИЮ,  KEY=ID.  K,L  -   НОМЕРА   СТРОК   ИСХОДНОЙ
   ПРОГРАММЫ, ДЛЯ КОТОРЫХ НУЖНО  ВЫВОДИТЬ  КОМАНДЫ  (ДОПУСТИМЫ
   ТОЛЬКО  С  КЛЮЧЕВЫМ  СЛОВОМ  CODE).   ПО   УМОЛЧАНИЮ,   ВСЯ
   ПРОГРАММА.


        З_А_М_Е_Ч_А_Н_И_Е. ИНФОРМАЦИЯ  ВЫВОДИМАЯ  ПО  КЛЮЧЕВЫМ
   СЛОВАМ  DATA  И  SYS  СОДЕРЖИТ  ДЛЯ  КАЖДОГО  ОБ'ЕКТА   ЕГО
   ХАРАКТЕРИСТИКУ,  СОСТОЯЩУЮ  ИЗ  4  ПОЗИЦИЙ.  1-АЯ   ПОЗИЦИЯ
   ОПРЕДЕЛЯЕТ ТИП ОБ'ЕКТА (I - INTEGER, R - REAL, B - BYTE,  C
   - CAMAC), 2-АЯ - ВИД ОБ'ЕКТА (P - ПРОЦЕДУРА, F - ФУНКЦИЯ  ,
   ПРОБЕЛ - ПЕРЕМЕННАЯ), В 3-ЕЙ ПОЗИЦИИ  СОДЕРЖИТСЯ  БУКВА  E,
   ЕСЛИ ОБ'ЕКТ ВНЕШНИЙ, В 4-0Й - БУКВА F, ЕСЛИ ПРОЦЕДУРА ИМЕЕТ
   ФОРТРАНОВСКИЕ СОГЛАШЕНИЯ О СВЯЗЯХ.


   ---------
   I  SET  I
   ---------

        УСТАНАВЛИВАЕТ ГРАНИЦЫ РАБОЧЕЙ ОБЛАСТИ QUASIC-2, РАЗМЕР
   СИСТЕМНОЙ ОБЛАСТИ И БУФЕРА  ВВОДА-ВЫВОДА  (СМ.  ГЛ.  5),  А
   ТАКЖЕ ТИП ТЕРМИНАЛА. КОМАНДА ЗАПИСЫВАЕТСЯ ТАК:

          SET KEY VALUE

   ГДЕ KEY - КЛЮЧЕВОЕ СЛОВО:

   MEMBOT
          - НАЧАЛЬНЫЙ АДРЕС РАБОЧЕЙ ОБЛАСТИ;

   MEMTOP
          - КОНЕЧНЫЙ АДРЕС РАБОЧЕЙ ОБЛАСТИ;

   AREA
          - РАЗМЕР СИСТЕМНОЙ ОБЛАСТИ;

   BUFF
          - РАЗМЕР БУФЕРА ВВОДА-ВЫВОДА;

   TERM
          - ТИП ТЕРМИНАЛА. В НАСТОЯЩЕЙ ВЕРСИИ ДОПУСТИМЫ ТОЛЬКО
            2 ЗНАЧЕНИЯ: 0 И 2. ТИП 2  ОЗНАЧАЕТ,  ЧТО  ТЕРМИНАЛ
            ПРАВИЛЬНО ОТРАБАТЫВАЕТ СИМВОЛ ВОЗВРАТ НА ШАГ  (КОД
            10(8)).

   VALUE - ЗНАЧЕНИЕ (В БАЙТАХ, ВОСЬМЕРИЧНOЕ). ВМЕСТО  ЗНАЧЕНИЯ
   МОЖНО ЗАДАТЬ *, ЧТО ОЗНАЧАЕТ ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ.


        З_А_М_Е_Ч_А_Н_И_Е. КОМАНДА  SET  С  КЛЮЧЕВЫМИ  СЛОВАМИ
   MEMBOT, MEMTOP, AREA СТИРАЕТ ИСХОДНУЮ ПРОГРАММУ.


        З_А_М_Е_Ч_А_Н_И_Е.  УСТАНАВЛИВАЕМЫЕ  ЗНАЧЕНИЯ   ДОЛЖНЫ
   НАХОДИТЬСЯ В НЕКОТОРЫХ ДОПУСТИМЫХ ГРАНИЦАХ.
.C
�                             - 41 -




       4.2.3. НЕПОСРЕДСТВЕННЫЙ РЕЖИМ



        КАК  УЖЕ  УКАЗЫВАЛОСЬ,  ЕСЛИ  МОНИТОР  НЕ   РАСПОЗНАЕТ
   КОМАНДУ, ОН ПЕРЕДАЕТ СТРОКУ КОМПИЛЯТОРУ И  ЗАТЕМ  ВЫПОЛНЯЕТ
   ЕЕ. ЭТО ПОЗВОЛЯЕТ, НАХОДЯСЬ  В  МОНИТОРЕ,  ВЫПОЛНИТЬ  ЛЮБОЙ
   ОПЕРАТОР   ЯЗЫКА   ИЛИ    ПОСЛЕДОВАТЕЛЬНОСТЬ    ОПЕРАТОРОВ,
   РАСПОЛОЖЕННУЮ В ОДНОЙ СТРОКЕ. ЭТА  ВОЗМОЖНОСТЬ,  НАЗЫВАЕМАЯ
   НЕПОСРЕДСТВЕННЫМ РЕЖИМОМ,  ОСОБЕННО  ПОЛЕЗНА  ПРИ  ОТЛАДКЕ.
   НАПРИМЕР, ОНА ПОЗВОЛЯЕТ  НАПЕЧАТАТЬ  (ОПЕРАТОРОМ  PUT)  ИЛИ
   ИЗМЕНИТЬ   (ОПЕРАТОРОМ   ПРИСВАИВАНИЯ)   ЛЮБЫЕ   ПЕРЕМЕННЫЕ
   ПРОГРАММЫ, А  ТАКЖЕ  ПЕРЕЙТИ  (ОПЕРАТОРОМ  GOTO)  НА  ЛЮБУЮ
   СТРОКУ ПРОГРАММЫ.

        НЕПОСРЕДСТВЕННЫЙ РЕЖИМ ИМЕЕТ РЯД ОГРАНИЧЕНИЙ,  КОТОРЫЕ
   РАССМАТРИВАЮТСЯ НИЖЕ.

        В   НЕПОСРЕДСТВЕННОМ   РЕЖИМЕ   НЕЛЬЗЯ    ИСПОЛЬЗОВАТЬ
   ОПЕРАТОРЫ PROC БЕЗ АДРЕСА И ON.

        В  НЕПОСРЕДСТВЕННОМ  РЕЖИМЕ  НЕ  РАЗРЕШАЕТСЯ   НЕЯВНОЕ
   ОПИСАНИЕ ПЕРЕМЕННЫХ.

        ЕСЛИ В НЕПОСРЕДСТВЕННОМ РЕЖИМЕ ВЫПОЛНЯЕТСЯ ПЕРЕХОД  НА
   ПРОГРАММУ  ПОЛЬЗОВАТЕЛЯ,  ТО  ЭТА  ПРОГРАММА  ДОЛЖНА   БЫТЬ
   ОТТРАНСЛИРОВАНА И НЕ СОДЕРЖАТЬ ОШИБОК.




         4.3. КОМПИЛЯЦИЯ, ВЫПОЛНЕНИЕ И ОТЛАДКА





       4.3.1. КОМПИЛЯЦИЯ ПРОГРАММЫ



        ДЛЯ  ТОГО   ЧТОБЫ   ВЫПОЛНИТЬ   ПРОГРАММУ,   ЕЕ   НАДО
   ПРЕДВАРИТЕЛЬНО  СКОМПИЛИРОВАТЬ.  КОМПИЛЯЦИЯ  ОСУЩЕСТВЛЯЕТСЯ
   ЛИБО ЯВНО КОМАНДОЙ COMPILE,  ЛИБО  НЕЯВНО  ПО  КОМАНДЕ  RUN
   (ЕСЛИ ПРОГРАММА НЕ БЫЛА РАНЕЕ СКОМПИЛИРОВАНА).

        В  ПРОЦЕССЕ  КОМПИЛЯЦИИ  МОЖЕТ  БЫТЬ  СОЗДАН   ЛИСТИНГ
   ПРОГРАММЫ. ЕСЛИ КАКАЯ-ЛИБО СТРОКА СОДЕРЖИТ ОШИБКУ, ТО ВСЛЕД
   ЗА ЭТОЙ СТРОКОЙ ВЫДАЕТСЯ ЗНАК ^, УКАЗЫВАЮЩИЙ МЕСТОПОЛОЖЕНИЕ
   ОШИБКИ И СООБЩЕНИЕ

          ERROR   I

   ГДЕ I - КОД ОШИБКИ. ОТМЕТИМ, ЧТО ^ УКАЗЫВАЕТ  НЕ  ТОЧНО  НА
   ОШИБКУ; МОЖНО ЛИШЬ  УТВЕРЖДАТЬ,  ЧТО  ОШИБКА  НАХОДИТСЯ  НЕ
   ПРАВЕЕ ^. ЕСЛИ В ОПЕРАТОРЕ ОБНАРУЖЕНА ХОТЯ БЫ ОДНА  ОШИБКА,
   ТО ЭТОТ ОПЕРАТОР ИГНОРИРУЕТСЯ.
.C
�                             - 42 -




        В КОНЦЕ ЛИСТИНГА МОГУТ ПОЯВИТЬСЯ СООБЩЕНИЯ ОБ  ОШИБКАХ
   ВИДА

          ERROR   I AT LINE       N

   ГОВОРЯЩИЕ О ТОМ, ЧТО В СТРОКЕ N ИМЕЕТСЯ ОШИБКА. СПИСОК ВСЕХ
   КОДОВ ОШИБОК ПРИВЕДЕН В ПРИЛОЖЕНИИ 4.

        ПРИ КОМПИЛЯЦИИ МОЖЕТ ПРОИЗОЙТИ ПЕРЕПОЛНЕНИЕ ВНУТРЕННИХ
   ТАБЛИЦ ТРАНСЛЯТОРА. В ЭТИХ СЛУЧАЯХ ВЫДАЕТСЯ СООБЩЕНИЕ:

          SYS ERR I

   ГДЕ I - КОД  СООБЩЕНИЯ.  СПИСОК  ЭТИХ  КОДОВ  ПРИВОДИТСЯ  В
   ПРИЛОЖЕНИИ 4.



       4.3.2. РЕЖИМЫ КОМПИЛЯЦИЯ



        РЕЖИМЫ КОМПИЛЯЦИИ УСТАНАВЛИВАЮТСЯ  ОПЦИЯМИ,  ЗАДАННЫМИ
   ЛИБО В КОМАНДЕ COMP, ЛИБО  В  САМОЙ  ПРОГРАММЕ  ПРИ  ПОМОЩИ
   ПСЕВДО-КОММЕНТАРИЕВ.  ПСЕВДО-КОММЕНТАРИИ  ПОЗВОЛЯЮТ  МЕНЯТЬ
   РЕЖИМЫ ПО ХОДУ ПРОГРАММЫ.

        ИМЕЮТСЯ СЛЕДУЮЩИЕ РЕЖИМЫ:

   T
          - ТРАНСЛИРОВАТЬ ПРОГРАММУ. ПО УМОЛЧАНИЮ, +T;

   L
          - ВЫВОДИТЬ ЛИСТИНГ ПРОГРАММЫ. ПО УМОЛЧАНИЮ, +L;

   A
          - РАЗРЕШИТЬ   НЕЯВНОЕ   ОПИСАНИЕ   ПЕРЕМЕННЫХ.    ПО
            УМОЛЧАНИЮ, +A;

   S
          - РАЗРЕШИТЬ ВКЛЮЧЕНИЕ ВСЕХ ИМЕН В СИСТЕМНУЮ ТАБЛИЦУ.
            ПО УМОЛЧАНИЮ, -S;

   O
          - РАЗРЕШИТЬ ПЕРЕОПРЕДЕЛЕНИЕ ПРОЦЕДУР. ПО  УМОЛЧАНИЮ,
            -O;

   F
          - ФОРТРАНОВСКИЕ СОГЛАШЕНИЯ О СВЯЗЯХ.  ПО  УМОЛЧАНИЮ,
            -F.
.C
�                             - 43 -




       4.3.3. ВЫПОЛНЕНИЕ И ОТЛАДКА



        ЕСЛИ ПРОГРАММА УСПЕШНО ОТТРАНСЛИРОВАНА, ТО  ОНА  МОЖЕТ
   БЫТЬ ВЫПОЛНЕНА. ВЫПОЛНЕНИЕ ОСУЩЕСТВЛЯЕТСЯ КОМАНДОЙ МОНИТОРА
   RUN. В ХОДЕ ВЫПОЛНЕНИЯ ПРОГРАММЫ МОГУТ ВОЗНИКАТЬ ОШИБКИ,  О
   КОТОРЫХ СИСТЕМА ВЫДАЕТ СООБЩЕНИЯ НА ТЕРМИНАЛ. ЭТИ СООБЩЕНИЯ
   ОПИСАНЫ НИЖЕ. В ЛЮБОЙ МОМЕНТ  ПОЛЬЗОВАТЕЛЬ  МОЖЕТ  ПРЕРВАТЬ
   ВЫПОЛНЕНИЕ  ПРОГРАММЫ,  ВВЕДЯ  CTRL/P.   УПРАВЛЕНИЕ   БУДЕТ
   ПЕРЕДАНО МОНИТОРУ.

        ДЛЯ    ОТЛАДКИ    ПРОГРАММЫ    МОЖЕТ    ИСПОЛЬЗОВАТЬСЯ
   НЕПОСРЕДСТВЕННЫЙ РЕЖИМ.



         4.4. СООБЩЕНИЯ СИСТЕМЫ



        СООБЩЕНИЯ СИСТЕМЫ ИМЕЮТ СЛЕДУЮЩИЙ ФОРМАТ:

          СООБЩЕНИЕ AT LINE N PC=A

   ГДЕ N - НОМЕР СТРОКИ, A - ВОСЬМЕРИЧНЫЙ АДРЕС, ОПРЕДЕЛЯЮЩИЕ,
   ГДЕ ПРОИЗОШЛА ОШИБКА. ЕСЛИ ОШИБКА ПРОИЗОШЛА НЕ В  ПРОГРАММЕ
   ПОЛЬЗОВАТЕЛЯ, ТО ВМЕСТО N ПЕЧАТАЕТСЯ  ******.  ЕСЛИ  ОШИБКА
   ПРОИЗОШЛА  В  НЕПОСРЕДСТВЕННОМ  РЕЖИМЕ,  ТО  N=0.  АДРЕС  A
   БЕРЕТСЯ ИЗ СЧЕТЧИКА ИНСТРУКЦИЙ (PC) И ПОЭТОМУ НА  2  БОЛЬШЕ
   ТОГО АДРЕСА, ГДЕ ПРОИЗОШЛА ОШИБКА.

        СООБЩЕНИЯ ОБ ОШИБКАХ ОБ'ЕКТНОЙ ПРОГРАММЫ ИМЕЮТ ВИД:

          ERROR I AT LINE N PC=A

   ГДЕ I - КОД ОШИБКИ (I >= 100). СМ. ПРИЛОЖЕНИЕ 5.

        СООБЩЕНИЯ ОБ ОШИБКАХ ВВОДА-ВЫВОДА ИМЕЮТ ВИД:

          I/O ERROR I AT LINE N PC=A

   ГДЕ I - КОД ОШИБКИ. СМ. ПРИЛОЖЕНИЕ 4.

        ЕСЛИ ПРОИСХОДИТ ЛОВУШКА ПО ВЕКТОРУ V=4 ИЛИ 10,  ТО  НА
   ТЕРМИНАЛ ВЫДАЕТСЯ СООБЩЕНИЕ:

          TRAP TO V AT LINE N PC=A
.C
�                             - 44 -




                    5. ОБ УСТРОЙСТВЕ СИСТЕМЫ






         5.1. РАСПРЕДЕЛЕНИЕ ПАМЯТИ



        QUASIC-2 ИСПОЛЬЗУЕТ ПАМЯТЬ СЛЕДУЮЩИМ ОБРАЗОМ:

          I-----------------------I       <---- MEMT0
          I    НЕ ИСПОЛЬЗУЕТСЯ    I
          I        СИСТЕМОЙ       I
          I       (UNUSED)        I
          I-----------------------I       <---- MEMTOP
          I     ОБЛАСТЬ ДАННЫХ    I
          I       (DATA)          I
          I-----------------------I       <---- BOTTOM
          I   СВОБОДНАЯ ОБЛАСТЬ   I
          I       (FREE)          I
          I-----------------------I       <---- TOP
          I  ОБ'ЕКТНАЯ ПРОГРАММА  I
          I       (OBJECT)        I
          I-----------------------I       <---- OBJECT
          I    ИСХОДНЫЙ ТЕКСТ     I
          I       (TEXT)          I
          I-----------------------I       <---- TEXT
          I   СИСТЕМНАЯ ОБЛАСТЬ   I
          I       (AREA)          I
          I-----------------------I       <---- MEMBOT
          I    НЕ ИСПОЛЬЗУЕТСЯ    I
          I        СИСТЕМОЙ       I
          I       (UNUSED)        I
          I-----------------------I       <---- HLIMIT
          I     С И С Т Е М А     I
          I       (SYSTEM)        I
  $$$$SP  I-----------------------I       <---- MEMB0
          I       СТЕК            I
          I-----------------------I

        СИСТЕМА  QUASIC-2  РАСПОЛАГАЕТСЯ  ПО  МЛАДШИМ  АДРЕСАМ
   ПАМЯТИ И ЗАНИМАЕТ ПРИМЕРНО 8 - 12 К СЛОВ (В ЗАВИСИМОСТИ  ОТ
   ТОГО, ЧТО ВКЛЮЧЕНО ПРИ ГЕНЕРАЦИИ). ПОСЛЕ  ЗАГРУЗКИ  СИСТЕМЫ
   ПРОИЗВОДИТСЯ АВТОМАТИЧЕСКОЕ ОПРЕДЕЛЕНИЕ РАЗМЕРА ОПЕРАТИВНОЙ
   ПАМЯТИ ЭВМ.  ВЕРХНЯЯ  ГРАНИЦА  ПАМЯТИ  ЗАНОСИТСЯ  В  ЯЧЕЙКИ
   MEMTOP  И  MEMT0.  АДРЕС  ПЕРВОЙ  СВОБОДНОЙ  ЯЧЕЙКИ   ПОСЛЕ
   QUASIC-2 ЗАНОСИТСЯ В ЯЧЕЙКУ MEMBOT.  ОБЛАСТЬ  ПАМЯТИ  МЕЖДУ
   АДРЕСАМИ, ЗАПИСАННЫМИ В MEMBOT И MEMTOP,  ЯВЛЯЕТСЯ  РАБОЧЕЙ
   ДЛЯ СИСТЕМЫ QUASIC-2.  ГРАНИЦЫ  ЭТОЙ  ОБЛАСТИ  ПОЛЬЗОВАТЕЛЬ
   МОЖЕТ ИЗМЕНИТЬ КОМАНДОЙ SET.

        В НАЧАЛЕ РАБОЧЕЙ ОБЛАСТИ НАХОДИТСЯ СИСТЕМНАЯ  ОБЛАСТЬ,
   В  КОТОРОЙ  РАЗМЕЩАЮТСЯ  БУФЕР   ВВОДА-ВЫВОДА   И   ТАБЛИЦЫ
   КОМПИЛЯЦИИ. РАЗМЕРЫ СИСТЕМНОЙ ОБЛАСТИ И БУФЕРА ТАКЖЕ  МОГУТ
   БЫТЬ ИЗМЕНЕНЫ КОМАНДОЙ SET.
.C
�                             - 45 -




        ИСХОДНАЯ ПРОГРАММА РАСПОЛАГАЕТСЯ СРАЗУ ПОСЛЕ СИСТЕМНОЙ
   ОБЛАСТИ. ОБ'ЕКТНАЯ ПРОГРАММА РАСПОЛАГАЕТСЯ ПОСЛЕ  ИСХОДНОЙ.
   АДРЕС НАЧАЛА ИСХОДНОЙ ПРОГРАММЫ СОДЕРЖИТСЯ В  ЯЧЕЙКЕ  TEXT.
   АДРЕС НАЧАЛА ОБ'ЕКТНОЙ ПРОГРАММЫ - В ЯЧЕЙКЕ  OBJECT.  АДРЕС
   ПЕРВОЙ   СВОБОДНОЙ   ЯЧЕЙКИ   ПОСЛЕ   ОБ'ЕКТНОЙ   ПРОГРАММЫ
   СОДЕРЖИТСЯ В ЯЧЕЙКЕ ТОР.

        ДАННЫЕ  ПРОГРАММЫ  ПОЛЬЗОВАТЕЛЯ   РАЗМЕЩАЮТСЯ   ВВЕРХУ
   РАБОЧЕЙ ОБЛАСТИ НАВСТРЕЧУ КОМАНДАМ.  МЛАДШИЙ  АДРЕС  ДАННЫХ
   СОДЕРЖИТСЯ В ЯЧЕЙКИ BOTTOM. МЕЖДУ  ОБ'ЕКТНОЙ  ПРОГРАММОЙ  И
   ДАННЫМИ МОЖЕТ НАХОДИТСЯ СВОБОДНАЯ ОБЛАСТЬ ПАМЯТИ.

        КАК   УЖЕ    УКАЗЫВАЛОСЬ    (СМ.    П.4.2.1),    ПОСЛЕ
   РЕДАКТИРОВАНИЯ ИСХОДНЫЙ ТЕКСТ МОЖЕТ ЗАНИМАТЬ БОЛЬШЕ МЕСТА В
   ПАМЯТИ, ЧЕМ ЕМУ НА САМОМ  ДЕЛЕ  ТРЕБУЕТСЯ.  СООТВЕТСТВЕННО,
   МЕНЬШЕ МЕСТА ОСТАНЕТСЯ  ДЛЯ  ОБ'ЕКТНОЙ  ПРОГРАММЫ.  СЛЕДУЕТ
   ИМЕТЬ  В  ВИДУ,  ЧТО  РАЗМЕР  ОБЛАСТИ  TEXT,   ПОКАЗЫВАЕМЫЙ
   КОМАНДОЙ SHOW, ВКЛЮЧАЕТ ВСЕ ПУСТЫЕ МЕСТА В  БУФЕРЕ  ТЕКСТА.
   ПОСЛЕ ПОВТОРНОГО ВВОДА  ИСХОДНОЙ  ПРОГРАММЫ  РАЗМЕР  ТЕКСТА
   МОЖЕТ   УМЕНЬШИТЬСЯ,   А   РАЗМЕР   СВОБОДНОЙ   ОБЛАСТИ   -
   УВЕЛИЧИТЬСЯ.

        ОБЛАСТИ      ПАМЯТИ,      НЕИСПОЛЬЗУЕМЫЕ      СИСТЕМОЙ
   (HLIMIT-MEMBOT, MEMTOP-MEMT0), ПО УМОЛЧАНИЮ ИМЕЮТ РАЗМЕР 0.
   УСТАНОВИВ ЗНАЧЕНИЯ MEMBOT ИЛИ MEMTOP  КОМАНДОЙ  SET,  МОЖНО
   УВЕЛИЧИТЬ  РАЗМЕР  ЭТИХ  ОБЛАСТЕЙ.   ЭТИ   ОБЛАСТИ   ПАМЯТИ
   ПРЕДНАЗНАЧЕНЫ ДЛЯ РАЗМЕЩЕНИЯ ВНЕШНИХ ПРОЦЕДУР.



         5.2. СВЯЗЬ С ВНЕШНИМИ ПРОЦЕДУРАМИ



        ВНЕШНИЕ ПРОЦЕДУРЫ  ДОЛЖНЫ  БЫТЬ  ЗАГРУЖЕНЫ  В  ОБЛАСТЬ
   ПАМЯТИ, НЕИСПОЛЬЗУЕМУЮ СИСТЕМОЙ И ОПИСАНЫ ОПЕРАТОРОМ  PROC.
   ВОЗМОЖНЫ ДВА СПОСОБА ОПИСАНИЯ ВНЕШНИХ ПРОЦЕДУР: В РЕЖИМЕ -S
   (ПО УМОЛЧАНИЮ)  И  В  РЕЖИМЕ  +S.  В  РЕЖИМЕ  -S  ПРОЦЕДУРЫ
   ВКЛЮЧАЮТСЯ  В  ПОЛЬЗОВАТЕЛЬСКУЮ  ТАБЛИЦУ  ИМЕН  И  ИЗВЕСТНЫ
   ТОЛЬКО ВО ВРЕМЯ ДАННОЙ ТРАНСЛЯЦИИ. В  РЕЖИМЕ  +S  ПРОЦЕДУРЫ
   ВКЛЮЧАЮТСЯ В СИСТЕМНУЮ ТАБЛИЦУ ИМЕН И СТАНОВЯТСЯ ИЗВЕСТНЫМИ
   ДЛЯ  ВСЕХ  ПОСЛЕДУЮЩИХ  ТРАНСЛЯЦИЙ.  РЕЖИМ   +O   ПОЗВОЛЯЕТ
   ЗАМЕНЯТЬ ПРОЦЕДУРУ В СИСТЕМНОЙ ТАБЛИЦЕ.

        В  QUASIC-2  ИМЕЮТСЯ  ДВА  СОГЛАШЕНИЯ   О   СВЯЗЯХ   С
   ПРОЦЕДУРАМИ:  ВНУТРЕННИЕ  И  ВНЕШНИЕ.  ВНЕШНИЕ   СОГЛАШЕНИЯ
   СОВПАДАЮТ  С  ФОРТРАНОВСКИМИ.  ПРОЦЕДУРА  С  ФОРТРАНОВСКИМИ
   СОГЛАШЕНИЯМИ О СВЯЗЯХ ДОЛЖНА  БЫТЬ  ОПИСАНА  В  РЕЖИМЕ  +F.
   ОПИШЕМ ВНЕШНИЕ (ФОРТРАНОВСКИЕ) СОГЛАШЕНИЯХ О СВЯЗЯХ.

        ПРОЦЕДУРА ДОЛЖНА ЗАКАНЧИВАТЬСЯ ИНСТРУКЦИЕЙ

           RTS PC

        ПРИ  ВХОДЕ  В  ПРОЦЕДУРУ  РЕГИСТР  R5  СОДЕРЖИТ  АДРЕС
   ТАБЛИЦЫ, В КОТОРОЙ СОДЕРЖИТСЯ:
.C
�                             - 46 -




          I-------------------------------I
          I НЕ ОПРЕДЕЛЕН  I       N       I
          I-------------------------------I
          I       АДРЕС 1-ОГО ПАРАМЕТРА   I
          I-------------------------------I
          .                               .
          .                               .
          .                               .
          I-------------------------------I
          I       АДРЕС N-ОГО ПАРАМЕТРА   I
          I-------------------------------I

   ГДЕ N - КОЛИЧЕСТВО ПАРАМЕТРОВ.

        ПРИ  ВЫХОДЕ  ИЗ  ПРОЦЕДУРЫ  ЗНАЧЕНИЕ  R5  БЕЗРАЗЛИЧНО.
   ПРОЦЕДУРА МОЖЕТ ИСПОЛЬЗОВАТЬ ЛЮБЫЕ РЕГИСТРЫ.
.C
�                             - 47 -




                                              ПРИЛОЖЕНИЕ  1



                       СПЕЦИАЛЬНЫЕ СИМВОЛЫ




   ASCII   ГОСТ   КОД     НАЗВАНИЕ             ФУНКЦИЯ
   -----   ----   ---     --------             -------

   LF      ПС     12      ПЕРЕВОД СТРОКИ       КОНЕЦ ВВОДА
   FF      ПФ     14      ПЕРЕВОД ФОРМАТА      КОНЕЦ ФАЙЛА
   CR      ВК     15      ВОЗВРАТ КАРЕТКИ      КОНЕЦ ВВОДА
   SО      РУС    16      РУССКИЙ РЕГИСТР
   SI      ЛАТ    17      ЛАТИНСКИЙ РЕГИСТР
   CTRL/P         20                           ПЕРЕЗАПУСК СИСТЕМЫ
   CTRL/Q         21                           ПРОДОЛЖЕНИЕ ВЫВОДА
   CTRL/R         22                           ОТМЕНА ВЫВОДА
   CTRL/S         23                           ПРИОСТАНОВКА ВЫВОДА
   CTRL/U         25                           СТИРАНИЕ СТРОКИ
   ESC     АР2    33                           ПРЕРЫВАНИЕ
   DEL     ЗБ     177     СТИРАНИЕ СИМВОЛА     СТИРАНИЕ СИМВОЛА


        З_А_М_Е_Ч_А_Н_И_Е.  CTRL/Х  ОБОЗНАЧАЕТ   ОДНОВРЕМЕННОЕ
   НАЖАТИЕ КЛАВИШ CTRL И Х НА КЛАВИАТУРЕ ТЕРМИНАЛА.
.C
�                             - 48 -




                                              ПРИЛОЖЕНИЕ  2



                  ВЕКТОРА И РЕГИСТРЫ УСТРОЙСТВ





   НАЗВАНИЕ УСТРОЙСТВА    ИМЯ     ВЕКТОР  АДРЕС РЕГИСТРА
   -------------------    ---     ------  --------------

   ВВОД С ТЕРМИНАЛА       TT       60     177560
   ВЫВОД НА ТЕРМИНАЛ      ТТ       64     177564
   ВВОД С ПЕРФОЛЕНТЫ      PR       70     177550
   ВЫВОД НА ПЕРФОЛЕНТУ    PP       74     177554
   ВЫВОД НА ПЕЧАТЬ        LP      200     177514

   ТАЙМЕР                         100     (177546)

.C
�                             - 49 -




                                              ПРИЛОЖЕНИЕ  3



                СТАТУСНАЯ ИНФОРМАЦИЯ ВВОДА-ВЫВОДА




        СЛУЖЕБНАЯ  ПЕРЕМЕННАЯ  $IOSW  ОБЕСПЕЧИВАЕТ  ДОСТУП  ИЗ
   ПРОГРАММЫ  НА  QUASIC-2  К  НЕКОТОРЫМ  ВНУТРЕННИМ   ЯЧЕЙКАМ
   СИСТЕМЫ QUASIC-2:

          $IOSW(0)        - СЛОВО СОСТОЯНИЯ ВВОДА-ВЫВОДА
          $IOSW(1)        - КОД ЗАВЕРШЕНИЯ ВВОДА-ВЫВОДА
          $IOSW(2)        - ПОСЛЕДНИЙ ВВЕДЕННЫЙ С ТЕРМИНАЛА СИМВОЛ
          $IOSW(3)        -
          $IOSW(4)        - КОЛИЧЕСТВО СИМВОЛОВ, ВВЕДЕННОЕ
                           ПОСЛЕДНЕЙ ОПЕРАЦИЕЙ ВВОДА

        СЛОВО  СОСТОЯНИЯ   ВВОДА-ВЫВОДА   СОДЕРЖИТ   СЛЕДУЮЩУЮ
   ИНФОРМАЦИЮ:

   БИТ    ЗНАЧЕНИЕ
   ---    --------

   15     СТИРАНИЕ В РЕЖИМЕ ЭКРАНА
   14     ПРИОСТАНОВКА ВЫВОДА НА ТЕРМИНАЛ
   13     ПРОПУСК ВЫВОДА НА ТЕРМИНАЛ
   12     ИДЕТ СТИРАНИЕ СИМВОЛОВ
   11
   10     ВВЕДЕН <CTRL/C>
    9     ВВЕДЕН СИМВОЛ С КЛАВИАТУРЫ
    8     ПРОИСХОДИТ ВВОД-ВЫВОД
    7
    6
    5     БУФЕР ПО УМОЛЧАНИЮ ЗАДАН
    4     КАНАЛ ПО УМОЛЧАНИЮ ЗАДАН
    3     ТИП ТЕРМИНАЛА ЗАДАН
    2     ПЕРЕХОД ПО ОШИБКЕ РАЗРЕШЕН
    1     ПЕРЕХОД ПО ESC РАЗРЕШЕН
    0     РЕСТАРТ РАЗРЕШЕН


        КОДЫ ЗАВЕРШЕНИЯ ВВОДА-ВЫВОДА >=  0  ОЗНАЧАЮТ  УСПЕШНОЕ
   ЗАВЕРШЕНИЕ, КОДЫ < 0 ОЗНАЧАЮТ  ОШИБКУ.  ВОЗМОЖНЫ  СЛЕДУЮЩИЕ
   ЗНАЧЕНИЯ:

   КОД    ЗНАЧЕНИЕ
   ---    --------

     1    ВВЕДЕН АЛЬТЕРНАТИВНЫЙ ТЕРМИНАТОР
     0    НОРМАЛЬНОЕ ЗАВЕРШЕНИЕ
    -1    IOX ЗАНЯТ
    -2    НЕПРАВИЛЬНАЯ ФУНКЦИЯ
    -3    НЕПРАВИЛЬНЫЙ ЛОГИЧЕСКИЙ НОМЕР
    -4    НЕПРАВИЛЬНОЕ ИМЯ УСТРОЙСТВА
    -5    ФАЙЛ ПО ДАННОМУ ЛОГИЧЕСКОМУ НОМЕРУ НЕ ОТКРЫТ
.C
�                             - 50 -




    -6    ЛОГИЧЕСКИЙ НОМЕР УЖЕ ЗАНЯТ
    -7    НЕСООТВЕТСТВИЕ УСТРОЙСТВА ОПЕРАЦИИ
    -8    ПЕРЕПОЛНЕНИЕ БУФЕРА
    -9    КОНЕЦ ФАЙЛА
   -10    ОШИБКА ОТКРЫТИЯ ФАЙЛА
   -11    ОШИБКА ЗАКРЫТИЯ
   -12    ОШИБКА ЧТЕНИЯ
   -13    ОШИБКА ЗАПИСИ


        В КОМАНДЕ SHOW LUN ВЫВОДИТСЯ СЛОВО  СОСТОЯНИЯ  КАНАЛА,
   КОТОРОЕ СОДЕРЖИТ СЛЕДУЮЩУЮ ИНФОРМАЦИЮ:

   БИТ    ЗНАЧЕНИЕ
   ---    --------
   15
   14
   13     ГЛОБАЛЬНЫЙ КАНАЛ
   12     РЕЖИМ 8 БИТ
   11     НОВЫЙ ФАЙЛ
   10
    9     ВВОД РАЗРЕШЕН
    8     ВЫВОД РАЗРЕШЕН
    7     КАНАЛ ОТКРЫТ
    6     ПРОЧИТАН КОНЕЦ ФАЙЛА
    5     ПРОЧИТАН КОНЕЦ СТРОКИ
    4     АЛЬТЕРНАТИВНЫЙ ТЕРМИНАТОР
    3
    2
    1     УСТРОЙСТВО С ФАЙЛОВОЙ СТРУКТУРОЙ
    0     ТЕРМИНАЛ
.C
�                             - 51 -




                                              ПРИЛОЖЕНИЕ  4



                           КОДЫ ОШИБОК




  1       НЕПРАВИЛЬНАЯ ЗАПИСЬ ЧИСЛА ИЛИ КОНСТАНТЫ
  2       НЕСУЩЕСТВУЮЩИЙ ОПЕРАТОР
  3       НЕПРАВИЛЬНАЯ ЗАПИСЬ ОПЕРАТОРА
  4       НЕПРАВИЛЬНАЯ ЗАПИСЬ ПЕРЕМЕННОЙ
  5       ПЕРЕМЕННАЯ НЕ ОПИСАНА
  6       ПЕРЕМЕННАЯ ОПИСАНА ДВАЖДЫ
  7       НЕПРАВИЛЬНАЯ ЗАПИСЬ АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ
  8       НЕПРАВИЛЬНЫЙ ИНДЕКС
  9       НЕСУШЕСТВУЮЩЕЕ ОТНОШЕНИЕ
  10      НЕДОПУСТИМЫЕ ПАРАМЕТРЫ В ОПЕРАТОРЕ FOR
  11      ЗДЕСЬ ЭТОТ ОПЕРАТОР НЕ ДОПУСТИМ
  12      СЛИШКОМ МНОГО ELSIF ИЛИ EXIT
  13      НАЛОЖЕНИЕ СТРУКТУРНЫХ ОПЕРАТОРОВ
  14      НЕСУЩЕСТВУЮЩИЙ НОМЕР СТРОКИ
  15      ЗДЕСЬ ДОЛЖНА БЫТЬ ПЕРЕМЕННАЯ
  16      НЕПРАВИЛЬНЫЙ ТИП ИЛИ РАЗМЕР
  17      ОШИБКА В СПИСКЕ ВВОДА ИЛИ ВЫВОДА
  18      НЕПРАВИЛЬНЫЙ ФОРМАТ В PUT ИЛИ GET
  19      НЕПРАВИЛЬНЫЙ ЛОГИЧЕСКИЙ НОМЕР УСТРОЙСТВА
  20      НЕПРАВИЛЬНОЕ ИМЯ УСТРОЙСТВА ИЛИ ФАЙЛА
  21      НЕПРАВИЛЬНАЯ ОПЦИЯ
  22      НЕПРАВИЛЬНОЕ ВОСЬМЕРИЧНОЕ ЗНАЧЕНИЕ
  23      НЕПРАВИЛЬНАЯ СТРОКА СИМВОЛОВ
  24      ИНДЕКС ДОЛЖЕН БЫТЬ КОНСТАНТОЙ
  25      СЛИШКОМ БОЛЬШОЙ РАЗМЕР ПЕРЕМЕННОЙ
  26      НЕПРАВИЛЬНОЕ КЛЮЧЕВОЕ СЛОВО
  27      ОШИБКА В СПИСКЕ ДАННЫХ В DATA
  28      НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ ПРОЦЕДУРЫ
  29      ЗДЕСЬ ДОЛЖНА БЫТЬ ПРОЦЕДУРА
  30      ПОСЛЕ END ЧТО-ТО ЕСТЬ
  31      НЕСУЩЕСТВУЮЩАЯ ПРОЦЕДУРА
  32      НЕ ЗАКРЫТ ОПЕРАТОР IF
  33      НЕ ЗАКРЫТ ОПЕРАТОР FOR
  34      НЕ ЗАКРЫТ ОПЕРАТОР REPEAT
  35      НЕ ЗАКРЫТ ОПЕРАТОР WHILE
  36      НЕ ЗАКРЫТ ОПЕРАТОР LOOP
  37      НЕ ЗАКРЫТ ОПЕРАТОР PROC
  38      НЕ ЗАКРЫТ ОПЕРАТОР ON
  39
  40
  41      В КОМАНДЕ EDIT НЕТ РАЗДЕЛИТЕЛЯ
  42      В КОМАНДЕ REPLACE СТРОКИ УЖЕ ЗАНЯТЫ
  43      ПРОГРАММА НЕОТТРАНСЛИРОВАНА ИЛИ СОДЕРЖИТ ОШИБКИ
  44      ВОЗМОЖНОСТЬ НЕ ВКЛЮЧЕНА ПРИ ГЕНЕРАЦИИ
  45
  46
  47
.C
�                             - 52 -




                 КОДЫ ОШИБОК ВРЕМЕНИ ВЫПОЛНЕНИИ


  101      КОЛИЧЕСТВО БАЙТОВ В ОПЕРАТОРЕ PUT СЛИШКОМ ВЕЛИКО
  102      ВВЕДЕННОЕ КОЛИЧЕСТВО БАЙТОВ ПРЕВОСХОДИТ РАЗМЕР КОМПОНЕНТА
  103      НЕПРАВИЛЬНЫЕ СИМВОЛЫ ПРИ ВВОДЕ. ДЕЛАЕТСЯ ПОВТОРНАЯ ПОПЫТКА
           ВВОДА
  104      ОШИБКИ ПРИ ПРЕОБРАЗОВАНИИ ЧИСЛА
  106      ДЕЛЕНИЕ НА 0 ПРИ РАБОТЕ С ПЛАВАЮЩИМИ ЧИСЛАМИ
  107      ОШИБКА ПРИ ВЫПОЛНЕНИИ ОПЕРАЦИИ С ПЛАВАЮЩИМИ ЧИСЛАМИ
           (КЛАСС 5 - АНТИПЕРЕПОЛНЕНИЕ)
  108      ПЕРЕПОЛНЕНИЕ ПРИ УМНОЖЕНИИ ИЛИ ДЕЛЕНИЕ НА 0. ЦЕЛЫЕ ЧИСЛА
  109      ОШИБКА ПРИ ВЫПОЛНЕНИИ ОПЕРАЦИИ С ПЛАВАЮЩИМИ ЧИСЛАМИ
           (КЛАСС < 5)




                      КОДЫ СИСТЕМНЫХ ОШИБОК


  1       НЕ ХВАТАЕТ ПАМЯТИ ДЛЯ ОБ'ЕКТНОЙ ПРОГРАММЫ ИЛИ ДАННЫХ
  2       ПЕРЕПОЛНЕНИЕ РАБОЧИХ ТАБЛИЦ КОМПИЛЯТОРА
  3       ПЕРЕПОЛНЕНИЕ СИСТЕМНОЙ ТАБЛИЦЫ СИМВОЛОВ
  6       ФАТАЛЬНАЯ ОШИБКА КОМПИЛЯТОРА
  7       НЕПОДДЕРЖИВАЕМАЯ TRAP-ПРОГРАММА
.C
�                             - 53 -




                           ЛИТЕРАТУРА

   1. ЭВМ ЭЛЕКТРОНИКА-60. ТЕХНИЧЕСКОЕ ОПИСАНИЕ (КНИГА 2).
   2. ЭВМ ЭЛЕКТРОНИКА-60. ПАКЕТ СТАНДАРТНЫХ ПРОГРАММ (КНИГА 7).
.C