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



 

Часть 6

                  Метаоператоры $IF/$ELSE/$ENDIF 
-----------------------------------------------------------------
Назначение         Метаоператоры $IF,  $ELSE и $ENDIF  определяют  
                   порции исходной программы,  которые необходимо 
                   компилировать или пропустить (это часто  назы-
                   вается условным компилированием) 

Синтаксис          $IF const (постоянная) 
                   .
                   .  операторы
                   .
                   [$ELSE 
                   .
                   .  операторы] 
                   .
                   $ENDIF

Комментарий        const представляет собой константу с присвоен-
                   ным именем или постоянную величину. Если const 
                   не  равна  нулю (TRUE),  тогда операторы между 
                   $IF и $ELSE компилируются,  а операторы  между 
                   $ELSE  и  $ENDIF не компилируются.  Если const 
                   равна нулю (FALSE),  тогда операторы между $IF 
                   и  $ELSE игнорируются,  а между $ELSE и $ENDIF 
                   компилируются.  

                      Метаоператор $ELSE является необязательным,
                   а $ENDIF обязательным. 

                      Операторы условной компиляции  могут  быть
                   вложены на уровне глубины 256. 
Пример             %ColorScreen = 1 ' установка константы с прис-
                                    ' военнным именем на величину
                                    ' не равную  нулю,  указывает
                                    ' на операцию на цветной сис-
                                    ' теме. 
                   ' установка виличины, равной  нулю,  указывает
                   ' на операцию 
                   ' на монохронной системе 
                   SIF %ColorScreen 
                      DEF SEG = &HB800 ' графический адрес 
                                       ' экранная память 
                   $ELSE 
                      DEF SEG = &HB800 ' монохронный адрес 
                                       ' экранная память 

                   FOR I% = 0 to 4000 STEP 2 
                     POKE I%,ASC("A") ' заполнить экран буквами А 
                   NEXT I% 

                   ' сохранить все 4000 блоков видео записи 
                   BSAVE "SIF.DTA",0,4000 

                   END                 ' закончить программу 

                       Метаоператор INCLUDE 
-----------------------------------------------------------------
Назначение         $INCLUDE включает текстовой файл. 

Синтаксис          $INCLUDE filespec literal 

Комментарий        Используется $INCLUDE для компилирования текс-
                   та другого  файла  наряду  с  текущим  файлом.  
                   filespec literal - это символьная константа, а 
                   файл, который она представляет, должен исполь-
                   зовать  условные обозначения имени файла DOS и 
                   должен представлять исходный ффайл ТУРБО  БЕЙ-
                   СИКа.  Если для файла включения не указывается 
                   имя файла,  то  ему  присваивается  расширение 
                   BAC.  
                      Механизм $INCLUDE заявляет компилятор обхо-
                   диться  с включенным файлом так,  как будто он 
                   физически присутствовал в этот момент в ориги-
                   нальном тексте. Это позволяет вам развить вашу 
                   исходную программу на удобные в  использовании 
                   куски программы. Концепция ТУРБО БЕЙСИКа рабо-
                   чий-файл/главный-файл  связана  с $INCLUDE.  В 
                   качестве иллюстрации  рассмотрите  файлы  CAL-
                   CAREA.BAS и CONCT.BAS: 

                            File CALCAREA.BAS 

                   PRINT "Circle area calculating program"
                   PRINT "If you find this program useful"
                   PRINT "Please send $3,500 to:"
                   PRINT
                   PRINT "Frank Borland"
                   PRINT "4585 Scorland"
                   PRINT "Scotts Valley, CA 95066"
                   PRINT "-------------------------------"
                   $INCLUDE "CONST.BAS"
                   INPUT "Enter radius", r
                   PRINT "Area =" pi * r * r

                            File CONST.BAS

                   ' All purpose constants
                   pi = ATN(1) * 4
                   %true = -1
                   %false = 0
                   %maxx = 319
                   %maxy = 199

                     Для компилирования этой программы,  CALCAREA 
                  необходимо сделать "главным  файлом",  т.к.  он 
                  является файлом с оператором $INCLUDE.  Рабочий 
                  файд "путешествует" вперед и назад между файла-
                  ми, в зависимости от того, где требуется редак-
                  тирование (т.е. где есть ошибки). Независимо от 
                  текущего рабочего файла,  компиляция всегда на-
                  чинается с CALCAREA (главный файл). (Более под-
                  робно описывается в Главе 3 "Основное меню").  
                     Когда компилятор ТУБРО БЕЙСИКа встречает ме-
                  таоператор  $INCLUDE  в  7 строке CALCAREA,  он 
                  приостанавливает считывание с кода, загружает и 
                  начинает считывать  знаки  с  CONST.BAS.  Когда 
                  этот код исчерпан, компилятор возвращается в то 
                  место оригинальной программы, где было приоста-
                  новлено считывание.  

                     Метаоператор  $INCLUDE может быть помещён на 
                  глубину 5;  то есть включенный файл может иметь 
                  свой собственный метаоператор $INCLUDE.  

Пример             ' Записать следующую информацию в файл 
                   ' называемый "EXAMPLE.INC". 

                   SUB SayHello     ' процедура печатает 
                     PRINT "Hello" ' "Hello" ("привет") на экране
                   END SUB

                   ' Далее идет главная программа 
                  $INCLUDE "EXAMPLE.INC" ' включить исходный файл
  
                  CALL SayHello  ' вызвать определенную процедуру
                                 ' в включенном файле 

                   END            ' закончить программу 


                       Метаоператор $INLINE 
-----------------------------------------------------------------
Назначение         $INLINE об'являет  встроенный  машинный  код в
                   встроенной процедуре. 

Синтаксис          $INLINE [byte list] [filespec literal] 

