Adventurer #08
31 августа 1998

Обмен опытом - Особенности видеоконтроллера ZX Spectrum (для программистов).

     (C) Иван Рощин, Москва, 1998

Особенности видеоконтроллера  ZX SPECTRUM
 
     Что будет видно на экране, если запи-
сать  по адресам #4000-#57FF любую  инфор-
мацию,  а  атрибуты обнулить? А если обну-
лить #4000-#57FF и установить  PAPER  рав-
ным 0, а  INK  каким угодно? Здравый смысл
подсказывает,  что  и в том,  и  в  другом
случае мы не  увидим абсолютно ничего. Все
это так,  но  приведенная  ниже  программа
доказывает обратное.
 
         LD      HL,#5800
         LD      (HL),L
         LD      DE,#5801
         LD      BC,#2FF
         LDIR
         LD      HL,0
         LD      DE,#4000
         LD      BC,#1800
         LDIR
 
         LD      BC,#7FFD
         LD      A,#17
         OUT     (C),A
 
         LD      HL,#C000
         LD      (HL),L
         LD      DE,#C001
         LD      BC,#17FF
         LDIR
         LD      HL,#D800
         LD      (HL),7
         LD      DE,#D801
         LD      BC,#2FF
         LDIR
 
         LD      BC,#7FFD
 M1      LD      A,#18
         OUT     (C),A
         LD      A,#10
         OUT     (C),A
         XOR     A
         IN      A,(254)
         CPL
         AND     31
         JR      Z,M1
         RET
 
     Эта программа заполняет 1-й экран со-
держимым  ПЗУ  и  обнуляет атрибуты (таким
образом,  на экране  ничего не видно), за-
тем очищает 2-й экран  и устанавливает для
него атрибуты INK 7 , PAPER 0  (и  на  2-м
экране ничего  не видно).  Затем программа
начинает  быстро переключать 1-й и 2-й эк-
раны, и тут мы видим такую картину:
 
           ┌───────────────────┐
           │ -      -      -   │
           │  -      -      -  │
           │   -      -      - │
           │    -      -      -│
           │     -      -      │
           │      -      -     │
           │-      -      -    │
           └───────────────────┘
    
     По-видимому,происходит следующее: при
выводе изображения  на экран байт  из  эк-
ранной  памяти  вместе  со своим атрибутом
попадает в специальный  сдвиговый регистр,
но может случиться  так, что видеоконтрол-
лер возьмет  байт из экранной памяти  1-го
экрана,  а  затем программа переключит эк-
ран,  и байт атрибутов  будет взят уже  из
2-го экрана (или  наоборот).  В обоих слу-
чаях на экране появятся белые полосы.
     Интересно, наблюдается ли этот эффект
на  других  компьютерах,  кроме  "Пентаго-
на128" ?  А на эмуляторах?  Можно ли найти
для него какое-нибудь применение?
 
     Теперь расскажу, как я обнаружил этот
эффект. Дело  было так: я писал программу,
которая  показывала некоторую картинку  на
1-м  экране,  затем  показывала  следующую
картинку на 2-м  экране,  потом  опять  на
1-м и т.д. Вот  как эта программа работала
(активный экран выделен двойной рамкой):
 
     1) На 1-м экране какая-то картинка,на
2-м  экране  другая картинка,  скрытая под
атрибутами  INK 0 ,  PAPER 0 .
 
        ╔════════════╗ ┌────────────┐
        ║   ░░░░░░░  ║ │            │
        ║  ░░▒▒▒░░░  ║ │            │
        ║  ░░░▒▒▒▒░░ ║ │            │
        ║   ██████   ║ │            │
        ╚════════════╝ └────────────┘
 
     2) Очищаем 1-й  экран и устанавливаем
INK 7 , PAPER 0 .
 
        ╔════════════╗ ┌────────────┐
        ║            ║ │            │
        ║            ║ │            │
        ║            ║ │            │
        ║            ║ │            │
        ╚════════════╝ └────────────┘
    
     3) Включаем 2-й  экран,  и  на нем на
мгновение  появляется горизонтальная белая
линия длиной  примерно 8 пикселей.
 
        ┌────────────┐ ╔════════════╗
        │            │ ║            ║
        │            │ ║            ║
        │            │ ║         -  ║
        │            │ ║            ║
        └────────────┘ ╚════════════╝
    
     4) После  HALT 'а для картинки на 2-м
экране устанавливаем ее атрибуты.
 
        ┌────────────┐ ╔════════════╗
        │            │ ║ ░░░░░░░░░░ ║
        │            │ ║  ░░░░░░░░░░║
        │            │ ║ ▒▒▒▒▒▒▒▒▒▒ ║
        │            │ ║   ▒▒▒▒▒▒▒▒ ║
        └────────────┘ ╚════════════╝
  
                   * * *




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

От автора - помощь: Новые глюки в новой оболочке.

От автора - автора: об авторах журнала.

Презентация - Авторские программы: Installer to AUTORUN DISK v2. 0, адвентюрная игра Diamond.

Презентация - программа для защиты программ TRICK v1. 003b.

Презентация - HELP Z_80: Руководство пользователя.

Интерфейс - письма читателей: Черный ворон, Секрет игры NEW DIZZY, Об ошибках игры APOLLO, о новой веросии отладчика STS 6.2, Как пройти игру Святогор.

Интерфейс - PC vs Amiga: Так ли AMIGA RULEZ? Первые впечатления неофита.

Интерфейс - о поддержке производителями "железа" своих "творений" после того, как они (творения) попадают в руки пользователей.

Интерфейс - мысли вслух: "SPECCY компьютер для молодых. Если у нас так много крутых кодеров, то почему так мало крутого отечественного soft'а?"

Интерфейс - загоны от CAV inc: "SPECCY это не работа, это отдых, это, даже, больше, чем отдых, это стиль жизни, и, если за это вам еще удается получить деньги..."

Интерфейс - SPECCY за и против, Размышления Spy/Eternity Industry.

Система - Обзор системных программ: ZX-IBM Editor v1.5M , PPF v1.05, Multistudio v2.0p, Mods Player v2.0, Bitmap Viewer v2.0, Corrector v2.0, Storm v1.1, 866 v1.2, HRUM v3.5, TDU v1.0, HRUST v1.0, RLE-Compressor v1.21, Оверлеи Consul Commander.

Обзор игрушек - Обзор новых игровых программ: Rabbit Jazzy, Quadrax, Komplex, Math of the day, Cue Boy, Zly Sen, Prva Aakcia, Outlaw, The Dark Empire, Gary Linekers.

Обзор игрушек - демоверсии: Little Ghost, The Dark Empire, Worms, Смагли 3, Monster Land, Цивилизация, Тайны капитана Шелтона.

Гости - Презентация группы группы из Коврова - Eternity Industry.

Гости - Filix о создании игры ВИННИ ПУХ-2.

Гости - экстремальщики: новая рубрика, освещающая аспекты жизни и творчества экстремальных рыбинских музыкантов. Сегодня в гостях Марат и Демон - стоявшие у истоков такой известной (в узких кругах) команды "Disgust".

Раскрутка - Как играть в игру Encyclopedia of WAR.

Раскрутка - прохождение игры Where time Stood Still.

Раскрутка - описание игры Elopement: back to the Earth.

Раскрутка - прохождение текстовой адвентюры Остров тьмы (Island Darkness).

Раскрутка - прохождение текстовой адвентюры Knightmare.

Обмен опытом - Русские глюки: игра Остров тьмы (о том, как НЕ НАДО писать адвентюрные игры).

Обмен опытом - Доработка ZX-ASM v3.0 от Ивана Рощина.

Обмен опытом - Особенности видеоконтроллера ZX Spectrum (для программистов).

Обмен опытом - Графический эффект IRIS (плазма).

Обмен опытом - процедура вывода окна с рамкой.

Обмен опытом - о том как оперировать в ассемблере с длинными числами типа Long.

Обмен опытом - Art Studio и принцип открытой архитектуры (как написать свои модули к редактору).

Обмен опытом - процедура Движение атрибутной надписи по пикселям (плавающие атрубуты).

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

Оттяг - Тест "Формацевт, проверка на подлинность".

Оттяг - Тест "Ты случайно не тупая задница".

Оттяг - Тест "Есть ли у тебя чувство юмора".

Оттяг - Тест "Какой из тебя студент".

Оттяг - Как ПРАВИЛЬНО убить Windows'95.

Оттяг - Винни-Пух и все-все-все - 2.

Новелла - Сказки Капрала Джилана (по игре Laser Squad).

Новелла - Побег из космоса (по игре Elite).

Новелла - Ежики мутанты.

Новости - новости от Рыбинских спектрумистов: Infosoft, Shrsoft, Surgeon, Chasm, Protecvision, Groboclone, Volume 4, Expеrience, Mr. Vano, Ant, Demon, Miguel, Veka, RDM, Auryn.

Новости - новости от Ярославских спектрмистов: Marchy, Kav Software, Nicolas Viper, Dr Shura, Harkonnen, MacKeymn, DJ Reason.

Реклама - реклама и обьявления.


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

Похожие статьи:
Вступление - уже появился и ТРЕТИЙ номер газеты "AMIGOZ"!
Программирование - Загрузчик для рабочей дискеты.
party zone - ASCii Demo Party'02:official results.

В этот день...   17 декабря