ПРИЛОЖЕНИЕ Е
------------------------------------------------------------------
Сообщения об ошибках
------------------------------------------------------------------
В ТУРБО БЕЙСИКе регистрируются два основных типа ошибок:
ошибки компиляции и ошибки выполнения. К ошибкам компиляции
относятся синтаксические ошибки, обнаруженные компилятором. К
ошибкам выполнения относятся отклонения, найденные механизмами
обнаружения ошибок, которые компилятор помещает в объектной
программе.
Большая часть ошибок компиляции - это ошибки в синтаксисе,
вызванные пропуском символа, неправильным написанием команды,
непарным числом скобок и т д. Если компилятор встречает что-то
в исходной программе, чего он не может понять или допустить, Вы
немедленно оказываетесь в редакторе, и курсор указывает на то
место, где произошла ошибка. Вам нужно нажать на любую клавишу,
чтобы убрать сообщение об ошибке, затем исправить ошибочный
оператор и повторить компиляцию.
ТУРБО БЕЙСИК выводит номер ошибки и краткое ее описание в
нижней строке экрана. Ошибки компиляции имеют номера от 256 и
выше. Ошибки выполнения возникают при прогоне оттранслированной
программы. Пример таких ошибок: ошибки файловой системы (диск
полон или защищен для записи), неверные вызовы функций
(графические операторы без графического адаптера, попытка извлече-
ния корня из отрицательного числа), ошибки использования памяти
(обычно связанные с ее недостатком) и множество других.
Ошибки выполнения могут вызывать прерывания, то есть, вы
можете установить с помощью оператора ON ERROR, что если
произойдет ошибка, управление должно быть передано заданной
подпрограмме обработки ошибок. Эта подпрограмма может "рассудить",
что делать дальше в зависимости от обнаруженной ошибки. Особенно
удобно использовать такие подпрограммы для обработки ошибок
файловой системы (например, диск полон) - это единственный класс
ошибок, с которыми должна иметь дело тщательно отлаженная
программа.
С помощью оператора ERROR можно симулировать ошибки
выполнения выполнения в качестве способа отладки подпрограмм
обработки ошибок.
Для более детальной информации об ошибках выполнения см. в
главе 5 "Справочное руководство по ТУРБО БЕЙСИКУ" описание
операторов ON ERROR и ERROR, функций ERR, ERL и ERADR.
Если ваша программа не обрабатывает ошибки, тогда при их
обнаружении ТУРБО БЕЙСИКОМ выполнение программы преждевременно
прекращается, выводится номер ошибки и краткое описание
создавшихся условий. Если программа выполнилась в ТУРБО БЕЙСИКЕ,
курсор редактора указывает на оператор, вызвавший ошибку. Ошибки
выполнения имеют номера между 0 и 255. Например:
Error 5 Illegal function call at pgm-ctr: 761
(Ошибка 5 неверный вызов функции по программному счетчику: 761)
Сообщения об ошибках не включаются в .ЕХЕ файлы; поэтому
ошибки выполнения, возникающие в программах, запущенных из DOS, не
содержат текст сообщения об ошибке, а только ее номер. Отладочный
режим поиска ошибок выполнения (FIND) может преобразовать значение
программного счетчика, определяющего адрес ошибки, в конкретный
оператор в исходном файле, который вызвал ошибку. Например:
nnn Error - destination ,
где nnn - номер ошибки из трех цифр. Для более полной информации
см. главу 3 "Команда DEBUG".
Ошибки выполнения
-----------------
2 Syntax error
Синтаксическая ошибка
Синтаксическая ошибка выполнения, которая возникла в
операторе READ при попытке загрузки символьных данных в числовую
переменную. Остальные синтаксические ошибки обнаруживаются
компилятором.
3 RETURN without GOSUB
RETURN без GOSUB
Задан оператор RETURN без соответствующего ему GOSUB; то
есть, соответственно возврат (RETURN) осуществлять неоткуда.
4 Out of data
Конец данных
Оператор READ вышел за пределы значений в операторе DATA.
5 Illegal function call
Неверный вызов функции.
Все ошибки, связанные с передачей несоответствующего
аргумента оператору или функции. Сразу несколько причин могут
вызывать их:
* слишком большое значение цвета или режима экрана;
* наличие оператора, работающего с графикой без графического
адаптера или при несоответствующем режиме, заданном оператором
SCREEN;
* попытка выполнения неверной математической операции, такой как,
например, извлечение корня из отрицательного числа;
* слишком большой (или отрицательный) номер записи в операторах
GET и PUT;
* попытка использования оператора WIDTH в последовательном файле.
6 Overflow
Переполнение
Переполнение возникает при получении в результате вычислений
слишком больших значений, которые не могут быть представлены в
виде числовых данных заданного типа. Например, х%=32767+1 приведет
к переполнению, также как 32768 не может быть представлено целым
числом. Ошибки переполнения целочисленных не обнаруживаются, если
в меню "Вариант" не был установлен режим (Overflow); переполнение
значений с плавающей запятой всегда регистрируются.
7 Out of memory
Выход за пределы памяти
Многочисленные ситуации могут приводить к выводу этого
сообщения, в частности, определение слишком большого массива.
9 Subscript out of range
Индекс за пределами диапазона
Возникает при попытке использовать индекса, большего, чем
максимальное допустимое.
10 Duplicate definition
Двойное определение
Повторная попытка размещения динамического массива до
освобождения уже размещенного массива с тем же именем.
11 Division by zero
Деление на ноль
Попытка деления на ноль или возведения нуля в отрицательную
степень.
13 Type mismatch
Несоответствие типов данных
Вместо числового значения используется символьное или,
наоборот. Возникает в операторах PRINT USING, DRAW или PLAY.
14 Out of string space
Выход за пределы пространства символьных переменных
Исчерпана память для символьных переменных, она не должна
превышать 64К.
15 String to long
Слишком длинная строка
Строка, полученная в результате символьного выражения
превышает 32767 байтов.
19 No RESUME
Нет оператора RESUME
Выполнение подпрограммы обработки ошибок дошло до физического
конца программы. Возможно, в программе пропущен оператор RESUME.
20 RESUME without error
RESUME без ошибки
Выполнение оператора RESUME, когда ошибки не было, т.е. нет
подпрограммы обработки ошибки, из которой должен быть выполнен
выход RESUME.
24 Device time out
Тайм-аут устройства
Истекло заданное время (Тайм-аут) для коммуникационной линии
состояния. Значения тайм-аута могут быть заданы для CTS (Clear To
Send), CD (CarrierDetect) и DSR (DataSetReady) линий состояния.
Программа либо преждевременно завершается, либо повторно
выполняются коммуникационные операции. Для более детальной
информации см. описание операторов OPEN COM в главе 5.
25 Device fault
Ошибка устройства
Возникла аппаратная ошибка; например, в интерфейсе принтера,
или коммуникационном адаптере.
27 Out of paper
Конец бумаги
Интерфейс принтера указывает, что кончилась бумага. В
действительности, он может быть просто выключен или в нем имеются
какие-либо сложности.
50 Field overflow
Переполнение поля
При заданной длине записи файла определяется слишком большое
множество переменных полей в операторе FIELD.
51 Internal error
Внутренняя ошибка
Возник сбой в системе выполнения ТУРБО-БЕЙСИКА. Обратитесь с
информацией о вашей программе в группу технического сопровождения.
52 Bad file number
Неверный номер файла
Номер файла, указанный в операторе работы с файлом, не
соответствует номеру в операторе OPEN или выходит за рамки
диапазона допустимых номеров файлов.
53 File not found
Файл не найден
Заданное имя файла не обнаружено на указанном диске.
54 Bad file mode
Неверный режим работы с файлом
Попытка выполнить PUT или GET (или PUT$ и GET$) для
последовательного файла.
55 File already more
Файл уже открыт
Попытка открыть уже открытый файл, или удалить открытый файл.
57 Device I/O error
Ошибка вода/вывода устройства
Возникла серьезная аппаратная неисправность при выполнении
команды.
58 File already exists
Файл уже существует
Новое имя файла, указанное в операторе NAME уже существует.
61 Disk full
Диск полон
На указанном диске или диске по умолчанию не хватает места
для выполнения операции с файлом. Убедитесь, что места достаточно
и запустите программу повторно.
62 Input past end
Ввод после конца
Попытка прочитать больше данных, чем имеется в файле. Для то-
го, чтобы избежать этой сложности, используйте функцию EOF (конец
файла). Ошибка также может возникнуть при чтении из
последовательного файла, открытого для записи или дозаписи в
конец.
63 Bad record number
Неверный номер записи
В качестве номера записи в операторах GET или PUT для файлов
с произвольным доступом указано отрицательное число или число
больше чем 16777215.
64 Bad file name
Неверное имя файла
Имя файла, указанное в операторах FILES, KILL или NAME
содержит недопустимые символы.
67 To many files
Слишком много файлов
Эта ошибка может быть вызвана либо попыткой создания слишком
большого количества файлов в корневом каталоге, либо неверным
именем файла при выполнении системного вызова DOS для создания
файла.
68 Device unavailable
Устройство недоступно
Попытка открытия (OPEN) файла устройства на машине, на
которой этого устройства нет; например, СОМ1: в системе без
серийного адаптера или модема.
69 Communication buffer overflow
Переполнение коммуникационного буфера
Выполнение оператора INPUT для ввода символов в уже
заполненный коммуникационный буфер. Программа либо должна
проверять и чаще очищать буфер, либо увеличить размер буфера.
70 Permission denied
Нарушение защиты
Попытка записи на защищенный для записи диск.
71 Disk not ready
Диск не готов
Открыта крышка накопителя на гибком устройстве, или диск не
установлен на заданном накопителе.
72 Disk media error
Ошибка дискового накопителя
Панель контроллера гибкого или жесткого диска регистрирует
постоянную ошибку в одном или нескольких секторах носителя.
74 Rename across disks
Переименование с переменой диска.
Переименовать файл с заданием другого диска или каталога
нельзя. Оператор NAME лишь присваивает ему новое имя.
75 Path/File acces error
Ошибка доступа в маршруте/файле
В команде, требующей указания маршрута (OPEN, NAME, MKDIR)
неправильно использован маршрут; например, открывается (OPEN)
подкаталог или удаляется используемый каталог.
76 Path not found
Маршрут не найден
Маршрут, заданный в операторах CHDIR, MKDIR, OPEN и т.д., не
найден.
202 Out of string temp space
Выход за пределы временного пространства для символьных данных
Символьное выражение требует использования слишком большого
количества временных буферов для символьных данных. Ошибка может
быть вызвана выражением типа MID$(LEFT$(MID$(RIGHT$(...).
Попробуйте упростить символьное выражение путем сохранения
промежуточных результатов во временных символьных переменных.
203 Mismatched common variables
Несоответствие общих переменных
Попытка выполнить CHAIN между двумя программными сегментами,
которые содержат несоответствующие друг другу операторы COMMON.
ТУРБО БЕЙСИК сверяет тип и число переменных в операторах COMMON.
204 Mismatched program option
Несоответствие программных опций
Попытка выполнить CHAIN между двумя программными сегментами,
компиляция которых происходила с несоответствующими друг другу
программными опциями (различными математическими библиотеками,
требованиями сопроцессора и т.д.).
205 Mismatched program versions
Несоответствие версий в программе
Попытка выполнить CHAIN между двумя программными сегментами,
которые созданы различными версиями компилятора ТУРБО БЕЙСИК.
206 Invalid program file
Непригодный программный файл
Попытка выполнить CHAIN или RUN для программного сегмента,
компиляция которого выполнилась не в ТУРБО БЕЙСИКЕ.
242 String/array memory corrupt
Разрушение памяти строки/массива
Область памяти символьных данных была неверно перезаписана.
Ошибка может быть вызвана неверными действиями ассемблерной
подпрограммы, доступом к символьному массиву за пределами его
размерности или нарушениями в системе выполнения ТУРБО БЕЙСИКА.
243 CHAIN/RUN from .EXE file only
CHAIN/RUN допустимы только из файла .EXE
Попытка выполнить CHAIN или RUN для программного сегмента из
среды ТУРБО БЕЙСИКА. Следует выполнить компиляцию программы и
записать оттранслированный модуль на диск с помощью команд меню
"Варианты", а затем запустить из DOS программу, использующую
операторы CHAIN и RUN.
Ошибки компиляции
-----------------
401 Expression too complex
Слишком сложное выражение
Выражение содержит слишком много операторов/операндов;
следует разбить его на два или несколько более простых выражений.
402 Statement too complex
Оператор слишком сложен
Сложность оператора вызвала переполнение внутреннего буфера
компилятора. Следует разбить его на два или более простых
оператора.
403 $IF nesting overflow
Переполнение вложенных $IF
Число блоков условной компиляции ($IF/$ELSE/$ENDIF) не должно
составлять более 16 уровней.
404 $INCLUDE nesting overflow
Переполнение вложенных $INCLUDE
Вложенность включаемых файлов не должна быть больше 5
уровней, включая саму основную программу. Это позволяет иметь в
программе 4 вложенных включаемых ($INCLUDE) файла.
405 Block nesting overflow
Переполнение вложенных блоков
В вашей программе слишком много операторов блочных структур,
вложенных один в другой. Блочные структуры в ТУРБО БЕЙСИКЕ могут
иметь не более 255 уровней вложенности.
406 Compiler out of memory
Компилятор вышел за пределы памяти
Исчерпана доступная память компилятора для символьного
пространства, буферов и т.д. Если память исчерпана, выделите из
вашей программы небольшую основную программу, которая использует
метаоператор $INCLUDE для включения остальной части программы.
Если вы компилируете программу в память и возникает эта ошибка,
попробуйте с помощью меню "Варианты" выполнить компиляцию на диск.
407 Program too large
Программа слишком велика
Ваша программа содержит более 65530 операторов.
408 Segment exceeds 64K
Сегмент превышает 64К
Ваша программа включает сегмент, превышающий ограничение 64К.
Добавьте метаоператор $SEGMENT в исходную программу, чтобы
разместить программный код в дополнительном сегменте.
409 Variables exceeds 64K
Переменные превышают 64К
Общее пространство скалярных переменных ограничено 64К. В это
пространство включаются указатели строк, целые, длинные целые,
вещественные числа с одинарной и двойной точностью. Избавьтесь от
неиспользуемых переменных или разбейте вашу программу на отдельные
основную и цепные (CHAIN) программы.
410 "," expected
Предполагается ","
Синтаксис оператора требует запятую (,).
411 ";" expected
Предполагается ";"
Синтаксис оператора требует точку с запятой (;).
412 "(" expected
Предполагается "("
Синтаксис оператора требует левую скобку (().
413 ")" expected
Предполагается ")"
Синтаксис оператора требует правую скобку ()).
414 "=" expected
Предполагается "="
Синтаксис оператора требует знак равенства (=).
415 "-" expected
Предполагается "-"
Синтаксис оператора требует знак минуса (-).
416 Statement expected
Предполагается оператор
ТУРБО БЕЙСИК полагает,что в этом месте должен быть оператор.
Некоторый символ не может быть идентифицирован ни как команда, ни
как метакоманда, ни как переменная.
417 Label/line number expected
Предполагается метка/номер строки
В операторах IF, GOTO, GOSUB или ON должна быть задана
допустимая метка или номер строки.
418 Numeric expression requires relational opernd
Численное выражение требует соответствующего операнда
Компилятор обнаружил символьный операнд в том месте, где
должен быть числовой операнд.
419 String expression requires string operand
Для символьного выражения требуется символьный операнд
Компилятор ожидал символьное выражение, а нашел нечто другое,
например: Х$=А$+В .
420 Scalar variable expected
Предполагается скалярная переменная
Компилятор ожидал найти скалярную переменную в качестве
формального параметра функции, определенной пользователем.
Скалярные переменные включают строки, целые, длинные целые и
вещественные числа с одинарной и двойной точностью.
421 Array variable expected
Предполагается переменная массив
В операторах DIM или операторах работы с графикой GET или PUT
должна быть указана переменная массив.
422 Numeric variable expected
Предполагается числовая переменная
В операторах INCR, DECR или при задании смещения в операторе
CALL ABSOLUTE должна быть указана числовая переменная.
423 String variable expected
Предполагается символьная переменная
В операторах FIELD, GET$, PUT$ или LINE INPUT должна быть
указана символьная переменная.
424 Variable expected
Предполагается переменная
В функциях VARPTR, VARPTR или VARSEG должна быть задана
переменная.
425 Integer constant expected
Предполагается целая константа
В поименованном присваивании константы или в командах услов-
ной компиляции $IF/$ELSEIF должна быть указана целая константа.
426 Positive integer constant expected
Предполагается положительная целая константа
При указании границ массива DIM STATIC и в метаоператорах
$COM, $SOUND и $STACK должна быть указана положительная целая
константа.
427 String constant expected
Предполагается символьная константа
В качестве имени файла в метаоператоре $INCLUDE должна быть
указана символьная константа.
428 Numeric scalar variable expected
Предполагается числовая скалярная переменная
Должна быть указана целая, длинная целая, вещественная
переменная с одинарной или двойной точностью; например в цикле
FOR/NEXT.
429 Integer scalar variable expected
Предполагается целая скалярная переменная
В качестве параметра в операторе CALL ABSOLUTE должна быть
указана целая переменная.
430 Integer array variable expected
Предполагается целая переменная массив
Должна быть указана целая переменная массив; например в
операторе PALETTE.
431 End of line expected
Предполагается конец строки
В строке, содержащей метаоператор, недопустимы никакие
символы, кроме комментария.
432 AS expected
Предполагается AS
Служебное слово AS пропущено в операторах FIELD или OPEN.
Проверьте в главе 5 синтаксис операторов FIELD и OPEN.
433 DEF FN expected
Предполагается DEF FN
Компилятор обнаружил операторы END FN или EXIT FN без
определения функции DEF FN.
434 IF expected
Предполагается IF
Компилятор обнаружил операторы END IF или EXIT IF без
предшествующего им оператора IF.
435 DO LOOP expected
Предполагается петля DO
Компилятор обнаружил операторы LOOP или EXIT LOOP без
предшествующего им оператора DO.
436 SELECT expected
Предполагается SELECT
При определении оператора SELECT CASE вы либо забыли указать
служебное слово SELECT, либо компилятор обнаружил операторы END
SELECT или EXIT SELECT.
437 CASE expected
Предполагается CASE
При определении оператора SELECT CASE не указано служебное
слово СASE. Эта ошибка может также возникнуть при использовании
служебного слова SELECT в качестве имени переменной.
438 FOR LOOP expected
Предполагается петля FOR
Компилятор обнаружил оператор EXIT FOR без предшествующего
ему оператора FOR.
439 SUB expected
Предполагается SUB
Компилятор обнаружил оператор END SUB или EXIT SUB без
предшествующего ему оператора SUB. Началом объявления подпрограммы
должен быть оператор SUB.
440 END DEF expected
Предполагается END DEF
Определение функции не завершается соответствующим ему
оператором END DEF.
441 END IF expected
Предполагается END IF
Блок IF не завершается соответствующим END IF.
442 LOOP/WEND expected
Предполагается LOOP/WEND
Циклы DO или WHILE не завершаются соответствующими
операторами LOOP/WEND.
443 END SELECT expected
Предполагается END SELECT
Оператор SELECT CASE не был правильно завершен оператором END
SELECT.
444 END SUB expected
Предполагается END SUB
Процедура не была правильно завершена оператором END SUB.
445 NEXT expected
Предполагается NEXT
Цикл FOR не был правильно завершен оператором NEXT.
446 THEN expected
Предполагается THEN
В операторе IF пропущено служебное слово THEN.
447 TO expected
Предполагается ТО
В операторе FOR пропущено служебное слово TO.
448 GOSUB expected
Предполагается GOSUB
В операторе ON пропущена входящая в него часть GOSUB.
449 GOTO expected
Предполагается GOTO
В операторе ON пропущена входящая в него часть GOТО.
450 $ENDIF expected
Предполагается $ENDIF
В операторе условной компиляции $IF пропущено служебное слово
$ENDIF. Посмотрите все метаоператоры $IF, чтобы найти место, где
следует указать соответствующей ему $ENDIF.
451 Unmatched $ELSE
Непарный метаоператор $ELSE
Компилятор обнаружил метаоператор $ELSE без предшествующего
ему метаоператора условной компиляции $IF. Посмотрите в исходном
тексте предшествующие $ELSE, чтобы найти место, где следует
указать соответствующей ему $IF.
452 Unmatched $ENDIF
Непарный метаоператор $ENDIF
Компилятор обнаружил метаоператор $ENDIF без предшествующего
ему метаоператора условной компиляции $IF. Посмотрите в исходном
тексте предшествующие $ENDIF, чтобы найти место, где следует
указать соответствующей ему $IF.
453 Undefined name constant
Неопределенная именная константа
В программе использована именная константа, которая не
определена. Определите именную константу или используйте в
операторе литеральную константу.
454 Undefined function reference
Обращение к неопределенной функции
В выражении указано имя функции, которая не определена.
Проверьте, нет ли ошибок в имени функции или определите
функцию.
455 Undefined subprogram reference
Обращение к неопределенной подпрограмме
Выполнен вызов подпрограммы (CALL), но в программе нет
определения подпрограммы. Проверьте, нет ли ошибок в имени
подпрограммы или задайте подпрограмму.
456 Undefined label/line reference
Обращение к неопределенной метке/номеру строки
В операторах IF, GOTO, GOSUB или ON указана метка или
оператор строки, неопределенные в программе. Проверьте, нет ли
ошибок в метке или номере строки, или задайте их в программе.
457 Undefined array reference
Обращение к неопределенному массиву
Выполнено обращение к массиву, не определенному в операторе
DIM. Проверьте, нет ли ошибок в имени массива, или укажите его в
операторе DIM.
458 Duplicate label/line number
Двойное определение метки/номера строки
Дважды указан один и тот же номер строки или метки. Найдите в
вашей программе и включаемых файлах двойные определения и измените
одно из них или оба.
459 Duplicate named constant
Двойное определение имени константы
Две именные константы были заданы с одинаковыми именами.
Найдите в вашей программе и включаемых файлах двойные определения
и измените одно из них или оба.
461 Duplicate subprogram definition
Двойное определение имени подпрограммы
Две процедуры SUB были определены с одинаковыми именами.
Найдите в вашей программе и включаемых файлах двойные определения
и измените одно из них или оба.
462 Duplicate common variable
Двойная общая переменная
В списке переменных оператора COMMON одна переменная указана
дважды. Найдите в вашей программе и включаемых файлах двойные
определения и измените одно из них или оба.
463 Duplicate variable declaration
Двойное определение переменной
В операторах LOCAL, STATIC или SHARED две переменные указаны
с одинаковыми именами. Найдите в вашей программе и включаемых
файлах двойные определения и измените одно из них или оба.
464 Duplicate $COM definition
Двойное определение $COM
Для каждого коммуникационного порта в вашей программе может
быть только один метаоператор $COM. Найдите в вашей программе и
включаемых файлах определения $COM и удалите одно из них .
465 Duplicate $SOUND definition
Двойное определение $SOUND
В программе может быть использован только один метаоператор
$SOUND. Найдите в вашей программе и включаемых файлах определения
$SOUND и удалите одно из них .
466 Duplicate $STACK definition
Двойное определение $STACK
В программе может быть использован только один метаоператор
$STACK Найдите в вашей программе и включаемых файлах определения
$STACK и удалите одно из них .
467 Invalid line number
Неверный номер строки
Номер строки должен быть в диапазоне от 0 до 65535.
469 Metastatements not allowed here
Использование метаоператоров здесь недопустимо
Метаоператоры должны быть первыми командами в строке
470 Block/scanned statements not allowed here
Блочные операторы здесь недопустимы
Блочные операторы типа WHILE/WEND, DO/LOOP и SELECT CASE не
могут быть использованы в однострочных операторах IF.
471 Unknown identifier/syntax error
Неизвестный оператор/синтаксическая ошибка
В строке что-то не так - компилятор не может подобрать
соответствующее сообщение об ошибке.
472 Array subscript error
Ошибка в индексе массива
Вы задали массив с одним числом индексов, а использовали его
с другим числом.
473 Array bounds error
Ошибка выхода за границы массива
Программа обращается к статическому массиву с помощью
литерального значения, выходящего за пределы диапазона.
474 Tipe mismatch
Несоответствие числовых типов
Типы переменных в операторе SWAP неодинаковы.
475 Parameter mismatch
Несоответствие параметров
Типы или число параметров не соответствуют определению
функции или процедуры.
476 CLEAR parameter error - use MEMSET/$STACK
Ошибка параметров CLEAR - используйте MEMSET/$STACK
Дополнительные параметры, доступные оператору CLEAR, не
доступны в таком компиляторе БЕЙСИКА, как ТУРБО БЕЙСИК.
477 LOCAL requires DEF FN/SUB
LOCAL требует DEF FN/SUB
Локальные переменные могут быть объявлены только в процедуре
или функции.
478 SHARED requires DEF FN/SUB
SHARED требует DEF FN/SUB
Разделяемые переменные могут быть объявлены только в
процедуре или функции.
479 STATIC requires DEF FN/SUB
STATIC требует DEF FN/SUB
Статические переменные могут быть объявлены только в
процедуре или функции.
480 COMMON array must be dynamic
Массивы СOMMON должны быть динамическими
Общие массивы, указанные в операторе COMMON, должны быть
объявлены как DYNAMIC.
481 LOCAL array must be dynamic
Массивы LOCAL должны быть динамическими
Локальные массивы, указанные в операторе LOCAL, должны быть
объявлены как DYNAMIC.
482 Parameter arrays cannot be altered
Массивы - параметры не могут быть изменены
Нельзя стереть (ERASE) или разместить (DIM) массив,
используемый в качестве параметра функции или подпрограммы.
483 Array is not STATIC
Массив не является статическим
Нельзя определять размерность статического массива с помощью
переменных в качестве индекса. При задании индексов массива типа
STATIC следует использовать либо именные константы, либо
литеральные константы.
484 Array previously STATIC
Первоначально массив был определен как статический
Если в вашей программе для одного и того же массива два
оператора DIM, массив автоматически считается динамическим. Либо в
другом месте программы пытались объявить массив как STATIC, либо
ваша программа выполняет команду DIM DYNAMIC для массива,
объявленного ранее как STATIC.
485 Array name without "()" expected
Требуется имя массива без "()"
При использовании оператора ERASE не следует за именем
массива указывать скобки.
486 Array exceeds 64K
Массив превосходит 64К
Размеры массива не должны превышать 64К (одного сегмента
данных). Если вам нужны массивы большего размера, вы можете
разбить один массив на несколько меньших.
487 Arrays limited to eights dimensions
Размерность массива не должна превышать 8
Это внутренне ограничение для компилятора.
488 Invalid numeric format
Неверный числовой формат
В программе объявлено число, содержащее более 36 цифр или в
числе с плавающей запятой не указано значение показателя в
компоненте Е.
489 Invalid function/procedure name
Неверное имя процедуры/функции
В случае функции, за FN должна следовать буква, а затем
другие буквы, цифры и точки, завершать может идентификатор типа
(%, &, !, #, или $). В случае процедуры имя должно начинаться с
буквы, включать другие буквы, цифры и точки, но не должно включать
идентификатор типа.
490 No parameters with INLINE SUB
В INLINE SUB не заданы параметры
Не указан список формальных параметров в объявлении процедуры
INLINE SUB. За число и тип параметров, передаваемых ассемблерной
программе отвечает она сама. Никакая проверка типов не выполняется
компилятором.
491 Only $INLINE allowed here
Здесь допустимо только $INLINE
В процедуре SUB с режимом INLINE допустимы только операторы
$INLINE.
492 $INLINE requires SUB INLINE
Для $INLINE необходимы SUB INLINE
Операторы $INLINE допустимы только в процедурах SUB с режимом
INLINE.
493 $INCLUDE file not found
Файл $INCLUDE не найден
Включаемый файл не найден в заданном маршруте, текущем
каталоге или маршруте, указанном в режиме DIRECTORIES в меню
SETUP. Проверьте маршруты или убедитесь в том, что заданный
включаемый файл существует.
494 $INCLUDE disk error
Ошибка на диске при выполнении $INCLUDE
При попытке открытия ТУРБО БЕЙСИКОМ включаемого файла в
процессе компиляции возникла ошибка на диске.
495 $INCLUDE file too large
Файл $INCLUDE слишком велик
Включаемые файлы, так же как и все файлы, загружаемые в
редактор ТУРБО БЕЙСИКА, не должны превосходить 64К.
496 $INLINE file not found
Файл $INLINE не найден
Файл INLINE не найден ни в заданном маршруте, ни в текущем
каталоге. Убедитесь в том, что указанный включаемый файл
существует.
497 $INLINE disk read error
Ошибка чтении с диска файла $INLINE
При попытке открытия ТУРБО БЕЙСИКОМ файла INLINE в процессе
компиляции возникла ошибка на диске.
498 Temporary file acces error
Ошибка доступа к временному файлу
При компиляции на диск (в файлы .ЕХЕ или .ТВС) компилятор не
смог осуществить доступ к временному файлу. Проверьте каталог
ТУРБО в режиме DIRECTORIES в меню SETUP, чтобы убедиться в том,
что заданный каталог существует.
499 Destination file write error
Ошибка записи в файл назначения
При компиляции на диск (в файлы .ЕХЕ или .ТВС) компилятор
получил информацию об ошибке записи на диск.
600-610 Internal error
Внутренняя ошибка
Если возникла какая-либо из этих ошибок немедленно сообщите
группе технического сопровождения.
ПРИЛОЖЕНИЕ F
------------------------------------------------------------------
Справочные материалы
------------------------------------------------------------------
Этот раздел посвящен справочным материалам и включает
скэн-коды клавиатуры и расширенные коды.
Расширенные коды клавиатуры
---------------------------
Расширенными кодами клавиатуры кодируются клавиши, или их
комбинации, которые не могут быть представлены в коде ASCII.
Расширенные коды возвращаются системной переменной $INKEY. В
двухсимвольной строке в качестве первого символа возвращается
ноль. Обычно вторым информационным символом является скэн-код
первой клавиши. В таблице F-1 представлены информационные коды и
их значения.
Таблица F-1. Расширенные коды клавиатуры
------------------------------------------------------------------
Информаци- Значение
онный код
------------------------------------------------------------------
3 NULL, (пустой символ)
15 Shift-Tab
16-25 Alt-Q/W/E/R/T/Y/U/I/O/P
30-38 Alt-A/S/D/F/G/H/J/K/L
44-50 Alt-Z/X/C/V/B/N/M
59-68 F1-F10 (Задействованы как программные ключи)
71 Home
72 Стрелка вверх
73 PgUp
75 Стрелка влево
77 Стрелка вправо
79 End
80 Стрелка вниз
81 PgDn
82 Ins
83 Del
84-93 F11-F20 (Shift-F1 до Shift-F10)
94-103 F21-F30 (Ctrl-F1 до Ctrl-F10)
104-113 F31-F40 (Alt-F1 до Alt-F10)
114 Ctrl-PrtSc
115 Ctrl-стрелка влево
116 Ctrl-стрелка вправо
117 Ctrl-End
118 Ctrl-PgDn
119 Ctrl-Home
120-131 Alt-1/2/3/4/5/6/7/8/9/0/-/=
132 Ctrl-PgUp
133 F11
134 F12
135 Shift-F11
136 Shift-F12
137 Ctrl-F11
138 Ctrl-F12
139 Alt-F11
140 Alt-F12
------------------------------------------------------------------
Скэн-коды клавиатуры
--------------------
В скэн-кодах кодируются клавиши на клавиатуру IBM PC в
соответствии с тем, как их понимает ТУРБО БЕЙСИК. Эти клавиши
особенно полезны при работе на уровне языка ассемблер. Обратите
внимание, что скэн-коды клавиатуры приведены в таблице F-2 в
шестнадцатиричном виде.
Таблица F-2. Скэн-коды клавиатуры
------------------------------------------------------------------
Клавиша скэн-код Клавиша скэн-код Клавиша скэн-код
------------------------------------------------------------------
Esc 01 A 1E F1 3B
!1 02 S 1F F2 3C
@2 03 D 20 F3 3D
#3 04 F 21 F4 3E
$4 05 G 22 F5 3F
%5 06 H 23 F6 40
^6 07 J 24 F7 41
&7 08 K 25 F8 42
*8 09 L 26 F9 43
(9 0A ;: 27 F10 44
)0 0B "' 28 Num Lock 45
_- 0C ~` 29 Scroll Lock 46
+= 0D Левый Schift 2A 7 Home 47
BckSp 0E |\ 2B 8 Стр.вверх 48
Tab 0F Z 2C 9 Pg Up 49
Q 10 X 2D - 4A
W 11 C 2E 4 Стр. влево 4В
E 12 V 2F 6 Стр. вправ 4D
R 13 B 30 5 4C
T 14 N 31 + 4E
Y 15 M 32 1 End 4F
U 16 ,< 33 2 Стр. вниз 50
I 17 .> 34 3 PgDn 51
O 18 /? 35 0 lns 52
P 19 Правый Schift 36 . Del 53
[{ 1A PrtScr 37 F11 D9
]} 1B Alt 38 F12 DA
Enter 1C Кл.пробел 39
Ctrl 1D Caps Lock 3A
------------------------------------------------------------------
ПРИЛОЖЕНИЕ G
------------------------------------------------------------------
DOS для начинающих
------------------------------------------------------------------
В этом приложении вашему внимания предлагается
краткий обзор следующих положений и функций DOS:
- Что такое DOS и для чего он нужен;
- Надлежащий способ загрузки программ;
- Каталоги, подкаталоги и команда PATH;
- Использование файлов АUTOEXEC.BAT.
Для более полной информации обратитесь к руководству пользо-
вателя по MS-DOS или РС-DOS, которым снабжена ваша вычислительная
система.
ТУРБО БЕЙСИК работает под управлением операционных систем
MS-DOS и РС-DOS версий 2.0 и более поздних.
Что такое DOS?
--------------
DOS это сокращенное название дисковой операционной системы.
Под МS-DOS понимают версию DOS фирмы Microsoft, РС-DOS - это DOS в
исполнении IBM. DOS является координатором движения, менеджером и
оператором взаимодействий, возникающих между отдельными частями
вычислительной системы, между компьютером и вами. DOS работает в
фоновом режиме, заботясь о выполнении служебных компьютерных
функций, о которых вы не хотели бы и думать - например, о передаче
символов между клавиатурой и компьютером, между компьютером и
принтером, между вашими дисками и внутренней памятью (RAM).
Выполнение других взаимодействий вы инициируете вводом
команды в командной строке DOS; иначе говоря, непосредственно
после подсказки DOS.
Подсказки DOS выглядят следующим образом:
А> или В> или С>
Прописная буква относится к активному дисковому накопителю
(который DOS и вы используете в данный момент). Команды, которые
вы зададите DOS будут обращены к этому накопителю. Если вы захоти-
те переключиться на другой диск, сделав его активным, - наберите
букву диска, за которым следует двоеточие, и нажмите клавишу
"Enter". Например, чтобы перейти на накопитель В, введите:
В:
Есть несколько команд, которые вам в DOS придется часто
использовать, если уже не пришлось, такие как:
DEL или ERASE Удалить файл
DIR Посмотреть список файлов на диске, на который
вы настроились
COPY Скопировать файлы с одного диска на другой
TB Загрузить ТУРБО БЕЙСИК.
Для DOS не имеет значения, вводите вы строчные буквы,
прописные или и те и другие вперемешку.
Обратитесь к руководству по DOS, чтобы узнать, как пользо-
ваться первыми тремя указанными командами. Далее мы рассмотрим
надлежащий способ загрузки такой программы, как ТУРБО БЕЙСИК.
Как загрузить программу
-----------------------
На вашем диске с системой ТУРБО БЕЙСИК вы найдете файл с
именем ТВ.ЕХЕ. Этот программный файл содержит все основные функции
БЕЙСИКА. Наберите на клавиатуре ТВ и нажмите Enter, чтобы загру-
зить ТУРБО БЕЙСИК в память вашего компьютера.
При загрузке ТУРБО БЕЙСИКА или другой подобной программы
следует помнить: для того, чтобы загрузить программу, нужно
настроиться на диск и каталог, в котором она находится. Если вы не
задали маршрут DOS, операционная система не будет знать, где
искать программу.
Вы можете задать "маршрут" для ваших файлов на БЕЙСИКЕ так,
что DOS сможет найти их с помощью команды Path. Более полную
информацию вы найдете в разделе "Файл AUTOEXEC.BAT".
Каталоги
--------
Каталоги позволяют подразделить диск на несколько частей.
При этом, если вы наберете DIR в командной строке DOS, вам не при-
дется в поисках нужного файла просматривать сотни других имен. Бу-
дет выведен список файлов лишь того каталога, на который вы
настроились.
Работая на уровне DOS, а не в ТУРБО БЕЙСИКЕ или какой-либо
другой программе, вы можете создавать новые каталоги, перемещать
файлы из одного каталога в другой и выводить список файлов в кон-
кретном каталоге.
В приведенных ниже примерах предполагается, что вы используе-
те систему на жестком диске, и настроены на жесткий диск так, что
на экране вы видите подсказку С>.
Для того, чтобы создать каталог для файлов ТУРБО БЕЙСИКА,
следует выполнить следующее:
1. На подсказку С> наберите MRDIR BASIC и нажмите Enter.
Команда MKDIR сообщает DOS о том, что нужно создать каталог с
именем BASIC.
2. Введите CHDIR BASIC и нажмите Enter. Команда CHDIR настра-
ивает DOS на ваш каталог.
3. Затем поместите диск с ТУРБО БЕЙСИКОМ, который вы хотите
скопировать на одно из устройств для гибких дисков, скажем, А, и
введите команду СОРY А: *.*
Подкаталоги
- - - - - -
Если вам нравится структурная организация, вы можете разбить
каталоги на подкаталоги. Можно создать столько каталогов и подка-
талогов, сколько вам захочется - не забудьте только, куда какие
файлы вы поместили.
Подкаталог создается тем же способом, что и каталог. Для
того, чтобы создать подкаталог в каталоге BASIC (например для
хранения графических файлов), сделайте следующее:
1. Убедитесь в том, что вы в каталоге BASIC
2. Введите MKDIR GRAF Enter
3. Введите CHDIR GRAF Enter
Теперь вы в подкаталоге GRAF.
Основная команда DOS для смены каталогов - это CHDIR.
Где я нахожусь? Подсказки $p$g
- - - - - - - - - - - - - - - -
Возможно, что вы уже заметили, что при смене каталогов, вы
видите одну и ту же подсказку С>; т.е., не очевидно, в каком
каталоге или подкаталоге вы находитесь. DOS предоставляет простой
способ обнаружить это. Введите
prompt=$p$g
и с этого момента (до тех пор, пока вы не выключите компьютер или
не перезагрузитесь) подсказка точно покажет вам, где вы находи-
тесь. Если вы еще в подкаталоге GRAF, подсказка DOS будет выгля-
деть так:
С:\BASIC\GRAF>
Фaйл AUTOEXEC.BAT
-----------------
Можно избежать ввода команды подсказки (которая обсуждалась
выше) для того, чтобы посмотреть "где вы находитесь" при каждом
включении компьютера, если внести ее в файл AUTOEXEC.BAT.
Чтобы не углубляться в детали относительно этого файла, мы
предлагаем обратиться к руководству по DOS. Однако, мы покажем
вам, как создать файл AUTOEXEC.BAT, который автоматически изменит
подсказку с тем, чтобы вы всегда знали, где в структуре каталогов
вы находитесь, и установит маршрут каталога BASIC.
Команда задания маршрута (path) в DOS сообщает компьютеру,
где искать команды, которые операционная система не может узнать.
DOS узнает программы только в текущем (том, на который настроен)
каталоге, если не задан маршрут каталога, содержащий подходящие
программы или файлы.
В следующем примере устанавливается маршрут к каталогу BASIC
и подкаталогу FILES.
Если в корневом каталоге имеется файл AUTOEXEC.BAT, ваш
компьютер выполнит все, что в нем содержится в тот момент, когда
компьютер будет включен.
Далее изложено как создать файл AUTOEXEC.BAT:
1. Наберите CHDIR \ для того, чтобы настроиться на корневой
каталог.
2. Наберите COPY CON AUTOEXEC.BAT . Эта команда сооб-
щает DOS, что все введенное вами дальше должно быть скопировано
в файл AUTOEXEC.BAT.
3. Введите
ECHO OFF
PROMPT=$P$G
PATH=C:\BASIC;C:\BASIC\FILES
CHDIR \BASIC
Ctrl-Z
Команда Ctrl-Z сохраняет введенные команды в файле
AUTOEXEC.BAT.
Для того, чтобы проверить ваш новый файл AUTOEXEC.BAT,
перезагрузите систему, нажав одновременно Ctrl-Alt-Del. Когда
загрузка завершится, вы увидите подсказку C:\BASIC>.
Конфигурирование операционной среды
-----------------------------------
Если у вас есть специальные требования к аппаратным средствам
или вы разработчик, нуждающийся в динамической среде, возможность
установки переменных среды предоставляет вам определенный выбор.
Переменные среды задаются с помощью команды SET в DOS и
переопределяют опции компилятора и/или программы.
Переменные среды воздействуют на всю среду, в которой выпол-
няется программа. Таким образом, установленный однажды параметр
действует до тех пор, пока он не будет переустановлен или пока ма-
шина не будет выключена. Если значения параметров устанавливаются
всегда одним и тем же образом, вы можете ввести команду SET в па-
кетный (bath) файл, или в файл AUTOEXEC.BAT.
Переменные среды в ТУРБО БЕЙСИКЕ позволяют переопределять
опции компилятора и режимы выполнения для сопроцессора 8087 и
проверки цветного графического адаптера (CGA). Предположим, что вы
хотите использовать сопроцессора 8087 в операционной среде. На
подсказку DOS введите:
SET 87=yes
где "yes" означает, что у вас есть сопроцессор, "no" означает, что
если даже 8087 имеется, использовать его не следует. По умолчанию
- "yes".
В случае "снежной проверки" CGA, введите
SET CGASNOWCHK=no
где "no" отменяет выполнение "снежной проверки", а "yes" ее
выполняет. По умолчанию - "yes".
Когда компилятор начинает работу, или запускается на выполне-
ние сгенерированные файлы .ЕХЕ, происходит просмотр пространства
переменных среды с целью определения их значений. Хотя и нет необ-
ходимости в установке значений переменной среды, они в вашем рас-
поряжении в любой момент, когда вам это понадобится.
ПРИЛОЖЕНИЕ H
------------------------------------------------------------------
Краткое описание функций и процедур
------------------------------------------------------------------
Это приложение можно использовать как краткий справочник
процедур и функций, сгруппированных в соответствии с их действием.
Так, например, под заголовком "Символьные операции" приведена, в
частности, функция BIN$, которая возвращает двоичный символьный
эквивалент заданного числа, а также все остальные операции работы
со строками.
Метаоператоры
$COM Размещает принимающий буфер последовательного порта.
$DYNAMIC Объявляет динамическими массивы, размещение которых
выполняется по умолчанию.
$EVENT Управляет генерацией кода прерывания по событиям.
$IF/$ELSE/ Определяет части исходной программы, которые
$ENDIF компилируются или пропускаются в зависимости от
условий.
$INCLUDE Включает текстовый файл.
$SEGMENT Объявляет новый сегмент кода.
$SOUND Объявляет емкость буфера фоновой музыки.
$STACK Задает размер стека для прогона программы.
$STATIC Объявляет статическими массивы, выполнение которых
выполняется по умолчанию.
Связывание
CHAIN Вызывает цепной модуль ТУРБО БЕЙСИКА (*.ТВС).
COMMON Объявляет переменные, передаваемые в цепную программу.
SHELL Загружает и выполняет порожденный процесс (для версии
DOS начиная с 3.0).
RUN Перезапускает программу.
Определение данных
DATA Объявляет константы для оператора READ.
DIM Объявляет массивы.
LET Присваивает переменной значение.
LOCAL Объявляет локальные переменные в процедуре или
функции.
OPTION BASE Объявляет минимальное значение для индексов массива.
READ Загружает переменные константами из оператора DATA.
RESTORE Позволяет повторно читать константы оператора DATA.
SHARED Определяет разделяемые (глобальные) переменные в
процедуре или функции.
STATIC Объявляет статические переменные в процедуре или
функции.
SWAP Обменивает значение двух переменных.
Числовые операции
ABS Возвращает абсолютное значение.
ASC Возвращает ASCII код первого символа строки.
ATN Возвращает значение тригонометрического арктангенса
CDBL Преобразует число в формат с двойной точностью.
CEIL Возвращает наименьшее целое, большее или равное
аргументу.
CINT Преобразует в целое.
CLNG Преобразует в длинное целое.
COS Возвращает значение тригонометрического косинуса.
CSGN Преобразует числовое выражение в эквивалентное ему
число.
DECR Уменьшает значение переменной.
DEFINT/ Объявляет тип идентификаторов переменных, установлен-
DEFLNG/DEFSNG/ установленный по умолчанию.
DEFDBL/DEFSTR
EXP Возвращает e в степени Х.
EXP2 Возвращает 2 в степени Х.
EXP10 Возвращает 10 в степени Х.
FIX Округляет до целого.
INCR Увеличивает значение переменной.
INT Преобразует числовое выражение в целое.
LOG Возвращает значение натурального логарифма.
LOG2 Возвращает значение логарифма по основанию 2.
LOG10 Возвращает значение логарифма по основанию 10.
RANDOMIZE Устанавливает начальное значение для генератора
случайных чисел.
RND Возвращает случайное число.
SGN Возвращает знак числового выражения.
SIN Возвращает значение тригонометрического синуса.
SQRT Возвращает значение квадратного корня.
TAN Возвращает значение тригонометрического тангенса.
Символьные операции
BIN$ Возвращает двоичный символьный эквивалент числа
CHR$ Преобразует ASCII код в односимвольную строку
HEX$ Преобразует число в шестнадцатиричный символьный
эквивалент
INSTR Просматривает строки в поисках заданного шаблона
LCASE$ Возвращает строку, состоящую только из прописных
букв
LEFT$ Возвращает n самых левых символов в строке
LEN Возвращает длину строки
MID$ Возвращает символьную строку
MID$ Замещает символьную строку
OCT$ Возвращает строку, представляющую значение числа в
восьмеричном (по основанию 8) виде
RIGHT$ Возвращает n самых правых символов строки
SPACE$ Возвращает строку, состоящую из n пробелов
STR$ Возвращает символьный эквивалент числа
STRING$ Возвращает строку, состоящую из многократных копий
заданного символа
UCASE$ Возвращает строку, состоящую только из строчных
букв
VAL Возвращает числовой эквивалент строки
Управление ходом программы
CALL Вызывает процедуру, подпрограмму.
CALL ABSOLUTE Вызывает процедуру на языке ассемблер.
CALL INTERUPT Вызывает системное прерывание.
DEF FN/END DEF Определяет функцию.
DO/LOOP Строит цикл с проверкой вначале и/или в конце
END Завершает выполнение программы или определяет конец
структурного блока.
EXIT Преждевременный выход из структуры.
FOR/NEXT Задает цикл с автоматически возрастающим (или
уменьшающимся параметром цикла).
GOSUB Вызывает подпрограмму.
GOTO Направляет ход программы на оператор, идентифицируемый
меткой.
IF Проверяет условие и изменяет ход программы, если
условие выполнено.
IF блочный Создает последовательность операторов IF.
INLINE Объявляет встроенный машинный код.
REM Отделяет программные комментарии.
RETURN Возвращает управление из подпрограммы в вызывающую
программу.
SELECT Формирует оператор проверки общего назначения.
STOP Останавливает программу.
SUB/END SUB Определяет процедуру (подпрограмму).
SYSTEM Завершает программу.
WHILE/WEND Строит цикл с проверкой в начале.
Ввод
INKEY$ Читает с клавиатуры.
INPUT Запрашивает у пользователя значения, которые будут
присвоены одной или нескольким переменным.
INPUT$ Читает заданное число символов с клавиатуры.
INSTAT Возвращает состояние клавиатуры.
LINE INPUT Считывает строку с клавиатуры в символьную
переменную, игнорируя разделители.
Вывод
PRINT [USING] Посылает на экран сформатированную информацию.
SPC Пропускает n пробелов (используется в опepаторах
PRINT)
TAB Устанавливает табуляцию на заданную позицию вывода
n (используется в операторах PRINT).
WRITE Посылает на экран данные, разделенные запятыми.
Файлы
BLOADS Загружает файл ВSAVED в память.
BSAVE Сохраняет на диске содержимое памяти в заданном
диапазоне адресов.
CHDIR Изменяет текущий каталог (команда CD DOS).
CLOSE Закрывает файл или устройство.
CVI/CVL/ Преобразует символьные данные, прочитанные из
CVS/CVD файла с произвольным доступом в числовую форму.
CVMD/CVMS Преобразует символьные переменные, прочитанные
из файла с произвольным доступом в формате Microsoft
числовую форму.
EOF Возвращает состояние конца файла.
FIELD Определяет переменные поля в буфере файла с
произвольным доступом.
FILES Выводит содержимое каталога (подобно команде DIR DOS)
GET(файлы) Читает запись из файла с произвольным доступом.
GET$ Читает в символьном формате данные из файла,
открытого в режиме BINARY.
INPUT# Присваивает переменным данные из последовательного
файла.
INPUT$ Читает заданное число символов из файла.
KILL Удаляет файл (подобно команде DEL DOS).
LINE INPUT# Считывает строку из последовательного файла в
символьную переменную, игнорируя разделители.
LOC Возвращает текущую позицию в файле.
LOF Возвращает длину файла.
LSET Пересылает символьные данные в буфер файла.
MKDIR Создает каталог (подобно команде MKDIR DOS)
MKI$/MKL$/ Преобразует числовые данные в символьные (для файлов
MKS$/MKD$ с произвольным доступом).
MKMD$/MKMS$ Преобразует числовые данные в формате Microsoft (для
файлов с произвольным доступом).
NAME Переименовывает файл (подобно функции RЕN DOS).
OPEN Готовит файл или устройство к записи или чтению.
PRINT# [USING] Записывает в файл сформатированную информацию.
PUT Записывает запись в файл с произвольным доступом.
PUT$ Записывает строку в файл в двоичном режиме.
RESET Закрывает и сбрасывает все дисковые файлы.
RMDIR Удаляет каталог (подобно команде RMDIR DOS)
RSET Пересылает символьные данные в буфер файла с
произвольным доступом.
SEEK Устанавливает позицию в двоичном файле для GET$
и РUT$.
WRITE# Выводит данные в последовательный файл.
Печатающее устройство
LPOS Возвращает позицию курсора в буфере печатающего
устройства.
LPRINT [USING] Посылает данные на принтер (LPT1:).
Экран
CLS Очищает экран
COLOR Задает цвет
CSRLIN Возвращает текущую вертикальную позицию курсора
(номер строки)
LOCATE Размещает курсор и/или определяет размер указателя
(курсора)
POS Возвращает текущую горизонтальную позицию курсора
(номер колонки )
SCREEN(функция) Возвращает ASCII-код символа в заданной строке и
колонке
WIDTH Устанавливает логическую длину строки
Устройства
COM (n) Управляет прерываниями, связанные с событиями
последовательного порта
INP Читает из порта ввода/вывода.
IOCTL/IOCTL$ Работают с драйвером устройства.
OPEN COM Открывает и конфигурирует коммуникационный порт.
OUT Пишет в порт ввода/вывода.
Управление клавиатурой
KEY Устанавливает и воспроизводит назначения
функциональных клавиш и определяет значения
прерываний по клавишам.
KEY (n) Включает и выключает прерывание по определенной
клавише.
Аппаратные события
DELAY Устанавливает задержку.
ON COM(n) Создает подпрограмму обработки прерывания по
событиям последовательного порта.
ON ERROR Определяет процедуру обработки ошибки и включает
прерывания по ошибке.
ON /GOSUB Вызывает одну из нескольких возможных подпрограмм в
соответствии со значением числового выражения.
ON /GOTO Направляет ход программы по одному из нескольких
возможных адресов в зависимости от значения
числового выражения.
ON KEY(n) Объявляет подпрограмму обработки прерывания,
получающую управление при нажатии заданной клавиши.
ON PEN Объявляет подпрограмму обработки прерывания,
получающую управление, если начинается работа со
световым пером.
ON PLAY Объявляет подпрограмму обработки прерывания,
получающую управление, если буфер фоновой музыки
содержит меньше заданного количества нот.
ON STRIG Объявляет подпрограмму обработки прерывания,
связанных с кнопками джойстика.
ON TIMER Объявляет подпрограмму обработки прерывания,
которая получает управление каждые n секунд.
STICK Возвращает информацию о позиции джойстика.
STRIG (функция) Возвращает состояние кнопок джойстика.
STRIG (оператор)Управляет проверкой событий, связанных с
кнопками джойстика.
WAIT Ждет заданных условий состояния кнопок клавиатуры.
Графика
CIRCLE Рисует круг или часть круга.
COLOR Задает цвет для графических операций
DRAW Изображает контур на графическом экране.
GET(графика) Считывает часть экрана или весь экран в массив.
LINE Рисует прямую линию или прямоугольник.
PAINT Закрашивает замкнутую область на графическом экране
выбранным цветом.
PEN (функция) Читает состояние светового пера.
PEN (оператор) Управляет проверкой событий, связанных со световым
пером.
PMAP Переводит физические координаты в пользовательские
и наоборот.
POINT Определяет цвет пиксела или информацию LPR.
PRESET Изображает точку на графическом экране.
PSET Изображает точку на графическом экране.
PUT Изображает на графическом экране содержимое
числового массива.
SCREEN(графика) Устанавливает режим изображения на экране
VIEW Определяет активную область (после изображения)
графического окна.
WINDOW Определяет графическую систему координат.
Звук
BEEP Генерирует звуковой сигнал
PLAY(функция) Возвращает число нот в буфере фоновой музыки
PLAY(оператор) Возвращает число нот в буфере фоновой музыки
SOUND Генерирует тон заданной частоты и длительности
Управление памятью
CLEAR Очищает память переменных.
DEF SEG Определяет сегмент данных, который используется
операторами BLOAD, BSAVE, CALL ABSOLUTE, PEEK, POKE
END MEM Возвращает адрес конца физической памяти.
ERASE Удаляет динамические массивы и возвращает в
исходное состояние.
FRE Возвращает количество свободной памяти, которая
доступна вашей программе.
МEМSET Объявляет верхнюю границу памяти.
PEEK Возвращает байт, записанный в заданную ячейку памяти.
POKE Записывает байт по заданному адресу.
REG Устанавливает или возвращает значение в регистровом
буфере.
VARPTR Возвращает адрес переменной.
VARPTR$ Возвращает указатель переменной в символьном формате.
VARSEG Возвращает адрес сегмента переменной.
Обработка ошибок и отладка
ERADR Возвращает адрес самой последней ошибки.
ERRDEV/ERRDEV$ Возвращает информацию драйвера устройства.
ERL/ERR Возвращает номер строки и код последней ошибки.
ERROR Имитирует ошибку выполнения.
RESUME Перезапускает выполнение программы после обработки
ошибки.
TRON/TROFF Включает и выключает трассировку выполнения.
ПРИЛОЖЕНИЕ I
------------------------------------------------------------------
Подготовка к работе ТУРБО БЕЙСИКА
------------------------------------------------------------------
Программа TBINST.COM позволяет
* задавать маршрут для файлов, выполняющих настройку, и файлов со
вспомогательной информацией (help)
* приспосабливать клавиатуру
* модифицировать режимы редактора, устанавливаемые по умолчанию
* настраивать режим работы с экраном по умолчанию.
Если вы хотите хранить файлы со вспомогательной информацией
(TBHELP.TBH) и/или файлы настройки (TBCONFIG.TB) не в том катало-
ге, где хранится ТВ.ЕХЕ, а в другом, вам потребуется режим работы
с каталогами ТУРБО БЕЙСИКА для задания маршрута поиска этих фай-
лов.
Если вы не знакомы с редактором ТУРБО БЕЙСИКА или прикованы к
другому редактору, вы можете использовать режим "Команды
редактора" для того, чтобы переконфигурировать (приспособить) к
вашим привычкам клавиши редактора.
Для установки по умолчанию нескольких характеристик
редактора: режима вставки или перезаписи, табуляторов и
автоматического структурирования,- можно использовать вариант
"Default" (по умолчанию) в режиме редактирования.
И, наконец, можно устанавливать режим экрана, в котором будет
работать ТУРБО БЕЙСИК.
Запуск TBINST
-------------
Для запуска программы введите на подсказку DOS TBINST. Первое
меню позволит выбрать: каталог ТУРБО БЕЙСИК, команды редактора,
режимы редактирования по умолчанию, режимы работы экрана или
выход. Вы можете либо нажать высвеченную заглавную букву
выбранного режима, либо использовать стрелки вверх или вниз для
перемещения указателя к выбранному пункту и нажать Enter. Нажмите,
например, D для того, чтобы изменить режимы редактирования по
умолчанию. Нажатие клавиши Esc вернет вас в основное меню
программы TBINST.
Режим "Каталог ТУРБО БЕЙСИКА"
-----------------------------
Режим "Каталог ТУРБО БЕЙСИКА" полезен, в действительности,
только пользователям, работающим с жестким диском. Этот режим
используется для задания маршрута к конфигурационным файлам с тем,
чтобы они были доступны всякий раз при вызове ТУРБО БЕЙСИКА
(предполагается, что вы задали оператор маршрута для ТБ).
После выбора режима "Каталог ТБ", появляется подсказка на
ввод полного маршрута к каталогу ТУРБО (т.е. каталога, в котором
хранятся ваши конфигурационные файлы; см. в гл.3 описание режима
Directories в спускающемся меню SETUP). Например, если вы хотите
хранить конфигурационные файлы в подкаталоге с продуктами Борлан-
да, вы должны в качестве маршрута указать:
C:\BORLAND\BASIC
После ввода маршрута нажмите Enter для приема ответа, и вам
будет вновь предложено меню. При выходе из программы вы получите
запрос о том, сохранить ли сделанные изменения.