Комментарий        $INLINE  встречается   только  в пределах тела
                   встроенной процедуры.

                      byte list представляет собой последователь-
                   ность целых чисел в  пределах  от  0  до  255, 
                   кото-рые  должны кодироваться непостредственно 
                   в об'ектный код в этом месте.  

                      filespec literal - это имя файла,  содержа-
                   щего код,  который необходимо  встроить.  Этот 
                   код  должен перемещаться,  а также сохранять и 
                   восстанавливать  следующие  регистры:  Сегмент 
                   Стека (SS),  Указатель  Стека (SP),  Указатель 
                   Базы (ВР),  Сегмент  Данных  (DS).  Встроенный 
                   (inline)  код  может  обращаться к параметрам, 
                   использую относительную  адресацию  BP. (Более 
                   подробно об этом  см. Приложение А "Рассмотре-
                   ние чисел" и Приложение С "Интерфейс языка Ас-
                   семблера").  

Пример             SUB Shiek INLINE 
                   ' $INLINE заставляет говорящего издать крик 
                     $INLINE &HBA, &HOO, &HO7, &HE4, &H61, &H24 
                     $INLINE &HFC, &H34, &HO2, &HE6, &H61, &HB9 
                     $INLINE &H4O, &HO1, &HE2, &HFE, &H4A, &H74 
                     $INLINE &HO2, &HEB, &HF2 

                   END SUB 
                   CALL Shriek 
                   END   ' закончить программу 
 
                      Метаоператор $SEGMENT 
-----------------------------------------------------------------
Назначение         $SEGMENT об'являет новый сегмент кода. 

Синтаксис          $SEGMENT 

Комментарий        Используйте метаоператор $SEGMENT "отсутстсвие
                   аргумента"  для  прерывания   вашей   исходной 
                   программы,   когда  компилятор  сообщает,  что 
                   произошло прерывание ограничения сегмента кода 
                   64К: 

                   Error 409 Segment Overflow  

                     Вся информация после метаоператора  $SEGMENT 
                   будет помещена в новый сегмент кода. Это прев-
                   ращает   каждый  оператор  управляющей  логики 
                   программы (GOSUB, GOTO), который проходит кон-
                   троль через данную границу, в движение  интер-
                   сегмента, вызов или скачок, для выполнения ко-
                   торых требуется немного больше времени и  об'-
                   ема стека. Эту потерю времени можно уменьшить,   
                   поместив  операторы  $SEGMENT  в  местах,  где 
                   происходит   естественное   разделение   вашей 
                   программы;  например, между главной программой 
                   и подпрограммами или между главной  программой 
                   и кодом инициализации или окончание.  

                     В  программе  ТУРБО БЕЙСИКа может быть до 16 
                   сегментов кода.  Данные состояния  компиляции, 
                   напечатанные после компиляции, покажут размеры 
                   каждого сегмента, отделенные косой чертой (/).  

                     Нельзя использовать оператор $SEGMENT в рам-
                   ках  структурного блока;  например,  FOR/NEXT, 
                   DO/LOOP, WHILE/WEND, IF BLOCK.  

Пример             SUB Proc1 
                      PRINT "This is a dummy procedure" 
                   END SUB 

                   $SEGMENT  ' определите второй сегмент 

                   SUB Proc2 
                      PRINT "This is another dummy procedure" 
                   END SUB 

                   $SEGMENT   ' определите третий сегмент 

                   SUB Proc3 
                      PRINT "This is another dummy procedure" 
                   END SUB 

                   CALL Proc1 
                   CALL Proc2 
                   CALL Proc3 

                   END        ' закончить программу 

                       Метаоператор $SOUND
-----------------------------------------------------------------
Назначение         $SOUND об'являет емкость буфера фоновой 
                          музыки.

Синтаксис          $SOUND buffer size 

Космментарий       buffer size - это численная константа, показы-
                   вающая   нотную   емкость   фонового    буфера 
                   оператора  PLAY,  от  1  до 4,096.  Увеличение 
                   ёмкости буфера до максимума  (количество  нот, 
                   которые  прозвучат  в данной программе) делает 
                   создание нотносчетной ловушки ненужным.  

                      Каждая   нота   требует  8  байтов  памяти; 
                   емкость по умолчанию составляет  32  ноты  или 
                   256  байтов.  Значение по умолчанию может быть 
                   использовано и  записано  путем  использования 
                   элемента Music Byffer на меню Options.  Значе-
                   ния по умолчанию  заменяются  метаоператорами, 
                   встроенными в код.  

                       Метаоператор $STACK 
-----------------------------------------------------------------
Назначение         $STACK описывает размер стека выполнения прог-
                   раммы. 

Синтаксис          $STECK count 

Комментарий        count- это численная константа от 1024 до 32К.

                   Метаоператор $STACK определяет какой об'м  па-
                   мяти выполнения программы будет отведен стеку.  
                   Стек используется для адреса возврата во время 
                   вызовов   программы  и  в  рамках  структурных 
                   операторов,  а также  в  локальных  переменных 
                   многострочных функций.  Размер по умолчанию (и 
                   минимальный) - 1024 (400Н) байтов.  
                      Вам может понадобится больший об'ем  стека, 
                   если  ваша  программа ненормально расположена, 
                   испльзует  большие  локальные  переменные  или 
                   осуществляет рекурсию. Если вы предполагаете, 
                   что вашей программе не хватит об'ма стека, то 
                   вам  необходимо  вновь произвести компиляцию с 
                   версией текста STACK в меню Options.  Програм-
                   мы,  генерируемые  с  настоящим переключателем 
                   отладки во включенном состоянии, всегда прове-
                   ряют имеющийся в распоряжении об'ем  стека  до 
                   входа  в  подпрограммы,  процедуры  и функции. 
                   Значения по умолчанию заменяются  метаоперато-
                   рами, встроенными в код.  

                      Вы можете самостоятельно проверить количес-
                   тво  свободного об'ема стека с помощью функции 
                   FRE(-2).  

См.также           FRE 

Пример             ' Дает стек в 4,096 байтов... 
                   $STACK &H1000 
                  PRINT FRE(-2) ' показывает омеющийся в распоря-
                                ' жении об'ём стека 

                       Метаоператор $STATIC 
-----------------------------------------------------------------
Назначение         Метаоператор $STATIC описывает размещение мас-
                   сива по умолчанию как статическое. 

Синтаксис          $STATIC 

Комментарий        Метаоператор $STATIC не принимает аргумента  и
                   приписывает размещение  массива  по  умолчанию 
                   как   статический   тип.    Пространство   для 
                   статических  массивов  выделяется   во   время 
                   компиляции.  Массивы с  постоянными  размерами 
                   являются всегда статическими, кроме тех случа-
                   ев,  когда массив описывается локальным по от-
                   ношению к процедуре или функции, либо если для 
                   одного и того же массива существует более, чем 
                   одна величина (размер).  
                      Статические массивы не уничтожаются. Опера-
                   тор ERASE только инициирует каждый  элемент  в 
                   массиве к нулю или пустой строке.  
                      Обратите   внимание,    что    метаоператор 
                   $STATIC,  несмотря на косметическое  сходство, 
                   не  имеет  ничего  общего с оператором STATIC, 
                   который описывает  специальный  тип  локальной 
                   переменной в пределах процедур и функций.  

                      Метаоператор $STATIC есть по умолчанию ком-
                   пилятора.  

См.также           DIM     $DYNAMIC      ERASE        FRE 

Пример             $STATIC   ' эксплицитно об'являет статические 
                             ' массивы 

                   PRINT "Memory available:",FRE(-1) 
                   ' об'ём памяти остается таким же 

                   DIM A(50) ' A является статическим массивом 
                   PRINT "Memory available:",FRE(-1) 

                   N = 50 

                   ' B является динамическим массивом из-за 
                   ' выражения, используемого в качестве ар- 
                   ' гумента в операторе DIM 
                   DIM B(N) 
                   PRINT "Memory available:",FRE(-1) 
                   ' теперь уже меньше 

                   ERASE A 
                   PRINT "Memory available:",FRE(-1) 
                   ' нет никакой разницы, потому что А не переме- 
                   ' щается 
                   ' просто обнуляется 

                   ERASE B 
                   PRINT "Memory available:",FRE(-1) 
                   ' больший об'ем памяти, т.к. динамические
                   ' массивы перемещаются 
         END       ' закончить программу 

                            Функция ABS 
-----------------------------------------------------------------
Назначение         ABS возвращает абсолютное значение 

Синтаксис          y = ABS (numeric expression) 

Комментарий        ABS возвращает абсолютное значение  численного
                   выражения. Абсолютное значение х указывает его 
                   величину без учета знака.  Например абсолютное 
                   значение -3 это 3; абсолютное значение +3  это 
                   3.  

Пример             ' ABS возвращает текущее расстояние от "дома" 
                   ' посредством учета абсолютного значения расс- 
                   ' тояния 

                   ' назначить размещение 
                   Location# = -6,5 
                   ' показать текущую позицию 
                   PRINT "Current location:", Location# 
                   ' показать расстояние от дома 
                   PRINT "Расстояние от дома:", ABS (Distance#) 
                   (Location#). 

                           Функция ASC 
-----------------------------------------------------------------
Назначение         ASC возвращает код ASCII первого знака строки. 

Синтаксис          y = ASC (string expression) 

Примечания         ASC возвращает код ASCII (от 0 до 255) первого
                   знака символьного выражения. 

                      Для  перевода целочисленной строки в знако-
                   вую используйте комплементарную функцию  CHR$, 
                   которая   производит  однозначную  строку  при 
                   подаче значения ASCII.  

Ограничения           Символьное  выражение  переходящее  к   АСЦ 
                   может  не  быть нуль-строкой (пустой строкой). 
                   Если же это  происходит,  генерируется  ошибка 
                   выполнения S, Illegal Function Call.  

См.также           CHR$ 

Пример             PRINT "The ASCII value of is"; ASC("A") 

                           Функция АТN 
-----------------------------------------------------------------
Назначение         ATN возвращает тригонометрический арктангенс. 

Синтаксис          y = ATN (numeric expression) 

Комментарий        ATN возвращает арктангенс  (обратный  тангенс)
                   численного  выражения,  т.е.  угол с тангенсом 
                   численного выражения. ATN возвращает результат 
                   с удвоенной точностью.  
                      Результат, как и во всех операциях с углами 
                   в ТВ,  выражается в радианах (большей частью), 
                   а  не  в градусах.  Радианы представляют собой 
                   математически более  удобное  измерение  угла, 
                   выраженные в радианах.  Углы в градусах бывают 
                   от 0 до 360, углы, выраженные в радианах, име-
                   ют диапозон от 0 до pi, причем 0 радиан  изме-
                   ряется  вдоль положительной оси Х и возрастает 
                   против часовой стрелки. Т.о. отрицательная ось 
                   У (90 градусов) равняется pi/2 радианам, отри-
                   цательная  ось  Х (180 градусов)  равняется pi 
                   радианам, а отрицательная ось У (270 градусов) 
                   равняется 3pi/2 радиан.                       
                      Если  вам  удобнее  работать  с  градусами, 
                   радианы  можно  перевести  в  градусы  умножив 
                   значение   радианы   на   57,2958.   Например, 
                   арктангенс 0,23456 равняется 

                   ATN (.23456) радиан = 0.230395 радиан = 
                   (0.230395 * 57.2958) градусов = 13.2 градуса 

                      Для  перевода градусов в радианы необходимо 
                   умножить на 0.0174533. Например: 

                   14 градусов = (0.174533 * 14) радиан = 0.24435 
                   радиан 

                      Чтобы не запоминать громоздкие условия  пе-
                   ревода градусов в радианы, рекомендуем  запом-
                   нить вот это  соотношение  2п радиан = полному  
                   кругу,  равному 360 градусов,  таким образом 1 
                   радиан = 180/pi градусов.  И  наоборот, 1 гра-
                   дус = pi/180 радиан.  

                      Для справки, величина числа pi с точностью 
                  до 16 знаков равна  3,141592653589793 

                      Данное значение можно вычислить по выражению
                   pi# = 4 * ATN(I) 

                      Перевод градусов в радианы и радианы в гра-
                   дусы является хорошим применением для  одноли-
                   нейных функций.  

См.также           COS     SIN      TAN 

Пример             ' вычислите значение pi используя ATN 
                   PI# = 4*ATN(I) 
                   PRINT PI# 

                          Оператор BEEP 
-----------------------------------------------------------------
напначение         BEEP  "звонок"

Синтаксис          BEEP [count] 

Комментарий        BEEP воспроизводит тон  на 800 Hz через встро-
                   енное устройство  за  0,25  секунды.  Необяза-
                   тельнфй  численный аргумент вызывает счет BEEP 
                   операторов.  

                      BEEP  имеет  такой  же эффект,  как и вывод 
                   символа звуковой сигнализацииASCII (код 7)  на 
                   экран.    Например,   PRINT   CHR$(7).   Более 
                   мелодичные   тоны   создаются    при    помощи 
                   операторов SOUND и PLAY.  

См.также           PLAY        SOUND 

Пример             BEEP2   ' привлечь внимание пользователя 

                           Функция BIN$ 
-----------------------------------------------------------------
Назначение         BIN$ возвращает двоичный символьный эквивалент
                   числа. 

Синтаксис          s$ = BIN$ (numeric expression) 

Комментарий        численное выражение находится  в  диапазоне от
                   32.768 до 65.535. Любая дробная часть округля-
                   ется до того, как создается строка.  Если чис-
                   ленное    выражение    отрицательное,     BIN$ 
                   возвращает дополнительный код числа.  

См.также           HEX$        OCT$ 

Пример             ' Этот пример иллюстрирует как десятичные,так 
                   ' и двоичные значения от -5 до 5. 

                   FOR I% = -5 to 5       ' от -5 до 5 
                   ' показывает десятичные и двоичные значения I&
                   PRINT USING "The binary equivalant of -## =&"; 
                                I%,BIN$(1%) 
                   NEXT I% 

                   END       ' закончить программу 

                          Оператор BLOAD 
-----------------------------------------------------------------
Назначение         BLOAD загружает файл BSAVEd в память. 

Синтаксис          BLOAD filespec[,address] 

Комментарий        filespec есть симавольное выражение, определя-
                   ющее файл для загрузки,  оно должно  следовать 
                   стандартным  условным  обозначениям присвоения 
                   имени DOS,  факультативно включая спецификатор 
                   накопителя  и/или маршрут address представляет 
                   собой необязательное численное выражение от  0 
                   до  65,535  с указанием где в текущем сегменте 
                   должен загружаться файл.  В  случае  опущения, 
                   BLOAD  помещает  файл на адрес,  с которого он 
                   был первоначально BSAVEd.  
                      Если дается адрес, он заменяет адресную ин-
                   формацию,  записанную в файлах,  произведенных 
                   оператором  BSAVE.  Учитывая тот факт,  что на 
                   адресе BLOAD не происходит никакой проверки,  
                   вполне возможно загрузить файл сверх DOS и/или   
                   вашей программы и разрушить систему.  

Ограничения        BLOAD  не  будет загружать непосредственно па-
                   мять EGA. 

См.также           BSAVE       DEF SEG 

Пример             REM LoadGraphicsScreen
                   DEF SEG &HB800 
                   BLOAD "Pictcre",0 

                          Оператор BSAVE 
-----------------------------------------------------------------
Назначение         BSAVE записывает диапазон памяти на диске. 

Синтаксис          BSAVE filespec,address,length 

Комментарий        filespec есть  символьное выражение, определя-
                   ющее файл,  в  который  должны  быть  занесены 
                   данные.  filespec должен соблюдать стандартные 
                   условные  обозначения присвоения имени DOS,  и 
                   может факультативно включать спецификатор  на-
                   копителя  и/или  информацию о маршруте.  Адрес 
                   есть численное выражение с диапазоном от 0  до 
                   65,535  и указывает на оффсетную часть адреса, 
                   с которой будет записан filespec  (см.оператор 
                   DEF  SEG),  длина  есть число байтов,  которые 
                   должны быть записаны, от 0 до 65,535.  

                   BSAVE сохраняет объем памяти на диске (в  дей-
                   ствительности записывает цифровой моментальный 
                   снимок   указанного  объема  памяти  во  время 
                   BSAVE). Файлы, созданные с помощью BSAVE могут 
                   затем перезагружаться с  командой  BLOAD;  фа-
                   культативно  файлы  могут  быть  загружены  по 
                   другому адресу, чем с случае BSAVE.  

                      BSAVE и BLOAD часто используются для записи 
                   и загрузки экранных образов при помощи  непос-
                   редственно  считывания  и записывания в память 
                   дисплея.  Буфера дисплея Монохромного Адаптера 
                   Дисплея  вмещает  4,000 байтов и начинается на 
                   оффсете 0 в сегменте HB000.  Буфер дисплея CGA 
                   вмещает  4,000  байтов в режиме текста (SCREEN 
                   0)  и  16,384  байта  в   графическом   режиме 
                   среднего и высокого разрешения; оба начанаются 
                   с 0 в сегменте &HB800.  

Ограничения        Перед выполнением оператора  BSAVE,  программа
                   должна эксплицитно установить сегмент, который 
                   будет записан на диске с использованием опера-
                   тора DEF SEG.  

См.также           BLOAD       DEF SEG 

Пример             'BSAVE заполняет экран символами А и записыва-
                    ет на диске 

                   FOR I% = 1 to 2000 
                   PRINT "A"; ' заполняет экран символами А 
                   NEXT I% 

                   ' определить сегмент для BSAVE 
                   DEF SEG = &HB000 

                   ' записывает монохромный видео ram 
                   BSAVE "TEXT".PIC",0,4000 
                   ' количество знаков, умноженные на два 
                   ' из-за атрибутов 

                   END   ' закончить программу 

                          Оператора CALL 
------------------------------------------------------------------
Назначение         CALL вызывает процедуру(подпрограмму) 

Синтаксис          CALL procname [(список параметров)] 

Комментарий        procname  представляет  собой  имя  процедуры,
                   определенной где-либо в  программе  с  помощью 
                   оператора SUB. Список параметров является нео-
                   бязательным, с отдельным занятым списком пере-
                   менных,   выражений,   и/или  констант,которые 
                   должны быть переведены в имя процедуры.  
                      Существует  3  типа  процедур  SUB:  STATIC 
                   (статические),  стандартные процедуры и INLINE 
                   (встроенные).  Все,  о  чем  здесь  говорится, 
                   относится  ко всем 3 типам;  однако,  то,  как 
                   компилятор будет работать со списком  парамет-
                   ров, зависит от типа процедуры SUB.  
                      Количество   и   тип  проходных  аргументов 
                   должны  соответствовать  вписку  параметров  в 
                   определении имени процедуры;  иначе произойдет 
                   ошибка Parameter Mismatch времени компиляции.  
                      Если  процедура  SUB  является   процедурой 
                   INLINE,  число  аргументов  варьируется  и  не 
                   происходит  проверка   типов   параметров.   В 
                   компетенцию процедуры SUB INLINE входит знание 
                   и  определение  количества и типов параметров, 
                   которые в нее  переходят  (более  подробно  об 
                   этом  см.   Приложение  C,   "Интерфейс  языка 
                   ассемблера").  
                      Когда аргументы процедуры проходят ссылками 
                   (т.е.  переменными), они могут изменяться выз-
                   ванными процедурами. Когда переменная заключа-
                   ся в круглые скобки,  она проходит по значению 
                   и  оригинальное   значение   не   может   быть 
                   изменено.  Обратите внимание,  что выражения и 
                   постоянные всегда проходят по значению.  
                     Аргументы  массивов определяются с использо-
                   ванием  пустых  скобок  после  имени  массива. 
                   Массивы  всегда  проходят  посредством ссылки. 
                   Например: 

                   CALL SumArray (a())  ' перевести массив a на 
                                        ' SumArray 
                   CALL SumArray (a(3)) ' перевести элементы 3 а 
                                        ' на SumArray 

См.также           $INLINE             SUB 

Пример             DIM Array (1)  ' объявить массив 2 чисел 

                   SUB Test Procedure (I%,S!,D#,E,A(1)) 

                   ' эта процедура просто выводит значения 
                   ' каждого параметра, переведенного к ней 
                   PRINT I%;L&;S!;D#;E;A(0) 
                   END SUB  ' закончить процедуру TestProcedure
                   INTEGER = 1 
                   LongInt& = 2 
                   SinglePre! = 3 
                   DoublePre# = 4 
                   Array(0) = 5 

        CALL TestProcedure(Integer%, Logint%, SinglePre!,-
                           DoublePre#, Integer%2, Array()) 

                   END     ' закончить программу 

                      Оператор CALL ABSOLUTE 
-----------------------------------------------------------------
Назначение         CALL ABSOLUTE вызывает программу языка ассемб-
                   лера. 

Синтаксис          CALL ABSOLUTE address (parametr  list) 
                                 адрес   (список параметров)

Комментарий        адрес является численным  скаляром, содержащим
                   начальным номер вызываемой внешней  программы.  
                   Сегмент     определяется    самым    последним 
                   оператором DEF SEG.  адрес должен находится  в 
                   диапазоне  от 32,768 до 65,535.  Отрицательные 
                   значения  будут  переведены   компилятором   в 
                   положительные.  
                      Форма списка параметров  поддерживает  сов-
                   местимость  с Интерпретатором БЕЙСИК переводом 
                   коротких целых параметров на стек.  Эта  форма 
                   позволяет  переходить  только целым параметрам 
                   (см.  Приложение С, "Интерфейс языка ассембле-
                   ра").  
                       Буфер  регистра загружается в регистры про-
                   цессора непосредственно  перед  CALL  ABSOLUTE 
                   или  CALL INTERRUPT и записывается сразу после 
                   возврата.  В  любой  момент  времени буфер со- 
                   держит процессор в  положении,  в  котором  он 
                   находился  во время выполнения самой последней 
                   по времени внешней подпрограммы.  
                      У буфера регистра выборку осущетсвляет опе-
                   ратор  REG и функция,  которая использует чис- 
                   ленный  аргумент  для  обращения  к   соответ- 
                   ствующему регистру, как показано в таблице: 

                   ------------------------------------- 
                   Аргумент регистра             Регистр 
                   ------------------------------------- 
                   0                             Флаги 
                   1                             AX 
                   2                             BX 
                   3                             CX 
                   4                             DX 
                   5                             SI 
                   6                             DI 
                   7                             BP 
                   8                             DS 
                   9                             ES 
                   ------------------------------------- 

                   REG  в  качестве  оператора загружает отобран- 
                   ный элемент буфера регистра с указанным  целым 
                   значением: 

                   REG2,&H1000  ' загрузить 1000H в BX буфера ре- 
                                ' гистра 

                   REG  в  качестве  функции  возвращает значения 
                   отобранного элемента в буфере регистра: 

                   PRINT REG(2) ' печатать эначения в BX буфера ' 
                                регистра 

                      Программист несет ответственность за сохра-
                   нение регистров Сегмента Данных  (DS),  Указа- 
                   теля   Базы   (BP),   Сегмента  Стека  (SS)  и 
                   Указатель Стека (SP).  

См.также           CALL INTERRUPT    DEF SEG    REG 

Пример             DEFINT a-z 
                   DIM a(100) 
                   DIM FillRoutine(10) 

                   FillRoutine (0) = &HF2FC 
                   FillRoutine (1) = &HCBAA 

                   REG 1, -1 
                   REG 3, 101 * 2 
                   REG 9, VARSEG(a(0)) 
                   REG 6, VARPTR(a(0)) 

                   DEF SEG = VARSEG(FillRoutine(0)) 
                   PRINT a(1) 
                   WHILE NOT INSTAT : WEND 
                   FillAdr = VARPTR(FillRoutine(0)) 
                   CALL ABSOLUTE FillWdr '(REG) 

                   PRINT a(1) 
                   END 

                     Оператор CALL INTERRUPT
-----------------------------------------------------------------
Назначение  CALL INTERRUPT осуществляет системное прерывание

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

Комментарий 
            n - это целочисленное выражение, представляющее вызы-
            ваемое прерывание от 0 до 255.  Непосредственно перед 
            тем,  как обработчик  прерываний  получает  контроль, 
            регистры  процессора  загружаются значениями в буфере 
            машинного  регистра.   Когда  обработчик   прерывания 
            возвращается,  буфер  берется за значения в регистрах 
            процессора.  В  любое  данное  время  буфер  содержит 
            состояние  регистров  процессора на момент завершения 
            самого последнего внешнего вызова или оператора REG.  
               Техническое руководство DOS содержит полную инфор-
            мацию по многим функциям,  доступным  через  механизм 
            CALL  INTERRUPT.  Программист  отвечает за сохранение 
            регистров сегмента стека (SS) и указателя стека (SP).  

Ограничения
            Перед выполнением оператора CALL INTERRUPT соответ-
            ствующие регистры CPU должны быть выбраны из памяти 
            через функцию REG.  
                 После выполнения CALL INTERRUPT значения реги-
            стров достигаются с использование функции REG

См. также   CALL ABSOLUTE    REG         

Пример      'CALL  INTERRUPT выполняет стандартное DOS прерывание

            $INCLUDE "REGNMES.INC"
            REG %AX, &H0200
            ' AH=02 Hex DOS стандартная функция вывода символа

            REG %DX, REG(%DX)AND &HFF02
            ' DL=02 Hex DH остается прежним
            ' DL:=  символ, предназначенный для вывода

            CALL  INTERRUPT &H21   'вызов прерывания 21                     
 
                     Функция CDBL
----------------------------------------------------------------- 
Назначение   CDBL преобразовывает число в формат удвоенной
             точности.

Синтаксис    Y= COBL (численное выражение)

Комментарий  CDBL преобразует численную переменную или  выражение 
             в форму удвоенной точности.  
                Для  устранения возможности избытка целых чисел в 
             выражениях с целочисленными и с операндами с плаваю-
             щей запятой используйте оператор CDBL. Например: 
             Y = (2% + x%) /# 
                Результатом данного выражения будет избыток, если 
             (2% + X%) будет больше 32.767.  Во  избежание этого,
             используйте оператор CDBL для  преобразования  одной 
             из  целочисленных  переменных  в  форму  с удвоенной 
             точностью.  Это дает нам оценку  всего  выражения  с 
             удвоенной точностью.  

             Y# = (CDBL (2%) + X%))а#

Ограничения  
            Диапозон  выражений,  передаваемых CDBL должен быть в 
            пределах допукстимого диапозона числа удвоенной  точ-
            ности.  
       
             См. также    CINT    CLNG    CSNG
                
Пример       'CDBL используется для профилактики ошибок выражения  
             
          X% = 2000           'обьявить целочисленную переменную 
          Y& = 2000           'присвоить Y% значения  х%
          # = CDBL (X%) = Y%  'предотвратить переполнения
                              'преобразованием x%
          PRINT  x%, Y%, Z#   'показать значения трех переменных
             END
 
                          Функция  CEIL
-----------------------------------------------------------------
Назначение   Функция  CEIL  преобразует численную переменную
             или выражение в целое число, возвращая наимньшее
             целое число большее или равное его аргументу.
 
Синтаксис    Y = CEIL (численное выражение)
             Функция  CEIL  проеобразует численную переменную
             или выражение в целое число, возвращая  наибольшее
             целое число большее или равное по аргументу.
  
Различия     В Интерпретаторе БЕЙСИК такой функции нет.

             См. также    CINT   FIX   INT
 
Пример       FOR I! = -2.5 to 2.5 STEP 0.5

             `показать наименьшее целое число большее для
             'серии значений
             PRINT the ceiling of ### is ###."; i!, CEIL (I!).
             NEXT I!
             END             `закончить программу

                          Оператор CHAIN
-----------------------------------------------------------------
Назначение   Оператор CHAIN вызывает модуль цепочки ТБ (соз-
             даваемый как файл).
 
Синтаксис   CHFIN filespec.
 
Комментарий
            filespec представляет символьное выражение,  в  соот-
            ветствии  со стандартными условными обозначениями DOS 
            и представляет цепочный модуль Турбо Бейсика  (расши-
            рение  ТВС).  Если расширение опущено,  присваивается 
            ТВС.  Поэтому,  если  вам  необходимо определить файл 
            .ЕХЕ, вы должны к имени файла добавить .ЕХЕ. Перемен-
            ные, перечисленные как COMMON в текущей программе и в 
            программе назначения,  переходят к последней.  В фазе 
            тестирования,  вызывающая программа должна компилиро-
            ваться в файл .ЕХЕ,  т.к.  нельзя сцеплять  программы 
            изнутри Турбо Бейсика.  Вызываемая  программа  должна 
            компилироваться  на  диск  как  цепочный модуль (файл 
            .ЕХЕ или .ТВС).  
               Если аргументы к операторам COMMON в вызывающей  и 
            вызываемой  программах не совпадают (например,  пере-
            менные с плавающей запятой в одном месте, а целые чи-
            сла в другом), происходит ошибка выполнения.  
               Турбо  бейсик  не поддерживает версии CHAIN интер-
            притатора БЕЙСИК,  ориентированные на  номер  строки, 
            включая  номер строки CHAIN,  DElETE,  MERGE.  В виду 
            невозможности определения номера  строки  в  пределах 
            целочисленнонго модуля назначения,  выполнение всегда 
            идет с начала.  
               При  трансляции системы CHAIN программ интерприта-
            тора Бейсик в турбо Бейсик,  вы обнаружите  расширен-
            ное  использование  памяти  Турбо Бейсика позволяющее 
            объединить  отдельные  модули  в  единую   программу, 
            необходимость в сцеплении модулей отпадает.  

Ограничения
            Сцепление можно осуществить  только при условии,  что
            программа выполняется с DOS т.е. с файла  .ЕХЕ MERGE,
            DERLETE,  ALL и CHAIN  (сцепление) на номер строки не
            поддерживаются.
Различия
            В Турбо Бейсике операция CHAIN осуществляется из  од-
            ной компилированной программы в другую,  которая была 
            уже скомпилированна в файл .ТВС или .ЕХЕ.  

См. также   COMMON.

Пример      Рассмотрим PROG1, которая формирует цепочку в PROG2.

            PROG1.BAS
           'объявить переменные, которые должны бытьпереведены в
           'программу со сцепленными модулями
           `скалярные переменные одинарной точности  а и b и
           'целочисленный миассив C%
           DIM  c % (3000)
           а = 65  b = 13:  c%(2000)= 12
           COMMON  а,b,c%(1)
           'определить # размеров в массиве
           CHAIN "PROG2"
  
           PROG2.BAS
           'Обьявить переменные, которые должны быть получены из
           'вызываемой программы
           `они должны быить в таком же порядке, одного типа,
           `но не требуют одинаковых имен
           COMMON x, y, z%(1)
           PRINT x, y, z%(2000)
 
              Когда PROG1.EXE вызывается из DOS, она автоматичес-
           ки "возьмет с собой модуль PROG2.TBC  и  выполнит его, 
           напечатав значения,  присвоенные в PROG1. Когда закан-
           чивается PROG2, она возврвщается в DOS, а не в PROG1.  

                          Оператор CHDIR
-----------------------------------------------------------------
Назначение  Оператор CHDIR изменяет каталог (команды DOS CHDIR 
            или CD.).

Синтаксис   CHDIR path
 
Комментарий
            path - это символьное выражение,  соответствующее ус-
            ловным обозначениям маршрута в DOS (описаны в статье 
           "Файлы"  в 4-й главе).  Если маршрут не указывает пра- 
           вильный  каталог,  происходит  ошибка  выполнения  76, 
           Path  Not  Found  (маршрут не найден).  Оператор CHDIR 
           изменяет текущий каталог (активный или по  умолчанию).
           CHDIR Турбо Бейсика аналогичен DOS команде CHDIR с той 
           лишь разницей,  что не может сокращенно называться CD. 
           Выполнение программы, которая изменяет текущий каталог 
           изнутри  Турбо  Бейска,   изменяет  также  и  активный 
           каталог Турбо Бейска.  
  
 
Пример    INPUN "Nem directory:" Path$
          CHDIR path$     'изменяет на каталог, определенный 
                          'пользователем
          END

                          Функция  CHR$
-----------------------------------------------------------------
Назначение    CHR$ преобразует code ASCII в строку из одного сим-
              вола
 
Синтаксис     Y=CHR$ (integer ehpression)
  
Комментарий      CHR$  возвращает строку из одного символа, кото-
              рый имеет целочисленное выражение кода ASCII в диа- 
              пазоне значений от 0 до 255.  CHR$  комплементирует 
              функцию  ASC,  которая возвращает код ASCII первого 
              символа строки. CHR$ используется для создания сим-
              волов, трудновводимых с клавиатуры,  таких как гра-
              фические  символы  для вывода на экран и последова-
              тельности контроля вывода принтера. Значение цело-
              численного выражения, переходящее на CHR$, должно 
              быть в пределах от 0 до 255. Использование аргумен-
              та, выходящего за рамки этого диапозона, дает ошиб-
              ку  выполнения  5.  IllegaI Function Call 
              (неправельный вызов функции).  
 
см. также     ASC
               
Пример        'CHR$ выводит набор символов ASCII на экран
 
              FOR I% = 0  то 255
 
              PRINT USING "I";  CHR$ (I%);
                                 'показывает символ ASCII, 
                                 'представленный I%
            NEXT  I%
            END

                           Функция CINT
-----------------------------------------------------------------
Назначение    Функция  CINT  преобразует аргумент в целое число.

Синтаксис     Y = CINT (numeric expression)

Комментарий      Функция CINT  преобразует  численную  переменную  
             или  выражение  в  целое число с округлением дробной 
             части численного выражения. Если численное выражение 
             выходит из пределов диапазона от -32.768 до +32.767, 
             то происходит ошибка overflow (переполнение) (ошибка 
             выполнения программы 6).  
                Это  преобразование   осуществляется   имплицитно 
             назначением  целочисленной  переменной  или  вызовом 
             процедуры    или    функции,    которая    принемает 
             целочисленный аргумент.  

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

См.также     CDBL  CEIL  CLNG   CSNC  FIX   INT


Пример       FOR  I! = 0.0  TO  s.0  STEP  0.2

                         'показать результат преобразования
             PRINT USING  "CINT  of  #.# = #"  I!,CINT(I!)
             NEXT  I!
             END     'закончить программу

                         Оператор  CIRCLE
-----------------------------------------------------------------
Назначение   Оператор  CIRCLE  рисует круг или часть круга.

Синтаксис   
          CIRCLE  (x,y) radius [, color [, start, end[, aspect]]]

Комментарий
            (x,y) является центром круга и может быть описан либо 
            в   абсолютной   либо   в   относительной   форме  (с 
            использованием STEP). (См.  раздел по графике в Главе 
            3  для  более  подробной  информации  об абсолютных и 
            относительных координатах).  
               radius  представляет  собой  численное  выражение, 
            управляющее размером круга.  
               color  - это численное выражение определяющее цвет 
            круга.  Допустимые значения от 0 до 3  в  графических 
            устройствах  со  средней разрешающей способностью (по 
            умолчанию - 3) и от 0 до 1 вграфических устройствах с 
            высокой разрешающей способностью  (по  умолчанию  1). 
            Цвет  по  умолчанию  -  это наиболее высокий цвет для 
            режима  в  котором   вы   находитесь.   Использование 
            аргумента   цвета,   выходящего   за  пределы  данных   
            диапазонов,   дает  ошибку  выполнения   5,   illegal 
            function  call  (неправильный вызов функции).  (Более 
            подробно об отборе цвета см. оператор STATEMENT).  
               start,  end  являются  необязательными  численными 
            параметрами, определяющими начальную и конечную точки 
            рисуемой  дуги в радианах (о радианах смотри в статье 
            ATN).  Используйте их при  изображении  только  части 
            круга.  Если начало и конец опускаются рисуется целый 
            круг.  
Например:           SCREEN: pi = 4 * ATN(1) 
                    CIRCLE (160.100),50,3,0, pi 
           рисует белую дугу полукруга от 0 радиан (0 градусов) 
           до pi радиан (180 градусов).  
                Отрицательные   значения   начала  и  конца  дают 
           круговую  диаграмму с треугольной  призмой  на  зкране 
           дисплея,   края   которой   автоматически  связываются 
           точкой.  Например: 
 
                    SCREEN  1 :  pi = 4* ATN(1)
                    CIRCLE  (160,100,50,,-pi/4, -pi/2
           рисует отрезок диаграммы в 45 градусов, от pi/4 радиан 
           (45) до pi/2 радиан (90),  который виден на стр.  149.  
           Для начала треугольной призмы (wedge) на положительной 
           оси  x,   используйте  отрицательное  число,   немного 
           менньшее 0 (например ,  0001),  а не ноль.  
               aspect  - это численное выражение,  контролирующие 
           овальность или  округлость  круга.  по  умолчанию  5/6 
           (0.83333) со  средней  разрешающей способностью и 5/12 
           (0.416667)  с  высокой  разрешающей  способностью.   В 
           зависимости от конкретной комбинации монитора  дисплея 
           коммутационная  доскв/видео,  вам  может  понадобиться 
           "внести изменения" в данные  значения  (или  исправить 
           ваш монитор) для получения круглых окружностей .  
                После    нанесения    изображения   круга,    LPR 
            становиться его центром.  

Пример    'Данная программа демонстрирует возможности CIRCLE
           'изменение места, радиуса, цвета
           'и соотношения аспекта. CIRCLE может также
           'рисовать дуги и треугольные призмы, 
           'используемые в играх
           'типа "pak-man".
            
            PI# = 48* ATN(1) 'вычислить значения PI
            SCREEN1           'перейти в режим графиков
            FOR Radius% = 1 то 20  'увеличить размер круга

            Colour% = Radius% MOD 4 'вычислить цвет дисплея
            CIRCLE(250,150).Raidius%, Coiour% 'центр на 250, 150
            NEXT Radius%
            CIRCLE(250,60), 50,1,-(PI#*5/4),-(PI#*3/4) 
                                                 'тело "pak-man"
                                                 'и глаз
            Rasing% = 50   'элипсы могут производить иллюзии 
                           'типа сфер...
            FOR Aspekt = 0  TO  2.0  STEP  0.09
            CIRCLE(90.100),Radius%....Aspekt
            NEXT Aspekt
            END

                         Оператор  CLEAR
-----------------------------------------------------------------
Назначение    Оператор  CLEAR  ощчищает переменные памяти

Синтаксис     CLEAR
          
Комментарий      CLEAR - это команда без параметров,  которая ус-
              танавливает   численные   переменные  на  ноль,   а 
              символьные переменные сводит к нулю. Оператор CLEAR 
              отключает   ловушку   (например,    воспроизведение 
              музыки),  и  вновь  инициализирует память массива и 
              содержимое символьной строки.  

Замечание        Оператор CLEAR,  употребленный внутри цикла, вы-
              зывает обнуление счетчика и тем самым  делает  цикл 
              бесконечным.  
                 Для выборочной очистки массивов памяти ипользуй-
              те команду ERASE.

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

Различия         Различия между оператором  CLEFR  Интерпретатора
              БЕЙСИК  и ТБ происходят главным образом из различий 
              между компиляторами и интерпретаторами. Интерпрета- 
              тор БЕЙСИКа имеет возможность дминамически устанав-
              ливать пространство стека и данных, в то время  как 
              ТБ  компилятор  устанавливает  это  пространство во 
              время компиляции.  

См.также      ERASE     $STACK

Пример        'Данная программа демонстрирует вощзможности опера-
              'тора CLEAR

              DIM Array$(1)         'объявить массив строк

              PLAY "MB L1 EFGABCDEF"  'дать музыкальный фон 
              ON PEN GOSUB PenHandler 'установить ловушку свето-
                                      'вого пера
              ON STRIG(0) GOSUB ButtonOHandler 'установить лову-
                                               'шку джойстика
                 'инициализировать символьные данные
              Array$(0) = "This is string in Array$(0)
              Array$(1) = "This is string in Array$(1)
                 
                 'показать символьные данные
              PRINT USING "Array element 1: &";Array$(0)
              PRINT USING "Array element 2: &"; Array$(1)
        CLEAR      'выполнить CLEAR
        PRINT
                   'показать уже не существующие символьные даннные

              PRINT USING "Array element 1: &";Array$(0)
              PRINT USING "Array element 2: &"; Array$(1)
         PRINT
              PRINT "The string variables are now empty."
         END   'конец программы
 
             PenHandler:  'определить ложную метку для ловушки 
         RETURN            'светового пера

         ButtonOHandler 'определить ложную метку для джойстика
               RETURN

                           Функция CLNG
-----------------------------------------------------------------
Назначение    Функция CLNG преобразует числовое выражение в длин-
              ное целое число.

Синтаксис     Y = CLNG(numeric expression)
                      (числовое выражение)

Комментарий      Функция CLNG преобразует числовую переменную или 
              выражение в длинное целое число округлением дробной 
              части ее аргумента. Если значение аргумента выходит
              за пределы диапазона от -2^31 до +2^31 - 1 (прибли-
              зительно от -2000000000 до 1999999999), то происхо-
              дит  ошибка выполнения  6,  Переполнение  (run-time 
              error 6, Overflow).

Ограничения      Числовое выражение, которое переходит к фунукции
              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  для  обновления 
              каталога.  
                 Необходимо  взять  на  вооружение  использование 
              оператора CLOSE для периодического закрытия файлов, 
              создаваемых при написании программы. Это гарантиру-
              ет сохранение информации и обнолвление соответству-
              ющим образом статей каталога файлов на случай  пос-
              ледующего отключения системы или других проблем.  

                 Оператор CLOSE без номерв  или имени файла зак- 
              рывает все открытые файлы и устройства (как и опе- 
              раторы  RESET, END, STOP и RUN).

См.также      END   OPEN   STOP

Пример           'открыть файл, назначенный принтеру
              OPEN "LPT1:" AS #1

                                  'послать строку на принтер
              PRINT# 1,"THIS IS A TEST" 

              CLOSE# 1    'закрыть переменную файла

                                  'открыть два разных файла
              OPEN "CLOSEFIL.ONE" FOR AS #1
              OPEN "CLOSEFIL.TWO" FOR AS #2

                                 'вписать строку в каждый файл
              PRINT# 1,"THIS IS A TEST"
              PRINT# 2,"THIS IS A TEST"

                                 'закрыть все файлы
              CLOSE
              END

                           Оператор CLS
-----------------------------------------------------------------
Назначение    Оператор CLS чищает экран.

Синтаксис     CLS


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

См.также      COLOR   SCREEN   VIEW

Пример                          'очистка экрана оператором CLS

              PRINT " Пример работы оператора CLS "
              INPUT " Нажмите  для очистки ...", Dummy$

              Color 10, 'установлен зеленый цвет на синем фоне

              CLS    'экран очищается до синего цвета
                 END



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