User Tag List

Показано с 1 по 10 из 992

Тема: Эмулятор терминала типа VT52

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    283
    Поблагодарили
    228 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    можно использвать <Ctrl><Q>.
    А как его отличить от собственно CTRL/Q?

    Цитата Сообщение от Patron Посмотреть сообщение
    Вывод не останавливается вообще?
    Не останавливает пока я просто жму Enter и система печатает подсказку ">" на новой строке. С точки зрения физики когда нажимается <CR> система выводит на экран <CR> (и ничего больше в качестве эха), а потом выводится подсказка CLI (в данном случае <LF>">" без кавычек).

    Цитата Сообщение от Patron Посмотреть сообщение
    P.S. В процессе тестов обнаружилось, что если в той версии RT11 v05.07, которая идёт в комплекте "эмулятора ДВК" - дать команду DIR, затем нажать <Ctrl><S>, а потом <Ctrl><C> <Ctrl><C> - то вывод на экран умирает и после <Ctrl><Q> уже ничего не выводится и работать дальше невозможно.
    На 11/83 повторить не удалось. В документации по E11 кажется что-то было на эту тему.
    Но вообще на что-то такое наступал.

    ---------- Post added at 21:55 ---------- Previous post was at 21:50 ----------

    Цитата Сообщение от form Посмотреть сообщение
    На 11/83 повторить не удалось.
    Хотя у меня кроме всего прочего многотерминалка, а TT0 и TT1 подсоединены через USB COM двупорт который с настоящим портом общего имеет еще меньше чем всякие PCIшные.
    Сейчас попробую в многотерминалке же SET TT CONSOL=2 (на CM7209) и оттуда...
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

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

  3. #2
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    62 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Не останавливает пока я просто жму Enter и система печатает подсказку ">" на новой строке.
    Я сделал так:

    1. Нажимал <CR>, пока промпт не "доехал" до низа экрана (чтобы HOLD сразу активировался и было удобно считать выведенные строки).
    2. Нажал кнопку [HOLD] ( это полностью эквивалентно отправке на терминал <Esc><[> ).
    3. Ввёл абракадабру, чтобы система ругнулась.
    4. Нажал <CR> - включился Xoff ( кнопка [HOLD] стала красной ).
    5. Нажал <Shift><Scroll Lock> - вывелось то, что хотела сказать система.
    6. Нажимал <CR> и следил за введённой абракадаброй - она должна была "застрять" точно на верху экрана - так и произошло - после <Shift><Scroll Lock> терминал перевёл строку, принял 22 новых строки и остановил вывод.

    Цитата Сообщение от form Посмотреть сообщение
    На 11/83 повторить не удалось.
    Самое время загрузить RT-11 через порт терминала. Прописываем в файле HX_COM.cfg номер того COM-порта, к которому подключен системный терминал 11/83, загружаем этот конфиг в VT52.exe, переключаем ( при помощи кнопки выбора образа ) привод HX0 на образ HXsys57.DSK, нажимаем <Break> (чтобы выйти в пульт), нажимаем кнопку [Boot HX0] и понеслась..

  4. #3
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    283
    Поблагодарили
    228 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Я сделал так:
    Ну я в точности написал что делал - это последовательные шаги без чего-либо между ними. Из них было видно, что то работает то нет.

    Про физику процесса я не случайно упомянул: в RSX и в RT-11 вывод подсказки и отработка <CR> идут по разному.

    В RSX при нажатии на <CR> на вывод поступает дословно: <CR><LF>">".
    В RT-11: <CR><LF><CR><LF>".".

    Ну и самое главное не выполняется: в режиме в режиме HOLD SCREEN когда экран остановлен никакой вывод не может попасть на экран до тех пор пока не будет нажат <SCROLL> или <SHIFT>+<SCROLL> (включая непечатные символы). Если кто-то несмотря на XOFF продолжает что-то выводить, терминал должен записывать это в буфер, попутно постаравшись еще раз убедить с помощью XOFF что этого делать не стоит.

    Кстати индикатор тоже не совсем адекватным получается так как он сделагн сейчас. Режим HOLD - это не момент когда экран остановлен или ждет ввода. Это режим который наступил при получении терминалом <ESC>[ и до тех пор пока не будет получен <ESC>\ (попутно напоминаю, что если в этот момент терминал остановлен - <ESC>\ не отработает пока не будет нажат <SCROLL>). Если делать полнофункциональный индикатор, он должен различать три состояния: выключен/включен/включен и остановлен.

    ---------- Post added at 22:30 ---------- Previous post was at 22:25 ----------

    Цитата Сообщение от Patron Посмотреть сообщение
    Самое время загрузить RT-11 через порт терминала. Прописываем в файле HX_COM.cfg номер того COM-порта, к которому подключен системный терминал 11/83, загружаем этот конфиг в VT52.exe, переключаем ( при помощи кнопки выбора образа ) привод HX0 на образ HXsys57.DSK, нажимаем <Break> (чтобы выйти в пульт), нажимаем кнопку [Boot HX0] и понеслась..
    Кстати сейчас попробуем.
    Только USB COM порт штука довольно муторная - он сразу пачками плюется походу. У меня в RSX особой разницы не заметно, а в RT-11 он сразу выплеввывает все рывками сразу по четверти страницы, а после выключения питания 11/83 (порт в это время должен получить BREAK) еще плюется тем, что было последним в его буфере - куском того, что выводил до этого
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  5. #4
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    62 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Ну я в точности написал что делал
    Версия терминала с тех пор обновилась.

    Цитата Сообщение от form Посмотреть сообщение
    Если делать полнофункциональный индикатор, он должен различать три состояния: выключен/включен/включен и остановлен.
    Так и есть. Режимов индикации даже больше - индикатор дополнительно отслеживает и задержку вывода по <Ctrl><S> при отключенном режиме [HOLD] ( это четвёртое состояние индикации ).

  6. #5
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    283
    Поблагодарили
    228 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Версия терминала с тех пор обновилась.
    Не заметил.
    Сейчас посмотрим.

    Цитата Сообщение от Patron Посмотреть сообщение
    задержку вывода по <Ctrl><S> при отключенном режиме [HOLD] ( это четвёртое состояние индикации ).
    А как он определит задержку вывода по CTRL/S?
    Для VT52 CTRL/S - рядовой символ, которы будучи нажат на клавиатуре тупо посылается системе, а уж система на него реагирует или не реагирует в зависимости от настроек SET TT [NO]PAGE (RT-11) и SET /[NO]TTSYNC=TI: (RSX-11).

    Можно разьве что предположить на основании того, что был нажат CTRL/S и вывод прекратился, хотя и не со 100% гарантией

    Загрузка с HX не прошла. Подвисает в районе 010030. BREAK из эмулятора при этом не работает - пришлось переключаться на SecureCRT.
    поковыряю код.

    ---------- Post added at 22:49 ---------- Previous post was at 22:45 ----------

    Предположил, что загрузка не прошла из-за неучета текущего состояния процессора (в частности настроек MMU), сделал полный сброс, еще раз попробовал - останов на 10366.

    ---------- Post added at 22:54 ---------- Previous post was at 22:49 ----------

    Еще раз попробовал после ресета - опять висим...
    Ладно, сейчас буду код ковырять.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  7. #6
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    62 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Можно разьве что предположить на основании того, что был нажат CTRL/S и вывод прекратился
    Так и делает. После каждого нажатия Ctrl/S - загорается индикатор до момента следующего вывода на экран ( с задержкой первой проверки на 250 мс - чтобы система успела принять Ctrl/S и остановить вывод ).

    Цитата Сообщение от form Посмотреть сообщение
    Загрузка с HX не прошла.
    Исходники драйвера HX и двух вариантов начального загрузчика ЗДЕСЬ. Начальный загрузчик пока довольно кривой - там даже SP не устанавливается.

    Можно попробовать загнать в память копию первичного загрузчика из нулевого сектора образа.

    Хотя, не исключено, что коды начального загрузчика передаются быстрее, чем пульт успевает их "переварить" - я с таким уже сталкивался.

  8. #7
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    283
    Поблагодарили
    228 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Сейчас подумаем над улучшениями.
    А вобщем лень думать - собственно это не функция загрузчика - приводить CPU в состояние, годное для загрузки. Так что достаточно установки SP. Пара слов разьве что:
    • MTPS есть не на всех моделях процессоров, но наверное там где нету, нету и @-подобного мониторчика
    • SOB есть не на всех процессорах, в том числе встречались @-мониторные без этой команды.


    ---------- Post added 16.11.2012 at 00:10 ---------- Previous post was 15.11.2012 at 23:23 ----------

    По поводу последней версии терминала, проверка HOLD...

    Немного побаловался, SET /NOHOLD, SET HOLD, комада - экран проплыл дальше примерно на 4 строки (вначале когда первый раз включал было нормально).

    Поведение с подсказками RSX оказалось совершенно одинаковым с CM7209. Разгадка оказалась простой: если режим установлен командой "SET HOLD", перед выводом подсказки выводится <ESC>\, а после вывода <ESC>[. Поскольку <CR> в RSX эхается как тот же <CR>, а <LF> - часть подсказки, оно и получается, что подсказки системы не лочатся.

    Другой тест: исходные условия - стоим в последней строке делаем команду "ACT". Полный вывод команды (с последующей подсказкой):

    Код:
    >ACT
    MCR...  (TT1:)
    ACTT1   (TT1:)
    >
    - пишем ACT, жмем <CR>, в последней строке ">ACT", останов
    - жмем <ROLL> -> первая строка
    - жмем <ROLL> -> вторая строка
    - жмем <ROLL> сколько угодно раз - подсказка не выходит, при этом на каждое нажатие индикатор меняется с желтого на розовый и обратно

    ---------- Post added at 00:19 ---------- Previous post was at 00:10 ----------

    Проверка показала, что при нажатии на <ScrollLock> система получает (чередуясь) ничего и <CtrlQ><CtrlS> . Косяк. Клавиша <ROLL> сама по себе не шлет никакого кода и если в данный момент экран не остановлен - хоть занажимайся - ничего послано не будет. Если же экран остановлен - при нажатии на клавишу посылается <CtrlQ> и все - никакого <CtrlS>. <CtrlS> посылается в тот момент когда на экран выводится очередной <LF>.

    ---------- Post added at 00:40 ---------- Previous post was at 00:19 ----------

    Еще косяк. CTRL/S приостанавливает вывод терминалом.
    Терминал не должен никаким боком реагировать на нажатие каких либо клавиш, имеющих код ASCII.

    В результате: запрещаем отработку системой CTRL/S и CTRL/Q, запускаем команду с кучей вывода, жмем CTRL/S - хрясь - вывод приостановился (хотя не должен), затем пошел дальше. Если же пеоиодически продолжать нажимать на CTRL/S, в конце вывода поймаем ситуацию когда вывод приостановился насовсем. До CTRL/Q.
    Последний раз редактировалось form; 15.11.2012 в 20:40.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  9. #8
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    283
    Поблагодарили
    228 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Исходники драйвера HX
    Заглянул в драйвер...
    Несколько слов.

    Код:
    .Macro .ADDR	x
    	Mov	PC, R0
    	Add	x -., R0
    .EndM
    Системная библиотека уже содержит макрокоманду .ADDR которая обладает весьма большим функционалом (кроме того что использован здесь). Вряд-ли есть смысл дублировать. Хотя на самом деле в данном драйвере она вообще не нужна (см ниже).

    Код:
    .Macro	MTPS	xx
    	Mov	xx, -(SP)
    	Mov	PC, -(SP)
    	Add	#6,  (SP)
    	RtI
    .EndM
    Макрокоманда нигде не используется ниже. В XM/ZM работать не будет (если вдруг возникнет желание сделать поддержку для). В системной библиотеке есть замечательная макрокоманда .MTPS для таких целей.

    Код:
    .IIF NDF RTE$M,  RTE$M  =: 0
    .IIF NDF MMG$T,  MMG$T  =: 0
    .IIF NDF ERL$G,  ERL$G  =: 0
    .IIF NDF TIM$IT, TIM$IT =: 0
    Повторение того, что и так делается автоматом. Определение же вручную этих настроек здесь ломает возможность использования драйвера в стандартной процедуре SYSGEN.


    Код:
    	.DrPtr
    	.DrSpF	<373>
    Ничего полезного кроме несовместимости с RT-11 V5.0 на уровне исходников не дает: UMRы нам не нужны, error logging не поддерживается, а больше нигде от этих команд пользы нет. Ну разьве что сторонние утилиты могут посмотреть в эти таблицы (система их никак не использует). Зачем нужен .DRPTR без параметров даже придумать не могу.

    Код:
    . = 116
    
    HXMES:
    	.ASCIZ	<CR><LF>"HX DSK/TTY multiplexer   v1.0  2012"<CR><LF>
    Не очень хорошая идея вписываться в докементированные (со времен как минимум 4.0) области заголовка драйвера.

    Код:
    . = 200				; DATA DEVICE Installation check
    	Return
    . = 202				; SYSTEM DEVICE Installation check
    Если совместимость с самыми древними мониторами не нужна (а в том виде как есть ее и так нет), то можно
    воспользоваться макросом .DRINS который предназначен для определения точки инсталяции.

    Код:
    	.ADDR	#HXMES
    Думаю проще JSR R0 и строка текста после
    Кстати, тут как я понимаю готовился .PRINT изначально, мешался драйверу?

    Код:
    	.DrSet	MMGT,  2, O.GEN, NUM
    Бессмысленный функционал. Драйвер работает с буфером программы и следовательно требует специальной работы с ним для XM. Непонятно зачем испольхуется значение - можно же было сделать [NO]KEY.

    Код:
    O.GEN:
    	Tst	R0		; Arg = 0 ?
    	BEq	30$
    	BiS	R3, HX.GEN	; Set SYSGEN bit.
    	Br	31$
    30$:
    	BiC	R3, HX.GEN	; Clear SYSGEN bit.
    31$:
    	ClC
    	Return
    CLC лишний - никто бит C не взводил, да и первая же команда его чистит в явном виде.

    Код:
    .IIF GT	.-1000	.ERROR
    В системной библиотеке есть замечательная макрокоманда для этого

    .ASSUME . LE 1000,MESSAGE=<;SET area overflow>

    Код:
    	Mov	@#TPS, TPSRes
    В начале драйвера есть намек на разные CSRы. Тогда проще сделать поддержку SET HX CSR=xxxxxx.

    Код:
    	BiC	#100, @#TPS
    CLR будет короче
    Попутно стоит отметить, что подобное не сработает в многотерминальных системах. Можно добавить проверку и .ERROR (на случай сборки родным SYSGEN) или проверку в подпрограмме инсталяции.

    Дальше углубляться не стал. Добавлю еще, что для сборки драйвера неплохо бы LINK/NOBITMAP использовать (что согласно документации в принципе требуется).
    Последний раз редактировалось form; 16.11.2012 в 14:59.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

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

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

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

Похожие темы

  1. [Аукционъ] Клавиатура от терминала ЕС-7927
    от BYTEMAN в разделе Барахолка (архив)
    Ответов: 18
    Последнее: 15.05.2012, 14:50
  2. Срочно ищу монитор от терминала 15ИЭ-00-013 (от ДВК-2)
    от dk_spb в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 10.02.2012, 10:19
  3. Куплю клавиатуру КМ-035 для терминала СМ 7238
    от Kronshou в разделе Барахолка (архив)
    Ответов: 5
    Последнее: 13.09.2010, 23:33
  4. C64 или C128 в качестве терминала под Linux
    от Vinnny в разделе Commodore 16/64/128
    Ответов: 6
    Последнее: 14.12.2007, 16:39
  5. Подгрузка pc-файла типа "codes" в эмулятор
    от maximk в разделе Эмуляторы
    Ответов: 15
    Последнее: 13.11.2006, 15:46

Ваши права

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