Просмотр полной версии : создание RT-11 DSK c HX protocol driver-ом
Расскажите как создать DSK образ системы RT-11 (из DEC дистрибутива желательно) чтобы его можно было использовать с чудесным эмулятором VT52 и HX виртуальными дисками. Ато пытался грузить разные уже выложенные DSK на оригинальной связке - KDJ11-AA + DLV11-J и обнаружил что загрузка "зависает" после надписи HX multipexer-a.
Вместе с эмулятором VT52 есть образы с HX загрузкой.
пытался грузить разные уже выложенные 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 при загрузке через такой порт приведёт к зависанию загрузки.
Патрону,
У меня работает только HXsys54.DSK на реальном ДВК. 57 один раз только загрузился и всё.
А что за конфигурация OpenVMS? Какой там пароль?
А что за конфигурация OpenVMS? Какой там пароль?
Насколько я понимаю, это вход на ноду BOPOHA из HECnet (http://pdp-11.org.ru/hecnet.html). Пароля там не должно быть - просто пользователь GUEST :)
хочу вернуться к теме создания загрузочных образов 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 :) или реестра)
где ж хранится конфигурация загружаемых драйверов?В самом файле драйвера.
При выполнении команды 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=<десятичное значение>
.
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 вы не ограничены размером с дискету, там можно гораздо большей ёмкости иметь системный образ).
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 файлы.
фух... ниче себе!
Давайте все по порядку. Из описанных методов:
1. Драйвер может свои настройки сохранять не во внешний конфиг-файл а прямо в самого себя (актуально наверное учитывая что пишешь уже в заранее выделенное для конфига место на диске, такой финт и для TRDOS пойдет учитывая схожесть - отсутствие FAT). Надеюсь тут я понял правильно (это было самое простое :) ), интересно только, сохраняется ли такой же подход для RSX, TSX и др..?
2. Сам по себе монитор rt11sj/fb/xm/ts не пишет в себя конфиг но у него есть некий маркер который присутствует и в драйверах которые вместе с ним идут, и вот он при загрузке проверяет все *.sys файлы на этот маркер и таким образом находит все драйвера на системном загрузочном диске. Правильно??? (Токо вот не ясно, как он может читать системный диск, драйвер которого он еше не загрузил, и сам драйвер на этом же системном диске и сидит... Всетаки видать как-то команда copy/boot пишет в boot область диска и сам монитор и драйвер системного диска сразу же с ним, так?) Ну и опять же как это же происходит в RSX TSX и т.д. подход такой же?
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. Все драйвера (указанные при генерации-модификации системы) загружаются в память. Некоторые - в верхнюю.
решил сделать загрузочным DU1: и никак не выходит, загружаюсь с HX0: потом копирую систему на DU1: (включая cop/boot:du du1:rt11sj du1:) но после BOOT DU1: получаю:
.BOOT DU1:
?BOOT-U-I/O error
000720
@
решил сделать загрузочным DU1: и никак не выходит, загружаюсь с HX0: потом копирую систему на DU1: (включая cop/boot:du du1:rt11sj du1:) но после BOOT DU1: получаю
отсутствует самая главная информация, показана только несущественная :) интересны как раз точные команды которые делались до этого...
также интересны версия системы, от нее ли драйвер или был просто скопирован откуда-то
имя драйвера в COP/BO не требуется указывать если оно совпадает с названием устройства
решил сделать загрузочным 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:
Вроде как строка должна быть такой: cop/boot HX0:rt11sj.SYS du1:
Правильнее все-таки DU1:RT11SJ - это гарантирует копирование правильного загрузчика. В данном конкретном случае видимо разницы нет так как сама система копировалась с HX и монитор там тот же...
Вроде как строка должна быть такой: cop/boot HX0:rt11sj.SYS du1:Строка должна быть такой:
.COPY/BOOT DU1:RT11SJ.SYS DU1:
Чтобы вначале проверить исправность системы, собранной на DU1: - можно загрузить оттуда монитор, минуя запуск первичного загрузчика:
.BOOT DU1:RT11SJ
?BOOT-U-I/O error
Так там ошибка чтения, а не ругань, что нет загрузчика на устройстве.
Барахлит DU - это что винчестер?
Строка должна быть такой:
.COPY/BOOT DU1:RT11SJ.SYS DU1:
Вот эта команда прошла без ошибок ввода/вывода?
сначала давал команды конфига для 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
.
bigral, У вас не видно монитора SJ на DU5 - устройстве вроде ?
Может в этом всё дело?
Проделайте всё то же, но правильно указав название монитора.
*** !!!!!!!!!!!!!!!!!!!!!!!! ***
Стоп! Я проглядел его в самом низу. (упс)
Но всё таки FB,SB мониторы - результат такой же - ошибка ?
сначала давал команды
DU в RT-11SJ так не умеет грузиться. Эта фича в 5.6 появилась.
DU в RT-11SJ так не умеет грузиться. Эта фича в 5.6 появилась.
в смысле только DU0 может быть загрузочным для rt-11 версий меньше чем 5.6?
в смысле только DU0 может быть загрузочным для rt-11 версий меньше чем 5.6?
С любого DU для которого номер совпадает с физическим номером, а номер раздела 0.
С любого 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)
Так там ошибка чтения, а не ругань, что нет загрузчика на устройстве.
Барахлит DU - это что винчестер?
Да, винчестер.
http://www.pdp-11.nl/peripherals/ide-m2322k.jpg
Йесс, победил!
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)
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot