ZX Spectrum
Game

Spectramon

ZX Computing (Великобритания),

Автор:

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


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

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

Язык

  • Русский
  • English

Управление

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

Игроков

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

SPECTRAMON

Саймон Гудвин от ZX Computing апреля / мая и июня / Jul.1983

Саймон Гудвин Херефорд представляет отличную программу для 48К Spectrum.

Если вы когда-нибудь задумывались, как ваш ZX Spectrum работает, Spectramon (монитор Спектр) сделает его легким для вас чтобы узнать. Эта программа будет печатать или отображать содержимое из ПЗУ или ОЗУ в цифровой, символьной или сборки языке форма. Адреса могут быть введены в десятичной или шестнадцатеричной, и пользователь может выбрать основание, используемое для вывода.

Spectramon будет работать на 48К Spectrum с или без Принтер. Опция дизассемблер писалось с недостатки программ ZX80 и ZX81 в виду – в отличие от других Опубликованные списки он будет обрабатывать все 694 стандартный Z80 Список инструкций, используя стандартные мнемонические имена и Форматы разработанные Zilog, фирмы, которые проектировал Z80 процессор, используемый в спектре.

Инструкции Z80

Набор команд Z80 является самым сложным из любой 8-бит

микрокомпьютер. Процессор Z80 был разработан группой люди, покинувшие Intel, фирма, которая делает 8080 Процессор, чтобы настроить Zilog. Z80 будет выполнить любую инструкции к 8080, плюс большое количество дополнительных единиц «Пристегивается» к Zilog. Такой подход означает, что программы написано для запуска на 8080 будет также работать на Z80 без изменения. Новые программы могут быть написаны с использованием добавил средства на Z80. Это было сколько начале программы Z80 были произведены. BASIC интерпретатор используется на TRS-80, для Экземпляр, по существу, программа 8080, несмотря на то TRS-80 имеет процессор Z80. Только дисплей и клавиатура Процедуры содержат инструкции Z80, так как они были в прошлом должна быть написана.

Sinclair BASIC написан с использованием полных черты Z80 Процессор. Zilog добавил инструкции для обработки быстро движущихся и поиск таблиц в памяти, дополнительных регистров (внутренние хранение) и инструкции, чтобы увеличить количество вещей что может быть сделано с оригинальным 8080 регистров. Они хотел более чем в два раза число возможных инструкции, но возникла проблема – Intel решила использовать один байт (8 бит) для хранения номера команд для 8080, и большинство из 256 возможных номеров были уже используется.

Zilog обошли это, давая четыре числа команд специальные значения – инструкции с одного из этих номеров будет выполнять определенную ‘класс’ работы, и на следующий байт объясняет операцию, необходимую в деталях. В Теория, что дал Zilog много возможных номеров – 252 (Используя оставшиеся значения один байт) плюс 1024 (4 * 256) если бы они были использовать все возможное двухбайтового инструкции. На практике, они используются только 694 из 1276 Возможности, но это все еще очень большое количество Инструкции для 8-разрядного компьютера!

Если вы обратитесь к [Приложение А руководства Синклер спектра,

Вы увидите стандартные мнемоники Z80 перечисленные. Приставка байт 203 используется для генерации инструкций по добавлению для “битовые” операции – инструкции, которые манипулируют или испытаний двоичных цифр. Префикс 221 байт, указывает, что следующий инструкция 8080 один, который будет использовать зарегистрируйтесь пара HL но теперь должны использовать вместо зарегистрируйтесь IX. Кроме того, приставка 253, указывает на то, что IY следует заменить HL в следующей Инструкция. Если HL был в скобках в старом 8080 Инструкция (как и в LD A, (HL)), то версия Z80 позволяет Смещение быть применены к IX или IY перед использованием – это указано на дополнительной байта после окончания 8080 Инструкция. Наконец, префикс 237 используется для указания что инструкция следующее является одним из группы разное Z80 дополнения.

Мониторинг ситуации

Если все это звучит очень сложно, вы, наверное, поняли,

Поэтому монитор это полезная программа – Spectramon будет автоматически конвертировать последовательности, как “EDH 7BH 3DH 5CH» в мнемонические: LD SP, (23613). EDH сказал Spectramon что это было разное Z80 дополнения инструкции (EDH 237 в десятичной системе). 7BH соответствует LD SP, (некоторые адреса), и 3DH 5CH соответствует значению 23613. Для проверки, что, конвертировать 3Dh и 5ch в десятичную затем добавьте первый результат второй (умноженное на 256). Это очень много проще пусть компьютер головоломка, что из, чем это должно работать его для каждой инструкции вручную.

Конечно, вы можете подумать, что LD SP, (23613), которая так же, как

непонятно, как EDH 7BH 3DH 5CH – в этом случае, вам придется узнать немного о Z80 машинный код перед Spectramon становится полезным для вас. Прежде чем вы сможете исследовать ПЗУ компьютер, вы должны понимать, компьютерный язык в котором она была написана – ассемблер, в большинстве случаев. LD SP, (23613) является ассемблера (или “язык ассемблера” или “Команда машинный код”). Если вы не понимаете, ассемблер, пожалуйста, не бросайте эту статью сейчас! Это займет у Вас не больше узнать ассемблера, чем это было, чтобы узнать BASIC (его должно быть так же весело, тоже), и вы можете вернуться к Spectramon когда вы знаете больше.

В самом деле, инструкция LD SP, (23613) имеет очень простой

Цель – это говорит компьютеру, чтобы поставить номер в адрес 23613 в реестр под названием «СП». Если вы обратитесь к Руководство Спектр вы найдете то, что 23613 является “адрес пункта на машине стек для использования в качестве возврата ошибок “, который говорит вам, что команда является частью ROM Ошибка-обработчик. Использование разобранный перечень и таблицы «Системные переменные» в главе 25 руководства, вы можете проследить свой путь через ROM, узнав, что каждый Раздел делает.

Используя программу

Spectramon занимает около 15 секунд, чтобы установить себя, когда Первый RUN. В течение этого времени, оно строит таблицу Список инструкций для дизассемблера, и как только это полный, появится меню команд.

Для выхода из монитора, типа ‘Q’ с последующим Enter. Это возвращает вас к ZX BASIC. Если вы хотите, чтобы разобрать Программа в ОЗУ или ПЗУ, то вы должны ввести ‘D’ с последующим сразу по адресу, по которому вы хотите начать.

Адреса могут быть введены в Spectramon в десятичной или Hex – если вы хотите, чтобы разобрать из адресной 126 (в десятичной системе), вам может ввести Dl26 или D007EH или D7EH – ведущие нули опционально – и если ввести более четырех шестнадцатеричных цифр, только Последние четыре будут рассмотрены. Если бессмысленной адрес набирается (например, D, DFF, D123456 или Д-1), то команда будут игнорироваться.

Дизассемблер отображается содержимое одного памяти

экранный (21 линий) одновременно. Шоу левые колонки адрес инструкции. За ней следуют на то же самое линия по шестнадцатеричного представления инструкции, и Затем текст на языке ассемблера. После 21 линий были отображается, подсказка “Больше? (Enter = Нет)” появится.

Нажмите любую буквенную или цифровую клавишу и список будет продолжить на новом экране. Нажмите клавишу Enter, чтобы вернуться к Меню.

После отображается каждая строка, программа проверяет,

была или нет была нажата клавиша. Ключевые Space паузы дисплей, который будет продолжаться, когда любой буквенно-цифровой ключ нажата. Введите кнопки зажигаются разборки прекратить и отображается меню.

Магические числа?

Третий вариант позволяет отображать числовые содержания

памяти. Хотя дизассемблер делает это, только списки от одного до четырех байт на линии (в зависимости от Инструкция). Команда N позволяет восемь байт, должны быть перечислены на каждой строке дисплея. Начальный адрес может быть указано в Hex или десятичной, так же, как для команды D.

Команда N полезно для отображения содержимого

таблицы, используемые программы или ПЗУ. Тип “N150 ‘, чтобы увидеть Спектр защищены слово стол. Вот где ZX ОСНОВНЫЕ магазины что написание слов, таких как PRINT и возвращения. Слова хранятся в модифицированной версии кода ASCII – последний буква каждого слова есть 128 (80H) добавил к нему, чтобы сделать его легко рутины ROM, который отображает слова, чтобы найти, где каждая из них начинается и заканчивается.

Если вы нашли числовое представление из основных слов

довольно трудно следовать, вы можете использовать команду A150 к отобразить защищены таблицу слов в символьной форме.

Команда использует 7-битные значения ASCII, так что письма с 128 добавил в их код по-прежнему распечатать правильно. Чтобы избежать изменение цвета или перемещения курсора неожиданно, Выход ASCII обычные дисплеи управляющие символы (те с Код менее 32), а точками.

Вы можете использовать пространство и Enter кнопки для управления списки Выход командами N и А, так же, как для разборка. Каждые 21 линий “Больше? (Enter = Нет)” сообщение предстанет перед новый экран запуска.

Последние две команды не выводят ничего сами, но

они делают изменения устройства вывода, которые другие генерировать. Когда Вы сначала RUN Spectramon, “вариант P принтера сообщение (Сейчас Появляется OFF) “. Введите команду ‘P’, за которой следует Введите и Сообщение станет “вариант принтера P (отныне)”. Если вас затем отображать содержимое памяти (используя, N или D) информация будет отправлен на принтер, а также телевидение. После того, как вы закончили печать, нажмите Enter, чтобы остановить показ, а затем использовать команду P для переключения Опция принтера снова.

Обратите внимание, что процедура принтер не выводит никаких линий

до тех пор, пока был сформирован весь экран-полно. На самом деле, это сознательно избегает использования LPRINT о посылать друг Линия на принтер. Вместо этого он использует КОПИЯ, ZX BASIC Команда, которая отправляет весь текст на экране, чтобы Принтер. Это потому, что это почти в два раза быстрее, чтобы построить до полного экранов с данными, а затем распечатать его с помощью COPY чем это использовать LPRINT для каждой линии, как она создается.

Принтер не может остановиться и начать очень быстро и

следовательно LPRINT утверждение гораздо медленнее, чем экземпляр – Принтер должен увеличить скорость и замедлить 21 раз (один раз для каждая строка), а не просто один раз. В самом деле, принтер всегда выводит последнюю строку группы на половинной скорости, чтобы убедиться, что что все падает в правильном месте, когда он останавливается. Как Насколько он обеспокоен каждый LPRINT является последняя строка группа (когда есть меньше, чем 33 символов печатается).

База выбор

Окончательный вариант позволяет пользователю выбрать базу, в которой

Числа выводятся программой. Иногда бывает полезно, чтобы есть номера, отпечатанные в десятичной (например, когда речь идет о по адресам, указанным в руководстве Spectrum), а иногда шестнадцатеричное удобнее (при отображении адрес столы или рабочие из прыжков смещения). Введите команду “B” на изменить выходной базу. При первом запуске Spectramon его будет Hex (отсюда дисплей “Выбор B Основание (сейчас = HEX) »), но вы можете переключить его в десятичную с командой B. Если вы хотите, чтобы повторно выберите выход Hex позже вы можете “тумблер” назад, набрав ‘B’ снова.

Если неизвестная команда вводится, Spectramon проигнорирует его. Если она призвана показать содержимое несуществующего память (мимо адрес 65535) он будет отображаться сообщение “End Памяти “. Если конец памяти встречается в то время как Программа на полпути через обработку линию чисел или Символы ASCII, он будет заполнить остальные линии с нули или пробелы.

Если у вас есть, чтобы остановить монитор по любой причине, введя

Перерыв (возможно, потому что ваш стол растает из-под компьютер или принтер ZX душит себя) вы можете вновь начать Spectramon введя GO TO 200 после паники более. Пока вы не набрали НАГРУЗКИ, CLEAR, или NEW в Тем временем, в меню появится сразу (без 15 Второй ждут стола настройке) и текущий база (Hex или Десятичный) будут сохранены.

Следующий байт

Вторая часть этой статьи, в комплекте с программой

листинг Spectramon, будут опубликованы в июне / июле Вопрос о ZX Computing. В то же время, если вы не можете ждать, чтобы попробовать Spectramon для себя, лента программы является выпущенного ASP Software по цене # 5.99. Для более Детали, проверить рекламу в другом месте в это проблема.

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Представляя вторую часть этой тематической статьи,

в том числе полный список Саймон Гудвина невероятное Программа монитор Спектр.

Spectramon написано в ZX BASIC, но она должна быть достаточно легко превратить в другие компьютеры. Очевидно, это будет только быть полезно на машинах, которые используют процессор Z-80!

Функция CODE Спектр соответствует ASC на друга

Компьютеры – скобки аргумента являются необязательными в ZX BASIC. Струнные массивы обрабатываются довольно странно Синклер BASIC – переменная Z $ настроен по линии 40 как имеющие фиксированная длина 32. Неиспользуемые символьных позиций содержать Пространства – так, чтобы Z $ используется просто как массив пространстве символы по подпрограмме форматирования инструкция. Массив O $ содержит 608 строк (пронумерованных от одного, а не ноль) и каждая строка имеет фиксированную длину девяти символов (строки 130).

Другие строковые переменные нормальные строки ‘Microsoft’ – они имеют разную длину, чтобы вместить все, что хранится в им. ZX BASIC позволяет подстроки, которые будут извлечены из Строка с использованием команды ‘до’ – $ (1 к 1) возвращает Первый символ строки, соответствующие Left $ (A $, 1) в Microsoft BASIC. Если $ настроен как «SPECTRAMON ‘, то $, 6,3). [Так в оригинале] Короче, инструкция на ‘до’ извлекает все персонажи из одного положения в другое, включительно.

