Basic 1969 г.

Приложение 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




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Размышления - В гостях у Кристобаля ХУНТЫ. Методика оценки фантастических произведений и способы придумывания новых фантастических идей.
Cafe'03 ay рецензия - На что способны нынешние музыканты.
Вступление - стой, стрелять буду!
Железо - Chrome - итальянский клон Спектрума!
Список BBS - Список работающий BBS.

В этот день...   19 апреля