УКНЦ Бейсик Руководство программиста
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. |
УТВЕРЖДЕН .00031-01 33 01-ЛУ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЛЕКСА ВЫЧИСЛИТЕЛЬНОГО УЧЕБНОГО "ЭЛЕКТРОНИКА МС 0202" БЕЙСИК РУКОВОДСТВО ПРОГРАММИСТА .00031-01 33 01 ЛИСТОВ 14 1987 ЛИТЕРА А - 2 - .00031-01 33 01 АННОТАЦИЯ Настоящий документ является руководством программиста по работе с БЕЙСИК-системой и содержит общую информацию, необходимую программисту для работы с языком БЕЙСИК на микро-ЭВМ "Электроника МС 0511". Документ содержит сведения об основных характеристиках БЕЙСИК-системы, способе использования, а также сообщения программисту и оператору. - 3 - .00031-01 33 01 СОДЕРЖАНИЕ 1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ ПРОГРАММЫ................. 4 2. ХАРАКТЕРИСТИКИ ПРОГРАММ................................... 5 2.1. Распределение памяти................................... 5 2.2. Режим работы........................................... 7 3. ОБРАЩЕНИЕ К ПРОГРАММЕ..................................... 8 4. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ................................. 8 5. СООБЩЕНИЯ................................................. 9 5.1. Формат сообщений....................................... 9 5.2. Сообщения об ошибках................................... 10 - 4 - .00031-01 33 01 1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ ПРОГРАММЫ БЕЙСИК-система для микро-ЭВМ "Электроника МС 0511" представляет собой единый комплекс программ. Она предназначена для непосредственного выполнения команд и операторов языка, а также для выполнения БЕЙСИК-программ с предыдущей их компиляцией. Система позволяет создавать программы на языке БЕЙСИК, обладает большими возможностями по редактированию и отладке программ. Для работы с БЕЙСИК-системой необходима микро-ЭВМ "Электроника МС 0511" ( 1.700.016) с подключенным к ней монитором с размерностью экрана 640 х 264. В качестве монитора может использоваться бытовой телевизионный приемник. Для хранения программ к микро-ЭВМ может быть подключен бытовой кассетный магнитофон. Программа компилятора БЕЙСИК записана на диске .00031 МД 01 и передается в микро-ЭВМ по локальной сети из машины преподавателя. В дальнейшем будет предоставлена возможность загрузки БЕЙСИК-системы с кассеты ПЗУ. - 5 - .00031-01 33 01 2. ХАРАКТЕРИСТИКИ ПРОГРАММ 2.1. Распределение памяти Общий объем непосредственно адресуемой памяти ЦП составляет 56 Кбайт (1Кбайт=1024байт). Размер БЕЙСИК-системы может быть различным в зависимости от версии языка, но не превышает 28Кбайт. Остальное адресное пространство используется БЕЙСИК-системой. Адреса ниже 2000 отведены под общий системный стек (адреса возврата из подпрограмм, временное хранение данных и т.п.). Ниже исполнительной части БЕЙСИК-системы расположена область системных переменных, флагов счетчиков, буферов и т.п. Выше этой области хранится во внутреннем представлении текст вводимых строк пользовательской программы. Выше текста программы размещается объектный код программы, получаемый при выполнении команды RUN. Ввод пользователем новых строк или исправление старых приводит к порче объектного кода. поэтому попытки обратиться в этом случае к объектному коду программы приводит к ошибке "Продолжение выполнения программы невозможно". Только после успешной компиляции (по команде RUN) опять становится возможным выполнение команд GOTO, CONT, пошаговое выполнение программы и т.п. Выше объектного кода отводится 200 байтов под символьные переменные. Величину этой области можно изменить оператором CLEAR (см.БЕЙСИК. Описание языка. У1.00031-01 35 01). Выше области строк резервируется память для индексных переменных всех типов. В этой области также хранятся максимальные значения индексов массивов. Область массивов всегда располагается начиная с четного адреса, поэтому и величина области строк всегда является четным числом. В случае, когда оператором CLEAR указывается нечетное количество байтов для строк, оно автоматически увеличивается до четного числа. Распределение памяти приведено на рис. 1. - 6 - .00031-01 33 01 ------------------------------- 157777 ! ДРАЙВЕР СЕТИ ! ! ! !------------------------------! 150000 ! ПАМЯТЬ ПОЛЬЗОВАТЕЛЯ ! ! ! !------------------------------! HIMEM ! БЛОК КОНТРОЛЯ ДЛЯ ФАЙЛОВЫХ ! ! ДАННЫХ С БУФЕРОМ (256+18БАЙТ)! !------------------------------! ! БУФЕР ДЛЯ SAVE, LOAD И ВВОДА ! ! С КЛАВИАТУРЫ (256 БАЙТ) ! !------------------------------! ! ТАБЛИЦА СВЯЗИ (ДЛЯ КАЖДОЙ ! ! СТРОКИ 3 СЛОВА) ! !------------------------------! ! ТАБЛИЦА ИМЕН И ЗНАЧЕНИЙ ! ! ПРОСТЫХ ПЕРЕМЕННЫХ ! !------------------------------! ! СТЕК ЦИКЛОВ FOR И ! ! ПОДПРОГРАММ GOSUB ! !------------------------------! ! СВОБОДНАЯ ОБЛАСТЬ (РАЗМЕР ! ! ВЫДАЕТ ФУНКЦИЯ FREE [(N)] ! !------------------------------! ! ПАМЯТЬ МАССИВОВ ! !------------------------------! ! ПАМЯТЬ СТРОКОВЫХ ПЕРЕМЕННЫХ ! ! (200 БАЙТ) ! !------------------------------! ! ОБЪЕКТНЫЙ КОД ! !------------------------------! ! ТЕКСТ СТРОК ПРОГРАММ ! !------------------------------! ! Б Е Й С И К ! !------------------------------! ! СИСТЕМНЫЕ ПЕРЕМЕННЫЕ, ФЛАГИ, ! ! СЧЕТЧИКИ, БУФЕРА И Т.Д. ! !------------------------------! 2000 ! С Т Е К ! !------------------------------! ! ВЕКТОРА ! 0 !------------------------------! Рис. 1 - 7 - .00031-01 33 01 2.2. Режим работы Программа на языке БЕЙСИК состоит из строк, которые могут содержать операторы и команды. Программа может вводиться и выполняться в одном из двух режимов: косвенном или непосредственном. Для выполнения программы в косвенном режиме каждая строка этой программы должна начинаться с номера строки. За номером строки следует оператор. Минимальный номер строки 0, максимальный - 65535. Ввод операторов программы может выполняться в произвольном порядке. Выполнение операторов происходит в порядке возрастания номеров строк после подачи команды RUN. Для работы в непосредственном режиме номер строки не вводится. Операторы без номера строки выполняются непосредственно по мере их ввода в систему. Непосредственный режим БЕЙСИК-системы позволяет использовать вычислительную машину как очень мощный калькулятор. Только в непосредственном режиме выполняются команды БЕЙСИК-системы. К ним относятся: 1) команды пуска программы (RUN, CONT, SYSTEM); 2) команды загрузки и хранения программ (LOAD, SAVE, MERGE, CLOAD, CSAVE, FILES, BLOAD, BSAVE); 3) команды работы с текстами программ (LIST, DELETE, RENUM, AUTO, LLIST). Подробнее команды описаны в документе: БЕЙСИК. Описание языка. У1.00031-01 35 01. - 8 - .00031-01 33 01 3. ОБРАЩЕНИЕ К ПРОГРАММЕ Загрузка БЕЙСИК-системы через локальную сеть выполняется согласно У1.00031-01 34 03 Локальная сеть. Руководство оператора. Признаком нормальной работы системы служит выполнение следующих действий: - очистка экрана телевизора - формирование на экране служебной строки: ЛАТ - вывод начального сообщения: БЕЙСИК УК-НЦ (ВГУ, 1987.07.08) Ok Приглашение "Ok" означает готовность системы к работе и ожидание ввода команд или программы на языке БЕЙСИК. 4. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ Программа на исходном языке БЕЙСИК состоит из строк операторов. Операторы языка изменяют значения переменных, естественный порядок вычислений согласно алгоритму решения задачи, резервируют память под переменные и константы и т.д. К основным операторам относятся: 1) операторы присваивания (LET); 2) операторы безусловного и условного перехода (GOTO, IF); 3) операторы обращения к подпрограмме и возврат из нее (GOSUB, RETURN); 4) операторы цикла (FOR, NEXT); 5) операторы ввода/вывода (PRINT, INPUT, OPEN и т.д.) и др. Подробно эти и другие операторы языке БЕЙСИК описаны в документе: БЕЙСИК. Описание языка. У1.00031-01 35 01. Входные и выходные данные могут храниться на магнитной ленте или на диске машины преподавателя, если микро-ЭВМ "Электроника МС 0511" подключена к локальной сети. - 9 - .00031-01 33 01 БЕЙСИК-система допускает работу с тремя типами файлов: 1) информация в кодах КОИ-7 строками не более 255 символов (тип по умолчанию ASC, если файл создан командой SAVE, или DAT, если файл создан средствами БЕЙСИК-системы для работы с файлами данных); 2) БЕЙСИК-программы во внутреннем коде системы (тип по умолчанию COD); 3) Файлы с двоичной информацией (тип по умолчанию BIN). При обмене информацией используются следующие команды БЕЙСИК-системы: 1) для приема и передачи программ БЕЙСИК-системы в текстовом формате - LOAD и SAVE; 2) для приема и передачи программ во внутреннем коде системы - CLOAD и CSAVE; 3) для обмена двоичной информацией - BLOAD и BSAVE. Для обмена данными используются операторы OPEN, PRINT#, INPUT#, CLOSE. 5. СООБЩЕНИЯ 5.1. Формат сообщений При обнаружении ошибки во время ввода, синтаксического анализа или выполнения программы БЕЙСИК-система выдает сообщение об ошибке. Формат следующий: <ОШИБ> в строке YYYYYY , где <ОШИБ> - сокращенное название ошибки; YYYYYY - номер строки, в которой обнаружена ошибка. Если выполняется работа в непосредственном режиме, то номер строки не выдается. При выполнении оператора STOP или при нажатии клавиши <СТОП> выдается сообщение: Стоп в строке YYYYY где YYYYY - номер строки, выполняющейся в это время. - 10 - .00031-01 33 01 5.2. Сообщения об ошибках 1 NEXT без FOR NEXT не предшествовал FOR или переменная, исполь- зованная в FOR, не соответствует переменной, использованной в NEXT. 2 Синтаксическая ошибка Неверное использование символов, например, число открывающих скобок не соответствует числу закрывающих, неправильная запись операторов или их составных частей, неправильно использована запятая и т.п. 3 RETURN без GOSUB При выполнении RETURN обнаружено, что не было выполнено GOSUB. 4 Кончились DATA При выполнении оператора READ обнаружено, что список оператора DATA исчерпан. 5 Неправильный вызов функции Ошибка возникает в следующих случаях: - отрицательный индекс; - неправильный аргумент для LOG, SQR; - неправильные значения аргументов для графичес- ких и других операторов; - неопределенная с DEFUSR функция USR и др. 6 Переполнение Результат арифметической операции слишком велик по абсолютному значению и не может быть записан в формате, принятом для чисел в БЕЙСИК- системе. ( В случае слишком малых величин результат приравнивается нулю и ошибки не выдается). 7 Переполнение памяти Программа не помещается в памяти, либо использовано слишком много вложенных операторов FOR, GOSUB, слишком много переменных, слишком много затребовано памяти для массива или области строк, слишком мала свободная область для гене- рирования кода непосредственно выполняемых опе- раторов. 8 Неопределен номер строки - 11 - .00031-01 33 01 В GOTO, GOSUB, IF, RESTORE, RENUM, AUTO, ON или DELETE использован номер несуществующей строки. 9 Недопустимый индекс (за пределами) Ссылка на элемент массива с индексом, который выходит за пределы размерности массива, либо указано неправильное число индексов. 10 Повторное определение массива Массив определен двумя операторами DIM, или массив определен оператором DIM после того, как по умолчанию для этого массива была установлена размерность 10. 11 Деление на нуль В выражении встретилось деление на нуль, или нуль был возведен в отрицательную степень. 12 Невозможно выполнить Недопустимый оператор в режиме непосредственного выполнения. 13 Ошибка типов Попытка присвоить символьной переменной числовое значение или наоборот; функции, использующей числовой аргумент, передается символьный аргу- мент или наоборот. 14 Не хватает места символьным переменным Превышено количество оставшейся памяти, которая была отведена символьным переменным по умолчанию или оператором CLEAR. 15 Слишком длинная строка Была попытка создать строку длиной более чем 255 символов. 16 Не определена 17 Продолжение невозможно Была сделана попытка продолжить выполнение программы, которая: 1. Была прервана из-за возникновения ошибки; 2. Была изменена; 3. Не существует. 18 Не определена функция пользователя Попытка обратиться к функции FN до ее определе- - 12 - .00031-01 33 01 ния оператором DEFFN. 19 Ошибка устройства ввода/вывода Встречается при работе устройства ввода/вывода. 20 Не определена 21 Не определена 22 Не определена 23 Не определена 24 Отсутствует операнд Выражение содержит оператор без операнда, или в операторе (команде) нет обязательных параметров. 25 Переполнение буфера ввода Была сделана попытка ввести строку длиной более чем 255 символов. 26-51 Не определены 52 Ошибочный номер файла Оператор или команда ссылается на файл, который не открыт или открыт с другой целью (не для записи или чтения). 53 Не определена 54 Файл уже открыт Применен оператор OPEN для файла, который уже открыт. 55 Конец файла Попытка прочитать запись окончания файла оператор INPUT# был выполнен после того, как все данные из файла были введены, или применен Для пустого файла. Чтобы избежать этой ошибки, для обнаружения окончания файла применяйте функ- цию EOF. 56 Ошибочное имя файла В операторах LOAD, SAVE или OPEN использовано - 13 - .00031-01 33 01 неправильное имя файла (имя файла состоит из слишком большого количества символов). 57 Строка без номера Команда непосредственного выполнения в программе во время загрузки КОИ-7 файла. Загрузка прерыва- ется. 58 Не определена 59 Файл не открыт Оператор ввода/вывода применен к файлу, который не был открыт. 60 Не определена 61 Не определена 62 Ошибочное имя устройства Было использовано ошибочное имя устройства (в данной версии языка отсутствует). - 14 - .00031-01 33 01 ------------------------------------------------------------------ ! ЛИСТ РЕГИСТРАЦИИ ИЗМЕНЕНИЙ ! !------------------------------------------------------------------! ! ! НОМЕРА ЛИСТОВ (СТРАНИЦ) ! ВСЕГО ! !ВХОДЯЩИЙ ! ! ! ! !-------------------------! ЛИСТОВ ! N !N СОПРОВО!ПОДП!ДА! ! !ИЗМЕ !ЗАМЕ !НОВЫХ!АННУЛИ-!(СТРАНИЦ)!ДОКУМЕН-!ДИТЕЛЬНО-! !ТА! !ИЗМ! НЕН ! НЕН ! !РОВАН- !В ДОКУМ. ! ТА. !ГО ДОКУМ ! ! ! ! ! НЫХ ! НЫХ ! ! НЫХ ! ! ! И ДАТА ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--! ! ! ! ! ! ! ! ! ! ! ! !---!-----!-----!-----!-------!---------!--------!---------!----!--!