Системные программы для ZX-Spectrum 1992 г.

LASER-BASIC - средство расширения стандартного бейсика (В ROM ZX). Введение.


LASER-BASIC

 

LASER-BASIC (LB) — средство расширения стандартного бейсика (В ROM ZX). В него входят графика, мультипликация,движение графических объектов.

LB не создает независимой программы (интерпретатор должен быть в памяти ZX-SPECTRUM в качестве резидента). Существует компилятор LB, который значительно увеличивает скорость выполнения операций и не требует присутствия интерпретатора.

 

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

LB может быть автоматически переписан на картридж микродрайва, если воспользоваться одной из опций меню загрузчика. После загрузки отмойте опцию S. Входящие файлы будут записаны на микродрайв. При этом будет необходимо останавливать и запускать ленту по указанию.

Загрузить с микродрайва можно по команде:

LOAD *"М";1;"LASER"

Однако при работе с микродрайвом есть одна проблема. Если происходит ошибка, например "FILE NOT FOUND", то управление передается не LB, а стандартному бейсику. Вы об этом узнаете по тому, что перестанут исполняться команды из расширенного набора. Чтобы передать в LB, надо нажать ENTER, если не помогает, то RANDOMIZE USR 58830 и ENTER. В крайнем случае RANDOMIZE USR 58820.

 

ТЕРМИНОЛОГИЯ.

СПРАЙТ — это управляемый графический объект, LB позволяет задать до 255 спрайтов, каждый имеет размеры, определяемые пользователем. Размеры спрайтов и их количество зависят от объема свободной памяти. К LB прилагается программа-генератор спрайтов (ГС). После создания спрайтов можно записать их на ленту или картридж в одном из двух режимов:

1. Спрайты могут использоваться только с ГС.

2. Спрайты могут использоваться только с LB.

Два набора готовых спрайтов (в режиме 2) имеются в приложении — это SPRITE 2A и SPRITE 2B.

ОКНА ЭКРАНА — это часть его, заданная четырьмя переменными:

COL - от 0 до 31;

ROW -от 0 до 23;

LTN   от   1   до   32;

HGT от   1 до   24;

COL и ROW указывают на номер столбца и номер строки относительно левого верхнего угла экрана.

НАПРИМЕР;

.ROW=5: .COL=6: .HGT=4: .LEN=3:

. INVV

ОКНО СПРАЙТОВ — это часть спрайта, заданная переменными:

SPN. SCL, SRW, HGT, LEN.

SPN — указывает на N спрайта.

SCL и SRW — определяет столбец и строку в спрайте.

HGT и LEN — размер окна в спрайте.

Если заданное таким образом окно выходит за пределы спрайта, то команда не проходит, хотя сообщение об ошибке не выдается.

ОБЛАСТЬ СПРАЙТА — это область памяти, в которой хранятся все заданные спрайта. Ее верхняя граница — 56575, нижняя граница — плавающая. Указать ее можно:

PRINT PEEK(62464)+256“PEEK(62465) или

LET Х=РЕЕК(б2464):PRINT X

 RAMTOP

Область спрайта распространяется вниз и не должна пересекать границу RAMTOP, которая определяется:

PRINT PEEK (23730)+256*PEEK(23731)

или

LET Х=”РЕЕК(23730) : PRINT X При каждом задании спрайта расходуется:

9*HGT*LEN+5 байтов.

Обычно не стоит волноваться о выходе из RAMTOP, кроме тех случаев, когда спрайта создаются во время работы программы через .ISPR или .SPRT. Проверку можно выполнить приведенными выше вычислениями.

Мы рекомендуем сначала создать спрайты в генераторе спрайтов, а затем загружать в отведенную для них область одним из следующих способов:

CLEAR   (N-1)

LOAD "FN" CODE (N)

POKE 62464,N

где N — адрес начала области спрайтов, a "FN" — имя файла, данное файлу спрайтов при выгрузке его из ГС. Стартовый адрес области спрайтов — это низший байт из файла спрайтов, он также задан ГС.

•ПИКСЕЛИ

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

Пиксель — это точка. Если он включен, он имеет цвет INK, а если он выключен — PAPER.

• АТРИБУТЫ

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

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

Есть операции, которые включаются с частью экрана, называемой окном. Эти операции включают в себя: скролинг, инверсию, построение симметричных изображений и т.п.

Все команды этой группы имеют на конце букву V:

•SRIV, .INVV, .MIRV

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

• ОПЕРАЦИИ МЕЖДУ ЭКРАНОМ И СПРАЙТОМ Размеры спрайта используются в качестве размеров окна. COL и ROW используются для задания координат верхнего угла окна. Таким образом, эти функции выполняются с переменными SPN, COL, ROW.

Команды этой группы начинаются с "РТ" или "GT". Например: .GTBL, .PTXR, .PTNД и т.п.

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

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

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

Как и ранее .ROW, .COL, .HGT, .LEN определяют окно экрана, но в этом случае .CSL и .SRW используются для определения положения окна в спрайте. Измеряются .SRW и .SCL в символах.

.SCL — сяева, SRW — вверху. Если .SRW+.HGT больше, чем высота спрайта, или .SCL+.LEN больше, чем его ширина или .LEN-.COL больше 24, то команда не исполняется. Команды этой группы начинаются с "PW" или с "GW".

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

ЭКРАНА

Номера спрайтов хранятся в SP1 (для первого спрайта) и в SP2 (для второго спрайта с окном). Размеры окна — это размеры спрайта без окна, а положение окна в спрайте (SP2) задается .SCL и .SKW.

Если спрайт SP1 пересекает границу SP2, то команда не выполняется. Команды этой группы начинаются с "РМ" или с "GM".

• ОПЕРАЦИИ СПРАЙТ—СПРАЙТ

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

.SPNM и .DSPM

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

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

