ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 7

 
                           Оператор CALL INTERRUPT
                           -----------------------

      Функция     CALL INTERRUPT         вызывает системное прерывание
      -------

      Синтаксис   CALL INTERRUPT n
      ---------

      Замечания       Целым выражением n представляется прерывание  для
      ---------       вызова  в  диапазоне  от  0 до 255. Как раз перед
      получением управления обработчиком прерываний регистры процессора
      загружаются   значениями   из   буфера  машинных  регистров.  При
      возврате, осуществляемом обработчиком прерываний, буфер принимает
      значения  из  процессорных  регистров. В любое данное время буфер
      содержит  состояние  регистров  процессора  в том виде, в котором
      находились  эти  регистры  при  компилировании  самого последнего
      внешнего вызова или оператора REG. 
         В  справочном  руководстве  по  технике  DOS содержится полная
      информация  о  многих  функциях,  доступных  через  механизм CALL
      INTERRUPT.   Программист   ответственнен   за   защиту  регистров
      стекового  сегмента  (SS) и стекового указателя (SP). Ограничения
      Перед  исполнением  оператора  CALL INTERRUPT подходящие регистры
      центрального  процессора  должны  быть  возбуждены через оператор
      REG.  После  исполнения  оператора  CALL  INTERRUPT  к  значениям
      процессорных регистров должен быть обеспечен доступ через функцию
      REG.
         см также CALL ABSOLUTE
                  REG
      Пример:    'call interrupt исполняет обслуживание DOS прерываний
                 $include "regnames.inc"
                 reg %ax &H0200
                 'ah=02 шестнадцатиричная функция станд. DOS-вывода
                 'литерала
                 reg %ox,reg(%ox)and&HFF02
                 'DL=02 шестнадцатиричное DH остается тем же
                 'DL:=литера для вывода
                 call interrupt &H21 'вызов прерывания 21


                                 Функция CDBL
                                 ------------

      Функция     CDBL     преобразует число в формат двойной точности
      -------

      Синтаксис   y=CDBL(числовое выражение)
      ---------

      Замечания        CDBL   преобразует   числовыю   переменную  или
      ---------        числовое  выражение  в  формат двойной точности.
      Используйте  CDBL  для  исключения  случаев  переполнения целых в
      выражениях,   где  комбинируются  целые  операнды  и  операнды  с
      плавающей точкой, например: y#=(z%+x%)/a#.
         Это  выражение  будет  приводить  к переполнению, если (z%+x%)
      больше   32767.   Чтобы  избежать  этого,  используйте  CDBL  для
      принудительного  преобразования одной из целых переменных в форму
      двойной  точности.  Это  вызовет оценку всего выражения в двойной
      точности.

            y=(CDBL(z%)+X%)/a#

      Ограничения      Диапазон выражения, подаваемого  в CDBL  должен
      -----------      находится  в  пределах  законного  диапазона для
      числа двойной точности.

        см. также  CINT
                   CLNG
                   CSNG
      Пример:   'CDBL полезен для предотвращения ошибок периода прогона
                x%=2000
                y%=2000
                z#=cdbl(x%)*y%
                print x%,y%,z#
                end

                                 Функция CEIL
                                 ------------

      Функция     CEIL     возвращает наименьшее целое, которое  больше
      -------              или равно аргументу 

      Синтаксис   y=CEIL(числовое выражение)
      ---------

      Замечания        Функция  CEIL  преобразует  числовыю  переменную
      ---------        или  выражение  в  целое,  возвращая  наименьшее
      целое, которое больше или равно аргументу.

      Различия         Этой функции в Интерпретаторном Бейсике нет.
      --------

         см. также   CINT
                     FIX
                     INT

      Пример:    for i!=-2.5 to 2.5 step 0.5
                 print using "CEIL-значение ### есть ###":i!,ceil(i!)
                 next i!
                 end

                                Оператор CHAIN
                                --------------

      Функция     CHAIN      возбуждает  модуль  цепочек Турбо Бейсика
      -------                (создаваемой как .TBC или .EXE-файл)

      Синтаксис   CHAIN файласпец
      ---------

      Замечания        Файласпец-это  строчное  выражение, которое
      ---------        следует     стандартным    DOS-соглашениям    об
      наименовании  файлов, и представляет модуль цепочек Турбо Бейсика
      (расширение  .TBC).  Если  расширение  опускается, предполагается
      .TBC.  Поэтому, если вы хотите специфицировать .EXE-файл, к имени
      файла  необходимо  добавить  .EXE.  Переменные  перечисляемые как
      COMMON  (общие),  подаются  и  текущей  программой,  и программой
      назначения в программу назначения. 
         В    фазе    тестирования    вызывающая    программа    должна
      компилироваться  в  .EXE  -файл, так как вы не можете реализовать
      цепочку  из  самого  Турбо-  Бейсика. Вызываемая программа должна
      компилироваться на диск как модуль цепочек (.EXE или .TBC-файл) .
      Если  аргументы  в  операторе  COMMON  в  вызывающей и вызываемой
      программах  не совпадают (например, переменные с плавающей точкой
      в  одном  месте  и  целые  в  другом),  возникает  ошибка периода
      прогона.     Турбо-Бейсик    не    поддерживает    опции    CHAIN
      Интерпретаторного  Бейсика,  ориентированные  на нумерацию строк,
      включая  DELETE  (стереть),  MERGE  (соединить) и CHAIN (цепочка)
      номер строки. Поскольку вы не можете специфицировать номер строки
      в  модуле  цепочек  назначения,  исполнение  начинатися всегда от
      начала.   При  трансляции  обработанной  CHAIN  системы  программ
      Интерпретаторного  Бейсика на Турбо-Бейсик, вы можете обнаружить,
      что  расширенное  использование  памяти  Турбо-Бейсиком позволяет
      консолидировать  отдельные  модули  в  единую программу, исключая
      необходимость реализации цепочек.

      Ограничения      Образование  цепочек   возможно,  только   когда
      -----------      программа   используется   из   DOS;   т.е.   из
      .EXE-файла.  MERGE,  DELETE,  ALL  и  CHAIN  по  номеру строки не
      поддерживаются.

      Различия         В Турбо-Бейсике образование  цепочек делается из
      --------         одной  компилирующей программы в другую, которая
      уже компилирована в .TBC или .EXE-файл.

         см. также   COMMON

      Пример:    'рассмотрим PROG1 ,которая образует цепочку к PROG2:
                 prog1.bas
                 'заявить  переменные, подлежащие подаче в организуемую
                 'цепочкой  программу:  скалярные  переменные единичной
                 'точности a и b и целый массив с% 
                 dim c%(3000)
                 a=65:b=13:c%(2000)=12
                 common a,b,c%(1)
                 'специфицировать #размеров в массиве
                 chain "prog2"
                 'заявить переменные, подлежащие приему из возбуждающей
                 'программы.  Они  должны  быть в том же порядке, иметь
                 'тот же тип, но не обязательно то же имя 
                 common x,y,z%(2000)
              когда   prog1.exe   возбуждается   из   DOS,   она  будет
              автоматически  вводить  модуль prog2.tbc и исполнять его,
              распечатывая  значения,  назначенные в prog1. Когда prog2
              оканчивается, возврат осуществляется в DOS, а не в prog1.


                                Оператор CHDIR
                                --------------

      Функция     CHDIR    изменяет  текущий  справочник  (DOS-команда
                           CHDIR или CD) 

      Синтаксис   CHDIR проход
      ---------

      Замечания        Проход-это  строчное  выражение, соответствующее
                       DOS -соглашениям о проходах (описанных в разделе
      "Файлы" глава 4).
         Если   проход   не  указывает  какой-то  законный  справочник,
      возникает ошибка 76 периода прогона, "Проход не найден". Оператор
      CHDIR изменяет текущий (задействованный по умолчанию справочник).
      Это  аналогично  действию  команды  CHDIR  из DOS, за исключением
      того,   что   невозможна   аббревиатура,  подобная  CD.  Прогоном
      программы,  которая  меняет  справочник,  из  Турбо-Бейсика также
      меняет задействованный справочник Турбо-Бейсика.

         Пример:   INPUT "Новый справочник :",Проход$
                    CHDIR Проход$
                   end

                                 Функция CHR$
                                 ------------

      Функция     CHR$     преобразует ASCII-код в однолитерную строку
      -------

      Синтаксис   s$=CHR$(целое выражение)
      ---------

      Замечания        CHR$ возвращает однолитерную строку,единственная
      ---------        литера   которой   имеет   целое   выражение   в
      ASCII-коде  со значением от 0 до 255. CHR$ дополняет функцию ASC,
      которая  возвращает  ASCII -код первой литеры строки. CHR$ удобна
      для создания литер, которые трудно ввести с клавиатуры, таких как
      графические     литеры    экранного    вывода    и    управляющие
      последовательности   для   вывода   на  печать.  Значение  целого
      выражения,  подаваемое  в CHR$, должно лежать в диапазоне от 0 до
      255.  Использование аргумента вне этого диапазона вызывает ошибку
      5 периода прогона, вызов незаконной функции.

         см. также  ASC

      Пример:    'CHR$ отображает на экране литерный набор ASCII
                 for i%=0 to 255
                  print using "i":chr$(i%):
                 'отобразить ascii литеру ,представляемую i%
                 next i%
                 end


                                 Функция CINT
                                 ------------

      Функция     CINT               преобразует свой аргумент в целое
      -------

      Синтаксис   y=cint(числовое выражение)
      ---------

      Замечания        Функция  CINT  преобразует  числовую  переменную
      ---------        или  выражение  в  целое, округляя дробную часть
      числового   выражения.  Если  числовое  выражение  находится  вне
      диапазона  от  -32768  до 32767, то возникает ошибка переполнения
      (ошибка   6  периода  прогона).  Это  преобразование  выполняется
      косвенным  путем,  посредством  назначения  целой  переменной или
      вызовом   процедуры,   либо   функции,  которая  принимает  целый
      аргумент.

      Различия         В  отличии  от Интерпретаторного Бейсика, Турбо-
      --------         Бейсик не всегда округляет дробную часть числа в
      сторону   увеличения.   Если   дробная  часть  числа  равна  0.5,
      округление осуществляется в сторону четного числа.

         см. также  CDBL
                    CEIL
                    CLNG
                    CSNG

      Пример:    for i!=0.0 to 5.0 step 0.2
                 print using "cint числа #.#=#":i!,cint(i!)
                 next i!
                 end


                               Оператор CIRCLE
                               ---------------

      Функция     CIRCLE    обеспечивает  вычерчивание  окружности или
      -------               части окружности. 

      Синтаксис   CIRCLE (x,y),радиус[,цвет[,начало,конец[,вид]]]
      ---------

      Замечания        (x,y)-координаты   центра   окружности,  которые
      ---------        могут   специфицироваться   в   абсолютной   или
      относительной  форме  (с  использованием STEP.). (Более детальную
      информацию  об  абсолютных  и  относительных  координатах  см.  в
      разделе о графике Главы 3 ). 
         Радиус -это числовое выражение, задающее размер окружности.
         Цвет   -   целое   выражение,  определяющее  цвет  окружности.
      Приемлемыми значениями являются 0-3 в графике средней разрешающей
      способности   (по  умолчанию - 3)  и  0 - 1 в графике  с  высокой
      разрешающей  способностью (по умолчанию - 1). Цветом по умолчанию
      является  наивысший  возможный  цвет  того режима, в  котором  вы
      находитесь. Использование цветового аргумента вне этих диапазонов
      дает  ошибку  5 периода прогона, вызов незаконной функции. (Более
      подробную  информацию  о  выборе  цветов см. в описании оператора
      COLOR).
         Начало  и  конец являются опциональными числовыми параметрами,
      определяющими  начальную и концевую точки подлежащей вычерчиванию
      дуги, которые специфицируются в радианах (см. описание радианов в
      описании  оператора ATN). Используйте их, когда желаете вычертить
      только   часть   окружности.  Если  начало  и  конец  опускаются,
      вычерчивается целая окружность . Например:

            SCREEN 1:pi=4*atn(1)
            CIRCLE (160,100),50,3,0,pi

      обеспечивает  вычерчивание  белого  полукруга  от  0  радиан до п
      радиан.
            Отрицательные значения начало и конец вызывают вычерчивание
      торто-образных;  т.е.  кромки  дуги  автоматически  соединяются с
      центральной точкой. Например : 

            SCREEN 1:pi=4*atn(1)
            CIRCLE (160,100)50,,-pi/4,-pi/2

           обеспечивает  вычерчивание  45-градусного куска торта от п/4
      радиан  до  п/2  рад.  Чтобы  начать клин на положительной X-оси,
      используется  отрицательное  число,  несколько  меньше нуля, а не
      просто -0 (например ..0001).
            Вид  -  это  числовое выражение, управляюшее тем, насколько
      круглой  или  овальной  будет  окружность. По умолчанию в средней
      разрешающей  способности  его  значение равно 5/6 (0.833333), а в
      зависимости    от    вышей   конкретной   комбинации   дисплейной
      платы/видео-монитора,  вам может потребоваться повозиться с этими
      значениями   (либо  отрегулировать  ваш  монитор)  для  получения
      круглых  окружностей. LPR после вычерчмвания окружности находится
      в ее центре.

      Пример:    'Эта программа демонстрирует возможности CIRCLE
                 'изменение  местоположения  радиуса,  цвета,  видового
                 'отношения.  С  помощью CIRCLE можно также вычерчивать
                 'дуги и клинья, полезные для игр "пак-ман"
                 pi#=4*atn(1)
                 screen 1
                 for радиус%=1 to 20 'увеличивать размер окружности
                 колер%=радиус%mod4 'рассчитать цвет изображения
                 circle (250,150),радиус%,колер% 'центр в 250,150
                 next радиус%
                 circle     (220,60),50,1,-(pi#*5/4),-pi#*3/4)    'тело
                 'пак-ман и глаз 
                 circle step (-5,-25),5,1
                 радиус%=50
                 'эллипс может давать иллюзию сферы ...
                 for вид=0 to 2.0 step 0.09
                  circle (90,100),радиус%,,,,вид
                 next вид
                 end


                                Оператор CLEAR
                                --------------

      Функция      CLEAR       очищает переменную память
      -------

      Синтаксис    CLEAR
      ---------

      Замечания        CLEAR - это команда без параметров, которая
      ---------        устанавливает  числовые  переменные  в  ноль,  а
      строчные   переменные   в   нуль-строку.  CLEAR  выключает  любое
      отслеживание  событий,  которое  находтся во включенном состоянии
      (такие  как  музыка,  которая может быть задействована оператором
      PLAY) и повторно возбуждает массивную и строчную память.
            Примечание:  Оператор  CLEAR  внутри  цикла  будет  очищать
      счетчик, вызывая бесконечный цикл.
      Для   выборочного  освобождения  массивов  в  памяти  пользуйтесь
      оператором ERASE.

      Ограничения      Турбо-Бейсик   не    поддерживает   динамическую
      -----------      установку  стека  и  сегментов  данных;  в  этом
      операторе нет поэтому соответствующих параметров.

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

         см. также   ERASE
                     $STACK

      Пример:     'эта программа демонстрирует что может делать CLEAR
                  dim массив$(1) 'заявить массив строк
                  play "mb l1 efgabcdef" 'играть музыку в фоне
                  on pen gosub ПераДержатель 'настроить отслеживание
                  'светового пера 
                  on strig(0) gosub КнопкиДержатель 'настроить отсле-
                  'живатель ручки  управления 
                  'возбудить строчные данные
                  Массив$(0)="это строка в Массиве$(0)"
                  Массив$(1)="это строка в Массиве$(1)"
                  'отобразить строчные данные
                  print using "Массивный элемент 1:&":Mассив;(0)
                  print using "Массивный элемент 2&":Массив$(1)
                  print
                  input "нажмите (ввод)для исполнения оператора
                         CLEAR": Пусто$
                  clear 'делается очистка
                  print
                  'существующие строчные данные более не отображаются
                  print using "Массивный элемент 1:&":Массив$(0)
                  print using "Массивный элемент 2:&":Массив$(1)
                  print
                  print "строчные переменные теперь пусты"
                  end
                  ПераДержатель:'определить пустую метку для ловушки
                  'светового пера
                  return
                  КнопкиДержатель :'определить пустую метку для
                  'ручки управления
                  return

                                 Функция CLNG
                                 ------------

      Функция     CLNG     обеспечивает преобразование в длинное целое
      --------

      Синтаксис   y=CLNG(числовое выражение)
      ---------

      Замечания        CLNG  преобразует числовую переменную или  выра-
      ---------        жение  в  длинное  целое  посредством округления
      дробной части ее аргумента. Если числовое выражение находится вне
      диапазона от -2в степени 31 до (2 в степени 31)-1 (приблизительно
      от  -2  до  2  биллионов),  возникает  ошибка  6 периода прогона,
      Переполнение.

      Ограничения      Числовое выражение, подаваемое  в  функцию  CLNG
      -----------      должно  находится  в  законном диапазоне длинных
      целых. 

      Различия         Этой   функции   нет  в   больщинстве  Интерпре-
      --------         таторных Бейсиков, поскольку они не поддерживают
      длинные целые.

         см. также  CDBL
                    CINT
                    CSNG
                    FIX
                    INT

      Пример:  print clng(2.0E9),clng(33.4),clng(-121.9),clng(100251.6)
      ------   end

                             Функция CLOSE
                             -------------

      Функция      CLOSE      закрывает файл или устройство
      -------

      Синтаксис    CLOSE[[#]файлнам[,[#]файлнам]...]
      ---------

      Замечания        CLOSE  оканчивает   взаимосвязь  номера  файла и
      ---------        файла,    установленного    в   операторе   OPEN
      (открыть),  и  закнчивает  ввод/вывод  в  этот  файл. Буфер файла
      наполняется  и,  если файлнам представляет файл, а не устройство,
      командой DOS CLOSE выполняется на нем для обновления справочника.
      Хороша    привычка    периодически   закрывать   файлы,   которыe
      записываются   программой.   Это  дает  уверенность  в  том,  что
      записывается  вся  информация,  а  вход этого файла в справочнике
      операционной  системы правильно обновляется в случае последующего
      сбоя   питания  или  какого-то  другого  затруднения.  CLOSE  без
      спецификации  номера  файла  закрывает  все открытые устройства и
      файлы (то же самое делают RESET, END, STOP и RUN).

         см.также END
                  OPEN
                  STOP

      Пример:
            'открыть файл назначенный печатающему устройству
            open "lpt1:" as#1
            print#1,"это тест"
            close#1
            open "закрыть Ф.ОДН" as#1
            open "закрыть Ф.ДВА" as#2
            print#1 "это тест"
            print#2 "это тест"
            close
            end


                                 Оператор CLS
                                 ------------

      Функция    CLS    очищает экран
      -------

      Синтаксис        В  текстовом  режиме  CLS очишает экран до цвета
      ---------        фона  и  обеспечивает позиционирование курсора в
      исходном положении в левом верхнем углу (ряд 1, колонка 1). CLS в
      графическом   режиме   очищает   экран  до  фонового  цвета.  LPR
      оказывается  в  центре  экрана, либо (160,100), либо (320,100), в
      зависимости  от  того, является текущий режим средней или высокой
      разрешающей способности, соответственно. 
            Если  уже  был  исполнен  оператор VIEW, CLS очищает только
      обзорно-приемное   окно.   Чтобы   стереть  весь  экран,  сначала
      воспользуйтесь VIEW без аргументов для выключения обзорного окна,
      а затем CLS-для очистки экрана.

         см. также  COLOR
                    SCREEN
                    VIEW

      Пример:
            'cls очищает экран до фонового цвета
            print "Это тест оператора CLS"
            input "Нажать  для очистки экрана...",Пусто$
            color 10,1
            cls
            end


                      Оператор COLOR (графический режим)
                      ----------------------------------

      Функция   COLOR     устанавливает цвета для графических операций
      -------

      Синтаксис Для SCREEN 1:COLOR[задний фон][,(палитра)]
      --------- Для SCREEN 7,8,9,10:COLOR[передний фон][,[задний фон]]

      Замечания        Задний   фон - это   целое  выражение  от  0  до
      ---------        63, специфицирующее цвет фона. Палитра-это целое
      выражение  от  0  до 1, обеспечивающее выбор двухцветной палитры.
      Передний  фон  целое выражение от 1 до 15. Аргументы этой команды
      определяют  фоновый  цвет  экрана  и  палитру  из четырех цветов,
      которые  будут использоваться в последующих чертежных операторах.
      После  того,  как вы уже определили палитру и цвет фона с помощью
      оператора  COLOR, цвет отдельных обьектов попадает под управление
      различных  команд  графики (CIRCLE,LINE и т.д.). В режиме высокой
      разрешающей   способности   на   Цветном   Графическом   Адаптере
      единственными   возможными   цветами  являются  черный  и  белый.
      Следовательно  опе- ратор COLOR не имеет значения в этом режиме и
      попытка  его  использования  приводит к ошибке 5 периода прогона,
      Вызов незаконной функции.

            SCREEN 1

            Фон   0-255:фактически  используемый  цвет  фона  есть  фон
      MOD16. Следовательно фон 1 и 16 дают один и тот же результат.
            Палитра 0-255: выбирается заранее определенная палитра, как
      показано на ниже 
            -----------------------------------------------
               цвет      палитра  0      палитра  1
            -----------------------------------------------
                1        зеленый         цинковый
                2        красный         анилиновый
                3        коричневый      белый
            -----------------------------------------------
            Четными числами обеспечивается выбор палитры 0, а нечетными
      -палитры   1   по  умолчанию.  Палитра  0  дает  вашей  программе
      возможность  создавать  обьекты  в  зеленом,  красном, коричневом
      цветах.  Палитрой  2  предлагаются  цвета  цинковый, анилиновый и
      белый. 

            SCREEN 7 и 8

            Только  EGA(усовершенствованный графический адаптер): цвета
      зависят  от  текущей  палитры. Передний фон 1-15: выбираемый цвет
      используется  как  для записи литер, так и для чертежной графики.
      Задний фон 0-15: выбирает цвет фона.

            SCREEN 9

            Передний  фон  1-15: выбранный цвет используется для записи
      литер  и  для  чертежной  графики. Если ваш EGA имеет память 64К,
      можно  использовать  тоько  значения из диапазона 103. Задний фон
      0-63: выбирается фоновый цвет. 

            SCREEN 10

            Передний  фон 1-3: выбранный цвет используется и для записи
      литер  и  для  чертежной графики; 1=черный, 2=мерцание, 3=высокая
      интенсивность.  Цвет  переднего  фона  0  приводит к ошибке Вызов
      незаконной функции.
            Для  изменения  атрибутов  умолчания  используйте  оператор
      PALETTE:  Задний  фон 0-8: выбранный цвет используется в качестве
      фона. 

      Примечание:      Значение   цвета   0   для  любой  палитры  есть
      ----------       цвет  фона, специфицируемого в этом операторе, а
      цвет   переднего  фона  по  умолчанию  определяется  максимальным
      атрибутом. 

      Ограничения      В  экране  режима  2  оператор  COLOR возвращает
      -----------      ошибку   5  периода  прогона,  Вызов  незаконной
      функции.

      Пример:

            'эта программа демонстрирует оператор COLOR в графическом
            'режиме
            'переключить на граф. режим средней разрешающей способности
            'установить палитру 0
            screen 1
            color .0
            for радиус%=1 to 20 'увеличить размер окружности
            колер%=радиус%MOD4 'расчет цвета изображения
            circle (160,100),радиус%,колер% 'отобразить окружность
            next радиус%
            delay 2
            color .1 'изменить палитру
            delay 2
            'установить палитру и цвет фона и очистить экран
            color 6,0:cls
            'вычертить красную окружность в середине экрана
            circle (160,100),50,2
            delay 2
            end


                       Оператор COLOR (текстовый режим)
                       --------------------------------

      Функция   COLOR    устанавливает цвет текста
      -------

      Синтаксис COLOR[передний фон][,[задний фон][,бордюр]]
      ---------

      Замечания        передний фон - это  целое  выражение   от  0  до
      ---------        31, специфицирующее цвет литер. Задний фон - это
      целое выражение от 0 до 7,специфицирующее цвет фона. Бордюр - это
      целое выражение от 0 до 15, которое определяет цвет бордюра. Если
      какой-то из этих параметров находится вне указанного диапазона то
      возникает ошибка 5 периода прогона, вызов незаконной функции. Для
      стандартных  видео-плат Цвета/Графики в список выбора вашего фона
      входят: 
            0 черный             8  серый
            1 голубой            9  светло-голубой
            2 зеленый            10 светло-зеленый
            3 цинковый           11 светло-цинковый
            4 красный            12 светло-красный
            5 анилиновый         13 светло-анилиновый
            6 коричневый         14 желтый
            7 белый              15 белый высокой интенсивности
            Литеры  могут  делаться  мерцающими  посредством  установки
      переднего  фона  в  желаемый  цвет  плюс  16. Например, установка
      переднего фона 22 (6+16) дает мерцающие коричневые литеры. 
            Адаптеры монохромного изображения не могут отображать цвет,
      поэтому   значения   переднего  фона  интерпретируются  следующим
      образом:
            0  черный
            1  подчеркивание
            2-7 белый
            8  черный
            9 подчеркивание высокой интенсивности
            10-15 высокая интенсивность
            16 черный
            17 подчеркивание черным
            18-23 мерцание
            24 черный
            25 высокая интенсивность, подчеркивание, мерцание
            26-31 высокая интенсивность, мерцание
            Значения заданного фона от 0 до 6 дают черный фон. Значение
      7 соответствует белому фону.

      Примечание:      На  любом Адаптере литеры становятся невидимыми,
      ----------       когда передний фон равен заднему фону.
            Улучшенный  графический  Адаптер может отображать 16 цветов
      из палитры, включающей в себя 64 цвета.

      Ограничения      параметр  бордюра  не  оказывает  влияния  на
      -----------      EGA с улучшенным монитором.

      Пример:
            'Эта программа демонстрирует оператор COLOR
            'в текстовом и графическом режимах
            'отобразить таблицу атрибутов
            for задний%=0 to 7
             for передний%=0 to 15
              color передний%,задний%
              print using "###":задний%*16+передний%
             next передний%
             print
            next задний%
            print
            for задний%=0 to 7 'отобразить таблицу всех атрибутов
             for передний%=16 to 31 'с мерцанием
             color передний%,задний%
            print using "###":задний%*16+передний%-16
            next передний%
            print
            next задний%
            end


                               Оператор COM(n)
                               ---------------

      Функция     COM(n)    управляет    отслеживанием    событий    на
                            последовательных входных устройствах.

      Синтаксис   COM(n){on!off!stop}
      ---------

      Замечания        n - число    коммуникационных    адаптеров,
      ---------        подлежащих  отслеживанию  (1  или  2).  Оператор
      COM(n)    ON   дает   возможность   отслеживания   подпрограммой,
      специфицированной в предыдущем операторе ON COM(n).
            После  COM(n)  ON  Турбо-Бейсик осуществляет проверку между
      исполнением  каждого  оператора  с  целью  просмотра  поступления
      каких-либо  литер  на  специфицириванное входное устройство. Если
      обнаруживается,  что  такое  событие  уже  произошло,  вызывается
      подпрограмма, специфицированная в операторе ON COM(n).
            Если  COM(n)  в  режиме OFF, активность на последовательном
      адаптере  n  игнорируется. Отслеживание коммуникаций прекращается
      после    оператора   COM(n)   STOP;   однако   любая   активность
      запоминается,  так  что  когда  исполняется  оператор  COM(n) ON,
      происходит  немедленный  захват  поступившего. Для увеличения или
      уменьшения размера COM буфера используйте метаоператор $COM. 

         см. также    ON COM(n)

      Пример:
         'Демонстрируется  оператор  COM(n).  Эта  программа  не  будет
         'ничего отображать, если ваш адаптер COM1 не получает ввода 
         'Настроить подпрограмму для обработки COM-ввода
            on com(1) gosub ПолучитьКомВвод
            'разместить массив 5К для хранения ввода
            dim КомПортВвод (5*1024)
            'разместить   указатель  на  следующем  имеющемся  буферном
            'пространстве 
            ЗаголовокПрт%=0
            'и следующий для печати
            КонецПрт%=0
            'включить обработку COM-ввода
            com(1) on
            'настроить буфер ввода 1К
            $com1 1024
            'открыть файловую переменную,как com1
            open
            open "com1" as#1
            print 'нажать любую клавишу для прекращения программы"
            'пока клавиша не нажата
            while not instat
            'если буфер не пуст
            if КонецПрт%<>ЗаголовокПрт% then
            'отобразить ввод
            print "Ком-порт ввод:";КомПортВвод(КонецПрт%)
            'шаг к следущему месту в буфере
            КонецПрт%=КонецПрт%+1
            end if
            locate 2.1
            print time$
            wend
            end
            'обработать  ком-порт прерывание
            ПолучитьКомВвод:
            'читать ввод из Ком-Порт буфера
            input#1.КомПортВвод(ЗаголовокПрт%)
            'указать следущее буферное пространство
            ЗаголовокПрт%=ЗаголовокПрт%+1
            return
            КонецВвода:'окончить ком-порт ввод
            print "Достигнут конец ввода ..."
            end


                               Функция COMMAND$
                               ----------------

      Функция     COMMAND$  возвращает  командную строку, используемую
      -------               для запуска программы из DOS 

      Синтаксис   s$=COMMAND$
      ---------

      Замечания        COMMAND$  возвращает   все, что   было   набрано
      ---------        в    DOS-подсказке,   в   процессе   возбуждения
      программы,   за  исключением  имени  самой  программы  (некоторые
      руководства  ссылаются  на  этот текст, называя его "трейледом").
      Используйте  COMMAND$  для накопления аргументов периода прогона,
      таких  как  имена файлов и опции программы. Рассмотрим, например,
      DOS-команду:

            FASTSORT cust.dta cust.new

      где  FASTSORT  (быстрая сортировка) есть созданная Турбо-Бейсиком
      .EXE  программа.  Когда  FASTSORT  получает  управление, COMMAND$
      будет  удерживать  все,  что  было  набрано в DOS подсказке после
      имени  самой  программы,  т.е.  в  данном случае строку "cust.dta
      cust.new".  Что делать с этой строкой (возможна разбивка COMMAND$
      на  файлаимя1  и  файлаимя2  и сортировка содержимого файлаимя1 в
      новый  файл  файлаимя2)  остается  для  решения  в соответствии с
      определением FASTSORT. 
            Для   тестирования   программы,   в   которой  используется
      COMMAND$,  в  пределах  Турбо-Бейсика,  применяется  опция строки
      параметров  из  меню  опций  для  установки возвращаемой COMMAND$
      строки. 

      Ограничения   Максимальная длина DOS-командной строки - 127 литер
      -----------

      Пример:
           'Эта программа демонстрирует функцию COMMAND$
            print   "Параметром  командной  строки,  подаваемой  в  эту
            'программу являются 
            print command$
            Компилируйте  эту  программу  в память и прогоняйте дважды,
      каждый раз меняя ввод параметров в меню опций.


                               Оператор COMMON
                               ---------------

      Функция     COMMON    заявляет   одну   или   более   переменных,
                            подлежащих  подаче  в  соединенную цепочкой
                            программу.

      Синтаксис   COMMON переменная[,переменная]...
      ---------

      Замечания        Переменная  -  это   массивная   или   скалярная
      ---------        переменная,    которая   должна   быть   сделана
      доступной   следующей  соединяемой  цепочкой  программе.  Массивы
      специфицируйте  посредством  включения  числа  размеров в скобках
      после имени переменной. Операторы COMMON могут подаваться в любом
      месте   программы  и  их  может  быть  более  одного,  но  данная
      переменная   может   появляться   только  один  раз.  Совпадающие
      операторы   COMMON  должны  появляться  в  программе,  к  которой
      привязывается  цепочка.Имена переменных, используемых в операторе
      COMMON  не  имеют  значения,  но  их количество и тип важны. Если
      переменные,  заявленные  как  общие  в возбуждающей программе, не
      совпадают  по  типу  и  количеству с переменными, заявленными как
      общие  в  принимающей  программе,  то генерируется ошибка периода
      прогона.

      Различия         Турбо-Бейсик  не   поддерживает  параметр  CHAIN
      --------         ALL,  обеспечиваемый  Интерпретаторным Бейсиком.
      Каждую   переменную,   общий   доступ   к  которой  должны  иметь
      связываемые    в    цепочку   программы,   вы   должны   заявлять
      непосредственно.  При специфицировании в Турбо-Бейсике в качестве
      общей   переменной   массива,  необходимо  специфицировать  число
      измерений  этого  массива. В Интерпретаторном Бейсике совпадающие
      COMMON  не требуется, поскольку COMMON в нем необходимы только из
      CHAIN,  а  внутри CHAIN в них нет необходимости. С другой стороны
      Турбо-Бейсик  требует, чтобы переменные в каждом операторе COMMON
      были  правильно  упорядочены. Другими словами, имена переменных в
      главной  программе  и программе-цепочке могут отличаться, но типы
      переменных   должны   совпадать.   Правильным  является  следущее
      употребление COMMON : 
            'Главная программа
            COMMON i%,Массив(1),j#
            'Цепная программа
            COMMON Цел%,ДействМасс(11),Двтчн#

      Ограничения      Турбо-Бейсик не поддерживает преодолеваемое
      -----------      CHAIN ALL COMMON Интерпретаторного Бейсика.

      Пример:
          'Эта программа демонстрирует оператор COMMON
            'Чтобы исполнить эти программы выполняйте следущее
            '(1) компилировать первую программу в .EXE-файл
            '(2)компилировать вторую программу в .TBC-файл
            '(3) при DOS подсказке исполнить первую программу
            'Программа хозяин.Компилировать эту программу в .EXE-файл
            dim СтарыйМассив$(1) 'заявить двустрочный массив
            СтарыйМассив$(0)="Это первая строка массива"
            СтарыйМассив$(1)="Это вторая строка массива"
            СтароеЦелое%=12345
            СтароеДлинноеЦелое&=123450000
            СароеЕдиничнойТочности!=12345.12345
            СтароеДвойнойТочности#=1.0E+300
            'специфицировать  переменные,  которые  являются общими для
            'программ хозяин и слуга 
            common СтарыйМассив(),СтароеЦелое%,СтароеДлинноеЦелое&,
             СтароеДвойнойТочности#
            chain "Слуга.TBC" 'цепочка для программы слуга
            end
            'Программа Слуга.Компилировать эту цепочку в .TBC-файл
            common НовыйМассив(),НовоеЦелое%,НовоеДлинноеЦелое&,Новое-
             ЕдиничнойТочности!,НовоеДвойнойТочности#
            print НовыйМассив(0)
            print НовыйМассив(1)
            print НовоеЦелое%,НовоеДлинноеЦелое&,НовоеЕдиничнойТочности!,Ново-
             сти!,НовоеДвойнойТочности#

                                 Функция COS
                                 -----------

      Функция    COS      возвращает тригонометрический косинус
      -------

      Синтаксис  y=COS(числовое выражение)
      ---------

      Замечание        Числовое  выражение - это угол, специфицируемый
      ---------        в   радианах.   Чтобы  преобразовать  радианы  в
      градусы,  умножайте  на  180/n.  Для  преобразования  градусов  в
      радианы  умножайте  на  n/180 (См. обсуждение радианов в описании
      функции ATN). COS возвращает значение двойной точности. 

         См.также   ATN
                    SIN
                    TAN

      Пример:
         pi=atn(1)*4
           for i%=0 to 360 step 45
           print using "Косинус ### градусов=##.##":i%,cos(pi#/180*i%)
         next i%
         end

                                 Функция CSNG
                                 ------------

      Функция    CSNG      преобразует  числовое  выражение  в его
      -------              эквивалент единичной точности.

      Синтаксис  y=CSNG(числовое выражение)
      ---------

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

         См.также   CDBL
                    CINT
                    CLNG

      Пример:    print csng (&HFFF),csng(12345.1234),csng(&HF000)



                                Функция CSRLIN
                                --------------

      Функция     CSRLIN    возвращает текущее положение курсора по
      -------               вертикали (номер ряда) 

      Синтаксис   y=csrlin
      ---------

      Замечания        CSRLIN   возвращает   целое   от   1   до    25,
      ---------        представляющее  текущее  положение  по вертикали
      (номер  ряда)  курсора.  Для  считывания  курсорного положения по
      горизонтали (номер колонки) используйте функцию POS. 
            Оператором  LOCATE  курсор  перемещается  в специфицируемые
      строку и колонку.

         См.также  LOCATE
                   POS

      Пример:
           Кол=pos 'сохранить ряд курсора
            Ряд=csrlin 'сохранить колонку курсора
            cls
            locate Ряд,Кол 'восстанавливается курсорная позиция
            end



                           Функции CVI,CVL,CVS,CVD
                           -----------------------

      Функции    CVI,CVL,CVS,CVD    преобразуют   строчные   данные,
                                    считываемые из произвольных файлов,
                                    в числовую форму.

      Синтаксис  y%=cvi(2байтовая строка)
      ---------  y&=cvl(4 байтовая строка)
                 y!=cvs(4 байтовая строка)
                 y#=cvd(8 байтовая строка)

      Замечания        CVI преобразует  2-байтовую строку в целое.
      ---------        CVL  преобразует  4-байтовую  строку  в  длинное
      целое.  CVS  преобразует  4-байтовую  строку в значение единичной
      точности.  CVD  преобразует  8-байтовую строку в значение двойной
      точности. Применительно к способу обработки Турбо-Бейсиком произ-
      вольных файлов, числовые значения должны перед их записью на диск
      транслироваться  в  строку,  а  при  считывании файла - обратно в
      числа.   Не  путайте  эти  функции  (предназначенные  только  для
      обработки произвольных файлов ) с функцией VAL, которая принимает
      строку вроде "3.7" и превращает ее в число.

         См.также  MKD$
                   MKI$
                   MKL$
                   MKS$

      Пример:
           'Эта  программа  создает файл данных произвольного доступа и
      записывает  в него некоторые данные. Затем эти данные считываются
      обратно  с  преобразованием  в  приемлемую форму с использованием
      описанных выше функций 
           'открыть файл произвольного доступа
           open "r",#1,"cvsld.dta",18
           field #1,2 as Целое$,4 as ДлинноеЦелое$,4 as ЕдиничнаяТочно-
            сть$,8 as ДвойнаяТочность$
           МаксЦелое%=32767
           'записать данные в файл,преобразовать их и назначить в буфер
           'перед записью в файл данных 
           for i%=1 to 5
            lset Целое$=mki$(i%)
            lset ДлинноеЦелое$=mkl$(i%+clng(МаксЦелое%))
            lset ЕдиничнаяТочность$=mks$(csng(i%*csng(МаксЦелое%)))
            lset ДвойнаяТочность$=mkd$(МаксЦелое%^i%)
            put #1,i%
           next i%
           for i%=1 to 5 'считать данные из файла
            get #1,i% 'отобразить их на экране
            print cvi(Целое$),cvl(ДлинноеЦелое$),cvs(ЕдиничнаяТоч-
             ность$),cvd(ДвойнаяТочность$)
           next i%
           clise#1
           end


Яндекс цитирования