Вход

Просмотр полной версии : ДИАМС (DSM-11)



AFZ
24.03.2016, 09:43
Начинаю тему про ДИАМС.

Это отдельная операционная система со встроенным интерпретатором собственного языка программирования, встроенной же СУБД древовидного типа, набором утилит и прочих программ. Оригинальное название системы - 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 строка.

anasana
24.03.2016, 12:35
Что бы были исходники док в .RNO это очень интересно.
Я так понимаю они хранятся в DSMDOC1.DSM и DSMDOC2.DSM? Только как их извлечь?
И вдруг если у кого-то есть описание тегов разметки этого формата, большинство там понятные, а у некоторых похоже есть нюансы.
p.s. Для ПРОС Э-85 возможно это откроет ПО "Оформитель текстовых документов V3.01", и ещё был некий "runoff.tsk", тоже пойдёт для экспериментов.

AFZ
24.03.2016, 23:31
Я так понимаю они хранятся в DSMDOC1.DSM и DSMDOC2.DSM? Только как их извлечь? Запустить Диамс, а дальше - пляски с бубном, ибо ДИАМС из всего, пригодного для записи файлов, понимает только МЛ. На всех дисках у него сугубо свой формат и чужих он не знает.


И вдруг если у кого-то есть описание тегов разметки этого формата, большинство там понятные, а у некоторых похоже есть нюансы. Сейчас выложу в "поиске файлов" вариант RNO для RT-11, вроде-бы с документацией.

- - - Добавлено - - -


Выложил и RNO, и отформатированный вариант. Ладно, еще пара слов о ДИАМСе. Все мы знаем основные операционки PDP-11: RT-11, RSX-11 и Unix. Зайди в любой ВУЗ или научное учреждение - вон оно, стоит какой-то из наших клонов PDP-11 с одной из названных ОС.

А зайди на производство? Если там окажется СМ-ка (а их с ЕС-ками раздавали примерно пополам), то почти наверняка она работает в АСУ под ДИАМСом. Складской учет, учет продукции, бухгалтерия, зарплата... Сама СМ-ка стоит на ВЦ, а вот терминалы от нее разбросаны по всей территории. В бухгалтерии, на складе, в цеху, еще где-то... И ни одной такой СМ-ки в музеи не попало: они работали до последнего, потом с них слили на писюки все данные вместе с программами, АСУ стала работать дальше, а машинку - на драгмет.

Машинки, в общем-то, с довольно скромными параметрами (что такое 1 млн коротких операций в секунду или 248К памяти?) вполне справлялись с несколькими терминалами, весело обслуживали базы данных с сотнями тысяч записей и не жужжали. То есть, конечно, жужжали, но только вентиляторами... :)

hobot
25.03.2016, 01:05
Выложил и RNO, и отформатированный вариант.
Начал собирать в сторонку все архивы из темы и смежные (RNO) и впитывать информацию,
однозначно при добавлении в архив буду использовать ваш текст и ссылку на эту тему как
на первоисточник (авторскую публикацию).

AFZ
20.04.2016, 08:54
Вот оригинальный DSM-11, утянул откуда-то, недавно попробовал найти его еще раз - изба фигвам. Увы, он работает только под SIMH, и то неважно. С ДИАМСом-ДВК я еще разбираюсь, скоро выложу. А этот - так, в архив, чтоб было... Заодно Патрону вопрос задам, в теме про эмулятор.

AFZ
03.05.2016, 23:00
Итак, выкладываю ДИАМС.

Он, конечно, еще не до конца отлажен, тут и эмулятор кое-где еще колбасит, и в ДИАМСе не все в порядке, тем не менее, уже можно выложить предварительный вариант.
Как я уже говорил, ДИАМС – это комплекс, включающий в себя операционную систему с разделением времени, интерпретатор собственного языка программирования и СУБД.

Этот вариант ДИАМСа ставится на винчестер в качестве единственной ОС для конкретного ДВК. Первичный комплект поставки включает две дискеты: загрузочную, с которой систему ставят на винчестер и дискету с утилитами, которые не вошли на первую дискету. Если ставить ДИАМС на реальный ДВК, нужен процессор ВМ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). Она может попросить подождать (сброс кэшей), затем спросит, что делать, даем ей троечку, и она сообщает : ЭВМ готова к останову. Все, можно выключать (закрывать эмулятор).

anasana
04.05.2016, 09:56
А как и где Вы компилируете исходники? Это всё что на дискетах DSMMAC1.RT и DSMMAC2.RT?
Там при сборке есть возможность подключить поддержку особенностей МС-0585.
(E85$$$=0 ;ДЛЯ ЭЛЕКТРОНИКИ-85).

AFZ
04.05.2016, 14:39
А как и где Вы компилируете исходники? Никак и нигде. Увы, исходники несвежие. У них там есть (в смысле был) свой мини-ассемблер, на ДИАМСе, которым генерятся небольшие патчи для ядра, так вот, ядро основательно пропатчено, а в исходниках этого нет. Исходников патчей тоже нет.


Там при сборке есть возможность подключить поддержку особенностей МС-0585.
(E85$$$=0 ;ДЛЯ ЭЛЕКТРОНИКИ-85). Это только кажется. Те ребята из Питера где-то добыли исходник недоделанного ядра для 85-й, вернее кусочков, которыми стандартное ядро DSM-11 переделывалось в 85-е (конкретно - место, где находится драйвер винчестера, заодно отключили возможность использования других дисковых контроллеров), и использовали их для переделки под ДВК. Они свою работу до конца довели, хоть и не внесли исправления в исходник - так, драйвера MY в исходниках нет вообще, его целиком внесли из патча на ДИАМСовском мини-ассемблере. А вот воронежцы, которые занимались ДИАМСом для 85-й, вроде-бы, не успели до окончательного развала. В общем, если что-то и есть, искать надо в Воронеже, а тот исходник для этого никак не годится.

Я, в принципе, планирую его (исходник) поковырять, если будет время. Может и удастся скомпилировать новое ядро, но когда это будет - не знаю. Только, по-любому, оно не будет 85-м, там просто нет самой важной 85-й фенечки - обслуживания дисплея.

- - - Добавлено - - -

Отсюда, кстати, и задержка с поддержкой HD, которую я поначалу, не подумав, пообещал. У ДИАМСа нет отдельных драйверов дисков, программа работы с их аппаратурой, по-простому, вписана в ядро, примерно в середине. Чтобы что-то исправить, надо или добиться компиляции ядра, т.е. найти, раздизасмить и внести в исходник все патчи, или найти место и внести еще один патч - с поддержкой нового типа дисков. Я, пока, к этому не готов. Может со временем получится...

AFZ
05.05.2016, 10:50
А теперь немного для тех, кто вдруг соберётся попробовать программировать в старом стиле, на ДИАМСе.

Порог для вхождения в программирование на ДИАМСе настолько невысок, что можно считать, что его нет вообще. Имеешь понятие о ветвлении, циклах и массивах? Все. Можешь программировать на ДИАМСе. Никаких объявлений, описаний, деклараций и т.п. Локальная переменная появляется в тот момент, когда ей впервые присваивается значение и существует до тех пор, пока ее не убьют командой 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<Tab>; Hello world for DSM-11 ; 05-APR-16
<Tab>W !,"Hello world",!
<Tab>Q
ZS HELLO Первые три строчки - собственно программа, последняя - команда сохранить ее под именем HELLO. Теперь можно ее запустить. Подаем команду
D ^HELLO и наблюдаем на экране результат.

