II. ГЕНЕРАТОР СПРАЙТОВ
ВСТУПЛЕНИЕ.
Генератор спрайтов предназначен для создания и редактирования
спрайтов с последующим использованием их в Ваших программах,
написанных в ЛАЗЕР-БЕЙСИКе. Спрайты создаются на экране, затем
переносятся в память компьютера и потом выдаются на ленту.
ЗАГРУЗКА.
Программа загружается: LOAD "SPTGEN" или LOAD "".
Если Вы хотите записать ее на ленту, сделайте BREAK, затем GO
ТО 999. Обе части программы будут выгружены на ленту. Правда,
теперь, чтобы запустить программу, ее надо перезагрузить.
Чтобы записать программу на микродрайв, надо, во-первых,
изменить строку 2:
вместо LOAD мм CODE поставьте LOAD * "m";1; "G" CODE.
Теперь дайте GO ТО 9998.
НАЧАЛО РАБОТЫ.
После загрузки программы Вы получите запрос: "Какой запуск Вам
нужен?" - холодный (COLD) или теплый (WARM). Поскольку сейчас мы
запускаемся впервые, наберите "С" (COLD), а затем дайте "Y".
Появится рабочий экран.
1. ТЕРМИНОЛОГИЯ.
ХОЛОДНЫЙ ЗАПУСК.
При таком входе в программу все спрайты, имевшиеся в ней,
вычищаются, а все системные переменные устанавливаются в исходное
положение. В первый раз в программу всегда надо входить через
"холодный" запуск.
ТЕПЛЫЙ ЗАПУСК.
При таком входе в программу все спрайты сохраняются и системные
переменные не изменяются. Это обеспечивается в первую очередь после
случайного BREAK или какой-либо ошибки.
Если случайно Вы вызвали прерывание, наберите GO ТО 3, затем
входите через "теплый" пуск (WARM). Однако, информация на экране
будет утрачена. Дайте GO ТО 100, что возвратит Вас в командный
режим.
CHR$ SQR
Эта аббревиатура используется для обозначения элементарного
квадрата экрана и относится к сетке 8*8, расположенной в левой части
экрана. Здесь создаются и редактируются спрайты.
ЭКРАН СПРАЙТА.
Это область экрана размером 15*15 символов; обычно работа со
спрайтом идет здесь.
КУРСОР CHR$ SQR
Это мигающий курсор, который используется для конструирования и
редактирования изображения, находящегося в CHR$ SQR.
КУРСОРЫ ЭКРАНА СПРАЙТОВ
Это два мигающих курсора. Они расположены ниже и правее экрана
спрайтов. Применяются для задания позиции левого верхнего угла окна,
с которым идет работа. Этот угол находится на пересечении вертикали,
проходящей через нижний курсор, и горизонтали, проходящей через
правый курсор.
ОКНО ЭКРАНА СПРАЙТОВ.
Часть этого экрана, с которой непосредственно идет работа - это
окно. Его координаты задаются XPOS и YPOS, которые соответствуют
положениям курсоров экрана спрайтов. Размеры же этого окна задаются
через SPRITE HEIGHT (высота спрайта) и SPRITE LENGHT (длина
спрайта). Чтобы увидеть окно, с которым Вы в данный момент
работаете,нажмите F, и оно высветится.
СПРАЙТЫ.
После того, как Вы закончите создание спрайтов, Вы можете
записать их на ленту или микродрайв, чтобы загружать далее в
ЛАЗЕР-БЕЙСИК и использовать в Ваших программах. Для записи спрайтов
на ленту Вы имеете две различных опции:
ОПЦИЯ 1. Этот режим предполагает дальнейшее редактирование
спрайтов, поэтому они выгружаются в форме, допускающей их
последующую перезагрузку в ГЕНЕРАТОР. Их нельзя использовать в
ЛАЗЕР-БЕЙСИКовских программах.
ОПЦИЯ 2. Этот режим выгружает спрайты, готовые к использованию
в ЛАЗЕР-БЕЙСИКе. Спрайты, выданные в этом режиме, не могут быть
загружены в ГЕНЕРАТОР СПРАЙТОВ.
Для тех, кто не чувствует в себе художественных способностей,
мы изготовили два набора спрайтов на прилагаемой кассете:
SPRITE 1А - это набор из 50 спрайтов различных аркадных
персонажей.
SPRITE 2А - это файл спрайтов, входящих в демонстрационную
программу.
ИНФОРМАЦИОННЫЙ ПРЯМОУГОЛЬНИК.
Здесь изображается следующая информация. Например:
MEMORI LEFT 7488 XPOS 1 YPOS 1
SPRITE 60218 SPRITE HEIGHT-2
SPST 60218 SPRITE LENGHT-4
SPND 65279 SPRITE NUMBER-1
стекстовая строка>
MEMORI LEFT - указывает, какой объем памяти остался для
размещения спрайтов.
XPOS YPOS - текущие положения курсоров экрана X и Y
относительно левого верхнего угла экрана
спрайтов.
SPRITE - указывает адрес памяти, где находится заданный
Вами спрайт.
SPST - указывает на начало области спрайтов в памяти
компьютера. До задания каких-либо спрайтов
имеет значение 65128.
SPND - указывает на конец области спрайтов.
SPRITE LENGTH - обозначает длину заданного спрайта.
SPRITE HEIGHT - обозначает высоту заданного спрайта.
SPRITE NUMBER - номер текущего спрайта.
<Текстовая строка> - здесь показывается выполняемая в дан-
ный момент команда, а также возможные опции.
2. назначение клавиш генератора спрайтов.
ОБЗОР.
A. Задействует переключатель атрибутов (аналогично.ATOF,.ATON).
1 - включение;
0 - выключение.
B. Задействует переменную BRIGHT.
1 - включение;
О - выключение.
C. Задействует переменную PAPER.
Нажмите любую клавишу от О до 7, чтобы выбрать цвет.
symbol shift + с - Создание больших спрайтов.
Позволяет создавать спрайт (номер которого содержится в
соответствующей переменной) с размером, заданным пользователем в
диапазоне от 1 до 255 символов. Спрайт может быть создан "пустым",
если никакие данные не будут введены в него.
d - Задействует прямой ввод данных. Принимает восемь байтов
данных по одному байту за один раз с последующими ENTER. Ввод идет
с клавиатуры. Данные помещаются на экран спрайтов в позицию,
отмеченную курсорами. Вводимые данные должны быть в диапазоне от О
до 255 (десятичные) или от Н00 до HFF (шестнадцатиричные). В этом
случае символ Н должен предшествовать числу.
Примечание. Если переключатель атрибутов установлен на 1, то
все текущие атрибуты помещаются также в эту
позицию.
Е - Задействует функции экрана. Имеет три опции:
1. Инверсия (аналогично .INVV)
По этой опции все выключенные пикселы включаются, а включенные
выключаются. Действует на все окно, размеры которого заданы "SPRITE
HEIGHT" и "SPRITE LENGHT".
2. Зеркальное отображение (аналогично .MIRV).
Эта опция "переворачивает" относительно вертикальной оси окно,
заданное теми же переменными, что и в опции 1.
3. Зеркальное отображение атрибутов (аналогично .MARV).
Эта опция "переворачивает" относительно вертикальной оси
атрибуты в окне, заданном теми же переменными, что и в опции 1.
f. - Задействует режим FLASH (мигание) окна.
Обеспечивает мигание окна экрана, заданного переменными (SPRITE
HEIGHT) и (SPRITE LENGTH).
Этот режим является вспомогательным для проверки правильности
установки курсоров экрана спрайтов, а также, чтобы визуально увидеть
размеры текущего окна.
symbol shift + f отформатировать картридж микродрайва.
Картридж подготавливается к записи спрайтов. Устанавливаются пять
"пустых" спрайтов с номерами от 1 до 5.
G. - занесение спрайта с экрана в память.
По этой команде берется спрайт, размеры которого хранятся в
"SPRITE LENGTH" и "SPRITE HEIGHT", а номер в "SPRITE NUMBER"
снимается с окна, заданного позициями курсоров экрана спрайтов и
отправляется в память компьютера.
Примечание: Если при этом переключатель атрибутов включен, то
они также снимаются с окна и закладываются в память
на хранение, в противном случае они игнорируются.
H. - ввод высоты спрайта "SPRITE HEIGHT" (аналогично .HGT).
Допускается высота от 1 до 15 символов.
I. - Выдача атрибутов.
По этой команде окно заданных размеров заполняется
установленными атрибутами.
symbol shift + i. - скроллинг окна на один пиксел.
J. - Переносит CHR$ SQR в экран спрайтов. Помещает рисунок из
CHR$ SQR в элементарный квадрат, отмеченный курсорами. Атрибуты
переносятся, если переключатель установлен в 1.
SYMBOL SHIFT + J. - загрузка спрайтов с ленты и микродрайва.
Примечание. Спрайты, находящиеся в памяти, по этой команде
могут быть разрушены.
к. - перенос элементарного квадрата, отмеченного курсорами, из
экрана спрайтов в CHR$ SQR. Атрибуты переносятся, если переключатель
установлен в 1.
L. - ввод длины спрайта "SPRITE LENGHT" (аналогично .LEN).
М. - команда аналогична "Е". Здесь также представляются три
опции. Разница в том, что здесь эти функции над спрайтами
выполняются только в памяти компьютера, а на экране никаких
изменений не происходит.
n. - этой командой дается ответ "нет" на вопрос "Y/N?".
О. - задействует логические функции.
По этой команде Вам предоставляется три опции. Каждая опция
снимает область с экрана спрайтов, левый верхний угол которой
установлен двумя курсорами, а размеры соответствуют определенному
спрайту, и помещает эту область в спрайт, номер которого определен
переменной "SPRITE NUMBER". Если атрибуты отключены, то они
игнорируются.
Опция 1. Накладывает данные с экрана на предварительно
определенный спрайт по принципу "ИЛИ" (OR) и результат оставляет в
спрайте (экран не меняется).
Опция 2. Накладывает данные с экрана, на спрайт по принципу
"XOR" (ИСКЛЮЧАЮЩЕЕ ИЛИ).
Опция 3. То же самое по принципу "AND" (И).
Р. - помещает спрайт, номер которого содержится в "SPRITE
NUMBER" на экран спрайтов в позицию, определенную курсорами.
Q. - выполняет чистку блока CHR$ SQR.
SYMBOL SHIFT + Q. - очистка экрана спрайтов.
r. - поворот спрайта в памяти на 90 градусов, исходный спрайт
не изменяется. Новому спрайту после поворота присваивается новый
номер. Атрибуты поворачиваются автоматически.
s. - управляет переменной "SPRITE NUMBER" (аналогично .SPN).
Позволяет задавать спрайты и запрашивать номер спрайта в диапазоне
от 1 до 255.
Если Вы новому спрайту присвоите номер уже существующего, то
будет выдано предупреждение.
SYMBOL SHIFT + S. - выполняет команду "SAVE" для спрайтов.
После этого выполняется "VERIFY". Если в результате "VERIFY"
произойдет сбой, то дайте GO ТО 100, тогда Ваши данные в памяти не
будут утрачены.
Т. - выполняет тестирование спрайтов (аналогична команде TST).
Проверяет спрайт, номер которого содержится в переменной "SPRITE
NUMBER" и выполняет следующее:
1. Помещает высоту спрайта в переменную "SPRITE HEIGHT".
2. Помещает длину спрайта в переменную "SPRITE LENGTH".
3. Помещает адрес памяти, в котором начинается данный спрайт в
переменную "SPRITE".
4. Помещает адрес конца области спрайтов в переменную "SPST".
5. Помещает адрес конца области спрайтов в переменную "SPND".
6. Рассчитывает объем свободной памяти, доступной для хранения
спрайтов и помещает его в переменную "MEMORY LEFT".
Примечание. Изображение этих переменных на экране в случае
необходимости будет переработано.
SYMBOL SHIFT + Т. - скроллинг окна влево на один пиксел.
U. - берет параметры атрибутов символа из экрана спрайтов с
позиции, отмеченной курсорами, и помещает их в четыре переменных
атрибутов.
SYMBOL SHIFT + и. - скроллинг окна вверх.
V. - включение переменной FLASH (это одна из четырех переменных
атрибутов). 1
1 - включено;
0 - выключено.
W. - включение функции стирания спрайтов "WIPE SPRITE"
(аналогично ю DSPR). Полностью стирает из памяти спрайт, на который
указывает переменная "SPRITE NUMBER".
Все спрайты, находившиеся в памяти ниже этого спрайта, поднима-
ются вверх, выбирая свободное пространство.
X. - задает переменную INK. После нее надо нажать клавишу от 0
до 7, выбрав нужный цвет.
Y. - дает положительный ответ "ДА" при запросе "Y/N".
SYMBOL SHIFT + Y. - скроллинг окна вниз на один пиксел.
SPACE. - дает возможность поместить спрайт небольших размеров
внутрь второго, большего спрайта в позицию, заданную переменными ROW
и COL второго спрайта. Здесь существует 4 опции.
1. GETBLS: меньший спрайт помещается непосредственно в больший.
2. GETORS: накладывает по "OR" (ИЛИ) меньший спрайт на больший.
3. GETXRS: то же, но по "XOR".
4. GETND : то же, но по "AND".
5.6.7.8. - перемещение курсора в CHR$ SQR в соответствующих
направлениях.
9. - включает CHR$ SQR в выбранной позиции.
0. - выключает CHR$ SQR в выбранной позиции.
SYMBOL SHIFT + 5,6,7,8. - управление перемещениями курсоров в
экране спрайтов.
Итак, порядок создания спрайтов в ГЕНЕРАТОРЕ СПРАЙТОВ такой:
1. Загрузить ГЕНЕРАТОР СПРАЙТОВ и выполнить "холодный" (COLD)
пуск .
2. Установить клавишей А флаг атрибутов в 1.
3. Установить цвета INK и PAPER.
4. Создать свой спрайт по символам, используя CHR$ SQR или
метод прямого ввода данных.
5. Увеличить размеры окна до размеров своего спрайта.
6. Установить курсоры экрана спрайтов в левый верхний угол
Вашего спрайта.
7. Высветите окно клавишей "F", чтобы убедиться, что все данные
спрайта будут взяты в память.
8. Загрузите спрайт в память клавишей "G".
9. Проверьте, правильно ли прошла операция, следующим образом.
Переведите курсор в свободную часть экрана спрайтов и
поместите туда спрайт клавишей "Р".
10. Выполните другие необходимые операции или создайте
другие спрайты.
11. Выгрузите спрайты на ленту в формате опции 1 с тем, чтобы
они могли быть загружены впоследствии в ГЕНЕРАТОР СПРАЙТОВ
для доработки и редактирования.
12. Выгрузите спрайты на ленту в формате опции 2 для
дальнейшего их использования в программе ЛАЗЕР-БЕЙСИК.
13. Очистите память компьютера через RANDOMISE USR 0.
14. Загрузите ЛАЗЕР-БЕЙСИК.
15. Загрузите спрайты, используя опцию 2 ГЛАВНОГО МЕНЮ.
Загрузчик запросит от Вас "SPRITE START ADRESS" (адрес
начала области спрайтов), который Вы запомнили, когда
выполняли пункт 12.
Компилятор языка ЛАЗЕР-БЕЙСИК предназначен для создания
автономной программы, независимой от интерпретатора ЛАЗЕР-БЕЙСИКа.
Он может выполнять и обработку программ, написанных на
стандартном Бейсике, но реальный выигрыш во времени работы
откомпилированных программ не предоставляет (в 2 раза или менее).
Компилированный код занимает меньший объем памяти, чем исходная
программа, но при запуске он должен сопровождаться пакетом рабочих
процедур.
Любая программа, созданная в расширенном интерпретаторе
ЛАЗЕР-БЕЙСИКа, поместится в компиляторе.
РАСПОЛОЖЕНИЕ ФАЙЛОВ НА ЛЕНТЕ.
A. COMCODE LOAD ""CODE
LOADER LOAD ""
RT CODE LOAD "RT CODE"CODE
B. DEMO LOAD ""
РЕЗЮМЕ.
iii. компилятор
ВВЕДЕНИЕ.
компиляция.
При компиляции программы в памяти должны размещаться только
текст исходной программы и компилятор. Следовательно, после ввода
программы с помощью ЛАЗЕР-БЕЙСИКа и ее запуска, программу следует
записать на ленту, очистить компьютер и загрузить в компилятор
только свою программу без интерпретатора.
Программа, записанная на языке ЛАЗЕР-БЕЙСИК, не может
редактироваться средствами Синклер-Бейсика.
Перед загрузкой выполните: CLEAR 59799
Загружается компилятор: LOAD ""CODE или LOAD "COMPCODE"CODE.
Исходная программа может загружаться как до так и после
компилятора.
Начало компиляции: RANDOMISE USR 59800.
При компиляции экран изображает случайную информацию. Это не
сбой. Все в порядке. После окончания компиляции экран очищается,
появляется сообщение "O.K.", а также номер последней
откомпилированной строки.
СТРУКТУРА ОТКОМПИЛИРОВАННОЙ ПРОГРАММЫ.
Скомпилированный код вытирает исходный текст. Тем не менее,
компьютер воспринимает его как обычную Бейсик-программу. Так,
например, процедуры записи на ленту и загрузки в память у
откомпилированного кода ничем не отличаются от соответствующих
операций для обычных БЕЙСИК-программ.
Откомпилированный текст дальнейшим изменениям не подлежит.
Нельзя также выполнять "MERGE". Если надо скомпилировать программу,
состоящую из двух независимых программ, надо сначала создать один
исходный модуль (MERGE), а затем уже его откомпилировать.
После команды "LIST" на экране появятся несколько строк текста.
Первые две устанавливаются компилятором, независимо от содержания
исходной программы.
Первая строка (не выполняется): 0 PRINT 0. Она содержит
недоступную пользователю информацию для текста рабочих процедур.
Вторая строка всегда: 1 RANDOMISE USR 59800
Это вызов откомпилированной программы. Если в исходной
программе имеются функции, определяемые пользователем, то их список
(подряд) помещается в третьей строке с номером 0. Это не относится к
назначениям процедур ЛАЗЕР-БЕЙСИКа, которые компилируются отдельно.
Если в исходной программе есть операторы "DATA", то все они
собираются в один "DATA" и размещается в четвертой строке, которая
также нумеруется 0. Несмотря на такое объединение, оператор
"RESTORE" в откомпилированной программе будет выполнен правильно.
ВЫПОЛНЕНИЕ ОТКОМПИЛИРОВАННЫХ ПРОГРАММ.
Для выполнения откомпилированной программы необходимо снабдить
ее дополнительно пакетом рабочих процедур.
RAMT0P следует установить в 59799 (не забывайте об этом при
загрузке откомпилированных модулей). Пакет рабочих процедур
загружается командой:
LOAD "RT CODE"CODE
Если программа имеет файл "SPRITES, его следует загрузить точно
так же, как и в программе, выполненной на языке ЛАЗЕР-БЕЙСИК.
Загрузке откомпилированной программы выполняется как и для
обычной Бейсик-программы. Инициализация выполнения программы:
RANDOMIZE USR 59800 ИЛИ GO ТО 1.
Примечание: Нажатие BREAK не прерывает выполнения программы,
кроме режимов загрузки и выгрузки.
КОМПОНОВКА АВТОНОМНОЙ ПРОГРАММЫ.
Программу, написанную на ЛАЗЕР-БЕЙСИКе, необходимо
соответственно настроить, чтобы для работы было достаточно набрать
LOAD
Для этого программу необходимо скомпоновать и снабдить
загрузчиком. Он входит в набор, имеющийся на исходной ленте. Вот
его текст:
10 CLEAR 59799
20 LET SPST=
30 LOAD "RTCODE" CODE
40 LOAD "SPRITES" CODE SPST
50 LET T=INT(SPST/256): POKE 62464, SPST - 256*T: POKE
62467,220
60 POKE 62466,255: POKE 62467,220
70 POKE 56575,0
80 LOAD ""
Здесь:
Строка 10: Выделение пространства для пакета рабочих процедур.
Строка 20: Установка начала области размещения файла SPRITES
(см. описание ГЕНЕРАТОРа СПРАЙТОВ).
Строка 30: Загрузка пакета рабочих процедур.
Строка 40: Загрузка файла спрайтов.
Строка 50: Внесение в программу адреса начала области
размещения спрайтов.
Строка 60: Внесение в программу адреса конца области размещения
спрайтов.
Строка 70: Внесение конца области размещения знакогенератора
спрайтов.
Строка 80: Загрузка текста скомпилированной программы.
Примечание: Если спрайты в программе не используются, строки 40
- 70 можно исключить.
Вам остается внести требуемое значение SPST и подготовить набор
файлов на чистой ленте. Помните, что делая SAVE для загрузчика и для
откомпилированной программы, необходимо указывать строку автостарта:
SAVE "LOADER" LINE 10
SAVE "COMP PROG NAME" LINE 1.
ОГРАНИЧЕНИЯ ДЛЯ СТАНДАРТНОГО БЕЙСИКА.
Нижеперечисленные ограничения были заложены в компилятор уже на
огапе его проектирования.
1. Нельзя использовать вычисляемые выражения в операторах GO
ТО, GO SUB, RUN, RESTORE, т.к. на этапе компиляции все переменные
будут установлены в 0, как и длина всех строковых переменных.
2. В операторе DIM допустимы вычисляемые границы, но только
такие, которые в процессе компиляции будут установлены в 0.
Следовательно, нельзя объявлять переменные вида DIM а(п+12) - здесь
значение выражения в скобках после компиляции будет ровно 12 и в
ходе выполнения программы пересчета не будет.
3. Ограничений на число переопределений массива компилятор не
накладывает. Учтите, что первое определение выполняется в ходе
компиляции и оно не переносится в откомпилированную программу.
Следовательно, если в программе есть переход к началу программы в
точку, расположенную выше первого DIM, то при втором проходе этого
же куска программы объявление массива может уже оказаться
недействительным. Эту сложность можно обойти, поместив все описания
массивов в самом начале программы, до той точки, где начинаются
ветвления.
4. Использование оператора CLEAR не допускается.
5. Команда RUN выполняется так же, как и в БЕЙСИКе, но сброса
переменных не производится.
6. Недопустимые операторы: MERGE, CONTINUE, LIST, LLIST.
7. Командой CONTINUE нельзя запускать сбившуюся программу или
программу с оператором STOP.
8. Команды OPEN#, CLOSE# работают только с потоками S, К и Р.
Подкачка и сброс файлов в режиме работы с микродрайвом не
поддерживается.
9. Команды LOAD, SAVE, VERIFY являются допустимыми. Если
загружается Бейсик-программа, рабочие процедуры рассматривают ее как
откомпилированную программу на ЛАЗЕР-БЕЙСИКе и попытаются выполнить
ее, передав управление на первый оператор.
ИСПОЛЬЗОВАНИЕ КОМПИЛЯТОРА С МИКРОДРАЙВОМ.
Компилятор и пакет рабочих процедур можно использовать с
микродрайвом. Исключение: в процессе выполнения откомпилированной
программы обмен файлами с микродрайвом не поддерживается. Все
примеры, приведенные в данной разработке, можно перенести на
микродрайв, соответствующим образом изменив команды ввода/вывода
файлов.
ПРИЛОЖЕНИЕ 1.
СООБЩЕНИЯ ОБ ОШИБКАХ.
Illegal statement found -
встретился один из недопустимых операторов: CLEAR, MERGE,
LIST, LLIST,CONTINUE.
Procedure definition nesting error -
- найдено два описания процедуры без промежуточного оператора .
RETN. В описаниях процедур вложения не допускаются.
RETN Without DEF FN# error -
- найден оператор .RETN без соответствующего описания
процедуры.
Procedure not found -
- обращение к неописанной процедуре. Описание процедуры не
обязательно должно предшествовать ее использованию.
Program not compiled -
- это сообщение пакета рабочих процедур. При старте программы
ее начало не было идентифицировано как начало
откомпилированной программы.
В ходе выполнения программы могут также выполняться стандартные
сообщения об ошибках. Однако пакет рабочих процедур не в состоянии
указать точку возникновения ошибки. Кроме того, следует игнорировать
цифровые коды, сопровождающие сообщения об ошибках стандартного
Бейсика. Словом, для того, чтобы быть полностью уверенным в работе
откомпилированной программы, предварительно ее следует тщательно
отладить и оттестировать перед компиляцией.
При возникновении ошибок в ходе выполнения, программа или ее
часть должна быть перекомпилирована, для чего придется повторно
загрузить компилятор и исходную программу (предварительно
исправленную).
ПРИЛОЖЕНИЕ 2.
КАРТА ПАМЯТИ.
Компилятор и пакет управляющих процедур загружается, начиная с
адреса 59800. Пакет рабочих процедур занимает всю верхнюю часть
памяти. Конец компилятора - по адресу 62586, т.е. его длина 3057
байтов. Следовательно, перед загрузкой этих модулей необходимо
выполнить:
CLEAR 59799
Откомпилированная программа размещается в памяти следующим
образом:
Программа Переменные Спрайты Стек RTCODE
процессора
PROG VARS ELINE 56575 59800 65535
ПРИЛОЖЕНИЕ 3.
РЕКОМЕНДАЦИИ ПО ПРОГРАММИРОВАНИЮ В КОДАХ.
Между областью спрайтов и пакетом рабочих процедур имеется
область памяти более ЗК. Обычно для стека процессора требуется менее
256 байтов. Поэтому здесь можно размещать процедуры в машинных
кодах, установив соответствующие записи в операторе CLEAR на конец
файла спрайтов. Кроме того, можно в принципе отводить под процедуры
пользователя всю область, начиная с ELINE вплоть до 59800.