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

Пакет процедур SUPERCODE - описание подпрограмм SUPERCODE. Экран. Окна. Расширение набора команд Бейсика.


Для каждой подпрограммы в описании приводятся ее номер и
название. Для процедур в машинных кодах указывается адрес
запуска, всегда совпадающий с адресом размещения в памяти, для
таблиц (знакогенераторов и т. д.) — адрес размещения (приводит-
ся в квадратных скобках).

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

Подпрограммы выполняют нециклический скроллинг экран-
ной картинки без атрибутов (изображение, «уезжая», про-
падает) .

Подпрограмма позволяет получить довольно интересный эф-
фект: изображение, двигаясь влево, постепенно стирает гори-
зонтальные линии. Эта подпрограмма, наверное, использова-
лась бы чаще, если б не работала столь медленно.

Необходимо учитывать, что подпрограммы 6, 1 2 и 48 сами не
сдвигают атрибуты, и для сохранения раскраски экрана после
их выполнения необходимо вызывать соответствующие под-
программы сдвига атрибутов в окне, определив окно во весь
экран (см. стр. 158). Процедуры 6 и 12 выполняют как цик-
лический («уезжающее» за пределы экрана изображение по-
является с противоположной стороны), так и нециклический
скроллинг, в зависимости от значения параметра настройки
(см. также стр. 152).

Подпрограмма окрашивает в цвет фона все точки экрана,
имеющие цвет тона, и наоборот, точки фона перекрашивает
в тон.

Подпрограммы 28, 30. ..35, 41, 74, 75и 89 изменяют значения
атрибутов всех знакомест экрана.

Изменение цвета тона всего экрана

Изменение цвета фона всего экрана

Для настройки подпрограмм 30 и 31 по указанным в таблице
адресам заносится код требуемого цвета:

Процедуры 32...35 устанавливают атрибуты FLASH и BRIGHT во
всех знакоместах экрана.

Подпрограмма ищет знакоместа, в которых атрибуты совпа-
дают со значением, занесенным в ячейку 65257, и присваи-
вает им значения атрибутов, записанные в ячейку 65258.
Скажем, можно заменить все немерцающие, неяркие знако-
места с черным тоном и белым фоном на мерцающие, яркие
с синим тоном и желтым фоном. О кодировке атрибутов см.
раздел «Запуск процедур Supercode из Бейсика», стр. 152.

Подпрограммы 74 и 75 переключают значения атрибутов
BRIGHT и FLASH, то есть в знакоместах, в которых они были
включены — выключают, а в знакоместах, в которых они
были выключены — включают.

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

Для подпрограмм 22 и 23 высота окна задается в пикселях
верхняя граница окна должна совпадать с границей одной из
третей экрана (0-я, 64-я или 128-я пиксельные строки, при
этом по указанному в таблице адресу следует записать, соот-
ветственно, числа 64, 72 или 80). Левая граница и ширине
окна задаются в знакоместах.

Отметим, что подпрограмма 23 является составной частью
подпрограммы 22. Поэтому, если вы собираетесь использо-
вать их одновременно, достаточно иметь в своем распоряже-
нии лишь подпрограмму 22.

Обратите внимание на то, что настройку подпрограмм 22 и
23 необходимо выполнять перед каждым их запуском!

Параметры окна

Адрес

Левая граница окна (в знакоместах)

58679

Верхняя граница окна (64, 72, 80)

58680

Ширина окна (в знакоместах)

58682

Высота окна (в пикселях)

58681

Параметр

Адрес

Код символа для заполнения

64829

Высота окна (в знакоместах)

64831

Ширина окна (в знакоместах)

64834

Верхняя граница окна (в знакоместах)

64832

Левая граница окна (в знакоместах)

64835

Перед вызовом подпрограммы 24 для ее нормальной работы
необходимо выполнить оператор PRINT ; (что не отражено во
«встроенном» в Supercode описании).

Преобразования атрибутов в окне

36 ATTR FILL_64982

Смена атрибутов в окне

37 ATTR UP-SCROLL_65026

Нециклический скроллинг вверх атрибутов в окне

38 ATTR DOWN-SCROLL_65081

Нециклический скроллинг вниз атрибутов в окне

39 ATTR LEFT-SCROLL_65204

Нециклический скроллинг влево атрибутов в окне

40 ATTR RIGHT-SCROLL_65143

Скроллинг вправо атрибутов в окне

Размеры и положение окна для процедур 36...40 задаются в
знакоместах. Отсчет координат производится так же, как и для
функции AT, начиная с верхнего левого угла экрана. Проце-
дура 36 заменяет атрибуты в указанном окне на новые. При
выполнении нециклического скроллинга процедурами
37...40, после сдвига «освободившимся» знакоместам присва-
иваются атрибуты заполнения, значения которых заносятся
по адресам, указанным в таблице:

Номер подпрограммы

36

37

38

39

41

Атрибуты заполнения

64983

65027

65082

65205

65144

Верхняя граница окна

64986

65030

65085

65208

65147

Левая граница окна

64985

65029

65084

65207

65146

Ширина окна

64988

65032

65087

65210

65149

Высота окна

64989

65033

65088

65211

65150

Процедура 40 выполняет как нециклический (параметр 0),
так и циклический (26) скроллинг. Эти параметры заносятся
по адресу 65186.

Подпрограммы этой группы позволяют быстро менять экранные
картинки: записывать в память компьютера необходимое количест-
во (сколько поместится) изображений размером в экран — теневых
картинок — и вызывать их на экран в требуемой последо-
вательности.

Подпрограмма накладывает картинку, находящуюся в памя-
ти, на экранное изображение с сохранением атрибутов преж-
него экрана. Адрес размещения теневой картинки записыва-
ется в ячейки 63980/81.

Наложение экрана осуществляется по принципам OR, AND
или XOR. Адрес настройки — 63986:

Принцип

Параметр

OR

182

AND

166

XOR

174

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

10 CLEAR 39999: LET Х=40000: REM Адрес размещения экрана
20 CLS: PLOT 100,100: DRAW 30,30,2000: REM Нарисовали дугу
30 РОКЕ 64745,(X—INT(X/256)*256): РОКЕ 64746,INT(X/256):
RANDOMIZE USR 64744: REM Сохраним экран в памяти

40 CLS: PRINT"BASIC RESTORE PROGRAMM": PAUSE 0: FOR 1=40000

TO 46912: POKE 16384,PEEK I: LET 1=1+1: NEXT I
50 PAUSE 0: CLS: PRINT"ASSEMBLER SUBROUTINE": PAUSE 0: POKE
64745,(X-256*INT(X/256)):POKE 64746, INT(X/256): RANDOMIZE
USR 64756

Процедуры, описываемые в этом разделе, расширяют возможно-
сти стандартного Spectrum-Бейсика. Кроме этого, в рассматривав-

Особенностью этой подпрограммы является сильная зависи-
мость получаемого эффекта от тактовой частоты компьютера.

Параметр

Адрес

Значения

Ширина полос

60029

1 ...255

Цвет полос

60020

0...7

Длительность эффекта

60006

1 ...127

Перед выполнением этой подпрограммы надо оператором
PLOT поместить точку внутрь замкнутой фигуры, нарисован-
ной на экране, а по адресу 59293 записать значение атрибу-
тов заливки.

В этой инструкции описано, как с помощью обычного опера-
тора DRAW можно строить кольца и многолучевые звезды.
Поместите оператором PLOT точку вблизи середины экрана, а
затем выполните DRAW X,Y,N, с параметрами X и Y от 10 до 60,
а N от 1000 до 9999, и вы получите самые разнообразные
фигуры. Поэкспериментируйте' с различными сочетания-
ми X, Y, N.

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

10 LET X=10+INT(RND*50): LET Y=10+INT(RND*50):

LET N=999+INT(RND*9000)
20 PLOT 100,100: DRAW X,Y,N: PAUSE 0: CLS: GO TO 10

Для разрешения вывода информации с помощью оператора
PRINT во все строки экрана (включая две нижние) надо выпол-
нить оператор РОКЕ 23659,0. Необходимо помнить, что при
этом любая попытка интерпретатора Бейсика вывести инфор-
мацию (в том числе сообщение 0 ОК) в служебный экран
(нижние две строки) приведет к зависанию компьютера. Для
перехода к обычному режиму вывода надо выполнить
РОКЕ 23659,2.

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

Процедура возвращает код символа из текущей позиции пе-
чати. Знакоместо, из которого будет считан код, задается
оператором PRINT AT X,Y;. Код символа записывается в пере-
менную Z, если процедура была запущена оператором
LET Z=USR 60039. В отличие от бейсиковской функции SCREEN$,
данная процедура распознает символы не только системного
знакогенератора, но и любого текущего фонта.

Процедура выводит указанный символ на экран с заданием
его положения и атрибутов знакоместа. Параметры INK и
PAPER могут принимать значения 0...7; параметры FLASH,
BRIGHT, INVERSE, OVER — значения 0 или 1; параметр AT —
0...21 и 0...31. Выводимый символ задается кодом от 32
до 164.

Параметр

Адрес

INK

63732

PAPER

63738

FLASH

63744

BRIGHT

63750

INVERSE

63756

OVER

63762

AT

63768/71

Код

63774

Для нормальной работы подпрограммы, перед ее вызовом
необходимо выполнить оператор PRINT ; (что не отражено во
«встроенном» в Supercode описании).

Помещает случайное двухбайтовое число в системную пере-
менную SEED (адрес 23670/71). Для вызова этой подпрог-
раммы необходимо использовать оператор LET X=USR 63777.

После запуска этой процедуры в случае возникновения оши-
бок при выполнении бейсик-программы (то есть в ситуациях,
приводящих к выдаче сообщений) работа программы не пре-
рвется — управление будет передано бейсик-строке с номе-
ром, записанным в ячейках 60878/79. По умолчанию номер
строки перехода при возникновении ошибки установлен рав-
ным 9495. Код ошибки заносится по адресу 23681.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Bugs! - какае-та хрень сожрала первую полосу экрана, тоесть самые верхний ряд pixels.
ZX-Обзор - Фантастический рейтинг литературы.
Clive Sinclair - Страницы из жизни создателя Спектрума: Клайва Синклера.
Список BBS - Список работающий BBS.
Пользователям - программирование звуковых эффектов.

В этот день...   24 апреля