командами IOT
Но прикрутить i8255 к PDP-8 особого аппаратного, да и программного труда не составит,Lavr wrote:...сама команда-то (IOT) довольно проста:
Доступны 64 устройства и 8 вариантов действий.
Есть стандартные устройства (клавиатура, принтер, ленточный или дисковый накопитель и т.д.).
А есть устройства, которые прицепляет пользователь - вот там - анархия...
хотя, в отличие от привычных нам систем на i8080, Z80, 6502, аппаратный "гиморроец" -
зело прибавится.

Привычные нам системы могут записать в порт и считать порт при обращении к нему,
а вот с PDP-8 - всё совсем не так.
Со своими устройствами ввода/вывода она в принципе может делать следующие действия:
Code: Select all
1. Пропустить следующую инструкцию, основываясь на некотором аппаратном статусе.
2. Очистить регистр-аккумулятор (AC)
3. Занести содержимое регистра устройства в регистр-аккумулятор (AC) посредством
операции логическое ИЛИ.
4. "Микропрограммировать" комбинации (1), (2), и (3). Комбинация (2) и (3) вместе
особенно полезна, чтобы прочитать регистр устройства.
5. Записать содержимое регистра-аккумулятора (AC) в регистр устройства.
6. Сгенерировать прерывание, базирующееся на аппаратном статусе - обычно тот же статус,
как и в (1). Функция прерывания использует операцию (1) опроса статуса каждого
устройства последовательно, чтобы определить какое устройство вызывало прерывание.
7. Прямой доступ к памяти - ПДП (DMA).
такой хитрый трюк: выставляет код операции на шину и сопровождает его сигналом
"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 довольно оригинальный!
