ПРИЛОЖЕНИЯ
1. Алфавитный перечень операторов Beta Basic
Таблица 20.
Кмочмю»
|
fllHEtlW
|
|
Стр>
|
ALTER
[CJA
|
Поиск и замена по образцу имен переменных, числовых констант, строк символов в тексте программы
|
ALTER Nm ТО Num ALTER 1.1 ТО 1.2 ALTER "Bitte" TO "Please"
|
241
|
Смена атрибутов экрана на заданные
|
ALTER INK 3 TO PAPER 7
|
249
|
AUTO
[G]6
|
Задает режим автоматической генерации номеров строк программы
|
AUTO 100,10 AUTO 0
|
239
|
CLEAR
(KJX
|
Перемещает RAMTOP на указанное количество байтов
|
CLEAR 15
|
285
|
CLOCK
[GJC
|
Устанавливает текущее время; задает время
лодачи звукового сигнала и/или перехода к подпрограмме; задает
подпрограмму обработки прерывания, устанавливает режимы работы часов
|
CLOCK "15:30:00" CLOCK "A15:35" CLOCK 1200 CLOCK 7
|
258
|
CLS
[K]V
|
Стирает содержимое окна с заданным номером
|
CLS 3
|
251
|
COPY
[KJZ
|
Копирует содержимое одного массива или его части в другой массив
|
COPY A(2 TO 5) TO B(7) COPY A$(TO 6) TO B$(9)
|
274
|
CSIZE
[G] SS/8
|
Задает размер символов в текущем окне, переключает драйверы вывода на экран
|
CSIZE 5,9 CSIZE 0
|
245
|
DEFAULT
[GJ SS/2
|
Присваивает значение переменной, если она ранее не была определена
|
DEFAULT A=1, B=2, C=3
|
244
|
Задает по умолчанию устройство ввода-вывода
|
DEFAULTS
|
285
|
DEF KEY
[G]SS/1
|
Приписывает указанной клавише заданную последовательность операторов
|
DEF KEY "h";"HELLO:" DEF KEY "8": CSIZE 4,8
|
239
|
Нжчна*
£1Ю«0<
*ш&ар
|
|
Пример
|
Стр.
|
DEF PROC
[G1 1
|
Заголовок процедуры
|
DEF PROC Test А,В,REF С DEF PROC Sum DATA
|
261
|
DELETE
[G]7
|
Удаляет фрагмент программы
|
DELETE 1200 TO 2500 DELETE 0 TO 0
|
243
|
Удаляет массив или часть массива; удаляет часть символьной переменной
|
DELETE A(15 TO 23) DELETE D$(13)
|
275
|
DO
[GjD
|
Заголовок цикла типа DO...LOOP
|
DO:
PLOT RND*255,RND*175: LOOP
|
265
|
DPOKE
[GJP
|
Записывает по указанному адресу двухбайтовое число
|
DPOKE 42484, 5088
|
268
|
DRAW TO
[K] W + SS/F
|
Проводит линию или дугу из текущей точки в точку с указанными абсолютными координатами
|
DRAW TO 70,100 DRAW TO 120,120,3/2*PI
|
251
|
EDIT
Enter* 0
|
Вызывает на редактирование строку программы
|
EDIT 30
|
240
|
EDIT
[G] SS/5
|
Вызывает на редактирование переменную
|
EDIT A$ EDIT ;Q
|
278
|
ELSE
[GJE
|
Начинает блок операторов в конструкции типа IF...THEN...ELSE, выполняющийся в случае, если условие ложно
|
IF A=1 THEN:
PRINT "By": RETURN: ELSE:
PRINT "We'll rock you": GO TO 1282
|
254
|
END PROC
{G]3
|
Оператор конца процедуры. Осуществляет возврат управления основной программе. Аналогичен RETURN
|
DEF PROC Wiper: CLS 1:
tF=1 THEN RETURN: CLS 2: END PROC
|
261
|
EXIT IF
1С] I
|
Осуществляет выход по условию из цикла типа DO...LOOP
|
EXIT IF l=28
|
266
|
FILL
[GJF
|
Заливает участок экрана, ограниченный замкнутым контуром, цветом PAPER или INK
|
FILL INK 3; 70,70
|
252
|
GET
[G]G
|
Присваивает символьной переменной символ нажатой клавиши или числовой переменной — порядковый номер клавиши.
|
GET A$ GET A
|
278
|
Итон****
СЛ6АО,
мабор
|
Действ**
|
Пример
|
|
GET
[G]G
|
Считывает с экрана в символьную переменную спрайт с указанными размерами
|
GET А$,42,38,2,3
|
279
|
GO TO ON
[K] G + [G] О
|
Осуществляет переход на строку из указанного списка в соответствии со значением заданной переменной (выражением)
|
GO ТО ON J; 50,70,90
|
254
|
GO SUB ON
(K| H + [G] О
|
Осуществляет вызов подпрограммы,
начинающейся со строки из указанного списка, в соответствии со
значением заданной переменной (выражением)
|
GO SUB ON J; 70,80,90 <
|
255
|
JOIN
[Gj SS/6
|
Сцепляет строку программы с указанным
номером или текущую строку со следующей за ней строкой, записывая их
через двоеточие под одним номером
|
JOIN 50
|
241
|
Переносит содержимое одного массива или его части в другой массив
|
JOIN A(3 TO 7) TO B(10) JOIN C() TO D() JOIN E$() TO F$(5)
|
274
|
KEYIN
[G] SS/4
|
Помещает заданную строку символов в текст программы
|
KEYIN "1200 LET A=8763"
|
281
|
KEYWORDS
[G]8
|
Переключает режим ключевых слов Beta
Basic в режим Graphics и обратно, устанавливает способ ввода ключевых
слов в строку редактирования
|
KEYWORDS 1 KEYWORDS 4
|
236
|
LIST
(К] К
|
Выводит на экран (или в символьную переменную Z$ по LIST #14) листинг программы в пределах указанных строк
|
LIST 10 TO 50 LIST TO 70 LIST #14; 50 TO LIST
|
243
|
Распечатывает текст указанной процедуры
|
LIST PROC PortRead
|
261
|
Распечатывает номера строкгсодержащих указанный ключ
|
LIST REF "Org" LIST REF Num
|
243
|
К *Q4*ftO* слово, набор
|
Двйсш»
|
Пример
|
Ctp.
|
LIST
IK] к
|
Распечатывает содержимое переменных и размерности массивов программы
|
LIST DATA LIST VAL LIST VAL$
|
243
|
|
Распечатывает макроопределения клавиш
|
LIST DEF KEY
|
243
|
LOCAL
[G] SS/3
|
Объявляет переменные процедуры локальными
|
LOCAL A,B,C
|
262
|
LOOP
[G]L
|
Оператор окончания цикла типа СЮ...LOOP
|
см. оператор DO
|
265
|
ON
[G]0
|
Исполняет один из операторов, стоящих после него в строке, в соответствии со значением указанной переменной (выражения)
|
ON J:
PRINT "Line 1": PRINT "Line 2": PRINT "Line 3"
|
255
|
ON ERROR [G] N
|
Задает номер строки, с которой начинается подпрограмма обработки ошибок, или описывает эту подпрограмму
|
ON ERROR 3500 ON ERROR: BEEP 1,1: RETURN
|
255
|
PLOT
[K1Q
|
Выводит строку символов (спрайт) в заданную точку экрана
|
PLOT 100,70; "Demo"
|
246
|
POKE
[K]o
|
Записывает в память компьютера строку кодов символов, начиная с заданного адреса
|
POKE 40000, "String"
|
268
|
POP
(G]Q
|
Снимает со стека GO SUB и присваивает
переменной (если она указана) значение адреса возврата из процедуры или
адрес заголовка цикла типа DO... LOOP
|
POP A
|
267
|
PROC
|G]2
|
Вызывает процедуру с заданным именем и передает ей значения фактических параметров
|
PROC Sub1 3, , A+2, D(5)
|
261
|
READ
[E]A
|
Считывает значения фактических параметров, передаваемых в процедуру списком произвольной длины
|
DEF PROC Test DATA: DO UNTIL ITEM()=0: READ LINE a$
|
263
|
10 Зак. № 192
слово, набор
|
ДвЙЯГвй»
|
Пример
|
Ctp.
|
REF
(G] SS/7
|
Осуществляет поиск по образцу в тексте программы и вызывает на редактирование строки, удовлетворяющие условию поиска
|
REF Num REF "Subl" REF 3 REF (A$)
|
240
|
|
задает передачу параметров в процедуру по ссылке
|
DEF PROC Test REF a
|
264
|
RENUM
[GJ4
|
Перенумеровывает строки программы из указанного диапазона, начиная с заданного номера, и с заданным шагом
|
RENUM 70 LINE 90 STEP 5
|
242
|
ROLL
[G)R
|
Осуществляет циклический скроллинг окна экрана на заданное количество пикселей в указанном направлении
|
ROLL 5;0,175;50,88
|
252
|
SAVE
[K]S
|
Производит запись на ленту фрагмента программы или области переменных
|
SAVE 10 TO 70; "Filename"
SAVE DATA "Filename"
|
285
|
SCROLL
[CIS
|
Осуществляет скроллинг окна экрана на заданное количество пикселей в указанном направлении
|
SCROLL 5;0,175;50{88
|
252
|
SORT
[G]M
|
Сортирует числовой или символьный массив по убыванию или возрастанию значений его элементов
|
SORT A()
SORT A$( TO 25)(2 TO ) SORT INVERSE A()
|
273
|
TRACE
[GJT
|
Задает номер строки подпрограммы
обработки прерывания, обращение к которой будет осуществляться после
каждого выполненного оператора программы или описывает эту подпрограмму
|
TRACE 7000 TRACE: LIST VAL: RETURN
|
257
|
UNTIL
[GJK
|
Задает критерий окончания цикла типа DO...LOOP
|
DO UNTIL ABS X<Ep*
|
266
|
USING
[GJU
|
В операторе PRINT (LPRINT) задает шаблон вывода чисел
|
PRINT USING "#.##"; A
|
248
|
VERIFY
[E]SS/R
|
Осуществляет проверку записанного на ленту фрагмента программы из указанного диапазона строк
|
VERIFY 10 TO 70; "Name"
|
285
|
слово, набор
|
Действие
|
Пример
|
Стр.
|
WHILE
[GJ J
|
Задает критерий продолжения цикла типа DO...LOOP
|
LOOP WHILE Y<>3
|
266
|
WINDOW
[G J 5
|
Задает координаты и размеры текстового окна с указанным номером
|
WINDOW 5; 0,175,9,50
|
249
|
|
Объявляет текущим окно с заданным номером
|
WINDOW 5
|
|
2. Алфавитный перечень функций Beta Basic*
Таблица 21.
Функция, набор
|
Возвращаемо* значение
|
Пример
|
Стр<
|
AND
А
|
Результат поразрядного "И" двух чисел
|
AND(A,B)
|
284
|
BIN$
в$
|
Двоичный эквивалент десятичного числа
|
BIN$(12)
|
282
|
CHAR$
CS
|
Представление целого числа из диапазона 0...65535 двумя байтами
|
CHAR$(40000)
|
277
|
COSE
с
|
Косинус числа. Работает быстрее стандартной функции COS
|
COSE(PI)
|
283
|
DEC
D
|
Десятичный эквивалент шестнадцатеричного числа
|
DEC("9C40")
|
283
|
DPEEK
P
|
Десятичное целое число, представленное в памяти по указанному адресу двумя байтами
|
DPEEK 40 000
|
268
|
EOF
E
|
Работает только с Interface 1
|
|
—
|
FILLED
F
|
Количество
инвертированных пикселей последней операцией FILL
|
PRINT FILLED<)
|
252
|
HEX$ H$
|
Шестнадцатеричный эквивалент десятичного числа
|
HEX$(40000)
|
283
|
* Набор функций Beta Basic осуществляется с помощью ключевого слова FN и буквы, указанной в таблице ниже названия функции.
Функция*
|
возвращаем oe знамение
|
Пример
|
Стр.
|
INARRAY
и
|
Номер строки двумерного символьного массива, в которой обнаружено очередное вхождение строки-образца
|
INARRAY(A$(7)(3 ТО 9),В$)
|
273
|
INSTRING
I
|
Позиция в базовой строке, начиная с которой обнаружено очередное вхождение строки-образца
|
INSTRING (Start,A$,"TEST")
|
269
|
ITEM
T
|
Тип очередного данного в списке DATA, который предстоит считывать оператору READ
|
ITEMQ
|
263
|
MEM
M
|
Количество свободной памяти для бейсик-программ
|
MEM()
|
243
|
MEMORY
M$
|
Содержимое участка памяти, представленное символьной строкой
|
MEMORY$()(0 TO 23295)
|
268
|
MOD
V
|
Остаток от деления двух чисел
|
MOD(A,B)
|
284
|
LENGTH
L
|
Размер массива по заданному измерению
|
LENGTH(1 ,"A(1)")
|
276
|
NUMBER
N
|
Целое число из диапазона 0...65535 — эквивалент двухбайтовой строки
|
NUMBER(CHR$ 55+CHR$ 28)
|
277
|
OR
О
|
Результат поразрядного "ИЛИ" двух чисел
|
OR (A,B)
|
284
|
RNDM
R
|
Случайное число в диапазоне от 0 до числа, указанного в аргументе
|
RNDM(175)
|
283
|
SCRN$
K$
|
Символ (в том числе из набора UDG), стоящий в указанных строке и столбце экрана
|
SCRN$(10,5)
|
249
|
SHIFTS
Z$
|
Строка символов, преобразованная по правилам в соответствии со значением первого аргумента
|
SHIFT$(3, "QWERTYqwerty")
|
270
|
SINE
s
|
Синус числа. Работает быстрее стандартной функции SIN
|
SINE(PI)
|
283
|
STRINGS S$
|
Приведенная строка символов, повторенная заданное количество раз
|
STRING$(N,"#")
|
269
|
TIMES
T$
|
Текущее время
|
TIME$()
|
259
|
Функция» И*б0р
|
возвращаемое зиачете
|
Пример
|
|
USING$ US
|
Символьное представление числа в соответствии с заданным форматом
|
USING$("##.###",D)
|
248
|
XOR
X
|
Результат поразрядного "исключающего ИЛИ" двух чисел
|
XOR(L,M)
|
284
|
3. Перечень сообщений об ошибках Beta Basic_
К стандартному перечню сообщений об ошибках
(см. стр. 98) Beta Basic добавляет ряд собственных с кодами S...X.
Меняются также ситуации, в которых появляются стандартные сообщения с
кодами G и J:
G No room for line__нет места для строки
При перенумерации строк оператором RENUM сгенерированы номера уже существующих строк, не входящих в указанный интервал.
J Invalid I/O device_неверное устройство ввода-вывода
Обращение к окну с несуществующим номером при помощи операторов WINDOW или CLS.
S Missing LOOP_отсутствует LOOP
Не может быть найдено окончание цикла при
использовании EXIT IF или при встрече DO, условие которого не
предполагает ни одного прохода цикла.
Т LOOP without DO_LOOP без DO
Применен оператор LOOP без DO либо осуществлен вход в тело цикла, минуя его заголовок.
U No such line_нет такой строки
В команде DELETE указан номер несуществующей строки.
V No POP data_нет данных для POP
Сделана попытка снять оператором POP данные со стека GO SUB, когда тот был пуст.
W Missing DEF PROC_отсутствует DEF PROC
He найдено описание процедуры с указанным
именем. Применен оператор LOCAL или END PROC без DEF PROC, либо
осуществлен вход в тело процедуры, минуя его заголовок.
X No END PROC_нет END PROC
При попытке «перешагнуть» встреченное в тексте программы описание процедуры не может быть найдено ее окончание.
Значение, соответствующее коду ошибки,
содержится в переменной ERROR, к которой имеется доступ из
интерпретатора. Для сообщений с кодами 1 ...8 значение этой переменной
равно самому коду, для сообщений с кодами от А до Р —
соответственно, 10...27. Для ошибок интерпретатора Beta Basic (коды
S...X) значение ERROR равно 28...33. Для сообщений с кодами 0 и 9
переменная ERROR не определена.
4. Распределение памяти при работе с Beta Basic
P_RAMT (23732)-
Символы, определяемые пользователем
UDG (23675)-
Интерпретатор Beta Basic
- 46960
Область системных переменных для WINDOW, описание макрокоманд RAMTOP (23730)-
EJJNE (23641)--
Переменные Бейсика
VARS (23627)--
Бейсик-программа PROG (23635)-
5. Использование Beta Basic с системой TR-DOS
Для
того чтобы организовать корректную работу Beta Basic с TR-DOS,
необходимо перед обращением к диску включать режим прерываний IM1, а
затем возвращаться в IM2. Это можно делать, используя готовые процедуры
в кодах, которые размещены в теле интерпретатора Beta Basic. Загрузка
программы с диска, например, будет выглядеть так:
100 RANDOMIZE USR 63243: REM Включаем IM1 110 RANDOMIZE USR 15619: REM: LOAD "filename" 120 RANDOMIZE USR 61369: REM Включаем M2
Впрочем, не обязательно каждый раз после
обращения к диску возвращаться в режим IM2. Если в программе не
используется оператор CLOCK и нет необходимости использовать клавишу
Break для возврата в Beta Basic из процедур в кодах, то интерпретатор
не замечает «подлрга» и вполне корректно работает в IM1.
Поэтому, как правило, достаточно в программе перед первым обращением к
диску сменить режим прерываний на IM1, а в завершение ее работы
восстановить режим IM2.