PDA

Просмотр полной версии : создание RT-11 DSK c HX protocol driver-ом



bigral
10.02.2014, 19:24
Расскажите как создать DSK образ системы RT-11 (из DEC дистрибутива желательно) чтобы его можно было использовать с чудесным эмулятором VT52 и HX виртуальными дисками. Ато пытался грузить разные уже выложенные DSK на оригинальной связке - KDJ11-AA + DLV11-J и обнаружил что загрузка "зависает" после надписи HX multipexer-a.

MiX
10.02.2014, 20:18
Вместе с эмулятором VT52 есть образы с HX загрузкой.

Patron
10.02.2014, 23:12
пытался грузить разные уже выложенные DSK на оригинальной связке - KDJ11-AA + DLV11-J и обнаружил что загрузка "зависает" после надписи HX multipexer-a.А что пишет сервер в консоле "HX Log" ?

---------- Post added at 22:12 ---------- Previous post was at 21:47 ----------

Судя по описанию проблемы - в настройках сервера нужно выключить сжатие протокола HX ( или отжать в интерфейсе кнопку "Использовать сжатие" ).

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

Но после вывода сообщения - управление передаётся уже основному драйверу HX.SYS, а он использует сжатие HX, если оно включено в настройках сервера.

Родные дековские терминальные порты не поддерживают квитирование, поэтому использование сжатия HX при загрузке через такой порт приведёт к зависанию загрузки.

MiX
11.02.2014, 04:18
Патрону,

У меня работает только HXsys54.DSK на реальном ДВК. 57 один раз только загрузился и всё.

А что за конфигурация OpenVMS? Какой там пароль?

form
11.02.2014, 08:25
А что за конфигурация OpenVMS? Какой там пароль?

Насколько я понимаю, это вход на ноду BOPOHA из HECnet (http://pdp-11.org.ru/hecnet.html). Пароля там не должно быть - просто пользователь GUEST :)

bigral
07.04.2014, 19:02
хочу вернуться к теме создания загрузочных образов RT11, как я понимаю суть процесса такая:

1. создать образ (в разных эмуляторах это по разному, есть и пустые образы), ну если это живое железо то образ ненужен - так как есть real носитель.

2. забутироваться с дистрибутива (или с HX0: образа системы).

3. если нужно подгрузить драйвер того устройства где будет устанавливаться система командой load: (например load du для устройств MSCP)

3. отформатировать командой INIT (например для MSCP контроллера - init du0: )

4. скопировать всю систему командой: copy/system dk:*.* du0:*.*

5. записать boot-овую область диска монитором командой copy/boot dk:rt11sj.sys du0:

Все правильно?
Вот токо вопрос где ж хранится конфигурация загружаемых драйверов? (тут же нету config.sys :) или реестра)

Patron
07.04.2014, 19:21
где ж хранится конфигурация загружаемых драйверов?В самом файле драйвера.

При выполнении команды SET драйвер может полностью перезаписать сам себя, внеся какие угодно изменения.

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

Например, драйвер LP.SYS имеет такие настройки:



.HAND LP/S

SET LP WIDTH=<десятичное значение>
SET LP [NO]CR
SET LP [NO]FORM0
SET LP [NO]HANG
SET LP [NO]LC
SET LP [NO]CTRL
SET LP [NO]TAB
SET LP CSR=<восьмеричное значение>
SET LP VECTOR=<восьмеричное значение>
SET LP ENDPAG=<десятичное значение>
SET LP [NO]BIT8
SET LP [NO]FORM
SET LP LENGTH=<десятичное значение>
SET LP SKIP=<десятичное значение>

.

hobot
07.04.2014, 21:55
5. записать boot-овую область диска монитором командой copy/boot dk:rt11sj.sys du0:

тут можно при наличии всех возможных драйверов\загрузочных устройств на носителе указать нужный
так для HX команда будет
copy/boot:HX <имя вых.ус-ва>:<имя монитора> <имя вых.ус-ва>:
Расширение у монитора .SYS можно опустить.
Я (к примеру), сначало собираю все нужные файлы прямо в винде плагином
в файловом менеджере, а только потом уже монтирую его в нужный эмулятор
с целью допиливания, кстати говоря, пользуясь случаем вот такую сделал
штуку в архиве http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/bolvanka/:redface:
(для эмулятора Patrona вы не ограничены размером с дискету, там можно гораздо большей ёмкости иметь системный образ).

