УКНЦ RAM.LST app

Материал из Emuverse
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Оригинальный документ RAM.LST составлен Alex_K (Alexey Kisly).
Начало — см. в УКНЦ RAM.LST.

ПРИЛОЖЕНИЕ 1. Полное описание управляющих и Esc-последовательностей

Ctrl+G  (007) - звуковой сигнал частотой 500 Гц, длительностью 0.32 сек(Bell).

Ctrl+H  (010) - в системе команд VT-52:
                   передвижение курсора на одну позицию влево. Если курсор
                   находился в крайней левой позиции строки, то он переходит
                   на последнюю позицию предыдущей строки. Если текущая
                   позиция располагалась в верхнем левом углу экрана, то
                   при разрешенном рулоне производится скроллинг изображения
                   вниз на одну символную строку, освободившаяся строка
                   закрашивается цветом фона, курсор становится в последнюю
                   позицию этой строки, при запрещенном рулоне курсор
                   перемещается в последнюю позицию последней строки (Left);
              - в системе команд 15ИЭ-00-013:
                   передвижение курсора в верхний левый угол экрана (Home).

Ctrl+J  (012) - передвижение курсора на одну позицию вниз. Если текущая строка
                была последней, то при разрешенном рулоне производится
                скроллинг изображения вверх, освободившаяся строка
                закрашивается цветом фона, при запрещенном рулоне курсор
                перемещается на первую строку (Line feed).

Ctrl+K  (013) - очистка конца строки. Текущая строка от позиции курсора
                включительно и до конца закрашивается цветом фона (CLEOL).

Ctrl+L  (014) - очистка экрана. Весь экран закрашивается цветом фона, а курсор
                перемещается в верхний левый угол экрана. Корректируется
                таблица видеострок экрана пользователя (устанавливается на
                начало видеопамяти) (CLS).

Ctrl+M  (015) - возврат каретки. Курсор перемещается в начало текущей строки
                (Carriage Return).

Ctrl+N  (016) - переключение на русский алфавит (РУС).

Ctrl+O  (017) - переключение на латинский алфавит (LAT).

Ctrl+R  (022) - скроллинг изображения вверх.

Ctrl+S  (023) - раздвижка строки. Символы в текущей строке от позиции курсора
                сдвигаются вправо. Освободившееся знакоместо в позиции курсора
                закрашивается цветом фона, последний символ в строке
                теряется (Insert space character).

Ctrl+T  (024) - сдвижка строки. Символы в текущей строке от позиции курсора
                сдвигаются влево. Символ в позиции курсора теряется, последнее
                знакоместо закрашивается цветом фона (Delete character).

Ctrl+U  (025) - последовательное исполнение Ctrl+M и Ctrl+J (CRLF).

Ctrl+V  (026) - скроллинг изображения вниз.

Ctrl+W  (027) - переключение на систему команд VT-52.

Ctrl+Y  (031) - передвижение курсора на одну позицию вправо. Если курсор
                находился в последней позиции строки, то он перемещается
                в начало следующей строки. Если курсор находился в последней
                позиции последней строки, то при разрешенном рулоне
                производится скроллинг изображения вверх, освободившаяся
                строка закрашивается цветом фона, курсор становится
                в первую позицию этой строки, при запрещенном рулоне курсор
                перемещается в начало экрана (Right).

Ctrl+Z  (032) - аналогично Ctrl+H в системе команд VT-52 (Left).

Ctrl+[  (033) - начало командной последовательности (Esc).

Ctrl+\  (034) - перемещение курсора на одну позицию вверх. Если курсор нахо-
                дился в верхней строке, то при разрешенном рулоне
                производится скроллинг изображения вниз, освободившаяся строка
                закрашивается цветом фона, при запрещенном рулоне курсор
                перемещается в последнюю строку (Up).

Ctrl+]  (035) - аналогично Ctrl+J (Down).

Ctrl+_  (037) - аналогично Ctrl+K (CLEOL).

Esc %!  (033 045 041) - установка режима работы терминала:
                Из четвертого символа используются два младших бита
                Esc %!0 - графический режим;
                Esc %!1 \
                Esc %!2 ! - текстовый режим (система команд VT-52).
                Esc %13 /

