Difference between revisions of "Uknc ROM disasm - 3"

From Felixl.com
Jump to navigationJump to search
 
 
Line 1: Line 1:
 
<pre>
 
<pre>
 +
 
; *****************************************************************
 
; *****************************************************************
 
; *                                                              *
 
; *                                                              *
Line 9: Line 10:
  
 
; П/п начальной инициализации
 
; П/п начальной инициализации
107744$:JSR R5,173730$ ; Очистка ОЗУ
+
107744$:JSR     R5,173730$     ; Очистка ОЗУ
.WORD 13142,4017 ; Начальный адрес - 13142, число слов - 4017
+
        .WORD   13142,4017     ; Начальный адрес - 13142, число слов - 4017
MOV #0,@#177026 ; Разрешить все планы видеопамяти
+
107754$:MOV     #0,@#177026     ; Разрешить все планы видеопамяти
CLR @#177020 ; Очистка регистров цвета кода фона
+
        CLR     @#177020       ; Очистка регистров цвета кода фона
CLR @#177022
+
        CLR     @#177022
CLR R0 ; Цикл очистки видеопамяти
+
        CLR     R0             ; Цикл очистки видеопамяти
MOV #177010,R1
+
        MOV     #177010,R1
MOV #100000,@R1
+
        MOV     #100000,@R1
MOV #100000,R2
+
        MOV     #100000,R2
MOV #177024,R3
+
        MOV     #177024,R3
110014$:MOV R0,@R3
+
110014$:MOV     R0,@R3
INC @R1
+
        INC     @R1
SOB R2,110014$
+
        SOB     R2,110014$
MOV #175700$,@#320 ; Адрес п/п обработки прерывания канала 0,пр.
+
        MOV     #175700$,@#320 ; Адрес п/п обработки прерывания канала 0,пр.
MOV #200,@#322
+
        MOV     #200,@#322
BIS #1,@#177066 ; Разрешить прерывания канала 0, приемник
+
        BIS     #1,@#177066     ; Разрешить прерывания канала 0, приемник
CALL 110266$ ; Запрограммировать таблицу видеострок
+
        CALL   110266$         ; Запрограммировать таблицу видеострок
MOV #117430$-13,R0 ; Настройка таблицы адресов рисунков символов
+
        MOV     #117430$-13,R0 ; Настройка таблицы адресов рисунков символов
MOV #14142,R1 ; на область ПЗУ (адреса 117430-125027)
+
        MOV     #14142,R1       ; на область ПЗУ (адреса 117430-125027)
MOV #400,R2
+
        MOV     #400,R2
MOV #13,R3
+
        MOV     #13,R3
110070$:ADD R3,R0
+
110070$:ADD     R3,R0
MOV R0,(R1)+
+
        MOV     R0,(R1)+
SOB R2,110070$
+
        SOB     R2,110070$
MOV #112462$,R0 ; Настройка таблицы адресов п/п управляющих и
+
        MOV     #112462$,R0     ; Настройка таблицы адресов п/п управляющих и
BR 110110$ ; Esc-последовательностей
+
        BR     110110$         ; Esc-последовательностей
110104$:MOV (R0)+,13142(R1)
+
110104$:MOV     (R0)+,13142(R1)
110110$:MOV (R0)+,R1
+
110110$:MOV     (R0)+,R1
BNE 110104$
+
        BNE     110104$
MOV #2000,@#22542 ; Настройка указателей на буферы
+
        MOV     #2000,@#22542   ; Настройка указателей на буферы
MOV #2000,@#22544
+
        MOV     #2000,@#22544
MOVB #14,@#2000 ; Положить символ Ctrl+L в буфер (CLS)
+
        MOVB   #14,@#2000     ; Положить символ Ctrl+L в буфер (CLS)
JSR R5,110656$ ; Загрузка в ОЗУ ТВ для верхней строки
+
        JSR     R5,110656$     ; Загрузка в ОЗУ ТВ для верхней строки
.WORD 112040$,22560
+
        .WORD   112040$,22560
JSR R5,110656$ ; Загрузка в ОЗУ ТВ для экрана пользователя
+
        JSR     R5,110656$     ; Загрузка в ОЗУ ТВ для экрана пользователя
.WORD 112142$,22656
+
        .WORD   112142$,22656
JSR R5,110656$ ; Загрузка в ОЗУ ТВ для экрана установки
+
        JSR     R5,110656$     ; Загрузка в ОЗУ ТВ для экрана установки
.WORD 112252$,22754
+
        .WORD   112252$,22754
JSR R5,110656$ ; Загрузка в ОЗУ ТВ для нижней строки
+
        JSR     R5,110656$     ; Загрузка в ОЗУ ТВ для нижней строки
.WORD 112360$,23052
+
        .WORD   112360$,23052
MOV #2270,@#272 ; Настройка первой видеостроки
+
        MOV     #2270,@#272     ; Настройка первой видеостроки
110204$:MOV #22656,R5 ; R5 = адрес ТВ для экрана пользователя
+
110204$:MOV     #22656,R5       ; R5 = адрес ТВ для экрана пользователя
110210$:MOV 62(R5),@#23160 ; Указатель на регистр управления отображением
+
110210$:MOV     62(R5),@#23160 ; Указатель на регистр управления отображением
; экраном пользователя
+
                                ; экраном пользователя
MOV 72(R5),@#23164 ; Режим использования курсора
+
        MOV     72(R5),@#23164 ; Режим использования курсора
INC @#7066 ; Увел. счетчик симв. в буфере (для вывода CLS)
+
        INC     @#7066         ; Увел. счетчик симв. в буфере (для вывода CLS)
110230$:MOV R5,@#23150 ; Сделать текущей ТВ, адрес которой в R5
+
110230$:MOV     R5,@#23150     ; Сделать текущей ТВ, адрес которой в R5
MOV 34(R5),@#177016 ; Настройка регистра кода цвета точки
+
        MOV     34(R5),@#177016 ; Настройка регистра кода цвета точки
MOV 40(R5),@#177020 ; Настройка регистра кода цвета фона
+
        MOV     40(R5),@#177020 ; Настройка регистра кода цвета фона
MOV 40(R5),@#177022
+
        MOV     40(R5),@#177022
MOVB 70(R5),@64(R5) ; Установить цвет курсора
+
        MOVB   70(R5),@64(R5) ; Установить цвет курсора
RETURN
+
        RETURN
 
; П/п программирования таблицы видеострок
 
; П/п программирования таблицы видеострок
110266$:MOV #1131,R2 ; Число программируемых видеострок (ВС)
+
110266$:MOV     #1131,R2       ; Число программируемых видеострок (ВС)
MOV #7034,R1 ; Адрес конца
+
        MOV     #7034,R1       ; Адрес конца
MOV R1,@#7036
+
        MOV     R1,@#7036
110302$:MOV R1,R0 ; Цикл начального заполнения таблицы
+
110302$:MOV     R1,R0           ; Цикл начального заполнения таблицы
MOV R0,-(R1)
+
        MOV     R0,-(R1)
TST -(R1)
+
        TST     -(R1)
SOB R2,110302$
+
        SOB     R2,110302$
JSR R5,110550$ ; Заполнение зоны адресов для ВС вехней строки
+
        JSR     R5,110550$     ; Заполнение зоны адресов для ВС вехней строки
.WORD 175700,2410,12,50
+
        .WORD   175700,2410,12,50
MOV R0,@#2464
+
        MOV     R0,@#2464
MOV #177460,@#2474
+
        MOV     #177460,@#2474
JSR R5,110550$ ; Заполнение зоны адресов для ВС польз. экрана
+
        JSR     R5,110550$     ; Заполнение зоны адресов для ВС польз. экрана
.WORD 100000,2500,436,120
+
        .WORD   100000,2500,436,120
MOV #177460,@#4674
+
        MOV     #177460,@#4674
JSR R5,110550$ ; Заполнение зоны адресов для ВС УСТ экрана
+
        JSR     R5,110550$     ; Заполнение зоны адресов для ВС УСТ экрана
.WORD 177460,4704,25,0
+
        .WORD   177460,4704,25,0
JSR R5,110550$
+
        JSR     R5,110550$
.WORD 154540,5030,334,50
+
        .WORD   154540,5030,334,50
JSR R5,110550$
+
        JSR     R5,110550$
.WORD 177460,6610,26,0
+
        .WORD   177460,6610,26,0
MOV #177460,@#6744
+
        MOV     #177460,@#6744
JSR R5,110550$ ; Заполнение зоны адресов для ВС нижней строки
+
        JSR     R5,110550$     ; Заполнение зоны адресов для ВС нижней строки
.WORD 176570,6754,13,50
+
        .WORD   176570,6754,13,50
JSR R5,110550$
+
        JSR     R5,110550$
.WORD 177460,7030,2,0
+
        .WORD   177460,7030,2,0
MOV #2,R0 ; Выделение регистров управления отображением,
+
        MOV     #2,R0           ; Выделение регистров управления отображением,
MOV #6,R1 ; цветом и подправка структуры таблицы
+
        MOV     #6,R1           ; цветом и подправка структуры таблицы
BIS R0,@#2366
+
        BIS     R0,@#2366
BIS R1,@#2376
+
        BIS     R1,@#2376
BIS R0,@#2456
+
        BIS     R0,@#2456
BIS R1,@#2466
+
        BIS     R1,@#2466
MOV #2500,@#4666
+
        MOV     #2500,@#4666
BIS R1,@#4676
+
        BIS     R1,@#4676
MOV #6742,@#4536
+
        MOV     #6742,@#4536
MOV #6742,@#6736
+
        MOV     #6742,@#6736
BIS R1,@#6746
+
        BIS     R1,@#6746
RETURN
+
        RETURN
 
; П/п заполнения зоны адресов для ВС
 
; П/п заполнения зоны адресов для ВС
 
; 1 параметр - начальный видеоадрес
 
; 1 параметр - начальный видеоадрес
Line 104: Line 105:
 
; 3 параметр - размер таблицы (число видеострок)
 
; 3 параметр - размер таблицы (число видеострок)
 
; 4 параметр - длина видеостроки
 
; 4 параметр - длина видеостроки
110550$:MOV (R5)+,R0
+
110550$:MOV     (R5)+,R0
MOV (R5)+,R1
+
        MOV     (R5)+,R1
MOV (R5)+,R2
+
        MOV     (R5)+,R2
MOV (R5)+,R3
+
        MOV     (R5)+,R3
110560$:MOV R0,(R1)+
+
110560$:MOV     R0,(R1)+
ADD R3,R0
+
        ADD     R3,R0
TST (R1)+
+
        TST     (R1)+
SOB R2,110560$
+
        SOB     R2,110560$
RTS R5
+
        RTS     R5
 
; П/п установки таблицы ВС на начало видеопамяти
 
; П/п установки таблицы ВС на начало видеопамяти
110572$:ADD 74(R5),PC ; Рулон присутствует ?
+
110572$:ADD     74(R5),PC       ; Рулон присутствует ?
BR 110654$ ; Нет
+
        BR     110654$         ; Нет
CLR @#23170 ; Число строк для скроллинга = 0
+
        CLR     @#23170         ; Число строк для скроллинга = 0
MOV @#2476,R0 ; Корректировка таблицы
+
        MOV     @#2476,R0       ; Корректировка таблицы
ADD #2040,R0
+
        ADD     #2040,R0
CMP R0,#4670
+
        CMP     R0,#4670
BLOS 110626$
+
        BLOS   110626$
SUB #2170,R0
+
        SUB     #2170,R0
110626$:MOV R0,-2(R0)
+
110626$:MOV     R0,-2(R0)
MOV #6742,@#4536 ; Установка начальных значений
+
        MOV     #6742,@#4536   ; Установка начальных значений
MOV #2500,@#2476
+
        MOV     #2500,@#2476
MOV #2500,30(R5)
+
        MOV     #2500,30(R5)
 
110654$:RETURN
 
110654$:RETURN
 
; П/п формирования таблицы видеопараметров
 
; П/п формирования таблицы видеопараметров
110656$:MOV (R5)+,R0 ; R0 = адрес таблицы в ПЗУ
+
110656$:MOV     (R5)+,R0       ; R0 = адрес таблицы в ПЗУ
MOV @R5,R1 ; R1 = адрес таблицы в ОЗУ
+
        MOV     @R5,R1         ; R1 = адрес таблицы в ОЗУ
JSR R5,110716$ ; Перекачка таблицы в ОЗУ
+
        JSR     R5,110716$     ; Перекачка таблицы в ОЗУ
MOV (R5)+,R1
+
        MOV     (R5)+,R1
MOV (R0)+,@64(R1) ; Заполнение регистра управления отображением
+
        MOV     (R0)+,@64(R1)   ; Заполнение регистра управления отображением
MOV (R0)+,@54(R1)
+
        MOV     (R0)+,@54(R1)
MOV (R0)+,@50(R1) ; Заполнение регистра управления цветом
+
        MOV     (R0)+,@50(R1)   ; Заполнение регистра управления цветом
MOV (R0)+,@52(R1)
+
        MOV     (R0)+,@52(R1)
RTS R5
+
        RTS     R5
 
; П/п перекачки
 
; П/п перекачки
110712$:MOV (R5)+,R0
+
110712$:MOV     (R5)+,R0
MOV (R5)+,R1
+
        MOV     (R5)+,R1
110716$:MOV (R0)+,R2 ; R2 = число слов
+
110716$:MOV     (R0)+,R2       ; R2 = число слов
110720$:MOV (R0)+,(R1)+
+
110720$:MOV     (R0)+,(R1)+
SOB R2,110720$
+
        SOB     R2,110720$
RTS R5
+
        RTS     R5
 
;  ***  ОСНОВНАЯ ПОДПРОГРАММА УПРАВЛЕНИЯ ТЕКСТОВЫМ ТЕРМИНАЛОМ  ***
 
;  ***  ОСНОВНАЯ ПОДПРОГРАММА УПРАВЛЕНИЯ ТЕКСТОВЫМ ТЕРМИНАЛОМ  ***
110726$:MOV #174164$,-(SP) ; Занести в стек адреса возвратов
+
110726$:MOV     #174164$,-(SP) ; Занести в стек адреса возвратов
MOV #111126$,-(SP)
+
        MOV     #111126$,-(SP)