form
07.04.2014, 22:15
3. если нужно подгрузить драйвер того устройства где будет устанавливаться система командой load: (например load du для устройств MSCP)

Не нужно для выполнения описанных шагов. В RT-11 background job (в RT-11SJ только такой и бывает) может сам подгружать драйвер по мере надобности.


3. отформатировать командой INIT (например для MSCP контроллера - init du0: )

Не то, чтобы эта процедура имела что-то общее с форматированием (равно как и то, что сейчас принято этим словом называть, ну да ладно) ;)


4. скопировать всю систему командой: copy/system dk:*.* du0:*.*

DK: - лишнее, он на то и DK, что по умолчанию.
Номер "0" можно не писать. Исключение - номер для псевдоустройств (DK0/SY0 - одначает диск 0 того же типа на который назначен DK/SY - опасная штука, лучше не использовать).
*.* тоже лишнее, достаточно просто "DU:" или "*" - к примеру


COP/SY * DU:


Вот токо вопрос где ж хранится конфигурация загружаемых драйверов? (тут же нету config.sys :) или реестра)

Если я правильно понял вопрос... Про загружаемость драйверов уже говорили выше - грузить их не обязательно. Исключение - системное устройство (оно грузится автоматически) и устройства, используемые в system/foreground jobs (для RT-11SJ неактуально) и устройства требующие постоянного присутствия в памяти для работы (SL, сетевые драйвера итд). Есть понятие "installed driver" - драйвер который не загружен в память, но система может с ним работать. Прежде всего (во время загрузки монитора) проверяются драйвера которые были указаны при генерации системы (совпадает ли байт $SYSGE монитора [младшие 4 бита] с H.GEN драйвера, есть ли CSR на шине [если не указано что пофигу], выполняется процедура установки самого драйвера и проверяется ее результат). Драйверы прошедшие проверку устанавливаются в системе и становятся доступными. Далее, если остаются свободные слоты для драйверов (количество указывается при генерации + слоты для драйверов которые не прошли проверку/отсутствуют) проверяются остальные двухбуквенные (трехбуквенные если в мониторе есть суффикс драйвера) SYS файлы.

bigral
08.04.2014, 02:59
фух... ниче себе!

Давайте все по порядку. Из описанных методов:

1. Драйвер может свои настройки сохранять не во внешний конфиг-файл а прямо в самого себя (актуально наверное учитывая что пишешь уже в заранее выделенное для конфига место на диске, такой финт и для TRDOS пойдет учитывая схожесть - отсутствие FAT). Надеюсь тут я понял правильно (это было самое простое :) ), интересно только, сохраняется ли такой же подход для RSX, TSX и др..?

2. Сам по себе монитор rt11sj/fb/xm/ts не пишет в себя конфиг но у него есть некий маркер который присутствует и в драйверах которые вместе с ним идут, и вот он при загрузке проверяет все *.sys файлы на этот маркер и таким образом находит все драйвера на системном загрузочном диске. Правильно??? (Токо вот не ясно, как он может читать системный диск, драйвер которого он еше не загрузил, и сам драйвер на этом же системном диске и сидит... Всетаки видать как-то команда copy/boot пишет в boot область диска и сам монитор и драйвер системного диска сразу же с ним, так?) Ну и опять же как это же происходит в RSX TSX и т.д. подход такой же?

form
08.04.2014, 05:13
1. Драйвер может свои настройки сохранять не во внешний конфиг-файл а прямо в самого себя (актуально наверное учитывая что пишешь уже в заранее выделенное для конфига место на диске, такой финт и для TRDOS пойдет учитывая схожесть - отсутствие FAT). Надеюсь тут я понял правильно (это было самое простое :) ), интересно только, сохраняется ли такой же подход для RSX, TSX и др..?

Да, команды SET для драйвера (кроме TT) читают нулевой и первый блок драйвера, запускают соответствующую SET-подпрограмму драйвера, и если подпрограмма завершается успешно (со сброшенным C битом), эти два блока пишутся обратно в драйвер. Сам драйвер может дополнительно поразвлекаться с I/O и читать-писать другие блоки, но это особый случай. В TSX все точно также, с той разницей, что кром всего прочего драйвер после изменения настроек перезагружается в память (все драйверы TSX резидентны в памяти). В последних версиях системы можно установить драйверу опцию NOSET, запрещающую такую перезагрузку. В RSX команды SET просто меняют соответствующие структуры драйверов, обработчик команд знает какие настройки есть для каких драйверов и это фиксировано (драйвером не управляется). Все настройки меняются для загруженного драйвера прямо в памяти. Есть возможность также менять их в образе системы (которая для 11M/M+ является образом памяти вместе со всем ее содержимым).


