Inferno #10
30 апреля 2007

Возможности Спектрума - Аппаратный скроллинг на ZX Spectrum.

  Я откопал у ATM turbo 2+ недокументиро─
ванную  фичу - аппаратный  скроллинг. Фича
полезная  для игр и прессы и, к сожалению,
отсутствующая почти на всех других моделях
ZX Spectrum.  ATM2, GMX, Sprinter  -  вот,
вроде, и весь список железок,где она есть.
   Аппаратный  скроллинг  на ATM2 (обращаю
ваше  внимание: на  ATM1  ничего подобного
нет!) получается за счёт того,что счётчики
растра и видеоадресов раздельны, а в текс─
товом  режиме  (в  отличие от графических)
счётчики  видеоадресов считают в том числе
на бордере.
   Сигнал CROW (прибавить 64 к адресу) уп─
равляется через мультиплексор D64 (по сиг─
налу RG2).Таким образом,в моменты времени,
когда V2<>B6, можно нащёлкать любой адрес,
делящийся  на  64. А чтобы нащёлкать любой
адрес, делящийся  на  8, надо пожертвовать
верхними  8 строками основного экрана (за─
мазать их чёрным):изначально включить тек─
стовый  режим, а выключить  его  на 0..7-й
строке. Остаётся 192 строки, которые можно
использовать по своему усмотрению.
   Эту  возможность я обнаружил чисто слу─
чайно.Во время редактирования документации
по  V9990 мне захотелось посмотреть, какие
прошивки на ATM2 (у ХЛ8,а может,и у микро─
контроллера) следует  заменить  и  что ещё
сделать в железе (перебросить проводки,по─
ставить  вместо ХЛ8 другую микросхему...),
чтобы  на  ATM2 появился аппаратный скрол─
линг. И  оказалось, что  не  нужно  менять
ВООБЩЕ ничего!
   За этим последовала (в обстановке край─
ней  секретности ;))  лихорадочная  сборка
демонстрации  CATDEMO.  Демонстрация  была
выпущена  в виде  загадки  -  предлагалось
угадать,как работает эффект.Однако угадать
никто не смог, из чего я сделал вывод, что
данная фича не выпячивалась разработчиками
(информация о ней не дожила в виде слухов)
или просто не была им известна.
   Исходники CATDEMO лежат у меня на сайте
      http://alonecoder.narod.ru/zx/
Предлагаю  всем желающим использовать дан─
ный  эффект в своих программах брать куски
кода именно оттуда, и вот почему.

                    1.

   Я упарился  настраивать времянки. Пона─
добилось  примерно две сотни промежуточных
версий. В  результате настройки весьма хо─
роши - ничего  не дрожит, даже если преры─
вание приходится на чрезвычайно долгую ко─
манду.

                    2.

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

                    3.

   В CATDEMO  уже предусмотрены (и исполь─
зуются) процедуры, позволяющие  рассматри─
вать  видимый экран как кусок большой кар─
тинки,с адресацией по номеру верхней види─
мой строки.

                    4.

   Поддержка в эмуляторах упростится, если
во  всех  программах  будет использоваться
один  и тот же кусок кода. Потактовая эму─
ляция  всех глюков реального железа - дело
очень трудное и неблагодарное. Для данного
кода достаточная модель выглядит следующим
образом.
   Рассмотрим  экранный  адрес  (в режимах
EGA, Multicolor, Text), состоящий  из час─
 тей:
          000bS1 BMMMMM MMLLLLLL,
где:
   S - номер экрана;
   Bb - горизонтальная  координата  внутри
знакоместа; 
   LLLLLL - младшие счётчики;
    MMMMMMM - старшие счётчики.
  1. Если  включен  текстовый  режим, то в
начале  экрана MMMMMMM=0, потом каждую 8-ю
 строку MMMMMMM++.
  2. Если включен графический режим,то ка─
 ждую строку MMMMMMMLLLLLL+=40.
  3. Если на бордере переключились из гра─
фического режима в текстовый,то MMMMMMM++.
   Основной экран (в режимах EGA, Multico─
lor, Text) начинается на 56-й строке после
INT. В строке 224 такта в нетурбо-режиме и
не менее 320 тактов в турбо-режиме.
   Текстовый  экран сдвинут на одно знако─
