|
Приложение C (часть 2) - язык программирования бейсик.
|
Приложение С (часть 2)
Язык программирования бейсик
Справочное пособпе
Все числа в системе могут иметь точность 9 или 10 знаков. Наи- большее число 10* «38, а наименьшее положительное число 4*10** (-39). Числа имеют внутреннее представление как числа с плавающей (двоичной) точкой, с выделением одного байта на показатель степе- ни 'е* (экспоненты) в интервале от 1 до 255, и четырех байтов на мантиссу 'м' в интервале от 0.5 до 1 (мА"1). Это представляется числом м*2** е (-128).
Поскольку 1/2 < им<1, старший бит мантиссы всегда 1. Следова- тельно, мы можем заменить его на бит, обозначающий знак: 0 для положительного числа и 1 - для отрицательного.
Наименьшее целое и^меет специальное представление, в котором первый байт 0, второй байт знака (О и FFH), а третий и четвертый -само число в дополнительном коде (младшие значащие цифры в пер- вом байте). Числовые переменные имеют имя произвольной длины, на- чинающееся с буквы и продолжающееся буквами или цифрами. пробелы и символы управления цветом игнорируются и все буквы преобразу- ются к минимально упакованному виду.
Управляющие переменные для FOR-NEXT циклов имеют имена длиной в одну букву. числовые массивы имеют имена длиной в одну букву, которая может быть такой же, как имя скалярной переменной. Эти массивы могут иметь произвольное количество измерений и и произ- вольный размер. Начальный индекс всегда 1. Строки символов болев гибкие в своей длине. Имя строковой переменной в отличие от простой переменной заканчивается символом доллара (в). Строковые массивы также могут иметь произвольное количество измерений н размер. Их имена представляют собой одну букву и следующий за ней символ, ио не могут совпадать с именем простой строки символов. Все строки в массивах имеют фиксированную длину, которая опреде- ляется числом, задающим последнюю размерность в операторе DIM. Начальный индекс 1. подстрока от строки может быть получена как сечение. Сечение может быть:
а) пустым;
б) числовым выражением;
в) некоторым 'числовым выражением' 'то' другим 'числовым выра- жением' и использоваться в:
♦) строковых выражениях (сечениях); **) строковых массивах переменных (индекс 1, индекс 2Г... , индекс N, сечение)
Или, что тоже самое
(индекс Г, индекс 2.....индекс N) (сечение).
В случае *), строка выражения имеет значение SB.
Если сечение массива пусто, то SB считается подстрокой от са- мой себя.
Если речение представляется числовым выражением со значением 'М', то результатом будет м-ый символ от SB (подстрока, длиной>1) если сечение представлено в форме в) и первое числовое выражение имеет значение 'М' (умалчиваемое значение 1), а второе 'N' (умал-
чнваемое значение S£), и если 1<*M<*N<« чем длина S*, то резуль- татом будет подстрока от S* с м-ым начальным символом и N-ым ко- нечным. Если 0 < *N<М, то результатом будет пустая строка. В любом другом случае выдается сообщение об ошибке '3'.
Сечение выполняется перед функцией или операцией, которая осу- ществляется, если скобками не предписано сделать иначе. Подстрока может назначаться (смотри оператор LET). Если часть строки за- писывается в строковой литерал, она должна удваиваться.
Функции
имя функции |
тип аргумента |
действие (возвращаемое значение) |
1 |
2 |
3 |
ABS |
число |
абсолютное значение |
ACS |
число |
арккосинус в радианах.Выдает сообще- ние об ошибке а, если н ие лежит в интервале от -1 до 1. |
AND |
логическая операция. правый опера- нд всегда число.Слева может быть: -число, тогда-----
-строка, тогда----- |
Г а,если в< > 0
-> AND в «<
L в,если в*0 Г а*,если в< > 0
-> AS AND в «<
L '' '',если в«0 |
ASN |
число |
арксинус в радианах. Выдает сообщение а,если X ие лежит в интервале от -1 до 1 . |
ATN |
число |
арктангенс в радианах. |
ATTR |
два числовых аргумента X и Y,заключаемые В скобки |
число, двоичный код которого, пред- ставляет собой атрибуты 1-ой позиции Х-ой строки экрана. Бит 7 (старший) равен 1 для мерцающего поля, и 0 для немерцающего. Биты с 5 по 3-цвет фона биты с 2 по 1 - цвет закрашивания, выдает сообщение в, если 0<"Х<*23 и 0<«Х<=31. |
BIN |
|
это необычная функция. За BIN запи- сывается последовательность нулей и единиц, представляющая собой двоичное |
|
|
представление числа, которое записы- вается в память. |
CHR* |
число |
символ, чей код представим числом х, округленным к ближайшему целому. |
CODE |
строка сим- волов |
код первого символа в строке Х(или 0, если X - пустая строка). |
COS |
число в ра- дианах |
косинус X. |
EXP |
число |
е в степени X |
FN |
|
FN с последующим именем, определенной пользователем функции (cm.DEF). Аргу- менты должны заключаться в скобки, даже, если нет аргументов, скобки все равно должны записываться. |
IN |
число |
осуществляется ввод на уровне микро- процессора из порта х (0<»х<*FFFFh). загружается пара регистров ВС и вы- полняется команда ассемблера IN А(С). |
INKEY* |
нет |
чтение с клавиатуры.Возвращает символ введенный с клавиатуры (в режиме [L] или [С], если было действительное на- жатие клавиши, или пустую строку в противном случае. |
INT |
число |
округление к ближайшему меньшему це- лому . |
LEN |
строка сим- волов |
длина строки |
LN |
число |
натуральный логарифм.Выдает сообщение а, если Х<«0. |
NOT |
число |
0, если Х<>0, 1, если Х*0. Операция имеет четвертый приоритет. |
OR |
логическая операция. оба операнда числа. |
Г 1, если В< > 0
A OR В *<
L А, если Ве0 операция имеет второй приоритет. |
PEEK |
число |
значение байта в памяти по адресу х, округленному к ближайшему целому. |
PI |
нет |
число пи (3.14159265...) |
POINT |
два числовых аргумента х и Y, заклю- |
1 , если точка экрана с координатами (x.Y) закрашена. 0, если эта точка имеет цвет фона. Выдает сообщение в, |
|
ченных в ско- бки |
если ие выполняются условия 0<«х<«255 и 0< »Y< «175 . |
RND |
нет |
очередное псевдослучаное число из по- следовательности, получаемой возведе- нием в 75 степень модуля числа 65537, вычитанием 1 и делением на 65536. число лежит в интервале 0<*Y<*1. |
SCREEN* |
два числовых аргумента х и Y, заклю- ченных в ско- бки |
символ (обычный или инверсный), кото- рый появляется на экране в строке X, позиции Y. Дает пустую строку, если символ не опознан. |
SGN |
число |
- 1, если х< 0
0, если х*0
1, если х>0 |
SIN |
число в ради- анах |
синус X |
SQR |
число |
корень квадратный.Выдает сообщение а, если х<0. |
STR* |
число |
строка символов, которая должна быть отображена, ели х выводится. |
USR |
число |
вызывает подпрограмму в маш-ных кодах начальный адрес которой х.При возвра- те результатом будет содержимое реги- стровой пары ВС. |
USR |
строка симво- лов |
адрес группы байтов,задающих опреде- ленный пользователем символ для за- крепления его за х. |
VAL |
строка симво- лов |
вычисление х как числового выражения, выдает сообщение с, если х содержит синтаксические ошибки или дает стро- ковое (нечисловое) значение.Возможны и другие ошибки. |
VAL* |
строка симво- лов |
вычисляет х как строковое выражение, выдает сообщение с, если х содержит синтаксическую ошибку или дает ие- строковое (числовое) значение. |
Префиксные:
число отрицательное значение Инфиксные (двухоперандовые): + сложение для чисел, коикатеиция для строк вычитание
• умножение / деление
• • возведение в степень (стрелка вверх).' Сообщение в,
Вели левый операнд отрицательный.
■ равенство Г
> больше: оба операнда должны быть одного
< меньше: типа. Результат равен 1, если
>« больше или равно: сравнение нстино и равно О, <* меньше или равно: если нет.
< > не равно L
функции и операции имеют следующий приоритет: индексация и сечения - 12
все функции за исключением:
NOT и префиксного минуса - 11
возведение в степень - 10
префиксный минус - 9
/ - 8
• , - (вычитание) - 6 *,>,<,<*,>■,<> - 5 NOT - 4 AND - 3 OR - 2
Операторы
принятые обозначения: а - одна буква; V - переменная; х, Y, Z - числовые выражения;
м, N - числовые выражения, кюторые округляются к ближайшему це- лому ;
е - некоторое выражение;
F - выражение, имеющее строковое значение;
S - последовательность операторов, разделенных двоеточием ': ' с - последовательность символов управления цветом.
Каждый заканчивается ', ' или '; '. Цветовой символ имеет фор- му операндов:
PAPER, INK, FLUSH, BRIGHT, INVERSE или OVER. Текст произвольного выражения может располагаться в любом месте строки (за исключением номера строки, который должен разме- щаться в начале строки).
Все операторы, кроме INPUT, DEF и DATA могут использоваться и как команды и в программах.
Команда или строка программы может содержать несколько опера- торов, разделенных двоеточием ':
Нет ограничений на положение оператора в строке, хотя есть не- которые ограничения в IF и REM.
Все операторы языка сведены в следующую таблицу:
Все операторы языка сведены в следующую таблицу:
Оператор |
Действие оператора |
1 |
2 |
Веер x,y |
воспроизводит звук длительностью X сек. И высотой Y полутонов вверх от основного тона до (или вниз,ес- ли Y отрицательное). |
BORDER м |
устанавливает цвет рамки (бордюра) экрана.Выдает сообщение об ошибке к,если 0> м >Y. |
BRIGHT м |
устанавливает яркость выводимого символа:
0-для обычной яркости;
1-для повышенной яркости; 8-сохраняет существующую яркость. |
Cat |
без MICRODRIVE не работает. |
CIRCLE X,Y,Z |
изображает дугу или окружность с центром в точке с координатами (X, Y) и радиусом Z. |
CLEAR |
уничтожает все переменные и очищает занимаемую ими память.Выполняет RESTORE и CLS,устанавливает PLOT позицию в нижнюю левую точку экрана и очищает GO SUB стек. |
CLEAR N |
подобно CLEAR,но дополнительно из- меняет системную переменную RAMTOP на 'N' и задает новый GO SUB стек. |
CLOSE* |
без MICRODRIVE не работает. |
CLS |
(CLEAR SCREEN) очищает файл экрана. |
CONTINUE |
продолжает выполнение программы,на- чатой ранее и остановленной с сооб- щением ,отличным от О.Еслн было сообщение 9 или L,to выполнение продолжается со следующего операто- ра ,в других случаях с того операто- ра , где случилась ошибка.
если сообщение возникло в коман- дной строке , то CONTINUE вызовет попытку повторить командную строку и перейдет в цикл, если было сооб- щение 0:1,дает сообщение 0,если было 0:2,или дает сообщение N,ес- ли было 0:3 или более.В качестве CONTINUE используется ключевое ело- |
|
во CONT на клавиатуре. |
1 COPY |
пересылает копию 22 строк экрана на принтер,если он подключен.Помните, что по COPY нельзя распечатать на- ходящийся иа экране автоматический листинг.Выдает сообщение 0,если нажать клавишу BREAK. |
DATA e1,e2,e3, . . . |
часть списка данных. Должна распо- лагаться в программе. |
DEF FNa(a 1 , a2.....ак)=е |
определяемая пользователем функция, должна располагаться в программе. а,а!,а2 и т.д. Единственные буквы или буквы н для строковых аргу- ментов, значений.Используется фор- ма DEF PNa() .если нет аргументов. |
DELETE F |
без MICRODRIVE не работает. |
DIM a(Nl ,N2.....Nk ) |
уничтожает массив с именем 'а' и устанавливает числовой массив 'а' с 'к' измерениями И присваивает всем его элементам значение 0. |
DIM a*(Nl ,N2.....Nk) |
уничтожает массив или строку с име- нем 'аВ' и устанавливает символьный массив с 'к' измерениями и присва- ивает всем его элементам значение " ".Массив может быть представлен как массив строк фиксированной дли- ны Nk,c к-1 размерностью.Сообщение 4 выдается,если недостаточно места для размещения массива.Массив не определен до его описания в опера- торе DIM. |
DRAW x,Y |
то же самое ,что и DRAW x,Y,0 . чертит прямую линию. |
DRAW x,Y , Z |
изображает линию от текущей графи- ческой позиции в точку с приращени- ями x,Y по дуге в Z радиан.Выдает сообщение в при выходе за пределы экрана. |
ERAZE |
без MICRODRIVE не работает. ^ |
FLUSH N |
определяет:будет ли символ мерцаю- щим или с постоянным свечением. Ns0 для постоянного свечения,N«1 - для мерцания, N«8 - для сохранения предыдущего состояния. |
FOR a«x то Y |
FOR а«х то Y STEP 1 |
|
|
FOR a«x то Y STEP Z |
уничтожает скалярную переменную 'а' и устанавливает управляющую по- переменную 'х',предел 'Y',uiar при- ращения 'Z',зацикливает адрес, указанный в утверждении после FpR оператора.Проверяет,если началь* ное значение больше (если STEP>«0) или меньше (если STEP<0),4eM пре- дел, то происходит переход к утвер- ждению NEXTa или выдача сообщения 1,если нет (см. NEXT).Сообщение 4 выдается,если недостаточно места для размещения управляющей перемен- ной . |
FORMAT F |
без MICRODRIVE не работает. |
GO SUB N |
проталкивает строку с оператором GO SUB в стек для использования за- тем как GO ТО N. Выдается сообщение 4,если не все подпрограммы заверши- лись с RETURN. |
GO TO N |
продолжает выполнение программы со строки 'N'.Ecah 'N' опущено,то с первой строки после этой. |
IF x THEN S |
если 'х' истинно (не равно 0),то выполняется 'S'.'S' включает все операторы до конца строки, форма 'IF х THEN номер строки' не допустима. |
INK N |
устанавливает цвет закрашивания (т.е. Цвет,которым будут изобра- жаться символы на цвете фона). 'N' в интервале он 0 до 7 указывает цвет.N«8 - оставить цвет без изме- нений, N«9 - увеличение контраста, выдает сообщение к,если 'N' ие ле- жит в интервале от 0 до 9. |
INPUT ... |
где '...' есть последовательность вводимых символов,разделяемых как в операторе PRINT запятыми,точками с запятой или апострофами.Вводимыми символами могут быть:
A) некоторый PRINT-символ,начи- нающийся не с буквы;
Б) имя переменной;
B) строка имен переменных стро- кового типа.
PRINT-символы в случае а) представ- ляются также, как и в операторе PRINT, за исключением того,что они все выводятся в нижнюю часть экрана в случае б) компьютер остаиавливае- |
|
тся и ждет ввода некоторого выраже- ния с клавиатуры,значение которого будет присвоено переменной.Ввод осуществляется обычным образом,а синтаксические ошибки выдаются мер- цающим знаком вопроса [?].Для стро- кового выражения вводной буфер ус- танавливается для размещения двух таких строк (который при необходи- мости может быть увеличен).Если первый вводимый символ STOP,то программа останавливается с сообще- нием и.
случай в) подобен случаю б) с той лишь разницей,что вводимая информа- ция представляет собой строковый литерал неограниченной длины,и STOP в этом случае не сработает. для останова вы должны нажать кла- вишу "курсор вниз'. |
INVERSE N |
символ управления инверсией выводи- мого символа.Если N«0,символ выво- дится в обычном виде с прорисовкой цвета закрашивания (INK) иа цвете фона (PAPER).Если N«1,to цветовое решение изображения символа меняет- ся на обратное. Смотри приложение В.Выдает сообщение к,если 'N' не 0 или 1. |
LET V«e |
присваивает значение 'е' переменной ^'.Ключевое слово LET не может бЫть опущено.Скалярная переменная не определена, пока не встретится в операторах LET, READ или INPUT, если 'V' индексируемая строковая переменная или сечение строкового массива (подстрока),то присваива- ние осуществляется с усечением справа или дополнением пробелами до фиксированной длины. |
LIST |
то же , что и LIST 0. |
LIST N |
записывает текст программы в верх- нюю часть экрана, начиная с первой строки,меньшей, чем *N',h делает 'N' текущей строкой. |
LLIST |
то же,что и LIST 0 |
LLIST N |
подобно LIST, но вывод осуществля- ется на принтер. |
LOAD F |
загружает программу и переменные. |
|
|
LOAD F DATA () |
загружает числовой массив. |
LOAD F CODE м,N |
загужает старшие 'N' байтов,начиная с адреса 'м'. |
LOAD F CODE м |
загружает байты,начиная с адреса 'м' . |
LOAD F CODE |
загружает байты по тому же адресу, с которого они были разгружены. |
LOAD F SCREENS |
аналогично LOAD F CODE 16384,6912 . очищает файл экрана и загружает его с кассетного магнитофона.Смотри главу 20. |
LPRINT |
подобно PRINT,но использует прин- тер . |
MERGE F |
подобно LOAD F , но не затирает всю старую программу в памяти, а заме- няет только те строки и переменные, у которых совпадают номера или име- на с такими же на ленте. |
MOVE F1,F2 |
без MICRODRIVE не работает |
NEW |
запускает по новой систему програм- мирования бейсик,уничтожая старую программу,переменные и используемую память,включая и байт адреса в сис- стемной переменной RAMBOT , но сох- раняет системные переменные UDQ, RAMT,RASP и PIP. |
NEXT a |
а) находит управляющую переменную 'а' ;
б) прибавляет к ней значение STEP;
в) если STEP >в 0 , а значение 'а' стало больше значения 'предел', или STEP< 0 , а значение 'а' меньше,чем значение 'предел',
то происходит переход к операто- ру цикла. |
OPEN# |
без MICRODRIVE не работает. |
OUT м, N |
выводит байт 'N' в порт 'м'.Опера- ция выполняется на уровне микропро- цессора (загружает в регистровую пару вс адрес 'м',а регистр a-'N' и выполняет команду ассемблера OUT (С)<а ).
0 <» м < « 63535, -255 <* N <* 255, иначе выдается сообщение в. |
OVER N |
управляющий символ надпечатывания |
|
по выведенной строке. Если N»0, то выводимый символ затирает существу- ющий в данной позиции.Если N>1, то новый символ соединяется со ста- рым, образуя закрашивающий цвет«при условии,что старый символ имел ука- зание цвета,отличное от старого,или цвет фона,если оба указывают на один и тот же цвет (либо фона,либо закрашивания,сложение по модулю 2). смотри приложение в. |
PAPER N |
подобен INK, но управляет цветом фона. |
PAUSE N |
останавливает выполнение программы и задерживает изображение на экране на 'N' кадров (50 кадров в сек. - частота кадровой развертки) или до нажатия любой клавиши. 0 <« N <« 65535,иначе выдается со- общение В.При N*0 время задержки не учитываетсясн продолжается до первого нажатия клавиши. |
PLOT с;м,N |
выводит точку закрашивающего цвета (обработанную OVER и INVERSE) с координатами (ABS(m),ABS(N)) сме- щает графическую (PLOTPOSITION) попииию.Если цветной символ 'с' не спспифииирован иначе,то цвет закра- ши ii*iii и м в позиции, где расположена 31 а 1 омка,изменяется на текущий сплошноП закрашивающий цвет,и дру- гие указания (цвет фона,мерцание, яркость) остаются без изменения. 0 <е ABS(m)<■ 65535, 0 <s ABS(N)<« 175,иначе-сообщение в . |
POKE m,N |
записывает значение 'N' в байт па- мяти по адресу 'м'. 0 < * м < = 65535,
-255 < = N <« 255,иначе сообщение в. |
PRINT ... |
где '...' последовательность PR INT-символов,разделенных запяты- ми,точками с запятой или апострофа- ми, которые выводятся в экранный файл для отображения на экране те- левизора . Точка с запятой сама дейс- твия не вызывает,а используется для разграничения символов.Запятая по- рождает управляющий символ 'запя- тая',и апостроф порождает символ ENTER.
в конце оператора PRINT,если он не |
|
заканчивается точкой с запятой, за- пятой или апострофом,автоматически выводится символ ENTER. PRINT-сймволом может быть:
а) пустая строка;
б) числовое выражение.
если значение выражения отрицатель- ное, то выводится знак минус, если х <« 10»»-5 или х >* 10**13, вывод осуществляется в показатель- ной форме.Мантисса представляется 8 цифрами (с нормализацией) и деся- тичной точкой (отсутствует только тогда*когда в мантиссе одна цифра) после первой цифры.Показатель сте- пени записывается после буквы 'е' с последующим знаком и двумя цифра- ми порядка.Иначе х выводится как обычное десятичное число с 8-ю зна- чащими цифрами.
в) строковое выражение.
в строке возможны пробелы до и после символов.
управляющие символы вызывают опре- деляемое ими действие.Не отражаемые на экране символы выводятся как '7'
г) ат м,N
вывод в строку 'м',позицию 'N'
д) тав N
вывод управляющего символа тав с последующими 2-мя байтами 'N' (первый байт-старший).Вызывает тав-останов.
е) цветовой символ в форме PAPER, INK,FLUSH,BRIGHT,INVERSE или OVER оператора. |
RANDOMIZE |
то же,что и RANDOMIZE 0 |
RANDOMIZE N |
устанавливает системную переменную SEED,используемую для вычисления очередного значения функции RND. если N <> 0, то SEED принимает значение 'N'.Если N=0,to SEED принимает значение другой системной переменной FRAMES, подсчитывающей кадры, отображаемые на экране, что обеспечивает вполне случайное чис- ло.Оператор запускает сокращение RAND (см. Клавишу).Выдает сообщение в, если 'N' не лежит интервале от 0 до 6S53S. |
READ VI ,V2, . . |
|
присваивает Переменным одна за другой значения,последовательно представленные в списке DATA. |
|
|
REM . . . |
не выполняется.'...' может быть последовательностью символов (ис- ключая ENTER).Может включать двое- точие (':') для указания отсутствия операторов в строке с REM. |
RESTORE N |
перезаписывает указатель данных в первый оператор DATA в строке мень- шей, чем ^'.Следующий оператор READ начнет считывание отсюда. |
RETURN |
ссылается на оператор GO SUB в сте- ке и передает управление на строку после него.Выдает сообщение 7,если нет указываемого оператора в стеке. Характерная ошибка,когда операторы GO SUB не сбалансированы оператора- ми RETURN . |
RUN |
то же самое, что и RUN 0. |
RUN N |
CLEAR ,а затем GO ТО N . |
SAVE F |
записывает на ленту программы и переменные. |
SAVE F LINE м |
записывает иа ленту программу и пе- ременные таким образом,что при за- грузке программа автоматически вы- полняется со строки 'м'. |
SAVE F DATA () |
запись на ленту числового массива. |
SAVE F DATA ( ) |
запись на ленту строкового массива |
SAVE F CODE M,N |
записывает на ленту 'N' байтов,на- чиная с адреса 'м'. |
SAVE F SCREENS |
аналогично SAVE F CODE 16384,6912 . выдает сообщение Р.если 'F' пустая строка йли имеет длину более 10. смотри главу 20. |
STOP |
останавливает выполнение программы с выдачей сообщения 9. CONTINUE (продолжение) будет осуществлятся со следующего оператора. |
VERIFY |
то же,что и LOAD, за исключением того, что данные загружаются в ОЗУ, но сравниваются с находящимися там. выдаст сообщение в,если обнаружен хотя бы один не совпадающий байт. |
|
Дополнение |
LOAD F DAT*() |
загружает строковый массив. |
RESTORE |
то же самое,что и RESTORE 0 |
|
|