Языки программирования: Мега-Бейсик, Бета-Бейсик, Бета-Бейсик, Лазер-Бейсик, ZX-Форт, Паскаль HP4TM 1993 г.

LASER BASIC - общая характеристика языка. Терминология. Редактирование и запуск программ. Графические переменные.


LASER BASIC

ЛАЗЕР-БЕЙСИК является средством, расширяющим возможности
стандартного Бейсика, находящегося в ПЗУ компьютера. Целью данной
программы являются в первую очередь дополнительные средства создания
графики и мультипликации. ЛАЗЕР-БЕЙСИК разработан для обеспечения
легкости и простоты построения сложных движущихся графических
объектов, Для этого он имеет более 100 дополнительных команд. Сам по
себе ЛАЗЕР-БЕЙСИК не может создать независимую программу
(интерпретатор ЛАЗЕР-БЕЙСИКА должен присутствовать в памяти
компьютера в качестве резидента). Для этой цели существует
КОМПИЛЯТОР ЛАЗЕР-БЕЙСИКа, который, во-первых, значительно
увеличивает скорость выполнения операций, и, во-вторых, не требует
присутствия интерпретатора. Это означает, что разработанная и
откомпилированная Вами программа может быть независимой и иметь
самостоятельную коммерческую ценность.

РАБОТА С МИКРОДРАЙВОМ.

ЛАЗЕР-БЕЙСИК может быть автоматически переписан на картридж
микродрайва, если воспользоваться одной из опций меню загрузчика.
После загрузки ЛАЗЕР-БЕЙСИКа отмотайте ленту и выберите опцию 5.
Входящие файлы будут выгружены и записаны на микродрайв. При этом
Вам будет необходимо останавливать и запускать ленту по указанию.

Загрузить ЛАЗЕР-БЕЙСИК можно по команде:
LOAD * "m";1;"LASER"

Однако, при работе с микродрайвом есть одна проблема. Если
происходит ошибка, например, "File not found", то управление
передается не ЛАЗЕР-БЕЙСИКу, а стандартному Бейсику. Вы об этом
узнаете по тому, что перестанут исполняться команды из расширенного
набора. Чтобы передать управление в ЛАЗЕР-БЕЙСИК нажмите N и ENTER.
Если это не помогает, то:

RANDOMISE USR 58830 и ENTER.

Фирма приносит извинения за эти неудобства. В крайнем случае
пользуйтесь:

RANDOMISE USR 58820

I. ОБЩАЯ ХАРАКТЕРИСТИКА ЯЗЫКА
1. ТЕРМИНОЛОГИЯ.

СПРАЙТЫ.

Спрайт - это управляемый графический объект. ЛАЗЕР-БЕЙСИК
позволяет задать до 255 спрайтов, каждый из которых имеет размеры,
определяемые пользователем. Размеры спрайтов зависят от объема
свободной памяти.

К ЛАЗЕР-БЕЙСИКу прилагается программа ГЕНЕРАТОР СПРАЙТОВ.
После создания спрайтов Вы можете записать их на ленту или
картридж в одном из двух режимов.

1) Спрайты могут использоваться только с ГЕНЕРАТОРОМ СПРАЙТОВ.

2) Спрайты могут использоваться*только с ЛАЗЕР-БЕЙСИКом.

Два набора готовых спрайтов (в режиме 2) имеются на прилагаемой
кассете - это "SPRITE 2А", "SPRITE 2В".

ОКНА.

Окно экрана - это часть его, заданная четырьмя переменными C0L,
ROW, HGT, LEN.

COL - от 0 до 31 ROW - от 0 до 2 3
HGT - от 1 до 24 LEN - от 1 до 32.

COL и ROW указывают на номер столбца и номер строки
относительно левого верхнего угла экрана. Например:
.ROW=5: .COL=6: .HGT=4: .LEN=3: .INVV

Окна спрайтов.

Окна спрайтов - это часть спрайта, заданная переменными SPN,
SCL, SRW, HGT, LEN. SPN указывает на номер спрайта, SCL, SRW -
определяют столбец и строку в спрайте, a HGT, LEN - размеры "окна" в
спрайте. Если заданное таким образом окно выходит за пределы
спрайта, то команда не проходит, хотя сообщение об ошибке не
выдается.

Область спрайтов.

Область спрайтов - это область памяти, в которой хранятся все
заданные спрайты. Ее верхняя граница - 56575, а нижняя граница -
плавающая. Узнать ее можно:

PRINT РЕЕК (624 64)+2 56*РЕЕК(62465)
или

LET X = ?РЕК(62464): PRINT X
RAMTOP.

Имейте в виду, что Ваша область спрайтов, распространяясь вниз,
не должна пересечь границу RAMTOP, которая определяется:
PRINT РЕЕК(2 37 30)+256*РЕЕК(2 3731)
или

LET Х=?РЕК(23730): PRINT X

При каждом задании спрайта расходуется 9*HGT*LEN+5 байтов. В
большинстве случаев пользователю не надо беспокоиться о том, чтобы
область спрайтов не вышла за пределы RAMTOP, кроме тех случаев,
когда спрайты создаются во время работы через .ISPR или .EPRT.
Проверку можно выполнить приведенными выше вычислениями. Мы
рекомендуем начинающим не создавать спрайты в ЛАЗЕР-БЕЙСИКе, а
выполнять их в ГЕНЕРАТОРе СПРАЙТОВ; затем загружать в отведенную для
них область одним из следующих способов:

1) Используя одну из трех опций, представленных в меню
загрузчика,

2) Загрузить вручную следующим путем:
CLEAR (п-1)

LOAD "FN" CODE П
POKE 62464,n

Здесь вместо "п" надо подставить адрес начала области спрайтов,
а вместо FN - имя файла.

Имя файла - это имя, данное файлу спрайтов при выгрузке его из
ГЕНЕРАТОРА. Стартовый адрес области спрайтов - это низший байт из
файла спрайтов - он также задан ГЕНЕРАТОРОМ.

ПИКСЕЛЫ.

Элементарный блок графики размером в один стандартный символ
содержит 8*8 точек или пикселов, каждый из которых представлен битом
в памяти. Пиксел - это точка. Если он включен, то имеет цвет INK,

если выключен - PAPER.

АТРИБУТЫ.

Цвета INK или PAPER блока, а также параметры BRIGHT и FLASH
управляются специальными битами и называются атрибутами.

ОПЕРАЦИИ С ЭКРАНОМ.

Есть операции, которые выполняются с частью экрана. Область
экрана при этом называется окном. Эти операции включают в себя
скроллинг, инверсию, построение симметричных изображений и т.п. Все
команды этой группы имеют на конце букву V, например:
.SR1V, .INVV, .MIRV и пр.

Если окно выходит за пределы экрана, оно автоматически
"подгоняется" под экран.

ОПЕРАЦИИ МЕЖДУ ЭКРАНОМ И СПРАЙТОМ.

Размеры спрайтов используются в качестве размеров окон; C0L и
ROW используются для задания координат левого верхнего угла окна.
Таким образом, эти функции выполняются с переменными SPN, COL, ROW.
Команды этой группы начинаются с "рт" или "GT". Например:

.GTBL; .PTXR; .PTND и др.

ОПЕРАЦИИ СО СПРАЙТАМИ.

Они аналогичны операциям с окнами. Используемая переменная -
SPN. Команды имеют окончание "М".

ОПЕРАЦИИ МЕЖДУ ОКНОМ ЭКРАНА И ОКНОМ СПРАЙТА.

Как и ранее, ROW, COL, HGT, LEN определяют окно экрана, но в
данном случае SCL и SRW используются для определения положения окна
в спрайте. Измеряется SCL и SRW в символах. SCL - слева, a SRW -
сверху. Если SRW + HGT больше, чем высота спрайта, или SCL + LEN
больше чем его ширина, или LEN + COL больше 32, или HGT + ROW больше
24, то команда не исполняется. Команды этой группы начинаются с SW
или PW.

ОПЕРАЦИИ МЕЖДУ СПРАЙТОМ И ОКНОМ СПРАЙТА.

Номера спрайтов хранятся в SP1 (для первого спрайта) и в SP2
(для второго спрайта с окном). Размеры окна - это размеры спрайта
без окна, а положение окна в спрайте (SP2) задается SCL и SRW. Если
спрайт SP1 пересекает границу спрайта SP2, то команда не
выполняется. Команды этой группы начинаются с "РМ" или "GM".

ОПЕРАЦИИ СПРАЙТ - СПРАЙТ.

Это команды, по которым спрайт трансформируется и результат
заносится во второй спрайт. В этой группе только 2 команды: .SPNM и
.DSPM.

ПУСТОЙ СПРАЙТ.

