Для каждой подпрограммы в описании приводятся ее номер и
название. Для процедур в машинных кодах указывается адрес
запуска, всегда совпадающий с адресом размещения в памяти, для
таблиц (знакогенераторов и т. д.) — адрес размещения (приводит-
ся в квадратных скобках).
Параметры настройки и адреса ячеек, в которые эти параметры
должны быть записаны, обычно помещаются в таблицы. Поскольку
некоторые «подпрограммы» пакета 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.