Мышь, принтер и вообще...
© Вадим Кулевой, г. Красноярск, 1995.
Компьютер собрал и настроил сам, Ваша информация мне очень помогла. Я занимаюсь Spectrum'ами еще с 10-го класса, почти с самого начала их появления в Красноярске. Сейчас я уже студент 3 курса КГТУ специальности "Робототехнические системы и комплексы" и у меня есть и дисковод, и принтер, и AY-3-8910, и KEMPSTON-MOUSE, и выполнены почти все доработки схемы (порт #FF, сигнал INT, и многое другое). Хочется поделиться некоторыми мыслями по поводу подключения принтера и вообще. Сначала о "вообще".
Сейчас, мне так думается, самое правильное направление - это ZX-NEXT. Хотя у нас о нем вообще ничего не слышно и не видно, всю информацию я получил только от вас, а хотелось бы побольше узнать о нем.
О мышах.
В ZX-РЕВЮ-95, №1, на стр.36 прошла информация о подключении KEMPSTON-MOUSE. Схема мне понравилась, но я еще раньше сделал другую, с другим принципом работы. Мне показалось, что подключить мышь к разъему KEMPSTON джойстика идея более заманчивая. Поэтому я сел и разработал схему, которой пользуюсь уже полгода. Единственное, что пришлось изменить в конструктиве компьютера, это вывести на разъем KEMPSTON +5В и сигнал INT от процессора, вместо него, кстати, можно использовать сигнал КС (кадровый синхроимпульс).
Сигнал INT или КС используется для сброса триггеров мыши. Выходы триггеров подключаются прямо к разъему KEMPSTON-джойстика. Можно пользоваться и мышью и джойстиком одновременно или поочередно, мышь не мешает работе KEMPSTON-джойстика, она имитирует его! Программы, работающие с джойстиком, гоняющие по экрану стрелку, работают нормально. В игры, конечно, играть неудобно, но с системками - одно удовольствие! Кнопка выбора на мыши используется любая (как удобно), и работает как FIRE на KEMPSTON'e.
+5В DD1, DD2 выв. 14 ^-+5В
DD1, DD2 || К155ТМ2
FIRE
О принтере.
Мне удалось приобрести по счастливой случайности и не так дорого УППЗ СМ 6337. Принялся я его подключать. Как ни печально, но под рукой не оказалось КР580ВВ55А. Покопавшись немного в литературе, я нашел схему интерфейса на AY-3-8910. Музыкальный процессор я подключил уже давно и успел оценить его преимущества. А тут попалась такая схема в старом журнале "КОМПЬЮТЕР". Я подумал, а почему бы и нет! Собрал схему, переписал пример драйвера для принтера STAR и оценил: неплохо. Правда перед этим пришлось отключить музыкальную часть схемы, так что теперь предстояла задача состыковать схему принтера с музыкальной частью. Пораскинув мозгами, я подумал: зачем собирать отдельную схему для принтера, ведь если посмотреть на схему подключения из журнала "КОМПЬЮТЕР", то можно увидеть, что схема подключения музыкального процессора и схема подключения принтера - одинаковы! Разные лишь адреса обращения к портам. И тут возникла главная идея, которая заключается в следующем: те, у кого есть AY и принтер, могут просто подпаяться к выходам AY, переписать приведенный драйвер из "КОМПЬЮТЕРа" N1 за 1991 г. и печатать хоть из Бейсика, хоть как я, из ZX*WORD (пример драйвера есть в описании редактора). Удобно и просто! И если кому и что непонятно, то пусть обращаются ко мне:
660119, г. Красноярск, а/я 21469
Кстати, о ZX*WORD. Если бы все программы, которые пытаются что-либо печатать, создавались по такому же принципу, не было бы такой неразберихи вокруг интерфейсов принтеров. Загрузил свой драйвер печати - и печатай, сколько влезет. Огромное спасибо BG & SI-SOFT за прекрасный редактор текстов.
Итак, схема. Если музыкальный процессор работает, то там трогать ничего не надо, только подпаяться к указанным выводам:
Разъём принтера AV-3-6910 СМ 6337
РВО РВ1 РВ2 РВЗ РВ4 РВ5 РВ6 РВ7
Сигнал STROBE активный в нуле. Резисторы необходимы для защиты выходов AY от перегрузки.
(C) ROBOTSOFT'95 GENS 4-51.
Драйвер печати для текстового редактора ZX*WORD
и принтера СМ 6337 с интерфейсом
на базе музыкального процессора AY-3-8910.
ORG #5B00 ;
NOP ;
|
JR |
SETINT |
;Инициализация принтера. |
|
JR |
PRINT |
;Подпрограмма печати символа. |
SETINT |
LD |
A, 7 |
;Выбор регистра 7 AY |
|
LD |
BC,#FFFD |
; и его |
|
OUT |
(C) ,A |
; инициализация. |
|
LD |
A, 191 |
;Запись в рег.7 числа 191 |
|
LD |
BC,#BFFD |
; переключает порты AY: |
|
OUT |
(C) , A |
; порт РА на чтение, РВ на вывод. |
|
RET |
|
; |
PRINT |
LD |
BC,#FFFD |
; |
|
LD |
D, A |
;Сохраняем акк. в регистре D. |
|
LD |
A, #0F |
; Выбираем регистр 15 AY. |
|
OUT |
(C) , A |
; |
|
LD |
A, D |
; Восстанавливаем А из D. |
|
LD |
BC,#BFFD |
; |
|
OUT |
(C) , A |
;Выдаем А в порт РВ. |
|
LD |
A, #0E |
;Выбираем регистр 14 AY. |
|
LD |
BC,#FFFD |
; |
|
OUT |
(C) , A |
; |
BUSY |
CALL |
#1F54 |
; Проверка на BREAK. |
|
JR |
NC,PRINTQ |
;Если ДА, то на PRINTQ. |
|
LD |
BC,#FFFD |
; Иначе |
|
IN |
A, (C) |
; опрашиваем порт РА. |
|
BIT |
0,A |
;Проверка бита 0: |
|
JR |
NZ,BUSY |
; если 1, то на BUSY. |
|
BIT |
1,A |
;Проверка бита 1: |
|
JR |
Z,PRINTQ |
; если 0, то на PRINTQ. |
|
LD |
A, 7 |
; |
|
LD |
BC,#FFFD |
; |
|
OUT |
(C) , A |
; |
|
LD |
A, #FF |
;Здесь передается строб.имп. |
|
LD |
BC,#BFFD |
; |
|
OUT |
(C) , A |
; |
|
CALL |
SETINT |
; |
|
SCF |
|
; |
|
CCF |
|
; |
|
RET |
|
;Нормальное завершение. |
PRINTQ |
SCF RET |
|
;
;Ненормальное завершение. |