Он не содержит данных для экрана. Его можно использовать,
например, для хранения подпрограммы в машинных кодах, массивов; он
может быть использован для процедуры определения коллизии
(столкновения) спрайтов.

2. РЕДАКТИРОВАНИЕ И ЗАПУСК ПРОГРАММ.

Редактор "Спектрума" расширен настолько, что дополнительные
команды ЛАЗЕР-БЕЙСИКа проходят проверку на синтаксис при вводе
программы. Все команды ЛАЗЕР-БЕЙСИКа начинаются с точки (.), за
которой идут четыре символа, изображенные заглавными буквами.
Присваивания, такие как C0L= или R0W= не должны содержать пробелов
между " = " и именем переменной.

Дополнительные функции записываются через "?" с последующими
тремя символами. Например: ?C0L; ?R0W и т.п. Они могут
использоваться только для передачи значений переменной и не могут
использоваться как часть выражений или с оператором PRINT. Например:
LET Х= ?COL: LET Y= ?KBF: LET Z= ?SET - правильно.
LET X= ?COL*3+Y - неправильно.

PRINT ?COL - неправильно.

Если ЛАЗЕР-БЕЙСИК работает с ИНТЕРФЕЙСОМ-1, то ошибки микрод-
райва приводят к передаче управления в системный Бейсик. После это-
го редактор уже не понимает команды из расширенного набора ЛА-
ЗЕР-БЕЙСИКа. Для возврата в ЛАЗЕР-БЕЙСИК сотрите (DELETE) строку,
которую Вы пытались ввести и наберите # с последующим ENTER.

Для запуска программы - RUN. Можно - RUN п. Можно применить для
этой цели и GO ТО, GO SUB, CONTINUE.

НАЧАЛО РАБОТЫ С ПРОГРАММОЙ.

Сначала загрузите ЛАЗЕР-БЕЙСИК. Остановите ленту по указанию.
Программа готова к работе после появления на экране меню. Теперь
загрузите файл "SPRITE 2А". Он загружается выбором опции "3" в меню
и нажатием "PLAY" на магнитофоне. После загрузки спрайтов Вы можете
работать с ЛАЗЕР-БЕЙСИКом (опция 1).

Когда Вы напишете собственную программу, то сможете
пользоваться своими собственными спрайтами, выполненными в программе
"SPRITE GENERATOR" (ГЕНЕРАТОР СПРАЙТОВ).

Все ключевые слова стандартного Бейсика вводятся как обычно.
Наберите:

10 REM This is your first Laser BASIC program

(это Ваша первая программа на ЛАЗЕР-БЕЙСИКе).
20 .COL = 1 (набирается по буквам)
30 .ROW = 1
40 .HGT = 20
50 .LEN = 30
60 .INVV

Далее можно дать RUN или GO ТО 10

СЕРВИСНЫЕ КОМАНДЫ.

Добавлены 4 новых команды: .RNUM, .REMK,

.TRON,

. TROF

. RNUM

Эта команда служит для перенумерации строк. Например:

.RNUM 102,1000,5

По этой команде все строки до 102 останутся нетронутыми.
Строке 102 будет присвоен номер 1000, а все последующие строки будут
нумероваться с шагом 5. Можно задавать не все три указанных числа, а
умалчивать их. Шаг по умолчанию равен 10. Новый номер строки по
умолчанию принимается равным старому. Первый номер по умолчанию
принимается равным нулю.

. REMK

Эта команда применяется для удаления всех строк REM из
программы в целях экономии памяти.

.TRON и ♦TROF

Это отладочные операторы для "трассирования" (пошагового вы-
полнения программы). Применяются при поиске ошибок.

.TRON - задает начало трассирования.

.TROF - конец трассирования.

После встречи .TRON интерпретатор останавливается на каждой
строке Вашей программы, распечатывает ее и ждет нажатия клавиши.
После прохождения .TROF трассирование автоматически отключается.

3. ГРАФИЧЕСКИЕ ПЕРЕМЕННЫЕ.
ОБЩИЕ ЗАМЕЧАНИЯ

Способ, которым параметры передаются графическим процедурам,
несколько необычен и предназначен для повышения скорости расчетов.
Каждая команда графики может использовать набор графических
переменных из возможных десяти. Всего допускаются до 16 наборов. Из
них можно делать индивидуальную выборку по форме:

.SET = <ехр>,

где <ехр> может быть Бейсиковским выражением, имеющим значение
от 0 до 15.

Эти десять переменных:

ROW - вертикальная координата ( от 0 до 23). Верхний ряд имеет
ROW = 0

