Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Прокрутка экрана (скроллинг)






 

Есть два разных прокручиваемых экрана A и B, которые могут прокручиваться по вертикали и по горизонтали не зависимо друг от друга. Минимальная и основная единица прокрутки - 1 точка растра. При прокрутке по горизонтали, можно выбрать два режима прокрутки: прокрутка по символам (блоки в 8 строк) и прокрутка по строкам (отдельные строки экрана. Вертикальная прокрутка может быть либо весь экран, либо столбики из двух символов (16 точек). Размер прокручиваемого экрана можно менять с шагом в 32 символа (8х8 точек).

 

 

При прокрутки необходимо программировать Регистры и место в видеобуфере VRAM.

 

Плоскость прокрутки “A” – Базовый адрес таблицы символов

 

  D7 D6 D5 D4 D3 D2 D1 D0
Регистр №2     SA15 SA14 SA13      

 

Плоскость прокрутки “B” – Базовый адрес таблицы символов

 

  D7 D6 D5 D4 D3 D2 D1 D0
Регистр №4           SB15 SB14 SB13

 

Регистр режима №3

 

  D7 D6 D5 D4 D3 D2 D1 D0
Регистр №11         IE2 VSCR HSCR LSCR

 

Регистр режима №4

 

  D7 D6 D5 D4 D3 D2 D1 D0
Регистр №12 RS0       S/TE LSM1 LSM0 RS1

 

Базовый адрес таблицы горизонтальной прокрутки

 

  D7 D6 D5 D4 D3 D2 D1 D0
Регистр №13     HS15 HS14 HS13 HS12 HS11 HS10

 

Размер прокрутки

  D7 D6 D5 D4 D3 D2 D1 D0
Регистр №16     VSZ1 VSZ0     HSZ1 HSZ0

VRAM: Таблица плоскости прокрутки “A” максимум 8Кбайт

Таблица плоскости прокрутки “B” максимум 8Кбайт

Таблица горизонтальной прокрутки максимум 960 байт

VSRAM: Таблица вертикальной прокрутки максимум 80 байт

 


_ Размер прокручиваемого экрана _

 

Размер прокручиваемого экрана задается битами VSZ1, VSZ0, HSZ1 и HSZ0 в Регистре №16.

6 разных методов прокрутки можно установить для обоих плоскостей (“A” и “B”).

 

32*32/32*64/32*128

64*32/64*64

128*32

 

VSZ1 VSC0 Функция   HSZ1 HSZ0 FUNCTION
    32 символа по вертикали       32 по горизонтали
    64 символа по вертикали       64 по горизонтали
    запрещено       запрещено
    128 символа по вертикали       128 по горизонтали

 

Таблицы символов обоих плоскостей находятся в видеобуфере VRAM и устанавливаются Регистрами №2 и №4. Обе плоскости разделяют VRAM и взаимодействуют друг с другом.

 

ПРИМЕР

 

  Регистр №16 = 00H: 32*32 символа
               
        003C 003E
      007C 007E
  Размер - 32x32 символа
 
 
        07BC 07BE
  07C0 07C2 07FC 07FE

 

  Регистр №16 = 11H: 64*64 символа
               
        007C 007E
      00FC 00FE
  Размер - 64x64 символа
 
 
  1F00 1F02   1F7C 1F7E
  1FC0 1FC2 1FFC 1FFE

 


 

  Регистр №16 = 03H: 128*32 символа
               
        00FC 00FE
      01FC 01FE
  Размер – 128x32 символа
 
 
  1E00 1E02   1EFC 1EFE
  1F00 1F02 1FFC 1FFE

 

Значения адресов ячеек даны как смещение относительно базового адреса таблицы символов.

 

_ Горизонтальная прокрутка _

 

Отображаемый экран можно сдвигать целиком, либо отдельно каждую строку символов (8 линий), либо каждую строку экрана отдельно. Режим прокрутки выбирается битами HSCR и LSCR в Регистре №11. Установки применяются к обоим плоскостям (“A” и “B”) одновременно.

 

HSCR LSCR Функция
    Экран целиком
    Запрещено
    Строка символов (8 строк экрана)
    Строка экрана

HSCR, LSCR: Регистр №11

 

Размер значения сдвига экрана – 10 бит. (000H-3FFH).

Если брать отображаемый экран за основу, то направление сдвига будет таким:

 

 


Таблица горизонтального сдвига: Таблица горизонтальной прокрутки находится в видеобуфере VRAM. Начинается с базового адреса, заданного в Регистре №13. Значение сдвига для плоскостей “A” и “B” устанавливается раздельно. Еще, значение горизонтального сдвига зависит от режима (экран целиком, каждая строка символов или каждая отдельная строка).

 

Режим Позиция в таблице
Целиком Строка 0
Строка символов Каждая 8-ая строка, начиная с 0-ой
Строка экрана Все строки

 

Адрес D15-D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 Сдвигает
    A •Значение сдвига плоскости “A” Целиком, Строку символов, Строку экрана
    B • Значение сдвига плоскости “B” Целиком, Строку символов, Строку экрана
    A • Значение сдвига плоскости “A” Строку экрана
    B • Значение сдвига плоскости “B” Строку экрана
    A • Значение сдвига плоскости “A” Строку экрана
0A   B • Значение сдвига плоскости “B” Строку экрана
       
       
1C   A • Значение сдвига плоскости “A” Строку экрана
1E   B • Значение сдвига плоскости “B” Строку экрана
    A • Значение сдвига плоскости “A” Строку символов, Строку экрана
    B • Значение сдвига плоскости “B” Строку символов, Строку экрана
       
       
3FC   A • Значение сдвига плоскости “A” Строку экрана
3FE   B • Значение сдвига плоскости “B” Строку экрана
                           

 

Биты D15-D10 можно использовать в своих целях.


 

_ Вертикальная прокрутка _

 

Отображаемый экран можно сдвигать по вертикали либо целиком, либо столбиками по 2 символа (16 точек). Режим задается битом VSCR в Регистре №11. Установка режима происходит одновременно для обоих плоскостей.

 

VSCR Функция
  Целиком экран
  Столбиками по 2 символа

VSCR: Регистр №11

 

Размер значения сдвига экрана – 11 бит. (000H-7FFH). Однако, он меняется, в зависимости от режима отображения:

 

Режим Размер значения сдвига
Не чересстрочный 10 бит
Чересстрочный 1 10 бит
Чересстрочный 2 11 бит

 

Если брать отображаемый экран за основу, то направление сдвига будет таким:

 


Значение сдвига по вертикали задается в VSRAM. Можно задавать сдвиг плоскостей “A” и “B” раздельно.

 

Как и в случае с горизонтальным сдвигом, значение вертикального сдвига зависит от режима (экран целиком, 2 столбика символов):

Режим Позиция в таблице
Целиком Только в начале
2 столбика символов Все

 

Адрес D15-D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 Сдвигает
    A •Значение сдвига плоскости “A” Столбик 0 и 1, Целиком
    B • Значение сдвига плоскости “B” Столбик 0 и 1, Целиком
    A • Значение сдвига плоскости “A” Столбик 2 и 3
    B • Значение сдвига плоскости “B” Столбик 2 и 3
    A • Значение сдвига плоскости “A” Столбик 4 и 5
0A   B • Значение сдвига плоскости “B” Столбик 4 и 5
0C   A • Значение сдвига плоскости “A” Столбик 6 и 7
0E   B • Значение сдвига плоскости “B” Столбик 6 и 7
       
       
4C   A • Значение сдвига плоскости “A” Столбик 38 и 39
4E   B • Значение сдвига плоскости “B” Столбик 38 и 39
                             

 

Биты D15-D11 не определены.

 


 

_ ТАБЛИЦА СИМВОЛОВ ПЛОСКОСТИ _

 

Таблица символов располагается в видеобуфере VRAM и находится по адресу, задаваемому в Регистре №2 для плоскости “A” и в Регистре №4 для плоскости “B”. На каждый символ отводится 2 байта (1 слово – WORD). Размер таблицы и количество символов в строке/столбце зависит от размера плоскости (см. выше, Размер прокручиваемого экрана).

 

    D7 D6 D5 D4 D3 D2 D1 D0  
Символ 1 байт PRI CP1 CP0 VF HF PT10 PT9 PT8 D15 – D8
2 байт PT7 PT6 PT5 PT4 PT3 PT2 PT1 PT0 D7 – D0

 

PRI: Приоритет (см. Приоритет)

CP1, CP0: Палитра цвета. (см. Палитра цвета)

VF: Зеркальный поворот по вертикали (1 – зеркало)

HF: Зеркальный поворот по горизонтали (1 – зеркало)

PT10-PT0: Номер символа (тайла) в символьном генераторе

 

Биты поворота VF и HF: Позволяют на аппаратном уровне провести зеркализацию тайла (символа).

 

VF = 0 VF = 1 VF = 0 VF = 1

HF = 0 HF = 0 HF = 1 HF = 1

 


_ СИМВОЛЬНЫЙ ГЕНЕРАТОР _

 

Символьный генератор располагается по адресу 0000H в видеобуфере VRAM, все символы (тайлы) основаны на матрице точек с размером 8х8. Чтобы описать 1 символ необходимо 32 байта, так как на 1 точку приходится 4 бита. Символы в генераторе хранятся друг за другом, начиная с 0 по адресу 0000H, потом 1 по адресу 0020H и т.д. Соответствие точек матрицы символа и информации в памяти генератора показана ниже:

 

         
  D7-D4 D3-D0 D7-D4 D3-D0 D7-D4 D3-D0 D7-D4 D3-D0
00H A1 A2 A3 A4 A5 A6 A7 A8
04H B1 B2 B3 B4 B5 B6 B7 B8
08H C1 C2 C3 C4 C5 C6 C7 C8
0CH D1 D2 D3 D4 D5 D6 D7 D8
10H E1 E2 E3 E4 E5 E6 E7 E8
14H F1 F2 F3 F4 F5 F6 F7 F8
18H G1 G2 G3 G4 G5 G6 G7 G8
1CH H1 H2 H3 H4 H5 H6 H7 H8

 

Как видно из таблицы, в байте располагается 2 точки, по 4 бита на точку. Это позволяет указать на 1 из 16 цветов каждой точке:

 

D7 D6 D5 D4 D3 D2 D1 D0
COL3 COL2 COL1 COL0 COL3 COL2 COL1 COL0

 


В чересстрочном режиме один символ (тайл) имеет матрицу 8X16 точек. Соответственно, он занимает 64 байта памяти:

         
  D7-D4 D3-D0 D7-D4 D3-D0 D7-D4 D3-D0 D7-D4 D3-D0
00H A1 A2 A3 A4 A5 A6 A7 A8
04H B1 B2 B3 B4 B5 B6 B7 B8
08H C1 C2 C3 C4 C5 C6 C7 C8
0CH D1 D2 D3 D4 D5 D6 D7 D8
10H E1 E2 E3 E4 E5 E6 E7 E8
14H F1 F2 F3 F4 F5 F6 F7 F8
18H G1 G2 G3 G4 G5 G6 G7 G8
1CH H1 H2 H3 H4 H5 H6 H7 H8
20H I1 I2 I3 I4 I5 I6 I7 I8
24H J1 J2 J3 J4 J5 J6 J7 J8
28H K1 K2 K3 K4 K5 K6 K7 K8
2CH L1 L2 L3 L4 L5 L6 L7 L8
30H M1 M2 M3 M4 M5 M6 M7 M8
34H N1 N2 N3 N4 N5 N6 N7 N8
38H O1 O2 O3 O4 O5 O6 O7 O8
3CH P1 P2 P3 P4 P5 P6 P7 P8

 


 

ОКНО

 

Для отображения окна, требуется установить значения следующих регистров и видеобуфера VRAM:

 

БАЗОВЫЙ АДРЕС ДЛЯ ОКНА

 

  D7 D6 D5 D4 D3 D2 D1 D0
Регистр №3     WD15 WD14 WD13 WD12 WD11  

 

РЕГИСТР РЕЖИМА №4

 

  D7 D6 D5 D4 D3 D2 D1 D0
Регистр №12 RS0       S/TE LSM1 LSM0 RS1

 

ПОЗИЦИЯ ОКНА ПО ГОРИЗОНТАЛИ

 

  D7 D6 D5 D4 D3 D2 D1 D0
Регистр №17 RIGHT     WHP5 WHP4 WHP3 WHP2 WHP1

 

ПОЗИЦИЯ ОКНА ПО ВЕРТИКАЛИ

  D7 D6 D5 D4 D3 D2 D1 D0
Регистр №18 DOWN     WVP4 WVP3 WVP2 WVP1 WVP0

Видеобуфер VRAM: таблица символов окна по адресу с базой в Регистре №3 - максимально 4Кбайт

 


 

_ ПОЗИЦИЯ ОТОБРАЖЕНИЯ ОКНА _

 

Позиция отображения окна определяется в Регистрах №17 и №18.

Экран можно разделить на строки (по одному символу) и столбцы (по 2 символа) символов. Это разделение зависит от режима:

 

 

              ---              
               
             
             
---  
               
             
             

 

Режим 40х28 символов.

 

  D7 D6 D5 D4 D3 D2 D1 D0
Регистр №17 RIGHT     WHP5 WHP4 WHP3 WHP2 WHP1
  D7 D6 D5 D4 D3 D2 D1 D0
Регистр №18 DOWN     WVP4 WVP3 WVP2 WVP1 WVP0

 

RIGHT: 0 Отображает Окно с левого края до базовой точки “H” Окна.

1 Отображает Окно с базовой точки “H” Окна до правого края.

DOWN: 0 Отображает Окно с верхнего края до базовой точки “V” Окна.

1 Отображает Окна с базовой точки “V” Окна до нижнего края.

WHP5-WHP1: Граница разделения по горизонтали (базовая точка H).

WVP4-WVP0: Граница разделения по вертикали (базовая точка “V”).

 

Размер по горизонтали Точка разделения (WHP)   Размер по вертикали Точка разделения (WVP)
32 символов 0 - 16 (0 - 32 символов)   28 символов 0 - 28
40 символа 0 - 20 (0 - 40 символа)   30 символов 0 - 30

 







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.