2.5. С о о б щ е н и я об о ш и б к а х в с и с т е м е MSX-BASIC Дать подходящее сообщение об ошибке - верх справедливости. Старая пословица Получив сообщение об ошибке, сохраняй- те спокойствие. Маленькая хитрость К о д С о о б щ е н и е 1 NEXT without FOR (NEXT без FOR). WWWWWWWWWWWWWWWW Встречен оператор NEXT, но отсутствует переменная, определенная посредством оператора FOR. Переменная в операторе NEXT не соот- ветствует никакой ранее выполненной и не имеющей пары переменной оператора FOR. Либо в программе слишком много NEXT, либо ошибка в переменной, следующей за NEXT. 2 Syntax error (Синтаксическая ошибка). WWWWWWWWWWWW Строка содержит неправильную последовательность символов (напри- мер, непарные скобки, неправильно написанная команда или опера- тор,неверная пунктуация и т.д.). Причиной ошибки является либо незнание синтаксиса, либо прос- тая описка! 3 RETURN without GOSUB (RETURN без GOSUB). WWWWWWWWWWWWWWWWWWWW Встречен оператор RETURN, для которого нет предыдущего,не связан- ного в другой паре,оператора GOSUB. Это,например,происходит ког- да конец основной программы и начало подпрограммы не разделены посредством END. 4 OUT of DATA (Исчерпаны данные DATA). WWWWWWWWWWW При выполнении оператора READ в операторе DATA не хватает данных. В программе отсутствует RESTORE или условие прекращения действия оператора READ. 5 Illegal function call (Неправильный вызов функции). WWWWWWWWWWWWWWWWWWWWW Это сообщение появляется обычно в том случае, если аргумент функ- ции выходит за установленные пределы. Данная ошибка может произойти в следующих случаях: 1) отрицательный или слишком большой индекс; 2) отрицательный или нулевой аргумент в функциях LOG и SQR; 3) обращение к функции USR, для которой не задан начальный ад- рес; 4) использование операторов ERASE, SWAP, VARPTR с неопределенной (неиспользуемой) переменной; 5) неправильный аргумент в операторах MID$, RIGHT$,LEFT$, INP, OUT,WAIT,PEEK,POKE,TAB,SPC,STRING$,SPACE$,INSTR,ON...GOTO(GOSUB); 6) в операторах GET или PUT записано отрицательное число; 7) в режимах SCREEN0 или SCREEN1 использованы графические коман- ды/операторы; 8) неправильные переменные в GML (графический макроязык) или в MML(макроязык музыки); 9) использование SPRITE$ в режиме SCREEN 0. 6 Overflow (Переполнение). WWWWWWWW Результат вычисления превосходит формат представления числа в BASIC. Если появляется UNDERFLOW (потеря всех значащих цифр), то результат принимается равным нулю и выполнение программы продол- жается б е з сообщения об ошибке. 7 Оut of memory (Выход за пределы памяти). WWWWWWWWWWWWW Программа слишком велика или содержит слишком много переменных (слишком большие массивы), слишком много циклов FOR...NEXT, пере- ходов GOSUB (для которых требуются метки переходов в стеке). Иног- да этого можно избежать, записывая массивы в файлы на дискете, ис- правляя распределение памяти соответствующими операторами CLEAR или записывая подпрограммы в двоичные файлы. В некоторых случаях можно хранить данные в неиспользуемых областях видеопамяти (VRAM). 8 Undefined line number (Не определен номер строки). WWWWWWWWWWWWWWWWWWWWW Обращение к несуществующей строке в операторах GOTO,GOSUB,IF... THEN...ELSE или DELETE. Новая строка, которая содержит только но- мер строки, также вызывает это сообщение. Обратите внимание, что команда RENUM обнаруживает недостающие переходы! 9 Subscript out of range (Выход за пределы массива). WWWWWWWWWWWWWWWWWWWWWW Обращение к элементу массива с индексом, превышающим размерность массива или с недопустимым количеством индексов. 10 Redimensioned array (Повторное задание размерности массива). WWWWWWWWWWWWWWWWWWW Один и тот же массив упоминается в двух операторах DIM или ис- пользуется оператор DIM для массива, который ранее был определен по умолчанию. Для изменения размерности массива его нужно предварительно уничтожить с помощью оператора ERASE. 11 Division by zero (Деление на нуль). WWWWWWWWWWWWWWWW В выражении встречается деление на нуль, или возведение нуля в отрицательную степень (нуль в нулевой степени принимается равным 1). Помните, что значение будет приравнено нулю, если оно меньше минимального числа, представимого в компьютере MSX ("машинного ну- ля"). 12 Illegal direct (Неправильная команда в режиме непосредственного WWWWWWWWWWWWWW выполнения). В качестве команды режима непосредственного выполнения встреча- ется оператор, недопустимый в этом режиме (например, DEFFN). 13 Type mismatch (Несоответствие типа). WWWWWWWWWWWWW Присвоение строковой переменной числового значения или наоборот; аргументу функции, которому должно быть присвоено числовое значе- ние, присваивается строковое значение и наоборот. 14 Out of string space (Исчерпано место для строковых переменных). WWWWWWWWWWWWWWWWWWW Пространство в памяти,отведенное под строковые переменные по умол- чанию (200 байтов) или посредством CLEAR, исчерпано. Следует пере- задать размеры пространства, использовать файлы (дискету) или за- писать строки в неиспользуемые области видеопамяти (VRAM). 15 String too long (Слишком длинная строка). WWWWWWWWWWWWWWW Попытка создания строки длиной более 255 символов. Такая строка должна быть разделена на меньшие части. 16 String formula too complex (Строковое выражение слишком сложно). WWWWWWWWWWWWWWWWWWWWWWWWWW Слишком длинное или слишком сложное строковое выражение. Его сле- дует разбить на более короткие выражения. 17 Can't continue (Продолжение невозможно). WWWWWWWWWWWWWW Сделана попытка продолжения программы, которая: 1) прервана из-за ошибки, а не по нажатию клавиши STOP или CTRL+STOP 2) модифицирована после останова выполнения программы (Break); 3) не существует. 18 Undefined user function (Неопределенная функция пользователя). WWWWWWWWWWWWWWWWWWWWWWW Вызов функции USR до того, как задано ее определение. 19 Device I/O error (Ошибка устройства ввода/вывода). WWWWWWWWWWWWWWWW Произошла ошибка во время операции ввода-вывода.Это может произой- ти, например, когда CTRL+STOP прерывает операцию чтения с кассет- ной ленты. 20 Verify error (Ошибка верификации). WWWWWWWWWWWW Содержимое памяти или файла при проверке оказывается другим. Эта ошибка может появиться при использовании команды CLOAD. 21 No RESUME (Отсутствует оператор RESUME). WWWWWWWWW В программе обработки ошибок нет оператора RESUME. 22 RESUME without ERROR (Оператор RESUME при отсутствии ошибки). WWWWWWWWWWWWWWWWWWWW Оператор RESUME встречается прежде,чем запускается программа об- работки ошибок. 23 Unprintable error (Ошибка без вывода текста сообщения). WWWWWWWWWWWWWWWWW Насколько известно, такая ошибка может быть вызвана только в резу- льтате действия оператора ERROR (имитация ошибки). 24 Missing operand (Пропущенный операнд). WWWWWWWWWWWWWWW Выражение содержит оператор без последующих операндов; в команде/ операторе отсутствуют обязательные параметры. 25 Line buffer overflow (Переполнение буфера строки). WWWWWWWWWWWWWWWWWWWW Попытка ввести с помощью оператора INPUT строку, содержащую более 255 символов (из файла). 26-49 Unprintable error (См. 23). WWWWWWWWWWWWWWWW 50 Field overflow (Переполнение поля). WWWWWWWWWWWWWW Попытка размещения оператором FIELD количества байтов,превышающее то, которое определено для записи в файл произвольного доступа. 51 Internal error (Внутренняя ошибка). WWWWWWWWWWWWWW Неисправность. Произведите "сброс" нажатием клавиши RESET, либо выключением компьютера. 52 Bad file number (Неправильный номер файла). WWWWWWWWWWWWWWW Оператор или команда обращается к файлу с номером, для которого не был выполнен оператор OPEN, или этот номер превышает число,за- данное в операторе MAXFILES. 53 File not found (Файл не найден). WWWWWWWWWWWWWW Оператор/команда LOAD,KILL,NAME или OPEN обращается к файлу,не су- ществующему на данной дискете. 54 File already open (Файл уже открыт). WWWWWWWWWWWWWWWWW Оператор режима последовательного вывода OPEN задан для файла, ко- торый уже открыт таким оператором; либо оператор KILL относится к открытому файлу. 55 Input past end (Ввод после конца файла). WWWWWWWWWWWWWW Оператор INPUT пытается прочитать больше данных, чем есть в файле. Во избежание этой ошибки используйте функцию EOF для обнаружения конца файла. 56 Bad file name (Неправильное имя файла). WWWWWWWWWWWWW В операторах LOAD, SAVE, KILL или OPEN использовано неверное имя файла (например, имя файла,в котором слишком много символов). 57 Direct statement in file (Оператор прямого режима в файле недопус- WWWWWWWWWWWWWWWWWWWWWWWW тим). Оператор прямого режима встречен при загрузке файла в формате ASCII оператором LOAD. Действие LOAD прекращается. Выдается также при попытке загрузить командой типа LOAD двоичный файл. 58 Sequential I/O only (Только последовательный ввод-вывод). WWWWWWWWWWWWWWWWWWW Использование операторов GET или PUT для файла,который был открыт посредством оператора OPEN как последовательный файл. 59 File not OPEN (Файл не открыт с помощью команды). WWWWWWWWWWWWW Команда (оператор) ввода/вывода используется для файла, который не был открыт оператором OPEN. 60 Bad FAT (Неверная информация в FAT(таблице распределения файлов)). WWWWWWW Файловая таблица распределений FAT не в порядке. Вероятно,дискета не была инициализирована с помощью команды FORMAT. 61 Bad file mode (Неверный режим обращения к файлу). WWWWWWWWWWWWW Сделана попытка использовать операторы PUT, GET или LOF по отноше- нию к файлу последовательного доступа, загрузить командой LOAD файл произвольного доступа, или выполнить оператор OPEN в неподхо- дящем файловом режиме. 62 Bad drive name (Неправильное имя дисковода). WWWWWWWWWWWWWW Использовано неправильное имя дисковода. 63 Bad sector number (Неправильный номер сектора). WWWWWWWWWWWWWWWWW В последней версии дискового MSX-BASIC этой ошибки не должно быть! 64 File still open (Файл все еще открыт). WWWWWWWWWWWWWWW Файл не был закрыт оператором CLOSE. 65 File already exists (Файл уже существует). WWWWWWWWWWWWWWWWWWW Имя файла,определенное в операторе NAME,является идентичным имени файла, уже имеющегося на дискете. 66 Disk full (Дискета заполнена до предела). WWWWWWWWW RAM disk full (Виртуальный диск ОЗУ уже заполнен). WWWWWWWWWWWWW 67 Too many files (Слишком много файлов). WWWWWWWWWWWWWW Попытка создания нового файла(использование команд SAVE или OPEN), когда все 255 элементов каталога заполнены. 68 Disk write protected (Дискета защищена от попыток записи). WWWWWWWWWWWWWWWWWWWW Дискета защищена от попыток записи. 69 Disk I/O error (Ошибка при вводе/выводе на дискету).  WWWWWWWWWWWWWW Неисправляемая ошибка, возникающая при выполнении операторов вво- да-вывода на дискету. 70 Disk offline (Дисковод в автономном режиме или выключен). WWWWWWWWWWWW RAM disk offLine (Отключен виртуальный диск; ошибка для компьюте- WWWWWWWWWWWWWWWW ра серии MSX-2). 71 Rename across disks (Ошибка переименования файла). WWWWWWWWWWWWWWWWWWW Сделана попытка переименования файла с новым идентификатором дис- ковода. Это не допускается! 72-255 Unprintable error (Ошибка без вывода текста сообщения). См.23 . WWWWWWWWWWWWWWWWW В н и м а н и е! 1. Сообщения об ошибках с кодами 60╤71 приведены для версии MSX-Disk BASIC. Для версии MSX-BASIC этим кодам соответствует сообщение об ошибке с номером 23: "Unprintable error" . 2. На компьютерах MSX-2 имеется ошибка без соответствующего номера, сигнализирующая о невозможности подключения диска ОЗУ: No RAM disk . WWWWWWWWWWW