COL - горизонтальная координата (от 0 до 31). Левый столбец

имеет COL = 0
HGT - высота текущего окна (1 - 24)
LEN - длина текущего окна (1 - 32)

SRW - вертикальная координата внутри спрайта (от 0 до HGT-1)
SCL - горизонтальная координата внутри спрайта (от 0 до LEN-1)
NPX - выражает величину и направление вертикального скроллинга.
Положительное значение - вверх. Отрицательное - вниз.
Единица измерений - пиксел (не символы). Диапазон -
(+127 ... - 128)

SPN - номер спрайта (от 1 до 255). Применяется для тех команд,

которые работают только с одним спрайтом.
SP1 - для операций между спрайтом и окном другого спрайта,
имеющего окно.

SP2 - для тех же операций содержит номер спрайта, имеющего окно.

ПРИМЕР.

10 .SET= 0: .SPN= 4: .ROW= 0: .COL= -4

20 BORDER 1: BRIGHT 1: INK 6: PAPER 1: CLS: .ATOF

30 FOR I = -4 TO 32

40 .PTXR: .COL= 1+1: .PTXR

50 PAUSE 4

60 NEXT I

70 STOP

Строка 10. Выбирается графический набор 0. Спрайт номер 4; ROW

устанавливается в 0, a COL в -4.
Строка 20. Устанавливаются атрибуты экрана. Экран очищается,

флаг атрибутов отключается.
Строка 30. Организуется цикл для движения спрайта 4 (утка) по

горизонтали от координаты (-4) до (+32).
Строка 40. Удаляется старый спрайт, затем помещается новый.
Строка 50. Пауза для обеспечения необходимой плавности
перемещений.

Теперь можно расширить эту простую программу для движения двух
спрайтов в противоположных направлениях. (Второй спрайт будет
зеркальным отображением первого). Здесь надо использовать два набора
переменных.

Обратите внимание на то, что когда Вы используете один набор
переменных, то использовать оператор .SET не обязательно.
20 DEF FN А| (X,Y): .SET= X: .SPN= 4: .R0W= Y
3 0 .RETN

35 INK 6: PAPER 0: BORDER 0: BRIGHT 1: CLS: .ATOF
40 .PROC FN A# (0,0): .PROC FN A# (1,1)
50 .COL= 32: .SET= 0: .COL= -4
60 FOR I = -4 TO 32

70 .SET = 1: .MIRM: .PTXR: .COL= 28-1: .PTXR: .MIRM
80 PAUSE 2
90 NEXT I
100 GO TO 40

По этой программе две утки перемещаются на экране навстречу
друг другу.

Строки 20 и 30. Задают процедуру, которая устанавливает
переменные для соответствующих наборов. При
первом проходе SET=0 и R0w=0, при втором SET=1
и ROW=l. Это означает, что оба набора
идентичны, за исключением ROW.
Строка 35. Установка атрибутов.
Строка 40. Дважды рассчитывается процедура А#.
Строка 50. Устанавливаются столбцы.
Строка 60. Начало цикла.

Строка 70. Перемещает спрайт слева направо, используя при этом
переменные из набора 0. Строит зеркальное отражение
спрайта и перемещает его справа налево.
Строка 80. Обеспечивает плавность перемещений.

ИЗМЕНЕНИЕ ЗНАЧЕНИЙ ПЕРЕМЕННЫХ.

Кроме необходимости назначения графических переменных, прихо-
дится менять их текущие значения. Для этого существуют одиннадцать
функций:

?COL ?ROW ?LEN ?HGT
?SP1 ?SP ?SPN ?NPX

?SCL ?SRW ?SET
Этими функциями текущим переменным присваиваются нормальные
значения Синклеровских переменных. Например:
LET Х= ?COL: LET ROW= ?ROW: LET ST= ?SET

Все эти функции не могут быть частью выражений или параметрами

оператора PRINT.

Так, нельзя: LET X = ?C0L*3 + 7ROW/8, - вместо этого
LET COL = ?COL: LET Y = ?ROW: LET X = COL*3+Y/8




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Мир звуков Спектрума - глава 4.8: Синтезирование речи.
Adventure Project - Проектирование и разработака Адвентюрных и RPG игр.
В паутине - График работы городских серверов.
P.S. - как вы успели заметить новый номер вышел в новой оболочке.
Железо - расширение для PROFI для подключения других устройств (T-Rex's Device 1.2)

В этот день...   21 ноября