Редактор ZX расширен настолько, что дополнительные команды LB проходят проверку на синтаксис при вводе программы. Все команды LB начинаются с точки, за которой идут четыре символа, изображенные заглавными буквами. Присваивания такие, как .COL или .ROW, не должны содержать пробелов между """ и именем переменной. Дополнительные функции записываются через "?" с последующими тремя символами.

Например: COL, ROW и т.п. Они могут использоваться только для передачи значения переменной и не могут использоваться как часть выражений или оператором PRINT, например:

LET X=?COL X:LET Y=?KBF D: LET Z=?GET (ПРАВИЛЬНО)

LET X=?COL*3+Y:PRINT ?COL (НЕПРАВИЛЬНО)

Если LB работает с интерфейсом 1, то ошибки микродрайва приводят к передаче управления в системный бейсик. После этого редактор уже не понимает команды из пассивного набора LB. Для возврата в LB сотрите (DELETE) строку, которую вы пытались ввести, и наберите # с последующим нажатием ENTER.

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

 

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

Сначала загрузите LB. Остановите ленту по указанию. Программа готова к работе после появления на экране меню. Теперь загрузите файл "SPRITE 2A". Он загружается набором опции "3" в меню и нажатием "PLAY" на магнитофоне. После загрузки спрайтов вы можете работать с LB (опция 1). Вы сможете пользоваться своими собственными спрайтами, выполненными в программе "SPRITE GENERATOR".

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

Наберите:

10 REM THIS IS YOUR LASER PROGRAM

20 .COL=1

30 .ROW=1

40 .HGT=20

50    .LEN=30

60    .INVV

RUN (или GOTO 10)

 

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

 .RNUM, .REMK, .TRON, .TROF

.RNUM служат для перенумерации строк: .RNUM 102,100,5 строки до 102 не изменяются, строке 102 присвоится номер 100, а последующие строки пронумеруются с шагом 5. Шагом по умолчанию°10. Новый номер строки по умолчанию принимается равным старому, первый номер по умолчанию принимается равным 0.

.REMK применяется для удаления всех строк REM с целью. экономии памяти.

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

 

ГРАФИЧЕСКИЕ ПЕРЕМЕННЫЕ

Способ, которым параметры передаются графическим процедурам, предназначен для повышения скорости расчетов. Каждая команда с графика может использовать набор графических переменных (из десяти). Всего допускается до 16 наборов. Из них можно делать индивидуальную выборку по форме: .SET=<EXP>, где <ЕХР> может быть выражением из бейсика от 0 до 15. Эти 10 переменных:

ROW — вертикальная координата (0-23);

верхний ряд имеет ROW^O.

COL — горизонтальная координата (0-31);

левый столбец имеет COL°0.

НОТ — высота текущего окна (1-24).

LEN — длина текущего окна (1-32).

SRW — вертикальная координата внутри спрайта (0-(HGT-1)).

SCL — горизонтальная координата внутри спрайта (0- (LEN-1)).

NPX — выражает направление и величину вертикального скролинга. Положительное значение — вверх, отрицательное — вниз. Единица измерения — пиксель (не символ). Диапазон -128-+127.

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

SP1 — для операций между спрайтом и окном другого спрайта. Здесь содержится номер первого спрайта.            '

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

Пример:

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

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

 30 FOR I=-4 TO 32

 40 .PTXR:.COL-I-H :.PTXR

 50 PAUSE 40

 60 NEXT I

 70 STOP

10 выбирается графический набор 0. Спрайт N4. 20 устанавливаются атрибуты экрана, он очищается, флаг атрибутов отключается.

30 организуется цикл для спрайтов N4 по горизонтали от координаты -4 до +32. ••- 40 удаляется старый спрайт, помещается новый.

50 пауза для плавности движения.

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

20   DEF

FNA#(X,Y):.SET=X:.SPN=4:.ROW=Y

30 .RETN

40 INK 6:PAPER 0:BORDER 0:BRIGHT 1:CLS:.ATOF

50 .PROC FNA#(0,0):.PROC FNA#(1,1)

55    .COL=32:.SET=X;.COL=-4

60   FOR   1=1   TO   32

70    .SET=1:.MIRM:.PTXR:.COL=28-1:

.PTXR:.MIRM

60 PAUSE 2

90 NEXT 1

100   GOTO   40

20 и 30 задают процедуру, которая устанавливает переменные для соответствующих наборов. При первом переходе SET=0 и ROW-0. При втором переходе SET-1 и ROW-1. Это значит, что оба набора идентичны, за исключением ROW.

40 — дважды рассчитывается процедура А#.

50 — устанавливает столбцы.

60 — начало цикла.

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

 

 • ИЗМЕНЕНИЕ ЗНАЧЕНИЙ ПЕРЕМЕННОЙ

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

?COL ?ROW ?LEN ?HGT ?SP1 ?PSP ?NPX ?SCL ?SRW ?SET

Этими функциями текущим значениям переменных присваиваются значения синклеровских системных переменных.

Например:

LET X=?COL: LET ROW==?ROW: LET SET=?SET

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

• ПРОЦЕДУРЫ ОБРАБОТКИ СПРАЙТОВ

•SPRT — нужен для задания новых спрайтов. Область спрайтов поднимается на величину: 9*HGT*LEN+5 байт. Если номер этого спрайта был ранее задан, то сначала считывается старый спрайт (при этом нижняя граница изменена, а верхняя — понижается) , а затем размещается новый.

Если спрайт задается впервые, то данные в него должны быть внесены оператором. Например: .GTBL

ПАРАМЕТРЫ КОМАНДЫ

НАЗНАЧЕНИЕ

 

.SPN

НОМЕР ПОМЕЩЕННОГО СПРАЙТА (1-255)

.LEN

ДЛИНА СПРАЙТА В СИМВОЛАХ (1-255)

.HGT

ВЫСОТА СПРАЙТА В СИМВОЛАХ (1-255)

Поскольку эта команда расширяет область спрайтов вверх, она имеет ограниченную применимость. Чаще пользуются командой JSPR. Неаккуратное использование может привести к порче программы.

.ISPR то же самое, что и .SPRT, но здесь область спрайтов развивается вниз. Если спрайт с данным номером есть, то появляется сообщение об ошибке. Если при использовании этой команды начало области спрайтов опустится ниже RAMTOP, то программа может испортиться.

.WSPR — служит для стирания существующего спрайта. Верхняя граница области понижается. Обычно для этого применяют DSPR.

ПРИМЕР: .SPN=1:.WSPR

Параметр

Назначение

.SPN

НОМЕР СПРАЙТА, ПОДЛЕЖАЩЕГО  СТИРАНИЮ(1-255)

 

•DSPR — аналогична предыдущей. При стирании спрайтов нижняя граница области повышается.

Горизонтальный скролинг экрана выполняется на 1, 4 или 8 пиксель влево или вправо с возвратом или без него.

• КОМАНДЫ

.WL1V — скролинг влево на 1 пиксель с возвратом,

. WR1V — скролинг вправо на 1 пиксель с возвратом,

. SL1V — скролинг влево на 1 пиксель без возврата,

 . SR1V — скролинг вправо на 1 пиксель без возврата, .WL4V, .WR4V, .SL4V, .SR4V — то же на 4 пикселя,

 .WL8V, .WR8V, .SL8V, .SR8V — то же на 8 пикселей.

ПАРАМЕТРЫ КОМАНД

НАЗНАЧЕНИЕ

•COL

 

НОМЕР ЛЕВОГО КРАЙНЕГО СТОЛБЦА (0-31)

 

.ROW

 

НОМЕР СТРОКИ (0-23)

 

.LEN

 

ДЛИНА ОКНА (1-23)

 

.НОТ

 

ВЫСОТА ОКНА (1-24)

 

 

Описанные выше команды работают с экраном, выполняя скродинг окна, размеры которого — .LEN и .HGT, а координаты — .COL и .ROW. Скролинг на произвольное количество пикселей выполняется последовательной подачей ряда описанных команд.

• ВЕРТИКАЛЬНЫЙ СКРОЛИНГ ЭКРАНА

Работа этих команд похожа на работу горизонтального скро-линга, но к добавлениям параметра окна добавляется переменная .NPX, которая задает размер и направление скролинга в пикселях.

. NPX=-1 — на один пиксель вниз,

. NPX=1 — на один пиксель вверх.

КОМАНДЫ:

. WCRV — вертикальный скролинг с возвратом, . SCRV — вертикальный скролинг без возврата.

Вертикальный скролинг пикселей или атрибутов экрана или спрайтов требует пространства в буфере. Необходимое пространство определяют перемножением NPX и LEN. Его объем не должен превышать 256 байт, поскольку в качестве временного хранилища используется память буфера принтера.

Скролинг атрибутов экрана похож на скролинг пикселей, но выполняется на ширину символов и всегда с возвратом.

• КОМАНДЫ:

. ATLB — скролинг атрибутов влево, . ATRV — скролинг атрибутов вправо, .ATW — скролинг атрибутов вверх,

. ATDV — скролинг атрибутов вниз. • ПАРАМЕТРЫ:

.COL (0-31) .ROW (0-23) .HGT (1-32) .LEN (1-24)

 

ГОРИЗОНТАЛЬНЫЙ СКРОЛИНГ СПРАЙТОВ

Горизонтальный скролинг спрайтов выполняется на 1, 4, 8 пикселей влево, вправо, с возвратом и без.

 • КОМАНДЫ:

.WL1M — скролинг влево на 1 пиксель с возвратом,

.WR1M — скролинг вправо на 1 пиксель с возвратом,

.SLIM — скролинг влево'на 1 пиксель без возврата,

.SR1M — скролинг вправо на 1 пиксель без возврата,

.WL4M, .WR4M, SL4M, .SR4M — то же на 4 пикселя, .WL8M,

 .WR8M, SL8M, .SR8M — то же на 8 пикселей.

Параметр .SPN — номер спрайта.

ВЕРТИКАЛЬНЫЙ СКРОЛИНГ СПРАЙТА__

. WCRM — вертикальный скролинг с возвратом,

. SCRM — вертикальный скролинг без возврата.

• ПАРАМЕТРЫ:

. SPN — номер спрайта,

. NРХ — направление и количество пикселей скролинга (128-127).

• СКРОЛИНГ АТРИБУТОВ СПРАЙТА

4 команды для скролинга в четырех направлениях на 2 символа с возвратом:

.ATLM —влево!

.ATRM — вправо ! SPN — номер спрайта,

•ATUM —вверх! . atom вниз.

ПАРАМЕТР .SPN — номер спрайта.

 

ОПЕРАТОРЫ GET И PUT, ГРУППА 1___

put помещают на экран или в другой спрайт. GET — наоборот, берут данные с экрана или спрайта и помещают их в спрайт.

Есть 3 группы операторов GET и PUT.

Первая группа более быстродействующая, выполняет операции между целым спрайтом и предварительно заданным окном. Всем этим командам предшествуют "GT" и "РТ". Эта первая группа не имеет специальных команд для перемещения пиксель-ных данных и атрибутики, а вместо этого имеет переключатель атрибутов (cm..atin, .ATOF) для перемещения пикселей без атрибутов или с ними.

. GTBL поместить блок из окна экрана в спрайт.

..GTOR наложить (OR операция) блок окна экрана на

спрайт.

.GTXR — наложить (XOR операция) блок окна экрана на

спрайт.

.GTND — наложить (AND операция) блок окна экрана на

спрайт.

. PTBL — поместить спрайт в окно экрана. . PTOR — наложить (OR операция) спрайт на окно экрана. . PTXR — наложить (XOR операция) спрайт на окно экрана.

 . PTND — наложить (AND операция) спрайт на окно экрана.

• ПАРАМЕТРЫ:

. COL — номер левой колонки требуемой позиции экрана (0-

31).

. ROW — номер верхнего ряда (0-23).

. SPN — номер спрайта.

ПРИМЕР: .SPN=39: .ROW=1: .COL=1: .PTBL

Поместите спрайт номер 39 на экран в позицию 1.1, наберите.ATOF (отключение переноса атрибутики), теперь: .ROW=5.PTBL, спрайт номер 39 появляется на экране в другой позиции, но без атрибутов.

Наберите .ATOF: .PTBC и спрайт появится с атрибутами.

Оператор GET берет данные из окна в заданной позиции,размеры которого равны размеру спрайта и помещает их в спрайт.

 

ОПЕРАТОРЫ GET И PUT, ГРУППА 2.

Эти команды выполняют операции между окнами экрана и окном спрайтов.

.ATON и .ATOF имеют то же значение, как и ранее. Здесь нужны 4 новых параметра для задания столбца и

строки, определяющих положение окна в спрайте, а также высоты и длины этого окна. Этим командам предшествуют "GW и "PW".

. GWBL — перенос блока с экрана в окно спрайта,

. GWOR — наложение по принципу OR,

. GWXR — наложение по принципу XOR,

. GWND — наложение по принципу AND,

. PWBL — перенос блока из окна спрайта на экран,

. PWOR — наложение по принципу OR,

. PWXR — наложение по принципу XOR,

. PWND — наложение по принципу AND,

. GWAT — перенос атрибутов блока с экрана в окно спрайта,

. PWAT — перенос атрибутов блока из окна спрайта на экран. • ПАРАМЕТРЫ:

.COL — номер столбца позиции на экране (0-31),

. ROW — номер строки позиции на экране (0-23),

. SCL — координата левой границы окна спрайта 0 — длина спрайта — 1,

.SRW — координата верхней строки окна спрайта 0 — до высоты спрайта 1,

.НОТ — высота окна (1-24), . LEN — длина окна (1-32), .SPN — номер спрайта (1 -225).

 

ОПЕРАТОРЫ GET И PUT, ГРУППА 3

Группа содержит команды для операций между спрайтом и окном в другом спрайте.Эти команды начинаются с "РМ" или с "GM".

. GMBL — перенос спрайта в окно другого спрайта,

.GMOR —наложение OR,

. GMXR — наложение XOR,

. GMND — наложение AND,

. PMBL — перенос окна спрайта в другой спрайт,

. PMOR — наложение OR,               ”

. PMXR — наложение XOR,

. PMND — наложение AND,

. gmat — перенос атрибутики спрайта в окно другого спрайта,

. РМАТ — перенос атрибутики окна спрайта в другой спрайт. • ПАРАМЕТРЫ:

. SP1 — номер первого спрайта (1-255), .SP2 — номер второго спрайта (1-255), .SCL — координата левой границы окна спрайта (1 — длина спрайта),

. SRW — координата верхней строки окна спрайта (1 — высота спрайта).

 

ОПЕРАТОР .MOVE.

Используется для эффекта мультипликационного перемещения спрайтов. Операция выполняется только по XOR или .XOR., поэтому, прежде чем перемещать спрайт по экрану, его надо сначала туда поместить через RTXR;

• ПАРАМЕТРЫ:

. COL — номер столбца спрайта, подлежащего перемещению (0-31),

. ROW — номер его строки (0-23),

•НОТ — величина перемещения по вертикали ((-24) - (+24)), . LEN — длина перемещения по горизонтали ((-32)-(+32)), . SP1 — номер спрайта, подлежащего перемещению (1 -255),

•SP2 — его номер после перемещения (...255). По команде MOVE берется через PUT спрайт SP1 с позиции экрана, заданной ROW и COL, и помещается спрайт SP2 в позицию COL+LEN, HGT+R.

 

ОПЕРАТОРЫ .ATON И .ATOF

Эти две команды определяют, надо ли переносить атрибуты спрайтов при выполнении команд PUT и GET.

. ATON — включение переноса атрибутов,

. ATOFF — выключение переноса атрибутов.

 




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
От авторов - Мы будем oчень рaды любoй критике или леcтным cлoвaм в нaш aдреc.
От редактора - Динамика выхода новых программ нe можeт нe yдрyчать.
Как устроены игрушки - статья о том как делаются игры лабиринтного типа с большим игровым пространством.
Обратная связь - контакты редакции.
Toys - Новелла к игре "BISMARK".

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