MOV SP,@#23152
+
        MOV     SP,@#23152
MOV @#23154,SP
+
        MOV     @#23154,SP
MOV @#23150,R5 ; R5 = адрес текущей ТВ
+
        MOV     @#23150,R5     ; R5 = адрес текущей ТВ
INC @#7066 ; Установить флаг вызова п/п перекл. курсора
+
        INC     @#7066         ; Установить флаг вызова п/п перекл. курсора
110756$:INC @#7064
+
110756$:INC     @#7064
 
; П/п чтения очередного символа, посланного по каналу 0
 
; П/п чтения очередного символа, посланного по каналу 0
110762$:DEC @#7064 ; Уменьшить счетчик символов
+
110762$:DEC     @#7064         ; Уменьшить счетчик символов
BEQ 111050$ ; Символов нет
+
        BEQ     111050$         ; Символов нет
MOVB @22542,R0 ; Прочесть символ
+
        MOVB   @22542,R0       ; Прочесть символ
INC @#22542 ; Подкорректировать указатель
+
        INC     @#22542         ; Подкорректировать указатель
BIC #200,@#22542
+
        BIC     #200,@#22542
BIC #177400,R0
+
        BIC     #177400,R0
CMP R0,#40 ; Это управляющие коды ?
+
        CMP     R0,#40         ; Это управляющие коды ?
BHIS 111024$ ; Нет
+
        BHIS   111024$         ; Нет
ADD @#23174,PC ; Разрешено чтение управляющих символов ?
+
        ADD     @#23174,PC     ; Разрешено чтение управляющих символов ?
111024$:RETURN ; Да
+
111024$:RETURN                 ; Да
111026$:CMP R0,#33 ; Это символ Esc ?
+
111026$:CMP     R0,#33         ; Это символ Esc ?
BEQ 111044$ ; Да
+
        BEQ     111044$         ; Да
ASL R0 ; Вызов п/п обработки управляющего символа
+
        ASL     R0             ; Вызов п/п обработки управляющего символа
CALL @13142(R0)
+
        CALL   @13142(R0)
BR 110762$
+
        BR     110762$
111044$:JMP 113544$
+
111044$:JMP     113544$
111050$:ADD @#22546,PC ; Была попытка передачи символа ?
+
111050$:ADD     @#22546,PC     ; Была попытка передачи символа ?
BR 111062$ ; Нет
+
        BR     111062$         ; Нет
TRAP 4
+
        TRAP   4
BR 110756$
+
        BR     110756$
111062$:MOV @#7056,R0 ; R0 = указатель текущей задачи
+
111062$:MOV     @#7056,R0       ; R0 = указатель текущей задачи
MOV #110726$,22(R0) ; Запомнить адрес возврата
+
        MOV     #110726$,22(R0) ; Запомнить адрес возврата
MOV SP,@#23154
+
        MOV     SP,@#23154
MOV @#23152,SP
+
        MOV     @#23152,SP
CMP (SP)+,(SP)+
+
        CMP     (SP)+,(SP)+
JMP 174164$ ; Переход на цикл вызова подпрограмм
+
        JMP     174164$         ; Переход на цикл вызова подпрограмм
111112$:ADD @#22546$,PC ; Была попытка передачи символа ?
+
111112$:ADD     @#22546,PC     ; Была попытка передачи символа ?
RETURN ; Нет
+
        RETURN                 ; Нет
TRAP 4
+
        TRAP   4
INC @#7064
+
        INC     @#7064
111126$:DEC @#7064 ; Уменьшить счетчик символов
+
111126$:DEC     @#7064         ; Уменьшить счетчик символов
BEQ 111112$ ; Символов нет
+
        BEQ     111112$         ; Символов нет
TST @#7060 ; Были нажаты клавиши ?
+
        TST     @#7060         ; Были нажаты клавиши ?
BEQ 111204$ ; Нет
+
        BEQ     111204$         ; Нет
RETURN
+
        RETURN
 
; Точка входа в подпрограмму
 
; Точка входа в подпрограмму
111144$:INC @#7066 ; Установить флаг вызова п/п перекл. курсора
+
111144$:INC     @#7066         ; Установить флаг вызова п/п перекл. курсора
MOV @#23150,R5 ; R5 = адрес текущей таблицы видеопараметров
+
        MOV     @#23150,R5     ; R5 = адрес текущей таблицы видеопараметров
MOV 34(R5),@#177016 ; Загрузка регистров кода цвета и кода фона
+
        MOV     34(R5),@#177016 ; Загрузка регистров кода цвета и кода фона
MOV 40(R5),@#177020
+
        MOV     40(R5),@#177020
MOV 40(R5),@#177022
+
        MOV     40(R5),@#177022
MOVB 70(R5),@64(R5) ; Установить цвет курсора
+
        MOVB   70(R5),@64(R5) ; Установить цвет курсора
111204$:MOVB @22542,R0 ; Прочесть символ
+
111204$:MOVB   @22542,R0       ; Прочесть символ
INC @#22542 ; Подкорректировать указатель
+
        INC     @#22542         ; Подкорректировать указатель
BIC #200,@#22542
+
        BIC     #200,@#22542
MOV #111126$,-(SP) ; Положить в стек адрес возврата
+
        MOV     #111126$,-(SP) ; Положить в стек адрес возврата
BIC #177400,R0
+
        BIC     #177400,R0
CMP R0,#40 ; Это управляющие коды ?
+
        CMP     R0,#40         ; Это управляющие коды ?
BHIS 111260$ ; Нет
+
        BHIS   111260$         ; Нет
TSTB @#22552 ; Установлен режим ИСУ ?
+
        TSTB   @#22552         ; Установлен режим ИСУ ?
BEQ 111252$ ; Нет
+
        BEQ     111252$         ; Нет
JMP 111730$
+
        JMP     111730$
111252$:ASL R0 ; Вызов п/п обработки управляющего символа
+
111252$:ASL     R0             ; Вызов п/п обработки управляющего символа
JMP @13142(R0)
+
        JMP     @13142(R0)
111260$:CMPB R0,#77 ; Это символы "A-Z,[,\,],^,_,a-z,{,|,},~" ?
+
111260$:CMPB   R0,#77         ; Это символы "A-Z,[,\,],^,_,a-z,{,|,},~" ?
BLOS 111272$ ; Нет
+
        BLOS   111272$         ; Нет
BIS @#22560,R0 ; Подстройка алфавита
+
        BIS     @#22556,R0     ; Подстройка алфавита
111272$:ASL R0
+
111272$:ASL     R0
MOV 14142(R0),R1 ; R1 = адрес рисунка символа
+
        MOV     14142(R0),R1   ; R1 = адрес рисунка символа
MOV 10(R5),R0 ; R0 = длина видеостроки
+
        MOV     10(R5),R0       ; R0 = длина видеостроки
MOV #177010,R2
+
        MOV     #177010,R2
MOV #177024,R3
+
        MOV     #177024,R3
MOV @R5,@R2 ; Уст. в регистре адреса планов нач. адрес
+
        MOV     @R5,@R2         ; Уст. в регистре адреса планов нач. адрес
ADD 56(R5),PC ; Переход в зависимости от режима (инверсия...)
+
        ADD     56(R5),PC       ; Переход в зависимости от режима (инверсия...)
111322$:.REPT 12 ; Цикл рисования символа
+
111322$:.REPT   12             ; Цикл рисования символа
MOVB (R1)+,R4
+
        MOVB   (R1)+,R4
MOV R4,@R3
+
        MOV     R4,@R3
ADD R0,@R2
+
        ADD     R0,@R2
.ENDR
+
        .ENDR
MOVB (R1)+,R4
+
        MOVB   (R1)+,R4
MOV R4,@R3
+
        MOV     R4,@R3
111422$:INC @R5 ; Передвинуть указатель на следующий адрес
+
111422$:INC     @R5             ; Передвинуть указатель на следующий адрес
DEC 16(R5) ; Уменьшить счетчик оставшихся позиций
+
        DEC     16(R5)         ; Уменьшить счетчик оставшихся позиций
BNE 111624$ ; Еще не конец строки
+
        BNE     111624$         ; Еще не конец строки
MOV 22(R5),@R5 ; Формирование адреса начала следующей строки
+
        MOV     22(R5),@R5     ; Формирование адреса начала следующей строки
MOV 4(R5),16(R5)
+
        MOV     4(R5),16(R5)
111444$:ADD #54,32(R5)
+
111444$:ADD     #54,32(R5)
CMP 32(R5),26(R5)
+
        CMP     32(R5),26(R5)
BNE 111470$
+
        BNE     111470$
MOV 24(R5),32(R5)
+
        MOV     24(R5),32(R5)
111470$:ADD @32(R5),@R5
+
111470$:ADD     @32(R5),@R5
DEC 20(R5) ; Уменьшить счетчик оставшихся строк
+
        DEC     20(R5)         ; Уменьшить счетчик оставшихся строк
BNE 111624$ ; Еще не конец экрана
+
        BNE     111624$         ; Еще не конец экрана
ADD 74(R5),PC ; Рулон присутствует ?
+
        ADD     74(R5),PC       ; Рулон присутствует ?
BR 111626$ ; Нет
+
        BR     111626$         ; Нет
INC 20(R5) ; Увеличить счетчик оставшихся строк
+
        INC     20(R5)         ; Увеличить счетчик оставшихся строк
MOV #13,-(SP)
+
        MOV     #13,-(SP)
ADD #54,30(R5) ; Увелич. адрес списка ВС верхней части экрана
+
        ADD     #54,30(R5)     ; Увелич. адрес списка ВС верхней части экрана
CMP 30(R5),#4670
+
        CMP     30(R5),#4670
BNE 111544$
+
        BNE     111544$
MOV #2500,30(R5)
+
        MOV     #2500,30(R5)
111544$:MOV @#23170,R0 ; R0 = кол-во оставшихся видеострок для скрол.
+
111544$:MOV     @#23170,R0     ; R0 = кол-во оставшихся видеострок для скрол.
BEQ 111574$ ; Их нет
+
        BEQ     111574$         ; Их нет
BPL 111556$
+
        BPL     111556$
NEG R0
+
        NEG     R0
111556$:CMP R0,#14 ; <= 12(10) ?
+
111556$:CMP     R0,#14         ; <= 12(10) ?
BLOS 111614$ ; Да
+
        BLOS   111614$         ; Да
TRAP 0 ; Вызов цикла подпрограмм
+
        TRAP   0               ; Вызов цикла подпрограмм
MOV @#23150,R5 ; R5 = адрес текущей ТВ
+
        MOV     @#23150,R5     ; R5 = адрес текущей ТВ
BR 111544$
+
        BR     111544$
111574$:CLR @#23164$ ; Запретить курсор
+
111574$:CLR     @#23164         ; Запретить курсор
MOV #2,@#7134
+
        MOV     #2,@#7134
MOVB #177,@23160 ; Убрать курсор с экрана
+
        MOVB   #177,@23160     ; Убрать курсор с экрана
111614$:CALL 113344$ ; Очистить освободившуюся строку
+
111614$:CALL   113344$         ; Очистить освободившуюся строку
ADD (SP)+,@#23170 ; Осуществить скроллинг
+
        ADD     (SP)+,@#23170   ; Осуществить скроллинг
 
111624$:RETURN
 
111624$:RETURN
111626$:JMP 114316$ ; Перекинуть курсор на верх экрана
+
111626$:JMP     114316$         ; Перекинуть курсор на верх экрана
 
; П/п выключения курсора
 
; П/п выключения курсора
111632$:CLR @#23164 ; Запретить использование курсора
+
111632$:CLR     @#23164         ; Запретить использование курсора
MOV 60(R5),R0 ; Выключение курсора
+
        MOV     60(R5),R0       ; Выключение курсора
BIC #1,6(R0)
+
        BIC     #1,6(R0)
BIC #1,52(R0)
+
        BIC     #1,52(R0)
RETURN
+
        RETURN
 
; Обработка режима ПОДЧЕРКИВАНИЕ
 
; Обработка режима ПОДЧЕРКИВАНИЕ
111660$:MOV #12,R0 ; R0 = число байт для посылки в видео
+
111660$:MOV     #12,R0         ; R0 = число байт для посылки в видео
111664$:MOVB (R1)+,R4 ; Рисование символа
+
111664$:MOVB   (R1)+,R4       ; Рисование символа
MOV R4,@R3
+
        MOV     R4,@R3
ADD 10(R5),@R2
+
        ADD     10(R5),@R2
SOB R0,111664$
+
        SOB     R0,111664$
MOV #377,@R3 ; Подчеркнуть символ
+
        MOV     #377,@R3       ; Подчеркнуть символ
BR 111422$
+
        BR     111422$
 
; Обработка режима ИНВЕРСИЯ
 
; Обработка режима ИНВЕРСИЯ
111704$:MOV #13,R0
+
111704$:MOV     #13,R0
BR 111716$
+
        BR     111716$
111712$:ADD 10(R5),@R2
+
111712$:ADD     10(R5),@R2
111716$:MOVB (R1)+,R4
+
111716$:MOVB   (R1)+,R4
COM R4 ; Инвертировать байт
+
        COM     R4             ; Инвертировать байт
MOV R4,@R3
+
        MOV     R4,@R3
SOB R0,111712$
+
        SOB     R0,111712$
BR 111422$
+
        BR     111422$
 
; Обработка режима ИСУ
 
; Обработка режима ИСУ
111730$:MOV #3,-(SP) ; Формирование начальных значений
+
111730$:MOV     #3,-(SP)       ; Формирование начальных значений
MOV R0,-(SP)
+
        MOV     R0,-(SP)
MOV R0,-(SP)
+
        MOV     R0,-(SP)
MOV #74,R0 ; Вывод "<"
+
        MOV     #74,R0         ; Вывод "<"
CALL 111272$
+
        CALL   111272$
CLR R0 ; Цикл вывода трех цифр
+
        CLR     R0             ; Цикл вывода трех цифр
BR 111762$
+
        BR     111762$
111754$:CLR R0
+
111754$:CLR     R0
ROLB @SP
+
        ROLB   @SP