Спектр BASIC позволяет длинные имена переменных должны быть указаны,

и (в отличие от Microsoft BASIC) все персонажи имени значительны. О спектре, INDEX и косвенные являются два разные, действительные переменные – в Microsoft BASIC они будут должны быть переименованы, в противном случае они будут рассматриваться как та же переменная, потому что они имеют один и тот же первые два персонажи. В некоторых версиях Microsoft BASIC, ни имя переменной будет разрешено, так как они оба содержат ключевым словом “IN”. Sinclair BASIC также необычен тем, что позволяет пространства происходят в именах переменных. В таблице 1 показаны все имена переменных, используемых в Spectramon и документов их Использование.

Другие системы могут игнорировать линии с помощью COPY, чтобы отправить

Перечень и просто LPRINT L $, если LP = 1, распечатав линии один в то время, а не в массовом порядке. Определяется пользователем функция создана в строке 50, но это довольно легко кодировать вокруг этого если ваш компьютер не поддерживает эту функцию. FN H (H $) просто возвращает десятичное значение первого символа в H $ – 1 для ‘1’, 10 для ‘A’, 11 для “B” и так далее.

Spectramon использует несколько выглядывает и тычет, которые не будут требуется в других системах. POKE 23658,8 является полезной командой который заставляет Spectrum в столицах-замок (выбор мигать ‘C’ как курсор, а не мигающим ‘L’). Это гарантирует, что команды вводятся в столицах (если пользователь намеренно переключается в нижнем регистре в процессе ввода команды). Расположение 23689 содержит номер из пустых строк на экране Spectrum – когда PEEK 23689 является три или менее экран предполагается, чтобы быть полным, поскольку Нижние две линии обычно не используются для текста и линия необходимы для “Подробнее …?» сообщения.

