ZX Format #06
29 июля 1997
  Софт  

Игрушки - описание редактора Адевентюр - PAW (часть 4).

<b>Игрушки</b> - описание редактора Адевентюр - PAW (часть 4).
              PAW
  Техническое руководство
         (продолжение)

music by DNK
(С) 1986 Gilsoft International Ltd.
(C) 1996 Alex ASP, перевод
_______________________________

 IX. Описание графического редактора. 

Эта чсть PAW позволяет производить не-
которые  операции  над дроустрингами (по-
следовательность графических команд) каж-
дой   локации.  Во  время  редактирования
строка  располагается  в памяти следующим
образом:

┌──────────┐
END    Маркер конца строки 
├──────────┤
│          │
/NEXT   Еще не отрисованные команды
├──────────┤
│          │
SPARE  Доступная память 
│          │
├──────────┤
.END    Временн. маркер конца строки
├──────────┤
│          │
DRAW   Основной дроустринг 
└──────────┘

В  дроустрингах используется метод по-
следовательной  привязки: в базовой точке
(далее БТ) хранятся координаты точки, для
которой  в  последний  раз были выполнены
команды  PLOT, MOVE TO и т.д., а в привя-
занной  точке (далее ПТ) хранятся коорди-
наты для следующей отрабатываемой команды
PLOT, FILL и т.д.

В  графическом  редакторе можно разде-
лить  команды на 4 группы. Любая команда,
что вставляется в дроустринг, требует од-
новременного нажатия SYMBOL SHIFT.

 1) Команды дроустрингов: 

G ABS MOVE A 

БТ  становится равной х,у из ПТ, уста-
навливаются  только  атрибуты. Можно при-
нять за PLOT с включенными INVERSE, OVER.

 PLOT P 

Включает  пиксел в ПТ согласуясь с IN-
VERSE и OVER, затем БТ=ПТ.

G REL MOVE R 

БТ=ПТ, экран не изменяется. Можно при-
нять за относительный сдвиг со старой по-
зиции.

 LINE L 

Рисует  линию с концами в БТ и ПТ, со-
гласуясь  с  INVERSE и OVER, затем БТ=ПТ.
Можно  принять  за относительный сдвиг со
тарой позиции.

 FILL F 

В  область  с  началом в ПТ включаются
все пикселы. FILL вызывает SHADE, поэтому
комментарии  к SHADE также верны. Команда
занимает 3 байта.

 SHADE S 

Область  с  началом  в  ПТ заполняется
текстурой.  В  базе данных содержатся 16
текстур  с  номерами  от 0 до 15, которые
могут  быть  отредактированы  в редакторе
  символов (Сharacter Editor).

Определение текстуры происходит следу-
ющим образом:

 а) Запрашиваются два номера текстуры (от
   0  до 15). Если Вы хотите использовать
   только одну текстуру, то два раза ука-
   жите один и тот же номер.

 б)  Происходит сложение текстур командой
   OR,  т.е.  одна текстура накладывается
   на другую.

 в)  Если был включен INVERSE, то резуль-
   тирующая текстура инвертируется,  т.е.
   все пикселы переключаются в противопо-
   ложное состояние

Замечания: 

 1:  SHADE производит  заполнение сначала
сверху вниз, а затем снизу вверх. Все об-
ласти,  которые SHADE не заполнила должны
быть  заполнены отдельно путем подачи ко-
манды  SHADE снова, хотя аккуратный выбор
ПТ сведет эту проблему к минимуму.

 2:  Если заполняемая область будет слиш-
ком сложной, то SHADE не будет выполнять-
ся.  Это сделано для того, чтобы анализи-
ровать  пересечение  заполнения с уже за-
полненным участком. Поэтому область может
быть  заполнена  только один раз, так как
уже  заполненная  область  будет  слишком
сложной  для  повторного  заполнения.  Не
нужно  пытаться сначала заполнить область
текстурой при помощи команды SHADE, а за-
тем наложить фон при помощи команды FILL,
лучше использовать SHADE с включенным IN-
VERSE. Занимает 4 байта.

 TEXT T 

