УКНЦ ROM disasm 3

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

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


; *****************************************************************
; *                                                               *
; *                  ДРАЙВЕР ТЕКСТОВОГО ТЕРМИНАЛА                 *
; *                                                               *
; *                     Адреса 107744 - 125027                    *
; *                                                               *
; *****************************************************************

; П/п начальной инициализации
107744$:JSR     R5,173730$      ; Очистка ОЗУ
        .WORD   13142,4017      ; Начальный адрес - 13142, число слов - 4017
107754$:MOV     #0,@#177026     ; Разрешить все планы видеопамяти
        CLR     @#177020        ; Очистка регистров цвета кода фона
        CLR     @#177022
        CLR     R0              ; Цикл очистки видеопамяти
        MOV     #177010,R1
        MOV     #100000,@R1
        MOV     #100000,R2
        MOV     #177024,R3
110014$:MOV     R0,@R3
        INC     @R1
        SOB     R2,110014$
        MOV     #175700$,@#320  ; Адрес п/п обработки прерывания канала 0,пр.
        MOV     #200,@#322
        BIS     #1,@#177066     ; Разрешить прерывания канала 0, приемник
        CALL    110266$         ; Запрограммировать таблицу видеострок
        MOV     #117430$-13,R0  ; Настройка таблицы адресов рисунков символов
        MOV     #14142,R1       ; на область ПЗУ (адреса 117430-125027)
        MOV     #400,R2
        MOV     #13,R3
110070$:ADD     R3,R0
        MOV     R0,(R1)+
        SOB     R2,110070$
        MOV     #112462$,R0     ; Настройка таблицы адресов п/п управляющих и
        BR      110110$         ; Esc-последовательностей
110104$:MOV     (R0)+,13142(R1)
110110$:MOV     (R0)+,R1
        BNE     110104$
        MOV     #2000,@#22542   ; Настройка указателей на буферы
        MOV     #2000,@#22544
        MOVB    #14,@#2000      ; Положить символ Ctrl+L в буфер (CLS)
        JSR     R5,110656$      ; Загрузка в ОЗУ ТВ для верхней строки
        .WORD   112040$,22560
        JSR     R5,110656$      ; Загрузка в ОЗУ ТВ для экрана пользователя
        .WORD   112142$,22656
        JSR     R5,110656$      ; Загрузка в ОЗУ ТВ для экрана установки
        .WORD   112252$,22754
        JSR     R5,110656$      ; Загрузка в ОЗУ ТВ для нижней строки
        .WORD   112360$,23052
        MOV     #2270,@#272     ; Настройка первой видеостроки
110204$:MOV     #22656,R5       ; R5 = адрес ТВ для экрана пользователя
110210$:MOV     62(R5),@#23160  ; Указатель на регистр управления отображением
                                ; экраном пользователя
        MOV     72(R5),@#23164  ; Режим использования курсора
        INC     @#7066          ; Увел. счетчик симв. в буфере (для вывода CLS)
110230$:MOV     R5,@#23150      ; Сделать текущей ТВ, адрес которой в R5
        MOV     34(R5),@#177016 ; Настройка регистра кода цвета точки
        MOV     40(R5),@#177020 ; Настройка регистра кода цвета фона
        MOV     40(R5),@#177022
        MOVB    70(R5),@64(R5)  ; Установить цвет курсора
        RETURN
; П/п программирования таблицы видеострок
110266$:MOV     #1131,R2        ; Число программируемых видеострок (ВС)
        MOV     #7034,R1        ; Адрес конца
        MOV     R1,@#7036
110302$:MOV     R1,R0           ; Цикл начального заполнения таблицы
        MOV     R0,-(R1)
        TST     -(R1)
        SOB     R2,110302$
        JSR     R5,110550$      ; Заполнение зоны адресов для ВС вехней строки
        .WORD   175700,2410,12,50
        MOV     R0,@#2464
        MOV     #177460,@#2474
        JSR     R5,110550$      ; Заполнение зоны адресов для ВС польз. экрана
        .WORD   100000,2500,436,120
        MOV     #177460,@#4674
        JSR     R5,110550$      ; Заполнение зоны адресов для ВС УСТ экрана
        .WORD   177460,4704,25,0
        JSR     R5,110550$
        .WORD   154540,5030,334,50
        JSR     R5,110550$
        .WORD   177460,6610,26,0
        MOV     #177460,@#6744
        JSR     R5,110550$      ; Заполнение зоны адресов для ВС нижней строки
        .WORD   176570,6754,13,50
        JSR     R5,110550$
        .WORD   177460,7030,2,0
        MOV     #2,R0           ; Выделение регистров управления отображением,
        MOV     #6,R1           ; цветом и подправка структуры таблицы
        BIS     R0,@#2366
        BIS     R1,@#2376
        BIS     R0,@#2456
        BIS     R1,@#2466
        MOV     #2500,@#4666
        BIS     R1,@#4676
        MOV     #6742,@#4536
        MOV     #6742,@#6736
        BIS     R1,@#6746
        RETURN
; П/п заполнения зоны адресов для ВС
; 1 параметр - начальный видеоадрес
; 2 параметр - начальный адрес таблицы ВС
; 3 параметр - размер таблицы (число видеострок)
; 4 параметр - длина видеостроки
110550$:MOV     (R5)+,R0
        MOV     (R5)+,R1
        MOV     (R5)+,R2
        MOV     (R5)+,R3
110560$:MOV     R0,(R1)+
        ADD     R3,R0
        TST     (R1)+
        SOB     R2,110560$
        RTS     R5
; П/п установки таблицы ВС на начало видеопамяти
110572$:ADD     74(R5),PC       ; Рулон присутствует ?
        BR      110654$         ; Нет
        CLR     @#23170         ; Число строк для скроллинга = 0
        MOV     @#2476,R0       ; Корректировка таблицы
        ADD     #2040,R0
        CMP     R0,#4670
        BLOS    110626$
        SUB     #2170,R0
110626$:MOV     R0,-2(R0)
        MOV     #6742,@#4536    ; Установка начальных значений
        MOV     #2500,@#2476
        MOV     #2500,30(R5)
110654$:RETURN
; П/п формирования таблицы видеопараметров
110656$:MOV     (R5)+,R0        ; R0 = адрес таблицы в ПЗУ
        MOV     @R5,R1          ; R1 = адрес таблицы в ОЗУ
        JSR     R5,110716$      ; Перекачка таблицы в ОЗУ
        MOV     (R5)+,R1
        MOV     (R0)+,@64(R1)   ; Заполнение регистра управления отображением
        MOV     (R0)+,@54(R1)
        MOV     (R0)+,@50(R1)   ; Заполнение регистра управления цветом
        MOV     (R0)+,@52(R1)
        RTS     R5
; П/п перекачки
110712$:MOV     (R5)+,R0
        MOV     (R5)+,R1
110716$:MOV     (R0)+,R2        ; R2 = число слов
110720$:MOV     (R0)+,(R1)+
        SOB     R2,110720$
        RTS     R5
;  ***  ОСНОВНАЯ ПОДПРОГРАММА УПРАВЛЕНИЯ ТЕКСТОВЫМ ТЕРМИНАЛОМ  ***
110726$:MOV     #174164$,-(SP)  ; Занести в стек адреса возвратов
        MOV     #111126$,-(SP)
        MOV     SP,@#23152
        MOV     @#23154,SP
        MOV     @#23150,R5      ; R5 = адрес текущей ТВ
        INC     @#7066          ; Установить флаг вызова п/п перекл. курсора
110756$:INC     @#7064
; П/п чтения очередного символа, посланного по каналу 0
110762$:DEC     @#7064          ; Уменьшить счетчик символов
        BEQ     111050$         ; Символов нет
        MOVB    @22542,R0       ; Прочесть символ
        INC     @#22542         ; Подкорректировать указатель
        BIC     #200,@#22542
        BIC     #177400,R0
        CMP     R0,#40          ; Это управляющие коды ?
        BHIS    111024$         ; Нет
        ADD     @#23174,PC      ; Разрешено чтение управляющих символов ?
111024$:RETURN                  ; Да
111026$:CMP     R0,#33          ; Это символ Esc ?
        BEQ     111044$         ; Да
        ASL     R0              ; Вызов п/п обработки управляющего символа
        CALL    @13142(R0)
        BR      110762$
111044$:JMP     113544$
111050$:ADD     @#22546,PC      ; Была попытка передачи символа ?
        BR      111062$         ; Нет
        TRAP    4
        BR      110756$
111062$:MOV     @#7056,R0       ; R0 = указатель текущей задачи
        MOV     #110726$,22(R0) ; Запомнить адрес возврата
        MOV     SP,@#23154
        MOV     @#23152,SP
        CMP     (SP)+,(SP)+
        JMP     174164$         ; Переход на цикл вызова подпрограмм
111112$:ADD     @#22546,PC      ; Была попытка передачи символа ?
        RETURN                  ; Нет
        TRAP    4
        INC     @#7064
111126$:DEC     @#7064          ; Уменьшить счетчик символов
        BEQ     111112$         ; Символов нет
        TST     @#7060          ; Были нажаты клавиши ?
        BEQ     111204$         ; Нет
        RETURN
; Точка входа в подпрограмму
111144$:INC     @#7066          ; Установить флаг вызова п/п перекл. курсора
        MOV     @#23150,R5      ; R5 = адрес текущей таблицы видеопараметров
        MOV     34(R5),@#177016 ; Загрузка регистров кода цвета и кода фона
        MOV     40(R5),@#177020
        MOV     40(R5),@#177022
        MOVB    70(R5),@64(R5)  ; Установить цвет курсора
111204$:MOVB    @22542,R0       ; Прочесть символ
        INC     @#22542         ; Подкорректировать указатель
        BIC     #200,@#22542
        MOV     #111126$,-(SP)  ; Положить в стек адрес возврата
        BIC     #177400,R0
        CMP     R0,#40          ; Это управляющие коды ?
        BHIS    111260$         ; Нет
        TSTB    @#22552         ; Установлен режим ИСУ ?
        BEQ     111252$         ; Нет
        JMP     111730$
111252$:ASL     R0              ; Вызов п/п обработки управляющего символа
        JMP     @13142(R0)
111260$:CMPB    R0,#77          ; Это символы "A-Z,[,\,],^,_,a-z,{,|,},~" ?
        BLOS    111272$         ; Нет
        BIS     @#22556,R0      ; Подстройка алфавита
111272$:ASL     R0
        MOV     14142(R0),R1    ; R1 = адрес рисунка символа
        MOV     10(R5),R0       ; R0 = длина видеостроки
        MOV     #177010,R2
        MOV     #177024,R3
        MOV     @R5,@R2         ; Уст. в регистре адреса планов нач. адрес
        ADD     56(R5),PC       ; Переход в зависимости от режима (инверсия...)
111322$:.REPT   12              ; Цикл рисования символа
        MOVB    (R1)+,R4
        MOV     R4,@R3
        ADD     R0,@R2
        .ENDR
        MOVB    (R1)+,R4
        MOV     R4,@R3
111422$:INC     @R5             ; Передвинуть указатель на следующий адрес
        DEC     16(R5)          ; Уменьшить счетчик оставшихся позиций
        BNE     111624$         ; Еще не конец строки
        MOV     22(R5),@R5      ; Формирование адреса начала следующей строки
        MOV     4(R5),16(R5)
111444$:ADD     #54,32(R5)
        CMP     32(R5),26(R5)
        BNE     111470$
        MOV     24(R5),32(R5)
111470$:ADD     @32(R5),@R5
        DEC     20(R5)          ; Уменьшить счетчик оставшихся строк
        BNE     111624$         ; Еще не конец экрана
        ADD     74(R5),PC       ; Рулон присутствует ?
        BR      111626$         ; Нет
        INC     20(R5)          ; Увеличить счетчик оставшихся строк
        MOV     #13,-(SP)
        ADD     #54,30(R5)      ; Увелич. адрес списка ВС верхней части экрана
        CMP     30(R5),#4670
        BNE     111544$
        MOV     #2500,30(R5)
111544$:MOV     @#23170,R0      ; R0 = кол-во оставшихся видеострок для скрол.
        BEQ     111574$         ; Их нет
        BPL     111556$
        NEG     R0
111556$:CMP     R0,#14          ; <= 12(10) ?
        BLOS    111614$         ; Да
        TRAP    0               ; Вызов цикла подпрограмм
        MOV     @#23150,R5      ; R5 = адрес текущей ТВ
        BR      111544$
111574$:CLR     @#23164         ; Запретить курсор
        MOV     #2,@#7134
        MOVB    #177,@23160     ; Убрать курсор с экрана
111614$:CALL    113344$         ; Очистить освободившуюся строку
        ADD     (SP)+,@#23170   ; Осуществить скроллинг
111624$:RETURN
111626$:JMP     114316$         ; Перекинуть курсор на верх экрана
; П/п выключения курсора
111632$:CLR     @#23164         ; Запретить использование курсора
        MOV     60(R5),R0       ; Выключение курсора
        BIC     #1,6(R0)
        BIC     #1,52(R0)
        RETURN
; Обработка режима ПОДЧЕРКИВАНИЕ
111660$:MOV     #12,R0          ; R0 = число байт для посылки в видео
111664$:MOVB    (R1)+,R4        ; Рисование символа
        MOV     R4,@R3
        ADD     10(R5),@R2
        SOB     R0,111664$
        MOV     #377,@R3        ; Подчеркнуть символ
        BR      111422$
; Обработка режима ИНВЕРСИЯ
111704$:MOV     #13,R0
        BR      111716$
111712$:ADD     10(R5),@R2
111716$:MOVB    (R1)+,R4
        COM     R4              ; Инвертировать байт
        MOV     R4,@R3
        SOB     R0,111712$
        BR      111422$
; Обработка режима ИСУ
111730$:MOV     #3,-(SP)        ; Формирование начальных значений
        MOV     R0,-(SP)
        MOV     R0,-(SP)
        MOV     #74,R0          ; Вывод "<"
        CALL    111272$
        CLR     R0              ; Цикл вывода трех цифр
        BR      111762$
111754$:CLR     R0
        ROLB    @SP
        ROLB    R0
111762$:ROLB    @SP
        ROLB    R0
        ROLB    @SP
        ROLB    R0
        ADD     #60,R0
        CALL    111272$
        DEC     4(SP)
        BNE     111754$
        MOV     #76,R0          ; Вывод ">"
        CALL    111272$
        TST     (SP)+
        CMP     #12,(SP)+       ; Это был символ LF ?
        BNE     112034$         ; Нет
        CALL    114310$         ; Вывод CRLF
112034$:TST     (SP)+
        RETURN

; ТАБЛИЦЫ ВИДЕОПАРАМЕТРОВ
; Структура таблицы:
;   - первое слово N - число элемнтов в таблице
;   - N слов - содержимое таблицы
;   - 4 слова - значения регистров управления отображением и цветом

; ТВ для верхней информационной строки
112040$:.WORD   34
        .WORD   175700,175700,50,13,50,1,13,50,1,0,2410,12114,2410,2410
        .WORD   6,6,0,0,0,0,2400,2402,2372,0,2410,2371,2370,2
        .WORD   0,27,21000,63104
; ТВ для пользовательского экрана
112142$:.WORD   37
        .WORD   100000,100000,120,410,120,30,436,120,30,0,2500,4670,2500,2500
        .WORD   7,7,10421,10421,10421,10421,2470,2472,2462,0,2500,2461,2460
        .WORD   1,7,2,2
        .WORD   7,7,135230,177334
; ТВ для экрана установки
112252$:.WORD   36
        .WORD   154540,154540,50,334,50,24,334,50,24,0,5030,6610,5030,5030
        .WORD   7,7,10421,10421,10421,10421,4700,4702,4672,0,5030,4671,4670
        .WORD   2,7,2
        .WORD   7,27,135230,177334
; ТВ для нижней информационной строки
112360$:.WORD   34
        .WORD   176570,176570,50,13,50,1,13,50,1,0,6754,7030,6754,6754
        .WORD   6,6,0,0,0,0,6750,6752,6742,0,6754,6741,6740,2
        .WORD   0,27,21000,63104

; Таблица описания адресов п/п исполнения управляющих и Esc-последовательностей
112462$:.WORD   16,113220$      ; Ctrl-G
        .WORD   20,114226$      ; Ctrl-H
        .WORD   24,114216$      ; Ctrl-J
        .WORD   26,114772$      ; Ctrl-K
        .WORD   30,113236$      ; Ctrl-L
        .WORD   32,114336$      ; Ctrl-M
        .WORD   34,105260$      ; Ctrl-N
        .WORD   36,105306$      ; Ctrl-O
        .WORD   44,114636$      ; Ctrl-R
        .WORD   46,114514$      ; Ctrl-S
        .WORD   50,114410$      ; Ctrl-T
        .WORD   52,114310$      ; Ctrl-U
        .WORD   54,114620$      ; Ctrl-V
        .WORD   56,113670$      ; Ctrl-W
        .WORD   62,114254$      ; Ctrl-Y
        .WORD   64,114226$      ; Ctrl-Z
        .WORD   66,113532$      ; Ctrl-[
        .WORD   70,114106$      ; Ctrl-\
        .WORD   72,114216$      ; Ctrl-]
        .WORD   76,114772$      ; Ctrl-_
        .WORD   112,113602$     ; Esc %
        .WORD   172,113750$     ; Esc =
        .WORD   174,113766$     ; Esc >
        .WORD   176,114004$     ; Esc ?
        .WORD   202,114106$     ; Esc A
        .WORD   204,114216$     ; Esc B
        .WORD   206,114254$     ; Esc C
        .WORD   210,114226$     ; Esc D
        .WORD   212,113712$     ; Esc E
        .WORD   220,114660$     ; Esc H
        .WORD   222,114106$     ; Esc I
        .WORD   224,114714$     ; Esc J
        .WORD   226,114772$     ; Esc K
        .WORD   240,115010$     ; Esc P
        .WORD   262,115626$     ; Esc Y
        .WORD   264,115776$     ; Esc Z
        .WORD   266,114006$     ; Esc [
        .WORD   400,114106$     ; Esc 200
        .WORD   402,114216$     ; Esc 201
        .WORD   404,114226$     ; Esc 202
        .WORD   406,114254$     ; Esc 203
        .WORD   410,114316$     ; Esc 204
        .WORD   412,114324$     ; Esc 205
        .WORD   414,114336$     ; Esc 206
        .WORD   416,114356$     ; Esc 207
        .WORD   420,114404$     ; Esc 210
        .WORD   422,114406$     ; Esc 211
        .WORD   424,114410$     ; Esc 212
        .WORD   426,114514$     ; Esc 213
        .WORD   430,114620$     ; Esc 214
        .WORD   432,114636$     ; Esc 215
        .WORD   434,114654$     ; Esc 216
        .WORD   436,114656$     ; Esc 217
        .WORD   440,114260$     ; Esc 220
        .WORD   442,114266$     ; Esc 221
        .WORD   444,114274$     ; Esc 222
        .WORD   446,114302$     ; Esc 223
        .WORD   450,114660$     ; Esc 224
        .WORD   452,113236$     ; Esc 225
        .WORD   454,114714$     ; Esc 226
        .WORD   456,114772$     ; Esc 227
        .WORD   460,114310$     ; Esc 230
        .WORD   462,115626$     ; Esc 231
        .WORD   464,116014$     ; Esc 232
        .WORD   466,116016$     ; Esc 233
        .WORD   470,116020$     ; Esc 234
        .WORD   472,0           ; Esc 235
        .WORD   474,0           ; Esc 236
        .WORD   476,0           ; Esc 237
        .WORD   500,116022$     ; Esc Граф-@
        .WORD   502,116066$     ; Esc Граф-A
        .WORD   504,116144$     ; Esc Граф-B
        .WORD   506,116234$     ; Esc Граф-C
        .WORD   510,116274$     ; Esc Граф-D
        .WORD   512,116374$     ; Esc Граф-E
        .WORD   514,116462$     ; Esc Граф-F
        .WORD   516,116212$     ; Esc Граф-G
        .WORD   520,116542$     ; Esc Граф-H
        .WORD   522,116544$     ; Esc Граф-I
        .WORD   524,116546$     ; Esc Граф-J
        .WORD   526,116550$     ; Esc Граф-K
        .WORD   556,116552$     ; Esc Граф-W
        .WORD   560,116600$     ; Esc Граф-X
        .WORD   570,116624$     ; Esc Граф-\
        .WORD   572,116632$     ; Esc Граф-]
        .WORD   574,116742$     ; Esc Граф-^
        .WORD   576,116750$     ; Esc Граф-_
        .WORD   0