ROLB R0
+
        ROLB   R0
111762$:ROLB @SP
+
111762$:ROLB   @SP
ROLB R0
+
        ROLB   R0
ROLB @SP
+
        ROLB   @SP
ROLB R0
+
        ROLB   R0
ADD #60,R0
+
        ADD     #60,R0
CALL 111272$
+
        CALL   111272$
DEC 4(SP)
+
        DEC     4(SP)
BNE 111754$
+
        BNE     111754$
MOV #76,R0 ; Вывод ">"
+
        MOV     #76,R0         ; Вывод ">"
CALL 111272$
+
        CALL   111272$
TST (SP)+
+
        TST     (SP)+
CMP #12,(SP)+ ; Это был символ LF ?
+
        CMP     #12,(SP)+       ; Это был символ LF ?
BNE 112034$ ; Нет
+
        BNE     112034$         ; Нет
CALL 114310$ ; Вывод CRLF
+
        CALL   114310$         ; Вывод CRLF
112034$:TST (SP)+
+
112034$:TST     (SP)+
RETURN
+
        RETURN
  
 
; ТАБЛИЦЫ ВИДЕОПАРАМЕТРОВ
 
; ТАБЛИЦЫ ВИДЕОПАРАМЕТРОВ
Line 318: Line 319:
  
 
; ТВ для верхней информационной строки
 
; ТВ для верхней информационной строки
112040$:.WORD 34
+
112040$:.WORD   34
.WORD 175700,175700,50,13,50,1,13,50,1,0,2410,12114,2410,2410
+
        .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   6,6,0,0,0,0,2400,2402,2372,0,2410,2371,2370,2
.WORD 0,27,21000,63104
+
        .WORD   0,27,21000,63104
 
; ТВ для пользовательского экрана
 
; ТВ для пользовательского экрана
112142$:.WORD 37
+
112142$:.WORD   37
.WORD 100000,100000,120,410,120,30,436,120,30,0,2500,4670,2500,2500
+
        .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   7,7,10421,10421,10421,10421,2470,2472,2462,0,2500,2461,2460
.WORD 1,7,2,2
+
        .WORD   1,7,2,2
.WORD 7,7,135230,177334
+
        .WORD   7,7,135230,177334
 
; ТВ для экрана установки
 
; ТВ для экрана установки
112252$:.WORD 36
+
112252$:.WORD   36
.WORD 154540,154540,50,334,50,24,334,50,24,0,5030,6610,5030,5030
+
        .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   7,7,10421,10421,10421,10421,4700,4702,4672,0,5030,4671,4670
.WORD 2,7,2
+
        .WORD   2,7,2
.WORD 7,27,135230,177334
+
        .WORD   7,27,135230,177334
 
; ТВ для нижней информационной строки
 
; ТВ для нижней информационной строки
112360$:.WORD 34
+
112360$:.WORD   34
.WORD 176570,176570,50,13,50,1,13,50,1,0,6754,7030,6754,6754
+
        .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   6,6,0,0,0,0,6750,6752,6742,0,6754,6741,6740,2
.WORD 0,27,21000,63104
+
        .WORD   0,27,21000,63104
  
 
; Таблица описания адресов п/п исполнения управляющих и Esc-последовательностей
 
; Таблица описания адресов п/п исполнения управляющих и Esc-последовательностей
112462$:.WORD 16,113220$ ; Ctrl-G
+
112462$:.WORD   16,113220$     ; Ctrl-G
.WORD 20,114226$ ; Ctrl-H
+
        .WORD   20,114226$     ; Ctrl-H
.WORD 24,114216$ ; Ctrl-J
+
        .WORD   24,114216$     ; Ctrl-J
.WORD 26,114772$ ; Ctrl-K
+
        .WORD   26,114772$     ; Ctrl-K
.WORD 30,113236$ ; Ctrl-L
+
        .WORD   30,113236$     ; Ctrl-L
.WORD 32,114336$ ; Ctrl-M
+
        .WORD   32,114336$     ; Ctrl-M
.WORD 34,105260$ ; Ctrl-N
+
        .WORD   34,105260$     ; Ctrl-N
.WORD 36,105306$ ; Ctrl-O
+
        .WORD   36,105306$     ; Ctrl-O
.WORD 44,114636$ ; Ctrl-R
+
        .WORD   44,114636$     ; Ctrl-R
.WORD 46,114514$ ; Ctrl-S
+
        .WORD   46,114514$     ; Ctrl-S
.WORD 50,114410$ ; Ctrl-T
+
        .WORD   50,114410$     ; Ctrl-T
.WORD 52,114310$ ; Ctrl-U
+
        .WORD   52,114310$     ; Ctrl-U
.WORD 54,114620$ ; Ctrl-V
+
        .WORD   54,114620$     ; Ctrl-V
.WORD 56,113670$ ; Ctrl-W
+
        .WORD   56,113670$     ; Ctrl-W
.WORD 62,114254$ ; Ctrl-Y
+
        .WORD   62,114254$     ; Ctrl-Y
.WORD 64,114226$ ; Ctrl-Z
+
        .WORD   64,114226$     ; Ctrl-Z
.WORD 66,113532$ ; Ctrl-[
+
        .WORD   66,113532$     ; Ctrl-[
.WORD 70,114106$ ; Ctrl-\
+
        .WORD   70,114106$     ; Ctrl-\
.WORD 72,114216$ ; Ctrl-]
+
        .WORD   72,114216$     ; Ctrl-]
.WORD 76,114772$ ; Ctrl-_
+
        .WORD   76,114772$     ; Ctrl-_
.WORD 112,113602$ ; Esc %
+
        .WORD   112,113602$     ; Esc %
.WORD 172,113750$ ; Esc =
+
        .WORD   172,113750$     ; Esc =
.WORD 174,113766$ ; Esc >
+
        .WORD   174,113766$     ; Esc >
.WORD 176,114004$ ; Esc ?
+
        .WORD   176,114004$     ; Esc ?
.WORD 202,114106$ ; Esc A
+
        .WORD   202,114106$     ; Esc A
.WORD 204,114216$ ; Esc B
+
        .WORD   204,114216$     ; Esc B
.WORD 206,114254$ ; Esc C
+
        .WORD   206,114254$     ; Esc C
.WORD 210,114226$ ; Esc D
+
        .WORD   210,114226$     ; Esc D
.WORD 212,113712$ ; Esc E
+
        .WORD   212,113712$     ; Esc E
.WORD 220,114660$ ; Esc H
+
        .WORD   220,114660$     ; Esc H
.WORD 222,114106$ ; Esc I
+
        .WORD   222,114106$     ; Esc I
.WORD 224,114714$ ; Esc J
+
        .WORD   224,114714$     ; Esc J
.WORD 226,114772$ ; Esc K
+
        .WORD   226,114772$     ; Esc K
.WORD 240,115010$ ; Esc P
+
        .WORD   240,115010$     ; Esc P
.WORD 262,115626$ ; Esc Y
+
        .WORD   262,115626$     ; Esc Y
.WORD 264,115776$ ; Esc Z
+
        .WORD   264,115776$     ; Esc Z
.WORD 266,114006$ ; Esc [
+
        .WORD   266,114006$     ; Esc [
.WORD 400,114106$ ; Esc 200
+
        .WORD   400,114106$     ; Esc 200
.WORD 402,114216$ ; Esc 201
+
        .WORD   402,114216$     ; Esc 201
.WORD 404,114226$ ; Esc 202
+
        .WORD   404,114226$     ; Esc 202
.WORD 406,114254$ ; Esc 203
+
        .WORD   406,114254$     ; Esc 203
.WORD 410,114316$ ; Esc 204
+
        .WORD   410,114316$     ; Esc 204
.WORD 412,114324$ ; Esc 205
+
        .WORD   412,114324$     ; Esc 205
.WORD 414,114336$ ; Esc 206
+
        .WORD   414,114336$     ; Esc 206
.WORD 416,114356$ ; Esc 207
+
        .WORD   416,114356$     ; Esc 207
.WORD 420,114404$ ; Esc 210
+
        .WORD   420,114404$     ; Esc 210
.WORD 422,114406$ ; Esc 211
+
        .WORD   422,114406$     ; Esc 211
.WORD 424,114410$ ; Esc 212
+
        .WORD   424,114410$     ; Esc 212
.WORD 426,114514$ ; Esc 213
+
        .WORD   426,114514$     ; Esc 213
.WORD 430,114620$ ; Esc 214
+
        .WORD   430,114620$     ; Esc 214
.WORD 432,114636$ ; Esc 215
+
        .WORD   432,114636$     ; Esc 215
.WORD 434,114654$ ; Esc 216
+
        .WORD   434,114654$     ; Esc 216
.WORD 436,114656$ ; Esc 217
+
        .WORD   436,114656$     ; Esc 217
.WORD 440,114260$ ; Esc 220
+
        .WORD   440,114260$     ; Esc 220
.WORD 442,114266$ ; Esc 221
+
        .WORD   442,114266$     ; Esc 221
.WORD 444,114274$ ; Esc 222
+
        .WORD   444,114274$     ; Esc 222
.WORD 446,114302$ ; Esc 223
+
        .WORD   446,114302$     ; Esc 223
.WORD 450,114660$ ; Esc 224
+
        .WORD   450,114660$     ; Esc 224
.WORD 452,113236$ ; Esc 225
+
        .WORD   452,113236$     ; Esc 225
.WORD 454,114714$ ; Esc 226
+
        .WORD   454,114714$     ; Esc 226
.WORD 456,114772$ ; Esc 227
+
        .WORD   456,114772$     ; Esc 227
.WORD 460,114310$ ; Esc 230
+
        .WORD   460,114310$     ; Esc 230
.WORD 462,115626$ ; Esc 231
+
        .WORD   462,115626$     ; Esc 231
.WORD 464,116014$ ; Esc 232
+
        .WORD   464,116014$     ; Esc 232
.WORD 466,116016$ ; Esc 233
+
        .WORD   466,116016$     ; Esc 233
.WORD 470,116020$ ; Esc 234
+
        .WORD   470,116020$     ; Esc 234
.WORD 472,0 ; Esc 235
+
        .WORD   472,0           ; Esc 235
.WORD 474,0 ; Esc 236
+
        .WORD   474,0           ; Esc 236
.WORD 476,0 ; Esc 237
+
        .WORD   476,0           ; Esc 237
.WORD 500,116022$ ; Esc Граф-@
+
        .WORD   500,116022$     ; Esc Граф-@
.WORD 502,116066$ ; Esc Граф-A
+
        .WORD   502,116066$     ; Esc Граф-A
.WORD 504,116144$ ; Esc Граф-B
+
        .WORD   504,116144$     ; Esc Граф-B
.WORD 506,116234$ ; Esc Граф-C
+
        .WORD   506,116234$     ; Esc Граф-C
.WORD 510,116274$ ; Esc Граф-D
+
        .WORD   510,116274$     ; Esc Граф-D
.WORD 512,116374$ ; Esc Граф-E
+
        .WORD   512,116374$     ; Esc Граф-E
.WORD 514,116462$ ; Esc Граф-F
+
        .WORD   514,116462$     ; Esc Граф-F
.WORD 516,116212$ ; Esc Граф-G
+
        .WORD   516,116212$     ; Esc Граф-G
.WORD 520,116542$ ; Esc Граф-H
+
        .WORD   520,116542$     ; Esc Граф-H
.WORD 522,116544$ ; Esc Граф-I
+
        .WORD   522,116544$     ; Esc Граф-I
.WORD 524,116546$ ; Esc Граф-J
+
        .WORD   524,116546$     ; Esc Граф-J
.WORD 526,116550$ ; Esc Граф-K
+
        .WORD   526,116550$     ; Esc Граф-K
.WORD 556,116552$ ; Esc Граф-W
+
        .WORD   556,116552$     ; Esc Граф-W
.WORD 560,116600$ ; Esc Граф-X
+
        .WORD   560,116600$     ; Esc Граф-X
.WORD 570,116624$ ; Esc Граф-\
+
        .WORD   570,116624$     ; Esc Граф-\
.WORD 572,116632$ ; Esc Граф-]
+
        .WORD   572,116632$     ; Esc Граф-]
.WORD 574,116742$ ; Esc Граф-^
+
        .WORD   574,116742$     ; Esc Граф-^
.WORD 576,116750$ ; Esc Граф-_
+
        .WORD   576,116750$     ; Esc Граф-_
.WORD 0
+
        .WORD   0
  
 
; ПОДПРОГРАММЫ ОБРАБОТКИ УПРАВЛЯЮЩИХ И ESC-ПОСЛЕДОВАТЕЛЬНОСТЕЙ
 
; ПОДПРОГРАММЫ ОБРАБОТКИ УПРАВЛЯЮЩИХ И ESC-ПОСЛЕДОВАТЕЛЬНОСТЕЙ
 
; П/п обработки Ctrl-G
 
; П/п обработки Ctrl-G
113220$:BIS #600,@#177716 ; Включить звуковой сигнал (частота 1000 Гц)
+
113220$:BIS     #600,@#177716   ; Включить звуковой сигнал (частота 500 Гц)
MOV #20,@#7046 ; Установить время (0.32 сек)
+
        MOV     #20,@#7046     ; Установить время (0.32 сек)
RETURN
+
        RETURN
 
; П/п обработки Ctrl-L, Esc 225
 
; П/п обработки Ctrl-L, Esc 225
113236$:MOV @50(R5),-(SP) ; Сохранение содержимого рег. управления цветом
+
113236$:MOV     @50(R5),-(SP)   ; Сохранение содержимого рег. управления цветом
MOV @52(R5),-(SP)
+
        MOV     @52(R5),-(SP)
MOV 44(R5),@50(R5) ; Засветка всего экрана цветом фона
+
        MOV     44(R5),@50(R5) ; Засветка всего экрана цветом фона
MOV 44(R5),@52(R5)
+
        MOV     44(R5),@52(R5)
CALL 113362$ ; Очистка экрана (заполнение цветом фона)
+
        CALL   113362$         ; Очистка экрана (заполнение цветом фона)