2. Сам по себе монитор rt11sj/fb/xm/ts не пишет в себя конфиг но у него есть некий маркер который присутствует и в драйверах которые вместе с ним идут, и вот он при загрузке проверяет все *.sys файлы на этот маркер и таким образом находит все драйвера на системном загрузочном диске. Правильно??? (Токо вот не ясно, как он может читать системный диск, драйвер которого он еше не загрузил, и сам драйвер на этом же системном диске и сидит... Всетаки видать как-то команда copy/boot пишет в boot область диска и сам монитор и драйвер системного диска сразу же с ним, так?) Ну и опять же как это же происходит в RSX TSX и т.д. подход такой же?

RT11TS не существует ;)
Слово маркер тут не совсем подходит. При сборке драйвера указываются опции системы в которой драйвер будет работать (берутся обычно из файла конфигурации системы [создается при ее геренации]). Эти опции проверяются на соответствие монитору и если не совпадают, драйвер не устанавливатся в системе. А драйвера он находит исключительно по имени - все файлы с именем XX.SYS или XXY.SYS где X - любая буква, а Y - суффикс драйвера, прописанный системе (обычно в RT-11XB/XM/ZB/ZM используется суффикс 'X'). Системный диск читается во время загрузки подпрограммой чтения, она является частью первичного загрузчика (в RT-11 он находится в самом драйвере и по команде COP/BOO пишется в нулевой блок диска), сам первичный загрузчик сообщает вторичному (который читает из блоков 2-5 диска [куда его прописывает вышеупомянутая команда]) имя драйвера, номер устройства и адрес подпрограммы чтения. Вторичный загрузчик первым грузит в самый верх (нижней) памяти драйвер системного устройства.

В RSX, как уже сказал, сам файл системы - это образ памяти вместе с драйверами, запущенными программами, резидентными библиотеками и вообще всем, что было туда загружено командами VMR и/или вообще что было в памяти на момент сохранения системы. Для RSX процесс загрузки-сохранения вещь достаточно хитрая, вроде я его описывал в соответствующей теме. В общем случае после первой загрузки, система сохраняется (память пишется на диск в образ системы), прописывается аппаратный загрузчик, который читает в память этот образ системы и... с того самого места откуда программа сохранения закончила записывать систему на диск, эта же программа и продолжает работать и выполнять все, что нужно для загрузки системы :)

Для TSX все проще: TSX (а равно и RAFOS/TS - многие почему-то считают, что в нем не так, но там все также) не имеют аппаратного загрузчика и для загрузки используют обычный RT-11. Все драйвера (указанные при генерации-модификации системы) загружаются в память. Некоторые - в верхнюю.

bigral
03.09.2014, 05:40
решил сделать загрузочным DU1: и никак не выходит, загружаюсь с HX0: потом копирую систему на DU1: (включая cop/boot:du du1:rt11sj du1:) но после BOOT DU1: получаю:



.BOOT DU1:

?BOOT-U-I/O error




000720
@

form
03.09.2014, 06:41
решил сделать загрузочным DU1: и никак не выходит, загружаюсь с HX0: потом копирую систему на DU1: (включая cop/boot:du du1:rt11sj du1:) но после BOOT DU1: получаю

отсутствует самая главная информация, показана только несущественная :) интересны как раз точные команды которые делались до этого...

также интересны версия системы, от нее ли драйвер или был просто скопирован откуда-то

имя драйвера в COP/BO не требуется указывать если оно совпадает с названием устройства

SKcorp.
03.09.2014, 10:38
решил сделать загрузочным DU1: и никак не выходит, загружаюсь с HX0: потом копирую систему на DU1: (включая cop/boot:du du1:rt11sj du1:) но после BOOT DU1: получаю:



.BOOT DU1:
?BOOT-U-I/O error
000720
@


Вроде как строка должна быть такой: cop/boot HX0:rt11sj.SYS du1:

form
03.09.2014, 10:46
Вроде как строка должна быть такой: cop/boot HX0:rt11sj.SYS du1:

