Итак, выкладываю ДИАМС.
Он, конечно, еще не до конца отлажен, тут и эмулятор кое-где еще колбасит, и в ДИАМСе не все в порядке, тем не менее, уже можно выложить предварительный вариант.
Как я уже говорил, ДИАМС – это комплекс, включающий в себя операционную систему с разделением времени, интерпретатор собственного языка программирования и СУБД.
Этот вариант ДИАМСа ставится на винчестер в качестве единственной ОС для конкретного ДВК. Первичный комплект поставки включает две дискеты: загрузочную, с которой систему ставят на винчестер и дискету с утилитами, которые не вошли на первую дискету. Если ставить ДИАМС на реальный ДВК, нужен процессор ВМ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 и, наконец видим сообщение:Давим Enter и на запрос КИПа набираем:Код:*** Система ДВК 3.2 ДИАМС 3.3 <1> загружена и работает *** ВЫХОДЗдесь TST - КИП, SYS - код доступа программиста (КДП). ДИАМС отвечает нам приглашением ">" Все. Можно подавать команды ДИАМСа.Код:TST:SYS
Да, ДИАМС не имеет команд по типу обычных операционок, вроде DIR, COPY, PRINT и т.п. Зато ему в командной строке можно набирать любые команды языка ДИАМС, он их будет интерпретировать в командном режиме. Чаще всего в командном режиме подают команду DO с указанием имени программы, которую следует выполнить. И все функции, привычные для обычных ОС, здесь тоже выполняются библиобечными программами-утилитами. Допустим, чтобы получить список доступных программ, следует подать команду(D - сокращение от DO, ^ указывает, что перед выполнением программу нужно загрузить с диска, % - признак библиотечной программы и RD - сокращение от Routine Directory) Полный список программ-утилит и библиотечных программ присутствует в руководстве программиста и руководстве системного программиста.Код:D ^%RD
- - - Добавлено - - -
Немного о языке. Язык ДИАМС - интерпретируемый. И, учитывая, что в нем есть команды, предписывающие исполнить данные, как программу, предварительная компиляция кго невозможна. Тем не менее, интерпретатор очень быстрый. Я лично наблюдал и СМ-4, и1420 без кэша, и ДВК с ВМ3, которые весело обслуживали 4-8 рабочих мест бухгалтеров, учетчиков и пр., без малейших тормозов. Ну, конечно, когда, допустим, пускали расчет зарплаты по предприятию с полутысячей работников, оно задумывалось надолго (1420 с кэшем считала минут 5-7, а когда кэш сдох и его отключили, стала считать чуть ли не два часа. Впрочем, про минуты я уже не совсем уверен, давно было. Зато про два часа помню хорошо). Тем не менее, на остальных рабочих местах в это время вполне можно было работать дальше.
Так вот. У этого языка один-единственный тип данных - строка. Если требуется число, оно представляется строкой цифр. В языке имеются переменные и массивы, т.е. переменные с индексами. Массивы в ДИАМСе всегда разреженные, то есть хранятся только те элементы, которые были определены; элементы массивов, которым значения не присваивались, не существуют и места не занимают. Кроме обычных переменных и массивов (они называются локальными), существуют и глобальные переменные и массивы. Локальные переменные и массивы создаются в оперативной памяти раздела, по окончании задачи они, как и везде, уничтожаются. А вот глобальные переменные и массивы создаются и хранятся на диске, и к задаче напрямую не привязаны, задача закончилась, а глобальные данные остались, запусти ее снова (или запусти другую задачу, работающую с этими данными), ДИАМС достанет эти данные с диска, и вперед, работайте дальше.
Собственно, эти глобальные массивы и есть база данных ДИАМСа.
- - - Добавлено - - -
Если работа на каком-то терминале в режиме программиста закончена, его надо закрыть. (Если терминал запускался не в режиме программиста, а в режиме прикладной задачи, по окончании этой задачи он закроется сам.) Закрытие терминала и выход из режима программиста происходит по команде HALT (H). Ее же положено использовать для перехода из КИПа в КИП.
Если работа закончена на всех терминалах и пора выключать ЭВМ, то систему следует закрыть, чтобы она досохранила все, что положено, включая сброс дисковых кэшей. Для этого надо выйти из того КИПа, где вы работали (командой H) и войти в КИП MGR, где подать команду(т.е. загрузить с диска и выполнить программу System ShutDown). Она может попросить подождать (сброс кэшей), затем спросит, что делать, даем ей троечку, и она сообщает : ЭВМ готова к останову. Все, можно выключать (закрывать эмулятор).Код:D ^SSD




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 