CALL 110572$ ; Установка ТВ на начало видеопамяти
+
        CALL   110572$         ; Установка ТВ на начало видеопамяти
MOV 30(R5),R4 ; Установка курсора в начало экрана
+
        MOV     30(R5),R4       ; Установка курсора в начало экрана
MOV R4,32(R5)
+
        MOV     R4,32(R5)
MOV @R4,@R5
+
        MOV     @R4,@R5
ADD 22(R5),@R5
+
        ADD     22(R5),@R5
MOV 4(R5),16(R5)
+
        MOV     4(R5),16(R5)
MOV 12(R5),20(R5)
+
        MOV     12(R5),20(R5)
MOV (SP)+,@52(R5) ; Восстановление регистров управления цветом
+
        MOV     (SP)+,@52(R5)   ; Восстановление регистров управления цветом
MOV (SP)+,@50(R5)
+
        MOV     (SP)+,@50(R5)
MOV 72(R5),@#23164
+
        MOV     72(R5),@#23164
RETURN
+
        RETURN
 
; П/п-мы очистки заданной области экрана (заполнение цветом фона)
 
; П/п-мы очистки заданной области экрана (заполнение цветом фона)
 
; Параметры (для точки входа 113376$):
 
; Параметры (для точки входа 113376$):
Line 457: Line 458:
 
;  R2 - длина в байтах;
 
;  R2 - длина в байтах;
 
;  R3 - число видеострок;
 
;  R3 - число видеострок;
113344$:MOV @32(R5),R1
+
113344$:MOV     @32(R5),R1
ADD 22(R5),R1
+
        ADD     22(R5),R1
113354$:MOV #13,R3
+
113354$:MOV     #13,R3
BR 113372$
+
        BR     113372$
113362$:MOV 2(R5),R1
+
113362$:MOV     2(R5),R1
MOV 14(R5),R3
+
        MOV     14(R5),R3
113372$:MOV 4(R5),R2
+
113372$:MOV     4(R5),R2
113376$:MOV 44(R5),@#177020 ; Загрузка в регистры кода фона цвета фона
+
113376$:MOV     44(R5),@#177020 ; Загрузка в регистры кода фона цвета фона
MOV 44(R5),@#177022
+
        MOV     44(R5),@#177022
MOV #177010,R4
+
        MOV     #177010,R4
MOV R1,@R4 ; Загрузить в регистр адреса планов нач. адрес
+
        MOV     R1,@R4         ; Загрузить в регистр адреса планов нач. адрес
MOV #177024,R1
+
        MOV     #177024,R1
CLR R0
+
        CLR     R0
CMP R2,10(R5) ; Длина очищаемой строки равна истинной длине ?
+
        CMP     R2,10(R5)       ; Длина очищаемой строки равна истинной длине ?
BEQ 113500$ ; Да
+
        BEQ     113500$         ; Да
MOV R2,-(SP) ; Сохранить длину строки
+
        MOV     R2,-(SP)       ; Сохранить длину строки
BR 113450$
+
        BR     113450$
113440$:MOV @SP,R2 ; R2 = длина очищаемой строки
+
113440$:MOV     @SP,R2         ; R2 = длина очищаемой строки
SUB R2,@R4 ; Вычесть длину строки из адреса планов
+
        SUB     R2,@R4         ; Вычесть длину строки из адреса планов
ADD 10(R5),@R4 ; Прибавить истинную длину
+
        ADD     10(R5),@R4     ; Прибавить истинную длину
113450$:MOV R0,@R1 ; Очистить байт строки
+
113450$:MOV     R0,@R1         ; Очистить байт строки
INC @R4 ; Переход к следующему адресу
+
        INC     @R4             ; Переход к следующему адресу
SOB R2,113450$ ; Цикл по длине очищаемой части строки
+
        SOB     R2,113450$     ; Цикл по длине очищаемой части строки
SOB R3,113440$ ; Цикл по числу видеострок
+
        SOB     R3,113440$     ; Цикл по числу видеострок
TST (SP)+
+
        TST     (SP)+
113462$:MOV 40(R5),@#177020 ; Загр. в регистры кода фона цвета знакоместа
+
113462$:MOV     40(R5),@#177020 ; Загр. в регистры кода фона цвета знакоместа
MOV 40(R5),@#177022
+
        MOV     40(R5),@#177022
RETURN
+
        RETURN
113500$:MUL R2,R3 ; R3 = длина строки * число видеострок
+
113500$:MUL     R2,R3           ; R3 = длина строки * число видеострок
113502$:MOV R0,@R1 ; Цикл очистки
+
113502$:MOV     R0,@R1         ; Цикл очистки
INC @R4
+
        INC     @R4
SOB R3,113502$
+
        SOB     R3,113502$
BR 113462$
+
        BR     113462$
 
; Значения для загрузки в регистры кода фона (177020 и 177022)
 
; Значения для загрузки в регистры кода фона (177020 и 177022)
113512$:.WORD 0,10421,21042,31463,42104,52525,63146,73567
+
113512$:.WORD   0,10421,21042,31463,42104,52525,63146,73567
 
