Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 25

Тема: Аппаратный терминал VT52/15ИЭ-00-013 на FPGA

  1. #1
    Activist
    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    324
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Аппаратный терминал VT52/15ИЭ-00-013 на FPGA

    Решил поделиться с общественностью одной своей полезной наработкой.

    Поскольку благодаря трудам уважаемого Vslav у нас появилось HDL-описание 1801ВМ2, я некоторое время назад сделал FPGA-реплику платы МС1201.02 для замены контроллера, управляющего оборудованием в нашей лаборатории. И возникла одна проблема. Раньше вместе с контроллером у нас стоял терминал СМ7209. Терминал этот необратимо сдох и отправился в помойку, и встала задача найти ему замену. Связка комп+терминалка мне как-то совсем не нравится, тем более что терминалки под Linux, полноценно совместимой с VT52, я не нашел (windows у нас нигде принципиально не используется). Поэтому я сделал терминал на FPGA, и решил им поделиться - возможно, найдутся люди, которым, как и мне, нужен именно аппаратный терминал.
    Терминал создан на основе все того же 1801ВМ2 - это вообще очень удобная платформа для всяких разных самоделок. FPGA - любая из серии Altera Cyclone 4. Кроме двух мегафункций altsyncram никаких аппаратных особенностей cyclone 4 не используется, поэтому, при желании, проект легко портировать куда угодно - он занимает всего около 2000 логических ячеек и 21КБайт внутренней памяти. Для вывода информации используется любой монитор с VGA-входом (используется разрешение 640*480), для ввода - PS/2 клавиатура. С ЭВМ терминал обменивается через обычный UART, скорость обмена можно настраивать в процессе работы.

    Терминал поддерживает систему команд VT52, а также системы команд 1 и 2 терминала 15ИЭ-00-013 (система команд 2 совпадает с VT52).
    Протокол VT52 реализован полностью - в том числе режим Hold Screen и набор псевдографических знаков, как в оригинальном VT52 и СМ7209.
    Протокол 15ИЭ также реализован полностью, кроме режима блочного обмена (передать строку и передать страницу) - не вижу ни одного применения для этого режима.
    Клавиатура VT52 реализована полностью, а вот часть клавиш клавиатуры 15ввв-97-006 не реализована - уж слишком много на ней кнопок, не под все из них получилось найти эквиваленты на стандартной PS/2 клавиатуре. Переключение между режимами VT52/15ИЭ можно делать вручную клавишей F4, а также автоматически управляющими кодами.
    Вверху экрана находится строка состояния, как и в 15ИЭ. Но вместо неинформативных битовых полей туда выводятся текстовые описатели включенных режимов. Кроме того, как и в 15ИЭ, в строку состояния выводится текущая скорость последовательного интерфейса и время, прошедшее с момента включения терминала. Выглядит это примерно так:

    Пример экрана терминала

    [свернуть]

    Терминал поддерживает все используемые в таких терминалах кодировки:
    - ASCII, как оригинальный VT52 - большие и малые латинские буквы. Она же - КОИ7 Н0
    - КОИ7 Н1, большие и малые русские буквы
    - КОИ7 Н2, только большие латинские и русские буквы. Эта кодировка обычно использовалась при работе с СМ ЭВМ, она поддерживается и СМ7209, и 15ИЭ.

    Переключение между кодировками Н0/Н1 производится управляющими кодами, а кодировка Н2 включается клавишей F11. На экран, естественно, можно выводить смесь символов разных кодировок. Кроме этого, поддерживается режим отображения служебных кодов мигающими буквами, как в СМ7209 и 15ИЭ. Пример работы с русскоязычной программой в кодировке КОИ7 Н2:

    Скрытый текст

    [свернуть]

    вот еще примеры разных режимов работы терминала:

    Прямая адресация курсора

    [свернуть]

    Режим Hold Screen

    [свернуть]

    Псевдографические символы

    [свернуть]

    Альтернативный режим клавиатуры

    [свернуть]


    Имеется автономный режим работы (локальная петля), который можно использовать для тестирования терминала и клавиатуры, включается клавишей F10. Терминал поддерживает скорости обмена от 1200 до 115200, которые можно менять с клавиатуры (клавиши F5/F6). Курсор может иметь 2 формы на выбор - подчеркивание и блок, может быть мигающим и немигающим.

    Для отображения знаков используется знакоместо 8*12 (а не 8*8, как в древних терминалах). Шрифт я в основном выдрал из какого-то досовского русификатора - там линии двойной толщины, смотрится достаточно разборчиво на любом мониторе. Для сравнения я добавил в дерево проекта шрифт, вынутый из платы КСМ - насколько я помню, он такой же, как и в терминале 15ИЭ. Можно собрать прошивку с этим шрифтом и получить точный вид экрана 15ИЭ:

    Отображение шрифтом 15ИЭ

    [свернуть]


    Основа проекта - модуль vt52 (лежит в файле vt52.v) - собственно, это и есть сам терминал. К его портам подключается монитор, клавиатура, линии Tx/Rx последовательного порта и тактовая частота 50Мгц. Этот модуль можно использовать не только как законченный аппаратный терминал, но и встраивать в другие проекты, требующие терминального ввода-вывода. Например, я его встроил в FPGA-реплику платы МС1201.02 и получил в результате практически одноплатную ДВК. Все это, кстати, спокойно влезло в самую младшую EP4CE6. Для облегчения встраивания из модуля наружу выходит шина vtspeed, несущая информацию о текущей скорости терминального UART. Эту информацию можно использовать для автоматической настройки скорости сопряженного с терминалом уарта.
    В проект также входит модуль terminal - это оболочка, облегчающая адаптацию модуля vt52 к конкретной плате. Он предоставляет схему генерации начального сброса, а также преобразователь цветовых сигналов для плат, имеющих видео-DAC для управления яркостью цвета.

    Для сборки терминала можно использовать любую, самую простейшую отладочную плату на EP4CE6, коих продается навалом на алиэкспрессе. К плате нужно будет подключить разъем VGA, разъем PS/2 и преобразователь уровней сигнала последовательного порта. Еще проще купить плату, уже имеющую на себе VGA, PS/2, RS-232 - таких плат тоже продается более чем достаточно. В этом случае ничего паять не потребуется - достаточно описать правильное соответствие номеров ножек FPGA с портами проекта, собрать прошивку и залить ее в конфигурационную память платы.

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

    Для тех, кому лень связываться с гитом, вот здесь лежит текущий срез репозитория. Обновляться он не будет, поэтому все же советую пользоваться репозиторием.

  2. Эти 19 пользователя(ей) поблагодарили forth32 за это полезное сообщение:

    andykarpov (18.12.2020), dim33 (18.01.2021), Elias (07.11.2020), hobot (07.11.2020), Hunta (07.11.2020), mx (09.11.2020), nzeemin (18.12.2020), Radon17 (10.01.2021), shattered (08.11.2020), SoftLight (07.11.2020), SuperMax (07.11.2020), svofski (08.11.2020), TheGWBV (08.11.2020), tnt23 (07.11.2020), troosh (18.12.2020), Vslav (07.11.2020), xolod (07.11.2020), yu.zxpk (08.11.2020), Копейкин (07.12.2022)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,964
    Спасибо Благодарностей отдано 
    284
    Спасибо Благодарностей получено 
    626
    Поблагодарили
    527 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Крутяк!

    - - - Добавлено - - -

    Цитата Сообщение от forth32 Посмотреть сообщение
    В режиме Н2 эксплуатация оригинальных ОС от DEC невозможна, ибо все сообщения выводятся в искаженном виде (и множеством его клонов), а также с 15ИЭ-знаменитое IНЖАЛИД ДЕЖИЦЕ)
    Ну эт ты погорячился - не представляешь, сколько проработал в этом режиме

    - - - Добавлено - - -

    Цитата Сообщение от forth32 Посмотреть сообщение
    а также написанный мной преобразователь объектных модулей RT-реализацией текстового терминала,11 в абсолютный бинарный файл (и множеством его клонов), а также с 15ИЭ-такой типа компоновщик). Компиляцию программы можно осуществить, используя скрипт compile.sh. Результатом работы скрипта будет файл формата mif, пригодный для загрузки в память FPGA.
    Я написал скрипт на powershell, который берёт листинг от Macro-11, а на выходе выдаёт mif файл, в котором будут не только данные, но и листинг - как коменты. Типа вот такого:

    Код:
    WIDTH=16;
    DEPTH=269;
    
    ADDRESS_RADIX=UNS;
    DATA_RADIX=OCT;
    
    CONTENT BEGIN
                              --       1                                         .TITLE  TESTS
                              --       3 000000                                  .ASECT
                              --       5         001000                          .=1000
         256 : 012706;        --       7 001000  012706  002000                  MOV     #2000, SP
         257 : 002000;        --         001002  002000
         258 : 005000;        --       9 001004  005000                          CLR     R0
         259 : 012701;        --      10 001006  012701  177404                  MOV     #177404, R1
         260 : 177404;        --         001010  177404
         261 : 012761;        --      12 001012  012761  177400  000002          MOV     #177400, 2(R1)
         262 : 177400;        --         001014  177400
         263 : 000002;        --         001016  000002
         264 : 012711;        --      13 001020  012711  000005                  MOV     #5,      (R1)
         265 : 000005;        --         001022  000005
                              --      14 001024                          10$:
         266 : 105711;        --      15 001024  105711                          TSTB    (R1)
         267 : 100376;        --      16 001026  100376                          BPL     10$
         268 : 005007;        --      18 001030  005007                          CLR     PC
                              --      20         000001                          .END
                              --         000000    001   (RW,I,LCL,REL,CON)
           0 : 000001;        --         000000    001   (RW,I,LCL,REL,CON)
    END;
    никак не пофиксю последнюю строчку - пока просто руками удаляю, если она мешается, но обычно можно забить

  5. #3
    Activist
    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    324
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Ну эт ты погорячился - не представляешь, сколько проработал в этом режиме
    Примерно представляю. У нас ведь тоже на нашем ВЦ использовались некоторые дековские неадаптированные пакеты. Я вот хорошо помню FMS-11, которую использовал для создания полноэкранных программ - утилиты из этого пакета использовали маленькие буквы, и я год мучался со всякими NУМЕРИЦ ФИЕЛД. Потом догадался почитать доку на СМ7209, и приделал к терминалу тумблер, переключающий знакогенератор между ASCII и КОИ7.
    А здесь роль этого тумблера выполняет кнопка F11.


    Цитата Сообщение от Hunta Посмотреть сообщение
    Я написал скрипт на powershell, который берёт листинг от Macro-11, а на выходе выдаёт mif файл
    Ну, тут каждый делает как ему удобнее. По мне так формат объектного модуля однозначнее формата листинга, куда компилятор чего только не пихает.
    А зачем в миф-файле исходные строки? Я так в миф вообще никогда не заглядываю, при отладке листингом пользуюсь.

  6. #4
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,964
    Спасибо Благодарностей отдано 
    284
    Спасибо Благодарностей получено 
    626
    Поблагодарили
    527 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от forth32 Посмотреть сообщение
    А зачем в миф-файле исходные строки? Я так в миф вообще никогда не заглядываю, при отладке листингом пользуюсь.
    Потому что мои исходники, как правило, выглядят так:
    Код:
      PROCEDURE MAIN
      BEGIN
        .GTLIN #BUF, #PROMPT
    
        IFB BUF NE #0 THEN
          CALL MAKE
        ELSE
          .PRINT #HELP
        END
    
        .EXIT
      END MAIN
    листинг, для понимания - смесь вызовов макросов и их расширений, но - когда у меня PDP2011 бежит в "пошаговом" режиме - мне как раз удобней то, что я вижу в моём mif файле. Ну и частенько бывает - правлю не исходник, а непосредственно mif файл - когда что то временное и надо по быстрому проверить, не трогая исходников

    - - - Добавлено - - -

    По сути то, что я вижу в mif - это очищенный листинг, в котором оставлено только нужное

  7. #5
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    754
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Очень круто, спасибо. А чего на захотели родной КСМ запилить на vm80a? Там и прошивка есть родная, только запилить видео под VGA?

  8. #6
    Master Аватар для svinka
    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    618
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    40 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ананизьмъ

    вашу бы энергию в мирное русло....шшш.....

    Чем под линукс вас не уст3ил како-йто терминал? А то там столько исходничков!!! хоть под совковый ИЕ правьте!

    по цене - ужас!!

    - - - Добавлено - - -

    тут еще как терминал укнц за 4тыщ просится... или егойная прошивка к живому вм2
    Последний раз редактировалось svinka; 07.11.2020 в 23:57.

  9. #7
    Master Аватар для svinka
    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    618
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    40 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Кого выпустили. Только нафига он тут?
    тихо сам с собою теперь не получится....

  10. #8
    Master Аватар для svinka
    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    618
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    40 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    запрос послал
    жду ценник

  11. #9
    Activist
    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    324
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    А чего на захотели родной КСМ запилить на vm80a? Там и прошивка есть родная, только запилить видео под VGA?
    Была вначале такая мысль. Только повторить я думал не КСМ, а СМ7209 - в отличие от ксм, со схемотехникой этого терминала я хорошо знаком, даже прошивку частично дизассемблировал в свое время.
    Но есть несколько причин этого не делать. Главная - прошивка рассчитана на работу с родной клавиатурой. Родную клавиатуру разрабатывали вменяемые люди, и при нажатии пробела она выдает код 40, а не бессмысленный сканкод 51. Под ps/2 придется прошивку переделывать, добавляя таблицу перекодировки сканкодов, причем таблица эта разная в разных режимах (рус, лат, кои7, с шифтом итд). А писать в кодах 8080, да еще всякую адресную арифметику - это проще удавиться...
    Так что я решил разработать терминал с нуля, опираясь только на VT52 Decscope user manual и паспорт 15ИЭ-00-013. Я ведь не ставил цель повторить как можно точнее древнюю железяку. Мне просто нужен удобный терминал для работы, с более привычной (теперь) раскладкой QWERTY, а не JCUKEN.

  12. Эти 4 пользователя(ей) поблагодарили forth32 за это полезное сообщение:

    hobot (08.11.2020), Vslav (08.11.2020), yu.zxpk (08.11.2020), Копейкин (07.12.2022)

  13. #10
    Master Аватар для xolod
    Регистрация
    01.02.2010
    Адрес
    Москва
    Сообщений
    743
    Спасибо Благодарностей отдано 
    157
    Спасибо Благодарностей получено 
    174
    Поблагодарили
    86 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    forth32, Спасибо за очень интересный проект!
    Я его собрал для MIST Cyclone III ну и соответственно Quartus 13.1 запустился сразу, нужно только клавиатуру адаптировать. Но есть у меня и идея по развитию этой штуковины!

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. МС1201.02 и 15ИЭ-00-013
    от SKcorp. в разделе ДВК, УКНЦ
    Ответов: 5
    Последнее: 06.04.2023, 18:19
  2. Эмуляция фрязинского дисплея 15ИЭ-00-013
    от shattered в разделе Эмуляторы отечественных компьютеров
    Ответов: 271
    Последнее: 28.10.2022, 21:19
  3. Ответов: 30
    Последнее: 24.07.2015, 19:44
  4. У продавца украли терминалы 15ИЭ-00-013
    от Sergei Frolov в разделе ДВК, УКНЦ
    Ответов: 20
    Последнее: 05.08.2011, 12:03
  5. Кабель блок-монитор от 15ИЭ-00-013
    от SKcorp. в разделе ДВК, УКНЦ
    Ответов: 0
    Последнее: 04.05.2010, 00:48

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •