... продолжение
9. Порты ввода-вывода
КР-04 использует следующие адреса портов ввода-вывода:
Основной ППА ВВ55 — 0C0h-0C3h
Таймер ВИ53 — 0D0h-0D3h
Контроллер ЭЛТ ВГ75 — 0E0h-0E1h
Контроллер ПДП ВТ57 — 0F0h-0F8h
ППА блока цветности — 00h-03h
ППА ROM-диска/SD-контроллера — 10h-13h
10. Адресное пространство
По адресам 0000-F7FF всегда располагается ОЗУ. Из окна F800-FFFF контролер ПДП и схема знакогенератора также всегда читают содержимое верхних адресов ОЗУ, доступ же процессора зависит от состояния бит 1 и 0 порта C основного ППА:
00 — чтение ПЗУ1, запись ОЗУ
01 — чтение ПЗУ2, запись ОЗУ
10 — чтение ПЗУ3, запись ОЗУ
11 — чтение ПЗУ1, запись ОЗУ (адреса 0000-07FF)
11. Основной ППА
Назначение выходов портов основного ППА:
Порт A:
0-7 — матрица клавиатуры, output
Порт B:
0-7 — матрица клавиатуры, input
Порт C:
0-1 — выбор карты распределения памяти, output
2 — выбор черно-белого режима, output
3 — вывод на магнитофон, output
4-6 — матрица клавиатуры, input
7 — ввод с магнитофона, input
12. Структура знакогенератора
Область знакогенератора в ОЗУ имеет следующий формат:
Код:
A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0
1 RVV HGLT GPA1 GPA0 C6 L3 L2 L1 L0 C5 C4 C3 C2 C1 C0
Здесь:
RVV, HGLT, GPA1, GPA0 — атрибуты ВГ75
С6..С0 — код символа
L3..L0 — номер скан-линии в символе
Код переключения атрибутов ВГ75:
Код:
7 6 5 4 3 2 1 0
1 0 undl RVV GPA1 GPA0 bl HGLT
Таким образом, адресное пространство 8000-FFFF, которое может быть использовано для знакогенератора, делится на 16 блоков по 800h байт, каждый из которых определяется комбинацией атрибутов RVV, HGLT, GPA1, GPA0 ВГ75. Далее каждый блок 800h байт делится на 2 подблока размером 400h для символов с кодами 00h-3Fh и 40h-7Fh. Внутри каждого подблока последовательно идут байты для первой скан-линии всех символов, затем — для второй, и так далее до 16-й.
В монохромном режиме каждый байт знакогенератора интерпретируется как последовательность точек слева направо от младших бит к старшим:
Пиксели: D0 D1 D2 D3 D4 D5 D6 D7
В цветном режиме биты выбираются попарно из старшего и младшего полубайт для формирования цветов 4 пикселей:
Пиксели: D4 D0 | D5 D1 | D6 D2 | D7 D3
Без блока цветности цвета кодируются следующим образом:
00 – черный
01 – синий
10 – зеленый
11 – красный
В случае использования блока цветности цвета по умолчанию такие же, но могут быть изменены, как будет описано ниже.
Режимы по умолчанию программируются следующим образом:
Текстовый режим: экранная область 76СE-7FF1 либо 36CE-3FF1, по адресам совместима с РК-86, перед началом основной области РК-86 по адресу 76CF записан код атрибута 9Dh, указывающий, что знакогенератор находится в недоступной для чтения процессору области F800-FFFF. Сам знакогенератор, копируемый туда Монитором, в основном совпадает с РК-86 за исключением нескольких символов. Кроме того, символы имеют матрицу 8*8, а не 6*8, как в РК-86.
Графические режимы: в графических режимах по недоступным для чтения процессором адресам F900-FCD7 формируется особым образом организованный текстовый буфер, состоящий из последовательных символов различных наборов знакогенератора, символы при этом имеют высоту 16 скан-линий. При этом область знакогенератора B800-F7FF используется как графическое видео-ОЗУ. Первая строка пикселов при этом располагается по адресам BC02-BC3D, вторая – по адресам BC42-BC7D и так далее, с шагом 40h. С учетом неиспользуемого запаса по краям, это обеспечивает отображение 224 строк по 240 пикселей (480 в монохромном режиме). Не совсем понятно, почему разработчики не реализовали в Мониторе полноценный режим 256*256 точек, возможно хотели иметь некоторый запас по бордюру, однако, такой режим вполне можно запрограммировать самостоятельно (хотя в этом случае уже не получится воспользоваться средствами Монитора для вывода текста и графики).
13. Блок цветности
Палитра задается программированием значений выходов портов A-C адаптера ВВ55 блока цветности (порты 00h-03h).
Код:
Лог.цвет 11 10 01 00
Порт A: B1 B0 | B1 B0 | B1 B0 | B1 B0
Порт B: G1 G0 | G1 G0 | G1 G0 | G1 G0
Порт C: R1 R0 | R1 R0 | R1 R0 | R1 R0
Итоговый цвет формируется из интенсивностей трех цветовых компонентов — красного (R1 R0), зеленого (G1 G0) и синего (B1 B0).
продолжение следует…