; П/п обработки Ctrl-[ (Esc)
 
; П/п обработки Ctrl-[ (Esc)
113532$:MOV SP,@#23152
+
113532$:MOV     SP,@#23152
MOV #2,@#23174 ; Активировать проверку на управляющие символы
+
        MOV     #2,@#23174     ; Активировать проверку на управляющие символы
113544$:MOV #1000,SP
+
113544$:MOV     #1000,SP
CALL 110762$ ; Прочесть символ
+
        CALL   110762$         ; Прочесть символ
ASL R0 ; Вызов п/п обработки Esc-последовательности
+
        ASL     R0             ; Вызов п/п обработки Esc-последовательности
CALL @13142(R0)
+
        CALL   @13142(R0)
CLR @#23174
+
        CLR     @#23174
MOV @#23152,SP
+
        MOV     @#23152,SP
RETURN
+
        RETURN
 
; Точка входа при исполнении Esc %!3 в графическом режиме
 
; Точка входа при исполнении Esc %!3 в графическом режиме
113574$:MOV 2(SP),R0
+
113574$:MOV     2(SP),R0
BR 113620$
+
        BR     113620$
 
; П/п обработки Esc %
 
; П/п обработки Esc %
113602$:CALL 110762$ ; Прочесть символ
+
113602$:CALL   110762$         ; Прочесть символ
CMPB R0,#41 ; Это "!" ?
+
        CMPB   R0,#41         ; Это "!" ?
BNE 110632$ ; Нет
+
        BNE     113632$         ; Нет
CALL 110762$
+
        CALL   110762$
113620$:BIC #177774,R0
+
113620$:BIC     #177774,R0
ASL R0 ; Вызов соответствующей п/п
+
        ASL     R0             ; Вызов соответствующей п/п
CALL @113634$(R0)
+
        CALL   @113634$(R0)
 
113632$:RETURN
 
113632$:RETURN
 
; Адреса п/п, вызывающиеся при обработке Esc %!
 
; Адреса п/п, вызывающиеся при обработке Esc %!
113634$:.WORD 113644$,113670$,113670$,113670$
+
113634$:.WORD   113644$,113670$,113670$,113670$
 
; П/п обработки Esc %!0 (переход в графический режим)
 
; П/п обработки Esc %!0 (переход в графический режим)
113644$:CALL 111632$ ; Выключение курсора
+
113644$:CALL   111632$         ; Выключение курсора
CLR @#23174$ ; Аннулировать проверку на управляющие символы
+
        CLR     @#23174         ; Аннулировать проверку на управляющие символы
CALL @#135436$ ; Вызов п/п управления графикой
+
        CALL   @#135436$       ; Вызов п/п управления графикой
MOV 72(R5),@#23164
+
        MOV     72(R5),@#23164
RETURN
+
        RETURN
 
; П/п обработки Ctrl-W, Esc %! (1-3)
 
; П/п обработки Ctrl-W, Esc %! (1-3)
113670$:JSR R5,105430$ ; Перекодировать клавиши под VT-52
+
113670$:JSR     R5,105430$     ; Перекодировать клавиши под VT-52
.WORD 106634$
+
        .WORD   106634$
MOV #114226$,@#13162; При Ctrl-H выполнять шаг назад
+
        MOV     #114226$,@#13162; При Ctrl-H выполнять шаг назад
CLR @#7154 ; Установить пункт VT-52 в меню УСТ
+
        CLR     @#7154         ; Установить пункт VT-52 в меню УСТ
RETURN
+
        RETURN
 
; П/п обработки Esc E
 
; П/п обработки Esc E
113712$:JSR R5,105430$ ; Перекодировать клавиши под 15ИЭ-00-013
+
113712$:JSR     R5,105430$     ; Перекодировать клавиши под 15ИЭ-00-013
.WORD 107002$
+
        .WORD   107002$
MOV #114660$,@#13162; При Ctrl-H выполнять операцию Home
+
        MOV     #114660$,@#13162; При Ctrl-H выполнять операцию Home
MOV #1,@#7154 ; Установить пункт 15ИЭ-00-013 в меню УСТ
+
        MOV     #1,@#7154       ; Установить пункт 15ИЭ-00-013 в меню УСТ
RETURN
+
        RETURN
 
; П/п загрузки регистров кода цвета и фона
 
; П/п загрузки регистров кода цвета и фона
113736$:MOV R5,-(SP) ; Сохранить адрес текущей ТВ
+
113736$:MOV     R5,-(SP)       ; Сохранить адрес текущей ТВ
CALL 110204$ ; Загрузить регистры
+
        CALL   110204$         ; Загрузить регистры
MOV (SP)+,R5 ; Восстановить адрес ТВ
+
        MOV     (SP)+,R5       ; Восстановить адрес ТВ
RETURN
+
        RETURN
 
; П/п обработки Esc =
 
; П/п обработки Esc =
113750$:JSR R5,105346$ ; Установить режим ДКЛ
+
113750$:JSR     R5,105346$     ; Установить режим ДКЛ
.WORD 107120$,11014
+
        .WORD   107120$,11014
EMT 52 ; Вывести надпись "ДКЛ"
+
        EMT     52             ; Вывести надпись "ДКЛ"
.WORD 107576$
+
        .WORD   107576$
RETURN
+
        RETURN
 
; П/п обработки Esc >
 
; П/п обработки Esc >
113766$:JSR R5,105400$ ; Сбросить режим ДКЛ
+
113766$:JSR     R5,105400$     ; Сбросить режим ДКЛ
.WORD 107120$,11014
+
        .WORD   107120$,11014
EMT 52 ; Стереть надпись "ДКЛ"
+
        EMT     52             ; Стереть надпись "ДКЛ"
.WORD 107567$
+
        .WORD   107567$
RETURN
+
        RETURN
 
114004$:RETURN
 
114004$:RETURN
 
; П/п обработки Esc [
 
; П/п обработки Esc [
114006$:CALL 110762$ ; Чтение символа
+
114006$:CALL   110762$         ; Чтение символа
CMP R0,#62 ; Это "2" ?
+
        CMP     R0,#62         ; Это "2" ?
BEQ 114050$ ; Да
+
        BEQ     114050$         ; Да
CMP R0,#77 ; Это "?" ?
+
        CMP     R0,#77         ; Это "?" ?
BEQ 114046$ ; Да
+
        BEQ     114046$         ; Да
BR 114034$
+
        BR     114034$
114030$:CALL 110762$
+
114030$:CALL   110762$
114034$:CMPB R0,#162 ; Это "r" ?
+
114034$:CMPB   R0,#162         ; Это "r" ?
BNE 114030$ ; Нет
+
        BNE     114030$         ; Нет
CALL 113236$ ; Очистка экрана
+
        CALL   113236$         ; Очистка экрана
 
114046$:RETURN
 
114046$:RETURN
114050$:CALL 110762$
+
114050$:CALL   110762$
CMP R0,#150 ; Это "h" ?
+
        CMP     R0,#150         ; Это "h" ?
BNE 114072$ ; Нет
+
        BNE     114072$         ; Нет
MOV #2,@#7232 ; Запрет передачи одиночных ASCII-кодов клав.
+
        MOV     #2,@#7232       ; Запрет передачи одиночных ASCII-кодов клав.
BR 114104$
+
        BR     114104$
114072$:CMP R0,#154 ; Это "l" ?
+
114072$:CMP     R0,#154         ; Это "l" ?
BNE 114104$ ; Нет
+
        BNE     114104$         ; Нет
CLR @#7232 ; Разрешение передачи одиночных ASCII-кодов
+
        CLR     @#7232         ; Разрешение передачи одиночных ASCII-кодов
 
114104$:RETURN
 
114104$:RETURN
 
; П/п обработки Ctrl-\, Esc A, Esc I, Esc 200
 
; П/п обработки Ctrl-\, Esc A, Esc I, Esc 200
114106$:SUB @32(R5),@R5 ; Вычесть адрес начала видеостроки
+
114106$:SUB     @32(R5),@R5     ; Вычесть адрес начала видеостроки
SUB #54,32(R5) ; Перейти к предыд. символьной строке
+
        SUB     #54,32(R5)     ; Перейти к предыд. символьной строке
CMP 32(R5),24(R5) ; Был переход за верх экрана ?
+
        CMP     32(R5),24(R5)   ; Был переход за верх экрана ?
BHIS 114144$ ; Нет
+
        BHIS   114144$         ; Нет
MOV 26(R5),32(R5) ; Переход на низ экрана
+
        MOV     26(R5),32(R5)   ; Переход на низ экрана
SUB #54,32(R5)
+
        SUB     #54,32(R5)
114144$:ADD @32(R5),@R5 ; Прибавить к положению курсора тек. строку
+
114144$:ADD     @32(R5),@R5     ; Прибавить к положению курсора тек. строку
CMP 20(R5),12(R5) ; Это была верхняя строка
+
        CMP     20(R5),12(R5)   ; Это была верхняя строка
BNE 114204$ ; Нет
+
        BNE     114204$         ; Нет
ADD 74(R5),PC ; Рулон присутствует ?
+
        ADD     74(R5),PC       ; Рулон присутствует ?
BR 114212$ ; Нет
+
        BR     114212$         ; Нет
MOV 32(R5),30(R5)
+
        MOV     32(R5),30(R5)
MOV #-13,-(SP) ; Скроллинг 11(10) видеострок вниз
+
        MOV     #-13,-(SP)     ; Скроллинг 11(10) видеострок вниз
JMP 111544$
+
        JMP     111544$
114204$:INC 20(R5) ; Количество оставшихся строк ++
+
114204$:INC     20(R5)         ; Количество оставшихся строк ++
RETURN
+
        RETURN
114212$:JMP 114324$ ; Позиционирование на низ текущей колонки
+
114212$:JMP     114324$         ; Позиционирование на низ текущей колонки
 
; П/п обработки Ctrl-J, Ctrl-], Esc B, Esc 201
 
; П/п обработки Ctrl-J, Ctrl-], Esc B, Esc 201
114216$:SUB @32(R5),@R5 ; Вычесть адрес начала видеостроки
+
114216$:SUB     @32(R5),@R5     ; Вычесть адрес начала видеостроки
JMP 111444$ ; Перемещение вниз
+
        JMP     111444$         ; Перемещение вниз
 
; П/п обработки Ctrl-H (в системе команд VT-52), Ctrl-Z, Esc D, Esc 202
 
; П/п обработки Ctrl-H (в системе команд VT-52), Ctrl-Z, Esc D, Esc 202
114226$:CMP 16(R5),4(R5) ; Курсор в начале строки ?
+
114226$:CMP     16(R5),4(R5)   ; Курсор в начале строки ?
BEQ 114246$ ; Да
+
        BEQ     114246$         ; Да
DEC @R5 ; Уменьшить позицию в строке
+
        DEC     @R5             ; Уменьшить позицию в строке
INC 16(R5) ; Увеличить количество оставшихся позиций
+
        INC     16(R5)         ; Увеличить количество оставшихся позиций
RETURN
+
        RETURN
114246$:CALL 114356$ ; Позиционирование в конец строки
+
114246$:CALL   114356$         ; Позиционирование в конец строки
BR 114106$ ; На одну строку вверх
+
        BR     114106$         ; На одну строку вверх
 
; П/п обработки Ctrl-Y, Esc C, Esc 203
 
; П/п обработки Ctrl-Y, Esc C, Esc 203
114254$:JMP 111422$ ; Перемещение курсора на одну позицию вправо
+
114254$:JMP     111422$         ; Перемещение курсора на одну позицию вправо
 
; П/п обработки Esc 220
 
; П/п обработки Esc 220
114260$:CALL 114254$ ; Вправо
+
114260$:CALL   114254$         ; Вправо
BR 114106$ ; Вверх
+
        BR     114106$         ; Вверх
 
; П/п обработки Esc 221
 
; П/п обработки Esc 221
114266$:CALL 114226$ ; Влево
+
114266$:CALL   114226$         ; Влево
BR 114216$ ; Вниз
+
        BR     114216$         ; Вниз
 
; П/п обработки Esc 222
 
; П/п обработки Esc 222
114274$:CALL 114106$ ; Вверх
+
114274$:CALL   114106$         ; Вверх
BR 114226$ ; Влево
+
        BR     114226$         ; Влево
 
; П/п обработки Esc 223
 
; П/п обработки Esc 223
114302$:CALL 114216$ ; Вниз
+
114302$:CALL   114216$         ; Вниз
BR 114254$ ; Вправо
+
        BR     114254$         ; Вправо
 
; П/п обработки Ctrl-U, Esc 230
 
; П/п обработки Ctrl-U, Esc 230
114310$:CALL 114336$ ; В начало строки
+
114310$:CALL   114336$         ; В начало строки
BR 114216$ ; Вниз
+
        BR     114216$         ; Вниз
 
; П/п обработки Esc 204
 
; П/п обработки Esc 204
114316$:CLR R0 ; Номер начальной строки
+
114316$:CLR     R0             ; Номер начальной строки
JMP 115720$ ; Позиционирование
+
        JMP     115720$         ; Позиционирование
 
; П/п обработки Esc 205
 
; П/п обработки Esc 205
114324$:MOV 12(R5),R0 ; R0 = номер последней строки
+
114324$:MOV     12(R5),R0       ; R0 = номер последней строки
DEC R0
+
        DEC     R0
JMP 115720$ ; Позиционирование
+
        JMP     115720$         ; Позиционирование
 
; П/п обработки Ctrl-M, Esc 206
 
; П/п обработки Ctrl-M, Esc 206
114336$:MOV 22(R5),@R5 ; Позиционирование в начало строки
+
114336$:MOV     22(R5),@R5     ; Позиционирование в начало строки
ADD @32(R5),@R5
+
        ADD     @32(R5),@R5
MOV 4(R5),16(R5) ; Количество оставшихся позиций = длина строки
+
        MOV     4(R5),16(R5)   ; Количество оставшихся позиций = длина строки
RETURN
+
        RETURN
 
; П/п обработки Esc 207
 
; П/п обработки Esc 207
114356$:MOV 4(R5),@R5 ; Позиционирование в конец строки
+
114356$:MOV     4(R5),@R5       ; Позиционирование в конец строки
ADD 22(R5),@R5
+
        ADD     22(R5),@R5
DEC @R5
+
        DEC     @R5
ADD @32(R5),@R5
+
        ADD     @32(R5),@R5
MOV #1,16(R5) ; Осталась одна позиция
+
        MOV     #1,16(R5)       ; Осталась одна позиция
RETURN
+
        RETURN
 
114404$:RETURN
 
114404$:RETURN
 
114406$:RETURN
 
114406$:RETURN
 
; П/п обработки Ctrl-T, Esc 212
 
; П/п обработки Ctrl-T, Esc 212
114410$:MOV 16(R5),R0 ; R0 = количество оставшихся позиций
+
114410$:MOV     16(R5),R0       ; R0 = количество оставшихся позиций
DEC R0
+
        DEC     R0
BEQ 114474$ ; Осталась одна позиция
+
        BEQ     114474$         ; Осталась одна позиция
MOV @R5,R1
+
        MOV     @R5,R1
INC R1 ; R1 = текущий видеоадрес + 1
+
        INC     R1             ; R1 = текущий видеоадрес + 1
MOV #13,-(SP) ; Число видеострок
+
        MOV     #13,-(SP)       ; Число видеострок
MOV #177010,R3
+
        MOV     #177010,R3
MOV #177024,R4
+
        MOV     #177024,R4
114440$:MOV R0,R2 ; R2 = число перемещаемых символов
+
114440$:MOV     R0,R2           ; R2 = число перемещаемых символов
MOV R1,@R3
+
        MOV     R1,@R3
BR 114452$
+
        BR     114452$
114446$:ADD #2,@R3 ; Цикл перемещения символов
+
114446$:ADD     #2,@R3         ; Цикл перемещения символов
114452$:TST @R4
+
114452$:TST     @R4
DEC @R3
+
        DEC     @R3
CLR @R4
+
        CLR     @R4
SOB R2,114446$
+
        SOB     R2,114446$
ADD 10(R5),R1 ; Переход к следующей видеостроке
+
        ADD     10(R5),R1       ; Переход к следующей видеостроке
DEC @SP
+
        DEC     @SP
BNE 114440$
+
        BNE     114440$
TST (SP)+
+
        TST     (SP)+
114474$:MOV @R5,R1
+
114474$:MOV     @R5,R1
ADD R0,R1 ; R1 = адрес конечного символа
+
        ADD     R0,R1           ; R1 = адрес конечного символа
MOV #1,R2 ; R2 = 1 (длина очищаемой части строки)
+
        MOV     #1,R2           ; R2 = 1 (длина очищаемой части строки)
MOV #13,R3 ; Число очищаемых видеострок
+
        MOV     #13,R3         ; Число очищаемых видеострок
JMP 113376$ ; Очистка
+
        JMP     113376$         ; Очистка
 
; П/п обработки Ctrl-S, Esc 213
 
; П/п обработки Ctrl-S, Esc 213
114514$:MOV 16(R5),R0 ; R0 = количество оставшихся позиций
+
114514$:MOV     16(R5),R0       ; R0 = количество оставшихся позиций
DEC R0
+
        DEC     R0
BEQ 114602$ ; Осталась одна позиция
+
        BEQ     114602$         ; Осталась одна позиция
MOV @R5,R1
+
        MOV     @R5,R1
ADD R0,R1 ; R1 = адрес конца строки
+
        ADD     R0,R1           ; R1 = адрес конца строки
DEC R1
+
        DEC     R1
MOV #13,-(SP) ; Число видеострок
+
        MOV     #13,-(SP)       ; Число видеострок
MOV #177010,R3
+
        MOV     #177010,R3
MOV #177024,R4
+
        MOV     #177024,R4
114546$:MOV R0,R2 ; R2 = число перемещаемых символов
+
114546$:MOV     R0,R2           ; R2 = число перемещаемых символов
MOV R1,@R3
+
        MOV     R1,@R3
BR 114560$
+
        BR     114560$
114554$:SUB #2,@R3 ; Цикл перемещения символов
+
114554$:SUB     #2,@R3         ; Цикл перемещения символов
114560$:TST @R4
+
114560$:TST     @R4
INC @R3
+
        INC     @R3
CLR @R4
+
        CLR     @R4
SOB R2,114554$
+
        SOB     R2,114554$
ADD 10(R5),R1 ; Переход к следующей видеостроке
+
        ADD     10(R5),R1       ; Переход к следующей видеостроке
DEC @SP
+
        DEC     @SP
BNE 114546$
+
        BNE     114546$
TST (SP)+
+
        TST     (SP)+
114602$:MOV @R5,R1 ; R1 = текущий видеоадрес
+
114602$:MOV     @R5,R1         ; R1 = текущий видеоадрес
MOV #1,R2 ; R2 = длина очищаемой части строки
+
        MOV     #1,R2           ; R2 = длина очищаемой части строки
MOV #13,R3 ; R3 = число видеострок
+
        MOV     #13,R3         ; R3 = число видеострок
JMP 113376$ ; Очистка
+
        JMP     113376$         ; Очистка
 
; П/п обработки Ctrl-V, Esc 214
 
; П/п обработки Ctrl-V, Esc 214
114620$:DEC 20(R5) ; Уменьшить количество оставшихся строк
+
114620$:DEC     20(R5)         ; Уменьшить количество оставшихся строк
SUB #13,@#23170 ; Скроллинг вниз
+
        SUB     #13,@#23170     ; Скроллинг вниз
JMP 114106$ ; Курсор вверх
+
        JMP     114106$         ; Курсор вверх
 
; П/п обработки Ctrl-R, Esc 215
 
; П/п обработки Ctrl-R, Esc 215
114636$:INC 20(R5) ; Увеличить количество оставшихся строк
+
114636$:INC     20(R5)         ; Увеличить количество оставшихся строк
ADD #13,@#23170 ; Скроллинг вверх
+
        ADD     #13,@#23170     ; Скроллинг вверх
JMP 114216$ ; Курсор вниз
+
        JMP     114216$         ; Курсор вниз
 
114654$:RETURN
 
114654$:RETURN
 
114656$:RETURN
 
114656$:RETURN
 
; П/п обработки Ctrl-H (в системе команд 15ИЭ-00-013), Esc H, Esc 224
 
; П/п обработки Ctrl-H (в системе команд 15ИЭ-00-013), Esc H, Esc 224
114660$:MOV 30(R5),32(R5) ; Текущий адрес списка ВС - верх экрана
+
114660$:MOV     30(R5),32(R5)   ; Текущий адрес списка ВС - верх экрана
MOV 22(R5),@R5 ; Позиционирование курсора в верх. угол экрана
+
        MOV     22(R5),@R5     ; Позиционирование курсора в верх. угол экрана
ADD @32(R5),@R5
+
        ADD     @32(R5),@R5
MOV 4(R5),16(R5) ; Число ост. позиций = длина строки
+
        MOV     4(R5),16(R5)   ; Число ост. позиций = длина строки
MOV 12(R5),20(R5) ; Число ост. строк = число строк на экране
+
        MOV     12(R5),20(R5)   ; Число ост. строк = число строк на экране
RETURN
+
        RETURN
 
; П/п обработки Esc J, Esc 226
 
; П/п обработки Esc J, Esc 226
114714$:CALL 114772$ ; Очистка конца строки
+
114714$:CALL   114772$         ; Очистка конца строки
MOV 20(R5),-(SP) ; Количество оставшихся строк
+
        MOV     20(R5),-(SP)   ; Количество оставшихся строк
MOV 32(R5),R1 ; R1 = текущий адрес списка ВС
+
        MOV     32(R5),R1       ; R1 = текущий адрес списка ВС
BR 114762$
+
        BR     114762$
114732$:ADD #54,R1 ; Перейти к следующей строке
+
114732$:ADD     #54,R1         ; Перейти к следующей строке
CMP R1,26(R5) ; Дошли до конца экрана ?
+
        CMP     R1,26(R5)       ; Дошли до конца экрана ?
BNE 114750$ ; Нет
+
        BNE     114750$         ; Нет
MOV 24(R5),R1 ; R1 = начальный адрес списка ВС
+
        MOV     24(R5),R1       ; R1 = начальный адрес списка ВС
114750$:MOV R1,-(SP)
+
114750$:MOV     R1,-(SP)
MOV @R1,R1
+
        MOV     @R1,R1
CALL 113354$ ; Очистка
+
        CALL   113354$         ; Очистка
MOV (SP)+,R1
+
        MOV     (SP)+,R1
114762$:DEC @SP
+
114762$:DEC     @SP
BNE 114732$
+
        BNE     114732$
TST (SP)+
+
        TST     (SP)+
RETURN
+
        RETURN
 
; П/п обработки Ctrl-K, Esc K, Esc 227
 
; П/п обработки Ctrl-K, Esc K, Esc 227
114772$:MOV @R5,R1 ; R1 = текущий видеоадрес
+
114772$:MOV     @R5,R1         ; R1 = текущий видеоадрес
MOV 16(R5),R2 ; R2 = количество оставшихся позиций в строке
+
        MOV     16(R5),R2       ; R2 = количество оставшихся позиций в строке
MOV #13,R3 ; R3 = число видеострок
+
        MOV     #13,R3         ; R3 = число видеострок
JMP 113376$ ; Очистка
+
        JMP     113376$         ; Очистка
 
; П/п обработки Esc P
 
; П/п обработки Esc P
115010$:CLR -(SP)
+
115010$:CLR     -(SP)
115012$:CALL 110762$ ; Чтение символа
+
115012$:CALL   110762$         ; Чтение символа
MOV R0,-(SP) ; Сохранение его в стеке
+
        MOV     R0,-(SP)       ; Сохранение его в стеке
CMPB R0,#73 ; Это ";" ?
+
        CMPB   R0,#73         ; Это ";" ?
BNE 115012$
+
        BNE     115012$
115026$:CALL 110762$
+
115026$:CALL   110762$
MOV R0,-(SP)
+
        MOV     R0,-(SP)
CMPB R0,#73 ; Это ";" ?
+
        CMPB   R0,#73         ; Это ";" ?
BEQ 115424$ ; Да
+
        BEQ     115424$         ; Да
CMPB R0,#174 ; Это "|" ?
+
        CMPB   R0,#174         ; Это "|" ?
BNE 115026$
+
        BNE     115026$
115050$:TST (SP)+ ; Восстановление стека
+
115050$:TST     (SP)+           ; Восстановление стека
BNE 115050$
+
        BNE     115050$
ASR -4(SP) ; Была набрана "1" ?
+
        ASR     -4(SP)         ; Была набрана "1" ?
BCS 115112$ ; Да
+
        BCS     115112$         ; Да
MOV #115342$,R1 ; R1 = список смещ. клавиш К1-К25 в табл. раск.
+
        MOV     #115342$,R1     ; R1 = список смещ. клавиш К1-К25 в табл. раск.
MOV #31,R2 ; R2 = 25(10) число программир. клавиш
+
        MOV     #31,R2         ; R2 = 25(10) число программир. клавиш
115072$:MOV (R1)+,R0 ; Цикл очистки назначений клавиш
+
115072$:MOV     (R1)+,R0       ; Цикл очистки назначений клавиш
MOV #11140,7232(R0)
+
        MOV     #11140,7232(R0)
SOB R2,115072$
+
        SOB     R2,115072$
MOV #11142,@#13140 ; Установка указателя на начало буфера
+
        MOV     #11142,@#13140 ; Установка указателя на начало буфера
115112$:CLR -(SP)
+
115112$:CLR     -(SP)
115114$:CALL 110762$
+
115114$:CALL   110762$
CMPB R0,#33 ; Это Escape ?
+
        CMPB   R0,#33         ; Это Escape ?
BEQ 115302$ ; Да
+
        BEQ     115302$         ; Да
CMPB R0,#57 ; Это "/" ?
+
        CMPB   R0,#57         ; Это "/" ?
BEQ 115154$ ; Да
+
        BEQ     115154$         ; Да
MOV @SP,R1 ; @SP = @SP * 10 + R0
+
        MOV     @SP,R1         ; @SP = @SP * 10 + R0
MUL #10.,R1
+
        MUL     #10.,R1
BIC #177760,R0
+
        BIC     #177760,R0
ADD R0,R1
+
        ADD     R0,R1
MOV R1,@SP
+
        MOV     R1,@SP
BR 115114$
+
        BR     115114$
115154$:MOV (SP)+,R0
+
115154$:MOV     (SP)+,R0
CMP R0,#25. ; Номер клавиши в диапазоне 1 -- 25 ?
+
        CMP     R0,#25.         ; Номер клавиши в диапазоне 1 -- 25 ?
BHI 115112$ ; Нет
+
        BHI     115112$         ; Нет
DEC R0
+
        DEC     R0
ASL R0
+
        ASL     R0
MOV 115342$(R0),R0 ; R0 = смещение клавиши в таблице раскладки
+
        MOV     115342$(R0),R0 ; R0 = смещение клавиши в таблице раскладки
MOV @#13140,7232(R0); Запомнить адрес строки
+
        MOV     @#13140,7232(R0); Запомнить адрес строки
115202$:CALL 110762$
+
115202$:CALL   110762$
CMPB R0,#33 ; Это Escape ?
+
        CMPB   R0,#33         ; Это Escape ?
BEQ 115304$
+
        BEQ     115304$
CMPB R0,#73 ; Это ";" ?
+
        CMPB   R0,#73         ; Это ";" ?
BEQ 115270$
+
        BEQ     115270$
CALL 115322$ ; Преобразование HEX-цифры в двоичный код
+
        CALL   115322$         ; Преобразование HEX-цифры в двоичный код
ASH #4,R0 ; R0 = R0 * 16
+
        ASH     #4,R0           ; R0 = R0 * 16
MOV R0,-(SP)
+
        MOV     R0,-(SP)
CALL 110762$
+
        CALL   110762$
CALL 115322$
+
        CALL   115322$
BIS (SP)+,R0
+
        BIS     (SP)+,R0
MOVB R0,@13140 ; Запомнить символ в строке
+
        MOVB   R0,@13140       ; Запомнить символ в строке
CMP @#13140,#13130 ; Достигнут конец буфера
+
        CMP     @#13140,#13130 ; Достигнут конец буфера
BHI 115202$ ; Да
+
        BHI     115202$         ; Да
INC @#13140 ; Продвинуть указатель на следующую позицию
+
        INC     @#13140         ; Продвинуть указатель на следующую позицию
BR 115202$
+
        BR     115202$
115270$:CLRB @13140 ; Пометить конец строки
+
115270$:CLRB   @13140         ; Пометить конец строки
INC @#13140
+
        INC     @#13140
BR 115112$
+
        BR     115112$
115302$:TST (SP)+
+
115302$:TST     (SP)+
115304$:CLRB @13140
+
115304$:CLRB   @13140
INC @#13140
+
        INC     @#13140
CALL 110762$
+
        CALL   110762$
RETURN
+
        RETURN
 
; П/п преобразования HEX-цифры в двоичное представление
 
; П/п преобразования HEX-цифры в двоичное представление
115322$:CMP R0,#101 ; Цифра в диапазоне "A-F" ?
+
115322$:CMP     R0,#101         ; Цифра в диапазоне "A-F" ?
BLO 115334$ ; Нет
+
        BLO     115334$         ; Нет
ADD #11,R0
+
        ADD     #11,R0
115334$:BIC #177760,R0
+
115334$:BIC     #177760,R0
RETURN
+
        RETURN
 
; Смещения для клавиш К1-К25 в таблице раскладки клавиатуры
 
; Смещения для клавиш К1-К25 в таблице раскладки клавиатуры
115342$:.WORD 10,12,14,20,22,270,272,274,300,302,550,552,554,560,562
+
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
+
        .WORD   1030,1032,1034,1040,1042,1310,1312,1314,1320,1322
115424$:MOV 2(SP),R0 ; R0 = код симв., шрифт кот. перепрограммир.
+
115424$:MOV     2(SP),R0       ; R0 = код симв., шрифт кот. перепрограммир.
115430$:TST (SP)+ ; Восстановление стека
+
115430$:TST     (SP)+           ; Восстановление стека
BNE 115430$
+
        BNE     115430$
MOV R0,R1
+
        MOV     R0,R1
ASL R0
+
        ASL     R0
ADD #14142,R0 ; R0 = указатель на ячейку адреса рисунка симв.
+
        ADD     #14142,R0       ; R0 = указатель на ячейку адреса рисунка симв.
MOV R0,-(SP)
+
        MOV     R0,-(SP)
MUL #11,R1 ; Вычисление местоположения рисунка символа
+
        MUL     #11,R1         ; Вычисление местоположения рисунка символа
ADD #15142,R1 ; R1 = адрес местоположения рисунка символа
+
        ADD     #15142,R1       ; R1 = адрес местоположения рисунка символа
MOV R1,-(SP)
+
        MOV     R1,-(SP)
115460$:CALL 110762$ ; Чтение символа
+
115460$:CALL   110762$         ; Чтение символа
CMP R0,#33 ; Это Escape ?
+
        CMP     R0,#33         ; Это Escape ?
BEQ 115550$ ; Да
+
        BEQ     115550$         ; Да
CMP R0,#100 ; Это "@" ?
+
        CMP     R0,#100         ; Это "@" ?
BNE 115460$ ; Нет
+
        BNE     115460$         ; Нет
115500$:MOV @SP,@2(SP) ; Сохранить адрес рисунка в таблице
+
115500$:MOV     @SP,@2(SP)     ; Сохранить адрес рисунка в таблице
ADD #2,2(SP) ; Переход на следующую позицию в табл. адресов
+
        ADD     #2,2(SP)       ; Переход на следующую позицию в табл. адресов
JSR R5,115554$ ; Программирование первых пяти байт
+
        JSR     R5,115554$     ; Программирование первых пяти байт
.WORD 5
+
        .WORD   5
CALL 110762$
+
        CALL   110762$
JSR R5,115554$ ; Программирование следующих шести байт
+
        JSR     R5,115554$     ; Программирование следующих шести байт
.WORD 6
+
        .WORD   6
CALL 110762$
+
        CALL   110762$
CMP R0,#33 ; Это Escape
+
        CMP     R0,#33         ; Это Escape
BNE 115500$
+
        BNE     115500$
CALL 110762$
+
        CALL   110762$
115550$:CMP (SP)+,(SP)+
+
115550$:CMP     (SP)+,(SP)+
RETURN
+
        RETURN
 
; П/п программирования заданного количества байт в рисунке символа
 
; П/п программирования заданного количества байт в рисунке символа
115554$:MOV #10,-(SP) ; Длина байта
+
115554$:MOV     #10,-(SP)       ; Длина байта
115560$:MOV R5,-(SP)
+
115560$:MOV     R5,-(SP)
CALL 110762$
+
        CALL   110762$
MOV (SP)+,R5
+
        MOV     (SP)+,R5
CMP R0,#33 ; Это Escape ?
+
        CMP     R0,#33         ; Это Escape ?
BEQ 115616$ ; Да
+
        BEQ     115616$         ; Да
MOV 4(SP),R3 ; R3 = адрес рисунка
+
        MOV     4(SP),R3       ; R3 = адрес рисунка
MOV @R5,R4 ; R4 = число программируемых байт
+
        MOV     @R5,R4         ; R4 = число программируемых байт
115604$:ASR R0 ; Цикл программирования
+
115604$:ASR     R0             ; Цикл программирования
RORB (R3)+
+
        RORB   (R3)+
SOB R4,115604$
+
        SOB     R4,115604$
DEC @SP
+
        DEC     @SP
BNE 115560$
+
        BNE     115560$
115616$:ADD (R5)+,4(SP) ; Перейти к следующей области рисунка
+
115616$:ADD     (R5)+,4(SP)     ; Перейти к следующей области рисунка
TST (SP)+
+
        TST     (SP)+
RTS R5
+
        RTS     R5
 
; П/п обработки Esc Y, Esc 231
 
; П/п обработки Esc Y, Esc 231
115626$:CALL 110762$ ; Прочесть символ
+
115626$:CALL   110762$         ; Прочесть символ
SUB #40,R0
+
        SUB     #40,R0
BMI 115652$
+
        BMI     115652$
CMP R0,12(R5) ; Координата Y превышает диапазон ?
+
        CMP     R0,12(R5)       ; Координата Y превышает диапазон ?
BHIS 115652$ ; Да
+
        BHIS   115652$         ; Да
CALL 115720$ ; Позиционирование по координате Y
+
        CALL   115720$         ; Позиционирование по координате Y
115652$:CALL 110762$
+
115652$:CALL   110762$
SUB #40,R0
+
        SUB     #40,R0
BMI 115716$
+
        BMI     115716$
CMP R0,4(R5) ; Координата X превышает диапазон ?
+
        CMP     R0,4(R5)       ; Координата X превышает диапазон ?
BHIS 115716$ ; Да
+
        BHIS   115716$         ; Да
MOV 4(R5),16(R5) ; Позиционирование по координате X
+
115672$:MOV     4(R5),16(R5)   ; Позиционирование по координате X
SUB R0,16(R5) ; (16)R5 - кол-во оставшихся позиций
+
        SUB     R0,16(R5)       ; (16)R5 - кол-во оставшихся позиций
ADD @32(R5),R0 ; R0 = адрес видеопамяти начала строки + X
+
        ADD     @32(R5),R0     ; R0 = адрес видеопамяти начала строки + X
ADD 22(R5),R0 ; Плюс константа начального доступа
+
        ADD     22(R5),R0       ; Плюс константа начального доступа
MOV R0,@R5 ; @R5 - адр.начала видеопамяти для выв. симв.
+
        MOV     R0,@R5         ; @R5 - адр.начала видеопамяти для выв. симв.
 
115716$:RETURN
 
115716$:RETURN
 
; П/п позиционирования по координате Y
 
; П/п позиционирования по координате Y
115720$:SUB @32(R5),@R5 ; @R5 - оставить координату X
+
115720$:SUB     @32(R5),@R5     ; @R5 - оставить координату X
MOV 12(R5),20(R5)
+
        MOV     12(R5),20(R5)
SUB R0,20(R5) ; 20(R5) - кол-во ост. символьных строк
+
        SUB     R0,20(R5)       ; 20(R5) - кол-во ост. символьных строк
MUL #11.*4,R0
+
        MUL     #11.*4,R0
ADD 30(R5),R1 ; R1 = адрес описания видеостроки
+
        ADD     30(R5),R1       ; R1 = адрес описания видеостроки
ADD 74(R5),PC ; Рулон присутствует ?
+
        ADD     74(R5),PC       ; Рулон присутствует ?
BR 115766$ ; Нет
+
        BR     115766$         ; Нет
CMP R1,#4670 ; Переход за границу списка ?
+
        CMP     R1,#4670       ; Переход за границу списка ?
BLO 115766$ ; Нет
+
        BLO     115766$         ; Нет
SUB #2170,R1 ; Подкорректировать значение
+
        SUB     #2170,R1       ; Подкорректировать значение
115766$:MOV R1,32(R5) ; 32(R5) - текущий адрес списка видеострок
+
115766$:MOV     R1,32(R5)       ; 32(R5) - текущий адрес списка видеострок
ADD @R1,@R5 ; @R5 - адр.начала видеопамяти для выв.симв.  
+
        ADD     @R1,@R5         ; @R5 - адр.начала видеопамяти для выв.симв.  
RETURN
+
        RETURN
 
; П/п обработки Esc Z
 
; П/п обработки Esc Z
115776$:MOV #116010$,R0 ; R0 = адрес символьной строки
+
115776$:MOV     #116010$,R0     ; R0 = адрес символьной строки
CALL 104160$ ; Передача адреса строки п/п обсл. клавиатуры
+
        CALL   104160$         ; Передача адреса строки п/п обсл. клавиатуры
RETURN
+
        RETURN
116010$:.ASCIZ <33>"/Z" ; Терминал VT-100 в режиме VT-52
+
116010$:.ASCIZ <33>"/Z"       ; Терминал VT-100 в режиме VT-52
.EVEN
+
        .EVEN
 
116014$:RETURN
 
116014$:RETURN
 
116016$:RETURN
 
116016$:RETURN
 
116020$:RETURN
 
116020$:RETURN
 
; П/п обработки Esc Граф-@
 
; П/п обработки Esc Граф-@
116022$:ADD @#23176,PC ; Установлен режим отмены ?
+
116022$:ADD     @#23176,PC     ; Установлен режим отмены ?
BR 116036$ ; Нет
+
        BR     116036$         ; Нет
MOV 36(R5),R0 ; R0 = предыдущий цвет символа
+
        MOV     36(R5),R0       ; R0 = предыдущий цвет символа
BR 116046$
+
        BR     116046$
116036$:CALL 110762$ ; Прочесть символ
+
116036$:CALL   110762$         ; Прочесть символ
BIC #177770,R0
+
        BIC     #177770,R0
116046$:MOV R0,@#177016 ; Положить номер цвета в регистр кода цвета
+
116046$:MOV     R0,@#177016     ; Положить номер цвета в регистр кода цвета
116052$:MOV 34(R5),36(R5) ; Запомнить предыдущий цвет символа
+
116052$:MOV     34(R5),36(R5)   ; Запомнить предыдущий цвет символа
MOV R0,34(R5) ; Сохранить номер цвета в ТВ
+
        MOV     R0,34(R5)       ; Сохранить номер цвета в ТВ
RETURN
+
        RETURN
 
; П/п обработки Esc Граф-A
 
; П/п обработки Esc Граф-A
116066$:ADD @#23176,PC ; Установлен режим отмены ?
+
116066$:ADD     @#23176,PC     ; Установлен режим отмены ?
BR 116102$ ; Нет
+
        BR     116102$         ; Нет
MOV 42(R5),R0 ; R0 = предыдущий цвет знакоместа
+
        MOV     42(R5),R0       ; R0 = предыдущий цвет знакоместа
BR 116120$
+
        BR     116120$
116102$:CALL 110762$ ; Прочесть символ
+
116102$:CALL   110762$         ; Прочесть символ
BIC #177770,R0
+
        BIC     #177770,R0
ASL R0
+
        ASL     R0
MOV 113512$(R0),R0 ; R0 = код фонового цвета
+
        MOV     113512$(R0),R0 ; R0 = код фонового цвета
116120$:MOV R0,@#177020 ; Положить номер фон. цвета в рег. кода фона
+
116120$:MOV     R0,@#177020     ; Положить номер фон. цвета в рег. кода фона
MOV R0,@#177022
+
        MOV     R0,@#177022
116130$:MOV 40(R5),42(R5) ; Запомнить предыдущий цвет знакоместа
+
116130$:MOV     40(R5),42(R5)   ; Запомнить предыдущий цвет знакоместа
MOV R0,40(R5) ; Сохранить номер цвета знакоместа в ТВ
+
        MOV     R0,40(R5)       ; Сохранить номер цвета знакоместа в ТВ
RETURN
+
        RETURN
 
; П/п обработки Esc Граф-B
 
; П/п обработки Esc Граф-B
116144$:ADD @#23176,PC ; Установлен режим отмены ?
+
116144$:ADD     @#23176,PC     ; Установлен режим отмены ?
BR 116160$ ; Нет
+
        BR     116160$         ; Нет
MOV 46(R5),R0 ; R0 = предыдущий цвет фона
+
        MOV     46(R5),R0       ; R0 = предыдущий цвет фона
BR 116046$
+
        BR     116046$
116160$:CALL 110762$ ; Прочесть символ
+
116160$:CALL   110762$         ; Прочесть символ
BIC #177770,R0
+
        BIC     #177770,R0
116170$:ASL R0
+
116170$:ASL     R0
MOV 113512$(R0),R0 ; R0 = код фонового цвета
+
        MOV     113512$(R0),R0 ; R0 = код фонового цвета
MOV 44(R5),46(R5) ; Запомнить предыдущий цвет фона
+
        MOV     44(R5),46(R5)   ; Запомнить предыдущий цвет фона
MOV R0,44(R5) ; Сохранить номер цвета фона в ТВ
+
        MOV     R0,44(R5)       ; Сохранить номер цвета фона в ТВ
RETURN
+
        RETURN
 
; П/п обработки Esc Граф-G
 
; П/п обработки Esc Граф-G
116212$:CALL 110762$ ; Прочесть символ
+
116212$:CALL   110762$         ; Прочесть символ
BIC #177770,R0 ; R0 = номер цвета курсора
+
        BIC     #177770,R0     ; R0 = номер цвета курсора
MOVB R0,@64(R5) ; Изменить цвет курсора
+
        MOVB   R0,@64(R5)     ; Изменить цвет курсора
116226$:MOV R0,70(R5) ; Сохранить цвет курсора в ТВ
+
116226$:MOV     R0,70(R5)       ; Сохранить цвет курсора в ТВ
RETURN
+
        RETURN
 
; П/п обработки Esc Граф-C
 
; П/п обработки Esc Граф-C
116234$:ADD @#23176,PC ; Установлен режим отмены ?
+
116234$:ADD     @#23176,PC     ; Установлен режим отмены ?
BR 116254$ ; Нет
+
        BR     116254$         ; Нет
CLR @#22554 ; Сбросить индикатор режима инверсии(подч.)
+
        CLR     @#22554         ; Сбросить индикатор режима инверсии(подч.)
EMT 52 ; Очистить надпись "ИНВ" ("ПОДЧ")
+
        EMT     52             ; Очистить надпись "ИНВ" ("ПОДЧ")
.WORD 107605$
+
        .WORD   107605$
BR 116334$
+
        BR     116334$
116254$:MOV #<111704$-111322$>,56(R5) ; Установить режим инверсии (362)
+
116254$:MOV     #<111704$-111322$>,56(R5) ; Установить режим инверсии (362)
INCB @#22554 ; Установить индикатор режима инверсии
+
        INCB   @#22554         ; Установить индикатор режима инверсии
EMT 52 ; Высветить надпись "ИНВ"
+
        EMT     52             ; Высветить надпись "ИНВ"
.WORD 107614$
+
        .WORD   107614$
RETURN
+
        RETURN
 
; П/п обработки Esc Граф-D
 
; П/п обработки Esc Граф-D
116274$:ADD @#23274,PC ; Установлен режим отмены ?
+
116274$:ADD     @#23176,PC     ; Установлен режим отмены ?
BR 116314$
+
        BR     116314$
CLR @#22554 ; Сбросить индикатор режима подчеркивания(инв.)
+
        CLR     @#22554         ; Сбросить индикатор режима подчеркивания(инв.)
EMT 52 ; Погасить надпись "ПОДЧ" ("ИНВ")
+
        EMT     52             ; Погасить надпись "ПОДЧ" ("ИНВ")
.WORD 107605$
+
        .WORD   107605$
BR 116334$
+
        BR     116334$
116314$:MOV #<111660$-111322$>,56(R5) ; Установить режим подч. (336)
+
116314$:MOV     #<111660$-111322$>,56(R5) ; Установить режим подч. (336)
INCB @#22555 ; Установить индикатор режима подчеркивания
+
        INCB   @#22555         ; Установить индикатор режима подчеркивания
EMT 52 ; Высветить надпись "ПОДЧ"
+
        EMT     52             ; Высветить надпись "ПОДЧ"
.WORD 107623$
+
        .WORD   107623$
RETURN
+
        RETURN
116334$:CLR 56(R5) ; Установить нормальный режим
+
116334$:CLR     56(R5)         ; Установить нормальный режим
TSTB @#22554 ; Ранее был установлен режим инверсии ?
+
        TSTB   @#22554         ; Ранее был установлен режим инверсии ?
BEQ 116356$ ; Нет
+
        BEQ     116356$         ; Нет
MOV #364,56(R5) ; Установить режим инверсии
+
        MOV     #364,56(R5)     ; Установить режим инверсии
BR 116372$
+
        BR     116372$
116356$:TSTB @#22555 ; Ранее был установлен режим подчеркивания ?
+
116356$:TSTB   @#22555         ; Ранее был установлен режим подчеркивания ?
BEQ 116372$ ; Нет
+
        BEQ     116372$         ; Нет
MOV #340,56(R5) ; Установить режим подчеркивания
+
        MOV     #340,56(R5)     ; Установить режим подчеркивания
 
116372$:RETURN
 
116372$:RETURN
 
; П/п обработки Esc Граф-E
 
; П/п обработки Esc Граф-E
116374$:CALL 110762$ ; Прочесть символ
+
116374$:CALL   110762$         ; Прочесть символ
SUB #61,R0 ; Символ в диапазоне "1"-"4"
+
        SUB     #61,R0         ; Символ в диапазоне "1"-"4"
BMI 116422$ ; Нет
+
        BMI     116422$         ; Нет
CMP R0,#3
+
        CMP     R0,#3
BHI 116422$ ; Нет
+
        BHI     116422$         ; Нет
ASL R0 ; Вызов соответствующей п/п
+
        ASL     R0             ; Вызов соответствующей п/п
CALL @116424$(R0)
+
        CALL   @116424$(R0)
 
116422$:RETURN
 
116422$:RETURN
 
; Адреса п/п для установки длины строки
 
; Адреса п/п для установки длины строки
116424$:.WORD 116434$,116450$,116460$,116460$
+
116424$:.WORD   116434$,116450$,116460$,116460$
 
; П/п установки длины строки 80
 
; П/п установки длины строки 80
116434$:MOV #120,4(R5) ; Установить длину строки 80
+
116434$:MOV     #120,4(R5)     ; Установить длину строки 80
116442$:CLR 22(R5) ; Константа начального отступа = 0
+
116442$:CLR     22(R5)         ; Константа начального отступа = 0
RETURN
+
        RETURN
 
; П/п установки длины строки 40
 
; П/п установки длины строки 40
116450$:MOV #50,4(R5) ; Установить длину строки 40
+
116450$:MOV     #50,4(R5)       ; Установить длину строки 40
BR 116442$
+
        BR     116442$
 
116460$:RETURN
 
116460$:RETURN
 
; П/п обработки Esc Граф-F
 
; П/п обработки Esc Граф-F
116462$:CALL 110762$ ; Прочесть символ
+
116462$:CALL   110762$         ; Прочесть символ
SUB #61,R0 ; Символ в диапазоне "1"-"4"
+
        SUB     #61,R0         ; Символ в диапазоне "1"-"4"
BMI 116524$ ; Нет
+
        BMI     116524$         ; Нет
CMP R0,#4
+
        CMP     R0,#4
BHIS 116524$ ; Нет
+
        BHIS   116524$         ; Нет
116502$:MOVB 116526$(R0),@22732; Установить соответствующий формат экрана
+
116502$:MOVB   116526$(R0),@22732; Установить соответствующий формат экрана
MOVB 116532$(R0),22744 ; Сохранить номер формата в ТВ
+
        MOVB   116532$(R0),22744 ; Сохранить номер формата в ТВ
MOVB 116536$(R0),22662 ; Занести новую длину строки в ТВ
+
        MOVB   116536$(R0),22662 ; Занести новую длину строки в ТВ
 
116524$:RETURN
 
116524$:RETURN
 
; Биты формата экрана для загрузки в регистр управления отображением
 
; Биты формата экрана для загрузки в регистр управления отображением
116526$:.BYTE 0,20,40,60
+
116526$:.BYTE   0,20,40,60
 
; Номера форматов для загрузки в ТВ
 
; Номера форматов для загрузки в ТВ
116532$:.BYTE 1,2,4,10
+
116532$:.BYTE   1,2,4,10
 
; Длины строк
 
; Длины строк
116536$:.BYTE 120,50,24,12
+
116536$:.BYTE   120,50,24,12
 
116542$:RETURN
 
116542$:RETURN
 
116544$:RETURN
 
116544$:RETURN
Line 1,007: Line 1,008:
 
116550$:RETURN
 
116550$:RETURN
 
; П/п обработки Esc Граф-W
 
; П/п обработки Esc Граф-W
116552$:ADD @#23176,PC ; Установлен режим отмены ?
+
116552$:ADD     @#23176,PC     ; Установлен режим отмены ?
BR 116570$ ; Нет
+
        BR     116570$         ; Нет
BIS #1000,@#177054 ; Выключить сетевой таймер в канале ЦП
+
        BIS     #1000,@#177054 ; Выключить сетевой таймер в канале ЦП
RETURN
+
        RETURN
116570$:BIC #1000,@#177054 ; Включить сетевой таймер в канале ЦП
+
116570$:BIC     #1000,@#177054 ; Включить сетевой таймер в канале ЦП
RETURN
+
        RETURN
 
; П/п обработки Esc Граф-X
 
; П/п обработки Esc Граф-X
116600$:MTPS #200 ; Запретить прерывания
+
116600$:MTPS   #200           ; Запретить прерывания
MOVB #177,@23160 ; Убрать курсор с экрана
+
        MOVB   #177,@23160     ; Убрать курсор с экрана
CALL 104026$ ; Вызов п/п ПАУЗА
+
        CALL   104026$         ; Вызов п/п ПАУЗА
MTPS #0 ; Разрешить прерывания
+
        MTPS   #0             ; Разрешить прерывания
RETURN
+
        RETURN
 
; П/п обработки Esc Граф-\
 
; П/п обработки Esc Граф-\
116624$:INC @#7072 ; Установить индикатор вызова меню ЗАГРУЗКА
+
116624$:INC     @#7072         ; Установить индикатор вызова меню ЗАГРУЗКА
RETURN
+
        RETURN
 
; П/п обработки Esc Граф-]
 
; П/п обработки Esc Граф-]
116632$:ADD @#23176,PC ; Установлен режим отмены ?
+
116632$:ADD     @#23176,PC     ; Установлен режим отмены ?
BR 116706$ ; Нет
+
        BR     116706$         ; Нет