место  вправо  относительно EGA/Multicolor
экрана. Уточняю  потому, что, может  быть,
удастся  использовать верхние 8 пиксельных
строк (которые в демке чёрные) под тексто─
вые  индикаторы TIME/LIVES/SCORE. Если ис─
пользовать  только  несколько  знакомест в
этих 8 строках,то это не будет стоить про─
цессорного времени,т.к.в этом случае вывод
информации можно организовать во время ве─
рхнего бордера, вместо задержек.
 

   Если во время обратного хода горизонта─
льной развёртки (кроме переходов со строки 
номер  8x+7 на строку номер 8x+8) включить 
текстовый режим (до HR), а потом выключить 
(после  HR), можно дублировать графическую 
строку. Т.е.делать масштабирование по вер─ 
тикали или волны. 

                  * * *

   Чтобы скомпилировать мои ATM-овские ис─
ходники,нужно в UnrealSpeccy поставить мо─
дель ATM 7.10 и подключить особую прошивку
ПЗУ: glukatm.rom (на реале она,скорее все─
го, работать не будет, т.к. не инициализи─
рует ОЗУ ФАПЧ - впоследствии будет исправ─
лено). Эта  прошивка в области 48k бейсика
содержит процедуры, необходимые для работы
драйвера  памяти  ALASM  (на диске ALASM с
этим драйвером называется boot ).
   То же относится к компиляции исходников
Ball Quest под ATM. CATDEMO сделана на ос─ 
нове исходников Ball Quest , поэтому  под─
гружается  много  лишних модулей. Всё, что
относится к теме данной статьи, располага─
ется в главном модуле CATDEMO.H .

Alone Coder 



Другие статьи номера:

Ликбез - Аккумуляторы. Практика использования.

Ликбез - Аккумуляторы. Результаты опытов с различными аккумуляторами.

Возможности Спектрума - Описание формата ani-файлов на ZX.

Inferno - Авторы журнала.

Возможности Спектрума - Способы воспроизведения многоканальной музыки на бипере.

Возможности Спектрума - О поддержке формата DVD на ZX.

Gameland - О конкурсе нелепых (или корявых) игр для ZX Spectrum - Crap Games Competition.

Графика - Как быстро рисовать цветные картинки.

Inferno - Вступление от редактора.

Inferno - Ошибки в предыдущих номерах.

For Coderz - Код Грея и оптимизация программ.

For Coderz - Построение графического пользовательского интерфейса.

Форматы - Подробно о декодере jpeg.

Железо - Описание микросхемы К561ПУ4.

Inferno - Письма в редакцию.

Форматы - Формат пакованного файла MegaLZ.

Scorpion ZS - Структура разметки винчестера на компьютере Scorpion.

ZX Клоны - Мультиплатформенность на ZX Spectrum. Компьютеры SAM Coupe и MSX.

Реклама - Реклама NedoPC.

Inferno - Об оболочке.

Активный отдых - Команда "Спектрум" на соревновании по ночному ориентированию Окинчица 2004.

Sofтинка - Сравнительная таблица результатов упаковки кодовых файлов различными упаковщиками.

Реклама - Реклама King of Evil.

Sofтинка - Программы для печати в приложении к журналу.

Sofтинка - Музыкальный редактор Pro Tracker v3.71. История изменений.

Реклама - Реклама от В. Богдановича.

Железо - О некоторых RND-генераторах.

Возможности Спектрума - Аппаратный скроллинг на ZX Spectrum.

Pentagon - Синхроселектор видеосигнала на Pentagon. Проблемы и схема.

DIY - Универсальный TAPE интерфейс. Схема загрузки и записи с ленты.

Звук - Особенности звукового устройства TurboSound FM.

DIY - Схема анализатора состояния TTL вывода.

Будущее Спектрума - Видеоконтроллеры V9990. Расширение графических возможностей ZX Spectrum.

Sofтинка - Обновления в просмотрщиках картинок: ANSI viewer, MCX viewer.

Интервью - Интервью с музыкантом X-Raizor из Omega Hackers Group.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Ответы на письма №79-85.
Экзамен - подводятся итоги по игровым задачам, заданным в предыдущих номерах (Driller и Deactivator).
Видео - Об упаковке видео для ZX Spectrum.

В этот день...   19 июля