ZX Spectrum
Game

Mira

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

Автор:

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


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

Нет доступных файлов

Язык

  • Русский
  • English

Управление

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

Игроков

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

MIRA

             Майк Дожди дает свой Microdrive                  случайный объект доступа.

[Одно замечание для начала: как это программа, которая работает

  с Microdrives, было предусмотрено на файл .mdr,   не .tzx файл как более привычно. Если ваш эмулятор не может   обрабатывать Microdrive файлы, ну, у вас нет никакой пользы MIRA   в любом случае …]

Одним из главных ограничений Sinclair Microdrive Система является то, что это возможно только, чтобы получить доступ к файлам данных от Basic, который накладывает жесткое ограничение на базе и другие подобные приложения, которые обращаются файлы данных. Для пример, изменении записи в файле данных включает в себя открытие Новый файл, копируя предыдущие записи из старого к новый, писать измененную запись в новый файл, копирования остальную часть старого файла, удаление оригинал файл и переименовать новый файл как старого файла.

  Даже этот последний не просто, как Синклер Basic не хватает команду Переименовать. На практике, следующий код иллюстрирует тип подпрограммы, которые потребуются изменить п-ю запись файла 100 записей под названием “Данные”, в котором каждая запись имеет длину 24 байта. Новый запись в строку N $.

 9000 REM Alter рекорд (Sinclair BASIC)  9010 ОТКРЫТЫЙ # 5; “м”; 1; “данные”  9020 ОТКРЫТЫЙ # 6; “м”; 1; “new.data”  9030 ЕСЛИ п = 1 THEN GOTO 9070  9040 р = 1 до п-1  9050 ВХОД # 5; ЛИНИЯ х $: PRINT # 6; х $  9060 Вперед р  9070 ВХОД # 5; ЛИНИЯ х $: PRINT # 6, п $: REM написать новый рекорд  9080 ЕСЛИ п = 100 THEN GOTO 9120  9090 р = п + 1 до 100  9100 ВХОД # 5; ЛИНИЯ х $: PRINT # 6; х $  9110 Вперед р  9120 ЗАКРЫТЬ # 5: CLOSE # 6  9130 Удалить “м”; 1; “данные”  9140 MOVE “м”; 1; “new.data” К “м”; 1; “данные”  9150 ERASE “м”; 1; “new.data”  9160 ВОЗВРАЩЕНИЕ

  Должно быть ясно, что это как извилистый и очень

