В состав ОМЭВМ входят три 8-разрядных двунаправленных порта ввода/вывода, причем порты P1 и P2 являются фактически квазидвунаправленными. Кроме того, с помощью линий порта P2 можно обращаться к четырем 4-разрядным портам P4..P7.
Порт P0 (DB) снабжен двунаправленным буфером и предназначен для связи с внешней памятью. Через DB в сопровождении строба ALE выдается 8-разрядный адрес внешней памяти данных или младший байт адреса памяти программ. Кроме того, через DB принимаются команды (в сопровождении строба PME\) или принимаются и выдаются данные (по стробам RD\ и WR\ соответственно. При отсутствии внешней памяти P0 можно использовать для связи с ВУ.
Порт P0 содержит 8-разрядный регистр, в который записывается информация при выводе в порт. При этом формируется строб записи WR\. Информация сохраняется в регистре до поступления новой информации. При считывании из порта информация снимается непосредственно с входных линий и не фиксируется в регистре порта. Считывание сопровождается выдачей строба WR\. Над входными данными и содержимым регистра могут производиться логические операции И и ИЛИ.
Рис. 11.4. Структура разряда квазидвунаправленного порта
Порты P1 и P2 так же содержат 8-разрядные регистры, предназначенные для фиксации выводимой информации (или маски для вводимой). Однако, порты не имеют двунаправленных буферных схем, поэтому для приема байта через P1 (P2) необходимо предварительно записать в регистр порта константу FFh, иначе разряды регистра, хранящие "0", передадут L-уровень на линии внутренней шины и в этих разрядах будут считаны лог."0" независимо от состояния входных линий. На Рис. 11.4 представлена схема одного разряда квазидвунаправленного порта.
Блок LB на Рис. 11.4 реализует логические операции над содержимым регистра порта и входным словом.
В системе команд предусмотрены команды ввода (IN) и вывода (OUT) для портов P0..P2, а так же конъюнкция и дизъюнкция содержимого регистра порта и непосредственного операнда (второй байт команды).
Кроме трех 8-разрядных портов, в ОМЭВМ предусмотрено подключение четырех 4-разрядных портов P4..P7, причем линии P2[3:0] используются для передачи 1/2-байта данных, линии P2[7:6] определяют номер порта, а P2[5:4] - операцию по команде:
0 0
- чтение
- MOVD A, Pp;
0 1
- запись
- MOVD Pp, A;
1 0
- конъюнкция
- ANLD Pp, A;
1 1
- дизъюнкция
- ORLD Pp, A.
В командах с 4-разрядными портами используется младшая тетрада аккумулятора A[3:0]. Синхронизация передачи осуществляется сигналом ST по выходу PROG/ST.