Диалекты бейсика для ZX Spectrum 1992 г.

Megabasic - Кадры.


КАДРЫ_

GET, PUT, SPUT

MegaBasic позволяет копировать часть экранного изображения (которую мы будем называть кадром) в свободную область памяти (далее именуемую буфером) и возвращать кадр в прежнем или измененном виде на старое или новое место экрана.

Кадр копируется в буфер оператором

GET_m,z,n,c,h,g - а возвращается на экран оператором

PUT_m,z,n,c,h,g

Форматы операторов GET и PUT, в принципе, схожи.

Параметр m (0...6) задает принцип, по которому кадр совмещается с изображением в буфере (GET) или на экране (PUT). При т=0 копируемое изображение заменяет собой предыдущее. При т=1 происходит логическое сложение (OR) старого и нового содержимого; при т=2 или 3 сложение осуществляется по принципу «исключающего ИЛИ» (XOR). Операции, производимые при т=4, 5 и 6, аналогичны операциям при т=0, 1 или 2, но с той лишь разницей, что при копировании знакоместам в кадре присваиваются текущие постоянные атрибуты.

Параметр m в операторе GET обычно устанавливают равным нулю (иные значения в фирменном руководстве даже не упоминаются). Однако ненулевое значение m может пригодиться, если нужно совместить в памяти изображения двух или более кадров. Нужно соблюдать только одно условие — кадры должны быть одинакового размера.

Второй параметр (z) в операторах GET и PUT устанавливает начальный адрес буфера, с которым взаимодействует выделенный кадр. Нужно следить, чтобы буферы не перекрывались и, естественно, не «наезжали» на коды MegaBasic, то есть не оказывались выше адреса 45000.

Остальные четыре параметра задают координаты и размеры кадра в «нормальных» знакоместах — 8x8 пикселей; начало координат — левый верхний угол экрана. Параметры п и с указывают, соответственно, вертикальную и горизонтальную координаты верхнего левого угла кадра. Параметры h и g определяют высоту и ширину кадра. К их значениям в операторе PUT предъявляется жесткое требование — они должны в точности совпадать со зна-* °ниями параметров h и д, использованными предшествующим оператором GET, иначе возникнут искажения изображения.

Несколько слов о рабочих и допустимых значениях параметров. Рабочими значениями параметра m являются целые числа от 0 до 6. Но и любые другие значения не приводят к ошибке, так как MegaBasic использует только 4 младших бита двоичного представления целой части параметра.

Гледующий параметр — адрес буфера z — должен указывать на свободную область памяти. Его рабочие значения обсуждались чуть раньше. Произвольные значения также принимаются операторами GET и PUT и пересчитываются к приемлемым для ZX Spectrum значениям адресов. Однако трудно предположить, где окажется буфер, если указать, к примеру, восьмизначный адрес.

Рабочие значения остальных четырех параметров операторов GET и PUT должны быть такими, чтобы весь кадр попадал в пределы экрана. Допустимые значения вертикальной координаты совпадают с рабочими, а горизонтальной позволяют однократный переход правой части кадра, не поместившегося целиком на экране, на левую сторону экрана. Нулевых значений высоты и ширины кадра операторы GET и PUT не любят (вплоть до зависания программы).

Прежде чем приступить к использованию оператора GET, нужно зарезервировать с помощью CLEAR участок памяти иод буфер. Сделать это можно и «с запасом», но в принципе минимальный необходимый объем памяти для буфера (в байтах) легко рассчитывается. Он равен 9-кратному произведению ширины на высоту кадра, выраженных в «старых» знакоместах (8x8 точек).

Пример работы с операторами GET и PUT, несмотря на свое шутливое содержание, на самом деле представляет собой весьма практичную подпрограмму вызова оверлейного меню:

10 CLEAR 29999:FONT_1 :CURRENT_4: PAPER 0: INK 0:CLW_4,0: LET

L=4: LET S=4: LET H=12: LET G=24:WINDOW_L,S*2,H,G*2 20 MODE_2: PRINT PAPER 0; INK 0;AT 1,16;"M E H Ю" ' ' "На закуску — Селедочка" ' "На первое — Щи с грибами" ' "На второе — Бифштекс по-деревенски" ' "На третье — Бланманже" ' ' "Напитки в ассортименте" 30 PAPER 7:GET_4,30000,L,S,H,G

40 CURRENT_2:MODE_4:STIPPLE_W: FOR N=1 TO 30: PRINT INK

(1+RND*6);"y>Ke несут меню!": NEXT N 50 LET L1=1+RND*4: LET S1=1+RND*4:GET_0.35200fL1fS1lHlG 60 PUT_0,30000,L1,S1fH,G: PAUSE 500 70 PUT_0,35200,L1 ,S1 ,H,G 80 PAUSE 120: GO TO 40

В MegaBasic существует еще один оператор (SPUT), который как и PUT, переносит кадр из буфера на экран. Но делает он это с изменением масштаба. Оператор SPUT тянет за собой рекордное количество параметров — целых семь:

SPUT_z,x,y,u,v,g,h

Некоторые из параметров совпадают с параметрами операторов GET и PUT, другие напоминают параметры SPRINT (см. стр. 208). Первый параметр (z) указывает адрес буфера. Параметры х и у задают координаты размещения верхнего левого угла кадра на экране. Координаты указываются не в знакоместах, как для предшествующего оператора GET, а в пикселях (за начало координат принимается верхний левый угол экрана). Следующие два параметра оператора SPUT (и и v) определяют масштабы увеличения выводимого изображения, соответственно, по горизонтали и вертикали. Наконец, параметры g и h, как и в операторах GET и PUT, определяют размер (высоту и длину) исходного кадра Нов операторе SPUT они задаются необычным образом: в то время как g указывается в знакоместах, h задается в пикселях, то есть в 8 раз превышает значение, подставленное в предшествующий оператор GET. Оператор SPUT всегда выводит изображение в постоянных атрибутах, то есть так, как если бы в операторе PUT использовался режим т=4.




СОДЕРЖАНИЕ:
  1. Laser Basic - Вывод спрайтов на экран; Вывод на экран части спрайта; Перенос атрибутов; Преобразование окна экрана; Наборы переменных; Перемещение спрайтов; Наложение спрайтов; Копирование изображения с экрана в спрайт; Преобразование спрайтов; Скроллинг пейзажа; Изменение размеров области спрайт-файла; Вспомогательные графические операторы и функции; Определение столкновений спрайтов; Сервисные операторы и функции; Процедуры; Загрузка и запись программ.


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

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



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

Похожие статьи:
Горячая линия - Сайт "ZX-News"! Плюс кое-что по SOSG.
Lits - история образования Ростовской ассоциации PartyZans.
Заключение - авторы и т.д.
С битой по миру - размышления на тему "спектрум умрет только тогда, когда уйдет последний спектрумист".
История - Хакеры - статья "ОНО" - об истории появления хакерства.

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