Понятно, что набирать программу просто так, учитывая, что из всех средств редактирования работает только "забой", удовольствие существенно ниже среднего. Поэтому существует несколько редакторов программ. Самый удачный из них запускается из глобальной переменной %Z Для его запуска нужно загрузить программу в раздел командой ZL и запустить этот редактор командой XECUTE, т е подать команду
X ^%Z Подсказку можно вызвать, нажав клавишу <End>. Да, некоторые клавиши редактора не очень удобны, да, пока еще работа с русскими буквами сильно хромает, и вообще иногда этот редактор колбасит по-тяжелому, но все это, со временем пофиксим. Кстати, если вдруг в редакторечто-то сильно испортится, можно выйти без записи - сейчас выход из редактора - 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 - это входная для этой программы, если ее установить заранее, то будет преобразована дата, заданная этой переменной и только если ее не будет, программа возьмет системную дату.

В общем, в ДИАМСе много всякого разного и интересного, одних руководств не одна сотня страниц. Если, вдруг, кого-то заинтересует, всегда готов подсказать.

SuperMax
09.05.2016, 19:52
да, кстати у меня лежит какая-то сборка ДИАМС (http://forum.maxiol.com/index.php?showtopic=4747)

hobot
09.05.2016, 21:17
а, кстати у меня лежит какая-то сборка
http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/Dsm11/

остальные материалы по теме ДИАМС из этой темы (и из темы эмулятора ДВК) пока
коплю с авторскими шпаргалками от AFZ в локальной папке у себя, с целью залить
в архив со временем.

http://storage3.static.itmages.ru/i/16/0509/s_1462817852_7979690_aed8548e88.png (http://itmages.ru/image/view/4247874/aed8548e)

AFZ
10.05.2016, 09:45
да, кстати у меня лежит какая-то сборка ДИАМС Это, похоже, то, что я выкладывал в Фидо. В смысле, выкладывал на один знакомый ФТП, а объявление со ссылкой на него делал в Фидо.

hobot, а программировать не пробовал? :)

- - - Добавлено - - -

Выкладываю еще один диск с утилитами, проверенный. Метка ДИАМСа - PPP, комментарий к нему - "Инструментарий". На этом с программами на ДИАМСе все. Итого 3 дискеты: выложенные в прошлой порции FLP - загрузка + первичный набор утилит, UTI - основной набор утилит, то, что не вошло на FLP и сегодняшняя выкладка, PPP - инструментарий.

У меня осталось два диска документации, приведу в чувство - выложу, и три диска - текст ядра на Макро, плюс небольшой набор программ на ДИАМСе для работы с этим ядром, его тоже вскорости выложу.

Осталось разобраться с ДИАМСом в виде файла на диске RT-11, это тоже почти готово, скоро выложу.

hobot
10.05.2016, 17:12
hobot, а программировать не пробовал?
приятно когда в тебя верят! ))) ДИАМС пока у меня даже не на уровне освоения,
я пока в шпаргалки не вникал, у меня просто период накопления образов и текста с датами публикаций.
Дождусь анонсированной документации и остального + конечно параллельно к образам прилагаются ваши авторские описания+
что бы прочно прилепить к архиву в раздел ДВКашек.

AFZ
12.05.2016, 06:43
приятно когда в тебя верят!Угу. И надеются. Я, в частности, надеялся на твое любопытство. :)

Ладно, выкладываю документацию в оригинале. Архив содержит образы двух дискет - DSMD11N.DSK и DSMD12N.DSK, это монтируемые тома ДИАМСа, на них содержатся глобальные массивы с документацией (КИП DOC), на первой, кроме того есть чуток программ (КИП MGR), но эти же программы есть и на дискетах с утилитами, не сравнивал, ИМХО это одно и то же.

Кстати, я уже спрашивал, как бы эти .RNO сконвертировать во что-то писюшное, чтобы в итоге сделать ПДФ-ку, а в ответ - тишина... Может есть какой формат попроще, чтобы можно было с разумными трудозатратами написать конвертер? На ДИАМСе написать любую обработку текстов - как два байта переслать...

- - - Добавлено - - -

Да, забыл сказать. Для форматирования RNO-шных документов программой %RNOFMT стандартного ДИАМСовского раздела 8К не хватает, я, форматируя документы, запускал ее в разделе 16К.

