ZX Spectrum
Game

Plot / BASIC Variables List

Your Computer (Великобритания),

Автор:

Жанр: Программы и утилиты


Доступные версии

 Неофициальное издание
Играть!

Язык

  • Русский
  • English

Управление

  • Клавиатура(?)

Игроков

  • Один
  • Описание
  • Описание (авт.пер.)
  • Информация

Спектр MC / Basic                      Сортировка переменные

          Если вы обнаружите, что настройка параметров

          из рутины машина-кода является чем-то вроде           перетащить, программа Стюарта Николс ‘мог              дать вам лучшее из обоих миров.

Вы устали от того, чтобы установить параметры машинно

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

  Проблема устраняется путем установки значения с помощью Основные переменные и затем искать область переменных к найти их ценность и хранить их в запасных байтах буфер принтера.

  Чтобы продемонстрировать технику, я приложил поиска Программа на функцию, которая печатает сообщение в любом месте Экран с использованием символов любой высоты или ширины, в любом чернил цвет.

  Х и у переменные используются для начала сообще- Мудрец; так как они являются координаты левого верхнего угол первого символа сообщения обычным Участок спектра позиций применить. То есть, 0,0 является нижней левый угол экрана. Для высоты Cha- racters, ч используется. Нормальная высота 1, 22 будет полон Экран. Ширина символов 2. Нормальная ширина 1, 32 полный экран для одного персонажа.

  Строка, содержащая сообщение для печати будет $. Единственные ограничения на сообщения в том, что он может содержат только символы из кода 32 – космической – в коде 127 – Авторские права – и, что количество символов умножается по ширине характера не должна превышать 23 с сюжетом Положение на левом краю экрана. Если это экс- превышало программа не рухнет, но сообщение будет обернуть ширму наложение цветов, как она идет.

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

Машинный код, чтобы найти переменные х, у, ч, ш и $ является показано в листинге 1. [каталог 1 был код загрузчика, “большой” на TZX. Это загружен (и проверенный) код Де- машина описана, который находится на TZX как “largecode”.]   Если вы прочитали главу 24 Руководства Sinclair, Вы увидите, что существует шесть типов переменной, а именно: число, имя которого является одна буква – тип (я); ряд чье имя является одной букве – тип (б); Массив номера – тип (III); FOR-СЛЕДУЮЩЕЙ контур управления – типа (IV); Переменная строка – тип (v); массив символов – тип (VI).

  Каждая из этих переменных однозначно идентифицируется его Первый байт.

Я Тип переменной = 96d + (буквенный код – 96d) Тип переменной б = 160d + (первая буква кода – 96d) Тип переменной III = 128D + (буквенный код – 96d) Тип переменной IV = 224d + (буквенный код – 96d) Тип переменной v = 64d + (буквенный код – 96d) Тип переменной VI = 192d + (буквенный код – 96d) Переменные мы будем искать будет типа (я) и (v).

  Если мы возьмем, к примеру, переменную х, которая имеет Cha- racter код 120, затем по формуле (I), данное, его Уникальный первый байт 120. Поэтому, чтобы найти переменную х мы должны искать через переменные для этого уникального кода, который будет указывать на то начала х переменной ин- формация. Это не просто случай, проходящей через Переменные один байт в то время, используя инструкцию CPIR, так как это может найти код 120 состоится в строки или массива характеров. Таким образом, мы должны найти начало каждой переменной, проверить, если это тот, который мы хотели, и если нет, то перейти к начало следующей переменной. Это означает, что мы должны определить тип переменной нашел раньше мы знали, как далеко чтобы перейти к следующему. Это не так сложно, задача, как это может показаться на первый взгляд из-за способа, в котором Спектр хранит переменные параметры.

  С трех переменных, а именно массив чисел, Массив характера и строк, длина переменной проводится в двух байтов следующих уникальной байт-код.

Что более полезно, бит 5 уникального кода равна нулю и остальные три переменные имеют битовую 5 набор в одном.

  Длина трех остальных переменных можно вычислить вленные этим способом: Тип (я) длина = 6 байт, включая уникальный код.

Тип (б) длина = количество букв переменных + 5 байт.

Тип (IV) длина = 19 байт, включая уникальный код.

Теперь у нас есть информация, которая позволила нам, чтобы перепрыгнуть через каждый тип переменной, и проверки должны быть сделаны в follo- Порядок крыло: во-первых, проверить, если код 120; если да, то вернуться от рутины; проверить бит 5 и если нулевым скачком по     Значение в ближайшие два байта + 1: GOTO 1 Проверьте немного 6 и если нулевой чек следующие байты для             BIT 7 = 1 что это последний символ переменной, а затем перейти шесть байт и Goto 1. Проверьте но 7 и, если ноль, то прыгать 6 байт и Goto 1. Теперь она должна быть ЗА / NEXT цикл так прыгать 19 байт и Goto 1.

  Мнемоника из машинного кода, чтобы сделать это, показаны в Найти подпрограмма. При этом используется адрес 23728 провести Уникальный код переменной, для которых мы ищем.

HL регистр содержит адрес проверяемого, и точны mulator загружается с уникальным кодом из адресной 23728.

  Эта подпрограмма получает только 46 байт, чтобы проверить, прыгать и найти начальный адрес любой переменной.

  Теперь, когда мы обнаружили, начальный адрес нашего переменной х мы должны найти его значение. Вы увидите, что значение целые числа проводится в третьем и четвертом байтах follo- Крыло уникальный код. В нашем случае мы заинтересованы только в числа от 0 до 255 для х. Таким образом, мы можем игнорировать старший байт и хранить младший байт, то есть третий байт. Это относится ко всем нашим переменных х, у, ч и ш.

  Имея это в виду подпрограммы, установки, могут быть собраны двигаться по три байта с адреса, состоявшейся в HL и затем сохранить значение состоявшейся в этот адрес в принтере буфер область памяти. Так у нас теперь есть средства поиска и хранения ценностей х, у, ч и ш в адреса 23296/7/8 и 9.

  Теперь мы можем перейти к более сложного строки Параметры. В нашем случае мы должны найти $, уникальный код 65.

