ZX Spectrum
Game

Extended BASIC [1]

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

Автор:

Жанр: Программирование: BASIC


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

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

Язык

  • Русский
  • English

Управление

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

Игроков

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

Расширенная Basic

Использование интерфейса 1, то можно расширить спектр-х

Основные переводчик и добавить свои собственные команды – см, для пример, статья Кэтлин Пил в феврале [1984] Компьютера. Я обнаружил еще один способ делать это который не использует интерфейс 1, и будет работать ли или не он установлен. Он может быть использован на любой Spectrum, либо 16K или 48K.

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

  Любая новая команда, которую вы решили использовать должны потерпеть неудачу нормальный проверки синтаксиса в ПЗУ. Два способа сделать это в особенно подходит для этого метода. Проще всего использовать один из ключевого слова жетоны RND к этапу, как вашей команде. Листинг 1, например, демонстрирует экран $, используемые в данном способ. Отметим, что это не влияет на нормальное использование Маркер – например SCREEN $ в зависимости.

  Другой метод придумывать новые слова, такие как * RENUM и * Trade, которые должны были бы быть напечатаны буква за буквой.

“*”, Или другой смещается характер, требуется, чтобы получить из режима K курсора. Как и любой другой команды, ваш новый можно было бы затем последует ряда параметров – для пример * RENUM 100,10 может пронумеровать от линии 100 с шагом 10.

  Программа в листинге 1 наборы и демонстрирует использование новой команды SCREEN $, который можно использовать для изменения бумага и чернила цвета на весь экран без стирания его содержание. Новая команда имеет синтаксис:         ЭКРАН $ цвет бумаги, цвет чернил               (Например экран $ 5,1)   Листинг 1 может использоваться на обоих 16K и 48К компьютеров.

Первый тип в линии от 1 до 21. Эти строки настроить машину Код рутина, которая признает, синтаксис проверки, и меж- prets новая команда.

  Машина-код загрузчика включает в себя контрольную сумму, но даже в этом случае лучше сэкономьте эти строки, прежде чем попробовать RUN, потому что, если вы сделали ошибку в отчетности DATA компьютер может зависнуть. Если все кажется хорошо, когда тебя RUN эти строки, вы можете протестировать новую команду, набрав:         ЭКРАН $ 5,1 как прямой команды, которая должна изменить цвета экрана в голубой бумаге и синими чернилами. Если это работает, вы можете сейчас Удалить строки с 1 по 19 перед входом в остальной части Программа. Вы должны оставить линий 20 и 21, однако, в противном случае Новая команда не будет признана, когда вы запустите Программа.

  Метод для добавления новых команд для перехвата подпрограмма обработки ошибок, который используется интерпретатором, когда неправильная команда обнаружили. Адрес ошибки подпрограмма нижний элемент в стеке машины, и это является указывает системной переменной ERR SP – адрес 23613/4.

Возникновение ошибки (либо во время синтаксического-контроля или выполнения) вызывает следующие действия из ПЗУ: # Адрес достиг интерпретатором – системная переменная CH ДОБАВИТЬ – копируется указатель ошибки – X PTR.

# Код ошибки помещается в ERR NR. Код ошибки является одним меньше, чем отчет кода, который напечатан после выполнения Ошибка. Например, код ошибки 255 для доклада 0 (ОК), и является 11 для отчета C – Ерунда в BASIC.

непризнанная команда будет иметь код ошибки 11 при как проверка синтаксиса и выполнения.

# Указатель стека загружается из ERR SP, и поэтому он указывает к нижней элемента в стеке машины.

# Плавающей точкой калькулятор стек и область памяти очищается.