Если  были  введены  какие-нибудь сим-
вольные  наборы,  то  последует запрос на
номер  символьного набора. Затем запраши-
вается  код  символа (от 32 до 127). Этот
символ печатается в знакоместо, в котором
находится  БТ.  Эта  команда была введена
для того, чтобы вставлять куски картинки,
нарисованные  в  редакторе символов (Сha-
racter  Editor),  что в некоторых случаях
позволяет  экономить память - 8 байт вме-
сто  кучи линий и точек. Команда занимает
4 байта.

 BLOCK B 

Позволяет заполнить текущими атрибута-
ми  прямоугольник,  БТ  и ПТ образуют его
диагональ. Занимает 5 байт.

 2) Команды, работающие с цветами: 

 INK X 

Выбранный цвет становится текущим. При
INK  8  цвет  чернил  берется из текущего
знакоместа.

 PAPER C 

Выбранный цвет становится текущим. При
PAPER  8  цвет  фона  берется из текущего
знакоместа.

 FLASH V 

Запрашивается  новое значение мерцания
(0, 1 или 8)

 BRIGHT Z 

Запрашивается  новое  значение яркости
(0, 1 или 8)

Все  вышеприведенные  команды занимают
по одному байту.

 INVERSE I 

Переключает  состояние INVERSE (инвер-
сия).

 OVER O 

Переключает  состояние  OVER  (наложе-
ние).

Ни INVERSE, ни OVERне занимают ни бай-
та,  но  их  состояние кодируется во всех
командах,  на  которые они оказывают воз-
действие.

 3) Подпрограммная команда: 

 GOSUB G 

Запрашивается  номер картинки, который
должен  находиться  в  диапазоне  от 0 до
locno. Затем запрашивается масштабный ко-
эффициент (от 0 до 7), который определяет
масштаб в восьмых долях. Если он равен 0,
то  картинка не масштабируется (8/8). За-
имает 2 байта.

Замечания: 

 1: Изменение масштаба отразится лишь для
команд  REL MOVE, LINE, FILL и SHАDE. Ко-
манды  ABS  MOVE,  PLOT,  BLOCK и TEXT не
масштабируются  и,  в основном, не должны
использоваться  в подпрограммах, хотя бу-
дут работать как положено, и иногда могут
быть успешно использованы.

 2:  Вызов  вложенных  подпрограмм (вызов
подпрограммы  из подпрограммы) может осу-
ществляться до десятого уровня вложеннос-
ти.

 3:  Масштабирование не действует за рам-
ками  GOSUB, т.е. если в подпрограмме бу-
дет использоваться GOSUB, то отрисовывае-
мый дроустринг не будет отмасштабирован.

 4: Если подпрограмма будет вызывать саму
себя,  то  произойдет ошибка "Limit reac-
hed" "Достигнут предел", так как произой-
дет вложенный вызов более десяти раз.

 4) Команды редактирования:

 START > 

Устанавливает   указатель   на  начало
дроустринга.

 NEXT / 

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

 PREVIOUS / 

Устанавливает указатель на одну коман-
ду дроустринга назад и перерисовывает эк-
ран.

 DELETE (CAPS SHIFT и 0 на 48K) 

Удаляет предыдущую команду дроустринга
и перерисовывает экран.

 DELETE NEXT (CAPS SHIFT и 9 на 48K) 

Удаляет следующую команду дроустринга,
если она есть.

 GRID Y 

Работает в качестве переключателя, ри-
сует знакоместную сетку из INK 0, PAPER 7
и  PAPER  6,  что  позволяет принимать во
  внимание атрибутные границы.

G JOYSTICK J 

Включает/выключает  Kempston (tm) joy-
stick.

Клавиши,  находящиеся вокруг 'S' пере-
двигают  ПТ на пиксел за раз, а при нажа-
том CAPS SHIFT - на 8 пикселов. Раскладка
такова:
             Q       W       E 

  A               S 

  Z       X       C 

Джойстик должен быть подключен на порт
2  к  Interface 2 или Spectrum Plus 2. Он
может   также   быть  подключен  к  Kemp-
ston (tm) interface, тогда SYMBOL SHIFT и
J  должны быть нажаты одновременно, чтобы
PAW  смог  считывать оттуда сигналы. CAPS
SHIFT также вызывает ускорение передвиже-
ния  джойстика в 8 раз. Кнопка FIRE будет
вызывать  то  же  действие, что и команда
SYMBOL SHIFT и L - будет чертиться линия.

 X.  Сообщения  Редактора об ошибках и их
значение. 

Из-за того, что PAW представляет собой
довольно сложную программу, в результате
его  работы  могут  возникать ошибки. При
обнаружении  таковых,  в нижней части эк-
рана  печатается  их  описание. Затем PAW
ждет  нажатия  любой  клавиши, после чего
возвращается  в то меню, при работе кото-
рого произошла ошибка. Существует два ис-
ключения:

 1) При возникновении ошибки во время ре-
дактирования  дроустринга - в этом случае
указатель помещается на команду, предшес-
твующую той, при выполнении которой прои-
зошла  ошибка,  т.о.  выполнение  команды
NEXT вновь приведет к ошибке. Если не по-
нятно, как можно исправить эту ошибку, то
можно  дать команду DELETE NEXT, и коман-
да,  выдававшая ошибку будет удалена. За-
метьте,  что  последующие за неправильной
команды  еще  не  отрисованы, в них также
может возникнуть ошибка.

 2) При работе игры: если не присутствует
редактор PAW, то после сообщения об ошиб-
ке  осуществляется переход на инициализа-
цию новой игры. Если же редактор PAW при-
сутствует, то в нижнюю часть экрана печа-
тается  строка диагностики. В ней отобра-
жаются таблица процессов, глагол и сущес-
твительное строки, а также кондакт, в ко-
тором произошла ошибка. Затем осуществля-
ется диагностика флагов, чтобы легче мож-
но было подтвердить установленную причину
возникновения  ошибки.  По  нажатию ENTER
печатается  сообщение об ошибке и осущес-
твляется переход в главное меню PAW.

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

PAW  также генерирует несколько ошибок
амостоятельно:

 BREAK 

Во  время операций со внешними устрой-
ствами  или  во  время работы игры нажали
BREAK.

 STOP in INPUT 

Нажали CAPS SHIFT и 6.

 Tape loading error 

Как  и в BASIC'е. Заметьте, что ошибки
во  время  загрузки  базы данных фатальны
для  последней,  поэтому требуется загру-
зить базу данных заново.

 Database full 

Нет места в базе данных под то, что Вы
пытались сделать.

 Limit reached 

Максимальное число локаций, сообщений,
объектов,  таблиц процессов или RAM стра-
ниц уже задействовано. Иначе - достигнута
максимальная  глубина  вложенности в под-
программах или в подпроцессах (равна 10).
Также  может произойти из-за попытки сде-
лать DOALL в цикле DOALL.

 Integer our of range 

Во  время  рисования  картинки команда
LINE  вышла за размеры экрана. Это обычно
происходит из-за изменения начальной точ-
ки во время редактирования.

 Out of memory 

Появляется,  если  строка  из  таблицы
процессов  или  из  таблицы соединений не
входит  в  буфер (случается довольно ред-
ко).  Также  появляется,  если попытаться
начать  работать с новой RAM страницей на
48К  машине,  загружать  128К игру на 48К
машину.  Также  может появиться при недо-
статке рабочего места из-за установки ка-
налов  перед загрузкой или из-за большого
размера программы, работающей с EXTERN.

 Invalid Argument 

Печатается,  если кондакт обнаруживает
некорректный  аргумент, например, при по-
пытке занести в флаг 38 номер несуществу-
ющей   локации,  при  попытке  произвести
PUTIN/TAKEOUT над объектом, не являющимся
контейнером,  при установке объекта в ло-
кацию 255 (только COPYFO).

Замечания: 

 1:  Во  время  ввода машина может издать
низкий  сигнал, если возникнет переполне-
ние экрана и/или входного буфера.

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

 3:  Если в таблицу соединений будет вве-
дена слишком большая строка путем исполь-
зования сокращений типа N 1 W 6 и т.п., а
сокращения  будут  затем  удалены, то при
декодировании  получится  строка  NORTH 1
WEST  6  и т.п., которая может не войти в
буфер  ввода. Если такое случится, то бу-
дет  выдано  Out of memory. Выходом будет
вновь ввести эти сокращения в словарь.

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

 XI. PAW и принтер. 

PAW печатает на принтер, используя ка-
нал #3 (обычно "P"). 

Если  это  обычный ZX термопринтер или
его эквивалент Alphacom, то печать проис-
ходит  с  использованием стандартных под-
программ, прошитых в ПЗУ. На 128К машинах
термопринтер  работает в режиме 48К и пе-
чатает  в  точности  то, что находится на
экране,  используя те же самые символьные
наборы  и  т.д.  Опции "C" в символьном и
графическом меню выполнят стандартную ко-
манду COPY.

На  128К  машинах канал принтера выво-
дится  на  порт  RS232,  и PAW это знает.
Весь текст, идущий на печать, направляет-
ся  в  указаный  порт,  при  этом символы
фильтруются следующим образом:

  0 -  31 подавляются,  исключая  7 и 13,
          что печатаются как CR (13), и 6
          (TAB),  что печатается как про-
          бел 
 32 - 127 печатаются как и должны 
128 - 162 печатается вопрос ("?") 
163 и 164 токены PLAY и SPECTRUM. 
.165 - 255 либо  стандартные  токены, если
          база данных не компрессирована,
          либо токены PAW, если база дан-
          ных компрессирована. 

Если у Вас стоит Interface 1, то можно
использовать  RS232 для печати, путем от-
крывания канала "t" командой OPEN #3, "t"
перед  загрузкой  PAW.  Тогда канал будет
работать как описано для RS232 в 128К ма-
шинах.

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

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

PRTADD  DEFW PRTRET; Адрессимвольного
                     вывода 
COPVEC  JP   DOCOPY; Здесь происходит ко-
                     пирование экрана
PRTRET  RET        ; Сюда   пишется   Ваш
  драйвер 

Память  свободна  до  29504. Сохраните
свой  драйвер с адреса запуска, имя файла
в десятой позиции должно содержать символ
"А", сохраните также файл длиной 0 байт с
символом "B" в десятой позиции имени фай-
ла.  Вы  должны  переадресовать канал #3
(Куда угодно), чтобы PAW подумал, что пе-
ред  его  загрузкой  был подключен нетер-
мальный принтер. Затем в главном меню ис-
пользуйте  опцию Load database (Загрузить
базу  данных)  для  того, чтобы загрузить
свой  драйвер  (PAW  будет думать, что Вы
загружаете  базу  данных  и  загрузит оба
файла,  один  из которых и содержит драй-
вер).

_______________________________



Другие статьи номера:

Сегодня в номере - содержание журнала.

Авторы - авторы журнала ZX-Format No.6

От авторов - свершилось давно ожидаемое событие...

Игрушки - Последний утюг (новелла по игре 48 утюгов).

Игрушки - Приключения Винни Пуха. Часть вторая.

Игрушки - описание игры The Crypt (Castle Master 2).

Игрушки - описание редактора Адевентюр - PAW (часть 1).

Игрушки - описание редактора Адевентюр - PAW (часть 2).

Игрушки - описание редактора Адевентюр - PAW (часть 3).

Игрушки - описание редактора Адевентюр - PAW (часть 4).

Игрушки - описание редактора Адевентюр - PAW (часть 5).

Программистам - Beta Basic: продолжение разговора о бейсике (часть 2).

Программистам - General Sound: Руководство по программированию.

Программистам - MMD - драйвер. Описание структуры драйвера модема для терминальной программы MMD.

Программистам - AI от В.Медноногова. Подробное описание "волнового алгоритма" трассировки (автоматического рассчета оптимального) пути, с примером реализации на Basic.