То же поиск процедура может быть использована, чтобы найти начало Переменная. После того, как обнаружили, что затем перейти к следующему двух байт найти LEN строки следующим образом:         INC HL         LD E, (HL)         INC HL         LD D, (HL) Это позволит поставить длину строки в регистре DE тер, и, как мы можем с уверенностью ограничить длину строки 255 символов нужно только, чтобы сохранить номер в низкий байт:         LD (23300), DE В адрес 23301 номер будет перезаписана с Первый символ в строке:         PUSH DE Получить количество символов в до н.э.

        POP BC         INC HL Комплект HL в начале символов         LD DE, 23301         LDIR Передача информации Выше будет передавать строковые символы Переменные в буфер принтера, начиная с адреса 23301.

  С этой рутины у нас теперь есть х, у, ч, ш, длины струнные, и символы в строке хранятся последовательно в буфер принтера, и может идти прямо в рутину к построить строку на основе этих параметров.

  Процедура сюжет найдет начало восьми байтов для каждый символ в символ, и для каждого байта, а Поворот влево инструкция осуществляется либо заговоре или unplotting зависимости, установлен ли переносить или нет. Опять использовать изготовлена ​​из двух неиспользуемых байтов в переменных систем 23728/9 держать и обновлять X, Y сюжетные позиции для каждого характер.

  Если положение у участка опускается ниже нуля, то он сбрасывается до 175, чтобы дать обернуть вокруг эффекта и также, если х Положение становится выше 255 это сбрасывается в ноль. Так что теперь у нас есть Машина-код программы, чем может быть вызван из Basic с нет тычет в поле зрения – например:     10 Пусть X = 0: Пусть у = 0: Пусть H = 8: Пусть W = 4:   ПУСТЬ $ = “Готовые”: INK 6: RANDOMIZE USR 32393 Это экономит 13 тычет в том числе LEN $. Листинг 1 [“большой”] показывает основную программу для настройки машинного кода выше RAMTOP. На 16K Spectrum это непосредственно перед пользовательские графики и занимает 255 байт. После того, как Машина-код введен Basic может быть обновленного и код сохраняется в обычном порядке.

  Есть несколько моментов, чтобы смотреть с этой программой. Во-первых, ensude, что все переменные определены прежде вызов на рутину, как неспособность найти переменную рухнет программу. Во-вторых, не используйте х, у, ч или ш в переменная управления в ПО-следующем цикле, поскольку спектр затем удалит простой переменной и использовать следующий FOR- петля провести дальнейшие значения х, у, ч и ш. Это может быть продемонстрирована путем простого Basic программы:     10 ДЛЯ = 1 TO 10     20 PRINT;     30 Вперед     40 LET = 3     50 Вперед Эта программа будет производить непрерывный цикл сброса, чтобы 3 и прыгать обратно в FOR-СЛЕДУЮЩЕЙ цикла показывает, что Переменная – – это линия 40 является частью ПО-СЛЕДУЮЩЕЙ петли Переменная управления. Если бы это было не так Спектр даст отчет об ошибке:     1 СЛЕДУЮЩИЙ без FOR, 50: 1   Вы можете иметь небольшой Basic подпрограмму отработать ширина символов и начальная позиция участок, чтобы дать Информация печатается централизованно на любой линии; такая программа приводится в листинге 2 с выборки распечатки. [Это называется “Земельный” на TZX, с одной линией добавленной к авто-загрузки машинный код.]   Теперь мы можем заняться программу машина-код для вывода всех переменные, используемые после программы была запущена. Учтите, что это не может быть все переменные в списке, как при Программа запуска некоторых подпрограмм, возможно, не был назван и так переменные, проведенные в те процедуры не были помещают в области переменных.

  Эта программа – список 3 – могут быть полезны в отладке Основные программы. Листинг 3 находится в виде машинного кода свалка, которая должна быть проведена в отчетности данные, как список 1, и ткнул в ячейке памяти по вашему выбору. Есть нет Перейти или вызов не команды в рамках программы. Я считаю, это удобно иметь две версии программы, один хранится выше RAMTOP и еще в линии 1 REM заявлении, содержащем 331 Нули и называется использованием         RANDOMIZE USR 23760 Машина-код затем провел в Основном области оперативной памяти и могут быть объединены с любым программы – до тех пор, как программа не есть линия 1, который будет переписан. Один следует отметить при сохранении заявление Основные REM на ленте будет использовать CLEAR, чтобы стереть все переменные, используемые в машино- Код загрузчика, в противном случае они будут сохранены и объединены вместе с REM заявлении. Это хорошая практика на любой про- грамм, которые не требуют переменные, чтобы спастись.

[Этот код, сохраняется как файл кода, готового быть загружен any- где в памяти, в том числе в REM заявлении вы должны хотите, это на TZX как “переменных”.]   В листинге 4 демонстрационная программа создания вариаций BLES, и показывает копию экрана выходного кода машинно- в котором перечислены эти переменные под их типов переменных.

Обратите внимание, как Спектр преобразует все переменные снизить Дело, а также, что переменные, ч, л, о, ж, х и г у были перечислены под FOR-следующем цикле только и не под число. [Это на TZX как “Basicvars”.]   Листинг 5 показывает машина-код мнемоники для сборки в REM заявлении, для тех, кто хочет проверить через программу, чтобы увидеть, как это работает. В первом разделе от адресов 5CD0 к 5CE5 устанавливает границы, бумагу и цвета чернил; от 5Ce6 к 5D46 печатает заголовок.

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

  На участке от 5D94 на 5DBE интересен тем, что это проверяет колонку идущие в нижней части экрана и если он затем ожидает нажатия клавиши перед прокруткой 21 линии, оставляя заголовок на экране и печати Следующий переменной в определенном положении. Возвращение в базовый осуществляется только когда все переменные были перечислены.

[Как листинг 5 не предусмотрено ничего, кроме голой сборки

дамп кода (с опечаткой, для загрузки), я не копируется это. Предложения 1 и 2, однако, сопровождались (unnum- запомнившего) шестигранные объявлений с метками (которые называются в статья). Порядок был не совсем рационально, но сортируются по адресу, были следующими эти объявления:]

