Из документации:

Электрифицированная пишущая машина Consul 254 предназначена:

а) для ввода алфавитно-цифровой информации в ЭВМ при печатании оператора на клавиатуре машины

б) для вывода алфавитно-цифровой информации в порядке печати на лист или рулон бумаги по сигналам, посылаемым от ЭВМ

в) для применения в устройствах подготовки данных или в других устройствах, параметры которых соответствуют параметрам указанной машины

Сегодня мы займёмся пунктом "а" - будем читать данные с клавиатуры с помощью ЭВМ Arduino Uno.

В семидесятых годах подобные машины были основным интерфейсом для взаимодействия человека с компьютерами. Поэтому первые игры, в частности, были полностью диалоговыми, без аркадных механик или огромных лабиринтов на экране.

Сеанс игры в бейсбол из книги 1973 года "101 компьютерная игра на бейсике"
Сеанс игры в бейсбол из книги 1973 года "101 компьютерная игра на бейсике"

Хотя Consul 254 и называется "пишущей машиной", сама эта машина ничего писать не умеет - клавиатура никак не соединена с печатающим механизмом. Никакого кабеля типа нуль-модема, чтобы просто печатать, тоже не существует. Поэтому без компьютера тут никак.

Зато если подключить ЭВМ, то можно будет вводить в неё информацию с помощью клавиатуры. С печатью я пока разбираться не стал, а просто взял символьный ЖК-дисплей, чтобы выводить набираемый текст.

Берём три таких разъёма и втыкаем их в Arduino. 
В каждом разъёме 26 контактов, помеченных буквами от A до Z
Берём три таких разъёма и втыкаем их в Arduino. В каждом разъёме 26 контактов, помеченных буквами от A до Z

Разъёмы для подключения к ЭВМ имеют нумерацию (внезапно) 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. Оставим это на следующий раз.

Ссылки

  1. Репозиторий с кодом для Arduino.

  2. Consul 254. Техническое описание.

  3. 101 BASIC Computer Games.

Комментарии (12)


  1. Javian
    15.09.2022 09:15

    Самое интересное как этот аппарат сохранился до наших дней, если у него нет никакого применения без ЭВМ.


    1. smart_pic
      15.09.2022 09:33

      многие использовали как простую печатную машинку. Это вам не на Ятрань по кнопкам пальцами ударять


      1. Javian
        15.09.2022 09:35

        автор пишет:

        Хотя Consul 254 и называется "пишущей машиной", сама эта машина ничего писать не умеет - клавиатура никак не соединена с печатающим механизмом. Никакого кабеля типа нуль-модема, чтобы просто печатать, тоже не существует. Поэтому без компьютера тут никак.


      1. w0lf
        15.09.2022 09:35
        +2

        Проблема в том, что этот Консул НЕЛЬЗЯ использовать как простую печатную машинку. По причине того что это просто ТЕРМИНАЛ. Автор вроде в посте чётко об этом написал. То есть никакого применения у неё нет без подключения к ЭВМ.


        1. ru_vlad
          15.09.2022 11:06

          У нас в свое время, ребята электронщики сделали блок для подключения Консулов и превращения данного в обычную электромеханическую печатную машинку.

          Если мне не изменяет память в конце 80х в журнале Моделист конструктор была статья о подобном.


          1. w0lf
            15.09.2022 11:18
            +3

            Да, я помню эту статью. МК №2 за 89 год. Там была схема контроллера для работы Консула 254 с компьютером Специалист и в автономном режиме. Но положа руку на сердце, многие были способны достать детали (да, в то время это было основной проблемой радиолюбителей), прошить ПЗУ-шку и собрать такую схему? На мой взгляд — немногие.
            image


          1. Dovgaluk Автор
            15.09.2022 11:31
            +1

            Даа, всё уже украдено до нас. Спасибо за наводку.


        1. salnicoff
          15.09.2022 12:07

          К ним существовали официальные прибамбасы, которые замыкали клавиатуру на электронику печатной части. Делалось для того, чтобы в отдел не ставить отдельную «Ятрань» или «Олюмпию». Правда, не для всех «Консулов» эти прибамбасы имели смысл...


      1. pavel_raskin
        15.09.2022 09:36

        del


    1. Dovgaluk Автор
      15.09.2022 09:41
      +3

      Валялся на складе где-то. Каретка была отдельно, провода в пакетах.


    1. salnicoff
      15.09.2022 12:10
      +1

      Лежал на складе — вот и сохранился. А еще интересно — у него внутренности металлические или уже из пластика сорта «Г»? Потому как если механизм пластиковый, то печатать этот аппарат — увы! — уже никогда не будет.


  1. RomeoGolf
    15.09.2022 19:30
    +2

    Спасибо, поностальгировал :-)
    Как вспомнишь, так вздрогнешь. М-222, «винчестер» размером в холодильник и объемом в мегабайт (барабанами от списанных асфальт укатывали), читающе-перфорирующий «бармалей»… Но консул — самая большая головная боль «машинистов», ибо деталей больше, чем в жигулях, и при этом ударно двигаются.