PAW Техническое руководство (продолжение) music by DNK (С) 1986 Gilsoft International Ltd. (C) 1996 Alex ASP, перевод _______________________________ VII. Детальное описание Базы Данных. База данных состоит из нескольких взаимосвязанных таблиц. Внутри содержится много разнообразной информации, например, значения фоновых цветов, число объектов, которые можно нести, символьные наборы и т.д. На 128К машинах основные области данных и указатели существуют для каждой RAM страницы. В действительности каждая такая страница является независимой базой данных. Таблицы разделяются на (в поряд- ке расположения их в памяти): 1) UDG (таблица символов графики,опреде- ляемых пользователем) Эта таблица, зани- мающая 152 байта, содержит символы UDG, которые могут быть изменены в редакторе символов, который будет описан ниже. Коды UDG находятся в диапазоне со 144 по 162. 2) Shades (таблица текстур) Эта таблица занимает 128 байт и содержит графические образы текстур, которые могут быть изме- нены в редакторе символов. Их коды нахо- дятся в диапазоне с 0 по 15. Эти две таблицы загружаются/записыва- ются вместе и определяются как символьный набор 0 не смотря на то, что ROM набор использует коды с 32 по 127. 3) Miscellaneous (таблица для всякой всячины) Несколько маленьких таблиц и ве- личин, общая длина - 50 байт. 4) Character Sets (таблица символьных наборов) Эта таблица пуста до тех пор, пока не будет введен символьный набор пу- тем использования редактора символов. 768 байт используется на каждый введенный символьный набор. 5) Dictionary (словарик компрессора) Эта таблица занимает всего 1 байт до тех пор, пока впервые не будет использован комп- рессор для сжатия базы данных. После это- го в ней хранится 222 байта, нужных для того, чтобы потом вместо токенов с кодами со 165 по 255 писать те группы букв, ко- торые эти токены заменяют. 6) The Process tables или таблицы про- цессов формируют 'сердце' базы данных, обеспечивая основное управление игры. 7) The Response Table или таблица отве- тов, строки которой содержат числовые значения глагола и существительного логи- ческого предложения, которые нужны для связи с кондактами. Если во время игры в этой таблице находится строка, совпадаю- щая с глаголом и существительным 1 из введенного LS, то выполняются кондакты. Те кондакты, что могут присутствовать и их действия полностью рассмотрены в опи- сании интерпретатора. Порядок Расположе- ния строк в таблице является возрастающим вместе с номером глагола. Строки, имеющие одинаковый номер глагола должы распола- гаться в возрастающем порядке вместе с номером существительного. Строки с одина- ковыми номерами глагола и существительно- го содержатся в той же последовательнос- ти, что были введены в базу данных. Слово "_" имеет значение 255, а слово "*" имеет значение 1. Пример порядка таблицы, где значения слов указаны в скобках: * (1) * (1) LOOK(30)UP (10) LOOK(30)DOWN(11) LOOK(30)_ (255) GET (100) * (1) GET (100) KEY (16) GET (100) LAMP(26) GET (100) LAMP(26) _ (255) _ (255) Другие таблицы процессов хранятся в таком же формате, но слова PAW игнорирует во время сканирования таблицы до тех пор, если процесс не был вызван из таблицы от- ветов действием PROCESS. 8) Process 1 Её сканирует PAW после опи- сания локации для печати дополнительной информации, которая формирует часть опи- сания локации. 9) Process 2 Её сканирует PAW после каж- дого временого фрейма, т.е. после каждой введенной игроком фразы и после каждого пустого действия. Любые другие подпроцессы следуют за начальными тремя, если инициализированы по выбору Process option (Опции процес- сов) из главного меню. Глагол и существительное используемые в каждой строке в таблицах процессов 1 и 2 (и в любых подпроцессах, вызванных из них) не имеют никакого значения, т.к. они игнорируются, но могут быть использованы как комментарий к действию этой строки таблицы. Каждая таблица процессов имеет заголо- вок в 7 байт (21 байт используется в пус- той базе данных, т.к. 3 таблицы, включая сюда и таблицу ответов, уже присутству- ют). Каждая строка использует 5 байт, а каждый кондакт - от 1 до 3 в зависимости от числа параметров. Замечание: Если удаляется слово из слова- ря, и ни один синоним этого слова не при- сутствует, то все строки в таблице проце- ссов, включая и таблицу ответов, содержа- вшие это слово, также удаляются. 10) Тhe Object Text table (таблица опи- саний объектов) имеет строку на каждый объект и содержит текст, который печата- ется, когда требуется описание объекта. Каждая строка занимает 3 байта плюс длину текста. В адвентюре объектом считается все то, чем можно манипулировать, и объ- екты нумеруются от 0 в сторону увеличения порядкового номера. Объект 0 принимается интерпретатором за источник света. Когда бы ни создавался новый текст объекта, строка not-created (не созданный) записы- вается для него в таблицу Initially at (таблица изначального положения), строка "_ _" записывается в таблицу слов объек- тов, вес одной единицы без атрибутов кон- тейнера и одеваемости записывается в та- блицу веса. 11) The Location Text table (таблица описаний локаций) имеет строку для каждой локации и содержит текст, который печата- ется при описании локации. Каждая строка занимает 3 байта плюс длину текста. Стро- ки нумеруются с 0 в сторону увеличения порядкового номера, и локация 0 считается локацией старта. Когда бы ни созавалась локация, нулевая строка для этой локации вставляется в таблицу соединений. 12) The Message Text table (таблица со- общений) Эта таблица содержит текст всех сообщений, используемых в игре. Сообщения нумеруются с 0 в сторону увеличения их порядкового номера, и каждое из них зани- мает 3 байта плюс длину текста. 13) The System Messages (таблица систем- ных сообщений) Эта таблица содержит сооб- щения, используемые интерпретатором. Каж- дое из них занимает 3 байта плюс длину текста. Использование этих сообщений по- казано в описании интерпретатора. Допол- нительные системные сообщения могут быть написаны создателем игры, если они будут му необходимы. 14) The Connections table (таблица сое- динений) содержит строки для каждой лока- ции, и каждая строка может быть либо пус- той, либо содержать некоторое количество 'пар движения'. Пара движения содержит значе ние слова (глагола или ковертируе- мого существительного) из словаря, за ко- торым следует номер локации. Это означа- ет, что любой глагол (или ковертируемое существительное) с этим словом обеспечи- вают переход в указанную локацию. Напри- мер, строка: SOUTH 6 EAST 7 LEAVE 6 NORTH 5 означает, что если будут команды SOUTH, LEAVE или их синонимы, то произойдет пе- ремещение в локацию 6, если EAST или его синoнимы, то в локацию 7, а если NORTH или его синонимы, то в локацию 5. Каждая строка использует 3 байта плюс по паре байт на каждую пару движения. Замечания: 1: Каждая пара движения содержит не са- мо слово, а его номер. Если номер слова удалить из словаря, то все пары движения, содержащие этот номер слова, будут также удалены. 2: Во время игры только глагол из LS обеспечит передвижение. 3: Если передвижение осуществляется строкой из таблицы ответов использованием действия GOTO, то не будет нужды в табли- це соединений до тех пор, пока эта строка не потребуется для передвижения PSI (псевдоинтеллектуального персонажа, что управляется компьютером). 15) The Vocabulary (словарь игры) Каждая строка этой таблицы использует 7 байт и содержит слово или первые 5 букв, если оно длиннее, тип слова от 0 до 6 и номер слова от 2 до 254. Типы слов следующие: 0 - глагол 1 - наречие 2 - существительное 3 - прилагательное 4 - предлог 5 - союз 6 - местоимение Слова с одинаковыми номерами слов на- зывают синонимами. Строки хранятся в со- ответствии с возрастанием значений слов, причем если номер слова одинаков для нес- кольких слов, то сначала идет то, у кото- рого больше пробелов, например: U UP CLIMB ASCEN(D) Если у строк с одинаковыми номерами слов одинаково число пробелов, то то сло- во, что было введено раньше, идет раньше, т.е. CLIMB введен раньше чем ASCEN(D). Замечания: 1: Где бы редактору не приходилось осу- ществлять переход от значения слова к са- мому слову, он возьмет первое попавшееся слово с данным значением нужного типа. 2: Глаголы и конвертируемые существи- тельные со значениями меньшими 14 должны быть зарезервированы для слов, обозначаю- щих передвижения. 16) The Object Initially At table (таб- лица изначального положения объектов) Эта таблица содержит 1 байт для каждой строки (для каждого объекта), обозначающий номер локации, в которой оказывается данный объект во время старта адвентюры. Он так- же может находиться на игроке, у него или быть not-created (не создан). 17) The Object Word table или таблица слов объектов содержит по 2 байта на объ- ект, эти байты занимают номера существи- тельного и прилагательного, ассоциируемых с этим объектом. 18) The Object Weight and Attribute tab- le (таблица веса и атрибутов объектов) Эта таблица содержит по байту на строку. Бит 7 используется для того, чтобы пока- зать, может или нет этот объект надевать- ся (т.e. WR опция). Бит 6 используется для того, чтобы показать,является ли объ- ект контейнером (опция C), а биты с 1 по 5 определяют вес объекта, который изменя- ется от 0 до 63. Область графики базы данных растет вниз от вершины памяти. 19) The Location Flags или флаги лока- ций. Таблица использует по байту на каж- дую картинку. Бит 7 определяет, может ли картинка отрисоваться по прибытию в лока- цию, т.е. что локация не является 'подп- рограммой'). Биты c 0 по 5 описывают на- чальные цвета бумаги и чернил для картин- ки. Бит 6 не используется. 20) The Picture Table (таблица картинок) Каждая строка таблицы занимает 3 байта плюс длину drawstring (дроустринга - пос- ледовательности команд рисования). Все- гда число строк совпадает с числом лока- ций. Дроустринг представляет собой набор команд разнообразной длины, которые уменьшают объем памяти, необходимой для получения картинки. 21) The Pointers (таблица указателей) Здесь содержатся главные указатели базы данных. VIII. Детальное описание Редактора. Каждая опция меню будет описана в по- рядке появления. 1) Vocabulary (Словарь). Insert I word No. Type (Ввеcти) No. находится в диапазоне от 2 до 254, а Type от 0 до 6. Если слово word еще не присутствует в словаре, оно вставляется со значением No. и типом Type. Delete D word (Удалить). Если слово word находится в словаре, то оно само, его тип и значение удаляют- ся. Если в словаре присутствуют синонимы удаленного слова, то никаких действий за удалением указанного слова не последует. Если синонимов этого слова не окажется, тогда: а) все строки таблицы процессов, исполь- зующие значение удаленного слова будут также удалены; б) если значение слова меньше 14, то все перемещения в таблице соединений, ко- торые используют значение удаленного слова, будут также удалены. в) все строки таблицы слов объектов, ко- торые используют значение удаленного слова устанавливаются в нуль. Show synonyms S word (Показать синонимы) Если слово word присутствует в слова- ре, оно и все другие слова, имеющие оди- наковое значение и тип, печатаются на эк- ран. Заметьте, что если это использовать для конвертируемых существительных, а их чуть меньше 20, то все глаголы-синонимы будут также напечатаны, и наоборот. Print P (Type) or L (Type) (Печать) Печать ведется или на экран (P), или на принтер (L). Если определен тип Type, то печатаются слова только этого типа. Замечания: 1: Будьте внимательны, используя удале- ние, т.к. оно может сказаться на таблицах процессов, соединений и слов объектов. Удаление также может занять много времени (минуты), если база данных будет большой. 2: Существительные и глаголы со значени- ем, меньшим 14, задуманы как слова перед- вижения, поэтому будет напечатано SM7 ("I can't go in that direction." "Не могу ту- да пойти.") вместо SM8 ("I can't do that" "Не могу сделать это."). 3: Cлова с номерами от 2 до 254 могут быть использованы для каждого типа слов. Они не будут синонимами, так как будут разного типа. Это позволяет получить бо- лее 250 слов для каждого типа, и это не включая синонимы. 2) Location Text (Текст локаций). Insert I (Вставить) Если было вставлено максимальное число локаций, получим ошибку "Limit Reached" "Достигнут предел". В противном случае находится следующий доступный номер лока- ции из самой большой по номеру использо- ванной RAM страницы, показываемой по оп- ции Free Memory (свободная память), и вставляется для этой локации нулевой текст в таблицу описания локациий. Затем возобновляется работа и автоматически вы- зывается подпрограмма, позволяющая созда- телю игры исправить только что записанный в таблицу описания локаций нулевой текст. Begin new Page B (Начать новую страницу) Если все RAM страницы были использова- ны или было вставлено в игру максимальное число локаций, то появится ошибка "Limit Reached" "Достигнут предел". В противном случае на следующей свободной RAM страни- це создается нулевая база данных и запи- сывается следующий свободный номер лока- ции. Затем работа возобновляется с вызова подпрограммы, позволяющей создателю игры изменить нулевой текст на новой странице. Amend A locno. (Исправить) Существующий текст локации locno. ко- пируется в буфер ввода и отображается в нижней части экрана для исправления. По нажатию ENTER существовавший ранее текст заменяется на содержимое буфера ввода. Print P (locno.) or L (locno.) (Печать) Печать происходит либо на экран (P), либо на принтер (L). Печать начинается с локации с номером locno., а при отсутс- твии этого параметра - с самого начала. Замечания: 1: Старт игры всегда происходит с лока- ции 0. 2: Максимально может существовать 252 локации.. - 3: Вы не сможете начать новую страницу, если все доступные номера локаций уже за- няты. 3) Connections (Соединения). Amend A locno. (Исправить) Существующая строка для локации locno. декодируется, копируется в буфер ввода и печатается в нижней части экрана для ис- правления. По нажатию ENTER буфер ввода должен быть либо пуст, либо содержать строку формата word locno., повторяющуюся несколько раз. word должно являться гла- голом или конвертируемым существительным, находящимся в словаре, а locno. должен находиться в таблице описания локаций. Если не будет обнаружено синтаксичес- ких ошибок, то ранее существовавшая стро- ка будет заменена закодированой копией буфера ввода, т.е. все слова будут заме- нены на их значения. Print P (locno.) or L locno. (Печать) Печать происходит либо на экран (P), либо на принтер (L). Печать начинается с локации с номером locno., а при отсутс- твии его - с самого начала. Замечания: 1: Описание локации должно присутство- вать перед тем, как будет присутствовать строка для этой локации в таблице соеди- нений. 2: Любой глагол (или конвертируемое су- ществительное, находящееся в словаре мо- жет быть использовано в таблице соедине- ний, а не только слова, обозначающие пе- редвижение. 3: Когда строка декодируется для исправ- ления или печати, номер слова заменяется на первый попавшийся глагол (или конвер- тируемое существительное), который будет найден в словаре, имеющий такое же значе- ние слова. 4) Graphics (Графика). Amend A picno. (Исправить) Графическая база данных расширяется для получения пустого места в конце тре- буемой картинки. Затем происходит вход в главный цикл графического редактора, ко- торый будет описан ниже. По выходу из не- го все еще оставшееся пустое место удаля- ется. Замечание: В отличие от редактирования текста, происходят изменения в самой базе данных, поэтому Вы не сможете прервать редактирование с отменой введенных дей- ствий по CAPS SHIFT '& 6, т.к. будет вы- полнена команда NEXT. Size S (Размер) Подсчитывает и печатает число байт, находящихся между началом текущего дроу- стринга и началом следующего. Print, Copy and Dump. P picno., C picno. и D picno. (Распечатать, скопировать и сохранить) picno. всегда должен быть определен. Если выбрано (P), то запрашивается имя файла. Нужная картинка отрисовывается на экране. Если выбрано (C), то вызывается команда принтера COPY (более подробное описание находится в разделе о принте- рах). Если выбрано (D), то записывается SCREEN$ файл (16384,6912), который может затем быть использован как заставка к иг- ре или может быть отредактирован в любом другом графическом редакторе. Заметьте, что SCREEN$ файл не может быть загружен в базу данных. 5) Default Colours (Цвета по умолчанию). Amend A picno. (Paper Ink) (Исправить) Для того, чтобы можно было узнать, что картинка picno. является подпрограммной до тех пор, пока не будут установлены цвета бумаги PAPER и чернил INK, устана- вливается флаг. Когда же они будут опре- делены, то будут сохранены как цвета по умолчанию для этой картинки. Все те ло- кации, которые не требуют картинки, будут установлены как подпрограммные. Print P or L (Печать) Печать происходит либо на экран (Р), либо на принтер. Если локация не является подпрограммной, то будут распечатаны цве- та. 6) Messages (Сообщения). Insert I (Вставить) Находится следующий доступный номер сообщения и для него вводится нулевая строка в таблицу сообщений на наивысшую использованную RAM страницу (показывается в опции Free Memory). Происходит автома- тический вызов процедуры для исправления, чтобы создатель мог исправить нулевую строку. Begin new Page B (Начать новую страницу) Следующий доступный для сообщения но- мер записывается на следующей RAM страни- це, если она была инициализирована из ме- ню описания локаций. В противном случае происходит ошибка "Page not initialised" "Страница не инициализирована". Обработка продолжается с автоматического запуска подпрограммы для исправления создателем игры нулевой строки. Amend A mesno. (Исправить) Существующее сообщение mesno. копиру- ется в буфер ввода и печатается в нижней части экрана для исправления. По нажатию ENTER существовавший ранее текст заменя- ется на содержимое буфера ввода. Print P (mesno.) or L (mesno.) (Печать) Печать происходит либо на экран (Р), либо на принтер (L). Печать начинается с сообщения с номером mesno., а при отсут- ствии указания номера - с самого начала. Замечания: 1: Существует ограничение в 255 сообще- ний, но т.к. можно вставлять и печатать системные сообщения, то их можно также использовать в игре, что обеспечивает ис- пользование 510 сообщений, хотя некоторые из них уже использованы. 2: Вы не можете начать новую страницу для сообщений прежде чем инициализируете страницу путем помещения на нее локации. 7) System Messages (Системные сообщения) Insert (Вставить) Следующий доступный номер системного сообщения находится и для него записыва- ется нулевая строка в таблицу системных сообщений в 0 страницу RAM. Затем осущес- твляется автоматический вызов процедуры для исправления создателем игры нулевой строки. Amend A mesno. (Исправить) Существующее системное сообщение mes- no. копируется в буфер ввода и печатается в нижней части экрана для исправления. По нажатию ENTER существовавший ранее текст заменяется на содержимое буфера ввода. Print P (mesno.) or L (mesno.) Печать происходит либо на экран (Р), либо на принтер (L). Печать начинается с системного сообщения с номеаом mesno., а при отсутствии указания номера - с самого начала. Замечания: 1: В описании интерпретатора указаны случаи, во время которых используются системные сообщения, но текст сообщений может быть изменен, например, чтобы вмес- то "I" "Я" использовать "You" "Вы", т.е. получить "You're not wearing it" "На Вас это не надето", или для использования другого языка, но будьте внимательны и сохраните значение этих системных сообще- ний. 2: Сообщения 30 и 31 в действительности сообщениями не являются, но содержат по- ложительный и отрицательный ответы, ис- пользуемые в кондактах QUIT и END. Поэто- му будьте осторожны, если будете изменять их, потому что END является главным спо- собом попадания обратно в редактор из ин- терпретатора. Вы не должны делать их бо- лее длинными, чем одна буква, иначе комп- рессор может использовать в них токены. 3: SM10 (" (worn)" " (надето)") имеет длину, вычисляемую INVEN. Это означает, что оно не должно содержать никаких уп- равляющих кодов и должно быть введено за- ново, если компрессор использует в нем токены. Для того, чтобы правильно рассчи- тать местоположение на экране, это сис- темное сообщение должно начинаться с про- бела. 4: SM34 (курсор) может содержать любые управляющие коды, но не должно сдвигать позицию печати более чем на 1 пробел, так как иначе ввод будет неправильным. Каждая введенная буква будет иметь временный цвет до конца сообщения. 5: Оставшиеся 202 сообщения могут быть использованы для нужд создателя игры, но так как не будет эквивалента для действия MESSAGE, то действие NEWLINE должно быть выполнено при необходимости. 6: PAW использует сообщения с 54 по 60. Вы это должны иметь в виду, если Вы собе- ретесь переводить игру в другую систему. 8) Object Text (Описание объектов). Insert I (Вставить) Следующий доступный номер объекта на- ходится и для него записывается нулевая строка в таблицу Object Text. В таблицу Initially at (таблица изначального поло- жения) заносится строка not-created, в таблицу Object Word (таблица слов объек- тов) заносится '_ _', а в таблицу Object Weight (таблица веса объектов) заносится вес в одну единицу без всевозможных атри- бутов. Затем осуществляется автоматичес- кий вызов процедуры для исправления соз- дателем игры нулевой строки в таблице Object Text. Amend A objno. (Исправить) Существующий текст для объекта objno. копируется в буфер ввода и печатается в нижней части экрана для исправления. По нажатию ENTER существовавший ранее текст заменяется на содержимое буфера ввода. Print P (objno.) or L (objno.) (Печать) Печать происходит либо на экран (Р), либо на принтер (L). Печать начинается с описания объекта с номеаом objno., а при отсутствии указания номера - с самого на- чала. Замечания: 1: Объект 0 принимается интерпретатором за источник света. 2: Существует ограничение на число об- ъектов. Максимум - 255. 9) Object Initially At (таблица изна- чального положения объектов) Эта таблица определяет номер локации, в которой находится предмет в самом нача- ле игры. Amend A objno. locno. (Исправить) Существующая строка для объекта objno. заменяется на locno., который должен либо находится в таблице Location Text (табли- це описания локаций), либо быть равным номеру спецлокаций: 252 - not-created (не создан), 253 - worn (надет), 254 - carried (несет игрок). Print P or L (Печать) Печать происходит либо на экран (Р), либо на принтер (L). Замечание: Описание объекта должно при- сутствовать до того, как будет определена стартовая локация. 10) The Object Word (Таблица слов объек- тов). Amend A objno.Noun Adjective (Исправить) Существующая строка для объекта objno. заменяется на значение Noun и Adjective (существительного и прилагательного), ко- торые должны находится в словаре (Vocabu- lary) или быть равными '_', что означает установку строки в нуль. Print P or L (Печать) Печать происходит либо на экран (Р), либо на принтер (L). 11) The Object Weight (Вес объектов). Amend A objno. Weight Option (Исправить) Существующая строка для объекта objno. заменяется на вес Weight и опцию Option. Вес должен находится в диапазоне от 0 до 64. Опции таковы: 0 - Обычный объект 1 - Объект является контейнером / 2 - Объект является носимым/снимаемым 3 - Носимый/снимаемый контейнер Print P or L Печать происходит либо на экран (Р), либо на принтер (L). После веса могут быть напечатаны символы 'С', если объект является контейнером и/или 'WR', если он носимый/снимаемый. Замечания: 1: Вы можете задать опцию контейнера только в том случае, если существует ло- кация с таким же номером. PAW рассматри- вает такую локацию как внутреннее прост- ранство контейнера. 2: В контейнере с весом 0 все объекты станут весить 0 (пока они в контейнере). Это можно использовать для получения раз- личных 'магических мешков', левитационных транспортеров и т.д. 12) The Process (including Response) -tables Таблицы процессов (включая таблицу Ответов) Две опции доступны только из подменю главной таблицы процессов: Begin new Table B (Начать новую таблицу) Находится следующий доступный номер для процессов и создается нулевая табли- ца. Обработка возобновляется с вызова оп- ции выбора таблицы (Select Table) c новым номером таблицы. Select table S No. (Выбрать таблицу) Нужная таблица получает статус только что выбранной, затем заново отображается подменю. Остальные опции доступны из подменю обоих таблиц: Amend A Verb Noun (n) (Исправить) Если номер n строки не указан, то пер- вая строка из таблиц Verb и Noun (глагола и существительного) копируется в буфер ввода и выводится в нижнюю часть экрана для исправления. Если же этот номер будет указан (диапазон от 0 до числа вставлен- ных строк минус 1), то все это произойдет со строкой, имеющей данный номер. По на- жатию ENTER входной буфер проверяется на пустоту, и если он пуст, то строка с ука- занным номером удаляется. Если же буфер не будет пуст, то при отсутствии синтак- сических ошибок строка с введенным номе- ром будет заменена на содержимое буфера. Все другие строки из таблицы с этими же значениями глагола и существительного бу- дут также выведены в нижнюю часть экрана для исправления. Insert I Verb Noun (n) (Вставить) Глагол и существительное должны быть либо словом из словаря (Vocabulary), либо '_', либо '*'. Значения глагола и сущес- твительного ('_' имеет значение 255, а '*' - значение 1) используются для того, чтобы найти правильное место в таблице для новой создаваемой строки. Если уже существуют строки для такого глагола/су- ществительного, но ни один номер n строки не определен, то новая строка будет поме- щена после существующих строк. В против- ном случае строка будет помещена перед строкой с указанным номером. В найденном месте записывается нулевая строка и вызы- вается подпрограмма для изменения созда- телем игры этой нулевой строки. Кондакты, которые можно использовать, приводятся в описании интерпретатора и в приложении в конце руководства. Print P (Verb (Noun)) or L (Verb (Noun)) Печать происходит либо на экран (Р), либо на принтер (L) и начинается с первой строки, имеющей то же значение, что и глагол/существительное. Если глагол или существительное не определены, то пред- полагается значение равное 0, поэтому по умолчанию печать пойдет с начала таблицы. Замечания: 1: Чтобы удалить строку, достаточно выз- вать ее на исправление (Amend) и удалить все выведенное в нижнюю часть экрана. 2: Существует ограничение на число таб- лиц процессов. Максимум - 255. Вызовы мо- гут быть вложенными до 10 уровня, после чего произойдет ошибка. 13) Extra Options (Дополнительные оп- ции). Печатает продолжение главного меню. 14) Test Adventure (Тестирование игры). Появляется запрос "Do you require di- .аgnоstics?" - "Нужна ли диагностика?", и любой ответ, отличный от "Y" "Д" будет означать отказ. После этого произойдет переход в интерпретатор. Если была выбра- на диагностика, то в любом месте, где ис- пользуется внутренняя подпрограмма ввода интерпретатора, нажатие ENTER при пустой строке ввода приведет к печати значения флага вместе с промптом ввода. Здесь Вы можете ввести номер другого флага, кото- рый Вы хотите увидеть, или "=" с последу- ющим числом, что приведет к установке в текущем флаге указанного значения. Пов- торное нажатие ENTER приведет к возврату в ввод. Основным способом возврата в редактор из интерпретатора является выполнение действия END в таблице процессов. 15) Free Memory (Свободная память). Печатается число неиспользованных байт на каждой RAM странице. Те страницы, ко- торые не были инициализированны, показаны как "Unused" "Не использованы", и если страница 7 содержит оверлеи, то это также отображается. Следом за этим списком бу- дет распечатан список последних на каждой странице сообщений и локаций, чтобы Вы могли отследить их. Замечание: На 48К машине будет выведена лишь страница 0. 16) Background Colours (Фоновые цвета). Здесь могут быть установлены коррект- ные величины BORDER, PAPER и INK. Реко- мендуется устанавливать INK 9 (т.е. кон- трастный цвет чернил), но имейте ввиду, что в нижней части экрана INK 9 ведет се- бя несколько по-другому. К тому же, если в базу данных были введены какие-нибудь символьные наборы, то здесь вы им сможете дать статус основ- ного. 17) Characters (Символы). Символы представляют собой матрицу размером 8х8 и определяют, как будут вы- глядеть на экране буквы, цифры, знаки пунктуации, UDG и текстуры. Изначально присутствует единственный символьный на- бор - тот, что прошит в ROM (ПЗУ). Он также содержит 16 текстур (коды от 0 до 15), 19 символов UDG (коды от 144 до 162) и называется Set 0 (Набор 0). Insert I (Вставить) Если число символьных наборов не до- стигло максимума, то выделяется следующий доступный номер набора, в таблицу симво- лов (Character Set) вставляются 768 байт, куда копируется содержимое 96 символов с кодами от 32 до 127 из ПЗУ, в противном случае возникнет ошибка "Limit reached" "Достигнут предел". Amed A set character (Исправить) Символ character из набора set копиру- ется на экран для изменения. Из набора 0 могут быть отредактированы лишь символы с кодами от 0 до 15 и от 144 до 162, в то время как из остальных наборов могут лишь быть отредактированы символы с кодами от 32 до 127. В редакторе появятся 3 экран- ных области: 1. Сетка. В этой части экрана можно увидеть сим- вол, увеличенный в 8 раз и показанный в виде сетки из белых и желтых квадратов, причем каждый отвечает за свой бит в сим- воле. На сетке также можно увидеть крас- ный мерцающий квадрат - он показывает ме- стоположение курсора. 2. Проверочная область. Правее Сетки можно увидеть два окна, в которых можно увидеть символ таким, как если бы это была текстура, в нормальном и инверсном состоянии. Эти изображения не изменяются в процессе редактирования сим- вола, но могут быть перерисованы по нажа- тию клавиши 'R'. 3. Область состояния. Здесь можно увидеть сам символ, сим- вольный набор и список доступных команд. Для редактирования символа используют- ся курсорные клавиши (CAPS SHIFT и одна из ряда от 5 до 8 на 48K машине), посред- ством которых перемешается мерцающий кур- сор. Для изменения состояния бита симво- ла, на который указывает курсор, можно нажать SPACE. По нажатию ENTER отредакти- рованный символ будет скопирован обратно в базу данных, в то время как по нажатию 'Q' будет осуществлен выход из редактиро- вания без сохранения изменений в символе. Print and Copy sets P or C (Печать) Печатает на экран введенные символы UDG, текстуры и символьные наборы. Если был выбран С, то отрабатывается команда принтера COPY (подробности - в разделе, посвященном принтерам). Load and Save sets L set or S set (Загрузка/запись) Если символьный набор set был введен, то запрашивается имя файла, десятый сим- вол заменяется на знак (с), затем файл с введенным именем загружается/записывает- ся. При загрузке/записи символьного набо- ра 0, происходит вышеуказанное действие с 286 байтами, содержащими UDG и текстуры. Замечания: 1: Вы не сможете исправить символ или загрузить символьный набор до тех пор, пока не вставите его командой Insert. 2: Файлы символьных наборов, отличных от нулевого, являются стандартными и могут быть отредактированными в любом редакто- ре, позволяющем работать с ними. Для заг- рузки такого символьного набора в PAW не- обходимо, чтобы десятый символ в имени файла был (с). 3: В дисковой версии могут быть незначи- тельные различия. 18) Compress Text (Сжатие текста). Печатается "Compress database (Y/N)?" "Сжать базу данных (Д/Н)?", и любой от- вет, отличный от "Y" "Д" будет считаться отрицательным, и произойдет возврат в ос- новное меню. Если ответ был положитель- ным, то в базу данных вставляется словарь из 222 байтов. Затем производится скани- рование базы данных на предмет наличия 90 наиболее употребительных сочетаний букв, которые при обнаружении заменяются на то- кены с номерами от 154 до 255. Такой ме- тод сжатия позволяет уменьшить размер текстов приблизительно на 40%, что на 128К машине даст приблизительно 160К ра- бочего пространства. Замечания: 1: Во время редактирования курсор может перескакивать не на один, а сразу на нес- колько символов из-за токенизации текста. При исправлении такого места нужно уда- лить токен и заново ввести все символы - они снова станут токеном после того, как вновь будет выбран пункт Compress text. 2: При компрессировании будет происхо- дить замена нескольких наиболее употреби- тельных ДЛЯ АНГЛИЙСКОГО ЯЗЫКА сочетаний букв на токен! 19) Save Database (Записать базу дан- ных). База данных записывается в виде после- довательности вайлов, по два на страницу. Десятая позиция в имени файла заменяется на буквы от А до L - порядок следования файлов. 20) Verify Database (Проверка базы дан- ных). Происхоздит проверка сохраненной базы данных на идентичность с содержимым памя- ти. 21) Load Database (Загрузить базу дан- ных) Файлы базы данных загружаются в память и затирают находившуюся там базу данных. Замечания: 1: Если во время загрузки будет найдена ошибка или нажат BREAK, то та база дан- ных, что будет находиться в памяти, будет нерабочей. Такую базу данных нельзя ис- пользовать, так как это может привести к неверной работе как интерпретатора, так и редактора (вплоть до отвисания машины). Единственной безопасной командой является Load Database в редакторе, которая и должна выполняться до успешной загрузки базы данных в память. 2: В дисковой версии могут быть незначи- тельные изменения. 22) Save Adventure (Запись игры). Записывает интерпретатор и базу данных в виде последовательности файлов с ука- занным именем таким образом, что игру мо- ,жно запустить как любую обычную программу без PAW. 23) Verify Adventure (Проверка игры). Проверяет правильность записи игры. _______________________________