Текстовый контроллер

* Разрешение: 512х256 точек (64х16 символов)
* Символ: 8х16

Принцип работы:

* АЦЗУ хранит 1024 символа в формате ASCII + бит инверсии
* синхронизатор перебирает адреса АЦЗУ
* коды букв из памяти выбирают адрес в ПЗУ с картинками букв
* данные из ПЗУ идут в сдвиговый регистр, который выдает их в видеосигнал

* АЦЗУ: SRAM 1K x 9 бит
* Микросхема: девять шт. КР132РУ4 (лист 7)
* Вход: VA0…VA9, Din
* Выход: Zout
* Управление: -EZ, ERD/-ERW

Вход (шина адреса):

 12 сигнал FONT "выбор набора символов", бит 2 регистра управления D17 (13.35)
 11
 … 04…11 - код символа из АЦЗУ
 04
 03 C9 сигналы перебора адресов из синхронизатора -
 02 C8 вообще-то для регенерации.
 01 C7 здесь используются для выборки
 00 C6 строк символа при выводе на экран.

Если сигнал -WEV высокий, то АЦЗУ в режиме чтения:
 - сигналы C0…C5 выбирают столбец в строке. инкремент равен частоте сигнала SHIFT для D73
 - сигналы C10…13 выбирают строку
 - по сигналу LOADPOM регистр К555ИР27 D60 (6.4) запоминает выбранный байт из АЦЗУ и устанавливает на выходе
 - ПЗУ D59 всегда выбрана. Вход: байт из D60, сигнал FONT и C6…C9; Выход - строка символа
 - по низкому SHIFT + высокому VCLK сдвиговый регистр D73 забирает код из ПЗУ
 - по высокому SHIFT сдвиговый регистр D73 сдвигает символ на один бит и старший ставит на выходе

### Адресный мультиплексор

Микросхемы: D49, D50, D51 К555КП11 (лист 6)
Вход: A0…A9 от CPU, C0…C5 и C10…C13 от синхронизатора, -RV ("чтение АЦЗУ" от Дешифратора)
Выход: VA0…VA9
Управление: WERG, все МС мультиплексора выбраны все время: -EZ заземлен

### Инверсия

Бит инверсии нужен для указания, что символ в АЦЗУ должен отображаться инверсно (бел->черн, черн->бел).
Бит инверсии хранится как бит 9 в АЦЗУ и недоступен по шине данных CPU (она 8 бит).
Чтение бита инверсии: регистр 38H, разряд 3
Запись бита инверсии: регистр 3AH, разряды 4 (-INVOFF) и 5 (-INVOFF) идущие от D17 (13.35) к D75 (6.6):

D75 КМ555ТМ2 два триггера
D75.4 -S -INVON
D75.1 -R -INVOFF

Принцип работы:
если -INVON==0, то АЦЗУ.inverse=1
если -INVOFF==0, то то АЦЗУ.inverse=0
если оба==0, то в КМ555ТМ2 нет такого режима
если оба==1, то:
- на входе D75.2 (D) - сигнал CD0 с D62 КР132РУ4 (7.1)
- на входе D75.3 (C) - сигнал -RV ("чтение АЦЗУ") при высоком WERG или постоянный "1" при низком WERG (D49.9 К555КП11)
- на выходе D75.5 - сигнал CDI "инверсия текстового вывода" подключен к входу D62 КР132РУ4 (7.1) и D17.1 КР580ВВ55 (13.35)
- по положительному фронту C, D75 подключает вход D к выходу
- выход защелкивается (значение фиксируется)
- TODO ЗАЧЕМ ПОДКЛЮЧАТЬ ВЫХОД ПАМЯТИ К ВХОДУ ПАМЯТИ

### Сдвиговый регистр

Вход: ПЗУ знакогенератора D59, CDO (выход бита инверсии)
Выход: идет на D73 XOR, где превращается в VIDCOMP (композитное видео)
Управление: SHIFT (E->), VCLC (C), DEC заземлен

Низкий SHIFT + положительный фронт VCLK: загружает в регистр данные с шины
Высокий SHIFT: D73 выдвигает данные на выход D73.13 в порядке D7…D0 и загружает в младший бит вход 0-> TODO откуда

При низком -HBL или -VBL коды символов загружаться в регистр D73 ИР10 не будут.

SHIFT и VCLK приходят из Синхронизатора:

VCLK = 10M\*MODSEL + 10M\*5M\*MODSEL
SHIFT = not((HBL\*5M\*2.5M\*not(1.25)\*MODSEL\*VBL) +

```
       + (HBL*5M*2.5M*1.25M*MODSEL*VBL*C0))

```

где:
 MODSEL - режим экрана 64/32 символа в строке
 -HBL - гашения луча при смене кадра
 -VBL - гашение луча при смене строки

D73 XOR нужна для того, чтобы при установленном сигнале инверсии выход получался инверсным относительно текущего значения

### Режим 32 символа

По высокому сигналу MODSEL
- Синхронизатор в два раза замедляет сигналы SHIFT и VCLK
- сдвиговые регистр D73 сдвигает данные в два раза медленнее
- остальные частоты (VSYNC, HSYNC, VBL, HBL) остаются прежними
- на экран помещается в два раза меньше информации по горизонтали

## Создание картинки из ASCII и ПЗУ с битмапами букв

Микросхемы:
 регистр К555ИР27 D60 (6.4)
 ПЗУ К573РФ4 D59 (6.8)
 сдвиг. регистр К555ИР10 D73 (6.12)
 XOR К555ЛП5 D71 (6.10)

Вход:
 -HVSYNC строчная синх

Выход:
 VIDCOMP композитное видео
 BWV ЧБ видеосигнал

Пример битмапов в ПЗУ:

```

```