JSR R5,105400$ ; Установить пользовательский режим клавиатуры
+
        JSR     R5,105400$     ; Установить пользовательский режим клавиатуры
.WORD 107310$,11054
+
        .WORD   107310$,11054
CLR @#7146 ; Сбросить индикатор системного режима
+
        CLR     @#7146         ; Сбросить индикатор системного режима
ADD @#22550,PC ; Разрешена установка/снятие сигнала HALT ?
+
        ADD     @#22550,PC     ; Разрешена установка/снятие сигнала HALT ?
BR 116664$ ; Да
+
        BR     116664$         ; Да
RETURN
+
        RETURN
116664$:BIC #20,@#177716 ; Снять сигнал HALT в ЦП
+
116664$:BIC     #20,@#177716   ; Снять сигнал HALT в ЦП
MOV #70046,@#177010 ; Сброс ключа продолжения в области ОЗУ ЦП
+
        MOV     #70046,@#177010 ; Сброс ключа продолжения в области ОЗУ ЦП
CLR @#177014
+
        CLR     @#177014
RETURN
+
        RETURN
116706$:JSR R5,105346$ ; Установить системный режим клавиатуры
+
116706$:JSR     R5,105346$     ; Установить системный режим клавиатуры
.WORD 107310$,11054
+
        .WORD   107310$,11054
