[an error occurred while processing this directive]
.нс2 .ктФг.00012-02 35 01 .сс .цв АННОТАЦИЯ .ов В настоящем документе приведено неформальное описание языков программирования "Бейсик-Агат" и APPLESOFT, поставляемых на гибком магнитном диске (ГМД) ИКП1. Эти версии в основном совместимы, различия указываются в соответствующих разделах документа. Описание предназначается для ознакомления с языком "Бейсик", реализованным на ПЭВМ "Агат", для ознакомления с языком "APPLESOFT", который функционирует в режиме "APPLE" ПЭВМ "Агат" исполнения 9, либо при использовании модуля расширения Фг3.089.121 в составе "Агат-7", а также в качестве справочного материала для программистов, знакомых с какой-либо версией языка "Бейсик" по опыту работы или изучавших основы этого языка. Описание языка не содержит сведений о его реализации. Информация, полезная при разработке сложных программ (использование нестандартной периферии, работа на пределе технических параметров ПЭВМ) содержится в руководстве программиста Фг.00012-02 33 01. Документ содержит разделы "Общие сведения" и "Элементы языка", в нем описано внешнее представление данных и команд собственно версии языка "Бейсик", средства графических режимов и возможности для программирования в системе команд процессора. .сс .цв СОДЕРЖАНИЕ .пв Лист .ов .кс0 1. Общие сведения 4 2. Элементы языка 6 .кс2 2.1. Представление данных 6 2.2. Представление операций 8 2.3. Представление команд 9 2.4. Средства программирования на языке ассемблера 23 .сс .кс3 .цв 1.ОБЩИЕ СВЕДЕНИЯ .ов Язык программирования "Бейсик" предназначается для использования профессиональными программистами при разработке широкого класса программ на ПЭВМ "Агат", а также для применения неподготовленными пользователями при решении простых вычислительных задач на уровне калькулятора и при эксплуатации ими готовых программных изделий в качестве языка управления заданиями. Логической основой построения данной версии языка "Бейсик" служат стандартные средства языка "Бейсик", который является его подмножеством. В интересах удовлетворения предъявленным требованиям проведены следующие расширения: 1) введено раздельное представление для целых и вещественных чисел без ограничений на применимость арифметических и специальных операций над ними; 2) в версии "Бейсик- Агат" введен набор средств, соответствующих возможностям отображения, предоставляемых дисплейной системой ПЭВМ "Агат", а именно: цветной текстовый режим в нормальном, инверсном и мерцающем изображении, 32*32 символа, 8 цветов; черно-белый текстовый режим в нормальном или инверсном изображении, 64*32 символа; графический цветной режим 128*128 элементов разложения, 8 цветов; графический черно-белый режим 256*256 элементов разложения; 3) в версии "Бейсик- Агат" введен набор средств программирования на машинно-ориентированном языке типа ассемблера, обеспечивающий формирование в памяти ПЭВМ "АГАТ" и исполнение фрагментов программ в системе команд процессора. В набор включены также средства отладки машинных программ. .ов Объединение перечисленных средств в одном интерпретаторе позволяет разрабатывать высокоэффективные программы, пользуясь экономичной по памяти записью на средствах высокого уровня для редко используемых ветвей программы и применяя машинное кодирование для ветвей, несущих наибольшую вычислительную нагрузку. Отладка такой гибридной программы, проводимая на едином исходном тексте, существенно упрощается по сравнению с традиционной технологией включения отдельно отлаженных кодовых элементов общей программы. Кроме того, использование средств языка высокого уровня в интересах ассемблирования позволяет легко получить весь набор удобств, предоставляемый макрогенераторами с условной сборкой, управляя процессом ассемблирования с помощью обычных условных операторов и операторов перехода на подпрограмму. Язык программирования "APPLESOFT" предоставляет пользователю возможность работать в нормальном, инверсном или мерцающем изображении в монохромном текстовом режиме 40*24 символа, а так же в графическом цветном режиме 280*192 элемента разложения, 6 цветов. .сс .цв 2. ЭЛЕМЕНТЫ ЯЗЫКА .ов 2.1. Представление данных 2.1.1. Вид записи в программе и диапазоны возможных значений Простых переменных приведены в табл.1. Tаблица 1 .ов .ао0 _______________________________________ Тип ! Имя ! Диапазон ! --------------------------------------- -38 38 Вещественные ! АВ !10 <abs(X)<o10 .ао1 Целые ! АВ% !+/-32767 Строковые ! АВ¤ !0-255 символов Примечание: А - буква, В - последовательность из букв и цифр. 2.1.2. Примеры записи переменных с индексами (элементов массивов) приведены в табл.2. Tаблица 2 .ао0 ________________________________ Tип ! Имя -------------------------------- .ао1 Вещественные ! АВ ( 3,12,7 ) Целые ! АВ% ( 3,12,7 ) Строковые ! АВ¤ ( 3,12,7 ) Размер массива ограничивается доступной памятью. Идентификация переменных проводится по всем символам имени, длина которого не более 250 символов, и по типу переменной. Таким образом, одному идентификатору могут соответствовать три разные простые переменные и еще три разных массива. В языке "APPLESOFT" переменная идентифицируетя по первым двум символам имени. 2.1.3. Различаются вещественные, целые и строковые константы. Вещественные константы представляются в естественном формате, например: 123.456 .53 или в экспоненциальном формате 1.234 Е-5=0.00001234 -1.234 Е5 = -123400 .ов Вещественные числа могут быть присвоены вещественным и целым переменным, при присваивании целой переменной засылается целая часть значения, которая должна принадлежать диапазону представления целых. Целые константы представляются в десятичном или шестнадцатеричном виде (от ¤0 до ¤FFFF ). Числам от ¤0 до ¤7FFF соответствуют положительные целые, от ¤8001 до ¤FFFF - отрицательные от минус 32767 до минус 1. Целого, соответствующего ¤8000, нет, поэтому вблизи этих значений лучше пользоваться вещественными переменными. Переход через ¤8000 вызывает неправильности и для вещественных переменных, которые можно проиллюстрировать следующими истинными условиями: ¤8100<¤7F00 ¤7F00+¤200>¤8100 Целые константы присваиваются целым и вещественным переменным. В языке "APPLESOFT" целые константы представляются только в десятичном виде. Строчные константы имеют длину не более 237 символов и могут содержать любые символы, кроме перевода строки и кавычек. Можно проверить, как выполняется PRINT строки, состоящей из многих УПР-Г. Присваивать строчные константы можно только строковым переменным. 2.2. Представление операций Арифметические операции: "=" присваивание (переменная = выражение); "-" взятие с обратным знаком (унарная), вычитание (бинарная); "+" сложение; "*" умножение; "/" деление; "^" возведение в степень; Операции сравнения и логические: "=" равно; "<>" не равно; "<" меньше; ">" больше; "<=" меньше или равно; ">=" больше или равно; "NOT" логическое "не"; "AND" логическое "и"; "OR" логическое "или"; Логическое "истина" тождественно арифметической "1", "ложь" - "0". Для строковых переменных применимы отношения "=", "<", ">" и "<>". 2.3. Представление команд Команды "Бейсика" подразделяются на 4 типа: А - команды, начинающиеся с ключевого слова (см.пп.2.3.1, 2.3.2, 2.3.4, 2.3.5, 2.3.6, DIM из п.2.3.3 данного документа); В - присваивания, начинающиеся с имени переменной; C - команды ассемблера, начинающиеся с "!"; D - команды отладочного набора, начинающиеся с "*". В языке "APPLESOFT" реализованы только команды типов А и В. Для различения команд типов А и В имена не должны начинаться с фрагментов, тождественных ключевым словам. Имена, употребляемые в качестве меток ассемблерного текста, не могут, кроме того, начинаться с фрагментов, совпадающих с мнемоникой операций системы команд. Внутри строк программы и директив непосредственного исполнения команды типов А и В разделяются ":", оно же отделяет от них команды типа С. Между собой команды типа С разделяются "!". При записи команд типа D после других команд разделителем также является ":". После команд типа D ":" может быть принято за элемент такой команды (например, * ¤100:), поэтому располагать их в середине строки не рекомендуется. .сс Внутри команды слова, при необходимости, разделяются пробелами. Так, в команде IF A<B THEN PRINT ABC 1-й, 3-й и 4-й пробелы необязательны, поскольку находятся после ключевых слов. Отсутствие 2-го пробела будет воспринято как ошибка, так как образуется слово BTHEN, неотличимое от правильного имени переменной. В APPLESOFT все пробелы не обязятальны и имена не должны содержать ключевых слов. Номера строк программы не должны превышать 65535. 2.3.1. Язык "Бейсик" ПЭВМ "Агат" интерпретирует следующие системные команды: LOAD - загружает программу с магнитной ленты (МЛ) (бытовой магнитофон); SAVE - записывает программу на МЛ; NEW - устанавливает начальное состояние памяти, стирает программу и данные; RUN - запуск программы со строки с наименьшим номером. Для запуска с промежуточной точки указать номер строки (например, RUN 200); STOP - останавливает программу ( с выдачей текста строки, в которой произошел останов); END - конец программы; <УПР-Ц> - останавливает программу или выдачу текста программы с выдачей текста строки и подсветкой оператора, на котором произошел останов (в APPLESOFT при останове сообщается только номер строки останова); CONT - продолжает выполнение программы после STOP или <УПР-Ц>; TRACE - включает режим вывода номера строки при выполнении каждого оператора; NOTRACE - отменяет TRACE; PEEK(X) - значение байта по адресу Х; POKE X,Y - заносит Y (0<=Y<=255) по адресу Х; WAIT X,Y,Z - ожидает пока истинно <Х>=Z под поразрядной маской Y (<X> - содержимое байта по адресу Х). Например, WAIT ¤C000,¤80,0 ожидает любого нажатия на клавиатуре; CALL X - вызов кодовой подпрограммы по адресу Х; USR(X) - вызов кодовой подпрограммы с передачей значения. Значение Х помещается в ячейках ¤9D - ¤A2 (157-163). Адрес кодовой подпрограммы должен быть подготовлен в ячейках 11-12, в ячейке 10 - код команды безусловного перехода 76 (¤4C); & - свободное ключевое слово, служит для расширения набора директив пользователем. Директива пользователя должна быть записана непосредственно за знаком "&", команду перехода на программу обработки необходимо занести в ячейки памяти ¤3F5 - ¤3F7. В момент входа в программу в аккумуляторе первый символ директивы (следующий за "&" символ); признак переноса C = 0, если этот символ - цифра, в ячейках ¤B8,¤B9 - адрес этого символа; HIMEM: - устанавливает верхнюю границу памяти под переменные и строки, используемые программой. Значения переменных теряются, установленное значение HIMEM увеличивать нельзя; LOMEM: - то же, для нижней границы памяти (нельзя уменьшать). Исходные значения HIMEM (¤С000) и LOMEM ( ¤1908) устанавливаются директивой ДОС "FP " или CALL ¤E000. В языке "APPLESOFT" исходные значения HIMEM и LOMEM устанавливаются соотвественно в ¤803 и ¤9600 с ДОС или в ¤803 и ¤C000 без ДОС. 2.3.2. Для редактирования, а также при выводе текстовой информации на экран ВКУ используются следующие команды: LIST - выдача текста программы. Команда LIST без параметров выдает весь текст; LIST 100,200 - выдает строки с номерами 100<=N<=200; LIST 100, - выдает строки с номерами не меньше 100; LIST,200 - выдает строки с номерами не больше 200; LIST 150 - выдает строку 150; Описанные ниже модификации команды LIST в языке "APPLESOFT" не реализованы. LIST "текст" - выдает все строки, содержащие указанный текст (просматривается текст строк в формате вывода командой LIST без редактирующих переводов строки, см. ниже); LIST "текст1'текст2" - заменяет вхождения фрагментов, указанных в качестве "текст1", на "текст2" и выдает измененные строки. Диапазон поиска и замены может быть указан перед кавычками по тем же правилам, что и для выдачи. Формат выдачи определяется следующими правилами: до и после каждого ключевого слова и символа выдается пробел; перед каждым именем длиной 2 и больше символов выдается пробел; после номера строки выдается пробел (только в "Бейсик- Агат"). Формат, в котором выполняется поиск и замена фрагментов, может быть проверен директивой LIST" ". Изменение номера строки с помощью замены, например: LIST 100"100'150" не приводит к уничтожению строки 100, а добавляет к программе строку 150. При выдаче текста без поиска и замены добавляются редактирующие переводы строк и табуляция, обеспечивающие легкость чтения программы; DEL X,Y - уничтожает строки программы от номера Х до номера Y включительно; REM - комментарий до конца строки, при выполнении игнорируется; VTAB Y - устанавливает курсор на строку экрана с номером Y (0<=Y<=31), в APPLESOFT 1<=Y<=24; HTAB X - передвигает курсор на Х-ю позицию текущей экранной строки. В режиме 32*32 1<=X<=32, в режиме 64*32 1<=X<=64, в режиме APPLESOFT 1<=х<=40. TAB(X) - элемент оператора PRINT , то же, что HTAB, но при X меньше значения текущей горизонтальной позиции экрана не исполняется. Нумерация строк и позиций на экране сверху вниз и слева направо; POS(0) - значение, номер позиции от левого края текстового окна. В скобках значение несущественно; SPC(X) - элемент оператора PRINT, вывод Х пробелов; HOME - очистка текстового окна, курсор помещается в верхнем левом углу окна; CLEAR - чистка переменных. В конце текста программы во внутреннем представлении хранятся все имена переменных длиною 2 и более символов, набранные с клавиатуры в процессе отладки. Среди них могут находиться имена, исключенные из программы, и некоторые ошибочные директивы, которые не влияют на ход исполнения, но "засоряют" память и приводят к неоправданному увеличению длины программы. Директива CLEAR позволяет исключить все лишние имена из внутреннего представления программы. При ее выполнении, кроме того, на экран выдается весь текст программы в формате поиска/замены (в APPLESOFT CLEAR обнуляет переменные без "чистки" и выдачи листинга); FRE(0) - значение, объем свободной памяти, выполняется "чистка мусора" в области хранения строк (значение аргумента несущественно); SPEED=X - задает скорость (0-255) вывода текста. FLASH - включает мерцающий режим вывода текста; INVERSE - включает инверсный (черный по светлому фону) режим вывода текста; NORMAL - включает прямой (светлый по черному) режим вывода текста. Последние три команды в черно-белом алфавитно-цифровом режиме 64х32 символа не исполняются. .стописание языка1[an error occurred while processing this directive]