Откуда 23560 содержит ASCII код клавиши наиболее

Недавно нажатии. Он расположен в 32, когда пробел имеет была нажата (или моделируется) и 13, когда Enter имеет было введено.

Последнее слово …

Когда я получил свой Spectrum я был убежден, что я никогда не привыкнуть к клавиатуре. После написания, редактирования и набора текста в Spectramon я был хорошо практикуется! Будем надеяться, что программа также иллюстрирует несколько полезных причуды ZX BASIC, как с BASIC и точка ассемблера зрения программиста.

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Таблица 1. Переменные, используемые в Spectramon

Z $ – Исправлена ​​длина строки 32 пространств, используется при форматировании.

H $ – HEX персонажей 0 ‘-‘ F ‘- также локальная переменная используется в                   Hex-Decimal функция преобразования, FN H (линия 50). LP – “Флаг” устанавливается в 1, если требуется распечатка. Декабрь – «Флаг» установлен в 1, если числа должны быть выведены в десятичной. CheckIndex – Линия количество рутины, которая проверяет, является ли                   Операция может включать IX или IY.

GetInstruction – Линия количество рутины, которая форматирует полную линейку                   дизассемблер выход.

MakeText – Линия количество рутины, которая форматирует полную линейку                   дизассемблер выход.

ByteValue – Номер строки функцию, которая выражает содержимое                   C (0-255) в C $, используя текущую базу.

WordValue – Номер строки функцию, которая настраивает C $ со струнным копии                   С (0-65535) в текущем базы.

F $ – имена регистров строка, содержащая.

O $ – массив строк, содержащий текст кода операции.

I, K, T – Loop счетчики и временные значения.

$ – Команда набирается пользователем.

C $ – первый символ команды.

SUB – Номер строки выбранной монитора подпрограммы.

LOC – Расположение на рассмотрении в мониторе.

L $ – строка текста, который будет выводиться на монитор. I0, I1, I2 – код команды и операнды.

N $ – имя текущего индексного регистра.

S $ – имя текущего косвенного регистре (N $).

M $ – Мнемоника форма обучения.

Число-байт – длина инструкции в байтах.

ИНДЕКС – Установите на 1, если IX или IY должны заменить HL. КОСВЕННЫЕ – Установите на 1, если (IX) или (IY) должны заменить (HL). R $ – Характер в мнемоник инструкции.

MODE – режим 0-9 Обращаясь; объявляет количество и формат операндов. C – Номер для преобразования в десятичной или шестнадцатеричной строки. C $ – Количество после преобразования в строку.

D $ – Часть выходного дизассемблер линии.

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

[Я сделал следующие исправления в список. JimG.]

Линия 6090 должны просто иметь восемь “9” элементы в заявлении данных, а не девять.

Линия 1320 следует ПУСТЬ i0 = i0 + 416

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

[Письмо ZX Computing августа / Sep.1983. ] [Поправки, приведенные здесь также были включены. JimG.]

BYTING ОШИБКИ

Уважаемый ZX Computing,

Боюсь, я нашел несколько незначительных ошибок в моей

Spectramon программа. Тем не менее, у меня есть два решения этих проблемы:

1) Когда Спектр пытается разобрать близко к вершине

   Предел памяти, из-за способа, в котором Z80    Набор команд строится у нас может быть «смотреть вперед» вплоть    до четырех байт. Если вы находитесь в месте 65533 и это “смотреть    вперед »происходит он будет пытаться заглянуть за пределы диапазона памяти.    Это приводит к “вне диапазона» ошибки. Там нет истинного решение    без существенных изменений программы. Тем не менее, простой    ‘Исправление’ может быть достигнуто путем изменения линию 605 следующим образом:

    605 IF LOC>65532 ТОГДА ПРИНТ “Конец памяти” “:. POKE 23560,32:

        ПЕРЕЙТИ НА 610: REM делать вид ПРОСТРАНСТВО набралось

2) Другая проблема в программе гораздо тоньше и

   возникает, когда спектр пытается обернуть вокруг его    Карта памяти происходит из 65535 спину к нулю. Это    проявляется в виде ошибки индекса при использовании шестнадцатиричную    Преобразование рутина. Это можно легко вылечить с    Добавление линии 3435:

   3435 если с>65535 то пусть с = с-65536

Надеемся, что эти два решения закончится все ваши заботы с

моя программа Spectramon.

С уважением,

Саймон Гудвин, Херефорд

– Другой прекрасный продукт расшифрованы: Джим Grimwood (jimg@globalnet.co.uk), Weardale, Англия –

?

Играйте в Spectramon онлайн. Утилита для программной разработки, которую подарил миру Simon N. Goodwin, была опубликована творческой группой ZX Computing в 1983 году в Великобритании.

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

Subscribe
Уведомлять об
guest
0 Comments
Inline Feedbacks
View all comments
 

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

  

Справка[X]

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

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

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

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

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

Помощь

Размер

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

Диск

Кликни в окно эмулятора, чтобы управлять!
<<<<
Close
0
Would love your thoughts, please comment.x
()
x