Просветите кто-нибудь подробно про параллельный порт УКНЦ.
Вот что имеем из ТО:
7.4.4. Регистры параллельного программируемого интерфейса
Программисту устройство параллельного программируемого интерфейса представлено четырьмя байтовыми регистрами (все регистры имеют формат 0-7 бит) с адресами:
177100 - порт А
W/R 177101 - порт B
177102 - порт С
177103 - управляющий байт
Все разряды портов выведены на интерфейсный разъем.
Особенностью работы с регистрами является требование обращения к указанным адресам с передачей информации в младшем байте (в т.ч. по нечетным адресам).
Подробно работа с микросхемой описана в ОАБ.142.400
Также имеем код ПЗУ:
Код:
; П/п вывода символа на принтер
135722$:MOV R5,-(SP)
MOV SP,R5
BIT #2,177101$ ; Принтер в состоянии ON-LINE ?
BEQ 136000$ ; Нет
135736$:BIT #200,177101$ ; Бит подтверждения сброшен ?
BNE 135736$ ; Нет
MOV 4(R5),177100$ ; Послать код символа на линию данных
BIC #200,177102$ ; Установить сигнал строба
135762$:BIT #200,177101$ ; Получен сигнал подтверждения ?
BEQ 135762$ ; Нет
MOV #200,177102$ ; Сбросить сигнал строба
136000$:JMP 136056$
; П/п инициализации параллельного порта
136004$:MOV R5,-(SP)
MOV SP,R5
MOV #174,177103$
MOV #200,177102$
JMP 136056$
Порты 177100--177102 -- это порты A-C микросхемы 580ВВ55, а порт 177103 -- это управляющий байт ВВ55. Все данные этих четырёх портов передаются инверсно (особенность шины данных).
Код:
177100 -- порт A -- output: данные
177101 -- порт B -- input
bit 0 - A4 -- конец бумаги
bit 1 - A0 -- on-line -- готовность приёмника
bit 3 - A2 -- ошибка принтера
bit 7 - AC -- запрос передачи
177102 -- порт C --
upper output
bit 7 - SC -- strobe
lower input
177103 -- управляющий байт ВВ55
bit 7 - Mode set flag (1=active)
bit 6-5 - Group A Mode selection
bit 4 - Port A direction (1=input 0=output)
bit 3 - Port C upper direction (1=input 0=output)
bit 2 - Group B Mode selection
bit 1 - Port B direction (1=input 0=output)
bit 0 - Port C lower direction (1=input 0=output)
При инициализации порта байтом #174 в ВВ55 приходят биты 10000011, т.е. задаётся режим:
port A output, port C upper output, port B input, port C lower input.
В принципе, на этом уже можно написать эмуляцию принтера, но если захочется чего-то большего -- нужен будет маппинг остальных сигналов на порты ВВ55.