Простой «железный» терминал

    Данная статья является продолжением описания микроконтроллера на процессоре 6502 «Аюша». В ней мы рассмотрим, как превратить контроллер в полноценный компьютерный комплект, причём в качестве основы не обязательно делать «Аюшу», сойдёт любой иной девайс. Ну или применим собранный терминал для чего-нибудь ещё. И опять же, для сборки будет применён «подножный корм»…

    image

    Для начала немного вспомним историю компьютеростроения в «до-микро-РКшную» эпоху. По сути говоря, большинство первокомпьютеров были обычными контроллерами, к которым необходимо было подсоединить клавиатуру, телевизор и устройство записи/считывания программ (в те времена перфосчитыватель или кассетный магнитофон). Собранное до кучи железо назвалось терминалом и делилось на два типа — «dumb» и интеллектуальный терминалы. Второй из них был по сути отдельным полноценным компьютером, имел собственный процессор и мог подсоединяться к более мощным собратьям. А вот первый вариант не имел процессора, собирался на «жёсткой» логике и умел только общаться с внешними устройствами по последовательному порту, поэтому и назвался «тупым». Ну, тупой — не тупой, а свою задачу такой терминал выполнял, тем более что и особых требований к нему не предъявлялось.

    Вот такой терминал и было решено собрать для «Аюши». Он должен был позволять выводить на обычный телевизор получаемую с контроллера алфавитно-цифровую информацию, вводить текст программы со встроенной клавиатуры, а также позволять общаться контроллеру с обычным магнитофоном. Да, по сути поставленные задачи пахли махровым даунгрейдерством, но кроме них готовое устройство могло бы общаться не только с существующим контроллером, но и быть вполне самостоятельным сетевым (!, но об этом ниже) устройством. И да, никаких вентиляторов, никаких шумящих вещей — тишина при работе!
    Со схемой терминала можно познакомиться по ссылке в конце статьи. Здесь я опишу внутренности конструкции и причину их выбора.

    Вывод на телевизор был сделан с нарушением канонов 70-х, используя однокристальный микроконтроллер ATMEGA8, на котором, в принципе, можно было бы собрать весь терминал (такие конструкции существуют). Но, поскольку однокристальные терминалы не позволяют особо расширить их по «железу», используют «неканонiческие» PS/2-клавиатуры и не позволяют работать со скоростями ниже 1200 бит/сек, от них решено было отказаться и оставить чип работать только на телевизионный вывод. Почему на телевизор, а не на VGA-совместимые устройства — в наличии был небольшой автомобильный ТВ-монитор, которого для работы с «Аюшей» вполне хватало.

    Для клавиатурного ввода было решено использовать ASCII-клавиатуру. Как известно, все современные клавиатуры как в самодельной технике, так и в промышленной, строятся на основе матрицы с последующей обработкой нажатий встроенным (или дополнительным) процессором. Матричные клавиатуры применялись и в «Спектруме», и в «РК-86», да и нынешние АТ-клавиатуры тоже матричные. Однако первокомпьютеры, тот же Apple-I/II, использовали ASCII-клавиатуры, не занимавшие вычислительного времени процессора и выдававшие «на-гора»сразу готовый ASCII-код нажатого символа, что по моему мнению гораздо удобнее, нежели трата времени на бестолковое сканирование матрицы в режиме ожидания нажатия. Для навороченных клавиатур ранее выпускались специализированные чипы (по сути ПЗУ с таблицей ASCII-кодов), в остальных же случаях, когда было достаточно использовать первые 128 символов таблицы, использовались простые диодные кодеры. За основу была взята известная за рубежом клавиатура Дона Ланкастера, а отсутствующие ныне в продаже микросхемы были заменены простыми транзисторными каскадами. Вот теперь у меня появилась ASCII-клавиатура, которую не стыдно подключить и к первоЭпплу.

    На просторах страны был найден нетронутый с советских времён набор клавиш (спасибо Сергею, R7GW):

    image

    Клавиши были собраны в кучу и размещены совместно с диодными дешифраторами на одной плате:

    image

    Разумеется, что конструкция должна работать не в принципе, а в корпусе, поэтому из кусков 10-мм фанеры началось ваяние корпуса:

    image
    image

    После сборки корпуса и установки в него клавиатуры, корпус был покрашен так называемой «резиновой краской» (rubber paint, по сути растворённая резина в баллончике), установлены необходимые коннекторы и индикаторы. Сверху корпуса установлены индикаторы включения и чтения с магнитной ленты, а также переключатель источника ввода (об этом ниже):

    image

    Задняя стенка имеет разъём питания с выключателем и предохранителем, СОМ-порт, выход на ТВ и магнитофон, и разъём питания телевизора или внешних устройств:

    image

    Вообще признаюсь, что несколько торопился с изготовлением корпуса, поэтому видны головки шурупов и некоторые шероховатости, не влияющие в целом на работу терминала.
    Поскольку у нас нет процессора, то в схеме терминала появился узел преобразования полученного с клавиатуры параллельного кода в последовательный. Испробовав несколько вариантов, было решено использовать в качестве основы схему на мультиплексоре 155КП2, а не на сдвиговых регистрах. Оно получилось и проще, и меньше потребляло питания. Результат вы можете увидеть на схеме, ссылка в конце статьи.
    Скорость работы терминала — 300 бит/сек.

    Надеюсь, все просмеялись и вытерли слёзы, продолжаем.

    Почему выбрана такая низкая скорость? Во-первых, исходя из того, что самая медленная часть компьютера обычно сидит перед ним и не способна набирать текст со скоростью выше 33 знаков в секунду. Во-вторых, для вывода алфавитно-цифровой информации на монитор не требуется высокая скорость (в сравнении с графикой). В третьих, нам надо как-то общаться с магнитофоном, не используя дополнительных программных довесков. Ну и в четвёртых, неспешный вывод текста на монитор успокаивает и несколько напоминает кадры из «Матрицы».

    Разумеется, что не используя схемные блоки сопряжения с магнитофоном, можно поднять скорость общения терминала по СОМ-порту до более высоких скоростей (19,2 кБит/сек — программное ограничение используемой прошивки АТМЕГИ) не изменяя основную схему. Таким образом терминал можно будет подключать для настройки любых устройств по СОМ-порту — модемов, цисок, роутеров и т.п., конечно в тех случаях, когда не требуется обновление прошивки устройства.

    Общение с магнитофоном использует Канзасский стандарт записи на магнитную ленту. В этом случае «0» кодируется частотой 2400 Герц, а «1» — 1200 Герц. Эти частоты прекрасно записываются как на магнитную ленту, так и на твердотельные накопители, и гораздо меньше подвержены сбоям, нежели используемый в том же Микро-80/РК-86 код NRZ. Для чтения с ленты используется частотный компаратор, на выходе которого получаем последовательный поток данных. Как было видно на предыдущем фото, переключателем источника ввода мы можем выбрать, откуда контроллер будет получать информацию — с клавиатуры или с ленты, это будет ему абсолютно безразлично. Получаем этакий driver-free блок общения контроллера с магнитной лентой, также не использующий ресурсы процессора.

    Вид платы терминала прилагается. На обратной стороне — снова вязка МГТФ, но это уже неинтересно, потому и не показываю. Транзисторные ключи, относящиеся к клавиатуре, расположены с правой стороны платы.
    image

    Внутренний вид терминала — все составляющие в деревянном корпусе.
    image

    Как проходит процедура загрузки программы с магнитной ленты можно посмотреть на прилагаемом видео. Загружается демонстрационная программа-конвертер из децимальной системы счисления в шестнадцатеричную и наоборот. Следует отметить, что сама загрузка программы содержит в себе некоторый игровой момент, попутно позволяя оценить корректность работы (спасибо inghost).


    Суммарно оценить вид комплекса контроллер — терминал можно по следующим фото, как с обычным телевизором (фото в начале статьи), так и с автомобильным (тут уже используется микрокассетный магнитофон, в отличие от предыдущего видео).
    image

    Терминал был испробован для работы в сети с использованием конвертера COM->ETH, купленного на Алиэкспрессе.
    image
    image

    Используя второй конвертер и пробросив в роутере порты удалось управлять «Аюшей» через Интернет. Хотя ничто не мешает нам точно так же управлять любыми иными устройствами через виртуальный или реальный СОМ-порт.
    Ну и для окончания разговора. На «Аюше уже можно и поиграть, на фото экран запущенной программы „Реверси“. А поскольку контроллер уже обзавёлся микросхемой часов реального времени, то уже можно не только играть на время, но и использовать его в сложных устройствах управления.
    image

    Благодарю за понимание.

    Ссылки.
    Статья Дона Ланкастера в апрельском номере журнала Popular Electronics за 1974 год о сборке ASCII-клавиатуры
    Схема ASCII-клавиатуры терминала
    Схема терминала
    Основная страница проекта
    Группа ВКонтакте
    Поделиться публикацией

    Комментарии 20

      +3
      Давно с таким интересом посты не читал. Спасибо.
        +4
        Насчет форматов записи на ленту — очень рекомендую эту мою недавнюю разработку. Это формат 8b/10b, он записывает данные на магнитную ленту, преобразуя каждый байт в 10 бит. Каждому биту на ленте соответствует (в идеале) участок с постоянным уровнем сигнала. На Спектруме, где я реализовал этот формат, можно писать данные со скоростью 4000бит/с (брутто) или 400 байт/с (нетто). Если процессор 6502 не потянет алгоритм загрузки — можно без проблем снизить скорость.

        На Спектруме формат не взлетел из-за того, что не заработал у одного владельца фирменного Спектрума со встроенным магнитофоном. Думаю, там дело в искажениях от грубой и дешевой схемы тракта записи и/или воспроизведения. Но на бытовых магнитофонах даже 4й группы сложности формат работает на ура.
          +1
          В этой конструкции фишка как раз в том, что процессор не используется. Совсем. Производится простая конвертация последовательного потока данных в звук и наоборот без программных драйверов. С одной стороны это даёт совместимость с древними программами (мало ли, мож кому и попадётся такой раритет, ведь за рубежом формат KCS был достаточно распространён, даже выпускались т.н. флоппи-ромы в виде долгоиграющих пластинок), с другой — возможность неспешно передавать файлы даже на современные компы по любым линиям связи или с использованием любых звуковых носителей. Другое дело перейти на формирование несколько иных частот и на фильтровый способ декодирования по примеру пакетной любительской связи, тогда возможно поднять скорость передачи данных на ленту до 2400 бит/сек. Кстати говоря, тот же Дон Ланкастер описывал этот вариант в одной из своих«кухонных» книг (TV Typewriter Cookbook).
          Так что вариантов много, цель одна — не использовать процессор.
          … или использовать сторонний процессор для более универсальных вариантов загрузки. Были мысли использовать «Денди» в качестве интеллектуального терминала путём разработки картриджа. Тогда бы и скорость передачи была высокая, и цветная псевдографика, и возможность использования иных носителей.., но как-то некошерно бы это получилось… ;)
            0
            Получается, что в вашей схеме используется аппаратная модуляция и демодуляция сигналов магнитофона? Но как принимаются данные в процессор? В вашей же схеме нет буферов FIFO, чтобы процессор мог на длительное время оторваться от приема/передачи данных и заняться другими делами? Поэтому нагрузка на процессор все равно велика во время работы с магнитофоном. По сравнению с моим программным способом это не дает никакого выигрыша. А с программным способом — упрощается схема тракта магнитофона. Так что подумайте еще раз.
              0
              Буфер стоит на стороне контроллера, чип 6850 (надеюсь, что со схемой самого контроллера Вы ознакомились), и уж с ним процессор и работает. А чипу безразлично откуда идут данные — с другого СОМ-порта, с клавиатуры или с ленты, везде один и тот же последовательный поток ;)
              Другое дело, что упрощённая реализация СОМ-порта, использующая только сигналы RX/TX может пропускать некоторые данные либо выходить из синхронизации (ибо не используются сигналы готовности порта) — это да, некоторый недостаток. С другой стороны, а много ли устройств используют СОМ-порт на всю катушку? К примеру, для прошивки роутеров, телефонов, xDSL-модемов и кучи иных устройств достаточно только RX/TX, и как-то народ не особо парится, всё происходит без ошибок.
          +7
          Слава юным техникам! :3
            0
            Ммм, а реально ли туда например Lua портировать?:)
              +1
              Ъ!
                +1

                  +1
                  RYRYRY IT IS A TRUE THING!
                  73 DE R2DGO
                    +3
                    Прекрасные кондеры-трубочки из 60хх, советские резисторы и КТ315 — просто прекрасно. Я тоже не брезгую, и ставлю то что есть.
                      +1


                      Кстати, Бендер имеет микропроцессор 6502, как известно!
                        +2
                        Так он родственник Терминатора!
                        image
                          0
                          А то!
                          0
                          Хм, а идея корпуса та же ;)
                            0
                            Я это и хотел сказать.
                          +1
                          Ня!!! Прелесть!
                            0
                            Кайф!
                              0
                              А декодер PSK, RTTY и Olivia на нём сделать можно? Ну и CW до кучи.
                                0
                                Скажу так: программа приёма/передачи телеграфа под процессор 6502 есть, нужно только адресацию портов поправить (ещё в 1978 году написана для KIM-1). Телетайп под 6502 также существует, но у меня пока интереса к этому не было. PSK и Оливии в те года ещё не существовало ;) но, имхо, с PSK проблем быть не должно. 6502 работает гораздо шустрее Z80 и тем более ВМ80.

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                              Самое читаемое