Basic для чайников - 5.
music by DNK
(C) Д.Рудовский
________________________________
Этой статьей я открываю новый
большой раздел в этом курсе. в
этом разделе речь пойдет о прог-
раммах называемых расширениями
языка Basic. Но на деле это
практически самостоятельные язы-
ки программирования. Каждое рас-
ширение (в дальнейшем язык.)
имеет свои особенности, которые
специализируют его в определен-
ной сфере применения. При описа-
нии языка я буду указывать наи-
более удобное приложение языка.
Внимание!!! Все языки не работа-
ют в 128 режиме, перед загрузкой
не забудьте перейти в 48 режим.
Ввиду большого объема информации
сегодняшнюю статью я посвящю Be-
ta-Basic'у.
BETA-BASIC.
Внимание!!! Во время своей рабо-
ты ВВ использует альтернативный
режим прерываний, из-за чего не-
возможен прямой выход в TR-DOS.
Перед работой прочитайте раздел
РАБОТА С TR-DOS.
Введение.
Beta-Basic (в дальнейшем ВВ)
является наверно самым мощным
среди расширений. Он предлагает
широчайшие возможности в редак-
тировании и программировании на
бейсике. Он является практически
полным аналогом GW-BASIC на
IBM-совместимых машинах. Учиты-
вая, что программа написанная на
бейсике не должна занимать
больше 20К (иначе либо переходи-
те на IBM, или на ассемблер),
поэтому я буду описывать ВВ 3.0,
который сам занимает 20К.
Итак, сначала некоторые пояс-
нения по поводу набора программы
в ВВ: В зависимости от установ-
ленного режима, который устанав-
ливается командой KEYWORDS опе-
раторы вводятся либо как в обыч-
ном бейсике (токенами), где опе-
раторы ВВ вводятся из режима
курсора G, либо вводятся по сим-
волам, как в Basic128. Кроме то-
го есть возможность варьировать
вывод программы на экран. Под-
робнее об этом в описании опера-
тора KEYWORDS.
Изменена процедура оператора
FOR - NEXT, в результате чего,
она работает существенно быстрее
с целыми числами до 65535 и не
тормозит при больших номерах
строк. Дополнен также оператор
PRINT, о чем вы можете прочитать
в разделе ВВОД-ВЫВОД.
Начало работы.
После того как вы загрузили ВВ
загрузчик самоликвидируется, из
него остается только нулевая
строка. Пытаться удалить ее не
стоит, в ней хранится информация
необходимая для работы ВВ, поэ-
тому же, перенося свою программу
в среду ВВ загружать ее надо не
по LOAD, а по MERGE. Так как
программа записанная из среды ВВ
уже имеет в себе нулевую строку,
то нет необходимости использо-
вать MERGE.
Редактор.
Теперь пора подробно рассмот-
реть изменения и дополнения к
встроенному редактору бей-
сик-программ.
# Команда NEW стирает программу,
но оставляет нулевую строку, по-
этому, если вам надо сбросить
ВВ, либо нажмите RESET, либо
дайте команду RANDOMIZE USR 0.
Изменилось действие команды
LIST, появились новые команды:
EDIT, RENUM и KEYWORDS.
Ну, а теперь все по порядку:
LIST [n,TO m] - Вывод текста
бейсик-программы (далее - лис-
тинг) со строки n до строки m
включительно. Пример:
LIST 100 - листинг с 100 строки
до конца;
LIST 100 TO ---""---""---""--- ;
LIST TO 100 - листинг до 100'й
строки;
LIST 10 TO 100 - вывод строк с
10 по 100 включительно.
LIST FORMAT n - Установка форма-
та вывода листинга. n - номер
режима.
0 - Стандартный вывод листинга.
1 - Строки выводятся по одному
оператору в экранной строке и
отступом в операторах FOR, GO
SUB, DEF FN и DEF PROC на 1 сим-
вол. При этом режиме во время
ввода при нажатии ":" следует
автоматический сдвиг и символ
":" не печатается.
2 - Аналогичен формату 1, но
отступ берется 2 символа.
3 - Стандартный вывод листинга,
но номера строк не выводятся.
4 - Аналогичен формату 1, но без
вывода номеров строк.
5 - Аналогичен формату 2,
----""----""----""----""----
LIST DATA | Вывод переменных
LIST VAL | программы и их
LIST VAL$ | значений в алфа-
витном порядке. DATA - всех пе-
ременных; VAL - числовых пере-
менных, массивов и переменных
цикла; VAL$ - вывод строковых
переменных и массивов. Для пере-
менных цикла дается дополни-
тельно STEP n - шаг изменения и
LN n - номер строки из которой
происходит возврат в голову цик-
ла. LIST DEF KEY - вывод списка
клавиш определенных пользовате-
лем.
LIST PROC name - Вывод листинга
процедуры с именем name.
LIST REF - Выдача номеров поме-
ченных строк.
Пример:
10 FOR N=0 TO 10: PRINT N
20 NEXT N
Команда LIST REF N даст:
10
10
20
EDIT n - Вызов на редактирование
строки n. Аналогично LIST n и
<CS+1>.
RENUM[#] [n TO m LINE k STEP l]
- Эта команда выполняет мно-
жество фукций:
переименовывает, копирует, пере-
мещает. При этом изменяются все
ссылки на перенумеровываемые
строки. Назначение параметров:
# - указывает на то, что блок
должен быть скопирован, а не пе-
ремещен;
n - номер строки с которой начи-
нает работать команда, по умол-
чанию - 1;
m - номер строки на которой за-
канчивает работать команда, по
умолчанию - 9999;
k - новый номер который будет
присвоен строке n, по умолчанию
- 10;
l - шаг, с которым будет идти
перенумеровка строк, по умолча-
нию - 10.
Примеры:
'&RENUM - Перенумеровывает всю
программу присваивая первой
строке номер 10 с шагом 10;
RENUM 100 - перенумеровывает 100
строку присваивая ей номер 10;
RENUM 100 TO - перенумеровывает
программу начиная с 100 строки,
которой присваивается номер 10 с
шагом 10;
RENUM TO 100 - перенумеровывает-
ся программа до 100 строки, при
этом первой строке присваивается
номер 10 и перенумеровка идет с
шагом 10;
RENUM LINE 1000 - перенумеровы-
вается вся программа с шагом 10,
при этом первой строке присваи-
вается номер 1000;
RENUM STEP 1 - вся программа пе-
ренумеровывается с шагом 1, при
этом перовй строке присваивается
номер 10.
NB. Команда использует в ка-
честве буфера экран, поэтому во
время ее работы на экране появ-
ляется грязь. В случае если ко-
манде попадается инструкция типа
GO TO ln*100 команда не исправ-
ляет ее, а выдает сообщение: Fa-
iled at n:m, где n - номер стро-
ки, а m - номер оператора в
строке.
KEYWORDS n - Установка режима
ввода программы с клавиатуры, n
- режим.
0 - В режиме курсора G вводится
UDG. 1 - В режиме курсора G вво-
дятся команды ВВ. Режимы 0 и 1
не влияют на установку остальных
режимов.
2 - Все ключевые слова вводятся
одним нажатием клавиши, причем
команды ВВ вводятся через режим
G.
3 - Аналогичен режиму 2, но поз-
воляет вводить команды и по бук-
вам NB. Для перехода от курсора
К, к курсору L нажать пробел.
4 - Все команды вводятся по сим-
волам.
NB. Команда не токенизируется в
случае, если перед ней стоит
буква или "_".
Работа с TR-DOS.
Встроенные в ВВ часы использу-
ют 2 режим прерываний, что при-
водит к конфликту ВВ с TR-DOS
при обращении к ней, поэтому пе-
ред тем как выйти в TR-DOS вве-
дите команду RANDOMIZE USR 63237
для всстановления 1 режима пре-
рываний, а по окончании работы
установите 2 второй режим преры-
ваний командой RANDOMIZE USR
61369.
Так как работать с диском
обычно приходится довольно час-
то, то рекомендую вставить в
программу следующий фрагмент:
9998 RANDOMIZE USR 63237: RANDO-
MIZE USR 15616
9999 RANDOMIZE USR 61369
Для работы с диском дайте ко-
манду GO TO 9998. При возврате в
бейсик все будет восстановлено.
Если же вы не планируете рабо-
тать с часами ВВ, то рекомендую
сразу отключить их RANDOMIZE USR
63237 и вы будете избавлены от
вышеописанных неприятностей.
Вывод на экран.
В ВВ существенно расширены
возможности стандартного бейсика
по выводу на экран. Кроме расши-
рения возможностей команд PRINT
и PLOT введена команда WINDOW, а
также целый спектр команд рабо-
тающих с графическим экраном.
Рссмотрим все по порядку:
PRINT: USING "формат" - так на-
зываемый форматированный вывод,
где "формат" - символьная стро-
ка, в соответствии с которой
идет вывод чисел на экран.
CSIZE n,m - установка расмера
символа ( в пикселях) по гори-
зонтали и вертикали. Примеры:
PRINT USING "####.##%";989.275 -
Результатом будет: 989.28%
PRINT USING "0000.000";989.2751
- Результат: 0989.275
PRINT CSIZE 16,16;"HELLO" - вы-
ведет на экран слово "HELLO"
размером 2*2 знакоместа.
Команду CSIZE можно использовать
и отдельно от PRINT и тогда она
задаст общий режим вывода на эк-
ран.
PLOT x,y;a$ - Вывод строки a$ на
экран с точностью до пикселя. x
и y расчитываются как обычной
команде PLOT.
'&WINDOW n,x,y,len,hgt - Определе-
ние окна. n - номер окна
1-127;x,y - координаты левого
верхнего угла окна как в PLOT;
len,hgt - длина и высота окна в
пикселях. После определения окна
его можно сделать текущим, дав
команду:
WINDOW n - где n - номер окна
(окно должно быть определено пе-
ред этим.). Основной экран счи-
тается 0 окном.
Каждому окну соответствуют свои
параметры, такие как: позиция
печати, размер символов, INVER-
SE, BRIGHT, INK, PAPER. Для
очистки окна нужно дать команду:
CLS n - где n - номер окна. Для
уничтожения окна необходимо дать
команду: ERASE WINDOW n.
GET a$,x,y,len,hgt,type - Данная
функция сохраняет экранную об-
ласть с координатами x,y и раз-
мерами len,hgt в переменной
a$.(все задается в пикселях.)
Параметр type указывает, как
сохранять изображение:
0 - без атрибутов;
1 - с атрибутами.
OVER n - эта команда бейсика до-
полнена режимом 2: наложение
изображения на экран без инвер-
сии.
Продолжение следует.