Важная информация

User Tag List

Страница 1 из 4 1234 ПоследняяПоследняя
Показано с 1 по 10 из 31

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

  1. #1
    Veteran
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    1,034
    Благодарностей: 331
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию ДИАМС (DSM-11)

    Начинаю тему про ДИАМС.

    Это отдельная операционная система со встроенным интерпретатором собственного языка программирования, встроенной же СУБД древовидного типа, набором утилит и прочих программ. Оригинальное название системы - 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 строка.
    Вложения Вложения
    • Тип файла: zip DSMDOC.zip (465.8 Кб, Просмотров: 86)
    Последний раз редактировалось AFZ; 24.03.2016 в 23:28.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  2. Эти 6 пользователя(ей) поблагодарили AFZ за это полезное сообщение:
    anasana (24.03.2016), hobot (24.03.2016), MacBuster (24.03.2016), perestoronin (13.05.2016), shattered (03.05.2016), Vamos (24.03.2016)

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

  4. #2
    Activist
    Регистрация
    12.04.2009
    Адрес
    Одесса
    Сообщений
    493
    Благодарностей: 437
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. Этот пользователь поблагодарил anasana за это полезное сообщение:
    hobot (24.03.2016)

  6. #3
    Veteran
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    1,034
    Благодарностей: 331
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

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

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

  7. Эти 2 пользователя(ей) поблагодарили AFZ за это полезное сообщение:
    anasana (25.03.2016), hobot (25.03.2016)

  8. #4
    Guru Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    4,497
    Благодарностей: 989
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Выложил и RNO, и отформатированный вариант.
    Начал собирать в сторонку все архивы из темы и смежные (RNO) и впитывать информацию,
    однозначно при добавлении в архив буду использовать ваш текст и ссылку на эту тему как
    на первоисточник (авторскую публикацию).
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  9. #5
    Veteran
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    1,034
    Благодарностей: 331
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  10. Эти 2 пользователя(ей) поблагодарили AFZ за это полезное сообщение:
    anasana (20.04.2016), hobot (21.04.2016)

  11. #6
    Veteran
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    1,034
    Благодарностей: 331
    Mentioned
    0 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 Кб, Просмотров: 79)
    • Тип файла: zip 4EMU.zip (635.4 Кб, Просмотров: 73)
    Последний раз редактировалось AFZ; 03.05.2016 в 23:03.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  12. Эти 7 пользователя(ей) поблагодарили AFZ за это полезное сообщение:
    Alex_K (03.05.2016), anasana (03.05.2016), hobot (03.05.2016), MacBuster (04.05.2016), Patron (03.05.2016), SuperMax (05.05.2016), Vamos (03.05.2016)

  13. #7
    Activist
    Регистрация
    12.04.2009
    Адрес
    Одесса
    Сообщений
    493
    Благодарностей: 437
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  14. #8
    Veteran
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    1,034
    Благодарностей: 331
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

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

  15. Этот пользователь поблагодарил AFZ за это полезное сообщение:
    anasana (04.05.2016)

  16. #9
    Veteran
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    1,034
    Благодарностей: 331
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Порог для вхождения в программирование на ДИАМСе настолько невысок, что можно считать, что его нет вообще. Имеешь понятие о ветвлении, циклах и массивах? Все. Можешь программировать на ДИАМСе. Никаких объявлений, описаний, деклараций и т.п. Локальная переменная появляется в тот момент, когда ей впервые присваивается значение и существует до тех пор, пока ее не убьют командой 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 - это входная для этой программы, если ее установить заранее, то будет преобразована дата, заданная этой переменной и только если ее не будет, программа возьмет системную дату.

    В общем, в ДИАМСе много всякого разного и интересного, одних руководств не одна сотня страниц. Если, вдруг, кого-то заинтересует, всегда готов подсказать.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  17. Эти 2 пользователя(ей) поблагодарили AFZ за это полезное сообщение:
    anasana (05.05.2016), hobot (05.05.2016)

  18. #10
    Moderator
    Регистрация
    25.08.2012
    Адрес
    г. Красноярск
    Сообщений
    242
    Благодарностей: 152
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    да, кстати у меня лежит какая-то сборка ДИАМС
    Все о БК ДВК УКНЦ VAX Alpha

    Архив ПО для ретрокомпьютеров

    предоставляю бесплатный хостинг на PDP-11.RU для проектов о ретрокомпьютерах

Страница 1 из 4 1234 ПоследняяПоследняя

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

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

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

Ваши права

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