Esc =   (033 075) - включение режима дополнительной клавиатуры.

Esc >   (033 076) - выключение режима дополнительной клавиатуры.

Esc A   (033 101) - аналогично Ctrl+\ (Up).

Esc B   (033 102) - аналогично Ctrl+J (Down).

Esc C   (033 103) - аналогично Ctrl+Y (Right).

Esc D   (033 104) - аналогично Ctrl+H в системе команд VT-52 (Left).

Esc E   (033 105) - установка системы команд 15ИЭ-00-013.

Esc H   (033 110) - аналогично Ctrl+H в системе команд 15ИЭ-00-013 (Home).

Esc I   (033 111) - аналогично Ctrl+\ (Up).

Esc J   (033 112) - очистка конца страницы. Текущая строка справа от позиции
                    курсора и все нижележащие строки заполняются цветом фона
                    (CLEOP).

Esc K   (033 113) - аналогично Ctrl+K (CLEOL).

Esc P   (033 120) - программирование функциональных клавиш и шрифтов:
      1. Программирование функциональных клавиш.

  Esc P<сохр>;|<код>/<значение>;<прод>
  <прод> --> <код>/<значение>;<прод>
  <прод> --> Esc /
  <сохр> --> используется только младший бит символа. 0 или 1
        0 - все прежние значения функциональных клавиш стираются;
        1 - значения сохраняются;
  <код> --> число от 1 до 25, задающее номер функциональной клавиши;
       1-5        <К1-К5>
       6-10       НР+<К1-К5>
      11-15     ГРАФ+<К1-К5>
      16-20      УПР+<К1-К5>
      21-25     ФИКС+<К1-К5>
  <значение> --> последовательность шестнадцатеричных чисел, задающих
                 ASCII-коды символов;

  На клавишу К6 назначается строка : DIR %%.SYS<ВК>
      Esc P;1|6/4449522025252E5359530D; Esc /

      2. Программирование шрифтов.

  Esc P;<код>;@<верхний_ряд>@<нижний_ряд><прод>
  <прод> --> @<верхний_ряд>@<нижний_ряд><прод>
  <прод> --> Esc /
  <код> --> ASCII-символ, шрифт которого перепрограммируется;
  <верхний_ряд> --> последовательность столбцов по пять точек;
  <нижний_ряд> --> последовательность столбцов по шесть точек;

     ----              ----
      ! !  1            ! !  1
     ----              ----
      ! !  2            ! !  2
     ----              ----
      ! !  4            ! !  4
     ----              ----
      ! !  8            ! !  8
     ----              ----
      ! ! 16            ! ! 16
     ----              ----
                        ! ! 32
                       ----

  При программировании рядов соответственно используются младшие пять или
шесть разрядов кода символа.

      -----------------
      ! ! ! ! ! ! ! ! !
      -----------------
      ! !0!0!0!0!0!0! !      000000
      -----------------     0      0
      !0! ! ! ! ! ! !0!     0 0  0 0
      -----------------     0      0
      !0! !0! ! !0! !0!     0 0000 0
      -----------------     0  00  0
      !0! ! ! ! ! ! !0!     0      0
      -----------------      000000
      !0! ! ! ! ! ! !0!
      -----------------
      !0! !0!0!0!0! !0!
      -----------------
      !0! ! !0!0! ! !0!
      -----------------
      !0! ! ! ! ! ! !0!
      -----------------
      ! !0!0!0!0!0!0! !
      -----------------
      ! ! ! ! ! ! ! ! !
      -----------------

  Перепрограммирование шрифта символа # :
    Esc P;#;@\BJBBJB\@OPRVVRPO Esc /

  ВНИМАНИЕ !!! В реализации Esc-последовательности программирования шрифта
  в ПЗУ УКНЦ допущена ошибка при вычислении адреса сохранения символа
  в буфере, при вычислении смещения производится умножение не на 11 (высота
  символа), а на 9.

Esc Y   (033 131) - позиционирование курсора:
                    Esc Y <строка><столбец>
                    <строка> и <столбец> - ASCII-символы с кодами строка+32 и
                    столбец+32. Если в какой-либо позиции координаты выходят
                    за допустимые пределы, то позиционирование по данному
                    параметру не производится.

