User Tag List

Показано с 1 по 10 из 63

Тема: ДИАМС (DSM-11)

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Итак, выкладываю ДИАМС.

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

    Этот вариант ДИАМСа ставится на винчестер в качестве единственной ОС для конкретного ДВК. Первичный комплект поставки включает две дискеты: загрузочную, с которой систему ставят на винчестер и дискету с утилитами, которые не вошли на первую дискету. Если ставить ДИАМС на реальный ДВК, нужен процессор ВМ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). Она может попросить подождать (сброс кэшей), затем спросит, что делать, даем ей троечку, и она сообщает : ЭВМ готова к останову. Все, можно выключать (закрывать эмулятор).
    Вложения Вложения
    • Тип файла: zip DSM-FLO.zip (639.2 Кб, Просмотров: 342)
    • Тип файла: zip 4EMU.zip (635.4 Кб, Просмотров: 335)
    Последний раз редактировалось AFZ; 03.05.2016 в 23:03.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    13.12.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,072
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    81
    Поблагодарили
    65 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Итак, выкладываю ДИАМС.
    Вроде как хотели для Эл85 протестировать, или один и тот же образ?
    На DW один и тот же драйвер?

  4. #3

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Заодно пропатчил Y2k.
    Недолго мучилась старушка в высоковольтных проводах или литовский праздник Обломайтис!..

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

  5. #4

    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,504
    Спасибо Благодарностей отдано 
    331
    Спасибо Благодарностей получено 
    256
    Поблагодарили
    224 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    1 января 1841 года
    Оригинальная дата :-/ Не нашёл ни одного события в 1841-м ради чего его можно было выбрать.
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

  6. #5

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,810
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    150
    Поблагодарили
    81 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  7. #6

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  8. #7

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,810
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    150
    Поблагодарили
    81 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  9. #8

    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,504
    Спасибо Благодарностей отдано 
    331
    Спасибо Благодарностей получено 
    256
    Поблагодарили
    224 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    И 65535 дней - это 05 июня 2020 г. И все, больше ничего не сделаешь.
    В США умерла последняя получательница пенсии ветерана Гражданской войны
    Кто после этого не поверит в теорию заговора или в то, что мы живём в Матрице? ;-)
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

  10. #9

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,557
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    720
    Поблагодарили
    602 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CodeMaster Посмотреть сообщение
    В США умерла последняя получательница пенсии ветерана Гражданской войны
    Кто после этого не поверит в теорию заговора или в то, что мы живём в Матрице? ;-)
    Ну полный апофеоз... Это ж надо ТАААААК подгадать

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •