Google Groups Home
Help | Sign in
Recent pages and files
мониторная система "дубна"    

Мониторная система "Дубна" предоставляет возможность трансляции программ, написанных на одном из имеющихся языков программирования, связывания их с другими предварительно оттранслированными программами, и запуска на выполнение.


Пакет задачи выглядит следующим образом:
    ШИФР 419999 ЗСХ^
    EEВ1А3
    *NAME Название задачи
    ...
    *END FILE
    ``````
    ЕКОНЕЦ

Управляющие карты мониторной системы начинаются со звёздочки. Значащими считаются первые пять букв команды. Например, *END FILE можно сократить до *END F. Комментарии можно вставлять в виде карт звёздочка - пять пробелов - произвольный текст.


Первой картой должна быть команда *NAME. Она задает имя задачи длиной до 18 символов, которое будет напечатано большими буквами в начале выдачи.


Последней картой должна быть команда *END FILE.

Трансляция

Для выбора транслятора перед текстом программы необходимо указать соответствующую управляющую карту. Имеются трансляторы со следующих языков программирования:

  • *FTN -- Фортран-ГДР
  • *FORTRAN -- Фортран-Дубна
  • *FOREX -- Форекc
  • *PASCAL -- Паскаль
  • *ALGOL -- Алгол-ГДР
  • *ASSEMBLER -- Автокод Мадлен
  • *BEMSH -- Автокод БЕМШ

Режимами трансляции можно управлять с помощью карт: 

  • *NO LIST -- отменяет печать текста исходной программы (по умолчанию печать включена)
  • *FULL LIST -- вызывает печать объектного или промежуточного ассемблерного кода
  • *OPTIMIZATION -- установка оптимизирующего режима трансляции
  • *NO OPTIMIZATION -- отмена режима оптимизации
  • *РUNСН -- запрашивает вывод объектного модуля на перфокарты

Обнаружив строку, начинающуюся не со звездочки, мониторная система вызывает выбранный транслятор. После того, как транслятор закончит работу, будет продолжена обработка управляющих карт. Таким образом, можнов одной задаче оттранслировать несколько программных модулей, в том числе используя различные языки программирования.

Выполнение 

Для запуска программы на выполнение служит карта *EXECUTE. Она вызывает загрузчик, который находит объектный модуль с именем PROGRAM и загружает его в оперативную память с адреса 01000. К нему подключаются другие необходимые объектные модули. Процесс связывания завершается, когда все межмодульные связи будут разрешены. После этого управление передается модулю PROGRAM.

 

Управляющая карта

  • *MAIN name 

позволяет указать имя  головной процедуры, которое будет использоваться вместо PROGRAM при загрузке.

 

Обычно загрузчик печатает таблицу модулей и их адреса в оперативной памяти. Этим можно управлять с помощью карт:

  • *NO LOAD LIST -- отменяет печать таблицы загрузки
  • *SYSTEM LOAD LIST -- вызывает печать таблицы загрузки не только при *EXECUTE, но и при вызове трансляторов и служебных процедур

После карты *EXECUTE могут находиться данные для программы. 

 

Пример пакета задачи: 

    ШИФР 419999 ЗСХ^
    EEВ1А3
    *NAME ПРИВЕТИК
    *FULL LIST
    *FTN
    PROGRAM HELLO
    PRINT 10
    10 FORMAT ('ПРИВЕТ! ЭТО ФОРТРАН.')
    STOP
    END
    *NO LOAD LIST
    *EXECUTE
    *END FILE
    ``````
    ЕКОНЕЦ

Библиотеки

Объектные модули, полученные при компиляции, хранятся в виде так называемых библиотек. Текущая библиотека задачи вначале пуста, и при компиляции пополняется новыми модулями. Сохранить текущую библиотеку на внешнем носителе можно командой:

    *TO PERSO: НУЗЗЗЗ

Прочитать библиотеку с внешнего носителя в текущую можно командами:

    *PERSO: НУЗЗЗЗ
    *PERSO: НУЗЗЗЗ,CONT

В первом случае текущая библиотека будет заменена на указазанную (старое содержимое потеряется). С флагом CONT текущая библиотека будет дополнена новыми модулями (объединение содержимого).

 

Можно дать указание загрузчику искать необходимые модули во внешней библиотеке, не считывая её в текущую:

    *LIBRARY: НУ

Если требуется ненулевой номер начальной зоны, его можно задать командой:

    *TAPES: НУЗЗЗЗ

Чтение карт с внешнего носителя

Картой *READ: НУЗЗЗЗ можно переключить мониторную систему на чтение управляющих карт с указанного внешнего носителя. Последней картой должна быть *READ OLD, которая возвращает систему обратно.

Служебные программы

Картой *CALL можно вызывать полезные служебные программы из библиотеки:
  • *CALL FULLMEMORY -- увеличение размера памяти для сегментов кода и данных, уменьшая глубину стека
  • *CALL YESMEMORY -- еще большее увеличение памяти для сегментов кода и данных
  • *CALL TCATALOG -- выдача списка имён, находящихся в текущей библиотеке
  • *CALL PLCATALOG: НУЗЗЗЗ -- выдача списка имён внешней библиотеки

Детранслятор

В библиотеке на диске 2048 с зоны 1614 имеется служебная программа DTRAN, которая может детранслировать указанный объектный модуль в текст на автокоде Мадлен. Результат будет записан по 1-му направлению, заканчивая картой *READ OLD. Например, попробуем детранслировать стандартную подпрограмму STOP*, а затем транслировать её, распечатав текст:

    ШИФР 419999 ЗСХ^
    ЛЕН 41(2048)^
    ЕЕВ1А3
    *NAME DTRAN
    *PERSO: 411614, CONT
    *CALL DTRAN(STOP*)
    *ASSEM
    *READ: 1
    *END FILE
    ``````
    ЕКОНЕЦ

Результат можно посмотреть здесь.

Version: 
Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2008 Google