Еще момент. Если заняться форматированием всех документов, то лучше создать отдельный КИП (по аналогии с DOC'ом RT-11 его можно назвать DPR), копировать туда по одному документы в RNO, там их форматить, после чего грохать там исходник, чтобы в DPR остались только форматированные тексты. Если таки найдется вариант конвертирования в ПДФ, я все это, конечно, проделаю сам...

Vamos
12.05.2016, 11:51
Если таки найдется вариант конвертирования в ПДФ, я все это, конечно, проделаю сам..
Так а в чем проблема-то, форматированный текст сохранить в утф-8 открыть в акробате (не ридере) и сохранить в пдф, если нужен какой-то шрифт то можно через ворд.

anasana
12.05.2016, 13:15
Так а в чем проблема-то, форматированный текст сохранить в утф-8 открыть в акробате (не ридере) и сохранить в пдф, если нужен какой-то шрифт то можно через ворд.
Да там блин этот RUNOFF со своим хорошо продуманным языком форматирования, которое не хочется терять, и, при этом, хочется коротких путей для конверсии.
Например, как вариант, "распечатать" на виртуальный матричный принтер, при этом весь лог выдачи сохранить.
Получим тот же текст + ESC-последовательности управления форматированием, для которых инструментов преобразования поближе к wysiwyg-форматам больше.

hobot
12.05.2016, 22:42
виртуальный матричный принтер
присутствует в эмуляторе ДВК Патрона разве нет? Другой момент драйверы, под RT-11 то печатает норм.

AFZ
13.05.2016, 07:26
Так а в чем проблема-то, форматированный текст сохранить в утф-8 открыть в акробате (не ридере) и сохранить в пдф Угу. Только форматировано оно под моноширинный шрифт и лист 80х61 знакомест. А шрифты нужны разные, из них моноширинные нужны только для команд, основной текст лучше писать пропорциональными.


если нужен какой-то шрифт то можно через ворд. Руками? Лень, если честно. Их же много, документов. И страниц помногу в каждом.


Например, как вариант, "распечатать" на виртуальный матричный принтер, при этом весь лог выдачи сохранить.
Получим тот же текст + ESC-последовательности управления форматированием, Это тоже будет форматировано под конкретный моноширинный шрифт. Разве что выделение яркостью выловить можно.

Я уже размышляю на тему HTML, вроде-бы есть эквиваленты почти всем директивам из RNO, оглавления только придется руками перебивать...

Кстати, anasana, помогли доки из RT-шной RNO?

- - - Добавлено - - -


присутствует в эмуляторе ДВК Патрона разве нет? Другой момент драйверы, под RT-11 то печатает норм. Да это тоже вполне решаемо - базовый драйвер есть и в ДИАМСе, те же СМ 6315 печатали очень весело. Более того, там предусмотрена еще перекодировка под Ёпсон-совместимые принтеры, только я ее что-то не могу найти, но где-то есть точно. Это та самая "Настройка принтера" при загрузке конфигурации, на самом деле это загрузка таблицы перекодировки в так называемую "основную" кодировку PC/RUS, это где русские буквы положили на место псевдографики. В выложенном ДИАМСе она почти пустая, но в одной из моих дискет она точно есть, надо только найти. Еще я клепал таблицу под "альтернативную", т.е. 866-ю кодировку, но она на покрытом бэдами ST251. Только толку с них всех. Во-первых, см. выше, во-вторых, эмулятор удаляет (заменяет на пробел) все управляющие символы, включая и ESC (033), отправляемые на принтер. В лог попадают только ВК (015) и ПС (012).

anasana
13.05.2016, 16:42
... Я уже размышляю на тему HTML, вроде-бы есть эквиваленты почти всем директивам из RNO, оглавления только придется руками перебивать...
Ага, к HTML оно очень близко идеологически.


эмулятор удаляет (заменяет на пробел) все управляющие символы, включая и ESC (033), отправляемые на принтер. В лог попадают только ВК (015) и ПС (012).
Можно просто перенаправить и сохранить лог трафика любого доступного СОМ-порта, а не печатать именно в виртуалку эмулятора, которая выходит обрабатывается.
У меня есть модель принтера на базе ESCParser Никиты Зимина, с которой я много игрался, там можно подправить реакцию при обработке ESC-кодов на теги форматирования. Но:

Кстати, anasana, помогли доки из RT-шной RNO?
Ещё бы! Идеальная расшифровка человеческим языком.
Мучаю этот исходник: http://runoff.sourceforge.net/ всё уже сделано в правильном направлении и уже компилируется, но парсер там косячит. Надо допиливать. Ну почему оно не на .С :(.

AFZ
14.05.2016, 09:43
Можно просто перенаправить и сохранить лог трафика любого доступного СОМ-порта, а не печатать именно в виртуалку эмулятора, которая выходит обрабатывается. Бесполезно, информация об абзацах и пр. погибнет по-любому.


Мучаю этот исходник: http://runoff.sourceforge.net/ всё уже сделано в правильном направлении и уже компилируется, но парсер там косячит. Надо допиливать. Сочиняешь RUNOFF под винды? Можно поступить проще: есть исходники %RNOFMT и %RNOFMT1 на ДИАМСе, работающие. Перепиши их на С, и вперед! Правда, придется слегка разобраться с программированием на ДИАМСе, но это легко, если что будет непонятно - подскажу.


Ну почему оно не на .С А на чем? Я там ткнул Download sources, лезет какой-то EXE-шник, ну его на фиг...

-----------------------------

Ладно, выкладываю исходники ядра ДИАМСа на Макро. Вроде-бы, оно там для всех PDP-11, не только для ДВК, но как его собирать и всё ли там на месте для не-ДВК, пока не разобрался. Каким-то образом из глобалов DSCOND, DSMPRE, DSMDWK (вот он - аппаратно-зависимый, для других машинок есть свой) и LODEND собирается файл DSM11A.MAC, причем из машинно-зависимого глобала, который просто список модулей, генерятся команды ассеблера .INCLUDE с именами файлов типа .MAC, да еще и некоторые имена, которые длинные, корректируются до 6 символов в названии, причем не просто усечением...

Далее оно все переносится в RT-11, там транслируется обычным Макро, результат - .LDA-файл (команда .ENABL ABS второй строчкой в DSMPRE), хотя, если при компиляции не указать специально, файл сгенерится с типом .OBJ. Следующим действием собираем DSMCIL, это отдельная программа RT-11, которая из этого .LDA-файла делает двоичный образ ядра ДИАМСа, затем переименовываем DSM11A.OBJ в HEART.BIN и запускаем свежесобранную DSMCIL, результатом получим файл MUMPS3.CIL, который и будет новым образом ядра. Далее его надо каким-то образом (программа, вроде бы есть, на ДИАМСе но я не разобрался, как ей пользоваться, был еще вариант через магнитную ленту) скопировать на загрузочный диск с ДИАМСом и вперед!

Зачем такие сложности? Все просто: ядро ДИАМСа здоровенное, порядка 160 блоков. А адресное простанство задачи у нас 128 блоков, из них 16 - страница ввода-вывода. Поэтому оно сделано в виде оверлейной программы. Однако, поскольку система и так интерпретирующая, терять время еще и на перезагрузках оверлеев категорически нельзя, поэтому его грузят в память целиком, а специальный оверлейный драйвер, вместо загрузки оверлеев, переключает страницы ДП.

Ну, вроде-бы, всё. Основное по ДИАМСу я выложил, осталась только версия ДИАМСа, которая располагается не на целом диске, а в файле RT-11. Это целиком моя доработка, сделано было из экономии, поскольку держать две ДВК-шки - одну с ДИАМСом, вторую - с RT-11 было негде и не по карману. Заодно решилась проблема с числом головок винчестера - в оригинале их было строго 4, а я исправляю эту цифру на заданную. Это ни разу не перенос ДИАМСа под RT-11, просто на диске RT-11 создается файл заданного объема, который и используется ДИАМСом в качестве винчестера. Специальная программа-загрузчик ДИАМСа, запускаемая из RT-11, считывает ядро ДИАМСа точно так же, как это делает родной загрузчик ДИАМСа, затем вносит в него поправки на смещение от начала диска, после чего уходит в ядро на запуск системы.

Vamos
14.05.2016, 10:23
Кстати, anasana, помогли доки из RT-шной RNO?
Ещё бы! Идеальная расшифровка человеческим языком.
Взглянуть на доки можно?

AFZ
14.05.2016, 10:39
Взглянуть на доки можно?Вот (http://zx-pk.ru/threads/16861-poisk-fajlov-dlya-uknts-dvk.html?p=864729&viewfull=1#post864729)

Гы!
Эти 3 пользователя(ей) поблагодарили AFZ за это полезное сообщение: anasana (25.03.2016), hobot (25.03.2016), Vamos (25.03.2016) То самое, где выложено это RNO с доками.

Vamos
14.05.2016, 11:56
То самое, где выложено это RNO с доками.
Действительно, Гы :) RNOR.SAV, в настройках не разобрался, вывалила кучку ошибок и нет транслитерации (или ее надо как-то включать), а так работает. Запускал в UKNCBTL.
Чем открыть дискеты с документацией?

AFZ
14.05.2016, 19:25
Чем открыть дискеты с документацией? Какие дискеты, эти, (http://zx-pk.ru/threads/26360-diams-(dsm-11).html?p=870714&viewfull=1#post870714) да? ДИАМСом, вестимо. Запускаем ДИАМС, создаем в основном наборе томов (если пользовать файл-образ для эмулятора, который я выложил, то это набор томов AFZ) КИП DOC, монтируем первую дискету, смотрим образовавшиеся КИПы программой %UCILI и копируем все глобальные массивы программой %GC (Global Copy) из КИПа DOC,DOC в КИП DOC,AFZ. Далее можно просмотреть их содержимое программой %G или отформатировать те, которые RNO-шные, программой %RNOFMT. Для передачи в другие ОС, кроме магнитной ленты, есть еще один путь - через СПД, но это высокое шаманство сейчас недоступно никому - я, допустим, не справлюсь, забыл напрочь, а других специалистов по ДИАМСу вокруг что-то не наблюдается... Но, спасибо Патрону, магнитные ленты уже эмулируются, так, что мохно записать ленточку из ДИАМСа, а потом прочитать ее, допустим, из RT-11. Или уговорить Патрона, чтобы сделал еще один формат ленты, в виде простого писюшного файла.

AFZ
23.05.2016, 09:14
И, наконец, ДИАМС в файле 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 все было без вопросов.

На этом заканчиваются выкладки ДИАМСа - я выложил все, что ко мне попало, плюс чуток материалов собственной разработки. За мной остался правильный FILE-ID.DIZ для архива, его сочиню на днях.

Немного о своих планах. Есть у меня желание оттранслировать ядро с Макро, в смысле, получить работоспособный вариант. Еще надо-бы оттранслировать его в варианте для 1420. Хочу попытаться подключить диски HD, ну, и, если состоится какая-то из обсуждаемых рядом разработок новоделов, то и её диски. И, наконец, в порядке бреда, если вдруг совсем будет нечего делать, переписать ядро ДИАМСа под винды на Си, чтобы получился лицензионно чистый ДИАМС на писюке.

- - - Добавлено - - -

Да, по поводу нестандартных для ДВК винчестеров - с числом головок не равным 4 и более 32М. Есть два драйвера для RT-11, оба разделяют один физический винчестер на несколько устройств DW: (DW0:, DW1:...), но один делит из по головкам, второй - по цилиндрам. Так вот, с тем, который делит винчестер по головкам, этот ДИАМС работать не будет.

А с тем, который делит винчестер по цилиндрам - все в порядке, у меня оно весело работало на ST251, DW0 - цилиндры 0-409, DW1 - цилиндры 410-819, 6 головок. Вопрос программы DSMINS.SAV про начало DWn: именно про это, на единственном DW0 даем ноль, а для DW1 я на своем ST251 указывал 410.

ram_scan
26.05.2016, 21:41
Немного о своих планах. Есть у меня желание оттранслировать ядро с Макро, в смысле, получить работоспособный вариант. Еще надо-бы оттранслировать его в варианте для 1420. Хочу попытаться подключить диски HD, ну, и, если состоится какая-то из обсуждаемых рядом разработок новоделов, то и её диски. И, наконец, в порядке бреда, если вдруг совсем будет нечего делать, переписать ядро ДИАМСа под винды на Си, чтобы получился лицензионно чистый ДИАМС на писюке.


В природе есть лицензионно чистый FreeMumps который распространяется в исходниках под GNU GPL и удовлетворяет чуть более чем полностью стандарту уж не помню какого года бо дела давние. Поэтому наверное вместо того чтобы пилить напильником истребитель из паровоза наново лучше диамсовские нюансы запилить как диалект в готовую реализацию, благо она была не сильно тяжелая.

Впрочем когда мы самописную диамсовскую тяжелючую систему с СМ1420 на Микронетикс Мампс на писюк тянули граблей практически не собрали. Потому-что я их даже не помню, собрали бы, я бы трахотню знатную до пенсии вспоминал. Кажется только казнились с прикладным интерфейсом из-за разных терминалов/номеров девайсов, и из-за липистрических сбоев когда по самодельному последовательному порту глобали передували и хватали статики, софт по сравнению с обьемом БД был мелкий и вьезжал без ошибок, а с БД помню кувыркались, даже свою тулзу для трансфера вроде писали вместо штатной, чтобы умела работать блоками, сбои в блоках детектить и ретрансфер поддерживала.

А ДИАМС до исходников аутентичных поднять - богоугодное дело. Но дальше имхо смысла нет.

PS: еще помню что мы все манипуляции с диамсовскими дисками совершали не то из RSX не то из TSX (у нас в одном из накопителей стоял пакет с ней всегда), но меня в ту пору только ключи подавать пускали =) А на RT11 она была не шыбко глядя через плечо похожа, поэтому я ничо не помню, да и случалось это крайне редко =)

AFZ
27.05.2016, 15:38
О, ram_scan, привет собрату по ДИАМСу! Нашего полку прибыло!


В природе есть лицензионно чистый FreeMumps который распространяется в исходниках под GNU GPL и удовлетворяет чуть более чем полностью стандарту уж не помню какого года бо дела давние. Поэтому наверное вместо того чтобы пилить напильником истребитель из паровоза наново лучше диамсовские нюансы запилить как диалект в готовую реализацию, благо она была не сильно тяжелая. Так я и написал: в порядке бреда, если уж совсем делать нечего будет...



Впрочем когда мы самописную диамсовскую тяжелючую систему с СМ1420 на Микронетикс Мампс на писюк тянули граблей практически не собрали. Потому-что я их даже не помню, собрали бы, я бы трахотню знатную до пенсии вспоминал. Кажется только казнились с прикладным интерфейсом из-за разных терминалов/номеров девайсов Я, помню, перенес за неделю всю АСУ птицефабрики (куриной) с DSM-11 (СМ-1420) на MSM-PC 3.12. Машинку поставил AMD 5x86-133, засунул в нее 8-портовку отечественного производства на чипах 8250 и с оптронами, прицепил к ней все терминалы 7209, сколько их было (штук 6 или 7), и вперед. Программы исправлял в автоматическом режиме - кое-что дописал по мелочи, а затем по-простому, поиском и заменой, совершенно не вникая.


Кажется только казнились с прикладным интерфейсом из-за разных терминалов/номеров девайсов, и из-за липистрических сбоев когда по самодельному последовательному порту глобали передували и хватали статики, софт по сравнению с обьемом БД был мелкий и вьезжал без ошибок, а с БД помню кувыркались, даже свою тулзу для трансфера вроде писали вместо штатной, чтобы умела работать блоками, сбои в блоках детектить и ретрансфер поддерживала. Я глобали копировал с 1420 на ДВК, и там, и там ДИАМС, на нем сочинил пару программуль - на 1420 передачи, на ДВК приема, с контролем и ретрейнами, потом слил на ДВК-шные дискеты и вперед! Да, копировалось оно чуть ли не сутки...

Зато потом, когда я ее (АСУ) сдавал, был прикол. Запустил, все работают, всё работает нормально, а потом... Запускают расчет зарплаты, приготовились ждать два часа (кэш на 1420 вылетел пару лет до того назад, его не смогли пофиксить и отключили), 30 секунд, и зарплата посчитана. Видел бы кто-нибудь офонаревшую главбухшу!..

hobot
30.06.2016, 16:49
Пока сделал копию этой темы в архиве
http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/DIASM_DWK/

Patron
06.10.2017, 23:11
..