INC @#7146 ; Установить индикатор системного режима
+
        INC     @#7146         ; Установить индикатор системного режима
ADD @#22550,PC ; Разрешена установка/снятие сигнала HALT ?
+
        ADD     @#22550,PC     ; Разрешена установка/снятие сигнала HALT ?
BR 116732$ ; Да
+
        BR     116732$         ; Да
RETURN
+
        RETURN
116732$:BIS #20,@#177716 ; Установить сигнал HALT в ЦП
+
116732$:BIS     #20,@#177716   ; Установить сигнал HALT в ЦП
RETURN
+
        RETURN
 
; П/п обработки Esc Граф-^
 
; П/п обработки Esc Граф-^
116742$:INC @#7100 ; Установить индикатор вызова тест-программы
+
116742$:INC     @#7100         ; Установить индикатор вызова тест-программы
RETURN
+
        RETURN
 
; П/п обработки Esc Граф-_
 
; П/п обработки Esc Граф-_
116750$:MOV #2,@#23176 ; Установить режим отмены
+
116750$:MOV     #2,@#23176     ; Установить режим отмены
116756$:CALL 110762$ ; Прочесть символ
+
116756$:CALL   110762$         ; Прочесть символ
CMP R0,#33 ; Это Escape ?
+
        CMP     R0,#33         ; Это Escape ?
