ПРИЛОЖЕНИЯ
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
289
|
слово, набор |
ДвЙЯГвй» |
Пример |
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 без 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, либо осуществлен вход в тело процедуры, минуя его заголовок.
При попытке «перешагнуть» встреченное в тексте программы описание процедуры не может быть найдено ее окончание.
Значение, соответствующее коду ошибки, содержится в переменной 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.