Изменил патч загрузчика в дистрибутиве DSM-11 v3.3 так, чтобы он по-прежнему влиял на DM, DP, DR и DB, но не влиял на DK : DSM-11_v3.3.tap (http://emulator.pdp-11.org.ru/misc/DSM-11_v3.3.tap.zip)

form
07.10.2017, 03:16
DSM-11_v3.3.tap
Формат файла похоже кривоват. Поблочное копирование ленты дает ошибку в конце.

- - - Добавлено - - -

Выложил поблочную копию в формате VCP, CTAKAH::SW:[KITS]DSM11V33.TAP.
На 11/83:
Type a command then press the RETURN key: B MU


Trying MU0

Starting system from MU0


Booting DSM-11...
DSM-11 Version 3.3
Now running the baseline system.


Begin DSM-11 Version 3.3 system installation

Answer with a question mark (?) any time you wish more information.



Please enter today's date [ DD-MMM-YY ] ? > 7-OCT-99

and time [ HH:MM:SS ] ? > 07:03

Install DSM-11 on which disk unit ? > DU2
Do you wish to run a comprehensive test for bad blocks
on this disk ? [Y/N] > N



RA82 Unit 2 Bad Block Table

The Bad Block Table is empty

Do you know of any other bad blocks on this disk ? [Y/N] > N

What would you like the new label of this disk to be ?
(up to 22 characters, enclosed in quotes) ? > DSM
Like this: "THE NEW LABEL"
What would you like the new label of this disk to be ?
(up to 22 characters, enclosed in quotes) ? > "DSM-11"

What 3-character uppercase name do you wish to give this volume set ? DSM
Now initializing DU2 for use as DSM-11 volume...
Loading the DSM-11 Version 3.3 system utilities onto the system disk:

%BLKWT %BN %CRF %CRF1 %CURSOR %D %DH %DIAL
%DO %DOC %E %EB %ED %EDI %EDIEDT %EDIFIL
%EDIINS %EDILST %EDIMAC %EGD %ER %ET %FGC %FGR
%FGR1 %FGR2 %FGR3 %FGR4 %FGT %FL %G %G1
%G2 %G3 %G4 %GCH %GD %GE %GEDIT %GGP
%GL %GL1 %GLO1 %GLO2 %GLOMAN %GR %GRT %GRTINI
%GRTR %GRTS %GS %GS1 %GSEL %GSEL1 %GTI %GTO
%GUCI %H %HD %HDR %HDR1 %HELP %HELPED %HELPH
%HELPMEN %IOS %IOS1 %JOB %LIB %LNKMP %MENLIS %MENU
%MTCHK %NAKED %OD %OVR %P %PC %PCMP %PCOMP
%PCOPY %PCR %PD %PDEL %PEXC %PFL %PL %PP
%PR %PRIO %PS %PSD %PSE %PSEDIT %PSEL %PXR
%RCE %RCMP %RCOPY %RD %RDX %RM %RM1 %RML
%RR %RS %RSE %RSEL %STRTAB %SUM %SUM1 %SUM2
%SUM3 %SUM4 %SUM5 %SUMSEL %SY %SYR %SYSROU %T
%TDN %UTL %VAR %WU ACTJOB ALLOCAT ATTACH AUPAT
AUPAT0 AUPAT1 AUPAT2 BACKCRE BACKCRF BACKCRG BACKFL BACKHELA
BACKHELP BACKJRN BACKLOGO BACKMGA BACKMM BACKMMGO BACKMNT BACKONE
BACKPRT BACKSET BACKSTR BACKUNJR BACKUP BACKUPDO BACKUPPR BACKVARS
BACKVERI BACKVRS2 BBTAB BCS BLDMP BLDMP1 BOOTCOPY BSC
BSCBIT BSCEBC BSCHLT BSCMON BSCPE BSCPEB BSCPER BSCQUE
BSCRCV BSCSTA BSCSTR BSCXMT CARE CONFIG CREATPQ CTK
CTK0 CTK1 CTK2 CTKDAT CTKUTL DAT DBT DBTALLY
DDP DDPCIR DDPCON DDPLNK DDPSRV DDPUTL DDR DEJRNL
DEJRNL1 DEJRNL2 DESPOOL DETACH DGAM DISKMAP DISKPREP DISKSIZ
DISMOUNT DPBBSET DPBEGIN DPFMT30 DPFORMAT DPINIT DPLABGET DPNEWL
DPSYCOPY DPTEST DPUTILOD DSKTRACK FASTDBT FASTGTO FASTIC FIX
FIXDATA FIXDATA1 FIXGD FIXMAP FIXMAP1 FIXPTR FIXPTR1 FIXROU
GC GC1 GLBPLACE IC IC0 IC1 IC2 IC3
IC4 INSTALL JOBTAB JRNALL JRNCOPY JRNCOPY1 JRNCOPY4 JRNDEALL
JRNDKEND JRNGETST JRNINIT JRNL JRNLSHOW JRNRECOV JRNSTART JRNSTOP
JRNSTU KTR KTR1 KTRUDA LABEL LABELMT LABSHO LMAP
LOAD LOADR LOCKTAB MAKESDP MAPMOUNT MAPM1 MBP MBP1
MBP1H MBP2 MBPH MDAT MMD MOUNT MOUNTX MSUROU
MUX MUX1 MUXDEF PARTAB PARVEC PARVEC0 PATCH PATFL1
PATFL2 PATFL3 PATFL4 PATFL5 PCHIST PCHIST1 PCHISTP PEEK
REPTAB REST RESTDO RESTDOMG RESTMAGU RESTMAS RESTMNT RESTRESB
RESTRTNS RJD RMAP RMBLD RMDIS RMSHO RMLOAD RTHELP
RTHIST RTHIST1 RTHISTP SAVBOOMK SAVBOOT SDCCOPY SDP SETHOST
SGAUTO SGBUFF SGBUFFH SGDATA SGDEVS SGDISK SGDMC SGLOAD
SGMAGT SGMEM SGOPTH SGOPTS SGPART SGSOFT SGSUB SPL
SPLALL SPLINI SPLREM SPLSTR SSD STA STU STU1
STU2 STU3 STU4 STUBLD STUBLD2 STUBLDH STUCSR STUDIST
STUSETPV STUSPL SWREG SYCOPY SYS SYSDEF SYSGEN SYSROU
SYSTAB SYSTAB0 SYSTAB1 SYSTAB15 SYSTAB2 SYSWAIT SYTOTAPE TAPCOPA
TAPECOPY TIM TRANTAB TRANTB1 TTTG TTTSHO UCIADD UCIEDIT
UCILI UCITAB UCITRAN UNLOAD UTL V3TAPEGL V3UTILS VER

Transferring the system globals:
SYS % %EDI %EDIHELP %HELP11 %MENU %Q



Now copying the system image onto your new disk,
making it a bootable DSM-11 Version 3.3 system disk...



DU2 is now a bootable DSM-11 Version 3.3 system disk.
You may dismount the distribution magnetic tape now.

Do you wish to proceed directly to SYSGEN ? <Y>

System generation for DIGITAL Standard MUMPS

Type ? for HELP at any time

PART 1: SYSGEN
-------

1.1 Would you like extended help [Y OR N] ? <N>

1.2 Enter the configuration identifier <1>

1.3 Do you wish to Auto-configure the current system [Y OR N] ? <Y>

Configuring Host System . . .


Processor Type: PDP-11/83

Memory Size: 3840 KB

Processor/Memory Options:

Floating Point Unit
Extended Instuction Set
22 Bit Addressing
Cache
Memory Parity

Name Vector CSR Unit Type Description

DUA 124 172150 MSCP Disk Controller
0 RD51 Disk Drive
1 RD51 Disk Drive
2 RA82 Disk Drive
3 RA82 Disk Drive

MUA 130 174500 TMSCP Tape Controller
0 TU81 Tape Drive

LPA 200 177514 LP11 Line Printer Controller

YLA 300 176500 DL11 Asynch Single Line Controller

YLB 310 176510 DL11 Asynch Single Line Controller

YLC 320 176520 DL11 Asynch Single Line Controller

YLD 330 176530 DL11 Asynch Single Line Controller

XHA 270 174440 DEQNA Ethernet Controller

YZA 340 160100 DZV11 Asynch Multiplexor Controller

YVA 350 160500 DHV11 Asynch Multiplexor Controller


1.4 Do you wish to modify this configuration information [Y OR N] ? <N>

PART 2: DISK INFORMATION
-------

Disk information supplied by AUTOCONFIGURE

PART 3: SYSTEM DEVICES
-------

System Device information supplied by AUTOCONFIGURE

PART 4: CONFIGURE DMC/DMR-11's and DDP
-------

4.5 How many DSM nodes are connected to DEQNA #0 > 2

PART 5: SOFTWARE CONFIGURATION
-------

5.1 Do you wish to use the STANDARD SOFTWARE OPTIONS [Y OR N] ? <Y>

PART 6: ASSIGN DEVICE NUMBERS
-------

The following single line device assignments have been made:

Device Number Controller-Number

3 LP11-0
4 DL11-0
5 DL11-1
6 DL11-2
7 DL11-3

PART 7: SOFTWARE OPTIONS
-------

SEQUENTIAL DISK PROCESSOR support: Included

JOURNAL support: Included
With 2 buffers

SPOOLING support: Not Included

INTERJOB COMMUNICATIONS support: Included
With 16 communication channels
and a 64 byte default ring buffer size

LOADABLE or USER DRIVER SPACE support: Not Included

MAPPED ROUTINES support: Not Included

UCI TRANSLATION TABLES support: Included

MOUNTABLE DATABASE VOLUME SETS support: Included

Total System Exec size: 84.98 K Bytes

PART 8: MEMORY BUFFER ALLOCATION
-------

Number of 512 byte DDP buffers: 40

Default terminal RING BUFFER size: 64 Bytes

Total space allocated to RING BUFFERS: 3328 Bytes

Total number of 1 K byte DISK-TAPE cache buffers: 2047

PART 9: SYSTEM DATA STRUCTURES
-------

Space allocated for DISK-MAP and BAD BLOCK TABLE: 34048 Bytes
Space allocated to UCI TRANSLATION TABLE: 1280 Bytes
Space allocated to GLOBAL VECTOR TABLE: 4096 Bytes
Space allocated to DDP structures: 10752 Bytes

Space allocated to the LOCK TABLE: 512 Bytes

Number of mountable DATABASE VOLUME SETS: 7

PART 10: JOB PARTITION DEFINITION
--------

PARTITIONs are allocated in 1024 byte increments.

The following PARTITIONs have been defined:

JOURNAL system job 1 KB
GARBAGE COLLECTOR system job 1 KB
Job #1 (to guarantee one 9 K byte PARTITION) 9 KB

Default partition size: 9 K Bytes

Space remaining for PARTITION allocation: 1616.00 K bytes

The remainder of memory is assigned to the DYNAMIC PARTITION POOL

PART 11: DATABASE PARAMETERS
--------

WRITE CHECK after WRITE on disks: Not Included

System default global characteristics are:

8 Bit Subscripts: Yes
Journaling: No
Collating sequence: Numeric

PART 12: BASIC SYSTEM PARAMETERS
--------

Default UDA disks that are dual-ported. NONE

View buffer device protection: Included

ZUSE command protection: Included

LOGIN SEQUENCE CHARACTERS: echoed

Default APPLICATION INTERRUPT key: 3 (CTRL/C)

Default PROGRAMMER ABORT key: 25 (CTRL/Y)

Time delay for POWER FAIL RESTART: 40 seconds

Time delay for TELEPHONE DISCONNECT: 15 seconds

Number of significant DIGITS for DIVISION: 12

12.9 Is the LINE FREQUENCY 60 HZ [Y OR N] ? <Y> N

12.10 Enter the 3-character Programmer Access Code (PAC) > SYS


Please enter your initials > LAK

Enter comment (max. 200 chars.) >

The system global ^SYS has been built by SYSGEN.
^SYS is a reserved global and should not be altered.



If you wish to customize your new configuration by modifying:

. Terminal speed settings or other parameters
. Magnetic tape default format
. UCI's or database VOLUME SETS
. TIED TERMINAL table
. UCI translation table
. Default GLOBAL CHARACTERISTICS/PLACEMENT
. Routine maps

then login to the manager's UCI and type "D ^SYSDEF"

You do not have a startup command file,
Do you wish to remain in baseline mode ? <N>

Begin defining a new startup command file.

Configuration ? <1> 1
Apply patches to memory [Y OR N] ? <N>
Start up the Journal [Y OR N] ? <N>
Startup Distributed Database Processing [Y OR N] ? <N>
Start the Caretaker background job [Y OR N] ? <Y>
Enter the Printer Number for system error messages <1>
Automatic logging of DSM errors [Y OR N] ? <N>
Mount additional disk volumes [Y OR N] ? <N>
Make this the new startup file for configuration 1 [Y OR N] ? <Y>

Re-configuring memory...
Memory re-configured


Mounting DSM as Volume Set number S0
Volume 1 on DU2 has 532800 blocks 529943 available.
Total in volume set: 532800 blocks 529943 available.


Building terminal control blocks...

Caretaker is now running as job number 2.

DSM-11 Version 3.3 1 is now up and running!
Exit

form
07.10.2017, 10:49
Выложил поправленный образ (http://pdp-11.org.ru/~form/files/pdp-11/dsm-11/dsm11v33.tap). Заодно посмотрел в чем была проблема - EOT был незавершен: не хватало двух байтов с нулями.

Patron
20.11.2017, 17:19
.

Появление поддержки ДИАМС в DSK-плагине (http://zx-pk.ru/threads/11015-rt-11-dsk-total-commander-wcx-plugin.html?p=937617&viewfull=1#post937617) позволило разобраться с исходниками ДИАМС.

В результате создан набор исходников различных вариантов ядра: DIAMS_Cores_20.11.2017 (http://emulator.pdp-11.org.ru/misc/DIAMS_Cores_20.11.2017.zip), адаптированных для компиляции ядра ДИАМС в Эмуляторе RT-11 (http://zx-pk.ru/threads/24755-emulyator-rt-11.html?p=782709&viewfull=1#post782709) :



.rt11 @diams

.MAC DSM11A

.REN DSM11A.OBJ HEART.BIN

.RUN DSMCIL

.DEL HEART.BIN

.


В результате создаётся файл: MUMPS3.CIL, который можно скопировать в системный DSK-образ ДИАМС при помощи DSK-плагина.


...

В набор включены следующие варианты ядра:

1. Old Core - те исходники ядра, из которых была скомпилирована первая система ДИАМС для ДВК, изменявшаяся впоследствии патчами ядра.

2. Curr Core - результат дизассемблирования текущего ядра с указанием всех мест, где код из Old Core был пропатчен, с наличием исходников обоих вариантов кода: старого ( в виде комментариев ) и нового.

3. Curr Core2 - подчищенный вариант исходников Curr Core, дающий при компиляции то же самое ядро.

4. Clean Core - Функциональный аналог Curr Core, в котором исправлены две ошибки и выброшен мёртвый код.

5. = New Core = - Вариант Clean Core с улучшенной поддержкой русского ввода с терминала.

MiX
07.07.2019, 22:26
Итак, выкладываю ДИАМС.
Вроде как хотели для Эл85 протестировать, или один и тот же образ?
На DW один и тот же драйвер?

AFZ
07.07.2019, 23:03
Нет, на 85-й я хотел потестить TSX. Тот самый, руссифицированный Потёмкинам и его командой, с SL от Сторожевых и пр. Скачать лучше всего здесь (https://zx-pk.ru/threads/10371-elektronika-85-vs-dec-pro-350-ikh-emulyatsiya.html?p=789530&viewfull=1#post789530)

А ДИАМСа для 85-й в природе, вроде-бы, не существует. Вроде-бы, в Воронеже начали его адаптировать под 85-ю, результат частичной адаптации, т.е. со вписанным в него драйвером DW, каким-то образом попал к питерской команде, которая доделала его для ДВК, а ДИАМС для Э-85 так и не состоялся. В том же, который выложил я, нет самой главной 85-й фенечки - обслуживания 85-го дисплея. А если и сделали что-то еще в г. Воронеже, все ушло в даль светлую...

AFZ
12.08.2020, 23:49
Заодно пропатчил Y2k.Недолго мучилась старушка в высоковольтных проводах или литовский праздник Обломайтис!.. :)

Да, пропатчил. Только вот - беда: дата в ДИАМСе хранится в машинном слове в виде числа дней, прошедших с 1 января 1841 года. И 65535 дней - это 05 июня 2020 г. И все, больше ничего не сделаешь. Нет, конечно, можно "забыть" про бит переноса из 15-го разряда, ноль в системной переменной $H интерпретировать, как 06 июня, единицу, как 07-е и т.д., только если кто-либо воспользуется прямым значением $H, а не результатами программы %H, будет лажа. А есть ли такие программы и где они - хрен его знает. В общем, грустно...

CodeMaster
13.08.2020, 09:44
1 января 1841 года
Оригинальная дата :-/ Не нашёл ни одного события в 1841-м ради чего его можно было выбрать.

Patron
13.08.2020, 11:56
Да, пропатчил. Только вот - беда: дата в ДИАМСе хранится в машинном слове в виде числа дней, прошедших с 1 января 1841 года. И 65535 дней - это 05 июня 2020 г. И все, больше ничего не сделаешь. Нет, конечно, можно "забыть" про бит переноса из 15-го разряда, ноль в системной переменной $H интерпретировать, как 06 июня, единицу, как 07-е и т.д., только если кто-либо воспользуется прямым значением $H, а не результатами программы %H, будет лажа.
Полная 2К-совместимость для старого Диамса невозможна, но можно сделать Диамс 2К, просто передвинув начальную дату на 100 лет вперёд.

AFZ
13.08.2020, 12:13
Оригинальная дата :-/ Не нашёл ни одного события в 1841-м ради чего его можно было выбрать.Ну, в общем-то, MUMPS создавался для учета ветеранов американской армии. А ветераны - они люди немолодые. Прикинули, что 80+ ветераны еще живы (а дело было в начале 70-х), докинули на всякий случай лет 50, и вперед!


Полная 2К-совместимость для старого Диамса невозможна, но можно сделать Диамс 2К, просто передвинув начальную дату на 100 лет вперёд.Да, и если для перевода даты в осмысленный вид пользовать только %CDS^%H, то все решается легко. А вот если где-то в какой-нибудь программе кто-то прямо воспользуется значением +$H, то дата получится на те самые 100 лет раньше..

Hunta
13.08.2020, 12:19
"Вчера я наткнулся на формат даты MUMPS/Caché "$h", который описывается как:

Этот формат возвращает дату как количество дней с 31 декабря 1840 года, а время как количество секунд после полуночи.

Я размышлял со своим другом о том, почему они выбрали 1841 год, и предположил, что это была какая-то удобная дата (похожая на выбор Mac 1904 года), которая предшествовала дате рождения самого старого человека, которого они могли представить в системе, еще в 1960-х. ,

После обращения к Источнику истины (статья в Википедии о MUMPS) наше предположение оказалось верным. Джеймс Пойтрас объясняет, почему он выбрал эту странную дату:

Я вспомнил, как читал про старейшего (одного из старейших?) гражданина США, ветерана гражданской войны, которому на тот момент был 121 год. Поскольку я хотел иметь возможность представлять даты в юлианском формате, чтобы можно было легко вычислить возраст и иметь возможность представлять любую дату рождения в выбранном числовом диапазоне, я решил, что начало 1840-х годов будет безопасной начальной датой. Поскольку мой алгоритм наиболее логично работал, когда каждый четвертый год был високосным, за первый год был взят 1841 год. Нулевой точкой было 31 декабря 1840 года."

CodeMaster
13.08.2020, 13:15
И 65535 дней - это 05 июня 2020 г. И все, больше ничего не сделаешь.
В США умерла последняя получательница пенсии ветерана Гражданской войны (https://ria.ru/20200605/1572494475.html)
Кто после этого не поверит в теорию заговора или в то, что мы живём в Матрице? ;-)

Patron
13.08.2020, 14:01
Да, и если для перевода даты в осмысленный вид пользовать только %CDS^%H, то все решается легко. А вот если где-то в какой-нибудь программе кто-то прямо воспользуется значением +$H, то дата получится на те самые 100 лет раньше..Никто не мешает запускать старый Диамс, вводить системную дату на 40 лет "младше" и работать как в 80-х. Но чтобы вводить и использовать текущую системную дату - нужен новый Диамс.

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

Hunta
13.08.2020, 14:05
В США умерла последняя получательница пенсии ветерана Гражданской войны
Кто после этого не поверит в теорию заговора или в то, что мы живём в Матрице? ;-)

Ну полный апофеоз... Это ж надо ТАААААК подгадать :D

Patron
13.08.2020, 16:06
В принципе - можно найти какой-то неиспользуемый нулевой байт в системном блоке файловой системы и писать туда количество десятков лет смещения начальной системной даты от стандартной. Тогда новый ДИАМС можно будет использовать ещё более 1000 лет. При копировании системы можно предусмотреть изменение смещения даты с автоматической конвертацией дат копируемых файлов. При загрузке системы этот байт можно копировать в SYSTAB и использовать при расчётах даты.

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

AFZ
13.08.2020, 18:35
Вообще-то, дата нигде, кроме ядра, не хранится в двоичном виде - только в виде символьной строки, изображающей десятичное число. То есть, если залезть в ядро должным образом, вполне можно подправить это дело хоть до 72хх (не помню точно год, когда григорианскому календарю тоже понадобится поправка на один день). Найти (или организовать) свободное слово с фиксированным адресом и держать в нем старшие 16 битов первой части системной переменной $HOROLOG ($H), чтобы по +$H возвращалось правильное число большее, чем 65535, и весь хрен до копейки!.. Ну, и подправить системные программы ^%H и ^DAT - первую, может быть и не сильно надо править, а во вторую надо будет добавить размещение старших 16 разрядов даты.

Patron
13.08.2020, 20:53
Главная проблема - файловые даты. Там для даты и времени последней модификации файла отведено только 3 байта - два байта для даты и один байт для времени:



Блок программных данных
--------------------------------------
!Длина имени прогр.! 0 ! 0
-------------------------------------- Поле имени
! Имя программы ! <-- программы
-------------------------------------- от 2 до 8 байт
! Дата и время последнего !
-------------------- !
! ! ZSAVE !
-------------------------------------- <-- Граница слова
! Длина программы !
--------------------------------------
! . . . ! <-- Текст программы
--------------------------------------


Но есть нулевой байт после байта длины имени файла, в котором можно хранить дополнительные биты даты.

AFZ
05.11.2020, 11:37
Нашел кучку старых дискет, которые еще не выгружены. Среди них оказалось 6 дискет с BACKUP-копией моего основного рабочего ДИАМСа. Только вот беда: третья дискета не читается в самом начале (50-й блок). Я посмотрел, ничего серьезного там нет - какой-то мой исходник от давно забытого коммерческого проекта, испортился, да и хрен с ним. Только вот как скопировать эту дискету с любым произвольным содержимым вместо этого битого сектора? COPY/DEV после этого сбойного сектора вываливается, игнорируя ключик /IGN.

Изучил описание программы DUP, действительно, у нее нет ключика, позволяющего игнорировать ошибки при копировании устройства (то, что делается по COPY/DEV). ИМХО, остается искать средство, которое позволит скопировать это дело на PC. Все осложняется тем, что машинка с дисководом у меня 386-я, у остальных моих машинок нет FDC. То есть, конечно, могу еще попытаться выкопать мамашу с П-2/П-3 и что-нибудь на ней завести, но это в самом крайнем случае. Ну не писать же свою программу под RT-11, которая таки скопирует это дело, игнорируя ошибку в этом самом 50-м блоке?..

tnt23
05.11.2020, 11:44
Не было идей скопировать дискету "сырьем" на устройствах вроде KryoFlux, или на Амиге? и потом уже на PC пытаться разобрать битовый поток.

Hunta
05.11.2020, 12:00
Не было идей скопировать дискету "сырьем" на устройствах вроде KryoFlux, или на Амиге? и потом уже на PC пытаться разобрать битовый поток.
Как всё запущено...



cop/dev/ver dk1:/start:0/end:49. dk2:/start:0
cop/dev/ver dk1:/start:51. dk2:/start:51.

tnt23
05.11.2020, 13:55
Как всё запущено...

Не знал, что контроллеры дисков "взрослых" машин умели читать не только зоны данных секторов с побитыми заголовками, но и вообще произвольный поток бит с дисковода. Решпект!

AFZ
05.11.2020, 14:00
cop/dev/ver dk1:/start:51. dk2:/start:51.Угу.
?DUP-F-Invaltd Command
Еще варианты?

Hunta
05.11.2020, 14:21
Еще варианты?
То есть вот сообразить, в чём проблема - ну никак.



cop/dev/ver dk1:/start:0/end:49. dk2:/start:0
cop/dev/ver dk1:/start:51./end:1599. dk2:/start:51.


- - - Добавлено - - -


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


онтроллеры дисков "взрослых" машин умели читать не только зоны данных секторов с побитыми заголовками
Если испорчен нужным образом заголовок, то контроллер просто не найдёт сектор и не прочитает ничего - в этом секторе. Что, в принципе, не помешает ему найти следующий сектор. Но, правда, может особо свести в порче данных, так что вдруг нарисуется (в зоне данных) синхропоследовательность - и вот тут ничего не скажу, как себя поведёт контроллер.

Alex
05.11.2020, 18:28
Ну не всегда контроллеры опирались на сектор... Например, пресловутый MX... Читал весь трек целиком. По сему и размер драйвера большой, на трек из 5 блоков.
Да и некоторые контроллеры флоппи на оффтопичных компьютерах имели режим чтения трека. Использовалось это для взлома систем защиты от копирования, кои опирались на ключевые дискеты. Некоторые товарищи, вычитывали в таких режимах тот же MX.

Hunta
05.11.2020, 18:32
Ну не всегда контроллеры опирались на сектор... Например, пресловутый MX... Читал весь трек целиком.
Но принцип работы всё равно тот же самый - найти синхрозону, проверить номер сектора, прочитать данные, найти синхрозону, проверить номер сектора, записать данные

- - - Добавлено - - -

А DUP по любому работает только с данными

hobot
05.11.2020, 18:43
Ну не писать же свою программу под RT-11, которая таки скопирует это дело, игнорируя ошибку в этом самом 50-м блоке?.. а там наверное не RT-11 файловая система на дискете, иначе какие могли бы быть трудности?

Alex
05.11.2020, 18:44
Да, DUP работает только с теми данными, что выдаёт на гора драйвер... Если драйвер не может прочитать, то DUP выдаст содержимое памяти, кое практически непредсказуемо. Хотя возможны варианты от версии системы... Но если драйвер ничего не прочитал, то и ...
А так, только либо обойти дефектный участок, либо колюч /IGNORE

Hunta
05.11.2020, 18:50
кое практически непредсказуемо
Не обязательно

AFZ
05.11.2020, 22:45
cop/dev/ver dk1:/start:51./end:1599. dk2:/start:51.В общем так. Я сразу не сообразил, что ключи /START и /END надо указывать вместе. Отписался, немного подождал и, по-быстрому, накидал программулю. Залил ее по сети на 386-ю, выполнил. Блоки 0-49 копировала обычная COPY/DEV, потом обламывалась, блоки 51 и пока диск не кончится копировала программуля. Скопировал, она стала по облому очередного .readw. Глянул R4 - там 3150, т.е. 1640, значит блоки 51-1639 скопировались нормально. Сохранил, пришел, глянул в конференцию, а тут мне советы дают. Первый я проверил, не пошло, отписался, пошел, убрал машинку в дальнюю кладовку, пришел, глянул, а тут продолжение...

.ENABL LC
.dsabl mcl, gbl
.mcall .lookup, .readw, .writw, .close, .exit
r6 = %6
r7 = %7

start: .looku #ar, #0, #SRC, #0
777
.looku #ar, #1, #DST, #0
777
mov #51.,R4


l1: .readw #ar, #0, #buf, #256., r4
bcc 1$
0,1,0
1$: .writw #ar, #1, #buf, #256., R4
bcc 2$
0,2,0
2$: inc r4
br L1


ar: .blkw 12
src: .rad50 /my2/
0,0,0,0
dst: .rad50 /my1/
0,0,0,0
maxblk: 1600.,1620.,1640.,1660.



buf: 0
.end start

hobot
06.11.2020, 01:55
В общем так. Я сразу не сообразил, что ключи /START и /END надо указывать вместе. Отписался, немного подождал и, по-быстрому, накидал программулю. AFZ , перетащил исходник выше в эмулятор ДВК, в качестве проверки указал все дорожки с 0 до 79. , в качестве
устройств MY2 - источник, MY1- копия (создаваемая)



BLCK=000001/000001. ADDR=001054/001054 TYPE=WORDS DESS V05.00e
000/ 012700 001200 012710 000400 012760 001224 000002 005060 *@...H...p.....0.*
020/ 000004 104375 000777 012700 001200 012710 000401 012760 *..}...@...H...p.*
040/ 001236 000002 005060 000004 104375 000777 012704 000117 *....0...}...D.O.*
060/ 012700 001200 012710 004000 010460 000002 012760 001260 *@...H...0...p.0.*
100/ 000004 012760 000400 000006 005060 000010 104375 103003 *..p.....0...}...*
120/ 000000 000001 000000 012700 001200 012710 004401 010460 *......@...H...0.*
140/ 000002 012760 001260 000004 012760 000400 000006 005060 *..p.0...p.....0.*
160/ 000010 104375 103003 000000 000002 000000 005204 000730 *..}...........X.*
200/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
220/ 000000 000000 052510 000000 000000 000000 000000 052507 *....HU........GU*
240/ 000000 000000 000000 000000 003100 003124 003150 003174 *........@.T.h.|.*
260/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
300/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
320/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
340/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
360/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*

STACK : 001016 001022 001024 001026 001032 001036 001044 001050 001052

MACRO-11: MOV #000117,R4


BLCK=000001/000001. ADDR=001054/001054 TYPE=RADIX DESS V05.00e
000/ CSH P CSP FP CTP PT B AYH *@...H...p.....0.*
020/ D U6/ L1 CSH P CSP FQ CTP *..}...@...H...p.*
040/ P0 B AYH D U6/ L1 CSL A9 *....0...}...D.O.*
060/ CSH P CSP AKH B0 B CTP QH *@...H...0...p.0.*
100/ D CTP FP F AYH H U6/ UQ$ *..p.....0...}...*
120/ A CSH P CSP AQY B0 *......@...H...0.*
140/ B CTP QH D CTP FP F AYH *..p.0...p.....0.*
160/ H U6/ UQ$ B A$L K2 *..}...........X.*
200/ *................*
220/ MY2 MY1 *....HU........GU*
240/ A A T AA AAT *........@.T.h.|.*
260/ *................*
300/ *................*
320/ *................*
340/ *................*
360/ *................*

STACK : 001016 001022 001024 001026 001032 001036 001044 001050 001052

MACRO-11: MOV #000117,R4


Драйвер MY загрузил, стартанул AFZBLK.SAV и молчание...даже к дисководам нет обращения?

Hunta
06.11.2020, 08:08
нет обращения
И не будет. Но все вопросы - к автору, за каким он так сделал

ZELMUG
15.07.2021, 19:40
Все прошло, но пришло время собирать Камни.
Нет у меня ДВК, нет УКНЦ, но есть уверенность в необходимости ДИАМСа в новой среде - в среде WINDOWS 10, как ПРИЛОЖЕНИЕ *УМНЫЙ ДОМ ДИАМСа*
МТС делает различные УМНЫЕ УСТРОЙСТВА, а умнее ДИАМСа я не встречал на своем долгом ПУТи

ZELMUG
17.07.2021, 00:03
hobot, Земляк, и где в Зеленограде Вы обитаете?

AFZ
18.07.2021, 09:21
но есть уверенность в необходимости ДИАМСа в новой среде - в среде WINDOWS 10Если что, под винды до сих пор раздается бесплатно MSM-Workstation. Детально я в нее не вникал, но под ХРеновиной она еще работала вполне нормально. Подозреваю, что и под современными WOW64, хоть 7-й винды, хоть 10-й, она тоже пойдет, максимум, придется подкрутить настройки совместимости...

AFZ
21.05.2022, 11:41
Да там блин этот RUNOFF со своим хорошо продуманным языком форматирования, которое не хочется терять, и, при этом, хочется коротких путей для конверсии.Кстати, мы все забыли о формате RTF. А он, похоже, вполне подойдет для конверсии из этого самого RUNOFF. Конверсия, правда, будет двухпроходная, не меньше, надо будет сначала расставить метки нужных мест, собрать оглавдение и пр., и только потом окончательно все собрать в RTF. И, похоже, оно получится. Ближе к осени попробую это сделать на писюшном Диамсе, может, что и выйдет.