# Машина инструкция код RET удаляет нижнюю пункт из стека и переходит к этому адресу. В то время как syntax- проверки, этот адрес обычно 12B7 Hex, и вызывает оскорбления линия будет отображаться с маркером в правиль- ветствующих положение. Во время выполнения адрес, как правило, 1303 Hex, который останавливает программу и отображает сообщение с отчетом.   К POKEing начальный адрес вашей обычной машины кода на дне стека, вы можете отвлечь ошибку рутина. Это дает вам шанс узнать, является ли Ошибка была вызвана переводчика, достигающего один из ваших новые команды. Если это так, ваша программа может взять на пересечение тация заявлении.

  Это можно понять более четко, исследуя список 2, в разобранном рутина для интерпретации экран $ Команда, используемая в данном примере. Есть несколько важных части в этой рутины, которые будут полезны для вас в создавать свои собственные новые команды.

  Первое, что нужно сделать, это убедиться в том кодом ошибки является 11 для Ерунда в BASIC. Если нет, то вернуться к ROM рутина или для синтаксиса или ошибку времени после нажатия адрес вашей обычной на дно стека – это будет решаться ERR SP готовы к следующей ошибке.

  Если код ошибки был 11, то ошибка может быть вызваны вашей новой команды. На этой стадии, системная переменная CH ДОБАВИТЬ указывает на характер в строке после одного которая вызвала ошибку. Если ваша команда использует один из токены РНД ШАГ – например, SCREEN $ – то это легко Тест для соответствующего кода. Если вы выбираете новые ключевые слова которые набираются по буквам, например * RENUM, то каждый Характер должен быть индивидуально протестированы, и CH ДОБАВИТЬ расширенный вдоль линии, как это сделать с помощью RST 18h и RST 20H – см таблицу 1. Если новая команда не вызывает ошибка, то возвращение к ПЗУ можно сделать.

  После определения команды, ваша подпрограмма должна сделать уверен, что за ним следует правильное количество выражений различными факторами, и в процессе работы они должны быть оценены. Самый простой способ сделать это состоит в использовании подпрограммы линейного сканирования в ПЗУ – см таблицу 1.

  Перед вызовом этих, CH ДОБАВИТЬ должен указывать на первый Характер экспрессии, и после этого он будет указывать к характеру следующем выражении. Во время выполнения, Значение выражения ставится в стек калькулятора.

  Конечный проверка синтаксиса, которые должны быть сделаны, чтобы это обеспечить, что последний символ утверждения Enter или толстой кишки. CH ДОБАВИТЬ должен указывать на этого персонажа, в противном случае Основные переводчик будет расстроен, когда вы вернетесь. Если syntax- проверки, возврат теперь можно сделать после сброса стек.

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

  Любое количество новых команд могут быть добавлены к границе раздела Preter с помощью этого метода. Каждый будет необходимо самостоятельно Синтаксис проверка и процедура выполнения. Если вы хотите попробовать это для себя, например, в листинге 2 даст вам Идея о том, что участвует.

  После написания вашей обычной машинный код, он может затем быть загружается в память. Лучшее место, чтобы поставить его выше RAMTOP, используя команду CLEAR, чтобы зарезервировать некоторое пространство для это. Прежде чем ваш новая команда (ы) будут признаны, вы должны POKE начальный адрес подпрограммы машина-код на Нижний конец пачки, как и в строках 20 и 21 листинга 1.

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

В тычет необходимы в программе преодоления этого.

В листинге 2.

         ORG RAMTOP + 1; рутина самостоятельно менять место жительства, но

                          ; Необходимо поставить чуть выше RAMTOP START LD, (23610); Был код ошибки = 11 для          CP 11; “Чепуха в BASIC”?

         JR Z, ерунда ОШИБКА BIT 7, (IY + 1); бит 7 флагов установлен во время выполнения          JR NZ, RunError SYNTXERR LD HL, (23730); Синтаксическая ошибка. START = RAMTOP + 1.

         INC HL; START ставится на дно стека          PUSH HL; готов к следующей ошибке.

         JP 12B7H; Вернуться к ПЗУ по этому адресу.

RunError ЗВОНОК 1303H; Ошибка выполнения – продукция докладе.

         LD (IY + 0), 255; Очистить число ошибок          LD HL, (23641); удаление с плавающей точкой формы от          ВЫЗОВ 11A7H; линия в области редактирования, прежде чем          LD HL, (23730); делать проверку синтаксиса          INC HL; Положите START на дне стека          PUSH HL          JP 12B4H; Вернуться на диске ЕРУНДА LD HL, (23645); CH ДОБАВИТЬ это адрес достигается          Декабрь HL; переводчик. Получить характер          LD, (HL); которая вызвала ошибку.

         CP 170; Было ли это SCREEN $?

         JR NZ, ОШИБКА; Ошибка, если не.

         LD (IY + 0), 255; Сброс ERR NR и X PTR, а затем          LD (IY + 38), 0; проверить на двоих          ЗВОНИТЕ 1C7AH; числа, разделенные запятой. Если не          BIT 7, (IY + 0); нашел, ERR NR укажет          JR Z, ОШИБКА; ошибка. CH ДОБАВИТЬ был выдвинут          CP 13, и содержит следующий символ          JR Z, ОК; которые должны быть ENTER или толстой кишки          LD (IY + 0), 11; еще дать “Чепуха в BASIC”          CP 58; ошибка.

         JR NZ, ОШИБКА ОК LD (IY + 0), 255; Синтаксис в порядке, так сбросить ERR NR          BIT 7, (IY + 1); Если во время выполнения теперь команда может быть          JR NZ, DO-IT; повиновался          LD HL, (23730); остальное адреса START и          INC HL; 12B7H ставятся в стек и а          PUSH HL; возврат к ПЗУ производится.

         LD HL, 12B7H          PUSH HL          JP 1B76H DO-IT LD HL, (23693); Выполнение. Первые постоянные цвета          LD (23695), HL; копируются временные цветов.

         ВЫЗОВ 1E94H; цветные чернила разобран          CP 8; Если это было 8, оставшихся чернил          JR Z, БУМАГИ; без изменений, иначе рутина ROM          LD D, A; используется для изменения ATTR T чернила          SCF          ВЫЗОВ 2235H ДОКУМЕНТ ЗВОНОК 1E94H; цвет бумаги является разобран, и          CP 8; если это не было 8, подпрограмма ПЗУ          JR Z, OUT; снова используется          LD D,          И          ВЫЗОВ 2235H OUT CALL-1CADH; Temp цвета сделаны постоянными.

         LD, (23693); инструкция LDIR используется, чтобы сделать          LD HL, 5800H; Атрибуты цвета те же          LD DE, 5801H; как ATTR P.

         LD BC, 2FFH          LD (HL),          LDIR          LD HL, (23730); START ставится на дно          INC HL; стек готов к следующей          PUSH HL; ошибка, и возвращение к ROM

         JP 1B76H; производится.

Таблица 1.

АДРЕС (Hex)

   18 RST 18H загружает аккумулятор с характером

           из программы, адресованного CH СДВ. Номера для принтеров            способные символов (например цвет коды) игнорируются            и CH ДОБАВИТЬ расширенный пока действует персонаж не является            нашли.

   20 RST 20H. CH ДОБАВИТЬ увеличивается и на следующий

           персонаж из программы введены в Накоплен-            водчик.

   1C82 числовое выражение вычисляется и его значение

           поставить на калькулятор стека, если во время выполнения. CH ДОБАВИТЬ            должен указывать на первый символ            Выражение перед вызовом этой подпрограммы, и            впоследствии он указывает на следующий символ после            выражение. Если выражение было числовое,            бит 6 переменных ФЛАГИ системы устанавливается (сбрасывается на            строка).

   1C7A Оцените два числовых выражений, разделенных

           Запятая и поставить значения на калькуляторе стека, если            среда. CH ДОБАВИТЬ и ФЛАГИ как для 1C82.

   1E94 Возьмите число от калькулятора стек и введены в

           аккумулятор. Число должно быть положительным и            менее 256.

   1E99 Возьмите число от калькулятора стек и введены в

           До н. Количество должно быть положительным, и меньше, чем

           65536.

Можете начать играть в Extended BASIC [1] онлайн. Эта приложения для разработки программ на бейсике, изданное в Великобритании в 1984 году компанией Your Computer, которое написал Robert Newman.

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

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

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

  

Справка[X]

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

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

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

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

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

Помощь

Размер

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

Диск

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