Index of /ukdwk_archive/dwkwebcomplekt/DIAMS_DWK
АРХИВНЫЙ МАТЕРИАЛ ОТ УЧ. AFZ
ПО ТЕМЕ DSM11 (ДИАМС ДВК).
источник публикация на форуме
http://zx-pk.ru/threads/26360-diams-(dsm-11)/page1.html
24.03.2016
Начинаю тему про ДИАМС.
Это отдельная операционная система со встроенным интерпретатором
собственного языка программирования, встроенной же СУБД древовидного
типа, набором утилит и прочих программ.
Оригинальное название системы - MUMPS
(сокращение от Massachusetts General Hospital Utility Multi-Programming System,
см., например, на Вики). DSM - это сокращение от Digital Standart MUMPS.
Собственно, этот проект начался именно на PDP-11, дальше была еще куча разных MUMPS'ов
на разных ЭВМ, у нас был широко известен MSM-PC (Micronetics Standart MUMPS for PC),
но, увы, MUMPS не выдержал конкуренции с современными СУБД и сошел со сцены в начале
нового века. Тем не менее, система очень интересная, однако, похоже, у меня одного
сохранился последний вариант ДИАМСа, адаптированного к нашим реалиям конца 80-х
- начала 90-х.
(Оригинальный DSM-11 я как-то нашел на просторах Сети, но он, увы, 7-bit Only,
русский к нему так просто не прикрутишь, а исходников там нет).
Так вот, у меня нашлось:
-загрузочная дискета;
-дискета с утилитами;
-две дискеты с документацией;
-несколько дискет с исходником ядра на Макро;
-еще кое-какие материалы.
К сожалению, пока есть некоторые сложности с адаптацией ДИАМСа под эмулятор
- во-первых, я очень многое забыл, во-вторых, я слегка "доадаптировал" ядро
ДИАМСа для ДВК - команда, занимавшаяся адаптацией ДИАМСа к ДВК кое-что не
довела до конца, пришлось вникнуть и доделать, но, увы, ST251, на котором
лежит все доработанное, покрылся бэдами...
Я, конечно, постепенно разберусь и восстановлю все, что надо, а пока ДИАМС
работает только с DW и MY, подключить драйвер для HD я пока не могу. Могу
выложить предварительный вариант, но пользовать его сложно...
Пока собираюсь начать выкладывать документацию. Её много - описание языка,
руководство программиста, руководство системного программиста, руководство
администратора системы, еще несколько книжек. В связи с чем возникает вопрос:
как ее выкладывать? Документация присутствует в виде размеченных текстов для
программы RNO (нечто, подобное программам DOC или MDOC, но понавороченнее)-
помечены заголовки разных уровней, абзацы и пр. вкусности, в общем, полный
набор разметки документа и в частности кое-что выделено яркостью
(аналог bold, на принтер это печаталось в три прохода).
Если такой текст отформатировать, получим довольно приличный документ, но хотелось бы сконвертить его во что-то современное, чтобы можно было еще и шрифтами поиграть и учесть особенности ПДФ-ок и лазерных принтеров.
Выложил и RNO, и отформатированный вариант.
В отформатированном, правда, так и не удалось передать символы FF,
так, что разбиения на страницы нет. Если что, на странице 61 строка.
21.04.2016
Архив DSM_IMAGE.zip содержит
Вот оригинальный DSM-11, утянул откуда-то,
недавно попробовал найти его еще раз - изба фигвам.
Увы, он работает только под SIMH, и то неважно.
С ДИАМСом-ДВК я еще разбираюсь, скоро выложу.
А этот - так, в архив, чтоб было...
26 апреля 2016
DSMBOT.DSK.zip - Образ загрузочной дискеты
(загрузочная дискета для эмулятора и живой ДВК-3)
03.05.2016
4emu.zip
DSM-FLO.zip
Итак, выкладываю ДИАМС.
Он, конечно, еще не до конца отлажен, тут и эмулятор кое-где еще колбасит,
и в ДИАМСе не все в порядке, тем не менее, уже можно выложить предварительный вариант.
Как я уже говорил, ДИАМС – это комплекс, включающий в себя операционную систему с
разделением времени, интерпретатор собственного языка программирования и СУБД.
Этот вариант ДИАМСа ставится на винчестер в качестве единственной ОС для конкретного ДВК.
Первичный комплект поставки включает две дискеты: загрузочную, с которой систему ставят
на винчестер и дискету с утилитами, которые не вошли на первую дискету.
Если ставить ДИАМС на реальный ДВК, нужен процессор ВМ3, контроллер MY с хотя бы одним
80-дорожечным дисководом и винчестер с 4 головками и 153, 306 или 614 цилиндрами.
Другие винчестеры не поддерживаются – если головок больше четырех или цилиндров больше
614, они не будут использоваться.
Это, практически, оригинальный ДИАМС-ДВК, я в нем только сделал нормальную работу
с маленькими буквами. Исходный ДИАМС был заточен на КОИ7 НС, то есть вместо маленьких
английских букв использовались большие русские; маленькие же буквы не поддерживались
вообще. Когда его стали переносить на ДВК с КЦГД и поддержкой маленьких букв,
наши орлы поступили по-своему: для больших букв оставили кодовую таблицу, как она была,
а маленькие буквы стали кодировать со старшим битом, равным единице.
То есть буква Z имеет код 132, z – 332, З – 172 и з -372.
В принципе, такое решение, вероятно, даже лучше, чем общепринятое – оно допускает
совместную работу как новых терминалов, поддерживающих и малые и большие буквы,
так и старых, только с большими буквами и 7-битным кодированием.
Однако, эти самые новые терминалы работают с КОИ7 Н0/Н1, поэтому ДИАМС перекодирует
вывод «на лету». А вот со вводом была проблема, ребята, похоже, промахнулись и не
довели перекодирование «на лету» до конца, в результате русские буквы вводились под
шифтом или под ФВР-ом (фиксированный верхний регистр, т.е. Caps Lock), а для смены
большие/маленькие надо было посылать Ctrl/N и Ctrl/O, что и изложено в документации
(см, например, RNOTE).
Для «поиграть», конечно, сойдет и так, но я-то собирался клепать на ДИАМСе
коммерческие продукты. Отдавать же клиенту коммерческий продукт с такими
правилами ввода данных с клавиатуры нельзя. Не поймут. Поэтому я, первым делом,
нашел нужное место и пропатчил это дело, чтобы ввод букв работал нормально.
Полученный ДИАМС на КЦГД работает, как часы. Да и на других терминалах с
маленькими и большими буквами. В частности, я пробовал ВТА 2000-15М.
Более того, он одновременно с этим работает и на старых терминалах с КОИ7-НС,
без каких-либо изменений в прикладных программах, просто от этих терминалов
не дождешься маленьких букв, ну и при выводе, если программа выдает маленькие
буквы, они сами собой преобразуются в большие, путём отрезания старшего бита.
В паре моих проектов использовались комплексы из ДВК-3.2 с дополнительной платой
КТЛК-6 и 7 шт. терминалов Mera СМ-7209. Шесть из них подключались в КТЛК-6, седьмой
– в порт на плате процессора. Итого, 8 рабочих мест, одно полноценное, на КЦГД,
и 7 без маленьких букв, и всё весело работало. А вот в эмуляторе оно гонит.
Впрочем, мы с Патроном уже согласовали, эмулятор будет поправлен.
Только вот, увы, и сам патч, и все материалы по нему остались на моем ST-252,
который покрылся бэдами. Однако, у меня на дискетах есть целых два бэкапа этого
патченного ДИАМСа, сделанные программой BUP. Но увы, один из них какой-то кривой,
а от второго нет последней дискеты. Восстановленный с них ДИАМС загружаться, увы,
не захотел. Тем не менее, после долгих плясок с бубном, мне таки удалось добыть
тот самый патч и пропатчить оригинальный ДИАМС, который ко мне попал на дискетах.
Заодно пропатчил Y2k.
Выкладываю два архива: один – это файл-образы двух дискет с ДИАМСом,
второй – файл-образ винчестера с установленным ДИАМСом для эмулятора,
там же вариант конфига эмулятора со вторым терминалом – можно поразвлекаться
с многотерминальным (двух-, в общем-то) доступом.
- - - Добавлено - - -
В ДИАМСе нет привычных многоуровневых оглавлений - все-таки это достаточно
старая система. Вместо этого есть набор одноуровневых оглавлений или, вернее,
отдельных изолированных пространств, в которых все и хранится. Предполагается
(но не обязательно) что каждое такое пространство предназначено для отдельного
блока задач, имеющего общие данные. Доступ к такому пространству происходит
по его коду идентификации пользователя (КИП), в оригинале
- User Code Identification - UCI.
Все КИПы в системе обозначаются тремя английскими буквами.
Первым делом в системе надо зарегистрироваться.
Для этого давим Enter или Ctrl/C, ДИАМС говорит:
Код:
ДВК 3.2 ДИАМС 3.3 ТЕРМИНАЛ #1 КИП:
При регистрации можно либо запустить конкретную программу,
либо войти в систему в режиме программиста. Поэтому, когда
ДИАМС спрашивает КИП, надо ввести не только КИП, но и
(через двоеточие) имя программы, которую надо запустить,
либо код доступа программиста. Система для "попробовать",
установленная на выложенный файл-образ винчестера (архив 4EMU)
имеет два КИПа. Первый, системный, MGR (ManaGeR) есть на любой
системе ДИАМС, второй я сгенерил "на попробовать", TST.
В системный пока входить не будем, чтобы случайно не наломать дров,
а вот в тестовый попробуем зайти. Итак, запустили загрузку с DW,
поправили дату, набрали время, на все остальные вопросы нажали
просто Enter и, наконец видим сообщение:
Код:
*** Система ДВК 3.2 ДИАМС 3.3 <1> загружена и работает ***
ВЫХОД
Давим Enter и на запрос КИПа набираем:
Код:
TST:SYS
Здесь TST - КИП, SYS - код доступа программиста (КДП).
ДИАМС отвечает нам приглашением ">" Все. Можно подавать команды ДИАМСа.
Да, ДИАМС не имеет команд по типу обычных операционок, вроде DIR, COPY,
PRINT и т.п. Зато ему в командной строке можно набирать любые команды
языка ДИАМС, он их будет интерпретировать в командном режиме. Чаще всего
в командном режиме подают команду DO с указанием имени программы, которую
следует выполнить. И все функции, привычные для обычных ОС, здесь тоже
выполняются библиобечными программами-утилитами. Допустим, чтобы получить
список доступных программ, следует подать команду
Код:
D ^%RD
(D - сокращение от DO, ^ указывает, что перед выполнением программу нужно загрузить с диска, % - признак библиотечной программы и RD - сокращение от Routine Directory) Полный список программ-утилит и библиотечных программ присутствует в руководстве программиста и руководстве системного программиста.
- - - Добавлено - - -
Немного о языке. Язык ДИАМС - интерпретируемый. И, учитывая,
что в нем есть команды, предписывающие исполнить данные,
как программу, предварительная компиляция кго невозможна.
Тем не менее, интерпретатор очень быстрый. Я лично наблюдал и
СМ-4, и1420 без кэша, и ДВК с ВМ3, которые весело обслуживали
4-8 рабочих мест бухгалтеров, учетчиков и пр., без малейших тормозов.
Ну, конечно, когда, допустим, пускали расчет зарплаты по предприятию
с полутысячей работников, оно задумывалось надолго
(1420 с кэшем считала минут 5-7, а когда кэш сдох и его отключили,
стала считать чуть ли не два часа. Впрочем, про минуты я уже не
совсем уверен, давно было. Зато про два часа помню хорошо).
Тем не менее, на остальных рабочих местах в это время вполне можно
было работать дальше. Так вот. У этого языка один-единственный тип
данных - строка. Если требуется число, оно представляется строкой цифр.
В языке имеются переменные и массивы, т.е. переменные с индексами.
Массивы в ДИАМСе всегда разреженные, то есть хранятся только те элементы,
которые были определены; элементы массивов, которым значения не присваивались,
не существуют и места не занимают. Кроме обычных переменных и массивов
(они называются локальными), существуют и глобальные переменные и массивы.
Локальные переменные и массивы создаются в оперативной памяти раздела,
по окончании задачи они, как и везде, уничтожаются. А вот глобальные
переменные и массивы создаются и хранятся на диске, и к задаче напрямую
не привязаны, задача закончилась, а глобальные данные остались,
запусти ее снова (или запусти другую задачу, работающую с этими данными),
ДИАМС достанет эти данные с диска, и вперед, работайте дальше.
Собственно, эти глобальные массивы и есть база данных ДИАМСа.
Если работа на каком-то терминале в режиме программиста закончена, его надо закрыть. (Если терминал запускался не в режиме программиста, а в режиме прикладной задачи, по окончании этой задачи он закроется сам.) Закрытие терминала и выход из режима программиста происходит по команде HALT (H). Ее же положено использовать для перехода из КИПа в КИП.
Если работа закончена на всех терминалах и пора выключать ЭВМ, то систему следует закрыть, чтобы она досохранила все, что положено, включая сброс дисковых кэшей. Для этого надо выйти из того КИПа, где вы работали (командой H) и войти в КИП MGR, где подать команду
Код:
D ^SSD
(т.е. загрузить с диска и выполнить программу System ShutDown). Она может попросить подождать (сброс кэшей), затем спросит, что делать, даем ей троечку, и она сообщает : ЭВМ готова к останову. Все, можно выключать (закрывать эмулятор).
05.05.2016
А теперь немного для тех, кто вдруг соберётся попробовать программировать в старом стиле, на ДИАМСе.
Порог для вхождения в программирование на ДИАМСе настолько невысок, что можно считать, что его нет вообще. Имеешь понятие о ветвлении, циклах и массивах? Все. Можешь программировать на ДИАМСе. Никаких объявлений, описаний, деклараций и т.п. Локальная переменная появляется в тот момент, когда ей впервые присваивается значение и существует до тех пор, пока ее не убьют командой KILL или не выйдут из раздела, где она создана, командой HALT. Глобальная переменная не исчезает и после HALT'а, и после выключения машинки, а вот появиться может и до первого присвоения - если планируется и заранее оптимизируется новая большая база данных, то существуют утилиты, создающие заданные глобальные переменные с заданными параметрами расположения их на дисках для оптимизации дальнейшей с ними работы. Но это уже высший пилотаж, а так, делаем по-простому...
Да, я тут совершенно напрасно противопоставил переменные и массивы. На самом деле для ДИАМСа переменных, как таковых не существует. Есть только массивы, т.е. переменные с индексами. Причем индексов может быть любое количество - логических ограничений нет, физические - длина записи названия этой переменной вместе с индексами и скобками не должна превышать 120 символов. Причем всё это рассматривается как дерево. Корень дерева - сама переменная без индексов (формально - с отсутствующими индексами). Она же, но с одним индексом - первый уровень дерева, с двумя - второй, и т.д., логических ограничений на число уровней нет. Всё это справедливо как для локальных, так и для глобальных переменных (массивов).
Индексами могут быть как числа, так и произвольные строки символов. Доступ к соответствующему узлу производится путем указания имени переменной и полного списка индексов (в скобках, через запятую). Кроме того возможен лексикографический просмотр массива последовательно - есть функции, которые по заданному значению индексов находят предыдущий и последующий элемент массива (в числовом или алфавитно-цифровом порядке следования).
Глобальную переменную от локальной отличает наличие значка "^" перед ее названием. То есть VAR - локальная переменная, ^VAR - глобальная, причем в программе можно одновременно использовать и ту, и другую. В принципе, никто не запрещает иметь множество простых глобальных переменных (без индексов), но обычно, так не делают, поскольку при слишком большом их количестве начинаются тормоза, да и трудно в этом разобраться. Обычно, база данных делается в виде одного глобального массива (реже - нескольких).
Физически доступ к элементам таких массивов делается с помощью сбалансированных B-деревьев (см., например, у Кнута), но все это спрятано в ядре и мы просто имеем быстрый доступ к любому элементу и быструю вставку в произвольное место новых элементов без каких-либо ограничений.
А теперь программируем. Загружаем в эмуляторе ДИАМС и входим в КИП TST (на вопрос ДВК 3.2 ДИАМС 3.3 <1> КИП: набираем TST:SYS и давим Enter). Повторюсь, этот КИП я сделал специально, для "поиграть".
ДИАМС - интерпретатор. Ему непосредственно можно подать любую команду (цепочку команд) и он всё это выполнит. Например, наберем
Код:
W 12345679*9
(без восьмерки). ДИАМС посчитает набранное выражение 12345679*9 и выдаст результат 111111111. Или (классика) W "Hello, world!". Но это непосредственное исполнение кода интерпретатором. Для того, чтобы получить программу на ДИАМСе, надо запомнить эту команду (набор команд) в программном буфере, который выделяется системой в нашем разделе.
Интерпретатор определяет, что делать с полученной строкой по наличию в ней символа горизонтальной табуляци <ГТ> (кнопка Tab). Если набрать метку, нажать Tab и набрать команду (цепочку команд), то эту набранную строку ДИАМС запомнит в программном буфере, а не станет выполнять. Метка, естественно, необязательна, на нее можно ссылаться в командах GOTO, DO (выполнить кусок программы с определенной метки, как подпрограмму) и еще кое-где, но об этом потом. Можно следом набрать вторую строку программы, и т.д., строки будут последовательно запоминаться в порядке их набора.
Выпонить набранную таким образом программу можно, подав команду
Код:
D <первая метка>
Можно сохранить ее на диске, подав команду
Код:
ZS <имя для программы>
Итак, напишем программу HELLO
Код:
HELLO; Hello world for DSM-11 ; 05-APR-16
W !,"Hello world",!
Q
ZS HELLO
Первые три строчки - собственно программа, последняя - команда сохранить ее под именем HELLO. Теперь можно ее запустить. Подаем команду
Код:
D ^HELLO
и наблюдаем на экране результат.
Понятно, что набирать программу просто так, учитывая, что из всех средств редактирования работает только "забой", удовольствие существенно ниже среднего. Поэтому существует несколько редакторов программ. Самый удачный из них запускается из глобальной переменной %Z Для его запуска нужно загрузить программу в раздел командой ZL и запустить этот редактор командой XECUTE, т е подать команду
Код:
X ^%Z
Подсказку можно вызвать, нажав клавишу . Да, некоторые клавиши редактора не очень удобны, да, пока еще работа с русскими буквами сильно хромает, и вообще иногда этот редактор колбасит по-тяжелому, но все это, со временем пофиксим. Кстати, если вдруг в редакторечто-то сильно испортится, можно выйти без записи - сейчас выход из редактора - Ctrl/Y, он спрашивает "Записываем ?", можно ответить Y - да, N - нет и "-" (минус) - выйти и очистить буфер. Если же выйти по N, то, при попытке повторного редактирования этой программы, редактор предложит "Вариант из буфера" и, если согласиться, можно будет продолжить редактирование с прерванного места. Обычно это делают при взобновлении подачи электричества...
Так, что для ввода новой программы вводим ее первую строчку, сохраняем ее командой ZS, просматриваем, что у нас вышло командой P, после чего набираем: ZL <имя> X ^%Z и остальной набор делаем в редакторе.
Я его (редактор) в свое время основательно пофиксил именно из расчета под ДВК, но увы, я уже говорил про покрытый бэдами винт. Из бэкапа оно, тоже не достается, так, что здесь представлен оригинал от Ушакова, Османова и др. из питерской команды, у которых основными терминалами были какие-то СМ-овские, а ДВК - так, между делом.
Лежащий в архиве 4EMU.zip конфиг DSM.CFG для эмулятора имеет настройку для второго терминала - вкладка TRM2. На этом "терминале" тоже можно зарегистрироваться (войти в тот же КИП TST) и делать что-то еще, например, просматривать хелп по системе и языку - запускается командой D ^%HELP
- - - Добавлено - - -
Еще несколько замечаний по программированию.
Все команды, кроме тех, что начинаются с буквы Z можно сокращать до одной буквы (с точки зрения быстродействия - не только можно, но и нужно). Команды, начинающиеся с Z сокращают до двух букв. То же относится и к функциям, и к системным переменным.
О пробелах. Команда от ее операндов отделяется строго одним пробелом. Если в одной строке несколько команд, их тоже разделяют пробелами, одним или несколькими, но, чтобы не путаться, обычно, тоже ставят один пробел. Если по ошибке между командой и ее параметрами поставить не один пробел, а два или больше, то первый пробел будет воспринят, как и положено, в качестве разделителя между кодом команды и параметрами, а второй (и последующие) будет воспринят, как разделитель между (отсутствующими) параметрами этой и началом следующей команды. Следите за этим внимательно.
О буквах. ДИАМС использует в качестве основной кодовую таблицу КОИ7-НС (набор совмещенный), где маленькие буквы стандартного 7-битного ASCII заменены большими русскими буквами. Маленькие буквы кодируются так же, как и большие, но с добавлением единичного 8-го бита. Оригинальный же DSM-11 строго 7-битный, наши добавили ему возможность работы с 8-битными символами, но все символы с 8-м битом, равным единице, считаются печатными символами без специального значения, то есть это не буквы, не цифры и не специальные знаки, используемые в каком-либо качестве (разделителей, знаков операций и т.п.), они только хранятся (в том числе и в качестве индексов глобальных переменных), печатаются и все.
Имя переменной в DSM-11 может содержать как большие, так и маленькие буквы, естественно, английские. Учитывая, что у нас в кодовой таблице вместо маленьких английских стоят большие русские, теоретически, их тоже можно использовать, но не все, а только те, которые имеют коды от 97 до 122 (А-З, восьмеричные коды 141-172). Чтобы не ошибиться, да и вдруг придется переносить код из этого ДИАМСа в какой-нибудь другой (тот же MSM-PC, допустим), в общем, лучше этой возможностью не пользоваться, имена переменных надежнее писать строго большими английскими буквами.
Метка может иметь в длину до 8 символов. Метки (да и имена переменных) могут включать символ процента "%", обычно, первым символом. Метка, кроме этого, может быть цифровой (числом). Процент включают, обычно, во что-то, относящееся к системным делам. Многие системные программы возвращают результаты в переменных, начинающихся с процента. Убейте все локальные переменные, которые вдруг кто-то бросил (командой K без параметров) и подайте, например, команду
Код:
D %CDS^%H
(выполнить программу %H с метки %CDS), после чего подайте команду WRITE, тоже без параметров (просто нажмите по очереди W и Enter) и получите список дат в разных вариантах, причем переменная %DT - это входная для этой программы, если ее установить заранее, то будет преобразована дата, заданная этой переменной и только если ее не будет, программа возьмет системную дату.
В общем, в ДИАМСе много всякого разного и интересного,
одних руководств не одна сотня страниц. Если, вдруг,
кого-то заинтересует, всегда готов подсказать.
10.05.2016
Выкладываю еще один диск с утилитами, проверенный.
Метка ДИАМСа - PPP, комментарий к нему - "Инструментарий".
На этом с программами на ДИАМСе все. Итого 3 дискеты:
выложенные в прошлой порции FLP - загрузка + первичный набор утилит,
UTI - основной набор утилит, то, что не вошло на FLP и сегодняшняя выкладка,
PPP - инструментарий.
У меня осталось два диска документации, приведу в чувство - выложу,
и три диска - текст ядра на Макро, плюс небольшой набор программ
на ДИАМСе для работы с этим ядром, его тоже вскорости выложу.
Осталось разобраться с ДИАМСом в виде файла на диске RT-11,
это тоже почти готово, скоро выложу.
12.05.2016
DSMDOC2.ZIP добавлен
http://zx-pk.ru/threads/26360-diams-(dsm-11).html?p=870714&viewfull=1#post870714
Ладно, выкладываю документацию в оригинале. Архив содержит образы двух дискет -
DSMD11N.DSK и DSMD12N.DSK, это монтируемые тома ДИАМСа, на них содержатся
глобальные массивы с документацией (КИП DOC), на первой, кроме того есть чуток
программ (КИП MGR), но эти же программы есть и на дискетах с утилитами,
не сравнивал, ИМХО это одно и то же.
Кстати, я уже спрашивал, как бы эти .RNO сконвертировать во что-то писюшное,
чтобы в итоге сделать ПДФ-ку, а в ответ - тишина... Может есть какой формат
попроще, чтобы можно было с разумными трудозатратами написать конвертер?
На ДИАМСе написать любую обработку текстов - как два байта переслать...
- - - Добавлено - - -
Да, забыл сказать. Для форматирования RNO-шных документов программой %RNOFMT
стандартного ДИАМСовского раздела 8К не хватает, я, форматируя документы,
запускал ее в разделе 16К.
Еще момент. Если заняться форматированием всех документов, то лучше создать
отдельный КИП (по аналогии с DOC'ом RT-11 его можно назвать DPR), копировать
туда по одному документы в RNO, там их форматить, после чего грохать там исходник,
чтобы в DPR остались только форматированные тексты. Если таки найдется вариант
конвертирования в ПДФ, я все это, конечно, проделаю сам...
23.05.2016
И, наконец, ДИАМС в файле RT-11. В оригинале ДИАМС ставился с начала
винчестера в качестве единственной ОС на этом винчестере. Меня такой
вариант не устраивал, мне, кроме ДИАМСа, была нужна RT-11, а ставить
второй ДВК не хватало места на столе и в комнате. Переставлять винчестер
в единственном ДВК тоже не дело, поэтому, поразглядывав исходники ядра,
я затолкал ДИАМС в файл .DSK RT-11. Нашел место, где вычисляется дисковый адрес,
пропатчил его на предмет смещения от начала диска и сочинил пару программок под RT-11,
одна - для инсталляции ДИАМСа, вторая - для загрузки его из файла RT-11.
Эту версию гонять под эмулятором смысла не имеет - у эмулятора "винчестеры"
переключаются парой-тройкой кликов мышки. А вот на реальном ДВК - вполне.
Да, это примерно так же, как и с TSX. Из RT-11 запускается стартер,
который запускает новую ОС, полностью замещая в памяти RT-11, от которой
не остается ничего. Правда, в отличие от TSX, ДИАМС не имеет доступа к
винчестеру за пределами отведенного для него места. Ну, и еще, TSX после
закрытия загружает ту RT-11, из которой ее загрузили, а ДИАМС этого не умеет
- он просто выдает на терминал "ЭВМ готова к останову", дальше - руками.
Для установки необходимо подготовить дискету из файл-образа RDSMBOOT.DSK,
убедиться в наличии на винчестере необходимого свободного пространства
одним куском (9600 или 19200 блоков, если что - сжать DW) и запустить в RT-11
программу DSMINS.SAV. Она не принимает командной строки (на запрос "#" следует
ответить Enter'ом, это от Си), а ведет диалог - спрашивает параметры винчестера
и имя для будущего DSK-файла, после чего генерит командный файл для простого KMON'а,
который создаст .DSK-файл для ДИАМСа и выполнит установку с этой дискеты в
свежесозданный файл.
Запускаем ДИАМС командой @DSM (командный файл прилагается, только если вы
выберете для .DSK-файла имя, отличное от DSM11.DSK, его (DSM.COM) надо подправить.
Да, предполагается, что система загружена с винчестера. И, почему-то, этот ДИАМС
не хочет загружаться из-под RT-11 V5.07, почему - не вникал. У меня рабочей была
RT11DS.SYS (SJ V5.01), и из нее, и из 5.0 все было без вопросов.
На этом заканчиваются выкладки ДИАМСа - я выложил все, что ко мне попало,
плюс чуток материалов собственной разработки.
- - - Добавлено - - -
Да, по поводу нестандартных для ДВК винчестеров -
с числом головок не равным 4 и более 32М.
Есть два драйвера для RT-11, оба разделяют один
физический винчестер на несколько устройств
DW: (DW0:, DW1:...), но один делит из по головкам,
второй - по цилиндрам. Так вот, с тем, который делит
винчестер по головкам, этот ДИАМС работать не будет.
А с тем, который делит винчестер по цилиндрам - все в порядке,
у меня оно весело работало на ST251,
DW0 - цилиндры 0-409,
DW1 - цилиндры 410-819, 6 головок.
Вопрос программы DSMINS.SAV
про начало DWn: именно про это, на единственном DW0 даем ноль,
а для DW1 я на своем ST251 указывал 410