СОЗДАНИЕ СПРАЙТОВ
В этом разделе мы расскажем о двух программах
— генераторах спрайтов: Sprite Generator (SPTGEN) из фирменного
пакета Laser Basic и Spriter59,
написанной автором этой главы. Обе программы предназначены для создания
спрайт-файла — кодового файла, содержащего набор спрайтов,
готовых для использования в Laser Basic.
Основное различие описываемых генераторов
спрайтов в том, что фирменная программа SPTGEN ориентирована на
создание изображения «с нуля» по точкам, a Spriter
позволяет использовать для этого готовые картинки, нарисованные в любом
графическом редакторе для ZX Spectrum (Art Studio, Artist II и другие)
или даже позаимствованные из фирменных «игрушек». Как нам
кажется, в этом смысле Spriter удобнее, так как специальные графические
редакторы обладают гораздо большими возможностями для формирования
картинок, чем SPTGEN. Кроме того, SPTGEN позволяет создавать спрайты с
максимальным размером только 15x15 знакомест, a Spriter — 32x22,
то есть почти во весь экран. Однако у каждого свой вкус, поэтому мы
подробно опишем обе программы.
Программа SPTGEN_
Фирменный генератор спрайтов, по сути, является
примитивным графическим редактором. Процесс создания спрайт-файла с
помощью SPTGEN выглядит так:
1. оперируя клавиатурой, пользователь создает рисунок одного знакоместа;
2. рисунок знакоместа помещается в спрайт;
3. построенный из отдельных знакомест спрайт записывается в память;
4. несколько спрайтов сохраняются в виде спрайт-файла на диске или ленте.
Загружается спрайт-генератор оператором LOAD
"SPTGEN". В нижней строке экрана появляется запрос: COLD OR WARM START?
(«холодный» или «теплый» старт?). При
«холодном» старте программа запускается «с
нуля», то есть очищается область спрайт-файла.
«Теплый» старт используют для продолжения работы после
случайного или намеренного выхода из SPTGEN в Бейсик. В этом случае
нужно выполнить оператор GO ТО 2 и выбрать «теплый» старт,
нажав клавишу W. Таким образом можно сохранить в памяти спрайт-файл (но
не экранную картинку, ее придется рисовать заново).
Сразу после загрузки программы нужно
осуществить «холодный» старт, то есть нажать клавишу С.
Затем на новый запрос: COLD START (Y/N), чтобы подвердить
«температуру старта», придется нажать клавишу Y. Программа
SPTGEN вообще очень недоверчива и постоянно требует от пользователя
подтверждения его действий. Наконец, после окончания диалога, на экране
появится картинка (рис. 17).
Колонка
'ink. . .ai
^jPftPER.7 атрибутов iBRIGHTC
Активное окно
"екущих
,wr IT С 00000
(SPST . . 65279 jSPND . , 65279
_ PC __
Э1ТЕ MEIG... _ SPRITE LENOTH-3 SPRITS NUMBER-1
F."c. 17. Рабочий экран генератора спрайтов SPTGEN.
Большой квадрат размером 15x15 знакомест в правом верхнем углу — это рабочее поле, в котором формируется спрайт. Спрайт с заданным номером будем называть текущим спрайтом. В правом верхнем и лев<?м нижнем углах рабочего поля мигают два курсора: вертикальный и горизонтальный. Знакоместо, расположенное на пересечении этих курсоров, назовем активным знакоместом. Его увеличенное изображение, именуемое увеличенным знакоместом, находится левее рабочего поля. В рабочем поле выделяют активное окно,
верхний левый угол которого совпадает с активным знакоместом, а ширина
и высота задаются соответствующими командами. Еще левее — столбец
текущих атрибутов. Внизу размещены информационные строки:
MEMORY LEFT - свободный объем памяти
для размещения спрайтов (в байтах);
X POS, v POS - горизонтальная и вертикальная координаты курсора рабочего поля (1... 15);
SPRITE - начальный адрес размещения
в памяти текущего спрайта;
SPRITE HIGHT - высота активного окна (в знакоместах);
SPRITE LENGHT - ширина активного окна (в знакоместах);
SPST - начальный адрес спрайт-файла в памяти
(сразу после загрузки — 65279);
SPND - конечный адрес спрайт-файла;
SPRITE NUMBER - номер текущего спрайта (1 ...255).
Теперь более подробно расскажем о том, как работать с программой SPTGEN.
Создание и редактирование изображения в увеличенном знакоместе.
Перед началом создания новых спрайтов желательно подготовить на
разграфленном листе бумаги «проекты» их изображений. Это
намного упростит и ускорит работу. Ведь в SPTGEN спрайты строятся из
отдельных кирпичиков — знакомест, и удержать в голове весь
«проект» (то есть как будет выглядеть спрайт целиком)
достаточно сложно. Прорисовка знакомест идет в увеличенном знакоместе:
клавишами 5, 6, 7, 8 выбирается требуемый пиксель, клавишами 9 и 0 он,
соответственно, включается и выключается.
Перенос изображения на рабочее поле. Копирование увеличенного знакоместа в активное знакоместо осуществляется по команде (клавише) J. Позиция активного знакоместа устанавливается клавишами SS/5, SS/6, SS/7, SS/8.
По команде К ранее созданное знакоместо возвращается на редактирование,
либо по команде Q стирается. При желании можно очистить и все рабочее
поле (SS/Q).
Метод прямого ввода данных. Создать элемент изображения спрайта можно, и не прибегая к построениям в увеличенном знакоместе. После нажатия клавиши D программа SPTGEN позволяет последовательно, по нажатию Enter,
ввести восемь значений: восемь байт данных, соответствующих одному
знакоместу (как при построении символов, определяемых пользователем).
Значения, естественно, должны лежать в пределах 0...255 (десятичные)
или H00...HFF (шестнадцатеричные). Изображение побайтно переносится в
активное знакоместо рабочего поля.
Управление атрибутами.
При переносе изображения из увеличенного знакоместа на рабочее поле и
обратно ему (изображению) могут присваиваться текущие атрибуты, а могут
и не присваиваться — все зависит от того, какой режим был задан:
нажатие клавиш А, затем 1 (то есть А+1) разрешает перенос атрибутов, А+0 — запрещает.
Значения текущих атрибутов устанавливаются клавишами X (цвет тона: 0...7), С (цвет фона: 0...7), В (яркость: 0, 1) и V (мерцание:
0, 1). Кроме такого последовательного способа определения текущих
атрибутов, в процессе работы их можно изменить все одновременно,
присвоив им значения атрибутов активного знакоместа (клавиша U).
Возможна и обратная операция: заполнение активного знакоместа текущими
атрибутами (клавиша I).
Операции в активном окне.
В процессе создания спрайта его изображение на рабочем поле можно
трансформировать. Операции над изображением осуществляются в пределах
активного окна, верхний левый угол которого определяется положением
активного знакоместа, то есть курсорами рабочего поля, а высота и
ширина задаются, соответственно, командами Н (1...255) и L (1...255). Границы активного окна постоянно на экране не отображаются, но их всегда можно увидеть, удерживая клавишу F, — изображение в пределах окна начинает мерцать.
Из всевозможных операций над изображением в
SPTGEN реализованы лишь самые элементарные: циклический скроллинг
вправо, влево, вверх и вниз (команды, соответственно, SS/I, SS/T, SS/U и SS/Y), инверсия (клавиши Е+1), зеркальное отображение картинки (E+2) и атрибутов (E+3) относительно вертикальной оси окна.
Запись спрайта. Спрайт с текущим номером
записывается в память (в спрайт-файл) нажатием клавиши G. Размеры его
определяются границами активного окна. Перед записью необходимо
проверить правильность совмещения окна с изображением (клавиша F).
Изменение номера текущего спрайта
осуществляется по команде S (1...255). Если указывается уже
существующий номер, будет выдано сообщение о совпадении номеров.
При записи по команде G ранее существующий в
спрайт-файле спрайт с текущим номером заменяется новым. При
необходимости изображение старого и созданного спрайтов можно
совместить. Делается это с помощью команды О, реализующей три принципа
наложения: OR, XOR и AND (см. стр. 164), которые задаются,
соответственно, нажатием одной из клавиш: 1, 2 или 3, после О.
Изображение с рабочего поля может переноситься
в память как с текущими атрибутами, так и без них, в зависимости от
того, разрешен или запрещен перенос текущих атрибутов (команда А+1 или
А+0).
Проверить правильность записи спрайта в память
или вызвать его на редактирование можно клавишей Р. По этой команде
текущий спрайт из памяти копируется в активное окно.
С помощью нажатия клавиши Space можно наложить
изображение активного окна на спрайт с текущим номером. Конечно, это
возможно, только если размеры окна меньше размеров спрайта в памяти.
Команда запрашивает координаты знакоместа в спрайте, куда будет
наложено изображение (INPUT COLUMN, INPUT ROW). Принцип наложения
задается нажатием одной из клавиш:
1 - окно перемещается в спрайт, затирая фон;
2 - наложение по принципу OR;
3 - наложение по принципу XOR;
4 - наложение по принципу AND.
При необходимости можно создать и пустой спрайт
с шириной и высотой, заданными пользователем в интервале от 1 до 255
знакомест (команда SS/C). Размеры спрайта вводятся на запросы INPUT
LENGHT, INPUT MIGHT.
Преобразование спрайтов в памяти. SPTGEN
позволяет трансформировать спрайты не только на экране, но и в памяти.
Команда М выполняет тот же минимум преобразований с текущим спрайтом в
памяти, что и команда Е с изображением в активном окне: инверсия (М+1),
зеркальное отображение изображения (М+2) и атрибутов (М+3) относительно
вертикальной оси окна.
Кроме того, программа предоставляет возможность
скопировать текущий спрайт, повернутый на 90°, в спрайт с другим
номером — команда R. Номер второго спрайта вводится на запрос программы.
По команде W происходит удаление из
спрайт-файла текущего спрайта. При этом все спрайты, находящиеся в
памяти ниже изъятого, поднимаются вверх, занимая свободное пространство.
Команда тестирования спрайтов Т (аналогичная функции ?TST) выводит на экран параметры текущего спрайта: в графы SPRITE
HIGHT и SPRITE LENGTH — его высоту и ширину, в графу SPRITE — адрес его размещения в памяти.
Запись и загрузка спрайт-файла. После создания
спрайт-файла можно записать его на ленту или диск, нажав клавиши SS/S.
Программа выдаст запрос о формате записи (OPTION1 — OPTION2), в
ответ на который требуется нажать клавишу 1 или 2:
1 - спрайт-файл записывается в формате, допускающем пос
ледующую загрузку файла в SPTGEN и редактирование, но исключающем возможность использования его в программах на Laser Basic;
2 - спрайт-файл записывается в формате для использования в
программах, но его уже «не возьмет» генератор спрайтов.
После задания формата записи спрайт-файла на
соответствующий запрос вводится его имя. Нужно нажать одну из пяти
клавиш: 1, 2, 3, 4, и 5. Соответственно, спрайт-файл запишется под
именем "1", "2" и т. д.
Перед записью в информационной строке появится сообщение о нижней границе спрайт-файла:
FILE = N ADDRESS = ХХХХХ
- где N — имя (номер) спрайт-файла, а
ХХХХХ — его нижняя граница (START). Это значение следует
запомнить: именно его необходимо вводить при загрузке спрайт-файла с
помощью программы-диспетчера Laser.
После записи спрайт-файла автоматически
выполняется оператор сравнения VERIFY. Если при сравнении произойдет
сбой, программа «вываливается» в Бейсик. Для возврата в
SPTGEN с сохранением спрайт-файла нужно выполнить оператор GO ТО 100.
Загружаются спрайт-файлы с ленты или диска по команде SS/J. После нажатия клавиши программа выдаст серию запросов:
LOAD SPRITES FROM ТАРЕ (Y/N) (загрузить с ленты?)
LOAD SPRITES FROM DISK (Y/N) (загрузить с диска?)
INPUT SPRITE FILE (1-5) (введите имя спрайт-файла)
После загрузки спрайт-файла находящиеся в памяти спрайты, естественно, стираются.
Программа Spriter60
Генератор спрайтов Spriter позволяет создавать
спрайты размером до 32x22 знакомест и формировать спрайт-файл длиной до
26 килобайт Готовые спрайт-файлы и экранные файлы загружаются в
компьютер и записываются на ленту или диск непосредственно в процессе
работы. В программе используется один формат записи спрайт-файла,
допускающий и последующее редактирование файла в генераторе, и
использование его в программах на Laser Basic.
Алгоритм создания спрайт-файла программой Spriter. Картинки спрайтов рисуются в любом графическом редакторе61. Затем экранный файл со спрайтами записывается на ленту или диск. Естественно, можно пользоваться и готовыми экранными файлами.
С помощью программы Spriter спрайты
«снимаются» с экрана и помещаются в спрайт-файл, который
затем может быть записан на ленту или диск.
Программа загружается оператором LOAD
"SPRITER". Сразу после загрузки появится запрос о типе магнитного
накопителя: Таре or Disk (T/D). Для работы с магнитофоном нажимается
клавиша Т, с дисководом — D.
Далее, на запрос: Screen name?, вводится имя экранного файла с изображениями спрайтов.
После загрузки экранного файла в двух нижних
строках появляется информация о текущих параметрах, которая будет
постоянно находиться перед глазами:
.SPN - номер текущего спрайта;
.HGT - высота активного окна (в знакоместах);
.LEN - ширина активного окна (в знакоместах);
START - адрес начала спрайт-файла (нижняя граница);
LENGHT - длина спрайт-файла.
В верхнем левом углу экрана размещается
активное окно. Оно задает границы спрайтов, переносимых в память.
Размеры окна — ширина и высота — легко изменяются
следующими клавишами:
CS/5 - уменьшение ширины активного окна на знакоместо;
CS/6 - увеличение высоты активного окна на знакоместо;
CS/7 - уменьшение высоты активного окна на знакоместо;
CS/8' - увеличение ширины активного окна на знакоместо.
Клавишами 5, 6, 7 и 8 весь экран циклически
прокручивается по четырем направлениям с шагом в одно знакоместо. Таким
образом, любой фрагмент экрана может быть помещен в активное окно, а
оттуда перенесен в память в виде спрайта. При этом, соответственно,
изменится содержание информационных строк. При изменении размеров
активного окна и выполнении некоторых других операций размеры окна
индицируются инверсией.
Управляющие клавиши программы Spriter:
N - ввод нового номера текущего спрайта (.SPN). Допускаются значения от 1 до 2 55;
G - создание спрайта с номером .SPN — копирование изображения из активного окна в спрайт-файл;
Р - перенос спрайта с номером .SPN из памяти в активное окно;
D - стирание (удаление из спрайт-файла) спрайта с номером .SPN;
С - загрузка нового экранного файла с ленты или диска. На запрос Screen name? вводится имя экранного файла;
S
- запись готового спрайт-файла на диск или ленту. Перед записью следует
запомнить значение переменной START, индицируемое в информационной
строке (нижняя граница спрайт-файла). Оно потребуется при загрузке
спрайт-файла с помощью программы-диспетчера Laser;
L - загрузка спрайт-файла для редактирования. Перед загрузкой в ответ на запрос Starting address.7
следует ввести адрес нижней границы загружаемого спрайт-файла. При
загрузке нового спрайт-файла спрайты, ранее занесенные в память, будут
утрачены;
V - показ границ активного окна;
В
- выход в интерпретатор Laser Basic. Команда может понадобиться для
выполнения других инструкций Laser Basic, не предусмотренных
генератором спрайтов.
Любой запрос может быть отменен, если в ответ
на него просто нажать Enter. Исключение составляет запрос Starting
address?, который отменяется вводом недопустимого значения стартового
адреса (меньше 30000 или больше 56575).
В процессе работы в нижней строке экрана будут
появляться сообщения, понятные любому программисту, так как в них
используется не более десятка английских слов.
Если при работе Вы случайно (или нарочно)
«вылетите» в Бейсик, то вернуться в программу можно, дав
команду GO ТО 0 или RUN. При этом спрайт-файл сохраняется, но картинка
на экране не восстановится.
Создание спрайтов больших размеров
6. задать помор и размеры добавляемого спрайта « знакоместах, выполнив операторы .SPN=N:.LEN=L:.HGT=H;
7. выполнить следующие несколько строк:
10 LOAD "SCREENXODE 16384,6912: REM Загрузка экрана 20 .ISPR: REM Увеличение размеров спрайт-файла 30 .GTBL: REM Запись спрайта
8. определить новую нижнюю границу спрайт-файла: LET START=?PEK 62464
9. сохранить модифицированный спрайт-файл: SAVE "SPRITES"CODE START, 56575-START
- где START — новая нижняя граница спрайт-файла.
Описанным выше методом можно создать спрайт
размером не больше экрана — 32x24 знакоместа. Преодолеть это
ограничение позволяет другой метод. Рассмотрим его на примере создания
спрайта длиной в 96 и высотой в 3 знакоместа в готовый спрайт-файл
(использование такого спрайта описано в разделе «Скроллинг
пейзажа» на стр. 169).
Предварительно нужно нарисовать спрайт в
графическом редакторе, разместив его на экране в три полосы высотой по
3 знакоместа и длиной в 32 столбца. Первая полоса должна начинаться с
верхней строки экрана, между полосами не должно быть пробелов.
Далее необходимо выполнить последовательность действий, описанную выше, дополнив программку из пункта 7 следующими строками:
30 .LEN=31:.HGT=3:.COL=0
40 .ROW=0:.SCL=0:.GWBL: REM Перенос в спрайт 1-й полосы 50 .ROW=3:.SCL=31:.GWBL: REM Перенос 2-й полосы 60 .ROW=6:.SCL=62:.GWBL: REM Перенос 3-й полосы
КОМПИОГОР
Компилятор Laser Basic преобразует исходную
бейсик-програм-му в некую конструкцию из кодов с целью сделать
программу независимой от интерпретатора и повысить скорость ее работы.
Однако, хотя программа после компиляции и
освобождается от опеки интерпретатора, она попадает в другую кабалу не
может работать без присутствия в памяти пакета рабочих процедур
компилятора. Но обычно заботиться о размере программы не приходится*
любая программа, написанная в интерпретаторе Laser Basic, сможет быть
обработана компилятором*.
Компилятор Laser Bisic может транслировать и стандартные бейсик-программы но бет особо! о выи» пышз в скорости
Ограничения на текст исходной программы
Основное, на что стоит обратить кии мание при
работе с компилятором, — это ограничения, накладываемые им на
использование в компилируемой программе операторов Spertruni-Ьейгика.
• запрещается использование операторов CLEAR, MERGE, CONTINUE, LIST, LLIST;
• операторы LOAD, SAVE, VERIFY
допускаются только при условии, что они загружают или записывают на
ленту откомпилированную программу (то есть они не могут работать,
например, с некомпилированной программой, с кодовыми блоками). Команды
обращения к диску в системе T'R-DOS не выполняются вообще;
• в операторах RUN, GO ТО, GO SUB,
RESTORE допускаются только целочисленные параметры (нельзя использовать
переменные и выражения);
• оператор RUN работает как обычно, но не производит очистки переменных;
• в операторе INPUT не допускается использовать ключевое слово LINE;
• операторы OPEN# и CLOSE# работают только с потоками "S" и "Р";
• если в цикле FOR...NEXT содержится оператор Laser Basic,
то конечное значение параметра цикла не должно быть меньше начального
при положительном значении STEP или превосходит!. его при отрицательном
STEP, то есть цикл должен быть выполнен хотя бы один раз. Пример.
10 LET s=RND*10
20 FOR n=5 TO s:.INVV: NEXT n
Во избежание ошибок в указанный фрагмент следует вставить одну дополнительную строку:
15 IF s<5 THEN GO ТО 10
Текст исходной программы сохраняется на магнитном носителе оператором SAVE "NAME".
Обратите внимание, что для нормальной работы
скомпилированной программы исходная бейсик-программа должна стартовать
с первой строки.
Компиляция
При компиляции в памяти компьютера должны находиться только текст исходной программы и сам компилятор.
Прежде всего нужно «сбросить»
компьютер, выполнить CLEAR 59799 и оператором LOAD "NAME" загрузить
исходную программу. После этого оператором LOAD "COMPCODE" CODE
загружается компилятор.
Компиляция запускается оператором RANDOMIZE USR 59800.
Во время компиляции экранная область
используется в качестве буфера, полому в верхних строках экрана
отображается случайная информация. По окончании компиляции экран
очистится и внизу появится сообщение типа 0 ОК, 1000:1, которое
означает, что все нормально, компиляция закончилась на строке 1000.
Остается только сохранить полученный файл оператором SAVE "NAMEcomp"
LINE 1. Перед записью не следует выполнять оператор CLEAR.
Полученный файл не поддается редактированию ни средствами стандартного Бейсика, ни средствами Laser ISasic, поэтому есть смысл сохранить исходную (некомпилированную) программу.
Мели взглянуть на листинг откомпилированной программы, то мы увидим всего 2-3 строки. Первая
О PRINT 0
содержит информацию для пакета рабочих процедур и не выполняется. Вторая строка
0 RANDOMIZE USR 59800
запускает откомпилированную программу.
Если в исходной программе имеются функции,
определяемые пользователем, то их список помещается в третьей строке с
номером 0. Все операторы DATA помещаются в четвертую строку, также с
номером 0.
К сожалению, компиляция не всегда заканчивается
сообщением 0 ОК. Она может быть прервана с выдачей номера строки, в
которой встретилась ошибка, и одного из следующих сообщений.
Illegal statement found ___________________________
обнаружен один из недопустимых операторов: CLEAR, MERGE, LIST,
LLIST или CONTINUE;
Procedure definition nesting error
найдено два описания процедуры подряд без оператора .RETN
между ними;
RETN without PEF in error________________
найден оператор .RETN без соответствующего описания процедуры,
Procedure not found
обращение к неописанной процедуре.
Загрузка откомпилированной программы
Для загрузки и запуска откомпилированной программы необходима отдельная программа-загрузчик, написанная на Spectrum-Бейсике.
Стандартный, универсальным загрузчик содержится в файле "LOADER":
10 CLEAR 59799:REM Пространство под рабочие процедуры62 20 LET spst=XXXXX: REM Нижняя граница спрайт-файла (START) 30 LOAD "RTCODE" CODE: REM Загрузка рабочих процедур 40 LOAD "SPRITES" CODE spst: REM Загоузка спрайт-файла 50 LET t=INT(spst/256) : POKE 62464, (spst-256*t): poke 62465, t:
REM Указание адреса начала области спрайтов 60 РОКЕ 62466,255 : РОКЕ 62467,220: REM Указание адреса конца
области спрайтов 70 РОКЕ 56575,0: REM Метка конца области споайтов 80 LOAD "NAMEcomp": REM Загрузка откомпилированной программы
Для работы с этим загрузчиком необходимо только задать конкретные значения:
в строке 20 — адрес нижней границы
спрайт-файла (START); в строке 40 — имя спрайт-файла; в строке 30
— имя откомпилированной программы.
Во многих случаях загрузчик можно (и нужно) упростить.
Вариант 1. Если в программе не используются спрайты и нет кодовых частей, то загрузчик сократится до 4 строк:
10 CLEAR 59799 20 LOAD "RT CODE" CODE 30 POKE 56575,0 40 LOAD "NAMEcomp"
Вариант
2. При необходимости подгрузки сирайт-файла, например, с именем
"SPRITES" и стартовым адресом 40000, загрузчику можно придать
«конкретный» вид:
10 CLEAR 39999: REM START—1 20 LOAD "RT CODE" CODE 30 LOAD "SPRITES" CODE 40000
40 POKE 62464,64: POKE 62465,156: REM 40000=64+256x156 50 POKE 62466,255: POKE* 62467,220: REM 56575=255+256x220 60 POKE 56575,0 70 LOAD "NAMEcomp"
Вариант
3. Может случиться, что для работы откомпилированной программы
необходимы кодовые блоки, например, второй знакогенератор или
подпрограмма в машинных кодах. Чтобы найти для них место, рассмотрим
верхнюю часть памяти ZX Spectrum (табл. 1 1).
Таблица П. Распределение памяти в присутствии откомпилированной программы.
P_RAMT (23732)- 65535
Процедуры компилятора "RT CODE" - 59800
Свободная область
END- 56575
Область спрайтов
START -
RAMTOP=START-1 (23730) -EJJNE (23641)-VARS (23627) -PROG (23635) -
Переменные Бейсика
Бейсик-программа
Как видно из приведенной таблицы, между
областью спрайтов и пакетом процедур "RT CODE" имеется около 3 килобайт
свободной памяти, начиная с адреса 56576. Проще всего поместить кодовые
части именно в эту область. При этом в текст загрузчика (модифицируем
2-й вариант) добавим строку:
15 LOAD "YOURCODE" CODE 56576: REM Загрузка кодового файла
Несколько сложнее размещать кодовые части, если
их длина превышает 3 килобайта. Место под кодовые части можно
зарезервировать, вставив в спрайт-файл при его формировании пустой
спрайт, то есть спрайт, не несущий никакой информации. Размер и адрес
начала пустого спрайта можно определить при его создании в генераторе
спрайтов или с помощью функции ?TST. А строка 15 изменится на
15 LOAD "YOURCODE" CODE addr
- где addr — адрес начала пустого спрайта. При необходимости можно создать несколько пустых спрайтов.
Можно воспользоваться также оператором
перемещения спрайт-файла .RLCT. В этом случае в загрузчике нужно
дополнительно изменить адрес верхней границы спрайт-файла END.
Выполнение откомпилированной программы
Единственное новое сообщение об ошибке, которое генерирует сам пакет рабочих процедур компилятора, — это Program not compiled, что означает: при старте программы она не идентифицирована как скомпилированная.
Корректировать откомпилированную программу, как
уже говорилось, можно только одним способом — вносить изменения в
текст исходной ^скомпилированной) программы и компилировать вновь.