User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 1003

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

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 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

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

  3. #2

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    79 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  4. #3

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 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

  5. #4

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    79 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

  6. #5

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 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

  7. #6

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    79 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    А вобщем лень думать - собственно это не функция загрузчика - приводить CPU в состояние, годное для загрузки. Так что достаточно установки SP.
    Для пробы - в приложении вариант короткого загрузчика с установкой SP = 010000 перед JSR R5.

    Цитата Сообщение от form Посмотреть сообщение
    Еще косяк. CTRL/S приостанавливает вывод терминалом.
    Это мой недосмотр. В приложении - исправленная версия терминала.

    Цитата Сообщение от form Посмотреть сообщение
    Проверка показала, что при нажатии на <ScrollLock> система получает (чередуясь) ничего и <CtrlQ><CtrlS> . Косяк. Клавиша <ROLL> сама по себе не шлет никакого кода и если в данный момент экран не остановлен - хоть занажимайся - ничего послано не будет. Если же экран остановлен - при нажатии на клавишу посылается <CtrlQ> и все - никакого <CtrlS>. <CtrlS> посылается в тот момент когда на экран выводится очередной <LF>.
    Чтобы точнее определить, в какой именно момент терминал выводит коды - можно добавить в конфигурацию дополнительную консоль, подключенную к выходам объекта Terminal и адаптера порта. Для этого в используемый файл конфигурации нужно добавить следующие строки в разделы [objects] и [links]:

    Код:
    [objects]
    Con = Ядро:Console
    
    [links]
    ComPort > Con
    VT52    > Con
    У меня после каждого нажатия на <Scroll Lock> терминал выводит или <CtrlS>, или <CtrlQ> - и это видно на экране консоли.

    ...
    Последний раз редактировалось Patron; 15.11.2012 в 23:36.

  8. #7

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    У меня после каждого нажатия на <Scroll Lock> терминал выводит или <CtrlS>, или <CtrlQ> - и это видно на экране консоли.
    Ну это наверное эффект приостановки терминалом

    В любом случае правильная реакция: клавиша <ROLL> ни под каким соусом никаких кодов не шлет если в данный момент не действует останов скроллинга (который не имеет никакого отношения к реакции системы на CTRL/S). Если же в данный момент скроллинг остановлен, то (можно сказать так) посылается CTRL/Q. CTRL/S не посылается клавишей вообще никогда.

    PS. Возможно тут с толку сбивает клавиша VT1xx/VT2xx для приостанова/продолжения печати - там клавиша как раз шлет поочередно CTRL/S и CTRL/Q и вдобавок, сам терминал прекращает/возобновляет вывод независимо от системы.
    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

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Для пробы - в приложении вариант короткого загрузчика с установкой SP = 010000 перед JSR R5.
    Грузится.
    Кстати, чем там в конфиге бряк управляется?
    А то в случае повисания в этом HX варианте приходится выходить и запускать SecureCRT (из принципа не буду сейчас припаивать схему enable/halt)
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	hxboot.jpg 
Просмотров:	1706 
Размер:	18.2 Кб 
ID:	38309  
    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

  10. #9

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 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

  11. #10

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    79 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Драйвер работает с буфером программы и следовательно требует специальной работы с ним для XM.
    Т.е. драйвер должен ругать тех, кто пытается собрать его текущую версию с MMG$T = 1 или выполнить SET HX MMGT=1.

    Цитата Сообщение от form Посмотреть сообщение
    Вопрос на засыпку - как проще всего удостовериться, что терминал подключен через HX?
    Набрать DIR HX:.
    Если мультиплексора нет - на терминал вылезет запрос протокола HX, стандартной отменой которого является <Ctrl/C>.

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

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

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

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

Похожие темы

  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

Ваши права

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