; ПОДПРОГРАММЫ ОБРАБОТКИ УПРАВЛЯЮЩИХ И ESC-ПОСЛЕДОВАТЕЛЬНОСТЕЙ
; П/п обработки Ctrl-G
113220$:BIS     #600,@#177716   ; Включить звуковой сигнал (частота 500 Гц)
        MOV     #20,@#7046      ; Установить время (0.32 сек)
        RETURN
; П/п обработки Ctrl-L, Esc 225
113236$:MOV     @50(R5),-(SP)   ; Сохранение содержимого рег. управления цветом
        MOV     @52(R5),-(SP)
        MOV     44(R5),@50(R5)  ; Засветка всего экрана цветом фона
        MOV     44(R5),@52(R5)
        CALL    113362$         ; Очистка экрана (заполнение цветом фона)
        CALL    110572$         ; Установка ТВ на начало видеопамяти
        MOV     30(R5),R4       ; Установка курсора в начало экрана
        MOV     R4,32(R5)
        MOV     @R4,@R5
        ADD     22(R5),@R5
        MOV     4(R5),16(R5)
        MOV     12(R5),20(R5)
        MOV     (SP)+,@52(R5)   ; Восстановление регистров управления цветом
        MOV     (SP)+,@50(R5)
        MOV     72(R5),@#23164
        RETURN
; П/п-мы очистки заданной области экрана (заполнение цветом фона)
; Параметры (для точки входа 113376$):
;  R1 - начальный адрес;
;  R2 - длина в байтах;
;  R3 - число видеострок;
113344$:MOV     @32(R5),R1
        ADD     22(R5),R1
113354$:MOV     #13,R3
        BR      113372$
113362$:MOV     2(R5),R1
        MOV     14(R5),R3
113372$:MOV     4(R5),R2
113376$:MOV     44(R5),@#177020 ; Загрузка в регистры кода фона цвета фона
        MOV     44(R5),@#177022
        MOV     #177010,R4
        MOV     R1,@R4          ; Загрузить в регистр адреса планов нач. адрес
        MOV     #177024,R1
        CLR     R0
        CMP     R2,10(R5)       ; Длина очищаемой строки равна истинной длине ?
        BEQ     113500$         ; Да
        MOV     R2,-(SP)        ; Сохранить длину строки
        BR      113450$
113440$:MOV     @SP,R2          ; R2 = длина очищаемой строки
        SUB     R2,@R4          ; Вычесть длину строки из адреса планов
        ADD     10(R5),@R4      ; Прибавить истинную длину
113450$:MOV     R0,@R1          ; Очистить байт строки
        INC     @R4             ; Переход к следующему адресу
        SOB     R2,113450$      ; Цикл по длине очищаемой части строки
        SOB     R3,113440$      ; Цикл по числу видеострок
        TST     (SP)+
113462$:MOV     40(R5),@#177020 ; Загр. в регистры кода фона цвета знакоместа
        MOV     40(R5),@#177022
        RETURN
113500$:MUL     R2,R3           ; R3 = длина строки * число видеострок
113502$:MOV     R0,@R1          ; Цикл очистки
        INC     @R4
        SOB     R3,113502$
        BR      113462$
