Из документации:
Электрифицированная пишущая машина Consul 254 предназначена:
а) для ввода алфавитно-цифровой информации в ЭВМ при печатании оператора на клавиатуре машины
б) для вывода алфавитно-цифровой информации в порядке печати на лист или рулон бумаги по сигналам, посылаемым от ЭВМ
в) для применения в устройствах подготовки данных или в других устройствах, параметры которых соответствуют параметрам указанной машины
Сегодня мы займёмся пунктом "а" - будем читать данные с клавиатуры с помощью ЭВМ Arduino Uno.
В семидесятых годах подобные машины были основным интерфейсом для взаимодействия человека с компьютерами. Поэтому первые игры, в частности, были полностью диалоговыми, без аркадных механик или огромных лабиринтов на экране.
Хотя Consul 254 и называется "пишущей машиной", сама эта машина ничего писать не умеет - клавиатура никак не соединена с печатающим механизмом. Никакого кабеля типа нуль-модема, чтобы просто печатать, тоже не существует. Поэтому без компьютера тут никак.
Зато если подключить ЭВМ, то можно будет вводить в неё информацию с помощью клавиатуры. С печатью я пока разбираться не стал, а просто взял символьный ЖК-дисплей, чтобы выводить набираемый текст.
Разъёмы для подключения к ЭВМ имеют нумерацию (внезапно) I, IV, V. По соединяющимся буквам I V или по их интерпретации в качестве римских чисел можно было бы предположить, что I слева, V справа, а IV посередине, но это не так. К счастью, эти номера выгравированы снизу корпуса.
Клавиши машины подключены к шифратору, выдающему восьмибитный код. При нажатии на кнопку, внутри машины щёлкают релюшки, и на выходе шифратора можно увидеть код этой клавиши. Чтобы узнать, что пора считывать выходной символ, есть ещё пара контактов.
Интересующие нас выходные контакты шифратора (который чехословаки перевели как комбинатор) обозначены буквами от C до K. В документации приведена таблица сканкодов, с помощью которой мы и переведём их в ASCII. Сканкод формируется выходами DEFGHIKJ (именно в таком порядке!), на которые попадает напряжение с выхода (или входа?) C. То есть, если подключить C к питанию, то с соответствующих выходов D-J можно будет это питание "прочитать". Или то же самое можно проделать с "землёй".
Цифровые входы контроллера AVR имеют внутренний притягивающий к питанию резистор. Поэтому коммутировать их будем на землю, чтобы схема была проще.
Для обозначения того, что символ пора читать, машина с помощью реле замыкает цепь AB. Контакт B в нашей схеме соединён с "землёй". Поэтому A тоже притягивается к "земле" при переключении реле. Для борьбы с дребезгом контактов к этой линии подключен конденсатор - множественных срабатываний не будет.
Из временной диаграммы следует, что на выходе шифратора данные появляются как раз перед тем, как замыкаются контакты AB (что вполне логично). Поэтому в цепях C-D..K бороться с дребезгом не нужно.
Чтобы дождаться прихода символа, программа мониторит напряжение на 12 цифровом входе, подключенном к A. Можно было бы направить сигнал с A на вход контроллера прерываний, чтобы сэкономить электричество, но для демонстрационных целей это ни к чему.
Код считывания нажатий клавиш и вывода на экран
void loop() {
if (!digitalRead(12)) {
unsigned int v = 0;
for (int i = 2 ; i <= 9 ; ++i)
v = (v << 1) + digitalRead(i);
if (v == LOWREG) {
reg = false;
} else if (v == HIGHREG) {
reg = true;
} else {
if (reg) {
v = v ^ 3;
}
lcd.write(table[v]);
if (x == 16) {
lcd.scrollDisplayLeft();
} else {
++x;
}
}
delay(50);
}
}
Полученные коды клавиш декодируются в символы с помощью захардкоженной таблицы и выводятся на ЖК-дисплей. После этого процессор ждёт 50 мс, потому что в документации сказано, что чаще читать нельзя. Заодно и линия AB разомкнётся за это время.
На каждой клавише нарисовано по 2 символа - один для верхнего регистра, другой для нижнего. Русские буквы дисплей сам по себе показывать не умеет, а добавлять их мне было лень. Если что, для этого есть отдельная библиотека. Поэтому текст для демонстрации я набираю по-английски. Но чтобы набирать латиницу, нельзя просто переключить язык. Некоторые из нужных символов находятся в нижнем регистре, а некоторые в верхнем (те, которые совпадают по начертанию с кириллицей).
Клавиши переключения регистра (НР, ВР) на клавиатуре, вопреки ожиданиям, не меняют состояния машины, а просто посылают соответствующий сканкод наружу, в ЭВМ. Компьютер большой, ему видней.
Пришлось реализовывать переключение регистра в программе. Сканкоды для разных регистров одной клавиши отличаются инвертированными последними двумя битами. Поэтому чтобы найти код верхнего символа, зная нижний (и наоборот), надо всего лишь выполнить с ним "xor 3".
Ниже видео, как это всё работает. Надеюсь, в реальной жизни никто не набирал на этой клавиатуре тексты программ латиницей. Пару раз переключать регистр во время набора одного слова - сомнительное удовольствие.
Итак, печатать оператор может, а что же с выводом на бумагу? Это немного сложнее. Для поступающих от ЭВМ данных дешифратора нет. Нужно напрямую управлять входами матрицы, составленной из электромагнитных реле. То есть, добыть питание 12 вольт и 20 выводов, которые будут включать эти реле через разъём I. Оставим это на следующий раз.
Ссылки
Комментарии (12)
RomeoGolf
15.09.2022 19:30+2Спасибо, поностальгировал :-)
Как вспомнишь, так вздрогнешь. М-222, «винчестер» размером в холодильник и объемом в мегабайт (барабанами от списанных асфальт укатывали), читающе-перфорирующий «бармалей»… Но консул — самая большая головная боль «машинистов», ибо деталей больше, чем в жигулях, и при этом ударно двигаются.
Javian
Самое интересное как этот аппарат сохранился до наших дней, если у него нет никакого применения без ЭВМ.
smart_pic
многие использовали как простую печатную машинку. Это вам не на Ятрань по кнопкам пальцами ударять
Javian
автор пишет:
w0lf
Проблема в том, что этот Консул НЕЛЬЗЯ использовать как простую печатную машинку. По причине того что это просто ТЕРМИНАЛ. Автор вроде в посте чётко об этом написал. То есть никакого применения у неё нет без подключения к ЭВМ.
ru_vlad
У нас в свое время, ребята электронщики сделали блок для подключения Консулов и превращения данного в обычную электромеханическую печатную машинку.
Если мне не изменяет память в конце 80х в журнале Моделист конструктор была статья о подобном.
w0lf
Да, я помню эту статью. МК №2 за 89 год. Там была схема контроллера для работы Консула 254 с компьютером Специалист и в автономном режиме. Но положа руку на сердце, многие были способны достать детали (да, в то время это было основной проблемой радиолюбителей), прошить ПЗУ-шку и собрать такую схему? На мой взгляд — немногие.
Dovgaluk Автор
Даа, всё уже украдено до нас. Спасибо за наводку.
salnicoff
К ним существовали официальные прибамбасы, которые замыкали клавиатуру на электронику печатной части. Делалось для того, чтобы в отдел не ставить отдельную «Ятрань» или «Олюмпию». Правда, не для всех «Консулов» эти прибамбасы имели смысл...
pavel_raskin
del
Dovgaluk Автор
Валялся на складе где-то. Каретка была отдельно, провода в пакетах.
salnicoff
Лежал на складе — вот и сохранился. А еще интересно — у него внутренности металлические или уже из пластика сорта «Г»? Потому как если механизм пластиковый, то печатать этот аппарат — увы! — уже никогда не будет.