Вход

Просмотр полной версии : Загрузка RT-11 в ДВК через telnet-интерфейс



Страницы : 1 [2]

MiX
13.11.2014, 18:09
form, Ещё вариант, поставь в эмуляторе 11/03 процессор или хотя бы 23.

form
13.11.2014, 18:11
form, Ещё вариант, поставь в эмуляторе 11/03 процессор или хотя бы 23.

Это убьет возможности образа системы который там записан и потребует переделки самого образа.

MiX
15.11.2014, 02:23
form, Попробовал на Эм.PDP11 через сеть загрузить эмулятором VT52 на разных частотах эмулируемого процессора. До 2000 MIPS нормально грузится, после 2000 пишет "HX-W-BAD Packet".
Это я к тому что теоретически НХ протокол не пойдёт если процессор выдаёт больше 2000 MIPSов.

Patron
15.11.2014, 03:42
теоретически НХ протокол не пойдёт если процессор выдаёт больше 2000 MIPSов.Не пойдёт через загрузчик HX с обычным таймаутом. Для любого таймаута ( кроме бесконечного ) найдётся такое быстродействие, которое вызовет ошибочный таймаут.

MiX
16.11.2014, 12:20
Patron, Понятно, но в случае с formom загрузка идет обычным способом с диска DU. Захват диска НХ не происходит на стороне клиента. Скорей всего в драйвере что то. Я думаю можно сделать как в модемной связи, сервер посылает запрос и получает ответ, потом высчитывает время от посылки до ответа и выставляет минимальный тайаут (некий PING что-ли). Ну и дальше продолжает работать в соответствии с длительностью отклика.

Patron
16.11.2014, 13:44
Захват диска НХ не происходит на стороне клиента. Скорей всего в драйвере что то.Если на закладке HX Log не отмечается поступивший запрос - проблема не в драйвере.

MiX
16.11.2014, 17:29
Если на закладке HX Log не отмечается поступивший запрос - проблема не в драйвере.
Лог написал одну строчку- Unit:0 Block:1 ByteCoynt:512.

Patron
17.11.2014, 13:57
До 2000 MIPS нормально грузится, после 2000 пишет "HX-W-BAD Packet".Сейчас посмотрел - таймаут есть только во внешнем загрузчике. Драйвер HX работает без таймаута, поэтому если грузить HX родным загрузчиком HX ( который не умеет устанавливать дату ), то загрузка и работа возможны при любом быстродействии.



После команды DIR HX: перевод строки и мигающий курсор.В драйвере HX нет таймаута, поэтому если какой-то байт пропал по дороге - драйвер HX будет ждать этот байт до бесконечности.

Когда драйвер HX завис в ожидании пропавшего байта - ему можно "скормить" несколько нажатий клавиатуры и тогда после получения ожидавшегося количества байтов драйвер завершит чтение с ошибкой.

Такой подход в комбинации с командой: DUMP/TERM/BYTE/IGNOR HX0:/ONLY:nn ( где nn - номер читаемого блока ) - позволяет вывести на экран дамп всех принятых драйвером байтов.

MiX
17.11.2014, 14:27
ему можно "скормить" несколько нажатий клавиатуры
Не помогает.

позволяет вывести на экран дамп всех принятых драйвером байтов. После команды получил ответ "simulation stopped, pc: 001510 ( TSTB @#177560)
Goodbay"
...
И т.д.

Patron
17.11.2014, 14:42
После команды получил ответ "simulation stopped, pc: 001510 ( TSTB @#177560)Видно, что висит на ожидании байта. Т.е. по ходу передачи или пропадает часть байтов, или портится передаваемый в самом начале счётчик байтов и драйвер считает, что должен принять больше байтов, чем есть в пакете.

Не исключено даже, что не проходит заголовок пакета с запрошенными данными и драйвер HX, отправив запрос - пропускает все "посторонние байты" в ожидании сигнатуры заголовка.

В любом случае причина скорее всего в искажении 8-битных байтов при их передаче. При текстовом обмене проблем не возникает, а при двоичном - они есть.

Можно сделать тестовую версию драйвера HX, которая будет работать с таймаутом и "дублировать словами" все получаемые драйвером команды и данные.

form
17.11.2014, 15:40
На самом деле есть еще один нюанс...
В запускаемом SimH код CTRL/P опознается как останов эмуляции (с последующим выходом так как следом за загрузкой в конфиге идет команда QUIT).

В оригинале SimH не позволяет запретить клавишу останова. Я когда делал вел порт для OpenBSD там добавлял такой функционал. Могу и здесь собрать такой вариант.

MiX
19.11.2014, 16:18
Patron, Я тут подумал, может в НХ использовать протокол FTP. Он как раз использует двоичный режим.

Patron
20.11.2014, 17:09
Написана тестовая версия драйвера HX: HX_test_version_v1.0 (http://emulator.pdp-11.org.ru/misc/HX_test_version_v1.0.zip)

Режим сжатия не используется.

В настройки добавлен параметр WAIT, задающий число полных циклов ожидания ( по 65536 запросов в каждом цикле ) при ожидании байтов в порту HXCSR. Значение по умолчанию 16.



.SET HX LIST

HX test version v1.0 2014

SET HX active parameters
========================
NoERLG
NoTIMIT
HXCSR = 177560
TTCSR = 177560
Wait = 16

.



Теперь при пропаже байтов - драйвер HX сообщает об истечении таймаута:



.DU/TE/BY HX0:/ONLY:0

?HX-W-READ DATA TIMEOUT
?DUMP-F-Input error HX0:

.


Сообщается о таймауте как при ожидании заголовков пакетов, так и при ожидании байтов данных ( если заголовок был принят, но некоторые байты данных потеряны ).

При чтении - все неопознанные байты ( до приёма заголовка ) помещаются в приёмный буфер пользователя. В момент приёма заголовка указатель сохранения байтов вновь устанавливается на начало буфера пользователя. Это позволяет анализировать принятые данные даже при искажении заголовка пакета ответа.

...

MiX
20.11.2014, 19:41
form, Перезалей драйвер пожалуйста.