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