BEQ 116756$ ; Да
+
        BEQ     116756$         ; Да
ASL R0 ; Вызов соответствующей п/п
+
        ASL     R0             ; Вызов соответствующей п/п
CALL @13142(R0)
+
        CALL   @13142(R0)
CLR @#23176 ; Сбросить режим отмены
+
        CLR     @#23176         ; Сбросить режим отмены
RETURN
+
        RETURN
 
; П/п установки цвета курсора, вызываемая при исп. послед. Esc TD (графика)
 
; П/п установки цвета курсора, вызываемая при исп. послед. Esc TD (графика)
117004$:MOV 2(SP),R0
+
117004$:MOV     2(SP),R0
BIC #177760,R0 ; R0 = номер цвета курсора
+
        BIC     #177760,R0     ; R0 = номер цвета курсора
MOV R0,@#7166 ; Сохр. ном. цвета кур. в пункте УСТ/цв. кур.
+
        MOV     R0,@#7166       ; Сохр. ном. цвета кур. в пункте УСТ/цв. кур.
MOVB R0,@22742 ; Изменить цвет курсора
+
        MOVB   R0,@22742       ; Изменить цвет курсора
RETURN
+
        RETURN
 
; П/п установки цветов символа, знакоместа и фона, вызываемая при исполнении
 
; П/п установки цветов символа, знакоместа и фона, вызываемая при исполнении
 
; последовательности Esc LI (графика)
 
; последовательности Esc LI (графика)
117026$:MOV R5,-(SP) ; Сохранить R5
+
117026$:MOV     R5,-(SP)       ; Сохранить R5
MOV @#23150,R5 ; R5 = адрес текущей ТВ
+
        MOV     @#23150,R5     ; R5 = адрес текущей ТВ
MOV 4(SP),R0 ; R0 = номер цвета символа
+
        MOV     4(SP),R0       ; R0 = номер цвета символа
BMI 117052$ ; Если отрицательный - нет установки
+
        BMI     117052$         ; Если отрицательный - нет установки
MOV R0,34(R5) ; Сохранить номер цвета в ТВ
+
        MOV     R0,34(R5)       ; Сохранить номер цвета в ТВ
MOV R0,@#7160 ; Сохр. ном. цвета симв. в пункте УСТ/цв. симв.
+
        MOV     R0,@#7160       ; Сохр. ном. цвета симв. в пункте УСТ/цв. симв.
117052$:MOV 6(SP),R0 ; R0 = номер цвета знакоместа
+
117052$:MOV     6(SP),R0       ; R0 = номер цвета знакоместа
BMI 117074$ ; Если отрицательный - нет установки
+
        BMI     117074$         ; Если отрицательный - нет установки
MOV R0,@#7162 ; Сохр. ном. цвета зн. в пункте УСТ/цв. зн.
+
        MOV     R0,@#7162       ; Сохр. ном. цвета зн. в пункте УСТ/цв. зн.
ASL R0
+
        ASL     R0
MOV 113512$(R0),40(R5); Сохранить номер фонового цвета в ТВ
+
        MOV     113512$(R0),40(R5); Сохранить номер фонового цвета в ТВ
117074$:MOV 10(SP),R0 ; R0 = номер цвета фона
+
117074$:MOV     10(SP),R0       ; R0 = номер цвета фона
BMI 117116$ ; Если отрицательный - нет установки
+
        BMI     117116$         ; Если отрицательный - нет установки
MOV R0,@#7164 ; Сохр. ном. цвета фона в пункте УСТ/цвет фона
+
        MOV     R0,@#7164       ; Сохр. ном. цвета фона в пункте УСТ/цвет фона
ASL R0
+
        ASL     R0
MOV 113512$(R0),44(R5); Сохранить номер фонового цвета в ТВ
+
        MOV     113512$(R0),44(R5); Сохранить номер фонового цвета в ТВ
117116$:CALL 110230$ ; Заполнить регистры кода цвета и фона
+
117116$:CALL   110230$         ; Заполнить регистры кода цвета и фона
MOV (SP)+,R5 ; Восстановить R5
+
        MOV     (SP)+,R5       ; Восстановить R5
RETURN
+
        RETURN
 
; П/п исполнения запроса EMT 42 (вывод символа)
 
; П/п исполнения запроса EMT 42 (вывод символа)
117126$:CALL 117136$ ; Занести символ в буфер
+
117126$:CALL   117136$         ; Занести символ в буфер
TRAP 0 ; Запуск цикла задач
+
        TRAP   0               ; Запуск цикла задач
RETURN
+
        RETURN
 
; П/п заноса символа в буфер
 
; П/п заноса символа в буфер
117136$:MOVB R0,@22544 ; Занести символ в буфер
+
117136$:MOVB   R0,@22544       ; Занести символ в буфер
INC @#22544 ; Корректировка указателя
+
        INC     @#22544         ; Корректировка указателя
BIC #200,@#22544
+
        BIC     #200,@#22544
INC @#7064 ; Увеличить счетчик символов
+
        INC     @#7064         ; Увеличить счетчик символов
RETURN
+
        RETURN
 
; П/п исполнения запроса EMT 44 (вывод строки символов)
 
; П/п исполнения запроса EMT 44 (вывод строки символов)
117162$:MOV @16(SP),R1 ; R1 = адрес строки символов
+
117162$:MOV     @16(SP),R1     ; R1 = адрес строки символов
ADD #2,16(SP) ; Коррекция адреса возврата
+
        ADD     #2,16(SP)       ; Коррекция адреса возврата
 
; П/п исполнения запроса EMT 46 (вывод строки символов)
 
; П/п исполнения запроса EMT 46 (вывод строки символов)
117174$:JSR R5,117206$ ; Занести строку в буфер
+
117174$:JSR     R5,117206$     ; Занести строку в буфер
TRAP 0 ; Запуск цикла задач
+
        TRAP   0               ; Запуск цикла задач
RETURN
+
        RETURN
 
; П/п заноса строки символов в буфер
 
; П/п заноса строки символов в буфер
117204$:MOV (R5)+,R1 ; R1 = адрес строки символов
+
117204$:MOV     (R5)+,R1       ; R1 = адрес строки символов
117206$:MOV @#22544,R0 ; R0 = значение указателя для записи в буфер
+
117206$:MOV     @#22544,R0     ; R0 = значение указателя для записи в буфер
BR 117224$
+
        BR     117224$
117214$:BIC #200,R0 ; Коррекция указателя
+
117214$:BIC     #200,R0         ; Коррекция указателя
INC @#7064 ; Увеличить счетчик символов
+
        INC     @#7064         ; Увеличить счетчик символов
117224$:MOVB (R1)+,(R0)+ ; Занести очередной символ в буфер
+
117224$:MOVB   (R1)+,(R0)+     ; Занести очередной символ в буфер
BNE 117214$ ; Еще не конец строки
+
        BNE     117214$         ; Еще не конец строки
DEC R0
+
        DEC     R0
MOV R0,@#22544
+
        MOV     R0,@#22544
RTS R5
+
        RTS     R5
 
; П/п исполнения запроса EMT 56 (вывод в нижнюю инф. строку)
 
; П/п исполнения запроса EMT 56 (вывод в нижнюю инф. строку)
117240$:MOV #23052,R5 ; R5 = адрес ТВ для нижней инф. строки
+
117240$:MOV     #23052,R5       ; R5 = адрес ТВ для нижней инф. строки
BR 117260$
+
        BR     117260$
117246$:BR 117376$
+
117246$:BR     117376$
 
; П/п исполнения запроса EMT 52 (вывод в верхнюю инф. строку)
 
; П/п исполнения запроса EMT 52 (вывод в верхнюю инф. строку)
117250$:ADD @#7150,PC ; Разрешение/запрет вывода в верхнюю строку
+
117250$:ADD     @#7150,PC       ; Разрешение/запрет вывода в верхнюю строку
MOV #22560,R5 ; R5 = адрес ТВ для верхней инф. строки
+
        MOV     #22560,R5       ; R5 = адрес ТВ для верхней инф. строки
117260$:MOV 34(R5),@#177016 ; Загрузка регистров кода цвета и фона
+
117260$:MOV     34(R5),@#177016 ; Загрузка регистров кода цвета и фона
MOV 40(R5),@#177020
+
        MOV     40(R5),@#177020
MOV 40(R5),@#177022
+
        MOV     40(R5),@#177022
MOV @32(R5),@R5 ; Вычисление видеоадреса
+
        MOV     @32(R5),@R5     ; Вычисление видеоадреса
MOV 4(R5),16(R5)
+
        MOV     4(R5),16(R5)
MOV @16(SP),R1 ; R1 = адрес строки
+
        MOV     @16(SP),R1     ; R1 = адрес строки
MOVB (R1)+,R0 ; R0 = начальная позиция
+
        MOVB   (R1)+,R0       ; R0 = начальная позиция
ADD R0,@R5
+
        ADD     R0,@R5
SUB R0,16(R5)
+
        SUB     R0,16(R5)
BR 117342$
+
        BR     117342$
117332$:MOV R1,-(SP)
+
117332$:MOV     R1,-(SP)
CALL 111272$ ; Рисование символа
+
        CALL   111272$         ; Рисование символа
MOV (SP)+,R1
+
        MOV     (SP)+,R1
117342$:CLR R0
+
117342$:CLR     R0
BISB (R1)+,R0 ; R0 = очередной символ
+
        BISB   (R1)+,R0       ; R0 = очередной символ
BNE 117332$ ; Еще не конец строки
+
        BNE     117332$         ; Еще не конец строки
MOV @#23150,R5 ; R5 = адрес текущей ТВ
+
        MOV     @#23150,R5     ; R5 = адрес текущей ТВ
MOV 34(R5),@#177016 ; Восстановление регистров кода цвета и фона
+
        MOV     34(R5),@#177016 ; Восстановление регистров кода цвета и фона
MOV 40(R5),@#177020
+
        MOV     40(R5),@#177020
MOV 40(R5),@#177022
+
        MOV     40(R5),@#177022
117376$:ADD #2,16(SP) ; Коррекция адреса возврата
+
117376$:ADD     #2,16(SP)       ; Коррекция адреса возврата
RETURN
+
        RETURN
 
117406$:RETURN
 
117406$:RETURN
 
117410$:RETURN
 
117410$:RETURN
Line 1,151: Line 1,152:
 
; ***  ТАБЛИЦА РИСУНКОВ СИМВОЛОВ  ***
 
; ***  ТАБЛИЦА РИСУНКОВ СИМВОЛОВ  ***
  
117430$:.BYTE 0,0,0,0,0,0,0,0,0,0,0 ; Ctrl-@
+
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
+
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
+
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
+
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
+
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
+
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
+
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
+
117545$:.BYTE  0,0,0,0,0,0,0,0,0,0,
117560$
 
 
</pre>
 
</pre>

Latest revision as of 07:36, 13 January 2008


; *****************************************************************
; *                                                               *
; *                  ДРАЙВЕР ТЕКСТОВОГО ТЕРМИНАЛА                 *
; *                                                               *
; *                     Адреса 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