Правильнее все-таки DU1:RT11SJ - это гарантирует копирование правильного загрузчика. В данном конкретном случае видимо разницы нет так как сама система копировалась с HX и монитор там тот же...

Patron
03.09.2014, 14:44
Вроде как строка должна быть такой: cop/boot HX0:rt11sj.SYS du1:Строка должна быть такой:



.COPY/BOOT DU1:RT11SJ.SYS DU1:


Чтобы вначале проверить исправность системы, собранной на DU1: - можно загрузить оттуда монитор, минуя запуск первичного загрузчика:



.BOOT DU1:RT11SJ

hobot
03.09.2014, 18:47
?BOOT-U-I/O error
Так там ошибка чтения, а не ругань, что нет загрузчика на устройстве.
Барахлит DU - это что винчестер?


Строка должна быть такой:

.COPY/BOOT DU1:RT11SJ.SYS DU1:

Вот эта команда прошла без ошибок ввода/вывода?

bigral
04.09.2014, 01:13
сначала давал команды конфига для DU:



set du5 unit=0
set du5 part=5


потом копировал систему из HX0 командой copy/sys *.* du5:
потом copy/boot du5:rt11sj du5:

пробовал c 2-мя разными DU.SYS (один от rt11 5.03 (8 блоков) один от 5.04 (7 блоков))



.dir du5:
03-Sep-2014
SL .SYS 10 28-Dec-1987 TT .SYS 2 23-Jan-1980
MX .SYS 9 15-Dec-2012 MY .SYS 3 07-Dec-1989
HX .SYS 4 17-Jan-2013 HD .SYS 3 01-Mar-2012
NL .SYS 2 27-Apr-2011 EM .SYS 4 04-Mar-2012
LD .SYS 11 27-Apr-2011 LP .SYS 2 21-Apr-1998
RT11SB.SYS 97 23-Dec-2012 RT11FB.SYS 105 23-Dec-2012
SWAP .SYS 28 31-Oct-1998 STARTS.COM 1 22-Dec-2012
BINCOM.SAV 25 31-Oct-1998 DUMP .SAV 10 31-Oct-1998
UCL .SAV 16 12-May-2009 SIPP .SAV 21 31-Oct-1998
CREF .SAV 6 31-Oct-1998 STRTFB.COM 1 26-Feb-2012
K52 .SAV 54 12-May-1999 PAT .SAV 11 31-Oct-1998
XONIX .SAV 23 01-Dec-1994 MARS .SAV 15 08-Aug-1986
MARS .DAT 2 22-Feb-2014 RESORC.SAV 35 01-Mar-2012
SRCCOM.SAV 26 31-Oct-1998 SLP .SAV 13 31-Oct-1998
KLOP .SAV 13 21-Nov-1988 STRTSB.COM 1 23-Dec-2012
SPEED .SAV 3 28-Nov-1992 MEMORY.SAV 2 03-Sep-1982
SPLIT .SAV 3 31-Oct-1998 UCL .DAT 18 12-May-2009
CPUCSR.MAC 3 19-Dec-2013 CPUCSR.SAV 2 19-Dec-2013
DAY .SAV 4 13-Apr-2013 HAND .SAV 8 08-Nov-2011
DIR .SAV 20 31-Oct-1998 PIP .SAV 30 31-Oct-1998
DUP .SAV 52 31-Oct-1998 HELP .SAV 161 31-Oct-1998
LINK .SAV 59 31-Oct-1998 LIBR .SAV 24 31-Oct-1998
IND .SAV 58 31-Oct-1998 EDIT .SAV 19 31-Oct-1998
TECO .SAV 50 31-Oct-1998 MACRO .SAV 63 21-Dec-2012
BASIC .SAV 56 12-Sep-2011 HANDLE.SAV 17 06-Sep-1991
DESS .SAV 20 04-Nov-1993 EDIK .SAV 22 20-Apr-1993
SYSMAC.SML 92 31-Oct-1998 SYSLIB.OBJ 84 31-Oct-1998
SYSTEM.MLB 148 31-Oct-1998 TETRIS.SAV 28 07-Dec-1994
DU .SYS 8 20-Dec-1985 RT11SJ.SYS 78 16-Dec-2012
58 Files, 1685 Blocks
63782 Free blocks

