Интерфейс оператора для узлов, которые исполняются мониторами в среде DOS, может быть разработан в виде мнемосхемы (набора строк с псевдографикой).
Профайлер без поддержки графических экранов (rtmg32.exe) обеспечивает отображение мнемосхем. Для корректной отработки ввода с клавиатуры не следует запускать профайлер из ИС.
Начальные операции задания мнемосхемы в ИС:
в узле конфигурируются COM-порты связи с терминалом и клавиатурой (не требуется в случае работы на локальном компьютере под Windows);
для узла задается тип терминала и клавиатуры (см. Задание параметров узла ). Для работы на локальном компьютере под Windows тип терминала – VGA, тип клавиатуры не задается;
в узле создается числовой канал, который связан с переменной Terminal типа INPUT (см. Группа ‘Терминалы’ и Подтип 66 ) и вызывает шаблон мнемосхемы или шаблон программы (или канал CALL.Mnemo, который связан с переменной Terminal и вызывает шаблон мнемосхемы);
Мнемосхема без использования шаблона может быть создана с помощью канала CALL.Mnemo, для которого задана только связь с переменной Terminal.
при необходимости ввода с клавиатуры в узле создается канал, который связан переменной Keyboard типа INPUT.
Первые три аргумента канала-мнемосхемы задают общие параметры отображения:
arg0 и arg1 – номера начальной и конечной строк для вывода при старте МРВ. Величина arg1-arg0+1 задает число одновременно отображаемых строк (размер окна терминала);
arg2 – флаги.
Объекты для вывода задаются последующими группами аргументов (до 4 аргументов в группе, одна группа задает один объект, разные объекты могут быть выведены в одну и ту же строку).
Если для любого из аргументов требуется задать постоянное значение, то эта операция должна быть выполнена в окне свойств канала-мнемосхемы (Значение по умолчанию).
В описании ниже указаны порядковые номера аргументов в группе.
Arg0 – сумма значений байта 0 этого аргумента и смещения по X (см. Подтип 66 ) задает начальное знакоместо для вывода объекта. Значение байта 1 задает длину строки.
Arg1 – сумма значений нулевого слова этого аргумента и смещения по Y (см. Подтип 66 ) задает номер строки для вывода объекта. Значение первого слова (SHOW) задает режим отображения.
Arg2 – байт 0 этого аргумента задает цвет объекта, байт 1 – цвет фона (значение фона больше 8 задает режим мигания):
Число |
Цвет |
Число |
Цвет |
0 |
Black (черный) |
8 |
Gray (серый) |
1 |
Blue (синий) |
9 |
Light Blue (светло-синий) |
2 |
Green (зеленый) |
A |
Light Green (светло-зеленый) |
3 |
Cyan (голубой) |
B |
Light Cyan (светло-голубой) |
4 |
Red (красный) |
C |
Light Red (светло-красный) |
5 |
Magenta (фиолетовый) |
D |
Light Magenta (светло-фиолетовый) |
6 |
Yellow (желтый) |
E |
Light Yellow (светло-желтый) |
7 |
White (белый) |
F |
Bright White (ярко-белый) |
Arg3 – привязка и формат вывода (см. ниже).
4 аргумента в группе должны быть созданы в том случае, если атрибут Параметр переменной Terminal равен 4 (см. Подтип 66 ).
Если Параметр=1, то не требуется создание аргументов, задающих знакоместо вывода и цвет (т.е. в группе должно быть 2 аргумента).
Если Параметр=2, то не требуется создание аргумента, задающего цвет (т.е. в группе должно быть 3 аргумента).
Значение Параметр=3 зарезервировано.
Формат вывода объекта зависит от типа данных аргумента arg3 следующим образом (см. Определение переменных и констант ):
BOOL – если значение привязки равно 0, выводится слово "FALSE", в противном случае – слово "TRUE";
1-байтовый – если к аргументу привязан канал FLOAT, выводится десятичное целочисленное представление его значения (%d). Если к аргументу привязан канал HEX16 или HEX 32, то формат вывода определяется по следующему алгоритму:
если канал имеет вид представления DEC (см. Канал класса HEX16 ), то выводится десятичное целочисленное представление его значения (%d);
если канал имеет вид представления HEX, то формат вывода зависит от значения SHOW:
0 – HEX
1 – BIN
2-байтовый – аналог предыдущего для 2-байтовых значений;
4-байтовый – аналог предыдущего для 4-байтовых значений за одним исключением – в этом случае нет вывода в двоичном формате (SHOW не анализируется);
любой из временных – дата/время в стандартном формате;
REAL или LREAL – формат вывода зависит от SHOW: 0 – d, 1 – 1f, 2 – 2f, 3 – 3f, 4 – 4f, 5 – 6.3f, 6 – 6.2f, 7 – e (см. Формат Си вывода чисел ).
Если для arg3 привязка не задана, используется значение аргумента по умолчанию или задаваемое в программе (с помощью этого механизма можно создать, например, цветовой индикатор).
Если значение байта 1 arg0 равно 0, длина строки максимальна (определяется атрибутом Размер строки переменной Terminal).
Если SHOW<128, перед выводимой строкой выводится имя привязанного канала.
Если к arg3 привязан канал, связанный с переменной Keyboard типа INPUT (см. Подтип 66 ), то возможен ввод с клавиатуры и выполнение ряда других функций.
Если объектов Keyboard несколько, для перехода между ними используется клавиша Tab. Если вывод имени канала разрешен, активная клавиатура маркируется знаком "=" (после имени канала), пассивная – знаком "*".
Набираемое на клавиатуре значение записывается во вход канала Keyboard и отображается после знака "=". В ходе набора могут быть использованы следующие клавиши: ESC – очистить ввод, DEL или BACKSPACE – стереть последний символ. Если для канала Keyboard заданы границы LL и HL, то при нажатии клавиши к текущему введенному значению прибавляется HL, а при нажатии клавиши – LL. Для ввода нужно нажать клавишу ENTER – по этой команде введенное значение копируется в выход канала (атрибут Q), а атрибут In обнуляется.
Код нажатой клавиши, не имеющей кода ASCII, записывается в канал @Key_Code (см. Группа СИСТЕМНЫЕ ).
Дополнительные командные клавиши:
/ – прокрутка мнемосхемы в окне терминала;
HOME – отображение в окне терминала начальных строк мнемосхемы;
ESC – многократное нажатие этой клавиши приводит к останову МРВ и выходу в DOS (в WINDOWS – только останов).