Г Л А В А   3
----------------------------------------------------------------
                                       ТУРБО БЕЙСИК: Программа
----------------------------------------------------------------

Редактор ТУРБО
----------------------------------------------------------------
Встроенный редактор ТУРБО БЕЙСИК (ТБ) предназначен для  создания
исходного текта  программы.  Его  команды практически  идентичны
командам редактора WordStar (WS) компании MicroPro.
    При выборе режима Edit (Редактирование)  из  основного  меню
ТБ в верхней части экрана высвечивается окно этого режима, пока-
зывая, что вы "вошли" в редактор.  Для  выхода  из  редактора  и
возврата в  шкалу  основного  меню нажмите Esc (данные окна Edit
остаются на экране).
    Текст  вводится  как  при использовании пишущей машинки. Для
окончания строки нажмите клавишу  Enter (Ввод).  Когда  вводимые
вами  строки  заполнят  весь  экран, верхняя  строка "убежит"  с
экрана. Не  беспокойтесь  - она не пропала совсем;  и вы сможете
перемещаться назад и вперед по тексту,  используя команды "прок-
рутки" текста, описываемые ниже.
    В редакторе ТБ, в отличие от WS, имеется возможность команды
"отмены",  позволяющая отменить внесенные изменения, если данная
строка еще не окончена.  Эта команда (Ctrl-QL) описана в разделе
"Разные команды редактирования".
    Давайте теперь рассмотрим информацию, содержащуюся  в строке
состояния окна редактора:

X:Filename.typ   Line    Col      Insert   Indent  Tab
X:Имя_файла.тип  Строка  Колонка  Вставка  Отступ  Табуляция

X:Имя_файла.тип
- - - - - - - -
Показывает рабочий дисковод,  имя и расширение  текущего  файла.
Если  имя файла с расширением - NONAME.BAS  (букв. БЕЗЫМЯННЫЙ) -
это означает,  что  имя  файла  еще  не  присвоено  вами  (в  ТБ
NONAME.BAS - имя файла по умолчанию).

Строка
- - - -
Показывает номер строки в которой находится курсор (относительно
верхней границы файла, а не экрана).

Колонка
- - - -
Показывает номер колонки, в которой находится курсор.

Вставка
- - - -
Показывает, что  включен  режим "Вставка".  В этом режиме знаки,
вводимые с клавиатуры вставляются в позиции  курсора.  Текст  за
курсором, (т.е. справа от него) сдвигается вправо по мере введе-
ния  символов.  Для переключения  режимов  редактора "Вставка" и
"Замена" (в последнем случае вводимый с  клавиатуры  текст заме-
няет  символы  в позиции  курсора, а  не  вставляет  их  впереди
существующего  текста)  используются  клавиши  Ins (Вставка) или
Ctrl-V. Внимание:  Новые  строки  текста  в режиме  "Замена"  не
могут быть введены.

Отступ
- - - -
Показывает, включен ли авто-отступ. Отключается командой включе-
ния/отключения, Ctrl-OI.

Табуляция
- - - - -
Показывает, включена или выключена табуляция. Для включения/вык-
лючения используйте Ctrl-OT.

Работа в редакторе
- - - - - - - - - -
Курсор можно передвигать по экрану  с помощью группы управляющих
букв:  одновременным нажатием клавиши Ctrl и клавиш A,S,D,F,E,R,
X,C,W и Z.
    Эти знаки  так расположены на клавиатуре,  что легко опреде-
лить их назначение:

   E
S     D
   X

Нажатием Ctrl-E перемещаем курсор вверх; Ctrl-X - вниз; Ctrl-S -
влево; Ctrl-D - вправо.
    В редакторе используется около  50  команд  для  перемещения
курсора, "перелистывания" текста,  поиска и замены строк, и т.п.
Эти команды можно сгруппировать по следующим категориям:
- Команды перемещения курсора
- Команды вставки и стирания
- Команды для работы с выделенными фрагментами - "блоками"
- Разные команды
    Каждая группа содержит логически связанные команды,  описан-
ные в следующих разделах.

                Таблица 3-1.  Команды редактора
-------------------------------------------------------------
Команды перемещения курсора

На символ влево                    Ctrl-S  или Левая стрелка
На символ вправо                   Ctrl-D  или Правая стрелка
На слово влево                     Ctrl-A
На слово вправо                    Ctrl-F
На строку вверх                    Ctrl-E  или стрелка вверх
На строку вниз                     Ctrl-X  или стрелка вниз
Прокрутка вверх                    Ctrl-W
Прокрутка вниз                     Ctrl-Z
Страница  вверх                    Ctrl-R  или клавиша PgUp
Страница  вниз                     Ctrl-C  или клавиша PgDn

Расширенные команды перемещения

В начало строки                    Ctrl-QS или клавиша Home
В конец строки                     Ctrl-QD или клавиша End
В начало окна                      Ctrl-QE
В конец окна                       Ctrl-QX
В начало файла                     Ctrl-QR
В конец файла                      Ctrl-QC
В начало блока                     Ctrl-QB
В конец блока                      Ctrl-QK
В последнюю позицию курсора        Ctrl-QP

Команды вставки и стирания

Режим вставки включить/выключить   Ctrl-V
Вставить строку                    Ctrl-N
Стереть  строку                    Ctrl-Y
Стереть до конца строки            Ctrl-QY
Стереть знак слева от курсора      Ctrl-H   или клавиша Backspace
Стереть знак над курсором          Ctrl-G   или клавиша Del
Стереть слово справа               Ctrl-T

Команды работы с блоками

Маркировать начало блока           Ctrl-KB  или F7
Маркировать конец  блока           Ctrl-KK  или F8
Маркировать одно слово             Ctrl-KT
Копировать блок                    Ctrl-KC
Переместить блок                   Ctrl-KV
Стереть блок                       Ctrl-KY
Считать блок с диска               Ctrl-KR
Записать блок на диск              Ctrl-KW
Показать/убрать маркировку блока   Ctrl-KH
Печатать блок                      Ctrl-KP

Разные команды

Закончить редактирование, не записывать  Ctrl-KD, Ctrl-KQ или Esc
Записать и редактировать                 Ctrl-KS  или F2
Новый файл                               F3
Табуляция                                Ctrl-I
Режим табуляции                          Ctrl-OT
Включение/выключение авто-отступа        Ctrl-QI
Восстановить строку                      Ctrl-QL
Установить маркер                        Ctrl-Kn
Найти маркер                             Ctrl-Qn
Найти                                    Ctrl-QF
Найти и заменить                         Ctrl-QA
Повторить последний поиск                Ctrl-L
Префикс управляющего символа             Ctrl-P
Прервать работу                          Ctrl-U
Восстановить сообщение об ошибке         Ctrl-QW
-------------------------------------------------------------

Команды перемещения курсора
- - - - - - - - - - - - - -
Ниже описаны некоторые основныен команды, которые позволят вам
начать редактирование файла.

- На символ влево/вправо
Перемещает курсор на один знак влево/вправо

- На слово влево/вправо
Перемещает курсор на начало следующего слова слева/справа. (Слово
определяется как  последовательность  символов,  разделяеая одним
из следующих символов:
       "пробел" < > , ; . ( ) [ ] * + - / $
Эта команда работает и при переносе строки.

- На строку вверх/вниз
Перемещает курсор на одну строку вверх/вниз

- Прокрутка вверх/вниз
Прокручивает текст к началу/концу файла по одной строке за каждое
нажатие клавиши (весь "экран" сдвигается вниз/вверх).

- Страница вверх/вниз
Перемещает курсор на одну дисплейную страницу,  без одной строч-
ки, "вверх/вниз".

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

- К началу/концу строки
Перемещает курсор к началу (колонка 1)/концу текущей строки.

- На верх / в низ экрана
Перемещает курсор в левый верхний/девый нижний угол дисплея.

- В начало/конец файла
Перемещает курсор на первый/последний символ файла.

- К началу/концу блока
Перемещает курсор к соответствующему маркеру блока, устанавлива-
емому  командой  Ctrl-KB / Ctrl-KK.  Команды действуют даже если
маркировка блока не  показана. (См. "Показать/убрать  маркировку
блока"  в разделе  "Команды для работы с блоками"), или не уста-
новлен второй маркер блока.

- В последнюю позицию курсора
Перемещение в  позицию курсора перед последней командой.  Данная
команда особенно удобна после выполнения операций поиска или по-
иска/замены, когда нужно вернуться к последней позиции перед вы-
полнением этих операций.

Команды вставки и стирания
- - - - - - - - - - - - - -
Невозможно написать программу простыми перемещениями  курсора по
дисплею. Нужно иметь возможность вставлять и стирать текст. Сле-
дующие команды позволяют вставлять и стирать  символы,  слова  и
строки.

- Включение/выключение режима "Вставка"
При введении текста выбирают один из двух основных режимов  вво-
да: Вставка (Insert) или Замена (Owerwrite). Переключать эти ре-
жимы можно нажатием Ctrl-V или Ins.  Текущий режим высвечивается
в строке состояния на верху дисплея.
    Режим вставки,  являющийся режимом редактора  по  умолчанию,
позволяет вставлять  новые  знаки/символы  в существующий текст.
Текст справа от курсора при этом просто смещается вправо по мере
введения нового текста.
    Режим замены используется для записи нового текста  на месте
старого; вводимый  новый символ заменяет старый в положении кур-
сора. В этом режиме невозможна вставка новых строк текста.

- Вставить строку
Переносит строку, начиная с позиции курсора.

- Стереть строку
Стирает строку  с курсором и перемещает строки,  находящиеся под
ней , на одну строку вверх.

- Стереть до конца строки
Стирает весь текст от курсора и до конца строки.

- Стирать символ слева от курсора
Перемещает курсор  на  один  знак влево,  стирая расположенный в
этой позиции символ. Любые символы справа от курсора перемещают-
ся на  один символ влево.  Команду можно использовать для отмены
переноса строк.

- Стирать символ в положении курсора
Стирает символ в положении курсора и сдвигает любой символ, рас-
положенный справа от курсора,  на один разряд влево.  Команда не
работает при переносе строки.

- Стирать слово справа от курсора
Стирает слово справа от курсора.  Команда работает при  переносе
строки и может быть использована для отмены переноса строки.

Команды работы с блоками
- - - - - - - - - - - - -
Команды работы с блоками требуют выполнения определенной команд-
ной последовательности  управляющих символов.
   Текстовой блок - это любое количество текста, от одного знака
до сотен строк, заключенное в специальные маркерные символы. Од-
новременно в тексте можно создать только один блок.  Блок марки-
руется установкой начального маркера перед первой, а конечного -
после последней буквы желаемого куска текста. Маркированный еди-
ножды блок можно копировать,  перемещать, стирать или записывать
в файл.

- Маркировать (отметить) начало/конец блока
Маркирует начало/конец блока. Сам маркер невидим, а блок выделя-
ется только после установки обоих маркеров.  Маркированный текст
(блок) выделяется интенсивность свечения.

- Маркировать одно слово
Маркирует слово как блок, заменяя всю последовательность "начало
/конец блока".  Если  курсор  расположен  на любой букве слова -
маркируется это слово.  Если же курсор вне слова  -  маркируется
слово, расположенное слева от него.

- Копировать блок
Копирует предварительно  маркированный блок в положение курсора.
Исходный блок не изменяется,  а маркеры перемещаются с новой ко-
пией блока. Если нет маркированного блока, либо курсор находится
внутри маркированной области - команда не работает.

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

- Стереть блок
Стирает предварительно маркированный блок. Восстановить  стертый
блок невозможно,  поэтому будьте внимательны при работе  с  этой
командой.

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

- Записать блок на диск
Записывает предварительно маркированный блок в файл. Блок не из-
меняется; маркеры остаются на месте. После выдачи команды машина
запросит имя файла, в который следует записать блок. Файлу может
быть присвоено любое допустимое имя (расширение по умолчанию - .
BAS). (Если вы предпочитаете имя файла без расширения, поставьте
точку в конце имени).
    Для записи файлов на место существующих  можно  использовать
шаблоны; название каталога высвечивается на экране. Если указан-
ный файл существует,  то перед записью на экране появляется таб-
личка-предупреждение. Если нет маркированного блока - команда не
работает.

- Показать/убрать маркировку блока
Включает или выключает высвечивание маркированного блока. Коман-
ды операций с блоком (копирование,  перемещение,  стирание и за-
пись в файл) работают только при "показываемом" блоке. Перемеще-
ния курсора  в  конец  или  на  начало  блока  (команды "К концу
блока", "К началу блока") срабатывают независимо от этого.

- Печатать блок
Направляет маркированный блок на принтер. Если блок не маркиро-
ван или маркировка убрана. печатается весь файл.

Разные команды редактирования
- - - - - - - - - - - - - - -
В данном разделе описаны команды, не входящие ни в одну из выше-
описанных категорий.

- Закончить редактирование, не записывать
Прекращает редактирование и выводит в основное меню.  Запись от-
редактированного файла на диск выполняется по команде Save (сох-
ранить) из   набора   команд   для   файлов   в  основном  меню;
автоматически, с помощью команды Auto save из набора Разные  ко-
манды в  Наборном  меню  (Setup Menu) или в самом редакторе (см.
следующую команду).

- Записать и редактировать
Записывает файл и остается в редакторе.

- Новый файл
Позволяет стереть текст текущего редактируемого файла  и создать
новый файл;  либо просто создает новый файл, если редактируемого
нет. При нажатии клавиши F3 машина запрашивает, хотите ли вы за-
писать текущий текстовой файл, если он есть.

- Табуляция
Метки табуляции  в  редакторе  ТУРБО БЕЙСИКа установлены через 8
колонок.

- Режим табуляции
Включает и выключает режим табуляции. Когда на экране высвечива-
ется надпись  "Tab" - можно вводить метки табуляции;  при выклю-
ченном режиме табуляции автоматически устанавливается на на  на-
чало первого  слова  предыдущей  строки.  (При включенном режиме
табуляции автоотступ не работает.)

- Включение/выключение автоотступа
Осуществляет автоматический отступ. Во включенном состоянии отс-
туп текущей строки повторяется на каждой последующей,  т.е.  при
нажатии клавиши Enter(Ввод) курсор возвращается не  в  первуюко-
лонку, а  в начальную колонку следующей строки,  соответствующей
начальной колонке предыдущей строки.  Если выхотите изменить ве-
личину отступа,  пользуйтесь  клавишами Пробел или Стрелка Влево
для выбора новой начальной колонки.  Если автоотступ включен,  в
строке состояния  высвечивается  сообщение Indent(Отступ);  если
выключен - надписи нет. Автоотступ включается по умолчанию. (При
включенном режиме табуляции автоотступ не работает.)

- Восстановить строку
Позволяет отменить  все изменения в строке,  если вы еще не "уш-
ли" с нее.  Строка восстанавливается в первоначальном виде неза-
висимо от внесенных изменений.

- Установить маркер
Позволяет  отметить  четыре  позиции  в тексте  нажатием клавиши
Ctrl-K и одной цифры (0-3). Отметив позицию,  вы можете работать
в любом  месте файла,  а затем очень быстро вернуться в исходную
позицию нажатием Ctrl-Qn (убедитесь только, что вы ввели тот  же
номер метки).

- Найти маркер
Находит до четырех меток позиции в тексте (0-3). Перемещать кур-
сор к любой предварительно  поставленной  метке  можно  нажатием
клавиши Ctrl-Q и номер метки.

- Найти
Позволяет найти цепочку,  включающую до 30 знаков.  При введении
данной команды строка состояния очищается,  и машина запрашивает
искомую цепочку.  Введите  искомую  цепочку  и  нажмите  клавишу
Enter. Искомая цепочка может содержать любые знаки,  включая уп-
равляющие символы,  которые  следует вводить,  используя префикс
Ctrl-P. Например, вводите Ctrl-T, удерживая клавишу Ctrl и нажи-
мая P, а затем T. В искомую цепочку можно включить также и пере-
нос строки введением Ctrl-MJ (возврат  каретки/перевод  строки).
Обратим внимание, что Ctrl-A имеет специфический смысл: она сли-
чает любые знаки и може быть использована для универсальной  вы-
борки при поиске цепочек.
   Искомую цепочку можно редактировать командами "На знак влево/
вправо","На слово влево/вправо". "На слово вправо" вызывает пре-
дыдущую искомую цепочку,  которую затем можно редактировать. По-
иск можно прервать командой "Прервать работу" - Ctrl-U.
   После введения искомой цепочки машина запрашивает вариант по-
иска. Возможные варианты включают :

     B - Поиск в обратном направлении от текущего положения
         курсора к началу текста

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

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

     N - Находит следующее  употребление  искомой цепочки от
         текущего положения курсора в файле. Обратите внимание,
         что вариант G замещает N при их одновременном
         использовании.

     U - Игнорирует различия "строчная/прописная".

     W - Находит только целые слова, пропуская подходящие наборы
         знаков, имеющиеся в словах или сочетаниях.

   Например:

W   Находит  только целые слова. Искомая цепочка "term" будет
    соответствовать слову "term", но не "terminal".

BU  Ищет в   обратном  направлении,  игнорируя  разницу  пропис-
    ных/строчных знаков.  "Block" будет соответствовать и  слову
    "blockhead", и слову "BLOCKADE", и т.п.

125 Находит 125-й случай употребления искомой цепочки.

Завершить список  вариантов  поиска можно нажатием Enter,  и
машина начнет поиск.  Если в тексте есть набор знаков, соответс-
твующий искомой цепочке,  курсор остановится в конце этого набо-
ра, или в его начале при "обратном" поиске.  Поиск можно  повто-
рить командой "Повторить последний поиск" (Ctrl-L).

- Найти и заменить
Эта операция  работает  идентично выполнению команды "Найти",  с
той разницей, что можно заменить найденную цепочку любой другой,
содержащей до  30  знаков.  Обратите внимание,  что Ctrl-A может
быть использована для универсальной выборки при команде "найти",
но не имеет специального назначения при команде "заменить".
    После ввода искомой цепочки машина запрашивает  цепочку  для
замены искомой.  Введите до 30 знаков; ввод и редактирование уп-
равляющих символов как описано в подразделе "Команда Найти". Ес-
ли вы  просто нажмете клавишу Enter,  то соответствующий искомой
цепочке набор в тексте будет заменен "ничем"  -  попросту  гово-
ря,стерт.
    Выбор вариантов,как и в команде "Найти",  со следующими  до-
полнениями.

     N - Заменяет, не запрашивая подтверждения по каждому случаю
         употребления искомой цепочки.

     n - Заменяет следующие n случаев употребления искомой
         цепочки. Выполняемая одновременно с вариантом G,
         проводит поиск от начала файла;  в противном случае -
         от текущего положения курсора.

   Например:

N10 Находит следующие десять случаев употребления искомой цепоч-
    ки и заменяет без запроса.

GW  Находит и заменяет целые слова по всему тексту, игнорируя
    различия "строчная/прописная". Запрашивает подтверждение
    замены.

GNU Находит по всему тексту искомые цепочку, игнорируя
    различия "строчная/прописная" и заменяет их без запроса.

    И вновь завершить список варианто можно  нажатием  Enter,  и
машина начнет  поиск и замену.  Когда искомая цепочка найдена (и
если не указан вариант N), курсор помещен в конец цепочки, и ма-
шина спрашивает "Заменить (Да/Нет)(Y/N)" на строке запроса ввер-
ху экрана. В этот момент можно прервать исполнение команды "Най-
ти и  заменить"  командой "Прервать работу" (Ctrl-U).  Повторить
работу "Найти и заменить" можно  командой  "Повторить  последний
поиск" (Ctrl-L).

- Повторить последний поиск
Повторяет последнее исполнение команд "Найти" или "Найти и заме-
нить" так, как будто вся информация введена заново.

- Префикс управляющего символа
Позволяет вводить в файл управляющие  символы,  используя  перед
желаемым символом префикс Ctrl-P;  т.е. сначала нажать Ctrl-P, а
затем клавишу управляющего символа. На экране управляющие симво-
лы будут  представлены  прописными  буквами меньшей яркости (или
наоборот, в зависимости от заданной установки экрана).

- Прервать работу
Позволяет прервать исполнение любой команды при ее остановке для
ввода, например,  по запросу команды "Найти" или при запросе ма-
шины "Заменить (Да/Нет)(Y/N)", или при вводе искомой цепочки или
имени файла (Читать или записывать блок).

- Восстановить сообщение об ошибке
Нажмите данные  клавиши  для  восстановления сообщения об ошибке
после его исчезновения из окна "Ошибка" строки состояния.

Сравнение Редакторов ТБ и "WS"
- - - - - - - - - - - - - - - -
Многие команды Редактора ТБ несколько отличаются от "WS",  неко-
торые команды, которых нет в "WS", были добавлены для расширения
возсожностей редактирования исходного программного  текста. Ниже
рассмотрены эти различия.
    Команды перемещения курсора в ТБ:  Ctrl-S,  Ctrl-D, Ctrl-E и
Ctrl-X свободно перемещают его по экрану,  не перескакивая в ко-
лонку 1 на свободных строках. Это не значит, что на экране много
свободных мест  -  напротив,  все конечные пробелы автоматически
устраняются. Такие  возможности  перемещения  курсора   особенно
привлекательны при составлении программ, например, для сопостав-
лении смещенных пар FOR/NEXT.
    Ctrl-S и Ctrl-D не работают при переносе строк.  Для переме-
щения с одной строки на другую следует использовать Ctrl-E, Ctrl
-X или Ctrl-F.
    В ТБ символы "возврат каретки" не могут быть введены в конце
файла в  режиме  "Замена"(Owerwrite);  т.е.  если  режим "Встав-
ка"(Insert) выключен,  нажатием Enter в  онце  файла  невозможно
вставить символ  возврата каретки или переместить курсор на сле-
дующую строку. Можно, однако либо включить режим "Вставка", либо
использовать команду Ctrl-N в режиме "Замена" для ввода "возвра-
та каретки".
    Последовательность Ctrl-Q Del   -  стереть с текущей позиции
курсора до начала строки, выполняемая в "WS", - не обеспечивает-
ся.
    ТБ позволяет маркировать отдельное слово как  блок  командой
Ctrl-KT. Это  гораздо  удобнее  двухшаговой команды "WS",  когда
приходится отделно маркировать начало и конец одного слова.
    Поскольку редактирование в ТБ полностью осуществляется в ЗУ,
команда Ctrl-KD не меняет файл на диске,  как в "WS". Обновление
дискового  файла  осуществляется  выполнением  команды  "Запись"
(Save) в меню "Работа с Файлами"  или  автоматически  в варианте
Auto save (Автоматическая  запись)  набора  "Разных  команд"  из
"Setup Menu" (Наборное меню). Можно также  использовать  F2  или
Ctrl-KS.
    Команда Ctrl-KQ в ТБ не адекватна Ctrl-KQ (прекратить редак-
тирование) "WS". Измененный текст не выбрасывается. - он остает-
ся в памяти, готовый к компилированию и записи.
    Команда Ctrl-QL  в  ТБ  восстанавливает строку в ее первона-
чальном виде (до редактирования), пока курсор остается на данной
строке.
    Команда Ctrl-IQ в ТБ включает/выключает режим автоотступа.
    Кклавиша Backspace (обратный пробег) в ТБ работает, как кла-
виша Del (Стирание) в "WS" - она стирает символы слева от курсо-
ра.  Клавиша Del в ТБ стирает знаки в позиции курсора.

Основное меню
-----------------------------------------------------------------
ТУРБО  БЕЙСИК  работает  с помощью наборов  команд,  спускающихся
меню, а также обеспечивает четыре окна для среды программирования
(показанных  на рис.3-1).  В  данном разделе рассмотрено действие
каждой из команд основного  меню,  и  соответствующие им спускаю-
щиеся меню и варианты (если такие имеются).
    Для выбора и вызова функции в основном меню нажмите клавишу,
соответствующую помеченной  прописной  букве желаемого варианта,
или используйте клавиши "стрелок" для  перемещения  на  желаемый
вариант и нажмите Enter. Нажатие, например, клавиши E (для Edit)
запускет Редактор.  В этом случае уже не нужно  нажимать  Enter.
Для выхода  из  любого  спускающегося меню просто нажмите Esc.
    Если вы работаете в окне Редактора, или любом из спускающих-
ся меню, нажатием Alt и первой буквы верхнего меню можно войти в
этот вариант.
  ----------------------------------------------------------¬
  ¦ File  Edit  Run  Compile  Options  Setup  Window  Debug ¦
  +--------------------------------------------------T------+
  +---------------------Еdit------------------------¬¦Trace ¦
  ¦  C:NONAME.BAS  Line 1  Col 17 Insert Indent Tab ¦¦      ¦
  ¦                                                 ¦¦      ¦
  ¦                                                 ¦¦      ¦
  ¦                                                 ¦¦      ¦
  ¦                                                 ¦¦      ¦
  ¦                                                 ¦¦      ¦
  +--------------------------------------------------¦      ¦
  +----------- Message ---------¬-------- Run ------¬¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  +-----------------------------++------------------++------+
  ¦F1-Help  F5-Zoom  F7-Gate  SCBOOL-Size/weve    Alt-X-Edit¦
  L----------------------------------------------------------
               Рисунок  3-1. Основное меню.

    Установить цвета, каталоги и другие характеристики можно че-
рез спускающиеся Установочные (Setup) меню (описанные ниже). Лю-
бые изменения  можно сохранить  в .TB-файле.  Файл .TB  по умол-
чанию TBCONFIG.TB,  но  с  помощью  команд Setup можно обслужить
несколько .TB файлов.
    Для изменения  размера и/или перехода в другое активное окно
(в двойнрй "рамке") нажмите Scroll Lock. Затем  зажмите  клавишу
Shift и с помлщью стрелок перемещайте и/или меняйте  размер окна
вправо,  влево,  вверх, вниз и т.п.
    В ТБ контекстная Подсказка обеспечивает необходимую информа-
цию именно для текущего экрана, независимо от того, в каком меню
Вы  в этот момент  работаете.  Для  выхода  в Подсказку с любого
уровня нажмите F1; а а нажатием Alt-F1 можно перейти  в предыду-
щую подсказку.
    Кроме того,  в ТБ есть ряд клавиш ("горячих"), которые можно
использовать независимо от текущего "места"  работы  в  Основном
меню. Например, для выхода из ТБ из любого варианта меню, нажми-
те Alt-X. Для вашего удобства, все "горячие" клавиши перечислены
в таблице 3-2.

             Таблица 3-2  "Горячие клавиши ТБ"
------------------------------------------------------------
Клавиши         Функция
____________________________________________________________

F1           Обеспечивает контектуальную подсказку
F2           Записывает ваш файл
F3           Создает новый файл
F5           "Распахивает" окна Прогона или Редактора
F6           Включает активное окно
F7           Изнутри системы меню переход в активное окно
Scroll Lock  Меняет размер или перемещает активное окно
Esc          Возвращает в основное меню
Alt-C        Компилирует текущую загруженную программу
Alt-E        Редатирует текущую загруженную программу
Alt-R        Прогон текущей загруженной программы
Alt-X        Выход из ТБ системы
Alt-F        Переход в меню "Файлы" (Files)
Alt-O        Переход в меню "Варианты" (Optios)
Alt-D        Переход в меню "Отладка" (Debug)
Alt-W        Переход в меню "Окна" (Windous)
------------------------------------------------------------

Команды работы с файлами
- - - - - - - - - - - - -
Команда Файл вызывает спускающееся  меню,  содержащее  несколько
вариантов (см. рис. 3-2).
  ----------------------------------------------------------¬
  ¦ File  Edit  Run  Compile  Options  Setup  Window  Debug ¦
  +--T----------T------------------------------------T------+
  +--+Load      +-------Еdit------------------------¬¦Trace ¦
  ¦  ¦New       ¦  Line 1  Col 17 Insert Indent Tab ¦¦      ¦
  ¦  ¦Save      ¦                                   ¦¦      ¦
  ¦  ¦Write to  ¦                                   ¦¦      ¦
  ¦  ¦Main file ¦                                   ¦¦      ¦
  ¦  ¦Directory ¦                                   ¦¦      ¦
  ¦  ¦Change dir¦                                   ¦¦      ¦
  ¦  ¦OS shell  ¦                                   ¦¦      ¦
  ¦  ¦Quit      ¦                                   ¦¦      ¦
  ¦  L-----------                                   ¦¦      ¦
  +--------------------------------------------------¦      ¦
  +----------- Message ---------¬-------- Run ------¬¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  +-----------------------------++------------------++------+
  ¦F1-Help  F5-Zoom  F7-Gate  SCBOOL-Size/weve    Alt-X-Edit¦
  L----------------------------------------------------------
               Рисунок  3-2. Меню файлов.

- Загрузить (Load)
Команда Загрузить позволяет выбрать рабочий файл,  который можно
затем редактировать, компилировать , выполнять или записывать.
    После нажатия клавиши L (Load/Загрузить)  машина запрашивает
имя файла. Можно ввести любое из нижеперечисленных:
    1. Любое допустимое имя файла. Если опущены точка и тип фай-
       ла (расширение), автоматически присваивается расширение .
       BAS; для уточнения имени файла без  расширения  поставьте
       точку в конце вводимого имени файла.
    2. Имя файла из каталога.Сверка с содержимым каталога проис-
       ходит, когда после ответа на вопрос Имя Файла (File Name)
       нажимается Enter или печатается  имя  файла  с  символами
       шаблонов и  нажимается  Enter.  Если имя файла не задано,
       пролистываются все файлы. В любом случае можно потом про-
       бежать курсором  вверх и вниз по списку имен файлов,  ис-
       пользуя клавиши "стрелок",  Home, End, PgUp и PgDn. Выбор
       фиксируется нажатием Enter.  При нажатии Esc курсор возв-
       ращается в вариант "Загрузить" (Load).
    Если вы хотите назначить свое расширение,  старайтесь  избе-
гать таких,  которые имеют в ДОС свои особые значения:.EXE, .COM
и .BAT;  не используйте также .BAK,  поскольку редактор  создает
резервные файлы с этим расширением.
    Старайтесь выбирать уникальные имена файлов,  независимо  от
того, используете  вы  расширения или нет.Рассмотрим,  например,
имена файлов MYPROG.V1 и MYPROG.V2. После редактирования и запи-
си MYPROG.V1    ТБ    переименовывает   оригинал   программы   в
MYPROG.BAK; когда же вы отредактируете затем файл MYPROG.V2, его
оригинал также будет назван MYPROG.BAK и записан,  уничтожив та-
ким образом первый резервный файл.
    При нажатии клавиши Enter после ввода рабочего файла ТБ ищет
его в текущем каталоге данного диска и если не может  найти этот
файл, создает новый.

- Новый файл (New)
При этом варианте текст в текущем редакторе  стирается  и  файлу
присваивается по умолчанию имя NONAME.BAS.

- Сохранить (Save)
По этой команде текщий рабочий файл записывается на диск.  Преж-
ней версии названного файла, если таковая существует, присваива-
ется расширение .BAK;  если ваш рабочий файл назван NONAME.BAS и
вы попытаетесь его записать,  то вам будет предоставлена возмож-
ность переименовать его до записи.  Если же  вы  просто  нажмете
Enter, то будет записан файл NONAME.BAS.

- Записать в (Write to)
После редактирования выберите вариант "Записать  в"  для  записи
текущего редактируемого  файла на диск под новым имененм. Машина
запросит новое имя.

- Основной файл (Main File)
При работе с большими программами вы можете предпочесть разбивку
исходной программы на удобные для работы части. Впрочем, если вы
превысите объем  редактора,  иного выхода и не будет.  Отдельные
части большой программы сохраняются и редактируются как  незави-
симые "составные" файлы, но при необходимости компиляции собира-
ются в единое целое.
    Вместе с  выдачей  промежуточных  операторов $INCLUDE (Вклю-
чить) выбор  варианта  Основной  файл  позволяет   компилировать
программы, состоящие из нескольких исходных программ.
    Исходный модуль,  который вы определите как  Основной  файл,
должен содержать директивы $INCLUDE.  Как обычно, для редактиро-
вания любого модуля программы (даже Основного) сделайте его  те-
кущим загружаемым файлом.
    По получении команды Compile (Компилировать),  ТБ  проверяет
не отличается  ли  текущий  рабочий файл от Основного.  Если нет
(или если Основного файла нет),  - компилируется  рабочий  файл.
Если же  он отличается,  машина запрашивает сохранить ли рабочий
файл (если в него были внесены изменения), и Основной файл затем
загружается в  память.  Если  при компилировании найдена ошибка,
файл, содержащий ее автоматически загружается  для  редактирова-
ния. После исправления ошибки и возобновления компиляции следует
подсказка сохранить исправленный рабочий  файл.  Затем  повторно
загружается Основной файл.

- Каталог (Directory)
Нажмите D для "пролистования" содержания каталога,  поиска ката-
логов и изменения маски "пробела".

- Сменить каталог (Change dir)
Эта команда вводится для перехода в другой каталог.  После нажа-
тия клавиши  C  следует запрос ветви каталога;  она и становится
вашим текущим каталогом. Может быть введено любое допустимое имя
ветви.  См. "наборные команды" (Setup commands): описание других
каталогов, используемых системой.

- Командный процессор операционной системы (OS shell)
Нажатием O вызывается операционная система DOS;  ТБ остается ре-
зидентно в памяти.  как только DOS загружена,  любая команда DOS
может быть выполнена.  Управление передается  вновь  резидентной
системе ТБ командой EXIT (Выход).

- Прервать работу (Quit)
Эта команда выводит вас из программы ТБ в DOS. Если текущий файл
был изменен и еще не записан,  последует соответствующий запрос.
(Можно также выйти из ТБ нажатием Ctrl-X из любого варианта сис-
тем меню).

Команда Edit (Редактировать)
- - - - - - - - - - - - - - -
Команда Edit запускает встроенный экранный редактор,  переводя в
него рабочий файл для редактирования. (Вы называете имя рабочего
файла при выборе команды "Загрузить" (Load) в  спускающемся меню
"Файлы") Если  имя  рабочего  файла  не  указано,  присваивается
NONAME.BAS.
    Для выхода  из  редактора и возврата в основное меню нажмите
Esc. Исходный текст остается на экране и  достаточно  нажать  E,
чтобы вернуться к нему.

Команда Compile (Компилировать)
- - - - - - - - - - - - - - - -
Компилятор ТБ, написанный полностью на ассемблере, это высокоэф-
фективный транслятор.
    Команда Compile компилирует текущую программу в редакторе. В
результате компиляции программа размещается в памяти (по умолча-
нию), в файле .EXE,  или в файле TBC (цепной),  в зависимости от
текущей установки варианта Compile to (Компилировать в..) в меню
"Option"
    Нажмите C (или Enter если вы находитесь в позиции этого  ва-
рианта) для  запуска  компиляции.  Если Основной файл не назван,
компилируется загруженный файл.
    Если выбран Основной файл,  машина запрашивает, хотите ли вы
сохранить текущий рабочий файл (если файл в редакторе был  изме-
нен). Затем Основной  файл загружается и компилируется.
    По мере компиляции ТБ отображает в окне "Сообщение" увеличе-
ние на  20 числа строк и операторов,  обработанных на данный мо-
мент. Ctrl-Break прерывает компиляцию.
    При обнаружении  ошибки  программа  переводится в редактор в
точке нахождения ошибки.  Описание ошибки отображается в "строке
состояния" Редактора.  После исправления ошибки вновь появляется
строка состояния. Для восстановления сообщения об ошибке нажмите
Ctrl-QW.
    По завершении компиляции в окне Сообщения показывается общее
число строк и операторов в программе, размеры кодовых сегментов,
стек и область данных  сгенерированной программы (в шестнадцати-
ричном формате),  а также объем свободного  места в  памяти  для
компиляции  (см. рис. 3-3).  Обратите  внимание,  что  свободной
памяти  остается  гораздо больше при компиляции в .EXE  или .TBC
файлы, чем при компиляции в память.
  ----------------------------------------------------------¬
  ¦ File  Edit  Run  Compile  Options  Setup  Window  Debug ¦
  +--------------------------------------------------T------+
  +---------------------Еdit------------------------¬¦Trace ¦
  ¦  C:MYFIRST.BAS Line 1  Col 17 Insert Indent Tab ¦¦      ¦
  ¦  WHILE -1      _                                ¦¦      ¦
  ¦      FOR N=1 TO 7                               ¦¦      ¦
  ¦          READ A$                                ¦¦      ¦
  ¦          PRINT A$  " ";                         ¦¦      ¦
  ¦      NEXT N                                     ¦¦      ¦
  ¦      PRINT                                      ¦¦      ¦
  ¦      RESTORE                                    ¦¦      ¦
  ¦  WEND                                           ¦¦      ¦
  +--------------------------------------------------¦      ¦
  +----------- Message ---------¬-------- Run ------¬¦      ¦
  ¦Compiling: MYFIRST           ¦¦                  ¦¦      ¦
  ¦Line:     9   stat    11     ¦¦                  ¦¦      ¦
  ¦Code:     3394               ¦¦                  ¦¦      ¦
  +-----------------------------++------------------++------+
  ¦F1-Help  F5-Zoom  F7-Gate  SCBOOL-Size/weve    Alt-X-Edit¦
  L----------------------------------------------------------
               Рисунок  3-3.  Экран при компиляции.


Команда Run (Прогон)
- - - - - - - - - - -
Команда Run выполняет  программу,  находящуюся  в  памяти.  Если
скомпилированная программа уже в памяти, и исходная программа не
изменялась в редакторе с момента  последнего  исполнения  команд
Компилировать или Прогон (Compile или Run),  и варианты не меня-
лись,она выполняется немедленно. Если скомпилированной программы
в памяти нет, то вначале компилируется исходная программа, нахо-
дящаяся в редакторе,  а получившаяся в результате программа  вы-
полняется.
    При выполнении программы ее работу можно  прервать  нажатием
Ctrl-Break, если  установлен  вариант  "Прерывание с клавиатуры"
(Keyboard break) и прогоняемая программа  выполняет  ввод/вывод.
Если замечена  ошибка,  программа переводится в редактор в точке
обнаружения ошибки. Описание ошибки появляется в "строке состоя-
ния" редактора.  Исправьте ошибку и верните программу (повторная
компиляция произойдет автоматически).
    В окне  "Сообщения"  (Message) ТБ отображается увеличение на
20 числа обработанных строк и операторов.  В окне  "Прогон"(Run)
отображается вывод программы. Для распахивания окна "Прогон" при
прогоне программы нажмите Ctrl-F5.

Команда Options (Варианты)
- - - - - - - - - - - - - -
Команда Options  обеспечивает  спускающееся  меню режимов работы
компилятора (см.  рис.  3-4). Эти режимы общие, управляющие всей
компиляцией, если только их не замещают внутренние метаоператоры
исходной программы.
  ----------------------------------------------------------¬
  ¦ File  Edit  Run  Compile  Options  Setup  Window  Debug ¦
  +--------------------------------------------------T------+
  +---------------------Еdit---------------T--------¬¦Trace ¦
  ¦  C:NONAME.BAS  Line 1  C¦Compile to    ¦Memory  ¦¦      ¦
  ¦                         ¦8087 required ¦ ON     ¦¦      ¦
  ¦                         ¦Keyboard break¦OFF     ¦¦      ¦
  ¦                         ¦Bounds        ¦OFF     ¦¦      ¦
  ¦                         ¦Overflow      ¦OFF     ¦¦      ¦
  ¦                         ¦Stack test    ¦OFF     ¦¦      ¦
  ¦                         +--------------+--------+¦      ¦
  ¦                         ¦Parameter line         ¦¦      ¦
  ¦                         ¦Metastatments          ¦¦      ¦
  +-------------------------+------------------------¦      ¦
  +----------- Message ---------¬-------- Run ------¬¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  +-----------------------------++------------------++------+
  ¦F1-Help  F5-Zoom  F7-Gate  SCBOOL-Size/weve    Alt-X-Exit¦
  L----------------------------------------------------------
               Рисунок  3-4.  Меню Options.

- Compile to (Компилировать в)
Эта установка позволяет компилировать программы в  память,  файл
.EXE или в цепочечный файл. Нажмите C и Enter (или просто Enter)
для выхода в всплывающее меню,  в котором перечислены данные ва-
рианты, а  затем сделайте выбор с помощью "стрелок" или нажатием
клавиши, соответствующей высвеченной прописной букве.
    По умолчанию  Компилировать  в Память лучший вариант для от-
ладки и тестирования программы,  поскольку дает самый скорый ре-
зультат.
    Составление файлов типа .EXE заставляет компилятор создавать
программы, которые  запускаются из операционной системы.  Обычно
этот режим выбирают после отладки программы,  если некоторые ха-
рактеристики языка  (например,  CHAIN/составление цепочек) может
быть проверено только на ДОС.
    Установка на  Цепочечный файл позволяет составлять файлы  (с
расширением .TBC), пригодные для составления цепочек или запуска
из составленного в ТБ файла .EXE. В этих файлах нет библиотечных
подпрограмм, поэтому их независимый запуск невозможен.
В ТБ есть несколько ключей генерации команд,  доступных из Вари-
антного (Options) меню. Положение ключа по умолчанию - "выкл." -
дает наиболее быструю,  компактную и гибкую программу.  Конечно,
включить некоторые или все ключи на этапах разработки или отлад-
ки программы.  Для выбора используйте "стрелки" или клавиши, со-
ответствующие высвеченным прописным буквам в вариантах меню. Эти
варианты можно  сохранить в конфигурационном файле с помощью на-
борного (Setup) меню.

    Нажатием Enter  при  расположении на данном варианте,  можно
включать/выключать следующие режимы:
- Обязательное использование сопроцессора 8087
- Прерывание с клавиатуры
- Связки
- Переполнение
- Тестирование стека

- Обязательное использование сопроцессора 8087
Включайте этот вариант при использовании  кристалла сопроцессора
8087 для  выполнения программы.  При включении этого варианта ТБ
генерирует наилучшие команды для операций над числами с  плаваю-
щей запятой,  команды быстрые и компактные, используя встроенные
операторы 8087.  Недостатком является то, что программа, создан-
ная с  помощью  этого  варианта не будет работать на машине,  не
имеющей 8087.
    При отключенном варианте 8087 (по умолчанию) программа может
выполняться двумя способами:  т.е. если 8087 есть, программа его
использует. Если нет - использует системные программы для дости-
жения того же результата (может быть, несколько медленнее).
    ВНИМАНИЕ: В некоторых случаях программа прочитает, что в ва-
шей машине есть кристалл 8087,  тогда как в действительности его
там нет;  например,  если вы включили 8087, но еще не установили
кристалл. Это вызовет либо зависание ТБ  при  работе  программы,
либо генерацию  ошибок  при трансляции.Параметры среды позволяют
отлично решить эту проблему.  Добавьте следующие  данные  в  ваш
файл AUTOEXEC.BAT:

SET87 = no

Более подробную   информацию   по   параметрам  среды  и  файлам
AUTOEXEC.BAT можно найти в Приложении G к  книге  "ДОС:  Учебник
для начинающих".

- Прерывание с клавиатуры (Keyboard break)
Если вы хотите прервать программу с помощью Ctrl-Break, включите
этот вариант. Заметьте, что это относится только к Ctrl-Break, а
не к Ctrl-C, который не может прервать программу ТБ. Учтите, что
прерывание программы с помощью Ctrl-Break окончательно - продол-
жить выполнение программы в дальнейшем невозможно.
    Важно также отметить, что Ctrl-Break не действует до момента
вывода программой текста (не графики) на экран или  принтер  или
до осуществления ввода с клавиатуры. Это означает, что невозмож-
но прервать выполнение последовательностей, не включающих опера-
ции ввода/вывода; например

TightLoop:
GOTO TightLoop

работает до перезапуска системы.(Однако, чтобы снять эту пробле-
му замкнутого цикла, ТБ оборудован вариантом Автозаписи. Другими
словами, этот вариант можно включить с тем,  чтобы, если вам не-
обходимо  выйти из программы перезагрузкой,  вы  все  же  смогли
сохранить свою программу. См. "Установочное (Setup) меню".)

    Следующие варианты можно использовать для обнаружениян неко-
торых типов  динамических  ошибок.  Обычно  на  этапе разработки
программы желательно,  чтобы все эти режимы  были  включены  для
тогo, чтобы обнаружить любые ошибки.Когда же программа отлажена,
выключите эти варианты  для генерирования  окончательной  версии
программы, которая  станет  более быстрой и займет меньший объем
памяти.

- Связки (Bounds)
При включении этого режима компилятор генерирует команды провер-
ки индексов массива, обеспечивающие правильность индексов масси-
ва, заданием  размеров предполагаемого массива до считывания или
записи указанного элемента. При включенном режиме "Проверка свя-
зок" (Bounds checking) машина немедленно сообщит об ошибке в ди-
апазоне индекса (ошибка 9), как только ваша программа попытается
использовать слишком большой или слишком маленький - для данного
массива - индекс.
    Рассмотри, например, программу:

DIM myArray(100)
x = 114
y = myArray(x)

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

DIM myArray(100)
y = myArray(114)

- Переполнение (Overflow)
Переполнение происходит,  если   в   результате   арифметических
действий получается значение, выходящее за пределы объема памяти
целых чисел (от -32768 до +32767). Например, фрагмент команды

x% = 22555
x% = x5 + 19000

выходит за пределы диапазона целых чисел +32767. Если компилиро-
вать эту программу с включенным режимом  "Проверка переполнения"
(Overflow cheecking),  генерируется  ошибка переполнения при вы-
полнении. Однако, при выключенной проверке x% придается неверное
значение, а выполнение программы продолжается,  словно ничего не
случилось (что, возможно ,"не понравится" остальной программе).
    Следите за моментальным переполнением, например:

y% = 20000 : x% =y%
z = (y% + x%) * 2.1

    И  хотя  конечный результат выражения (y% + x%) * 2.1  легко
вписывается в формат одинарной точности с плавающей запятой, пе-
реполнение произойдет, когда y% и x% складываются программой це-
лых чисел  перед тем,  как результат преобразуется в формат оди-
нарной точности и умножается на 2.1.  Используйте функции CSNG и
CDBL для  выполнения целочисленных опреаций в формате с павающей
запятой.
    Обратите внимание, что "Проверка переполнения" действует для
целых чисел или любого из типов  с  плавающей  запятой;  однако,
среди целых чисел есть некоторые исключения (например, регистро-
вые вычисления)

- Проверка стека(Stask test)
Включение этого режима заставляет ТБ генерировать команду,прове-
ряющую конфликты стеков при  вхождении  в  каждую  подпрограмму,
функцию или процедуру.  Если вы подозреваете,  что в ваших прог-
раммах исчерпывается стековое пространство, компилируйте с вклю-
ченным режимом  "Stask  test".  Для выделения большего стекового
пространства используте метаоператор $Stask.

    Последние два  режима  в Вариантном меню - Строка параметров
(Parameter line) и Метаоператоры (Metastatements).

- Строка параметров (Parameter line)
Выбор P заставляет ТБ подсказывать на строке,  что COMMAND$ вер-
нет в следующий раз при выполнении программы.  Это позволяет мо-
делировать информацию  командной  строки  для помощи при отладке
внутри ТБ.  Нажатием Enter после заполнения строки и затем нажа-
тием Esc возвращаетесь в основное меню.

- Метаоператоры (Metastatements)
Последний вариант в Вариантном (Options) меню -  Метаоператоры -
имеет  свое  собственное всплывающее меню, показанное на рисунке
3-5. Варианты можно выбрать нажатием S для Stack  (Стек),  Music
(Музыка), C для Communicatons (Связь); либо использовать "стрел-
ки" и нажатие Enter при "попадании" на вариант.  Обратите внима-
ние, что ваша исходная программа может отменить эти установки.
  ----------------------------------------------------------¬
  ¦ File  Edit  Run  Compile  Options  Setup  Window  Debug ¦
  +--------------------------------------------------T------+
  +---------------------Еdit---------------T--------¬¦Trace ¦
  ¦  C:NONAME.BAS  Line 1  C¦Compile to    ¦Memory  ¦¦      ¦
  ¦                         ¦8087 required ¦ ON     ¦¦      ¦
  ¦                         ¦Keyboard break¦OFF     ¦¦      ¦
  ¦                         ¦Bounds        ¦OFF     ¦¦      ¦
  ¦                         ¦Overflow      ¦OFF     ¦¦      ¦
  ¦                         ¦Stack test    ¦OFF     ¦¦      ¦
  ¦                         +--------------+--------+¦      ¦
  ¦                         ¦Metastatments          ¦¦      ¦
  ¦                         ¦Stack size   768       ¦¦      ¦
  +-------------------------+------------------------¦      ¦
  +----------- Message ---------¬-------- Run ------¬¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  +-----------------------------++------------------++------+
  ¦F1-Help  F5-Zoom  F7-Gate  SCBOOL-Size/weve    Alt-X-Exit¦
  L----------------------------------------------------------
               Рисунок  3-5.    Меню Metastatements.

- Режим "Размер стека" используется для определения (пересмотра)
размера стека.  По  умолчанию  он составляет 1024 десятичных или
400 шестнадцатиричных байт (1 параграф составляет 16  байт). При
нажатии S  машина  запрашивает новый размер стека в диапазоне от
400 до 7FFE шестнадцатиричных байт. (См. метаоператор  $STACK  в
главе 5)

- В  "Музыкальном  буфере" задается размер файла фоновой музыки.
Если SOUND (Звук) или PLAY (Играть) не  используются, полученная
программа будет  меньше,  если поставить их на "0".  Минимальный
размер буфера 0, максимальный - 4096 нот. Оьратите внимание, что
1 нота  составляет  8  байт;  по умолчанию 32 ноты или 256 байт.
(См. метаоператор $SOUND в главе 5).

- "Связь" относится к приемному буферу каждого коммуникационного
порта. (В некоторых программах можно использовать метаоператор $
COMn для изменения выделения буферов.) Минимум - 0;  максимум  -
32767; по умолчанию - 256 байт.

Команда "Setup" (Установка)
- - - - - - - - - - - - - -
Выбирайте Setup для проверки любого установочного параметра, его
изменения или записи текущей конфигурации в файле  .TB. Наборное
(SETUP) меню показано на рис. 3-6.
  ----------------------------------------------------------¬
  ¦ File  Edit  Run  Compile  Options  Setup  Window  Debug ¦
  +--------------------------------------------------T------+
  +-------------------- Еdit ----T-------------------+-----¬¦
  ¦  C:NONAME.BAS  Line 1  Col 1 ¦Colors                   ¦¦
  ¦                              ¦Directories              ¦¦
  ¦                              ¦Miscellanous             ¦¦
  ¦                              ¦Load options/Window/setup¦¦
  ¦                              ¦Save options/Window/setup¦¦
  ¦                              ¦Stack test               ¦¦
  ¦                              L------------------TT------¦
  ¦                                                 ¦¦      ¦
  ¦                                                 ¦¦      ¦
  +--------------------------------------------------¦      ¦
  +----------- Message ---------¬-------- Run ------¬¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  +-----------------------------++------------------++------+
  ¦F1-Help  F5-Zoom  F7-Gate  SCBOOL-Size/weve    Alt-X-Exit¦
  L----------------------------------------------------------
               Рисунок  3-6.    Меню Setup.

- Цвета
Используйте этот  вариант  для  установки цветов одного или нес-
кольких системных врезок,меню или окон. Нажмите C или ENTER  для
вызова всплывающего меню и выберите "Окна","Меню" или "Системные
врезки" (см.Рис.3-7). Есть еще несколько всплывающих  меню   для
дальнейшего уточнения  изменений  в  изображенном  окне,меню или
врезке.
    ----------------------------------------------------------¬
    ¦ File  Edit  Run  Compile  Options  Setup  Window  Debug ¦
    +--------------------------------------------------T------+
    +-------------------- Еdit ----T-------------------+-----¬¦
    ¦  C:NONAME.BAS  Line 1  Col 1 ¦Colors                   ¦¦
    ¦                              ¦Di--------------------¬  ¦¦
    ¦                              ¦Mi¦Windows            ¦  ¦¦
    ¦                              ¦Lo¦Menus              ¦  ¦¦
    ¦                              ¦Sa¦System boxes       ¦  ¦¦
    ¦                              ¦StL--------------------  ¦¦
    ¦                              L------------------TT------¦
    ¦                                                 ¦¦      ¦
    +--------------------------------------------------¦      ¦
    +----------- Message ---------¬-------- Run ------¬¦      ¦
    ¦                             ¦¦                  ¦¦      ¦
    ¦                             ¦¦                  ¦¦      ¦
    ¦                             ¦¦                  ¦¦      ¦
    +-----------------------------++------------------++------+
    ¦F1-Help  F5-Zoom  F7-Gate  SCBOOL-Size/weve    Alt-X-Exit¦
    L----------------------------------------------------------
               Рисунок  3-7.  Меню Colors.

    Например,если вы выберите какие-то меню из первого всплываю-
щего меню,то  нужно  будет  выбирать  Основное/спускающееся  ме-
ню, Первое,  Второе или Третье всплывющее меню. Если выбрать Ос-
новное/спускающееся меню, появляется  другое  всплывающее  меню,
помогающее определить как изменить этот выбор.  Варианты включа-
ют: Заголовок,  Окантовка,  Нормальный текст, Первая буква, Зона
выбора и восстановить режим "По умолчанию"(см.Рис.3-8).
    ----------------------------------------------------------¬
    ¦ File  Edit  Run  Compile  Options  Setup  Window  Debug ¦
    +--------------------------------------------------T------+
    +-------------------- Еdit ----T-------------------+-----¬¦
    ¦  C:NONAME.BAS  Line 1  Col 1 ¦Colors                   ¦¦
    ¦                              ¦Di--------------------¬  ¦¦
    ¦                              ¦Mi¦Menus              ¦  ¦¦
    ¦                              ¦Lo¦Wi-----------------+¬ ¦¦
    ¦                              ¦Sa¦Sy¦Main/pull-down   ¦ ¦¦
    ¦                              ¦StL--+  ---------------+-+¦
    ¦                              L-----+  ¦Title           ¦¦
    ¦                                    ¦  ¦Border          ¦¦
    ¦                                    ¦  ¦Normal text     ¦¦
    +------------------------------------+--+First letter    ¦¦
    +----------- Message ---------¬---------+Selection bar   ¦¦
    ¦                             ¦¦        ¦--------------- ¦¦
    ¦                             ¦¦        ¦Restore defaults¦¦
    ¦                             ¦¦        L---------TT------¦
    +-----------------------------++------------------++------+
    ¦F1-Help  F5-Zoom  F7-Gate  SCBOOL-Size/weve    Alt-X-Exit¦
    L----------------------------------------------------------
               Рисунок  3-7. Второе меню Colors.

    Как только вы выбрали что именно изменить в  меню, например,
Зону выбора,  появляется блок выбора палитры.  Используя "стрел-
ки", выберите соответствующий цвет из палитры,  нажмите Enter, а
затем Esc. Окно, которое вы выбрали, отражает текущий цвет.

- Каталоги
Элементы Include (импликация), Executable (выполняемые) и Turbo
(турбо) определяют дисковод и маршрут для каждого из трех  ката-
логов, используемых системой.  Каталог "по умолчанию"-тот, в ко-
тором вы находитесь перед запуском ТБ.
   При выборе каталога машина запрашивает диск и маршрут.  Напе-
чатайте код дисковода /или маршрут,  нажмите Enter и  ТБ  примет
вашу  спецификацию.  Если  вы решили изменить избранный каталог,
можно нажать Esc в любой момент до выхода из системного блока до
нажатия Enter и вернуться к выбору каталогов.
   Каталоги Include используются для файлов, содержащих директи-
ву транслятора "Include". Специфицировать множественные каталоги
можно, разделяя их точкой с запятой.
   Каталог Executable используется для .EXE и .TBC файлов, гене-
рируемых системой ТБ, а также временных файлов, создаваемых ком-
пилятором. За один раз можно выбрать только один каталог.
   Каталог Turbo используется для собственно системы ТУРБО  БЕЙ-
СИК, т.е.  для системного файла  TB.EXE, конфигурационных файлов
(.TB)  и файлов "подсказки" (TBHELP.TBH).  И вновь,  каждый  раз
можно выбирать только один каталог.

- Разное
Нажатие М вызывает всплывающее меню с двумя  специальными  пара-
метрами:

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

-Резервные исходные файлы.  При включении этого режима все файлы
резервируются автоматически.  Выключите,  если не хотите,  чтобы
при записи каждый раз создавался резервный файл.

   Все варианты компилятора и  значения  заданий  загружаются  и
хранятся в конфигурационном файле (если только не обозначить TB.
EXE).  Это очень полезно для различной подстройки среды програм-
мирования.  Например,  при  отладке программ может потребоваться
включить все варианты компилятора,  а также расширить Окно трас-
сировки и включить флаг полной трассировки. Другой шаблон конфи-
гурации может быть для окончательных компиляций без Окон трасси-
ровки и прогона и полностью включенными режимами.
   Следующие режимы (варианты) позволяют загружать и записывать,
соответственно, шаблоны конфигураций.

- Режимы Загрузки /Окна/Шаблон (Load/Window/Setup)
Нажмите L  для загрузки .ТВ-файла из каталога Turbo и переформа-
тирования системы в соответствии с содержащимися в нем  парамет-
рами.

- Режимы Записать /Окна/Шаблон (Save/Window/Setup)
S записывает текущий шаблон в файле .ТВ в каталоге Turbo. Конфи-
гурации можно присвоить любое имя,  но обычно при первом запуске
ТБ  автоматически  используется  имя по умолчанию (TBCONFIG.TB).
Можно также записать указатель конфигурации в файл TB.EXE; одна-
ко, в этом случае последует запрос: хотите ли вы изменить исход-
ный оригинал файла TB.EXE.

Команды Окна
- - - - - - -
Как говорилось в разделе "Основное меню", можно менять размеры и
передвигать любое текущее окно,  нажав Scroll Lock , а затем на-
жав клавишу Shift и используя "стрелки" в  желаемом направлении.
Поумолчанию все  окна являются действующими до тех пор,  пока вы
не закроете их.
    Для включения спускающегося меню Команд окна, показанного на
Рис. 3-9, нажмите W.
  ----------------------------------------------------------¬
  ¦ File  Edit  Run  Compile  Options  Setup  Window  Debug ¦
  +--------------------------------------------------T------+
  +-------------------- Еdit --------------T------T-¬¦Trace ¦
  ¦  C:NONAME.BAS  Line 1  Col 1 Insert Ind¦Open  ¦ ¦¦      ¦
  ¦                                        ¦Close ¦ ¦¦      ¦
  ¦                                        ¦Next  ¦ ¦¦      ¦
  ¦                                        ¦Go to ¦ ¦¦      ¦
  ¦                                        ¦Tile  ¦ ¦¦      ¦
  ¦                                        ¦Stack ¦ ¦¦      ¦
  ¦                                        ¦Zoom  ¦ ¦¦      ¦
  ¦                                        L------- ¦¦      ¦
  ¦                                                 ¦¦      ¦
  +-------------------------------------------------+¦      ¦
  +----------- Message ---------¬-------- Run ------+¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  ¦                             ¦¦                  ¦¦      ¦
  +-----------------------------++------------------++------+
  ¦F1-Help  F5-Zoom  F7-Gate  SCBOOL-Size/weve    Alt-X-Exit¦
  L----------------------------------------------------------
               Рисунок  3-9.    Меню Окна.


- Open (Открыть)
Нажмите O и выберите Edit (Редатировать) Run (Выполнить) Message
(Сообщения) или  Trace (Трассировка) из всплывающего меню.  Open
"активизирует" выбранное окно. Это значит, что если это окно бы-
ло ранее  закрыто,  оно будет создано,  и в любом случае "откры-
тое" окно будет помещено в  верхней  части  экрана.  Все  другие
"оконные" команды  с  этого  момента будут относиться к текущему
окну.

- Close (Закрыть)
Команда "прячет"  текущее выбранное окно,  но в нем можно писать
еще.

- Next (Следующее)
Этот вариант позволяет выбрать другое окно и сделать его текущим
(рабочим), не возвращаясь в режим Open для выборки.  Неоднократ-
ный нажим Next поочередно пробегает окна. В самом окне или в Ос-
новном меню для этого нужно пользоваться клавишей F6.

- Goto (Перейти к)
После открывания  окна используйте Goto для того,  чтобы войти в
это окно, не возвращаясь в Основное меню.

- Tile (Деление на непересекающиеся окна)
Нажмите T  для того,  чтобы все действующие окна занимали равные
части экрана. F6 включает текущее окно.

= Stack (Стек)
Используйте этот  режим  для увеличения до максимальных размеров
всех открытых окон.  Нажмите F6 для вызова последнего дисплея  в
стеке в верхнюю часть экрана.

- Zoom (Распахнуть)
Выбор режима Zoom (или F5) распахивает выбранное окно на всю ши-
рину экрана;  однако, этот режим работает только в окнах "Run" и
"Edit". Для того,  чтобы вернуться к исходному шаблону,  еще раз
нажмите Zoom.

Команда Debug (Отлаживать)
- - - - - - - - - - - - - -
Это средство обеспечивает две важнейшие функции через спускающе-
еся меню" Trace (Трассировать) и Run-time error (Ошибка при  вы-
полнении).

- Trace (Трассировать)
Эта команда позволяет установить  глобальную  трассировку.  Этот
оператор может  быть отменен только встроенными операторами TRON
и TROFF.  В окне отображаются метки  операторов,  номера  строк,
имена процедур и функций.
   При выполнении в режиме Trace используйте Alt-F9  для  выбора
между трассировкой или выполнением вашей программы. Нажатие Alt-
F10 переводит на следующую линию,метку и т.п.

- Run-time error
Этот режим в основном используется для обнаружения ошибок, имею-
щихся в .EXE или .TBC файлах  (автономных  программах);  в  этом
случае никаких сообщений не появляется. Если вы выполняете прог-
рамму в системe ТБ, все последующее выполняется автоматически.
   Запускайте эту функцию нажатием R или Enter; последует запрос
значения программного счетчика. Затем ТБ определяет соответству-
ющее значение  в исходной программе и переводит курсор в положе-
ние ошибки.
   Когда происходит ошибка при выполнении, ТБ сообщает тип ошиб-
ки (всегда в цифровой форме или в словесной,  если  запущена  из
ТБ), а  также значение программного счетчика процессора в момент
ошибки.
   При повторном  компилировании  ТБ  может пересчитать значение
параметра в исходной программе,  соответственно его адресу в ис-
ходной программе. Рассмотрим, например программу TEST.BAS:

x=256
PRINT CHR$(x)

   Хотя эта  программа  синтаксичеки  верна  и  будеи  нормально
транслироваться,ошибка при  выполнении бедет генерироваться, как
только система попытается напечатать символ со значением  256 из
ASCII-кода:

   ERROR 5 Illegal function call at pgm-ctr: 29
 (Ошибка 5 Неверный  вызов функции по программному счетчику: 29)

   Режим "Ошибка при выполнении" использует это программное аль-
тернативное значение для поиска оператора, вызвавшего ошибку.
Обратите внимание:  Если дается неверное значение счетчика - ге-
нерируется сообщение "Ошибки при выполнении не обнаружено".