User Tag List

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

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

  1. #1

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    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, содержащий подробную информацию, в том числе о назначении управляющих клавиш и формате строки состояния. Рекомендую ознакомиться - изучать терминал методом тыка не так-то просто.

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

    Эти 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)

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

  3. #2

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,504
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 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;
    никак не пофиксю последнюю строчку - пока просто руками удаляю, если она мешается, но обычно можно забить

  4. #3

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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


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

  5. #4

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,504
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 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 - это очищенный листинг, в котором оставлено только нужное

  6. #5

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

    По умолчанию

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

  7. #6

    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    632
    Спасибо Благодарностей отдано 
    36
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    43 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ананизьмъ

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

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

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

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

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

  8. #7

    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    632
    Спасибо Благодарностей отдано 
    36
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    43 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  9. #8

    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    632
    Спасибо Благодарностей отдано 
    36
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    43 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  10. #9

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    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.

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

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

  11. #10

    Регистрация
    01.02.2010
    Адрес
    Москва
    Сообщений
    769
    Спасибо Благодарностей отдано 
    178
    Спасибо Благодарностей получено 
    191
    Поблагодарили
    91 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

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

Похожие темы

  1. Эмуляция фрязинского дисплея 15ИЭ-00-013
    от shattered в разделе Эмуляторы отечественных компьютеров
    Ответов: 272
    Последнее: 01.11.2025, 18:13
  2. МС1201.02 и 15ИЭ-00-013
    от SKcorp. в разделе ДВК, УКНЦ
    Ответов: 5
    Последнее: 06.04.2023, 18: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

Ваши права

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