.copy/sys du.sys du5:
Files copied:
DK:DU.SYS to DU5:DU.SYS

.copy/boot du5:rt11sj du5:

.boot du5:rt11sj

?BOOT-U-I/O error




000720
@10000/174114 12706
010002/005723 10000
010004/005067 12746
010006/171436 340
010010/012767 12746
010012/000001 10016
010014/171432 2
010016/010300 4567
010020/004767 14
010022/177212 105737
010024/103004 177560
010026/005023 100375
010030/005023 113703
010032/005013 177562
010034/000447 207
010036/005700 105737
010040/001003 177562
010042/012700 105737
010044/177770 177564
010046/000442 100375
010050/012705 112737
010052/001674 26
010054/010046 177566
010056/012700 12700
010060/001722 1000
010062/012710 5004
010064/002400 4715
010066/110410 110324
010070/010560 5300
010072/000002 1374
010074/104375 5007
@10000G
HX 2.0 - Warm boot..

HX DSK/TTY multiplexer v2.3 2013
SL V08.00 [SW] Сторожевых С.В. 1988

RT-11SJ (Y) V05.04 G

.SE USR NOSWAP

.SE EXIT NOSWAP

.SE TT SCOPE

.LO SL

.SE SL ON

.DAY
Время Дата
00:02:52 04-Сен-2014, Четверг

.dir du5:du.sys
04-Sep-2014
DU .SYS 7 31-Jan-1998
1 Files, 7 Blocks
63783 Free blocks

.

hobot
04.09.2014, 02:44
bigral, У вас не видно монитора SJ на DU5 - устройстве вроде ?
Может в этом всё дело?

Проделайте всё то же, но правильно указав название монитора.


*** !!!!!!!!!!!!!!!!!!!!!!!! ***
Стоп! Я проглядел его в самом низу. (упс)
Но всё таки FB,SB мониторы - результат такой же - ошибка ?

form
04.09.2014, 13:37
сначала давал команды

DU в RT-11SJ так не умеет грузиться. Эта фича в 5.6 появилась.

bigral
04.09.2014, 16:29
DU в RT-11SJ так не умеет грузиться. Эта фича в 5.6 появилась.

в смысле только DU0 может быть загрузочным для rt-11 версий меньше чем 5.6?

form
04.09.2014, 16:31
в смысле только DU0 может быть загрузочным для rt-11 версий меньше чем 5.6?

С любого DU для которого номер совпадает с физическим номером, а номер раздела 0.

bigral
04.09.2014, 16:35
С любого DU для которого номер совпадает с физическим номером, а номер раздела 0.

ну т.е. то что по умолчанию в системе указанно при установке системы:

du0 => unit 0 part 0
du1 => unit 1 part 0
du<x> => unit x part 0

все они могут быть загрузочными для rt11 v5.03 v5.04

ну и если кто думает что можно например указать для DU6: UNIT=1 PART=0 и потом BOOT DU6: то это НЕ сработает, так что по сути вопроса на каждом MSCP unit-е может быть только один boot-ируемый раздел и при том он номер 0 (part=0)

SKcorp.
04.09.2014, 16:47
Так там ошибка чтения, а не ругань, что нет загрузчика на устройстве.
Барахлит DU - это что винчестер?



Да, винчестер.
http://www.pdp-11.nl/peripherals/ide-m2322k.jpg

Mixa64
17.01.2018, 02:35
Йесс, победил!

0. Делаем образ c HX из образа для эмулятора, на образе должно быть все для сборки и линковки драйвера. Желательно сделать копию образа, потом он для эмулятора станет непригоден, если эмулятор ничего про HX не знает.
1. На образ диска для simh (там DL0: ) скопировал HX.MAC, юзал тотал коммандер с плагином от Patron.
2. Собрал и слинковал его в simh, по мануалу
Сначала было это

macro/crossreference/show:meb/list hx/object
?MACRO-E-Errors detected: 1
DK:HX,LP:HX=DK:HX/C/L:MEB

.
Убрал из .DRDEF DMA=NO, оно лишнее для 5.03, собралось без ошибок

.macro/crossreference/show:meb/list hx/object

.link/map/execute:hx.sys hx

.
3. install hx
4. copy/boot:hx dl0:rt11sj dl0:
5. Пошел с этим образом в VT52.exe, и оно завелось!

Машинка вот эта (http://www.phantom.sannata.ru/forum/index.php?t=26797)