замедлится, поскольку она включает в себя много операций Microdrive, который также приводит к увеличению износа на картридже и ездить. MIRA решает эти проблемы, предоставляя Синклер Основные три новых команд, которые совместно позволяют поддержание произвольного доступа файлы аналогичны доступны состоянии на микроскопии, таких как BBC с интерфейсом диска.

  Новые команды (РНД #, POINT # и восстановить #) все получены с использованием существующих Синклер ключевые слова, но в новый контексты. Использование и синтаксис новых команд и Теория, лежащая их реализации описаны ниже, но Во-первых, в качестве примера, приведенные выше подпрограмма переписан с использованием команды MIRA.

  Обратите внимание, что запись 24 байт занимает 25 байт в файле из-за включения возврата каретки (CHR $ 13).

 9000 REM Alter запись (MIRA)  9010 ОТКРЫТЫЙ # 5; “м”; 1; “данные”: РНД # 5  9020POINT # 5,25 * (п-1): PRINT # 5, п $  9030 ВОССТАНОВЛЕНИЕ # 5  9040 ВОЗВРАЩЕНИЕ

  Первый из новых команд, RND последующим потока

Идентификатор (например, # 5) приводит к тому, файл, прикрепленный к дано Поток, который был объявлен в качестве случайного доступа к файлу. Файл должны уже были открыты со стандартным ОТКРЫТО # Команда и должно быть “читать” файл.

  Команда RND не может быть использован, чтобы создать или открыть файл. В приведенном выше примере, “Данные” файл будет первоначально нужно чтобы были созданы с кодом, такие как:

  100 DIM х $ (24)

  110 ОТКРЫТОЕ # 5; “м”; 1; “данные”   120 для р = 1 до 100: PRINT # 5; х $: СЛЕДУЮЩЕЙ р   130 ЗАКРЫТЬ # 5

  POINT последующим идентификатором потока и числовое

Выражение разделены запятой (например POINT # 5, п) движется внутренний указатель файла прилагается к данному потоку к п й байт файла, где на следующий INPUT #, PRINT #, или INKEY $ # будет иметь место при условии, что в файле был открыт с открытыми # и сделал случайный с РНД #.

  Ошибка будет генерироваться, если вы пытаетесь переместить указатель за пределы файла. Базовая программа погрузчик для MIRA – листинг 1 [на .mdr как “Мира”, а также в качестве “Запустить” для вашего авто-загрузки удобства] – также определяет Функция, FN р (х), которая возвращает текущее значение внутренний указатель файла, прикрепленной к потоковой х – например, ПУСТЬ поз = FN р (5). Для чего это стоит, это будет работать с любой “читать” файл, а не просто случайный доступ один.

  ВОССТАНОВЛЕНИЕ последующим идентификатором потока (например, # 5) закрывает Файл произвольного доступа присоединен к данному потоку.

ВОССТАНОВЛЕНИЕ # должен использоваться в предпочтении к ЗАКРЫТЬ # для случае корректировки лы закрыть файл, который был отмечен как случайная с РНД #, но не могут быть использованы, чтобы закрыть любой другой тип файла.   Теория добавления новых команд в Sinclair продлен Основные (т.е., с Интерфейс 1 прилагается) полностью описывается А. Пернелл, Master Ваша ZX Microdrive (Саншайн 1983) и И. Логан, Спектр Microdrive Книга (Melbourne House 1983). Короче говоря, теневая система переменной ВЕКТОР (адрес 23735), которые, как правило, содержит адрес ошибки ROM процедура обработки, должны быть загружены с адресом Новый команды рутина, которая должна затем выполнить два различных функции.

  Во-первых, он должен проверить синтаксис новых команд и вызвать ошибку, если это неверно, а затем, во время выполнения только, выполнить команду. “Run-время” означает время работает из программы или во время выполнения прямых Команда. Линии 9030-9040 программы загрузчика MIRA Basic изменить значение вектора (линии 9030 Первый гарантирует, что Тень системные переменные были созданы).

  А также предоставление новых команд, как описано выше, MIRA также должны предоставить новые подпрограммы для замены стандартного Печати и входной команды. Чтобы продемонстрировать, как это делается и объяснить фактическое функционирование новых команд это Необходимо сначала описать структуру микро- езды канал.

  Каждый Microdrive канал занимает 595 байт в области памяти зарезервирован для канала информации. Начало этого Площадь содержится в переменной Чаны системы (адрес 23631). Фактическое расположение конкретного канала найдено путем добавления смещения, содержащихся в соответствующих Система переменной STRMS – два байта для каждого из потоков от -3 до 14, начиная с адреса 23568 – со значением в чаны и вычитания 1. FN д (х), определенный в основной программе загрузчика выполняет эту функцию для потока х. Распределение байт в Microdrive канал показан на рисунке 1 и должны упоминаться в течение следующего обсуждения

работа различных подпрограмм Мира.

  Рисунок 1. Microdrive структуру канала.

  Байт Длина Описание

     0 2 “выход” рутина      2 2 “вход” рутина      4 1 канал спецификатор “М”      5 2 тень выход ROM      7 2 тень вход ROM      9 2 Длина этого Чаны области (595)     11 2 текущее положение буфера (0-512)     13 1 позиция записи в файле (0-255)     14 10 10 байт файла     24 1 бит 0 – сброс – “читать” файл                           набор – “писать” файл                   Биты 1-7 – не используется (все сброса)     25 1 номер диска (1-8)     26 2 диска карте местоположение     28 12 12 байт заголовка, предварительно иноходь     40 1 бит 0 – установить, чтобы сигнализировать заголовок                   Биты 1-7 – неиспользованные     41 1 номер сектора (0-255)     42 2 не используется (см текст)     44 10 10 байт имени патрона     Сумма 54 1 заголовок     55 12 12 байт данных предварительно иноходь     67 1 бит 0 – сброс – не заголовок                   бит 1 – сброс – не конец файла                   бит 1 – набор – конец файла                   бит 2 – сброс – файл PRINT                   бит 2 – набор – не файл PRINT                   Биты 3-7 – не используется (все сброса)     68 1 рекордное количество (0-255)     69 2 число байтов в записи (0-512)     71 10 10 байт файла     81 1 контрольная сумма     82 512 буферные данные

   Сумма 594 1 данные

 РНД # Команда рутина время выполнения выполняет три действия:

Бит 0 # байта 24 в соответствующем канале установлен на   означает файл “записи”.

# Адреса новых выходных и входных процедур являются   загружается в байтах 5-6 и 7-8 канала.

Бит 0 # неиспользованного 42-й байт канала используется как   Флаг сигнализирует о том, что содержимое буфера были   изменена. РНД # сбрасывает этот бит для обозначения “неизменной”.  Следующие действия выполняются с помощью команды POINT #: # Номер записи, в которых желаемое положение файла ложь   вычисляется и сравнивается со значением в байте 13   канал.

# Если они не совпадают, «буфер написать” и “читать   буферные “подпрограмм призваны принести требуемое   запись в буфер.

# Желаемая должность в записи загружается в   Места канала 11 и 12.

 ВОССТАНОВЛЕНИЕ # называет «буфер подпрограмму написать написать текущая запись, если она помечена как “измененное” (то есть: немного 0 байта 42 установлен), сброс, но 0 байта 24 канала для Флаг файл как “читать”, а затем вызывает тень ROM ЗАКРЫТЬ # рутина.

 Новая процедура вывода используется всеми PRINT # утверждений вступил с характером, чтобы быть записаны в файл в Регистр. Следующие действия: # Текущее положение буфера получается из байтов 11 и   12 канала, добавляется 82 – начало данных   Площадь – дать правильный адрес, и характер   от регистра хранится там.

# Позиция буфера увеличивается и повторно хранится в байтах   11 и 12.

# Запись помечается как “изменены”, установив бит 0   байт 42.

# “Следующая запись” подпрограмма вызывается, если конец   Настоящий рекорд был достигнут.

 Новая процедура ввода используется INPUT # и INKEY $ # государственно менты выполняет следующие действия: # Проверка на конец текущей записи и называет “рядом   запись “, если требуется.

# Увеличивает позицию буфера в байтах 11 и 12   канал.

# Использование этой позиции, – добавляется в 82, как раньше, – говорится   персонаж из буфера в регистр A и наборы   флаг переноса, чтобы сигнализировать успешный чтения.

[Статья заканчивалась с некоторыми инструкциями для вступления, которые   были перемешаны, и ни полной, ни правильно; они   похоже, что они были написаны для другой версии.

  Последнее замечание является правильным, хотя:] Следует отметить, что MIRA необходимо будет вновь активирована с использованием Линии 9020-60 из листинга 2 следующая новая команда.

[А теперь немного о содержимом .mdr. Это включает в себя   “Мира” ака “запустить” и “MiraLoader”, как описано выше,   а также “C: Мира” машинный код файла производится   последний и читать первым.

    Поскольку г-н Дожди не обеспечивают пример приложения   его инструмент, но мне нужно один себе, чтобы проверить, что у меня было   Вступил MC правильно, я написал очень простой   называется “Блокнот”, который я также предоставил на .mdr.

  Не обманывайтесь его тривиальности; гораздо более слож-   приложения шие может быть написано, но у меня не было   время, чтобы сделать так, для примера программы.

    Наконец, после написания этой программы, я обнаружил, что

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

  Конечно Мерфи заверил, что мой эмулятор имеет разные   Вопрос IF1 ROM, чем некий мистер Рейнс, кодируемых.

    К счастью, это было легко патча: всего несколько адресов   должны быть вновь ткнул, и кажется, что те, используется сделал   не изменится после второго выпуска IF1. Результат   это является окончательная программа на .mdr, “MiraPatch”.

  Он загружает оригинальный машинный код, поддерживает это, патчи   это для новых дисков, и сохраняет новую версию под   старое название. На самом деле, для моего собственного удобства, “C: Мира”   что находится на .mdr является исправленная версия (и   Резервное копирование также присутствует).

    Вы, возможно, даже более новую (или просто другой) версии   ПЗУ, и в этом случае даже это может не работать; если да, то   извините, я не могу помочь, но вы можете попробовать найти   правильные адреса для вашей версии, использующие те Mira   использует, копию Джанлуки Карри в “Spectrum Shadow Рим   Разборка “(доступно для загрузки в Мире   Спектр, amongs другие), и демонтаж самостоятельно   IF1 ROM. Затем можно ввести правильные адреса в   MiraPatch и создать свою собственную версию кода.

                                   Ричард Бос, май 2012 года]

Запустите Mira и играйте. Это утилита для разработчиков на BASIC, которую создал Mike Rains, была выпущена компанией Your Computer в 1985 году в Великобритании.

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

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