[an error occurred while processing this directive]
.нс2
.ктФг.00035-01 35 01
.сс
.цв
АННОТАЦИЯ
.ов
В настоящем документе приведено неформальное описание языков программирования "Бейсик-Агат" и APPLESOFT, поставляемых на гибком магнитном диске (ГМД) ИКП1.
Эти версии в основном совместимы, различия указываются в соответствующих разделах документа.
Описание предназначается для ознакомления с языком "Бейсик", реализованным на ПЭВМ "Агат", для ознакомления с языком "APPLESOFT", который функционирует в режиме "APPLE" ПЭВМ "Агат" исполнения 9, либо при использовании модуля расширения Фг3.089.121 в составе "Агат-7", а также в качестве справочного материала для программистов, знакомых с какой-либо версией языка "Бейсик" по опыту работы или изучавших основы этого языка.
Описание языка не содержит сведений о его реализации. Информация, полезная при разработке сложных программ (использование нестандартной периферии, работа на пределе технических параметров ПЭВМ) содержится в руководстве программиста Фг.00035-01 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 (1<=Y<=32), в 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 символа не исполняются.
.стБейсик:оп.яз/продолж.
[an error occurred while processing this directive]