ПРИЛОЖЕНИЕ Е ------------------------------------------------------------------ Сообщения об ошибках ------------------------------------------------------------------ В ТУРБО БЕЙСИКе регистрируются два основных типа ошибок: ошибки компиляции и ошибки выполнения. К ошибкам компиляции относятся синтаксические ошибки, обнаруженные компилятором. К ошибкам выполнения относятся отклонения, найденные механизмами обнаружения ошибок, которые компилятор помещает в объектной программе. Большая часть ошибок компиляции - это ошибки в синтаксисе, вызванные пропуском символа, неправильным написанием команды, непарным числом скобок и т д. Если компилятор встречает что-то в исходной программе, чего он не может понять или допустить, Вы немедленно оказываетесь в редакторе, и курсор указывает на то место, где произошла ошибка. Вам нужно нажать на любую клавишу, чтобы убрать сообщение об ошибке, затем исправить ошибочный оператор и повторить компиляцию. ТУРБО БЕЙСИК выводит номер ошибки и краткое ее описание в нижней строке экрана. Ошибки компиляции имеют номера от 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 для приема ответа, и вам будет вновь предложено меню. При выходе из программы вы получите запрос о том, сохранить ли сделанные изменения.