Esc Z   (033 132) - в регистры клавиатуры посылается последовательность
                    Esc /Z (033 134 132). Терминал VT-100 в режиме VT-52.

Esc [   (033 133) - последовательности VT-100:
                    Esc [r - аналогично Ctrl+L (CLS);
                    Esc [2h - отключение клавиш с одиночными кодами. Действуют
                              клавиши, на которые назначены строки символов;
                    Esc [2l - включение клавиш с одиночными кодами.

Esc 200 (033 200) - аналогично Esc A.

Esc 201 (033 201) - аналогично Esc B.

Esc 202 (033 202) - аналогично Esc D.

Esc 203 (033 203) - аналогично Esc C.

Esc 204 (033 204) - позиционирование курсора в первую строку текущего столбца.

Esc 205 (033 205) - позиционирование курсора в последнюю строку тек. столбца.

Esc 206 (033 206) - аналогично Ctrl+M.

Esc 207 (033 207) - позиционирование курсора в последнюю позицию тек. строки.

Esc 212 (033 212) - аналогично Ctrl+T.

Esc 213 (033 213) - аналогично Ctrl+S.

Esc 214 (033 214) - аналогично Ctrl+V.

Esc 215 (033 215) - аналогично Ctrl+R.

Esc 220 (033 220) - исполнение Esc C и Esc A.

Esc 221 (033 221) - исполнение Esc D и Esc B.

Esc 222 (033 222) - исполнение Esc A и Esc D.

Esc 223 (033 223) - исполнение Esc B и Esc C.

Esc 224 (033 224) - аналогично Esc H.

Esc 225 (033 225) - аналогично Ctrl+L.

Esc 226 (033 226) - аналогично Esc J.

Esc 227 (033 227) - аналогично Ctrl+K.

Esc 230 (033 230) - аналогично Ctrl+U.

Esc 231 (033 231) - аналогично Esc Y.

Esc ГРАФ-@ (033 240) - установка цвета символа. Предыдущий цвет запоминается.
                       Esc ГРАФ-@ <цвет>
                       <цвет> - 0 ... 7. Используются три младших бита.

Esc ГРАФ-A (033 241) - установка цвета знакоместа.Предыдущий цвет запоминается.
                       Esc ГРАФ-A <цвет>
                       <цвет> --> 0 ... 7. Используются три младших бита.

Esc ГРАФ-B (033 242) - установка цвета фона.
                       Esc ГРАФ-B <цвет>
                       <цвет> --> 0 ... 7. Используются три младших бита.

Esc ГРАФ-C (033 243) - установка режима инверсии.

Esc ГРАФ-D (033 244) - установка режима подчеркивания.

Esc ГРАФ-E (033 245) - установка длины строки:
                       Esc ГРАФ-E 1 (033 245 061) - длина 40;
                       Esc ГРАФ-E 2 (033 245 062) - длина 80.

Esc ГРАФ-F (033 246) - установка формата экрана:
                       Esc ГРАФ-F 1 (033 246 061) - 80x24;
                       Esc ГРАФ-F 2 (033 246 062) - 40x24;
                       Esc ГРАФ-F 3 (033 246 063) - 20x24;
                       Esc ГРАФ-F 4 (033 246 064) - 10x24.

Esc ГРАФ-G (033 247) - установка цвета курсора.
                       Esc ГРАФ-G <цвет>
                       <цвет> --> 0 ... 7. Используются три младших бита.

Esc ГРАФ-W (033 267) - включение сетевого таймера в магистрали ЦП.

Esc ГРАФ-X (033 270) - установка паузы до нажатия любой клавиши.

Esc ГРАФ-\ (033 274) - вызов меню ЗАГРУЗКА. Экран очищается и вызывается
                       меню загрузка. После выбора пункта меню по нажатию
                       <ВК>,<0> или <ИСП> в регистры клавиатуры (канал 0)
                       посылаются два символа:
                        - код первого равен номеру пункта меню, умноженному
                          на два;
                        - код второго равен номеру устройства (имеет смысл
                          для пунктов ДИСК и КАССЕТА ПЗУ).

Esc ГРАФ-] (033 275) - установка системного режима клавиатуры, и если
                       в ячейке 22550 содержится 0, то на ЦП подается
                       сигнал HALT.

Esc ГРАФ-^ (033 276) - запуск тестовых программ. По окончании теста в регистры
                       клавиатуры (канал 0) посылается символ с кодом 177.

Esc ГРАФ-_ (033 277) - отмена режимов:
                       Esc ГРАФ-_ ГРАФ-@ - восстановление предыдущего цвета
                       (033 277 240)       символов;
                       Esc ГРАФ-_ ГРАФ-A - восстановление предыдущего цвета
                       (033 277 241)       знакоместа;
                       Esc ГРАФ-_ ГРАФ-C - отмена режима инверсии и 
                       (033 277 243)       подчеркивания;
                       Esc ГРАФ-_ ГРАФ-D - отмена режима инверсии и
                       (033 277 244)       подчеркивания;
                       Esc ГРАФ-_ ГРАФ-W - выключение сетевого таймера 
                       (033 277 267)       магистрали ЦП;
                       Esc ГРАФ-_ ГРАФ-] - установка пользовательского режима
                       (033 277 275)       клавиатуры, и если в ячейке 22550
                                           содержится 0, то с ЦП снимается
                                           сигнал HALT и в системном ОЗУ ЦП
                                           очищается ячейка с адресом 160114.

ПРИЛОЖЕНИЕ 2. Описание команд EMT и TRAP, используемых в ПЗУ ПП

EMT 14 - полная программная инициализация в области ПП (восстановление
         векторов, инициализация всех драйверов).

EMT 20 - программная инициализация клавиатурного драйвера.

EMT 22 - чтение ASCII-кода символа с ожиданием (результат в R0).
         Для чтения символа необходимо очистить ячейку по адресу 7042,
         а после установить ее значение равное 2. Это чтение не блокирует
         клавишу УСТ (вызов режима установки), т.к. при выходе из режима
         УСТ принудительно устанавливается значение 2 по адресу 7042,
         что приведет к получению неверного результата (результат будет
         передан ЦП по каналу 0). Блокировать клавишу УСТ можно так:

	MOV	PC,R0		; Переназначение обработки клавиши УСТ
	ADD	#SET$-.,R0
	MOV	R0,@#7114

          ..................................................

; П/п блокирования клавиши УСТ
SET$:	MOV	R0,-(SP)
	CLR	@#7070
	MOV	PC,R0
	ADD	#SET$-.,R0
	MOV	R0,@#7114
	MOV	(SP)+,R0
	JMP	@#174164

          ..................................................

	CLR	@#7114		; Разблокирование клавиши УСТ

EMT 24 - аналог EMT 22.

EMT 40 - программная инициализация терминального драйвера.

EMT 42 - вывод символа на экран (задается в R0).

EMT 44 - вывод строки символов на экран. Адрес строки символов расположен
         после команды EMT, конец строки - байт 0.

EMT 46 - аналогично EMT 44, но адрес строки задается в R1.

EMT 52 - вывод строки символов в верхнюю информационную строку. Адрес строки
         расположен после команды EMT. Первый байт - начальная позиция для
         вывода (0-39), далее следуют символы для вывода, конец - байт 0.
         Управляющие символы не обрабатываются и выводятся в соответствии
         с запрограммированным шрифтом (в стандартном фонте изображаются
         как пробелы).

EMT 56 - вывод строки символов в нижнюю информационную строку. Структура
         строки аналогично, как и в EMT 52.


TRAP 0 - вызов диспетчера процессов (текущий PC запоминается и
         после управление передается на адрес после TRAP 0).

TRAP 2 - вызывается для передачи символа ЦП по каналу 0/или ПП по запросам
         EMT 22/24. Это необходимо, если было затребовано чтение символа,
         а очередь была пуста.

TRAP 4 - вызывается для чтения символа с канала 0. Это необходимо, если
         со стороны ЦП затребован вывод очередного символа, а буфер
         в области ОЗУ ПП был переполнен.