BASIC$ - язык программирования БАСИК, Орион-128Интерпретатор языка БАЙСИК, написание
программ на
Ориона-128
|
|
Здесь надо сделать следующие пояснения: за клавишами букв русского и латинского алфавитов, а также клавишами ? и ЗБ закреплено по одному ключевому слову, независимо от того, в каком регистре - верхнем или нижнем - находится клавиатура. В эту группу слов попали все наиболее часто встречающиеся команды и операторы интерпретатора, причем там, где это возможно, сохранена фонетическая привязка к слову. Остальные клавиши могут выводить на экран по два различных слова, в зависимости от состояния регистра. К этой группе относятся в основном названия функций, большая часть из которых является трехбуквенными словами. Такое "устройство" клавиатуры не предполагает обязательного изучения таблицы перед тем, как вы начнете работать на Бейсике, или необходимости иметь таблицу постоянно перед глазами. Пользуясь вначале только несколькими клавишами для ввода запомнившихся слов и вводя остальные слова непосредственно по буквам, вы можете постепенно осваивать новые клавиши.
ОПИСАНИЕ КОМАНД, ОПЕРАТОРОВ И ФУНКЦИЙ ЯЗЫКА
В приведенном ниже перечне команд, операторов и функций языка мы придерживались следующего соглашения: все, что набрано без угловых или квадратных скобок, является обязательными атрибутами, в том числе круглые скобки и запятые. Угловыми скобками отмечены параметры, которые могут быть представлены в числовой форме, в форме выражений, требующих вычисления, либо строковые константы и переменные. В квадратные скобки заключены параметры, которые являются необязательными и могут отсутствовать.
КОМАНДЫ
CONT - продолжение выполнения программы после останова, начиная с
очередного оператора.
EDIT [НОМЕР СТРОКИ] - вывод на экран заданной программной строки для
редактирования. Если номер строки не задан, выводится первая строка
программы.
FILES - вывод на экран каталога квазидиска "В".LIST [НОМЕР СТРОКИ]-
вывод на экран строк программы из памяти, начиная с заданного номера,
либо всей программы, если номер строки не указан.
LLIST НОМЕР СТРОКИ - вывод строк программы из памяти на принтер, начиная
с заданного номера, либо всей программы, если не указан номер строки.
Выполняется только при наличии в системе файла с именем "LPT",
содержащего драйвер печатающего устройства.
LOAD "(ИМЯ)" - загрузка Бейсик - программы из файла с заданным именем,
если имя имеет стандартное расширение ".BS" (с одновременным стиранием
программных строк, переменных и массивов, находившихся в памяти до этого
момента), либо - загрузка в ОЗУ программы в машинных кодах (блока
данных) из файла с заданным именем и выполнение ее, если в имени имеется
признак командного файла - "$".
NEW - удаление из памяти всех программных строк, переменных и массивов.
RUN [НОМЕР СТРОКИ] - выполнение находящейся памяти программы; если задан
номер, то программа выполняется, начиная с указанной строки.
RUN "(ИМЯ)" -загрузка программы из файла с заданным именем (с
одновременным стиранием программных строк, переменных и массивов,
находившихся в памяти до этого момента) и запуск программы со строки,
имеющей наименьший номер. (Только для файлов, имя которых имеет
стандартное расширение ".BS").
SAVE "(ИМЯ)" -создание в диске "В" файла с именем "ИМЯ.BS" и запись в
него Бейсик - программы из оперативной памяти.
SYSTEM - передача управления операционной системе.
ОПЕРАТОРЫ
BOX ([(КООРДИНАТА X)], [(КООРДИНАТА Y)], (ШИРИНА), (ВЫСОТА), [(ЦВЕТ
ФОНА)], [(ЦВЕТ ПЕРЕДНЕГО ПЛАНА)]) - окраска прямоугольника шириной
(ШИРИНА), точек и высотой, заданной значением (ВЫСОТА), расположенного
вправо и вверх - от точки, где было закончено последнее графическое
построение (если отсутствуют необязательные параметры в первых
квадратных скобках), либо от точки, координаты которой заданы значениями
( КООРДИНАТА X) и (КООРДИНАТА Y). Окрашивание производится фоном и
цветом переднего плана, заданного последним оператором COLOR, либо
значениями, заданными во вторых квадратных скобках.
CLS - очистка экрана дисплея.
COLOR (ЦВЕТ ФОНА),(ЦВЕТ ПЕРЕДНЕГО(ПЛАНА) - установка цвета фона и цвета
переднего плана. Обратить внимание на оператор SCREEN$.
CLEAR [ЧИСЛОВОЕ ЗНАЧЕНИЕ] - присваивание нулевых значений всем строковым
и числовым переменным и элементам массивов. Если задан необязательный
параметр, то происходит резервирование дополнительного буфера для
переменных, определяемый значением параметра.
CUR (СТРОКА), (СТОЛБЕЦ) - установить курсор в позицию, заданную
параметрами (СТРОКА), (СТОЛБЕЦ).
DATA (СПИСОК ПЕРЕМЕННЫХ) - добавление строковых и числовых констант к
программному списку значений для операторов READ.
DEF FМ(ИМЯ ФУНКЦИИ) (ФИКТИВНАЯ ПЕРЕМЕННАЯ) (ВЫРАЖЕНИЕ)- присвоение имени
строковой или числовой функции и задание ее определения в виде
выражения.
DIM (ИМЯ МАССИВА) [ИНДЕКС[.ИНДЕКС]] [,[ИМЯ(ИНДЕКС),...] - распределение
памяти для массивов. Задаваемое в качестве параметра значение ИНДЕКС
определяет максимальное значение индекса (размерность) массива. В одном
операторе DIM может определяться несколько массивов.
DPL [((КООРДИНАТА ХО), (КООРДИНАТА YO))] (ПРИРАЩЕНИЕ U), (ПРИРАЩЕНИЕ V)
[, (ЦВЕТ] - построение линии из точки, в которой было закончено
последнее графическое построение либо из точки с графическими
координатами (КООРДИНАТА ХО), (КООРДИНАТА YO) до точки с координатами,
имеющими значение (XO+U), (YO+V) цветом, заданным необязательным
параметром (ЦВЕТ) либо цветом последнего оператора COLOR.
FOR (ПЕРЕМЕННАЯ) (НАЧАЛЬНОЕ ЗНАЧЕНИЕ) ТО (КОНЕЧНОЕ ЗНАЧЕНИЕ) [STEP
(ПРИРАЩЕНИЕ)] - начало цикла FOR/NEXT.
GOSUB (НОМЕР СТРОКИ) - передача управления в подпрограмму с заданным
номером строки (см. RETURN).
GOTO (НОМЕР СТРОКИ) - передача управления строке с заданным номером.
IF (УСЛОВИЕ) THEN (ОПЕРАТОР) [:ОПЕРАТОР :...] - выполнение оператора
(операторов), следующего за THEN, если условие выполняется, в противном
случае переход на следующую строку.
IF (УСЛОВИЕ) THEN (НОМЕР СТРОКИ) - условная передача управления на
строку с заданным номером.
INPUT ["ЗАПРОС";] (ПЕРЕМЕННАЯ) СПИСОК ПЕРЕМЕННЫХ)] - присваивание
вводимых с клавиатуры значений переменной (или нескольким переменным).
Если после текстового сообщения ("ЗАПРОС") введено ";", на экран
выводится знак вопроса, если вместо ";" введено "," - знак вопроса не
выводится.
KILL (ИMЯ.BS) - удаление с квазидиска "В" файла с заданным именем.
LINE [((КООРДИНАТА Х0), (КООРДИНАТА Y0), (КООРДИНАТА X), (КООРДИНАТА
Y)[,(ЦВЕТ)] - построение линии от точки, где было закончено - последнее
графическое построение (или от точки с графическими координатами
(КООРДИНАТА ХО), (КООРДИНАТА YO)), до точки с координатами (КООРДИНАТА
X), (КООРДИНАТА Y) заданным в качестве необязательного параметра (ЦВЕТ)
цветом либо цветом последнего оператора COLOR.
LPRINT [СПИСОК ЗНАЧЕНИЙ] [;] или [,] - вывод на печать перечисленных в
списке значений (см. PRINT). Оператор выполняется только при наличии в
системе файла с именем "LPT", содержащего - драйвер печатающего
устройства.
NEXT [ПЕРЕМЕННАЯ] - окончание цикла FOR/NEXT.
ON (ВЫРАЖЕНИЕ) GOTO (НОМ.СТРОКИ) [,(НОМ.СТРОКИ),...] - переход к строке
с одним из указанных номеров в зависимости от конкретного значения
заданного выражения.
ON (ВЫРАЖЕНИЕ) GOSUB (НОМ.СТРОКИ) [,(НОМ.СТРОКИ),...] - передача
управления в подпрограмму строке с одним из указанных номеров в
зависимости от конкретного значения сданного выражения.
PAINT (КООРДИНАТА X), (КООРДИНАТА Y) (ЦВЕТ) - закраска ограниченной
фигуры произвольных очертаний заданным цветом до границы того же цвета,
начиная из точки с графическими координатами X, Y (только для режима
SCREEN$).
POKE (АДРЕС),(ЗНАЧЕНИЕ) -запись заданного значения в ячейку с заданным
адресом.
PRINT [СПИСОК ЗНАЧЕНИЙ] [;] или [,] - вывод на экран перечисленных в
списке значений. Если после оператора не стоит ";" или "," формируется
сигнал возврата каретки и перевода строки. Если значения в списке
разделяют ";", то они будут выводиться друг за другом, если ",", то
вывод очередного значения будет производиться в начало следующей зоны
(14 позиций).
PSET (КООРДИНАТА X), (КООРДИНАТА Y) [,(ЦВЕТ)] - вывод на экран дисплея
отдельной точки с графическими координатами X, Y.
READ (ПЕРЕМЕННАЯ) [.(ПЕРЕМЕННАЯ),...] - присваивание переменным с
заданными именами значений из списка, созданного операторами DATA.
REM [КОММЕНТАРИЙ] - задание комментария. Все символы, следующие за
командным словом и стоящие в той же самой программной строке не
исполняются и интерпретируются как комментарий.
RESTORE - восстановление положения указателя списка значений операторов
DATA так, что указатель будет соответствовать первому значению первого
оператора DATA.
RETURN - возврат управления из подпрограммы оператору, стоящему
непосредственно за оператором GOSUB, вызывавшим эту подпрограмму.
SCREEN (РЕЖИМ) - выбор режима работы экрана. Режим 0 - МОНОХРОМ, режим 1
- четырехцветный, режим 2 - 16-цветный.
STOP - прекращение выполнения программы, вывод на экран сообщения "СТОП
в (НОМЕР СТРОКИ)" и переход к режиму немедленной обработки.
ФУНКЦИИ
ABS (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - вычисление абсолютной величины числового
значения.
ASC (СТРОКОВОЕ ЗНАЧЕНИЕ) - определение кода символа заданного строкового
значения.
ATN (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - вычисление арктангенса заданного числового
значения.
CHR$ (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - определение символа, соответствующего
заданному числовому значению.
ЕХР (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - вычисление экспоненты заданного числового
значения.
COS (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - -вычисление косинуса заданного числового
значения.
FN ИМЯ (ЗНАЧЕНИЕ) - вызов функции, предварительно определенной
оператором DEF PN.
FRE (ЗНАЧЕНИЕ) - выдача сообщения об объеме свободной памяти. Параметр
(значение является фиктивным и никак не используется.
INP (ЗНАЧЕНИЕ) - определение кода клавиши, нажатой в настоящий момент.
Параметр ( значение
INT (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - определение наибольшего целого числа, не
превосходящего заданное числовое значение.
LEFT$ (СТРОКОВОЕ ЗНАЧЕНИЕ, ДЛИНА) - вы5еление из строкового значения
подстроки заданной длины, начиная с крайнего левого символа.
LEN (СТРОКОВОЕ ЗНАЧЕНИЕ) - подсчет кол-ва символов в заданном строковом
значении.
LOG (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - вычисление натурального логарифма заданного
числа.
MID$ (СТРОКОВОЕ ЗНАЧЕНИЕ, НАЧАЛЬНЫЙ СИМВОЛ, ДЛИНА) - выделение части
строкового значения, начинающейся с номера начального символа заданной
длины.
PEEK (АДРЕС) - выдача содержимого ячейки памяти с заданным адресом.
POS (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - выдача номера столбца, соответствующего
текущему положению курсора на экране. ЧИСЛОВОЕ ЗНАЧЕНИЕ - фиктивный
параметр.
RIGHT$ (СТРОКОВОЕ ЗНАЧЕНИЕ, ДЛИНА) - выделение из строкового значения
подстроки заданной длины, начиная с крайнего правого символа.
RND (1) - генерация случайного числа, лежащего в интервале [0,1].
Значение функции RND (0) повторяет последнее случайное значение.
SGN (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - выдача знака заданного числового значения,
результат выполнения функции равен +1, если число положительно, -1, если
оно отрицательно, и 0, если число равно 0.
SIN (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - вычисление синуса заданного числового
значения.
SPC (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - пропуск заданного числа позиций в выводимой на
печать строке. Используется только с оператором PRINT.
SQR (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - вычисление квадратного корня заданного
числового значения.
STR$ (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - преобразование заданного числового значения в
строку символов.
TAN (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - вычисление тангенса заданного числового
значения.
TAB (ЧИСЛОВОЕ ЗНАЧЕНИЕ) - горизонтальная табуляция. Используется только
с оператором PRINT.
USR (АДРЕС) - передача управления программе в машинных кодах,
находящейся по заданному адресу. Если программа заканчивается оператором
RET, то значением функции будет значение аккумулятора процессора после
выполнения программы.
VAL (СТРОКОВОЕ ЗНАЧЕНИЕ) - преобразование строкового значения в число.
Описание операторов.
Рассмотрим работу некоторых операторов более подробно, в основном тех,
действие которых имеет свою специфику для ПРК "Орион-128".
SCREENX.
SCREENX - включение цветового режима дисплея. Х может принимать значения
0, 1, 2. При Х=0 включается монохромный (зелено-черный) режим, при Х=1 -
четырехцветный и при Х=2 - 16-цветный режим. Оператор SCREEN для данной
версии Бейсика является выполняемым, т. е. при появлении его в программе
немедленно происходит переключение дисплея на отображение уже имеющейся
на экране графической информации в том режиме, который указан в качестве
параметра в операторе SCREEN. Одновременно он является установочным и
влияет на то, как будут выполняться встречающиеся за ним в программе
операторы CLS, COLOR, PRINT, BOX, PAINT, PSET, LINE, DPL.
COLOR X, Y
Оператор задания цвета. X и Y- любые целые числа в интервале от 0 до 15.
Х - цвет фона, Y - цвет переднего плана. Само по себе выполнение
оператора COLOR не приводит ни к каким изменениям на экране, однако
следующие за ним операторы CLS, PSET, LINE, BOX, PAINT, PRINT выводят
информацию на дисплей в том цветовом решении, которое задано оператором
COLOR. В цветовом режиме 1 (т. е. если перед этим был выполнен оператор
SCREEN 1) значения Х и Y должны лежать в пределах 0-3, тем не менее
выполнение оператора COLOR с большими значениями (но не более 15) не
будет воспринято как ошибка. Значения цвета при этом установятся равными
остатку от деления Х и Y на 4. Так, в режиме SCREEN 2 оператор COLOR
6,15 установит цвет выводимых точек белыми на темно-желтом фоне, а
оператор COLOR 2,3 - голубыми на темно-зеленом. Если же включен режим
SCREEN 1, отображение информации и в том и в другом случае будет
происходить синим цветом на зеленом фоне. В режиме SCREEN 0 оператор
COLOR не выполняется. При "холодном" запуске интерпретатора
устанавливается режим 2 и цвет выводимой на дисплей информации 0,15, т.
е. белые символы на черном фоне. В данном случае Бейсик неявно выполняет
действия, которые эквиваленты выполнению следующих операторов: SCREEN 2:
COLOR 0,15: CLS (ВК] Если в операторе COLOR задать одинаковые параметры,
например COLOR 0,0, то выводимая на экран информация будет сливаться с
фоном и станет не видна. Выходить из такой ситуации придется, набирая
"вслепую" приведенную выше строку операторов, либо использовать кнопку
системного сброса.
CLS
Очистка экрана. В режимах SCREEN 1 и SCREEN 2 экран окрашивается в цвет,
указанный первым параметром последнего выполнявшегося оператора COLOR.
ГРАФИЧЕСКИЙ И СИМВОЛЬНЫЙ ЭКРАН
Графический экран "Ориона" представляет собой поле 384х256 точек
соответственно по горизонтали и вертикали. Началом координат считается
точка в левом нижнем углу экрана - она имеет координаты 0,0. Крайняя
правая нижняя точка имеет координаты 383,0, правая верхняя - 383,255 и
левая верхняя - 0,255. Таким образом, центром экрана можно считать точку
(192,128). В отличие от других компьютеров подобного типа переключение
режимов дисплея в "Орионе" не изменяет разрешающую способность экрана, а
влияет лишь на то, каким образом происходит окраска точек. Это
обстоятельство следует учитывать при работе с графикой на ПРК "Орион":
если вы выполните какие-то графические построения в одном из режимов, а
после этого переключитесь в другой режим, изображение на экране может
предстать полным хаосом, лишенным всякого смысла.
Строго говоря, как такового символьного дисплея у "Ориона" нет, и вывод
символов происходит в графическом режиме. Тем не менее символы выводятся
на экран в строго определенные позиции. Таких позиций 64 в строке и 25 в
вертикальной колонке. Для определения места, куда будет выведен символ,
используются координаты курсора - их значения лежат в пределах 0-63 по
горизонтали и 0-24 по вертикали. Отсчет ведется так же, как и в
графическом режиме, от левого нижнего угла экрана.
CUR
Для установки курсора в нужную позицию используется оператор:
CUR X, Y - здесь Х - символьная координата по горизонтали, Y - по
вертикали. В некоторых Бейсиках используется аналогичный оператор LOCATE
X, Y, действие которого при этом совершенно такое же. Чтобы немного
проиллюстрировать сказанное, попробуйте ввести и выполнить следующую
программу:
10 SCREEN 2: COLOR 1,14: CLS
20 CUR 26,12: PRINT "ОРИОН-128"
В режиме SCREEN 2 вывод информации оператором PRINT происходит только на
передний план экрана дисплея, а цветовая атрибутика остается та, которая
уже существовала в этом месте. Так, в приведенном примере оператор CLS
устанавливает цветовые атрибуты для всего экрана "1,14" - ярко-желтый
цвет на темно-синем фоне.
BOX
Чтобы изменить цветовые атрибуты прямоугольной области в Бейсик, введен
специальный оператор:
BOX [(X, Y) P, Q [,F, С]
Наличие в синтаксисе оператора квадратных скобок говорит о том, что
параметры в них не являются обязательными и могут отсутствовать. Так,
это оператор может принимать вид: BOX (X, Y) P, Q, F, С либо BOX P, Q, F,
С либо BOX P, Q
Действие этого оператора заключается в том, что он заменяет атрибуты
цвета всех точек прямоугольной области теми значениями фона и цвета
переднего плана, которые либо заданы последним оператором COLOR
(последний из трех приведенных выше операторов), либо значениями
параметров F и С. Графическую информацию, уже имеющуюся в этом месте
экрана, оператор BOX не стирает. В режиме 2 возможна окраска только
восьми горизонтально расположенных смежных точек экрана одновременно,
поэтому значение Р в операторе BOX определяет размер окрашиваемого
прямоугольника по горизонтали количеством таких "восьмерок". Q - высота
прямоугольника и в точках. Так, Р=2, Q=16 зададут прямоугольник
(квадрат) размерами 16х16 точек. Левый нижний угол прямоугольника
располагается там, где закончилось последнее графическое построение ,
или же в точке с координатами (X, Y), но обязательно в точке, значение
горизонтальной координаты которой кратно 8. Так, оператор BOX (3, 15)
2,16 построит цветовой прямоугольник, левый нижний угол которого
находится в точке (0,15), а не (3,15), как это указано в операторе.
Попробуйте дополнить программу, которую вы вводили выше еще одной
строкой:
30 COLOR 4,15: PSET 144,120: BOX 10,20
и выполнить всю программу. Почти эквивалентны этой строке и такие
варианты:
30 COLOR 4,15: BOX (144,120) 10,20 или
30 PSET 144,120: BOX 10,20,4,15 или
30 BOX (144,120) 10,20,4,15
Некоторые отличия в работе этих программ все же будут. Так, в первых
двух вариантах присутствует оператор COLOR, который может изменить
действие графических операторов в строках, идущих после 30-й. В первом и
третьем вариантах присутствует явный оператор PSET, который выведет на
экран точку с координатами (144,120), а во втором и четвертом случаях
этого не произойдет.
В приведенном в начале примере мы воспользовались оператором PRINT. В
зависимости от того, какой режим дисплея включен в настоящий момент,
действие этого оператора несколько различно. Если в режиме SCREEN 2
оператор PRINT выводит информацию в том цветовом решении, которое уже
было задано в этом месте экрана независимо от того, какие операторы
COLOR ему предшествуют, то в режиме SCREEN 1 оператор PRINT выводит
каждый символ в виде матрицы 6х10 точек, окрашивая фон и передний план
матрицы теми цветами, которые заданы последним оператором COLOR.
Например:
10 SCREEN 1: COLOR 0,2: CLS
20 COLOR 1,3: PRINT "КРАСНО-СИНИЙ"
30 COLOR 2,1: PRINT "ЗЕЛЕНО-КРАСНЫЙ"
40 COLOR 3,0: PRINT "СИНЕ-ЧЕРНЫЙ"
50 COLOR 0,2: STOP
Кроме того, в режиме SCREEN 1 блокируется скроллинг экрана при переводе
строки, если курсор находится в нижней строке экрана, как это происходит
в режимах 0 и 2. В такой ситуации курсор переходит на верхнюю строку, а
экран остается неподвижным.
ПОСТРОЕНИЕ ТОЧЕК И ЛИНИЙ
PSET X, Y [,С]
Для построения точки в любом месте экрана - параметр С в этом операторе
необязателен и может отсутствовать. Если его нет, то на экран выводится
точка с координатами Х и Y, окрашенная в цвет, заданный вторым
параметром в последнем операторе COLOR. Если присутствует параметр С -
цвет, то точка будет нарисована этим цветом. Если далее вновь встретится
оператор PSЕТ без третьего параметра С, то эта точка опять же будет
нарисована цветом, заданным последним оператором COLOR. В качестве
примера рассмотрим следующую последовательность операторов
(предполагается, что компьютер работает в режиме SCREEN 2):
COLOR 0,15: PSET 0,0: PSET 10,0,12: PSET 20,0
При выполнении этой строки будут выведены 3 точки: первая - цветом 15
(белый), вторая - 12 (красный) и третья - опять белым.
Для режима SCREEN 1 оператор PSET работает также, необходимо только
учитывать допустимое количество цветов: 0-15 для режима 2 и 0-3 - для
режима 1. Кроме того, в режиме 2 вывод на экран точки в некоторую
позицию вызовет перекрашивание соседних 7-й горизонтальных точек
переднего плана в тот же цвет, фон при этом не затрагивается.
LINE
Для построения линий используется оператор
LINE [(X0, Y0)] X, Y [,С] или
DPL (X0, Y0) X, Y [,С]
Оператор LINE строит линию до точки с координатами X, Y из точки, где
было закончено последнее построение, либо из точки с графическими
координатами (X0, Y0), если эти параметры заданы в операторе. Оператор
DPL отличается от LINE только тем, что параметры Х и Y в нем являются
относительными координатами к той точке, откуда начинает строиться линия
и могут принимать как отрицательные, так и положительные значения. В
отношении третьего (необязательного) параметра "С" справедливо все, что
было сказано выше об операторе PSET.
В этой версии Бейсика отсутствуют такие графические операторы, как,
например, CIRCLЕ, однако построение окружности можно просто выполнить с
помощью небольшой подпрограммы, пользующейся только операторами PSET и
LINE, то же самое, кстати, можно отнести ко многим средствам расширенных
Бейсиков - практически все их операторы можно эмулировать, пользуясь
простыми средствами, имеющимися в вашем Бейсике или в крайнем случае с
помощью функции "USR" или оператора "LOAD" и небольших программ в
машинных кодах. В качестве еще одного примера приведем программу
построения двух цветных окружностей:
10 SCREEN 2: COLOR 0,15: CLS
20 XC=192: YC=128: R=80: N=50: C=14: GOSUB 1000
30 XC=100: YC=100: R=40: N=50: C=9: GOSUB 1000
900 STOP
1000 REM ПОДПРОГРАММА
1010 REM ПОСТРОЕНИЯ ОКРУЖНОСТИ
1020 PSET XC+R, YC, С
1030 FOR 1-0 TO 6.3 STEP 6.284/N
1040 LINE XC+R*COS (1), YC+0.8*R*SIN (1), С
1050 NEXT: RETURN
со строки с номером 1000 здесь приведена универсальная подпрограмма
построения произвольной окружности. Для обращения к подпрограмме должны
быть заданы следующие параметры: ХС, YC - координаты центра окружности,
R - радиус, С - цвет и N - количество шагов разбиения (на самом деле
подпрограмма строит не окружность, а N - угольник, и чем больше N, тем
ближе его форма к окружности, но при увеличении N увеличивается и время,
затрачиваемое на построение). В строках 20 и 30 задаются параметры и
происходит вызов подпрограммы. Следует отметить, что если в вашей
программе окружность строится несколько раз, имеет смысл поступить по
другому - в начале программы определить и вычислить два массива -
синусов и косинусов, а потом для построения пользоваться ими. Этот
способ резко ускорит выполнение программ. В строке 1040 значение
координаты Y умножается на коэффициент 0.8. Это делается, чтобы
выправить геометрию экрана, так как по горизонтали экран "Ориона-128"
несколько сжат.
PAINT
Для режима 1 существует еще один графический оператор:
PAINT X, Y, С - выполнение этого оператора позволяет закрасить (залить)
область, ограниченную линией какого-либо цвета этим же цветом, начиная
от точки С координатами X, Y. При этом фигура, которая закрашивается,
может иметь любую сложность, важно только, чтобы в ней не было разрывов,
иначе произойдет "заливка" всего экрана. Чтобы проиллюстрировать
действие этого оператора, исправьте начальные строки предыдущего примера
следующим образом:
10 SCREEN 1: COLOR 3,2: CLS 20 XC=192: YC=128: R=80: N=50: C==2: GOSUB
1000
25 PAINT ХС, YC, С=30 ХС=100: YC=100: R=40: N=50: C=1l: GOSUB 1000
35 PAINT ХС, YC, С
900....
Результатом работы этой программы будут два цветных круга.
КОМАНДЫ РАБОТЫ С ФАЙЛАМИ ОПЕРАЦИОННОЙ СИСТЕМЫ
Из Бейсика "ОРИОН" исключены команды непосредственной записи программ на
магнитную ленту и их чтения. Вместо этого введены команды, с помощью
которых программа может быть оформлена в виде стандартного файла "ORDOS",
записана на квазидиск и считана оттуда. Запись и чтение таких файлов на
магнитную ленту осуществляется программой "СН$" в общем стандарте.
Директив работы с файлами в Бейсике пять: SAVE, LOAD, RUN, KILL, FILES.
SAVE
SAVE "ИМЯ" - эта команда создает на диске "В" файл и записывает в него
программу из программного буфера Бейсик-интерпретатора. "Посадочный"
(стартовый) адрес таких программ равен 2200Н. При выполнении директивы
интерпретатор всегда добавляет к имени, которое выбрали для вашей
программы расширение "BS". Таким образом, если вы решили создать файл и
с помощью директивы SAVE хотите присвоить ему имя, например, "ПРОГ1",
введите SAVE "ПРОГ1", и на диске "В" в результате выполнения этой
команды появится файл с именем "ПРОГ1.BS" (заметим, что расширение имени
можно набирать вместе с именем: так, выполнение команд SAVE "ПРОГ1" и
SAVE "ПРОГ1.BS" приведет к совершенно одинаковому результату). Так как в
операционной системе "OR DOS " длина имени ограничена восемью символами,
имена Бейсик - программ не должны превышать пяти символов. Попытка
создать файл с более длинным именем (но не более восьми символов) не
будет воспринята как ошибка - при выполнении директива отсечет лишние
символы, ограничив собственно имя пятью. Пример: директива SAVE
"ПРОГ1234" создаст на диске файл с именем "ПРОГ1.BS" (разумеется, если
файла с таким именем еще нет на диске).
LOAD
LOAD "ИМЯ" - эта директива может загрузить из диска "В" программу на
Бейсике (если имя файла имеет расширение ".BS") либо произвольный
командный файл или блок данных. В первом случае директива читает из
файла с именем "ИМЯ.BS" Бейсик -программу и записывает ее в программный
буфер интерпретатора. Программа, которая находилась в буфере ранее, при
этом теряется (даже если нумерация строк этих программ различна). Все
имевшиеся числовые и строковые переменные обнуляются.
При загрузке командного файла (имеющего в имени символ "$" директива
LOAD работает аналогично соответствующей директиве операционной системы
"ORDOS". Если придерживаться определенных соглашений (программа из
командного файла не должна нарушать стек и заканчиваться командой RET),
то после ее выполнения управление будет передано обратно интерпретатору.
Следует помнить также, что программа, загружаемая директивой LOAD, не
должна располагаться в областях, используемых при работе самим Бейсиком.
RUN
Загрузить программу на Бейсике, а после загрузки еще и запустить
считанную программу можно с помощью директивы RUN "ИМЯ". Все сказанное
об, именах файлов для Бейсик - программ при объяснении работы директивы
SAVE в полной мере относится и к командам LOAD и RUN. Используя
директиву RUN "ИМЯ", можно организовать работу программ на Бейсике таким
образом, что программа в зависимости от тех или иных обстоятельств сама
загружает другую Бейсик - программу и передает ей управление, та, в свою
очередь, следующую и так далее, т. е. оператор RUN "ИМЯ" можно
использовать не только в непосредственном, но и в программном режиме.
Применять директиву RUN для загрузки в ОЗУ командных файлов нельзя.
FILES
FILES - эта команда выводит на экран дисплея каталог файлов диска "В", а
также стартовый адрес и длину каждого файла в шестнадцатиричном виде.
KILL
KILL "ИМЯ.BS" - директива уничтожения файла. Для выполнения директивы
KILL, в отличие от остальных директив работы с файлами, имя программы
должно вводиться полностью, включая расширение. Работа директивы
аналогична работе директивы "Е" операционной системы. При использовании
этой команды следует соблюдать осторожность так же, как и при работе с
директивой "Е" ОС - уничтоженный файл чаще всего восстановить уже
невозможно.
В. СУГОНЯКО, В. САФРОНОВ
Московская обл.
ЛИТЕРАТУРА
1. Долгий А. Бейсик для "Радио-86РК".- Радио. 1987, № 1.
2. Барчуков В., Фадеев Е. Бейсик "Микрон". - Радио, 1988, № 8.
3. Зеленко Г.. Панов В" Попов С. Бейсик для "Микро-80".- Радио, 1985, №
1-3; 1986, № 2, 3.
4. Сугоняко В., Сафронов В. Операционная система "ORDOS" для ПРК
"Орион-128".-Радио, 1990, № 8.
Журнал Радио №4, №5 1991 г.
КОДЫ ПРОГРАММЫ
Скачать прошивку BASIC$ можно здесь...
Но об этом позже.
На предыдущую страницу На главную страницу На следующую страницу