; Значения для загрузки в регистры кода фона (177020 и 177022)
113512$:.WORD   0,10421,21042,31463,42104,52525,63146,73567
; П/п обработки Ctrl-[ (Esc)
113532$:MOV     SP,@#23152
        MOV     #2,@#23174      ; Активировать проверку на управляющие символы
113544$:MOV     #1000,SP
        CALL    110762$         ; Прочесть символ
        ASL     R0              ; Вызов п/п обработки Esc-последовательности
        CALL    @13142(R0)
        CLR     @#23174
        MOV     @#23152,SP
        RETURN
; Точка входа при исполнении Esc %!3 в графическом режиме
113574$:MOV     2(SP),R0
        BR      113620$
; П/п обработки Esc %
113602$:CALL    110762$         ; Прочесть символ
        CMPB    R0,#41          ; Это "!" ?
        BNE     113632$         ; Нет
        CALL    110762$
113620$:BIC     #177774,R0
        ASL     R0              ; Вызов соответствующей п/п
        CALL    @113634$(R0)
113632$:RETURN
; Адреса п/п, вызывающиеся при обработке Esc %!
113634$:.WORD   113644$,113670$,113670$,113670$
; П/п обработки Esc %!0 (переход в графический режим)
113644$:CALL    111632$         ; Выключение курсора
        CLR     @#23174         ; Аннулировать проверку на управляющие символы
        CALL    @#135436$       ; Вызов п/п управления графикой
        MOV     72(R5),@#23164
        RETURN
; П/п обработки Ctrl-W, Esc %! (1-3)
113670$:JSR     R5,105430$      ; Перекодировать клавиши под VT-52
        .WORD   106634$
        MOV     #114226$,@#13162; При Ctrl-H выполнять шаг назад
        CLR     @#7154          ; Установить пункт VT-52 в меню УСТ
        RETURN
; П/п обработки Esc E
113712$:JSR     R5,105430$      ; Перекодировать клавиши под 15ИЭ-00-013
        .WORD   107002$
        MOV     #114660$,@#13162; При Ctrl-H выполнять операцию Home
        MOV     #1,@#7154       ; Установить пункт 15ИЭ-00-013 в меню УСТ
        RETURN
; П/п загрузки регистров кода цвета и фона
113736$:MOV     R5,-(SP)        ; Сохранить адрес текущей ТВ
        CALL    110204$         ; Загрузить регистры
        MOV     (SP)+,R5        ; Восстановить адрес ТВ
        RETURN
; П/п обработки Esc =
113750$:JSR     R5,105346$      ; Установить режим ДКЛ
        .WORD   107120$,11014
        EMT     52              ; Вывести надпись "ДКЛ"
        .WORD   107576$
        RETURN
; П/п обработки Esc >
113766$:JSR     R5,105400$      ; Сбросить режим ДКЛ
        .WORD   107120$,11014
        EMT     52              ; Стереть надпись "ДКЛ"
        .WORD   107567$
        RETURN
114004$:RETURN
; П/п обработки Esc [
114006$:CALL    110762$         ; Чтение символа
        CMP     R0,#62          ; Это "2" ?
        BEQ     114050$         ; Да
        CMP     R0,#77          ; Это "?" ?
        BEQ     114046$         ; Да
        BR      114034$
114030$:CALL    110762$
114034$:CMPB    R0,#162         ; Это "r" ?
        BNE     114030$         ; Нет
        CALL    113236$         ; Очистка экрана
114046$:RETURN
114050$:CALL    110762$
        CMP     R0,#150         ; Это "h" ?
        BNE     114072$         ; Нет
        MOV     #2,@#7232       ; Запрет передачи одиночных ASCII-кодов клав.
        BR      114104$
114072$:CMP     R0,#154         ; Это "l" ?
        BNE     114104$         ; Нет
        CLR     @#7232          ; Разрешение передачи одиночных ASCII-кодов
114104$:RETURN
; П/п обработки Ctrl-\, Esc A, Esc I, Esc 200
114106$:SUB     @32(R5),@R5     ; Вычесть адрес начала видеостроки
        SUB     #54,32(R5)      ; Перейти к предыд. символьной строке
        CMP     32(R5),24(R5)   ; Был переход за верх экрана ?
        BHIS    114144$         ; Нет
        MOV     26(R5),32(R5)   ; Переход на низ экрана
        SUB     #54,32(R5)
114144$:ADD     @32(R5),@R5     ; Прибавить к положению курсора тек. строку
        CMP     20(R5),12(R5)   ; Это была верхняя строка
        BNE     114204$         ; Нет
        ADD     74(R5),PC       ; Рулон присутствует ?
        BR      114212$         ; Нет
        MOV     32(R5),30(R5)
        MOV     #-13,-(SP)      ; Скроллинг 11(10) видеострок вниз
        JMP     111544$
114204$:INC     20(R5)          ; Количество оставшихся строк ++
        RETURN
114212$:JMP     114324$         ; Позиционирование на низ текущей колонки
; П/п обработки Ctrl-J, Ctrl-], Esc B, Esc 201
114216$:SUB     @32(R5),@R5     ; Вычесть адрес начала видеостроки
        JMP     111444$         ; Перемещение вниз
; П/п обработки Ctrl-H (в системе команд VT-52), Ctrl-Z, Esc D, Esc 202
114226$:CMP     16(R5),4(R5)    ; Курсор в начале строки ?
        BEQ     114246$         ; Да
        DEC     @R5             ; Уменьшить позицию в строке
        INC     16(R5)          ; Увеличить количество оставшихся позиций
        RETURN
114246$:CALL    114356$         ; Позиционирование в конец строки
        BR      114106$         ; На одну строку вверх
; П/п обработки Ctrl-Y, Esc C, Esc 203
114254$:JMP     111422$         ; Перемещение курсора на одну позицию вправо
; П/п обработки Esc 220
114260$:CALL    114254$         ; Вправо
        BR      114106$         ; Вверх
; П/п обработки Esc 221
114266$:CALL    114226$         ; Влево
        BR      114216$         ; Вниз
; П/п обработки Esc 222
114274$:CALL    114106$         ; Вверх
        BR      114226$         ; Влево
; П/п обработки Esc 223
114302$:CALL    114216$         ; Вниз
        BR      114254$         ; Вправо
; П/п обработки Ctrl-U, Esc 230
114310$:CALL    114336$         ; В начало строки
        BR      114216$         ; Вниз
; П/п обработки Esc 204
114316$:CLR     R0              ; Номер начальной строки
        JMP     115720$         ; Позиционирование
; П/п обработки Esc 205
114324$:MOV     12(R5),R0       ; R0 = номер последней строки
        DEC     R0
        JMP     115720$         ; Позиционирование
; П/п обработки Ctrl-M, Esc 206
114336$:MOV     22(R5),@R5      ; Позиционирование в начало строки
        ADD     @32(R5),@R5
        MOV     4(R5),16(R5)    ; Количество оставшихся позиций = длина строки
        RETURN
; П/п обработки Esc 207
114356$:MOV     4(R5),@R5       ; Позиционирование в конец строки
        ADD     22(R5),@R5
        DEC     @R5
        ADD     @32(R5),@R5
        MOV     #1,16(R5)       ; Осталась одна позиция
        RETURN
114404$:RETURN
114406$:RETURN
; П/п обработки Ctrl-T, Esc 212
114410$:MOV     16(R5),R0       ; R0 = количество оставшихся позиций
        DEC     R0
        BEQ     114474$         ; Осталась одна позиция
        MOV     @R5,R1
        INC     R1              ; R1 = текущий видеоадрес + 1
        MOV     #13,-(SP)       ; Число видеострок
        MOV     #177010,R3
        MOV     #177024,R4
114440$:MOV     R0,R2           ; R2 = число перемещаемых символов
        MOV     R1,@R3
        BR      114452$
114446$:ADD     #2,@R3          ; Цикл перемещения символов
114452$:TST     @R4
        DEC     @R3
        CLR     @R4
        SOB     R2,114446$
        ADD     10(R5),R1       ; Переход к следующей видеостроке
        DEC     @SP
        BNE     114440$
        TST     (SP)+
114474$:MOV     @R5,R1
        ADD     R0,R1           ; R1 = адрес конечного символа
        MOV     #1,R2           ; R2 = 1 (длина очищаемой части строки)
        MOV     #13,R3          ; Число очищаемых видеострок
        JMP     113376$         ; Очистка
; П/п обработки Ctrl-S, Esc 213
114514$:MOV     16(R5),R0       ; R0 = количество оставшихся позиций
        DEC     R0
        BEQ     114602$         ; Осталась одна позиция
        MOV     @R5,R1
        ADD     R0,R1           ; R1 = адрес конца строки
        DEC     R1
        MOV     #13,-(SP)       ; Число видеострок
        MOV     #177010,R3
        MOV     #177024,R4
114546$:MOV     R0,R2           ; R2 = число перемещаемых символов
        MOV     R1,@R3
        BR      114560$
114554$:SUB     #2,@R3          ; Цикл перемещения символов
114560$:TST     @R4
        INC     @R3
        CLR     @R4
        SOB     R2,114554$
        ADD     10(R5),R1       ; Переход к следующей видеостроке
        DEC     @SP
        BNE     114546$
        TST     (SP)+
114602$:MOV     @R5,R1          ; R1 = текущий видеоадрес
        MOV     #1,R2           ; R2 = длина очищаемой части строки
        MOV     #13,R3          ; R3 = число видеострок
        JMP     113376$         ; Очистка
; П/п обработки Ctrl-V, Esc 214
114620$:DEC     20(R5)          ; Уменьшить количество оставшихся строк
        SUB     #13,@#23170     ; Скроллинг вниз
        JMP     114106$         ; Курсор вверх
; П/п обработки Ctrl-R, Esc 215
114636$:INC     20(R5)          ; Увеличить количество оставшихся строк
        ADD     #13,@#23170     ; Скроллинг вверх
        JMP     114216$         ; Курсор вниз
114654$:RETURN
114656$:RETURN
; П/п обработки Ctrl-H (в системе команд 15ИЭ-00-013), Esc H, Esc 224
114660$:MOV     30(R5),32(R5)   ; Текущий адрес списка ВС - верх экрана
        MOV     22(R5),@R5      ; Позиционирование курсора в верх. угол экрана
        ADD     @32(R5),@R5
        MOV     4(R5),16(R5)    ; Число ост. позиций = длина строки
        MOV     12(R5),20(R5)   ; Число ост. строк = число строк на экране
        RETURN
; П/п обработки Esc J, Esc 226
114714$:CALL    114772$         ; Очистка конца строки
        MOV     20(R5),-(SP)    ; Количество оставшихся строк
        MOV     32(R5),R1       ; R1 = текущий адрес списка ВС
        BR      114762$
114732$:ADD     #54,R1          ; Перейти к следующей строке
        CMP     R1,26(R5)       ; Дошли до конца экрана ?
        BNE     114750$         ; Нет
        MOV     24(R5),R1       ; R1 = начальный адрес списка ВС
114750$:MOV     R1,-(SP)
        MOV     @R1,R1
        CALL    113354$         ; Очистка
        MOV     (SP)+,R1
114762$:DEC     @SP
        BNE     114732$
        TST     (SP)+
        RETURN
; П/п обработки Ctrl-K, Esc K, Esc 227
114772$:MOV     @R5,R1          ; R1 = текущий видеоадрес
        MOV     16(R5),R2       ; R2 = количество оставшихся позиций в строке
        MOV     #13,R3          ; R3 = число видеострок
        JMP     113376$         ; Очистка
; П/п обработки Esc P
115010$:CLR     -(SP)
115012$:CALL    110762$         ; Чтение символа
        MOV     R0,-(SP)        ; Сохранение его в стеке
        CMPB    R0,#73          ; Это ";" ?
        BNE     115012$
115026$:CALL    110762$
        MOV     R0,-(SP)
        CMPB    R0,#73          ; Это ";" ?
        BEQ     115424$         ; Да
        CMPB    R0,#174         ; Это "|" ?
        BNE     115026$
115050$:TST     (SP)+           ; Восстановление стека
        BNE     115050$
        ASR     -4(SP)          ; Была набрана "1" ?
        BCS     115112$         ; Да
        MOV     #115342$,R1     ; R1 = список смещ. клавиш К1-К25 в табл. раск.
        MOV     #31,R2          ; R2 = 25(10) число программир. клавиш
115072$:MOV     (R1)+,R0        ; Цикл очистки назначений клавиш
        MOV     #11140,7232(R0)
        SOB     R2,115072$
        MOV     #11142,@#13140  ; Установка указателя на начало буфера
115112$:CLR     -(SP)
115114$:CALL    110762$
        CMPB    R0,#33          ; Это Escape ?
        BEQ     115302$         ; Да
        CMPB    R0,#57          ; Это "/" ?
        BEQ     115154$         ; Да
        MOV     @SP,R1          ; @SP = @SP * 10 + R0
        MUL     #10.,R1
        BIC     #177760,R0
        ADD     R0,R1
        MOV     R1,@SP
        BR      115114$
115154$:MOV     (SP)+,R0
        CMP     R0,#25.         ; Номер клавиши в диапазоне 1 -- 25 ?
        BHI     115112$         ; Нет
        DEC     R0
        ASL     R0
        MOV     115342$(R0),R0  ; R0 = смещение клавиши в таблице раскладки
        MOV     @#13140,7232(R0); Запомнить адрес строки
115202$:CALL    110762$
        CMPB    R0,#33          ; Это Escape ?
        BEQ     115304$
        CMPB    R0,#73          ; Это ";" ?
        BEQ     115270$
        CALL    115322$         ; Преобразование HEX-цифры в двоичный код
        ASH     #4,R0           ; R0 = R0 * 16
        MOV     R0,-(SP)
        CALL    110762$
        CALL    115322$
        BIS     (SP)+,R0
        MOVB    R0,@13140       ; Запомнить символ в строке
        CMP     @#13140,#13130  ; Достигнут конец буфера
        BHI     115202$         ; Да
        INC     @#13140         ; Продвинуть указатель на следующую позицию
        BR      115202$
115270$:CLRB    @13140          ; Пометить конец строки
        INC     @#13140
        BR      115112$
115302$:TST     (SP)+
115304$:CLRB    @13140
        INC     @#13140
        CALL    110762$
        RETURN
; П/п преобразования HEX-цифры в двоичное представление
115322$:CMP     R0,#101         ; Цифра в диапазоне "A-F" ?
        BLO     115334$         ; Нет
        ADD     #11,R0
115334$:BIC     #177760,R0
        RETURN
; Смещения для клавиш К1-К25 в таблице раскладки клавиатуры
115342$:.WORD   10,12,14,20,22,270,272,274,300,302,550,552,554,560,562
        .WORD   1030,1032,1034,1040,1042,1310,1312,1314,1320,1322
115424$:MOV     2(SP),R0        ; R0 = код симв., шрифт кот. перепрограммир.
115430$:TST     (SP)+           ; Восстановление стека
        BNE     115430$
        MOV     R0,R1
        ASL     R0
        ADD     #14142,R0       ; R0 = указатель на ячейку адреса рисунка симв.
        MOV     R0,-(SP)
        MUL     #11,R1          ; Вычисление местоположения рисунка символа
        ADD     #15142,R1       ; R1 = адрес местоположения рисунка символа
        MOV     R1,-(SP)
115460$:CALL    110762$         ; Чтение символа
        CMP     R0,#33          ; Это Escape ?
        BEQ     115550$         ; Да
        CMP     R0,#100         ; Это "@" ?
        BNE     115460$         ; Нет
115500$:MOV     @SP,@2(SP)      ; Сохранить адрес рисунка в таблице
        ADD     #2,2(SP)        ; Переход на следующую позицию в табл. адресов
        JSR     R5,115554$      ; Программирование первых пяти байт
        .WORD   5
        CALL    110762$
        JSR     R5,115554$      ; Программирование следующих шести байт
        .WORD   6
        CALL    110762$
        CMP     R0,#33          ; Это Escape
        BNE     115500$
        CALL    110762$
115550$:CMP     (SP)+,(SP)+
        RETURN
; П/п программирования заданного количества байт в рисунке символа
115554$:MOV     #10,-(SP)       ; Длина байта
115560$:MOV     R5,-(SP)
        CALL    110762$
        MOV     (SP)+,R5
        CMP     R0,#33          ; Это Escape ?
        BEQ     115616$         ; Да
        MOV     4(SP),R3        ; R3 = адрес рисунка
        MOV     @R5,R4          ; R4 = число программируемых байт
115604$:ASR     R0              ; Цикл программирования
        RORB    (R3)+
        SOB     R4,115604$
        DEC     @SP
        BNE     115560$
115616$:ADD     (R5)+,4(SP)     ; Перейти к следующей области рисунка
        TST     (SP)+
        RTS     R5
; П/п обработки Esc Y, Esc 231
115626$:CALL    110762$         ; Прочесть символ
        SUB     #40,R0
        BMI     115652$
        CMP     R0,12(R5)       ; Координата Y превышает диапазон ?
        BHIS    115652$         ; Да
        CALL    115720$         ; Позиционирование по координате Y
115652$:CALL    110762$
        SUB     #40,R0
        BMI     115716$
        CMP     R0,4(R5)        ; Координата X превышает диапазон ?
        BHIS    115716$         ; Да
115672$:MOV     4(R5),16(R5)    ; Позиционирование по координате X
        SUB     R0,16(R5)       ; (16)R5 - кол-во оставшихся позиций
        ADD     @32(R5),R0      ; R0 = адрес видеопамяти начала строки + X
        ADD     22(R5),R0       ; Плюс константа начального доступа
        MOV     R0,@R5          ; @R5 - адр.начала видеопамяти для выв. симв.
115716$:RETURN
; П/п позиционирования по координате Y
115720$:SUB     @32(R5),@R5     ; @R5 - оставить координату X
        MOV     12(R5),20(R5)
        SUB     R0,20(R5)       ; 20(R5) - кол-во ост. символьных строк
        MUL     #11.*4,R0
        ADD     30(R5),R1       ; R1 = адрес описания видеостроки
        ADD     74(R5),PC       ; Рулон присутствует ?
        BR      115766$         ; Нет
        CMP     R1,#4670        ; Переход за границу списка ?
        BLO     115766$         ; Нет
        SUB     #2170,R1        ; Подкорректировать значение
115766$:MOV     R1,32(R5)       ; 32(R5) - текущий адрес списка видеострок
        ADD     @R1,@R5         ; @R5 - адр.начала видеопамяти для выв.симв. 
        RETURN
; П/п обработки Esc Z
115776$:MOV     #116010$,R0     ; R0 = адрес символьной строки
        CALL    104160$         ; Передача адреса строки п/п обсл. клавиатуры
        RETURN
116010$:.ASCIZ  <33>"/Z"        ; Терминал VT-100 в режиме VT-52
        .EVEN
116014$:RETURN
116016$:RETURN
116020$:RETURN
; П/п обработки Esc Граф-@
116022$:ADD     @#23176,PC      ; Установлен режим отмены ?
        BR      116036$         ; Нет
        MOV     36(R5),R0       ; R0 = предыдущий цвет символа
        BR      116046$
116036$:CALL    110762$         ; Прочесть символ
        BIC     #177770,R0
116046$:MOV     R0,@#177016     ; Положить номер цвета в регистр кода цвета
116052$:MOV     34(R5),36(R5)   ; Запомнить предыдущий цвет символа
        MOV     R0,34(R5)       ; Сохранить номер цвета в ТВ
        RETURN
; П/п обработки Esc Граф-A
116066$:ADD     @#23176,PC      ; Установлен режим отмены ?
        BR      116102$         ; Нет
        MOV     42(R5),R0       ; R0 = предыдущий цвет знакоместа
        BR      116120$
116102$:CALL    110762$         ; Прочесть символ
        BIC     #177770,R0
        ASL     R0
        MOV     113512$(R0),R0  ; R0 = код фонового цвета
116120$:MOV     R0,@#177020     ; Положить номер фон. цвета в рег. кода фона
        MOV     R0,@#177022
116130$:MOV     40(R5),42(R5)   ; Запомнить предыдущий цвет знакоместа
        MOV     R0,40(R5)       ; Сохранить номер цвета знакоместа в ТВ
        RETURN
; П/п обработки Esc Граф-B
116144$:ADD     @#23176,PC      ; Установлен режим отмены ?
        BR      116160$         ; Нет
        MOV     46(R5),R0       ; R0 = предыдущий цвет фона
        BR      116046$
116160$:CALL    110762$         ; Прочесть символ
        BIC     #177770,R0
116170$:ASL     R0
        MOV     113512$(R0),R0  ; R0 = код фонового цвета
        MOV     44(R5),46(R5)   ; Запомнить предыдущий цвет фона
        MOV     R0,44(R5)       ; Сохранить номер цвета фона в ТВ
        RETURN
; П/п обработки Esc Граф-G
116212$:CALL    110762$         ; Прочесть символ
        BIC     #177770,R0      ; R0 = номер цвета курсора
        MOVB    R0,@64(R5)      ; Изменить цвет курсора
116226$:MOV     R0,70(R5)       ; Сохранить цвет курсора в ТВ
        RETURN
; П/п обработки Esc Граф-C
116234$:ADD     @#23176,PC      ; Установлен режим отмены ?
        BR      116254$         ; Нет
        CLR     @#22554         ; Сбросить индикатор режима инверсии(подч.)
        EMT     52              ; Очистить надпись "ИНВ" ("ПОДЧ")
        .WORD   107605$
        BR      116334$
116254$:MOV     #<111704$-111322$>,56(R5) ; Установить режим инверсии (362)
        INCB    @#22554         ; Установить индикатор режима инверсии
        EMT     52              ; Высветить надпись "ИНВ"
        .WORD   107614$
        RETURN
; П/п обработки Esc Граф-D
116274$:ADD     @#23176,PC      ; Установлен режим отмены ?
        BR      116314$
        CLR     @#22554         ; Сбросить индикатор режима подчеркивания(инв.)
        EMT     52              ; Погасить надпись "ПОДЧ" ("ИНВ")
        .WORD   107605$
        BR      116334$
116314$:MOV     #<111660$-111322$>,56(R5) ; Установить режим подч. (336)
        INCB    @#22555         ; Установить индикатор режима подчеркивания
        EMT     52              ; Высветить надпись "ПОДЧ"
        .WORD   107623$
        RETURN
116334$:CLR     56(R5)          ; Установить нормальный режим
        TSTB    @#22554         ; Ранее был установлен режим инверсии ?
        BEQ     116356$         ; Нет
        MOV     #364,56(R5)     ; Установить режим инверсии
        BR      116372$
116356$:TSTB    @#22555         ; Ранее был установлен режим подчеркивания ?
        BEQ     116372$         ; Нет
        MOV     #340,56(R5)     ; Установить режим подчеркивания
116372$:RETURN
; П/п обработки Esc Граф-E
116374$:CALL    110762$         ; Прочесть символ
        SUB     #61,R0          ; Символ в диапазоне "1"-"4"
        BMI     116422$         ; Нет
        CMP     R0,#3
        BHI     116422$         ; Нет
        ASL     R0              ; Вызов соответствующей п/п
        CALL    @116424$(R0)
116422$:RETURN
; Адреса п/п для установки длины строки
116424$:.WORD   116434$,116450$,116460$,116460$
; П/п установки длины строки 80
116434$:MOV     #120,4(R5)      ; Установить длину строки 80
116442$:CLR     22(R5)          ; Константа начального отступа = 0
        RETURN
; П/п установки длины строки 40
116450$:MOV     #50,4(R5)       ; Установить длину строки 40
        BR      116442$
116460$:RETURN
; П/п обработки Esc Граф-F
116462$:CALL    110762$         ; Прочесть символ
        SUB     #61,R0          ; Символ в диапазоне "1"-"4"
        BMI     116524$         ; Нет
        CMP     R0,#4
        BHIS    116524$         ; Нет
116502$:MOVB    116526$(R0),@22732; Установить соответствующий формат экрана
        MOVB    116532$(R0),22744 ; Сохранить номер формата в ТВ
        MOVB    116536$(R0),22662 ; Занести новую длину строки в ТВ
116524$:RETURN
; Биты формата экрана для загрузки в регистр управления отображением
116526$:.BYTE   0,20,40,60
; Номера форматов для загрузки в ТВ
116532$:.BYTE   1,2,4,10
; Длины строк
116536$:.BYTE   120,50,24,12
116542$:RETURN
116544$:RETURN
116546$:RETURN
116550$:RETURN
; П/п обработки Esc Граф-W
116552$:ADD     @#23176,PC      ; Установлен режим отмены ?
        BR      116570$         ; Нет
        BIS     #1000,@#177054  ; Выключить сетевой таймер в канале ЦП
        RETURN
116570$:BIC     #1000,@#177054  ; Включить сетевой таймер в канале ЦП
        RETURN
; П/п обработки Esc Граф-X
116600$:MTPS    #200            ; Запретить прерывания
        MOVB    #177,@23160     ; Убрать курсор с экрана
        CALL    104026$         ; Вызов п/п ПАУЗА
        MTPS    #0              ; Разрешить прерывания
        RETURN
; П/п обработки Esc Граф-\
116624$:INC     @#7072          ; Установить индикатор вызова меню ЗАГРУЗКА
        RETURN
; П/п обработки Esc Граф-]
116632$:ADD     @#23176,PC      ; Установлен режим отмены ?
        BR      116706$         ; Нет
        JSR     R5,105400$      ; Установить пользовательский режим клавиатуры
        .WORD   107310$,11054
        CLR     @#7146          ; Сбросить индикатор системного режима
        ADD     @#22550,PC      ; Разрешена установка/снятие сигнала HALT ?
        BR      116664$         ; Да
        RETURN
