Идея была - попробовать прикрутить к
PDP-8 ППА i8255 и обращаться к нему её "
родными"
командами
IOT
Но прикрутить
i8255 к
PDP-8 особого аппаратного, да и программного труда не составит,
хотя, в отличие от привычных нам систем на
i8080,
Z80,
6502, аппаратный "
гиморроец" -
зело прибавится.
И дело тут вот в чем...
Привычные нам системы могут
записать в порт и
считать порт при обращении к нему,
а вот с
PDP-8 - всё совсем не так.
Со своими
устройствами ввода/вывода она в принципе может делать следующие действия:
Но
что делать с каждым неизвестным ей устройством
PDP-8 не знает, поэтому делает
такой хитрый трюк: выставляет код операции на шину и сопровождает его сигналом
"
I/O PAUSE L", который и означает, что
идет обращение процессора к УВВ.
По этому сигналу каждое устройство своим селектором собственного адреса должно
"
осознать", что обращаются к нему, и поскольку
PDP-8 не знает что с устройством
делать, устройство должно тут-же на лету
дешифровать код операции в битах 9-11 и
"
сообщить" процессору
PDP-8 по специальной шине
C0-C2, какое действие из приведенных
в списке выше нужно совершить. Процессор его и совершит в следующем такте.
Поэтому систему команд ввода/вывода
PDP-8 называют "
расширяемой", поскольку, дешифруя
биты 9-11, внешнее устройство может делать само что угодно, но от процессора может
потребовать только действие из списка выше.
Если ни одно из действий не выбрано, то это эквивалентно операции
NOP.
Что касается подключения
i8255 - то понятно, что её придется обвесить в самом простом
варианте
Режима_0 дополнительной логикой, которая будет предписывать процессору
PDP-8
хотя бы
2 его стандартные "услуги":
- Очистить регистр-аккумулятор (AC) и занести в него содержимое регистра устройства
посредством операции логическое ИЛИ.
- Записать содержимое регистра-аккумулятора (AC) в регистр устройства.
И это всё сопроводить
селектором номера группы регистров i8255.
При этом довольно трудно будет работать со сменой режимов
i8255, поскольку дешифрация
команды и сообщение её смысла процессору
PDP-8 выполняется внешней жесткой логикой.
Так что для "
гибкости" работы с "
гибким" устройством
ППА i8255 проще приделать внешний
контроллер, который во всём этом будет разбираться...
Ну а что касается схемотехники - вот простой пример схемы из
PDP-8 Small Computer Handbook:
Увеличить
Это устройство "
умеет" вот что:
Я рассмотрел только "
программный ввод/вывод" в системе с
PDP-8. Есть вариант - работы
по прерываниям, кому он интересен - со вкусом курите
PDP-8 Small Computer Handbook -
там всё написано понятно, но предупреждаю: привыкшим к
i8080,
Z80,
6502 всё это весьма
и весьма непривычно, но не более того.
Сам я озадачился данным вопросом, чтобы попробовать прикрутить
i8255 к
EDUC-8. Но она -
хоть и упрощенный "
огрызок"
PDP-8, такого механизма не имеет - только слабые потуги на
некоторые аналогии при работе с флагами устройств ввода/вывода.
А вообще говоря, механизм этот у
PDP-8 довольно оригинальный!