Начальный адрес для 16K машинный код 32235

        ORG 32235 Подпрограмма найти переменные НАЙТИ LD HL, (23627) START: LD, (23728)         CP (HL)         RET Z         BIT 5, (HL)         JR NZ, NEXT         INC HL         LD E, (HL)         INC HL         LD D, (HL)         ДОБАВИТЬ HL, DE         INC HL         JR СНВ СЛЕДУЮЩИЙ: БИТ 6, (HL)         JR NZ, NEXT1 LOOP5: INC HL         LD, (HL)         BIT 7,         JR Z, СНВ LOOP6: LD DE, 6         ДОБАВИТЬ HL, DE         JR СНВ NEXT1: БИТ 7, (HL)         JR Z, LOOP6         LD DE, 19         ДОБАВИТЬ HL, DE         JR СНВ

Подпрограмма задать параметры переменной можно найти

УСТАНОВКА LD (23728),         ВЫЗОВ НАХОДКА         INC HL         INC HL         INC HL         LD, (HL)         LD (BC),         RET

Начало рутины машина-кода

RUN LD BC, 23296         LD, 120         Установление соединения         INC н.э.

        LD, 121         Установление соединения         INC н.э.

        LD, 104         Установление соединения         INC н.э.

        LD, 119         Установление соединения         LD, 65         LD (23728),         ВЫЗОВ НАХОДКА         INC HL         LD E, (HL)         INC HL         LD D, (HL)         LD (23300), DE         PUSH DE         POP BC         INC HL         LD DE, 23301         LDIR

Регулярное построить строку

        LD HL, (23296)         XOR         LD A, H         SBC, 176         JR C, ДА         LD H,         LD (23296), HL ДА: LD (23728), HL         LD HL, 23301 RUN1: PUSH HL         LD, (HL)         LD H, 0         LD L,         ДОБАВИТЬ HL, HL         ДОБАВИТЬ HL, HL         ДОБАВИТЬ HL, HL         LD DE, 15360         ДОБАВИТЬ HL, DE         LD B, 8 LOOP4: PUSH BC         LD BC, (23297) Loop3: LD, (HL)         PUSH HL         PUSH BC         LD B, 8 LOOP2: PUSH BC         РБА         PUSH AF         JP C, УЧАСТОК         LD HL, (23299)         LD, (23728)         ДОБАВИТЬ, L         LD (23728),         JP 32527 УЧАСТОК: LD BC, (23298) LOOP1: PUSH BC         LD BC, (23728)         PUSH BC         ВЫЗОВ 22E5H         POP BC         INC C         LD (23728), BC         POP BC         DJNZ LOOP1 END: POP AF         POP BC         DJNZ LOOP2         LD, (23296)         LD HL, 23728         LD (HL),         INC HL         XOR         LD, (HL)         SBC, 176         JR C, ОК         LD (HL),         JR CONT ОК: LD, (HL)         CP 0         JR NZ, OK1         LD (HL), 176 OK1: DEC (HL) CONT: POP BC         POP HL         DJNZ Loop3         INC HL         POP BC         DJNZ LOOP4         LD, (23299)         ДОБАВИТЬ A, A         ДОБАВИТЬ A, A         ДОБАВИТЬ A, A         LD L,         LD, (23728)         ДОБАВИТЬ, L         LD (23296),         LD (23728),         LD, (23297)         LD (23729),         POP HL         INC HL         LD, (23300)         Декабрь         RET Z         LD (23300),

        JP RUN1

Игра Plot / BASIC Variables List запускается прямо на сайте. Утилита для программной разработки, которую подарил миру Stewart Nicholls, была издана компанией Your Computer в 1983 году в Великобритании.

Не запускается или глючит игра, или не можете пройти? Спросите в комментариях.

avatar
  Subscribe  
Уведомлять об
 

Сохранённые игры[X]

  

Справка[X]

Помощь уже в пути!

Не забывайте периодически сохранять игровой прогресс на сервере (клавишей F8), чтобы уверенно продвигаться вперёд!

Если вы гость на сайте, то прогресс будет сохранён только в памяти браузера и потеряется при закрытии. Чтобы этого не произошло - просто войдите в свой профиль.

Для загрузки сохранённой игры жмите F3 или откройте меню "Диск" кнопкой на правой панели.

Если игра не запускается, или у вас есть вопросы по игре - задайте их ниже.

Помощь

Размер

  • x1 [256x192]
  • x2 [512x384]
  • x3 [768x576]
  • Полный

Диск

Кликни в окно эмулятора, чтобы управлять!
<<<<
Close