116664$:BIC     #20,@#177716    ; Снять сигнал HALT в ЦП
        MOV     #70046,@#177010 ; Сброс ключа продолжения в области ОЗУ ЦП
        CLR     @#177014
        RETURN
116706$:JSR     R5,105346$      ; Установить системный режим клавиатуры
        .WORD   107310$,11054
        INC     @#7146          ; Установить индикатор системного режима
        ADD     @#22550,PC      ; Разрешена установка/снятие сигнала HALT ?
        BR      116732$         ; Да
        RETURN
116732$:BIS     #20,@#177716    ; Установить сигнал HALT в ЦП
        RETURN
; П/п обработки Esc Граф-^
116742$:INC     @#7100          ; Установить индикатор вызова тест-программы
        RETURN
; П/п обработки Esc Граф-_
116750$:MOV     #2,@#23176      ; Установить режим отмены
116756$:CALL    110762$         ; Прочесть символ
        CMP     R0,#33          ; Это Escape ?
        BEQ     116756$         ; Да
        ASL     R0              ; Вызов соответствующей п/п
        CALL    @13142(R0)
        CLR     @#23176         ; Сбросить режим отмены
        RETURN
; П/п установки цвета курсора, вызываемая при исп. послед. Esc TD (графика)
117004$:MOV     2(SP),R0
        BIC     #177760,R0      ; R0 = номер цвета курсора
        MOV     R0,@#7166       ; Сохр. ном. цвета кур. в пункте УСТ/цв. кур.
        MOVB    R0,@22742       ; Изменить цвет курсора
        RETURN
; П/п установки цветов символа, знакоместа и фона, вызываемая при исполнении
; последовательности Esc LI (графика)
117026$:MOV     R5,-(SP)        ; Сохранить R5
        MOV     @#23150,R5      ; R5 = адрес текущей ТВ
        MOV     4(SP),R0        ; R0 = номер цвета символа
        BMI     117052$         ; Если отрицательный - нет установки
        MOV     R0,34(R5)       ; Сохранить номер цвета в ТВ
        MOV     R0,@#7160       ; Сохр. ном. цвета симв. в пункте УСТ/цв. симв.
117052$:MOV     6(SP),R0        ; R0 = номер цвета знакоместа
        BMI     117074$         ; Если отрицательный - нет установки
        MOV     R0,@#7162       ; Сохр. ном. цвета зн. в пункте УСТ/цв. зн.
        ASL     R0
        MOV     113512$(R0),40(R5); Сохранить номер фонового цвета в ТВ
117074$:MOV     10(SP),R0       ; R0 = номер цвета фона
        BMI     117116$         ; Если отрицательный - нет установки
        MOV     R0,@#7164       ; Сохр. ном. цвета фона в пункте УСТ/цвет фона
        ASL     R0
        MOV     113512$(R0),44(R5); Сохранить номер фонового цвета в ТВ
117116$:CALL    110230$         ; Заполнить регистры кода цвета и фона
        MOV     (SP)+,R5        ; Восстановить R5
        RETURN
; П/п исполнения запроса EMT 42 (вывод символа)
117126$:CALL    117136$         ; Занести символ в буфер
        TRAP    0               ; Запуск цикла задач
        RETURN
; П/п заноса символа в буфер
117136$:MOVB    R0,@22544       ; Занести символ в буфер
        INC     @#22544         ; Корректировка указателя
        BIC     #200,@#22544
        INC     @#7064          ; Увеличить счетчик символов
        RETURN
; П/п исполнения запроса EMT 44 (вывод строки символов)
117162$:MOV     @16(SP),R1      ; R1 = адрес строки символов
        ADD     #2,16(SP)       ; Коррекция адреса возврата
; П/п исполнения запроса EMT 46 (вывод строки символов)
117174$:JSR     R5,117206$      ; Занести строку в буфер
        TRAP    0               ; Запуск цикла задач
        RETURN
; П/п заноса строки символов в буфер
117204$:MOV     (R5)+,R1        ; R1 = адрес строки символов
117206$:MOV     @#22544,R0      ; R0 = значение указателя для записи в буфер
        BR      117224$
117214$:BIC     #200,R0         ; Коррекция указателя
        INC     @#7064          ; Увеличить счетчик символов
117224$:MOVB    (R1)+,(R0)+     ; Занести очередной символ в буфер
        BNE     117214$         ; Еще не конец строки
        DEC     R0
        MOV     R0,@#22544
        RTS     R5
; П/п исполнения запроса EMT 56 (вывод в нижнюю инф. строку)
117240$:MOV     #23052,R5       ; R5 = адрес ТВ для нижней инф. строки
        BR      117260$
117246$:BR      117376$
; П/п исполнения запроса EMT 52 (вывод в верхнюю инф. строку)
117250$:ADD     @#7150,PC       ; Разрешение/запрет вывода в верхнюю строку
        MOV     #22560,R5       ; R5 = адрес ТВ для верхней инф. строки
117260$:MOV     34(R5),@#177016 ; Загрузка регистров кода цвета и фона
        MOV     40(R5),@#177020
        MOV     40(R5),@#177022
        MOV     @32(R5),@R5     ; Вычисление видеоадреса
        MOV     4(R5),16(R5)
        MOV     @16(SP),R1      ; R1 = адрес строки
        MOVB    (R1)+,R0        ; R0 = начальная позиция
        ADD     R0,@R5
        SUB     R0,16(R5)
        BR      117342$
117332$:MOV     R1,-(SP)
        CALL    111272$         ; Рисование символа
        MOV     (SP)+,R1
117342$:CLR     R0
        BISB    (R1)+,R0        ; R0 = очередной символ
        BNE     117332$         ; Еще не конец строки
        MOV     @#23150,R5      ; R5 = адрес текущей ТВ
        MOV     34(R5),@#177016 ; Восстановление регистров кода цвета и фона
        MOV     40(R5),@#177020
        MOV     40(R5),@#177022
117376$:ADD     #2,16(SP)       ; Коррекция адреса возврата
        RETURN
117406$:RETURN
117410$:RETURN
117412$:RETURN
117414$:RETURN
117416$:RETURN
117420$:RETURN
117422$:RETURN
117424$:RETURN
117426$:RETURN

; ***  ТАБЛИЦА РИСУНКОВ СИМВОЛОВ  ***

117430$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-@
117443$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-A
117456$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-B
117471$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-C
117504$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-D
117517$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-E
117532$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-F
117545$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-G
117560$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-H
117573$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-I
117606$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-J
117621$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-K
117634$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-L
117647$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-M
117662$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-N
117675$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-O
117710$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-P
117723$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-Q
117736$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-R
117751$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-S
117764$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-T
117777$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-U
120012$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-V
120025$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-W
120040$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-X
120053$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-Y
120066$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-Z
120101$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-[
120114$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-\
120127$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-]
120142$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-^
120155$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Ctrl-_
120170$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; Space
120203$:.BYTE   0,20,20,20,20,20,20,0,20,0,0                    ; !
120216$:.BYTE   0,44,44,22,0,0,0,0,0,0,0                        ; "
120231$:.BYTE   0,0,44,44,176,44,176,44,44,0,0                  ; #
120244$:.BYTE   0,0,102,74,102,102,102,74,102,0,0               ; $
120257$:.BYTE   0,0,206,106,40,20,10,304,302,0,0                ; %
120272$:.BYTE   0,30,44,44,30,24,242,102,274,0,0                ; &
120305$:.BYTE   0,60,20,10,0,0,0,0,0,0,0                        ; '
120320$:.BYTE   0,40,20,10,10,10,10,20,40,0,0                   ; (
120333$:.BYTE   0,10,20,40,40,40,40,20,10,0,0                   ; )
120346$:.BYTE   0,0,0,20,124,70,124,20,0,0,0                    ; *
120361$:.BYTE   0,0,20,20,20,376,20,20,20,0,0                   ; +
120374$:.BYTE   0,0,0,0,0,0,0,30,30,20,10                       ; ,
120407$:.BYTE   0,0,0,0,0,176,0,0,0,0,0                         ; -
120422$:.BYTE   0,0,0,0,0,0,0,30,30,0,0                         ; .
120435$:.BYTE   0,0,200,100,40,20,10,4,2,0,0                    ; /
120450$:.BYTE   0,74,102,142,122,112,106,102,74,0,0             ; 0
120463$:.BYTE   0,20,30,24,20,20,20,20,174,0,0                  ; 1
120476$:.BYTE   0,74,102,102,40,20,10,104,176,0,0               ; 2
120511$:.BYTE   0,176,40,20,70,100,100,102,74,0,0               ; 3
120524$:.BYTE   0,40,60,50,44,42,176,40,40,0,0                  ; 4
120537$:.BYTE   0,176,2,2,76,100,100,102,74,0,0                 ; 5
120552$:.BYTE   0,74,102,2,76,102,102,102,74,0,0                ; 6
120565$:.BYTE   0,176,102,40,20,10,4,2,2,0,0                    ; 7
120600$:.BYTE   0,74,102,102,74,102,102,102,74,0,0              ; 8
120613$:.BYTE   0,74,102,102,102,174,100,102,74,0,0             ; 9
120626$:.BYTE   0,0,0,30,30,0,0,30,30,0,0                       ; :
120641$:.BYTE   0,0,0,30,30,0,0,30,30,20,10                     ; ;
120654$:.BYTE   0,0,40,20,10,4,10,20,40,0,0                     ; <
120667$:.BYTE   0,0,0,0,176,0,176,0,0,0,0                       ; =
120702$:.BYTE   0,0,4,10,20,40,20,10,4,0,0                      ; >
120715$:.BYTE   0,70,104,100,40,20,20,0,20,0,0                  ; ?
120730$:.BYTE   0,0,74,102,200,234,222,222,154,0,0              ; @
120743$:.BYTE   0,30,44,102,102,176,102,102,102,0,0             ; A
120756$:.BYTE   0,76,102,102,76,102,102,102,76,0,0              ; B
120771$:.BYTE   0,74,102,2,2,2,2,102,74,0,0                     ; C
121004$:.BYTE   0,76,104,204,204,204,204,104,76,0,0             ; D
121017$:.BYTE   0,176,2,2,76,2,2,2,176,0,0                      ; E
121032$:.BYTE   0,176,2,2,76,2,2,2,2,0,0                        ; F
121045$:.BYTE   0,74,102,2,2,162,102,102,74,0,0                 ; G
121060$:.BYTE   0,102,102,102,102,176,102,102,102,0,0           ; H
121073$:.BYTE   0,70,20,20,20,20,20,20,70,0,0                   ; I
121106$:.BYTE   0,70,20,20,20,20,20,22,14,0,0                   ; J
121121$:.BYTE   0,102,42,22,16,12,22,42,102,0,0                 ; K
121134$:.BYTE   0,2,2,2,2,2,2,2,176,0,0                         ; L
121147$:.BYTE   0,202,306,252,222,202,202,202,202,0,0           ; M
121162$:.BYTE   0,102,102,106,112,122,142,102,102,0,0           ; N
121175$:.BYTE   0,74,102,102,102,102,102,102,74,0,0             ; O
121210$:.BYTE   0,76,102,102,102,76,2,2,2,0,0                   ; P
121223$:.BYTE   0,74,102,102,102,102,102,122,74,100,0           ; Q
121236$:.BYTE   0,76,102,102,102,76,22,42,102,0,0               ; R
121251$:.BYTE   0,74,102,2,74,100,100,102,74,0,0                ; S
121264$:.BYTE   0,376,20,20,20,20,20,20,20,0,0                  ; T
121277$:.BYTE   0,102,102,102,102,102,102,102,74,0,0            ; U
121312$:.BYTE   0,202,202,202,202,202,104,50,20,0,0             ; V
121325$:.BYTE   0,202,202,202,202,222,252,306,202,0,0           ; W
121340$:.BYTE   0,102,102,44,30,30,44,102,102,0,0               ; X
121353$:.BYTE   0,202,202,104,50,20,20,20,20,0,0                ; Y
121366$:.BYTE   0,176,100,40,20,10,4,2,176,0,0                  ; Z
121401$:.BYTE   0,70,10,10,10,10,10,10,70,0,0                   ; [
121414$:.BYTE   0,0,2,4,10,20,40,100,200,0,0                    ; \
121427$:.BYTE   0,70,40,40,40,40,40,40,70,0,0                   ; ]
121442$:.BYTE   0,0,0,0,176,100,100,0,0,0,0                     ; ^
121455$:.BYTE   0,0,0,0,0,0,0,0,176,0,0                         ; _
121470$:.BYTE   0,30,20,40,0,0,0,0,0,0,0                        ; `
121503$:.BYTE   0,0,0,74,100,174,102,102,274,0,0                ; a
121516$:.BYTE   0,2,2,72,106,102,102,106,72,0,0                 ; b
121531$:.BYTE   0,0,0,74,102,2,2,102,74,0,0                     ; c
121544$:.BYTE   0,100,100,134,142,102,102,142,134,0,0           ; d
121557$:.BYTE   0,0,0,74,102,102,176,2,174,0,0                  ; e
121572$:.BYTE   0,60,110,10,34,10,10,10,10,0,0                  ; f
121605$:.BYTE   0,0,0,134,142,102,102,142,134,100,74            ; g
121620$:.BYTE   0,2,2,72,106,102,102,102,102,0,0                ; h
121633$:.BYTE   0,20,0,30,20,20,20,20,70,0,0                    ; i
121646$:.BYTE   0,20,0,20,20,20,20,20,20,22,14                  ; j
121661$:.BYTE   0,2,2,42,22,16,22,42,102,0,0                    ; k
121674$:.BYTE   0,30,20,20,20,20,20,20,70,0,0                   ; l
121707$:.BYTE   0,0,0,156,222,222,222,222,222,0,0               ; m
121722$:.BYTE   0,0,0,72,106,102,102,102,102,0,0                ; n
121735$:.BYTE   0,0,0,74,102,102,102,102,74,0,0                 ; o
121750$:.BYTE   0,0,0,72,106,102,102,106,72,2,2                 ; p
121763$:.BYTE   0,0,0,134,142,102,102,142,134,100,100           ; q
121776$:.BYTE   0,0,0,72,106,2,2,2,2,0,0                        ; r
122011$:.BYTE   0,0,0,74,2,74,100,102,74,0,0                    ; s
122024$:.BYTE   0,10,10,34,10,10,10,110,60,0,0                  ; t
122037$:.BYTE   0,0,0,102,102,102,102,142,134,0,0               ; u
122052$:.BYTE   0,0,0,202,202,202,104,50,20,0,0                 ; v
122065$:.BYTE   0,0,0,202,202,202,222,222,154,0,0               ; w
122100$:.BYTE   0,0,0,102,44,30,30,44,102,0,0                   ; x
122113$:.BYTE   0,0,0,102,102,102,44,30,10,4,2                  ; y
122126$:.BYTE   0,0,0,176,40,20,10,4,176,0,0                    ; z
122141$:.BYTE   0,0,140,20,20,14,20,20,140,0,0                  ; {
122154$:.BYTE   0,0,20,20,20,20,20,20,20,0,0                    ; |
122167$:.BYTE   0,0,14,20,20,140,20,20,14,0,0                   ; }
122202$:.BYTE   0,176,0,0,0,0,0,0,0,0,0                         ; ~
122215$:.BYTE   0,176,176,176,176,176,176,176,176,0,0           ; Delete
122230$:.BYTE   0,10,34,52,10,10,10,10,10,0,0                   ; 200
122243$:.BYTE   0,10,10,10,10,10,52,34,10,0,0                   ; 201
122256$:.BYTE   0,0,0,4,2,377,2,4,0,0,0                         ; 202
122271$:.BYTE   0,0,0,40,100,377,100,40,0,0,0                   ; 203
122304$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 204
122317$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 205
122332$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 206
122345$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 207
122360$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 210
122373$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 211
122406$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 212
122421$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 213
122434$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 214
122447$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 215
122462$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 216
122475$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 217
122510$:.BYTE   0,0,0,104,50,20,50,104,0,0,0                    ; 220
122523$:.BYTE   0,0,0,20,0,174,0,20,0,0,0                       ; 221
122536$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 222
122551$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 223
122564$:.BYTE   0,100,100,100,110,104,176,4,10,0,0              ; 224
122577$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 225
122612$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 226
122625$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 227
122640$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 230
122653$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 231
122666$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 232
122701$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 233
122714$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 234
122727$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 235
122742$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 236
122755$:.BYTE   0,0,0,0,0,0,0,0,0,0,0                           ; 237
122770$:.BYTE   24,24,24,24,24,27,24,24,24,24,24                ; Граф-@
123003$:.BYTE   10,10,10,10,10,377,0,0,0,0,0                    ; Граф-A
123016$:.BYTE   24,24,24,24,24,364,24,24,24,24,24               ; Граф-B
123031$:.BYTE   0,0,0,0,0,17,10,10,10,10,10                     ; Граф-C
123044$:.BYTE   24,24,24,24,24,24,24,24,24,24,24                ; Граф-D
123057$:.BYTE   10,10,10,10,10,370,10,10,10,10,10               ; Граф-E
123072$:.BYTE   10,10,10,10,10,370,0,0,0,0,0                    ; Граф-F
123105$:.BYTE   24,24,24,24,364,4,364,24,24,24,24               ; Граф-G
123120$:.BYTE   0,0,0,0,374,4,364,24,24,24,24                   ; Граф-H
123133$:.BYTE   10,10,10,10,377,0,377,10,10,10,10               ; Граф-I
123146$:.BYTE   0,0,0,0,0,370,10,10,10,10,10                    ; Граф-J
123161$:.BYTE   0,0,0,0,0,377,10,10,10,10,10                    ; Граф-K
123174$:.BYTE   24,24,24,24,367,0,377,0,0,0,0                   ; Граф-L
123207$:.BYTE   24,24,24,24,24,377,0,0,0,0,0                    ; Граф-M
123222$:.BYTE   10,10,10,10,10,17,10,10,10,10,10                ; Граф-N
123235$:.BYTE   24,24,24,24,367,0,367,24,24,24,24               ; Граф-O
123250$:.BYTE   10,10,10,10,10,377,10,10,10,10,10               ; Граф-P
123263$:.BYTE   10,10,10,10,370,10,370,10,10,10,10              ; Граф-Q
123276$:.BYTE   24,24,24,24,24,367,24,24,24,24,24               ; Граф-R
123311$:.BYTE   0,0,0,0,0,377,24,24,24,24,24                    ; Граф-S
123324$:.BYTE   10,10,10,10,377,0,377,0,0,0,0                   ; Граф-T
123337$:.BYTE   0,0,0,0,0,377,0,0,0,0,0                         ; Граф-U
123352$:.BYTE   24,24,24,24,364,4,374,0,0,0,0                   ; Граф-V
123365$:.BYTE   10,10,10,10,10,10,10,10,10,10,10                ; Граф-W
123400$:.BYTE   0,0,0,0,377,0,377,10,10,10,10                   ; Граф-X
123413$:.BYTE   10,10,10,10,10,17,0,0,0,0,0                     ; Граф-Y
123426$:.BYTE   0,0,0,0,377,0,377,0,0,0,0                       ; Граф-Z
123441$:.BYTE   24,24,24,24,27,20,27,24,24,24,24                ; Граф-[
123454$:.BYTE   24,24,24,24,27,20,37,0,0,0,0                    ; Граф-\
123467$:.BYTE   0,0,0,0,377,0,367,24,24,24,24                   ; Граф-]
123502$:.BYTE   10,10,10,10,17,10,17,10,10,10,10                ; Граф-^
123515$:.BYTE   0,0,0,0,37,20,27,24,24,24,24                    ; Граф-_
123530$:.BYTE   0,0,0,142,222,222,236,222,142,0,0               ; ю
123543$:.BYTE   0,0,0,74,100,174,102,102,274,0,0                ; а
123556$:.BYTE   0,100,74,2,76,102,102,102,74,0,0                ; б
123571$:.BYTE   0,0,0,42,42,42,42,42,176,100,0                  ; ц
123604$:.BYTE   0,0,0,160,110,104,104,104,376,202,0             ; д
123617$:.BYTE   0,0,0,74,102,102,176,2,174,0,0                  ; е
123632$:.BYTE   0,0,0,20,174,222,222,222,174,20,20              ; ф
123645$:.BYTE   0,0,0,176,102,2,2,2,2,0,0                       ; г
123660$:.BYTE   0,0,0,102,44,30,30,44,102,0,0                   ; х
123673$:.BYTE   0,0,0,102,142,122,112,106,102,0,0               ; и
123706$:.BYTE   0,30,0,102,142,122,112,106,102,0,0              ; й
123721$:.BYTE   0,0,0,102,42,22,36,42,102,0,0                   ; к
123734$:.BYTE   0,0,0,160,110,104,104,104,102,0,0               ; л
123747$:.BYTE   0,0,0,202,306,252,222,202,202,0,0               ; м
123762$:.BYTE   0,0,0,102,102,102,176,102,102,0,0               ; н
123775$:.BYTE   0,0,0,74,102,102,102,102,74,0,0                 ; о
124010$:.BYTE   0,0,0,176,102,102,102,102,102,0,0               ; п
124023$:.BYTE   0,0,0,174,102,102,174,104,102,0,0               ; я
124036$:.BYTE   0,0,0,72,106,102,102,106,72,2,2                 ; р
124051$:.BYTE   0,0,0,74,102,2,2,102,74,0,0                     ; с
124064$:.BYTE   0,0,0,376,20,20,20,20,20,0,0                    ; т
124077$:.BYTE   0,0,0,102,102,102,44,30,10,4,2                  ; у
124112$:.BYTE   0,0,0,222,124,70,70,124,222,0,0                 ; ж
124125$:.BYTE   0,0,0,76,102,76,102,102,76,0,0                  ; в
124140$:.BYTE   0,0,0,2,2,76,102,102,76,0,0                     ; ь
124153$:.BYTE   0,0,0,202,202,236,242,242,236,0,0               ; ы
124166$:.BYTE   0,0,0,74,100,70,100,100,74,0,0                  ; з
124201$:.BYTE   0,0,0,222,222,222,222,222,376,0,0               ; ш
124214$:.BYTE   0,0,0,76,100,100,174,100,76,0,0                 ; э
124227$:.BYTE   0,0,0,222,222,222,222,222,376,200,200           ; щ
124242$:.BYTE   0,0,0,102,102,102,174,100,100,0,0               ; ч
124255$:.BYTE   0,0,0,7,5,174,204,204,174,0,0                   ; ъ
124270$:.BYTE   0,142,222,222,222,236,222,222,142,0,0           ; Ю
124303$:.BYTE   0,30,44,102,102,176,102,102,102,0,0             ; А
124316$:.BYTE   0,176,2,2,76,102,102,102,76,0,0                 ; Б
124331$:.BYTE   0,102,102,102,102,102,102,102,376,200,0         ; Ц
124344$:.BYTE   0,160,110,104,104,104,104,104,376,202,0         ; Д
124357$:.BYTE   0,176,2,2,76,2,2,2,176,0,0                      ; Е
124372$:.BYTE   0,20,174,222,222,222,222,174,20,20,0            ; Ф
124405$:.BYTE   0,176,102,2,2,2,2,2,2,0,0                       ; Г
124420$:.BYTE   0,102,102,44,30,30,44,102,102,0,0               ; Х
124433$:.BYTE   0,102,102,142,122,112,106,102,102,0,0           ; И
124446$:.BYTE   30,102,102,142,122,112,106,102,102,0,0          ; Й
124461$:.BYTE   0,102,42,22,16,22,42,102,202,0,0                ; К
124474$:.BYTE   0,160,110,104,104,104,104,104,102,0,0           ; Л
124507$:.BYTE   0,202,306,252,222,202,202,202,202,0,0           ; М
124522$:.BYTE   0,102,102,102,176,102,102,102,102,0,0           ; Н
124535$:.BYTE   0,74,102,102,102,102,102,102,74,0,0             ; О
124550$:.BYTE   0,176,102,102,102,102,102,102,102,0,0           ; П
124563$:.BYTE   0,174,102,102,102,174,110,104,102,0,0           ; Я
124576$:.BYTE   0,76,102,102,102,76,2,2,2,0,0                   ; Р
124611$:.BYTE   0,74,102,2,2,2,2,102,74,0,0                     ; С
124624$:.BYTE   0,376,222,20,20,20,20,20,20,0,0                 ; Т
124637$:.BYTE   0,102,102,102,102,174,100,102,74,0,0            ; У
124652$:.BYTE   0,222,222,124,70,124,222,222,222,0,0            ; Ж
124665$:.BYTE   0,76,102,102,76,102,102,102,76,0,0              ; В
124700$:.BYTE   0,2,2,2,76,102,102,102,76,0,0                   ; Ь
124713$:.BYTE   0,202,202,202,236,242,242,242,236,0,0           ; Ы
124726$:.BYTE   0,74,102,100,70,100,100,102,74,0,0              ; З
124741$:.BYTE   0,222,222,222,222,222,222,222,376,0,0           ; Ш
124754$:.BYTE   0,74,102,200,200,370,200,102,74,0,0             ; Э
124767$:.BYTE   0,222,222,222,222,222,222,222,376,200,200       ; Щ
125002$:.BYTE   0,102,102,102,102,174,100,100,100,0,0           ; Ч
125015$:.BYTE   0,7,5,4,174,204,204,204,174,0,0                 ; Ъ
        .EVEN