Программистам - Искуственный интеллект. Продолжение цикла статей об "AI". Общие основы нахождения пути к цели.

Программистам - Тr-Dos для программистов. Макс Петров завершает свой рассказ о нетрадиционых методах работы с диском.

Программистам - обмен опытом: "3-colour". Описание эффекта "8-цветов на точку", хелп к вьюверу и сколько слов о конвертации картинок в формат "3-colour".

Программистам - обмен опытом: "3-colour". Несколько слов о конвертации картинок в формат RGB.

Программистам - обмен опытом: программирование мультиколорных эффектов.

IS-DOS - пользователям: как выполнить индивидуальную настройку системы IS-DOS на конкретную модель ZX Spectrum-совместимого компьютера и на выполнение Ваших задач.

IS-DOS - пользователям: как скопировать системный диск IS-DOS и остаться при этом в живых.

IS-DOS - программистам: краткий курс - программирование в среде IS-DOS.

IS-DOS - news: новые программы IS-DOS.

Железо - Краткий рассказ о возможностях процессора Z-180.

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

Железо - о новом проекте фирмы Peters - "Sprinter". Новый Spectrum-совместимый компьютер нового поколения Speccy.

Железо - Мнение пользователя о скорпионовском контроллере IDE HDD - SMUC.

Железо - SuperSpectrum: об одном проекте Spectrum-совместимой машины. Её особенностью является совместимость с PC.

Железо - X-Trade FAQ. Ответы на наиболее часто задаваемые вопросы по GS и XTR-модему.

Премьера - Flash tracker. Описание 4-х канального редактора цифровой музыки, работающего с SoundDrive, от самого автора SoundDrive - Flash Inc.

Премьера - Описание последней версии универсальной терминальной программы, используемой в SpbZxNet.

Премьера - Mortal Kombat: что ждёт Вас в полной версии игры и некоторые коментарии к demo версии.

Премьера - XReversy: презентация новой игрушки, из популярного семейства "реши задачку - посмотри картинку".

Интервью - Интервью с одним из известнейших спектрумистов - Андреем Ларченко.

Здесь был ты - Рассказ "Абсолютная власть".

Здесь был ты - Рассказ "Дорога".

Здесь был ты - Повелитель зубов: пародия на одну популярную трилогию...

Почта - Обратная связь: ответное письмо Alex'а из Нижнего Тагила, выставленного в прошлом номере в "Уголок ламера".

Почта - Письма читателей: Андрей Яковлев, Денис Токарчук, Алексей Гаркулим, Александр Гордеев, Евгений Шумилов, Ниточкин Вадим, Михаил Ларкин.

Почта - бесплатная реклама и обьявления.

Разное - Страшилка.: Nemo рассуждает о месте PC и Spectrum'а в современной России.

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

Разное - анкета: Результаты нашего социологического опроса спектрумистов.

Разное - Конкурс. Краткий отчет о наших конкурсах.

Разное - Проблемы рынка ПО: когда загнется Спектрум. Во всем ли виноваты Хакеры?

Разное - Перспективы ПО. Краткий обзор готовящегося к выходу ПО: Fast Tracker, Pro Sound Creator, Чёрный Ворон.

Разное - Перспективы ПО. Адвентюра From Beyond или "Извне".

Разное - мемуары о Питерской модемной сети для ZX Spectrum - SPbZXNet.

Amiga Club - Между нами, пользователями: сравнение характеристик Amiga 1200 с IBM PC.

Amiga Club - сравниваем производительность Амиг и PC. Насколько Амига актуальна в современных играх?


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

Похожие статьи:
Music scene - ubiktune.org: chiptune lable.
Обратная связь - контакты редакции.
Если глючит модем... - вот вам советы от Hamer'a
Эпилог
Интерфейс - Письма читателей: Dawid Willis, Иван Рощин, Cav Inc. (конкурс на лучшее название для звуковой карточки, глюки в HRUST v1.0 и XAS v9.06+)

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