┌────────────────────────────────────────┐
│ C-bus (based on Centronics interface). │
└────────────────────────────────────────┘
(c)VTS'99
Идея проста: устройства, собирающиеся
надолго обосноваться на внешней шине,
должны иметь вход и выход, и включаться
каскадно. Принтер - последний.
Итак, имеется 8 буферированных выхо-
дов, для принтера это данные. Для двунап-
равленного обмена они не подойдут, значит
пускай это будут линии управления. Эти ли-
нии транслируются напрямую на выход, без
буферов.
Еще имеется 8 двунаправленных линий.
Это, естественно, шина данных. Вообще-то
они тоже нехилые (идут с музыкалки), но
если их хорошенько нагрузить, или если по-
зарез нужен длинный шлейф, прийдется буфе-
рировать. Вот здесь уже нужен флаг RD/WR.
Возьмем на его роль ОК-выход Q2/ (SLCTIN,
17pin_DB25). Активный (нулевой) уровень
соответствует чтению. Конечно, тогда можно
программно получить конфликт, но от при-
дурков все равно не спастись, а микрухи
таких вещей в основном не боятся.
Если девайс очень простой, с коротким
входным шлейфом и единственной нагрузкой
(1533,555) на этой шине, буфер не обязате-
лен. Иначе лучше протранслировать данные
на выход через АП6, подав на 1'ую ногу
флаг RD/WR.
Ну а теперь осталось разобраться, как
выбирать нужный девайс. Из оставшихся пяти
ОК-выходов один занят принтером, и один
определяет направление передачи данных.
Однако строб принтера можно тоже использо-
вать, но такой девайс будет включаться
вместо принтера, и тоже последним в цепоч-
ке.
Итак, есть 3 ОК, т.е. можно подключить
до 3'ех устройств единовременно, не считая
принтера.
Чтобы не драться за адресное
пространство, можно сделать так. Все де-
вайсы выбираются по линии Q6, но каждый из
них транслирует эти линии так:
Q5──Q5 Q5──Q5 Q5──Q5 <---p
-─────────────────────── r
Q2──Q2 Q2──Q2 Q2──Q2 i
──────────────────────── n
Z <-Q6 /Q6<-<Q6 /Q6<-<Q6 /Q6 t
X <-Q7//Q7<-<Q7//Q7<-<Q7//Q7 e
Q8/ Q8 Q8/ Q8 Q8/ Q8 r
└──────┘ └──────┘ └──────┘
1 2 3
Тогда остается сообщить проге, каким
по-порядку включен ее девайс (если она не
сможет сделать сама аутоконфиг). T.e. 1'ый
девайс выбирается по линии Q6, 2'ой по Q7,
3'ий по Q8.
DB-25 Centronics
────────────────
Разъем "мама" с лицевой стороны.
pin25 pin13
│ │
Q8/ _ - I7 (c2)
gnd _ - I6 (c1)
Q6/ _ - I2 (busy)
gnd _ - I5 (c0)
gnd _ - D7
(error) I4 _ - D6
(pe) I3 _ - D5 data
(acknlg) I1 _ - D4 for
(slctin) Q2/ _ - D3 printer
(auto) Q7/ _ - D2
(selout) I0 _ - D1
+5v _ - D0
- Q5/ (strobe)
│ │
pin14 pin1
D0...D7 - восемь буферированных выхо-
дов (данные принтерa).
I0...I7 - восемь небуферированных дву-
направленных линий (данные C-bus).
Q2/,Q5/,Q6/,Q7/,Q8/ - пять ОК-выходов.
Линии BUSY и STROBE подтянуты резисто-
рами к шине +5v.
За подробностями советую обратиться к
схеме КАЯ.
Centronics, установленный на другие
клоны (на основе той же AY или ВВ55), мо-
жет иметь ДРУГИЕ ПОРТЫ ! Т.е. обмен должен
осуществляться через драйвер.
Ну и под конец хочу сказать, что
Centronics - по сути кульная весчь.
Большая часть девайсов может удовлетво-
риться обменом порт-порт невысокой скорос-
ти, что фактически на блюдечке приподносит
Centronics. Жаль, нет еще пары входов (ти-
па запросов на прерывания).
Однако получаем: не надо вскрывать
комп, не надо занимать слот (а для других
клонов - не нужно паяться к Z80), меньшие
требования к временным параметрам обмена
по шине (задержкам, например) [кто там
сказал 155'ая серия ? ;) ], выше "вероят-
ность успешного подключения девайса" (за
90% для всех клонов с Centronics'ом).
Ладно, надо закругляться.
исдос, 23-04-99, 20:42msk