Сообщение от
fan
... шибко охота узнать как именно был подцеплен принтер и с каким софтом работал.
Сообщение от
breeze
... из издоса один товаришь за эту инфу вообще денег хотел!
Сразу скажу, что интерфейс Centronics у меня реализован через оба порта AY-3-8910.
Схему для него я позаимствовал из ZX-Ревю №4/95, стр. 36 - 38; если не удасться найти этот журнал, готов нарисовать ее в Art Studio. От себя я добавил к схеме лишь соединение BUSY с +5В через резистор 10К, и исключил связь с ERROR (т. к. не вижу практического смысла в использовании этого сигнала).
К самому принтеру (D100-M) сигналы данных и управления у меня подключены через буфер (иначе не работало), как в книге "Периферия своими руками", ИНФОРКОМ, 1994, стр. 99 - 128.
Порт B (рег.15) AY'а у меня исп-ся как регистр данных; бит 0 порта A (рег.14) исп-ся для приёма BUSY, бит 7 - для передачи /STROBE.
Нельзя назвать такое распределение стандартным: анализируя драйверы из IS-DOS я видел другие назначения битов; также от туда можно позаимствовать и другие интересные решения по данному вопросу (покопаться коде драйверов можно совершенно бесплатно ).
В указанном выше журнале имеется пример драйвера, но я написал свой. Всё необходимое ПО я адаптировал сам: Art Studio, Artist 2, текстовые редакторы и др.
Мое настоятельное мнение: вывод на принтер в программах должен осуществляться через поток #3 и канал "P"; драйвер принтера лучше размещать в буфере ZX Printer'а (в реж. 48K), - в этом случае, через настроенный до загрузки программы канал, печать без проблем будет работать на любом принтере с любым интерфейсом.
Желающие могут посмотреть несколько адаптированных мной таким образом шахматных программ: http://zxfiles.hut2.ru/games/chess.zip Вся документация к ним прилагается.
И в заключении, мой драйвер принтера для Art Studio V1.5TR; к сожалению, в этом редакторе вывод осуществляется не через поток #3, а через пользовательский драйвер, который должен быть с адреса #8764 (34660).
Код:
;(C) Grand, 14.2.2000.
;Драйвер принтера V1.3 для ART STUDIO V1.5TR.
;Интерфейс CENTRONICS, связь через порты AY-3-8910:
; PB - data
; PA - in: b0 - BUSY, out: b7 - /STROBE
;
;
ORG #8764 ;34660
;
DEFW #8764 ;Адр.начала драйвера.
DEFW INIT ;Адр.нач.проц.иниц-ии.
DEFW BUSY ;Адр.нач.проц.пров.готовности пр-ра.
DEFW LPRINT ;Адр.нач.проц.вывода байта на печать.
DEFW END-#8464+1;Общ.длина драйвера.
;Процедура проверки готовности принтера.
;(Возвр. Z=0, если не готов).
BUSY LD DE,#BF07
CALL L0000 ;reg7: PB out, PA in
LD B,#FF
LD E,#0E
OUT (C),E ;Set reg14
IN E,(C)
BIT 0,E ;Z=0 - not ready
RET
;Процедура инициализации принтера.
INIT LD DE,#FF07
CALL L0000 ;reg7: PB out, PA out
LD E,#0E
CALL L0000
LD A,24;Очистка буфера строки.
CALL L0001
LD A,27;Задание межстрочного интервала
CALL L0001;22/216 дюима.
LD A,"3"
CALL L0001
LD A,22
L0001 CALL BUSY
JR NZ,L0001
;Процедура вывода байта на печать.
LPRINT LD DE,#FF07
CALL L0000 ;reg7: PB out, PA out
LD D,A
LD E,#0F
CALL L0000 ;reg15(PB): data
LD DE,#7F0E
CALL L0000 ;reg14(PA): set /STROBE
LD D,#FF
JR L0002 ;reg14(PA): reset /STROBE
L0000 LD BC,#FFFD
OUT (C),E
LD B,#BF
L0002 OUT (C),D
END RET