Difference between revisions of "Uknc ROM disasm - 2"

From Felixl.com
Jump to navigationJump to search
 
(Исправлены ошибки)
 
Line 1: Line 1:
 
<pre>
 
<pre>
 +
 
; *********************************************************
 
; *********************************************************
 
; *                                                      *
 
; *                                                      *
Line 9: Line 10:
  
 
; П/п начальной инициализации
 
; П/п начальной инициализации
103554$:JSR R5,173730$ ; Очистка ОЗУ
+
103554$:JSR     R5,173730$     ; Очистка ОЗУ
.WORD 7176,1762 ; Начальный адрес - 7176, число слов - 1762
+
        .WORD   7176,1762       ; Начальный адрес - 7176, число слов - 1762
103564$:TST @#177702 ; Сбросить готовность рег.сост. клавиатуры
+
103564$:TST     @#177702       ; Сбросить готовность рег.сост. клавиатуры
MOV #175412$,@#300 ; Вектор прерываний от клавиатуры
+
        MOV     #175412$,@#300 ; Вектор прерываний от клавиатуры
MOV #200,@#302
+
        MOV     #200,@#302
MOV #100,@#177700 ; Разрешить прерывания от клавиатуры
+
        MOV     #100,@#177700   ; Разрешить прерывания от клавиатуры
MOV #175540$,@#324 ; Вектор прерываний от канала 0 (источник)
+
        MOV     #175540$,@#324 ; Вектор прерываний от канала 0 (источник)
MOV #200,@#326
+
        MOV     #200,@#326
BIS #1,@#177076 ; Разрешить прерывания от канала 0 (источник)
+
        BIS     #1,@#177076     ; Разрешить прерывания от канала 0 (источник)
CALL 104064$ ; Настройка начальных адресов буферов
+
        CALL   104064$         ; Настройка начальных адресов буферов
MOV #11140,@#13140 ; Нач. адрес буфера клавиш К1 - К25
+
        MOV     #11140,@#13140 ; Нач. адрес буфера клавиш К1 - К25
MOV #7234,@#7214 ; Текущая таблица - табл. основного регистра
+
        MOV     #7234,@#7214   ; Текущая таблица - табл. основного регистра
MOV #7234,@#7216
+
        MOV     #7234,@#7216
MOVB #40,@#7221 ; Заглавные буквы
+
        MOVB   #40,@#7221     ; Заглавные буквы
MOVB #16,@#7222 ; Латинский регистр
+
        MOVB   #16,@#7222     ; Латинский регистр
MOVB #17,@#7223
+
        MOVB   #17,@#7223
 
; Заполнение таблиц раскладки клавиатуры
 
; Заполнение таблиц раскладки клавиатуры
MOV #105520$,R1 ; R1 = нач. адрес данных для таблиц раскладки
+
        MOV     #105520$,R1     ; R1 = нач. адрес данных для таблиц раскладки
MOV #7234,R0 ; R0 = нач. адрес таблиц раскладки
+
        MOV     #7234,R0       ; R0 = нач. адрес таблиц раскладки
MOV #5,R4 ; R4 = число таблиц раскладки
+
        MOV     #5,R4           ; R4 = число таблиц раскладки
103720$:MOV #130,R2 ; R2 = число элементов таблицы
+
103720$:MOV     #130,R2         ; R2 = число элементов таблицы
MOV R0,R3 ; R3 = адрес текущей заполняемой таблицы
+
        MOV     R0,R3           ; R3 = адрес текущей заполняемой таблицы
103726$:MOVB (R1)+,(R3)+ ; Пересылка
+
103726$:MOVB   (R1)+,(R3)+     ; Пересылка
CLRB (R3)+
+
        CLRB   (R3)+
SOB R2,103726$
+
        SOB     R2,103726$
MOV #400,R2 ; R2 = номер первой регистровой клавиши
+
        MOV     #400,R2         ; R2 = номер первой регистровой клавиши
103740$:MOVB (R1)+,R3
+
103740$:MOVB   (R1)+,R3
BEQ 103762$ ; Это строка или конец данных для тек. табл.?
+
        BEQ     103762$         ; Это строка или конец данных для тек. табл.?
BMI 103756$ ; Переход к следующей регистровой комбинации ?
+
        BMI     103756$         ; Переход к следующей регистровой комбинации ?
DEC R3 ; Регистровая клавиша (в R3 - смещение)
+
        DEC     R3             ; Регистровая клавиша (в R3 - смещение)
ASL R3
+
        ASL     R3
ADD R0,R3
+
        ADD     R0,R3
MOV R2,@R3
+
        MOV     R2,@R3
103756$:INC R2
+
103756$:INC     R2
BR 103740$
+
        BR     103740$
103762$:MOVB (R1)+,R3
+
103762$:MOVB   (R1)+,R3
BEQ 104004$ ; Это конец таблицы ?
+
        BEQ     104004$         ; Это конец таблицы ?
DEC R3 ; Строка (адрес в R1,смещение в табл. в R3)
+
        DEC     R3             ; Строка (адрес в R1,смещение в табл. в R3)
ASL R3
+
        ASL     R3
ADD R0,R3
+
        ADD     R0,R3
MOV R1,@R3
+
        MOV     R1,@R3
103776$:TSTB (R1)+ ; Прогон строки
+
103776$:TSTB   (R1)+           ; Прогон строки
BNE 103776$
+
        BNE     103776$
BR 103762$
+
        BR     103762$
104004$:ADD #260,R0 ; Переход к следующей таблице
+
104004$:ADD     #260,R0         ; Переход к следующей таблице
SOB R4,103720$
+
        SOB     R4,103720$
CALL 113670$ ; Установить систему команд VT-52
+
        CALL   113670$         ; Установить систему команд VT-52
MOVB #2,@#7226 ; Интервал автоповтора
+
        MOVB   #2,@#7226       ; Интервал автоповтора
RETURN
+
        RETURN
 
; П/п ПАУЗА (ожидание нажатия любой клавиши)
 
; П/п ПАУЗА (ожидание нажатия любой клавиши)
104026$:CLR @#177700 ; Запретить прерывания от клавиатуры
+
104026$:CLR     @#177700       ; Запретить прерывания от клавиатуры
104032$:TSTB @#177700 ; Ожидание нажатия или отжатия клавиши
+
104032$:TSTB   @#177700       ; Ожидание нажатия или отжатия клавиши
BPL 104032$
+
        BPL     104032$
TSTB @#177702$ ; Клавиша отжата ?
+
        TSTB   @#177702       ; Клавиша отжата ?
BMI 104032$ ; Да
+
        BMI     104032$         ; Да
MOV #100,@#177700 ; Разрешить прерывания от клавиатуры
+
        MOV     #100,@#177700   ; Разрешить прерывания от клавиатуры
104054$:JSR R5,173730$ ; Очистка буферов клавиатуры
+
104054$:JSR     R5,173730$     ; Очистка буферов клавиатуры
.WORD 2240,14
+
        .WORD   2240,14
 
; Установка указателей на начало буферов
 
; Установка указателей на начало буферов
104064$:MOV #2260,@#7176
+
104064$:MOV     #2260,@#7176
MOV #2260,@#7200
+
        MOV     #2260,@#7200
MOV #2240,@#7202
+
        MOV     #2240,@#7202
MOV #2240,@#7204
+
        MOV     #2240,@#7204
MOV #2200,@#7206
+
        MOV     #2200,@#7206
MOV #2200,@#7210
+
        MOV     #2200,@#7210
RETURN
+
        RETURN
 
; П/п обслуживания запросов EMT 22 и EMT 24 (ввод символа с ожиданием)
 
; П/п обслуживания запросов EMT 22 и EMT 24 (ввод символа с ожиданием)
104132$:TRAP 2 ; Считывание символа с буфера в регистр R0
+
104132$:TRAP   2               ; Считывание символа с буфера в регистр R0
ADD @#7230,PC ; Символ есть в буфере ?
+
        ADD     @#7230,PC       ; Символ есть в буфере ?
BR 104152$ ; Да
+
        BR     104152$         ; Да
CLR @#7230
+
        CLR     @#7230
TRAP 0 ; Запуск диспетчера процессов
+
        TRAP   0               ; Запуск диспетчера процессов
BR 104132$
+
        BR     104132$
104152$:MOV R0,2(SP)
+
104152$:MOV     R0,2(SP)
RETURN
+
        RETURN
 
; П/п заноса ASCII-символов и адресов строк в буфер
 
; П/п заноса ASCII-символов и адресов строк в буфер
104160$:MOV R0,@7210$ ; Занести символ в буфер
+
104160$:MOV     R0,@7210       ; Занести символ в буфер
ADD #2,@#7210 ; Продвинуть указатель
+
        ADD     #2,@#7210       ; Продвинуть указатель
BIC #40,@#7210 ; Корректировка указателя (циклический буфер)
+
        BIC     #40,@#7210     ; Корректировка указателя (циклический буфер)
ADD @#7230,PC
+
        ADD     @#7230,PC
RETURN
+
        RETURN
104206$:TRAP 2
+
104206$:TRAP   2
RETURN
+
        RETURN
  
 
; *** ОСНОВНАЯ П/П ОБСЛУЖИВАНИЯ КЛАВИАТУРЫ ***
 
; *** ОСНОВНАЯ П/П ОБСЛУЖИВАНИЯ КЛАВИАТУРЫ ***
  
 
; Точка выхода из п/п обслуживания клавиатуры
 
; Точка выхода из п/п обслуживания клавиатуры
104212$:CLR @#7060 ; Очистить флаг вызова п/п
+
104212$:CLR     @#7060         ; Очистить флаг вызова п/п
CLRB @#7227 ; Очистить ячейку значения автоповтора
+
        CLRB   @#7227         ; Очистить ячейку значения автоповтора
104222$:ADD @#7230,PC
+
104222$:ADD     @#7230,PC
RETURN
+
        RETURN
104230$:TRAP 2
+
104230$:TRAP   2
RETURN
+
        RETURN
104234$:TSTB @7202$ ; Есть скэн-коды в буфере автоповтора ?
+
104234$:TSTB   @7202           ; Есть скэн-коды в буфере автоповтора ?
BEQ 104212$ ; Нет
+
        BEQ     104212$         ; Нет
TSTB @#7227 ; Истекло время автоповтора ?
+
        TSTB   @#7227         ; Истекло время автоповтора ?
BNE 104222$ ; Нет
+
        BNE     104222$         ; Нет
MOV @#7202,R3 ; R3 = указатель на буфер автоповтора(чтение)
+
        MOV     @#7202,R3       ; R3 = указатель на буфер автоповтора(чтение)
104254$:MOVB (R3)+,R0 ; Прочесть очередной скэн-код
+
104254$:MOVB   (R3)+,R0       ; Прочесть очередной скэн-код
BNE 104336$ ; Он существует
+
        BNE     104336$         ; Он существует
104260$:BIC #20,R3 ; Подправить значение указателя
+
104260$:BIC     #20,R3         ; Подправить значение указателя
CMP R3,@#7204 ; Буфер просмотрен до конца ?
+
        CMP     R3,@#7204       ; Буфер просмотрен до конца ?
BNE 104254$ ; Нет
+
        BNE     104254$         ; Нет
MOVB @#7226,@#7227
+
        MOVB   @#7226,@#7227
DEC @#7060
+
        DEC     @#7060
BR 104222$
+
        BR     104222$
 
; Точка входа в п/п обслуживания клавиатуры из диспетчера процессов
 
; Точка входа в п/п обслуживания клавиатуры из диспетчера процессов
104306$:MOV @#7176,R1 ; R1 = указатель на буфер скэн-кодов
+
104306$:MOV     @#7176,R1       ; R1 = указатель на буфер скэн-кодов
MOVB @R1,R0 ; Прочесть скэн-код
+
        MOVB   @R1,R0         ; Прочесть скэн-код
BEQ 104234$ ; Скэн-кода нет
+
        BEQ     104234$         ; Скэн-кода нет
DEC @#7060 ; Уменьшить счетчик (флаг вызова)
+
        DEC     @#7060         ; Уменьшить счетчик (флаг вызова)
CLRB (R1)+ ; Вычеркнуть скэн-код из буфера
+
        CLRB   (R1)+           ; Вычеркнуть скэн-код из буфера
BIC #10,R1 ; Подправить значение указателя
+
        BIC     #10,R1         ; Подправить значение указателя
MOV R1,@#7176
+
        MOV     R1,@#7176
CLR R3 ; В данном случае R3 является индикатором
+
        CLR     R3             ; В данном случае R3 является индикатором
; того, что скэн-код был прочитан из основ-
+
                                ; того, что скэн-код был прочитан из основ-
; ного буфера (R3=0) или из буфера авто-
+
                                ; ного буфера (R3=0) или из буфера авто-
; повтора (R3<>0).
+
                                ; повтора (R3<>0).
104336$:MOV R0,R2 ; R2 = скэн-код
+
104336$:MOV     R0,R2           ; R2 = скэн-код
BMI 104516$ ; Это скэн-код отжатия
+
        BMI     104516$         ; Это скэн-код отжатия
ASHC #74,R0 ; Извлечение ASCII-кода
+
        ASHC   #74,R0         ; Извлечение ASCII-кода
MOVB 105510$(R0),R1
+
        MOVB   105510$(R0),R1
MOV R2,R0
+
        MOV     R2,R0
SUB R1,R0
+
        SUB     R1,R0
ASL R0
+
        ASL     R0
ADD @#7214,R0
+
        ADD     @#7214,R0
MOV @R0,R0
+
        MOV     @R0,R0
MOV R0,R1
+
        MOV     R0,R1
SWAB R1
+
        SWAB   R1
BEQ 104410$ ; Это одиночный ASCII-код
+
        BEQ     104410$         ; Это одиночный ASCII-код
ASRB R1
+
        ASRB   R1
BNE 104434$ ; Это адрес ASCIZ-строки
+
        BNE     104434$         ; Это адрес ASCIZ-строки
MOVB R0,R0 ; Переход на обслуживание регистровых клавиш
+
        MOVB   R0,R0           ; Переход на обслуживание регистровых клавиш
ASL R0
+
        ASL     R0
JMP @104714$(R0)
+
        JMP     @104714$(R0)
104410$:TST @#7232 ; Разрешена передача одиночных символов ?
+
104410$:TST     @#7232         ; Разрешена передача одиночных символов ?
BNE 104510$ ; Нет
+
        BNE     104510$         ; Нет
TSTB R0 ; Символ в диапазоне 128-255 ?
+
        TSTB   R0             ; Символ в диапазоне 128-255 ?
BMI 104434$ ; Да
+
        BMI     104434$         ; Да
CMP R0,#100 ; Это символы @,A-Z,[,\,],_ ?
+
        CMP     R0,#100         ; Это символы @,A-Z,[,\,],_ ?
BLO 104434$ ; Нет
+
        BLO     104434$         ; Нет
BISB @#7220,R0 ; Установка заглавные/строчные буквы
+
        BISB   @#7220,R0       ; Установка заглавные/строчные буквы
104434$:TST R3 ; Это символ из буфера автоповтора ?
+
104434$:TST     R3             ; Это символ из буфера автоповтора ?
BNE 104472$ ; Да
+
        BNE     104472$         ; Да
TSTB @7202$ ; Буфер автоповтора пуст ?
+
        TSTB   @7202           ; Буфер автоповтора пуст ?
BNE 104454$ ; Нет
+
        BNE     104454$         ; Нет
MOVB #31,@#7227 ; Задать время между нажатием и автоповтором
+
        MOVB   #31,@#7227     ; Задать время между нажатием и автоповтором
104454$:MOVB R2,@7204$ ; Положить скэн-код в буфер автоповтора
+
104454$:MOVB   R2,@7204       ; Положить скэн-код в буфер автоповтора
INC @#7204 ; Подправить значение указателя
+
        INC     @#7204         ; Подправить значение указателя
BIC #20,@#7204
+
        BIC     #20,@#7204
104472$:MOV @#7210,R1 ; R1 = указатель на буфер ASCII-символов
+
104472$:MOV     @#7210,R1       ; R1 = указатель на буфер ASCII-символов
MOV R0,(R1)+ ; Положить символ(адрес строки) в буфер
+
        MOV     R0,(R1)+       ; Положить символ(адрес строки) в буфер
BIC #40,R1
+
        BIC     #40,R1
MOV R1,@#7210
+
        MOV     R1,@#7210
104510$:TST R3 ; Это был символ из буфера автоповтора ?
+
104510$:TST     R3             ; Это был символ из буфера автоповтора ?
BNE 104260$ ; Да
+
        BNE     104260$         ; Да
104514$:BR 104306$
+
104514$:BR     104306$
104516$:MOV @#7212,R0 ; R0 = ожидаемый код отжатия рег. клавиши
+
104516$:MOV     @#7212,R0       ; R0 = ожидаемый код отжатия рег. клавиши
BEQ 104614$ ; Регистровая клавиша не была нажата
+
        BEQ     104614$         ; Регистровая клавиша не была нажата
CMPB R2,R0 ; Коды отжатия совпадают ?
+
        CMPB   R2,R0           ; Коды отжатия совпадают ?
BEQ 104540$ ; Да
+
        BEQ     104540$         ; Да
104530$:SWAB R0
+
104530$:SWAB   R0
BEQ 104530$
+
        BEQ     104530$
CMPB R2,R0
+
        CMPB   R2,R0
BNE 104614$
+
        BNE     104614$
 
; Обработка кода отжатия регистровой клавиши
 
; Обработка кода отжатия регистровой клавиши
104540$:CLRB R0 ; Очистить байт кода отжатия
+
104540$:CLRB   R0             ; Очистить байт кода отжатия
SWAB R0
+
        SWAB   R0
MOV R0,@#7212
+
        MOV     R0,@#7212
CLR R0
+
        CLR     R0
CMPB R2,#205 ; Была отжата клавиша НР (Shift) ?
+
        CMPB   R2,#205         ; Была отжата клавиша НР (Shift) ?
BEQ 104574$ ; Да
+
        BEQ     104574$         ; Да
MOVB @#7224,R0 ; R0 = ASCII-код, посылаемый при отжатии АЛФ
+
        MOVB   @#7224,R0       ; R0 = ASCII-код, посылаемый при отжатии АЛФ
BEQ 104600$ ; Его нет
+
        BEQ     104600$         ; Его нет
CLRB @#7224
+
        CLRB   @#7224
BR 104600$
+
        BR     104600$
104574$:SWAB @#7220 ; Переменить состояние заглавные/строчные
+
104574$:SWAB   @#7220         ; Переменить состояние заглавные/строчные
104600$:MOV @#7216,@#7214 ; Восстановить пред. табл. раскл. клавиатуры
+
104600$:MOV     @#7216,@#7214   ; Восстановить пред. табл. раскл. клавиатуры
TST R0 ; Есть данные для передачи при отжатии АЛФ ?
+
        TST     R0             ; Есть данные для передачи при отжатии АЛФ ?
BNE 104472$ ; Да
+
        BNE     104472$         ; Да
BR 104306$
+
        BR     104306$
 
; Обработка кода отжатия алфавитно-цифровой клавиши
 
; Обработка кода отжатия алфавитно-цифровой клавиши
104614$:BIC #177760,R2 ; Оставить биты кода отжатия
+
104614$:BIC     #177760,R2     ; Оставить биты кода отжатия
MOV @#7202,R1 ; R1 = указатель на буфер автоповтора
+
        MOV     @#7202,R1       ; R1 = указатель на буфер автоповтора
104624$:MOVB (R1)+,R0 ; Прочесть скэн-код из буфера автоповтора
+
104624$:MOVB   (R1)+,R0       ; Прочесть скэн-код из буфера автоповтора
BEQ 104644$ ; Он отсутствует
+
        BEQ     104644$         ; Он отсутствует
BIC #177760,R0 ; Оставить биты кода отжатия
+
        BIC     #177760,R0     ; Оставить биты кода отжатия
CMP R0,R2 ; Эти коды совпадают ?
+
        CMP     R0,R2           ; Эти коды совпадают ?
BEQ 104700$ ; Да
+
        BEQ     104700$         ; Да
MOV R2,R3
+
        MOV     R2,R3
BEQ 104306$
+
        BEQ     104306$
104644$:BIC #20,R1
+
104644$:BIC     #20,R1
TST R3
+
        TST     R3
BNE 104660$
+
        BNE     104660$
MOV R1,@#7202
+
        MOV     R1,@#7202
104660$:CMP R1,@#7204 ; Буфер просмотрен до конца ?
+
104660$:CMP     R1,@#7204       ; Буфер просмотрен до конца ?
BNE 104624$ ; Нет
+
        BNE     104624$         ; Нет
MOVB #2,@#7226 ; Установить нормальную скорость автоповтора
+
        MOVB   #2,@#7226       ; Установить нормальную скорость автоповтора
104674$:JMP 104306$
+
104674$:JMP     104306$
104700$:CLRB -1(R1) ; Выбросить скэн-код из буфера автоповтора
+
104700$:CLRB   -1(R1)         ; Выбросить скэн-код из буфера автоповтора
CLR R2 ; R2 = 0(признак того, что скэн-код обнаружен)
+
        CLR     R2             ; R2 = 0(признак того, что скэн-код обнаружен)
TST R3
+
        TST     R3
BNE 104674$
+
        BNE     104674$
BR 104644$
+
        BR     104644$
 
; Адреса п/п обслуживания регистровых комбинаций
 
; Адреса п/п обслуживания регистровых комбинаций
104714$:.WORD 104766$ ; Нажатие НР (Shift)
+
104714$:.WORD   104766$         ; Нажатие НР (Shift)
.WORD 105044$ ; Нажатие АЛФ
+
        .WORD   105044$         ; Нажатие АЛФ
.WORD 105116$ ; Нажатие ГРАФ (Graph)
+
        .WORD   105116$         ; Нажатие ГРАФ (Graph)
.WORD 105150$ ; Нажатие УПР (Ctrl)
+
        .WORD   105150$         ; Нажатие УПР (Ctrl)
.WORD 105160$ ; Нажатие ФИКС (Lock)
+
        .WORD   105160$         ; Нажатие ФИКС (Lock)
.WORD 104734$ ; Установка режимов (УСТ)
+
        .WORD   104734$         ; Установка режимов (УСТ)
.WORD 105234$ ; Режим ИСУ (УПР+ПОМ)
+
        .WORD   105234$         ; Режим ИСУ (УПР+ПОМ)
.WORD 104746$ ; Печать экрана (УПР+ИСП)
+
        .WORD   104746$         ; Печать экрана (УПР+ИСП)
 
; П/п обслуживания нажатия УСТ
 
; П/п обслуживания нажатия УСТ
104734$:CLR @#7042 ; Адресовать ASCII-коды клавиатуры запросу EMT
+
104734$:CLR     @#7042         ; Адресовать ASCII-коды клавиатуры запросу EMT
INC @#7070 ; Установить флаг вызова меню УСТАНОВКА
+
        INC     @#7070         ; Установить флаг вызова меню УСТАНОВКА
BR 104514$
+
        BR     104514$
 
; П/п обслуживания нажатия УПР+ИСП (печать экрана)
 
; П/п обслуживания нажатия УПР+ИСП (печать экрана)
104746$:CALL 135704$ ; Печать экрана
+
104746$:CALL   135704$         ; Печать экрана
MOV @#7216,@#7214
+
        MOV     @#7216,@#7214
CLR @#7212
+
        CLR     @#7212
BR 104514$
+
        BR     104514$
 
; П/п обслуживания нажатия НР
 
; П/п обслуживания нажатия НР
104766$:TSTB @7202$ ; Нажата какая-нибудь алф.-циф. клавиша ?
+
104766$:TSTB   @7202           ; Нажата какая-нибудь алф.-циф. клавиша ?
BEQ 105004$ ; Нет
+
        BEQ     105004$         ; Нет
MOV #401,7226$ ; Установить повышенную скорость автоповтора
+
        MOV     #401,7226       ; Установить повышенную скорость автоповтора
BR 104514$
+
        BR     104514$
105004$:MOV #205,R1 ; R1 = код отжатия НР
+
105004$:MOV     #205,R1         ; R1 = код отжатия НР
MOV #7514,@#7214 ; Текущая табл.-таблица нижнего регистра
+
        MOV     #7514,@#7214   ; Текущая табл.-таблица нижнего регистра
105016$:SWAB @#7220 ; Переключить режим заглавные/строчные буквы
+
105016$:SWAB   @#7220         ; Переключить режим заглавные/строчные буквы
105022$:SWAB @#7212
+
105022$:SWAB   @#7212
MOVB R1,@#7212
+
        MOVB   R1,@#7212
CMPB @#7213,#207 ; Была нажата клавиша ФИКС ?
+
        CMPB   @#7213,#207     ; Была нажата клавиша ФИКС ?
BEQ 105202$ ; Да
+
        BEQ     105202$         ; Да
BR 104514$
+
        BR     104514$
 
; П/п обслуживания нажатия АЛФ
 
; П/п обслуживания нажатия АЛФ
105044$:MOVB @#7222,R0 ; R0 = 16(8) или 17(8)
+
105044$:MOVB   @#7222,R0       ; R0 = 16(8) или 17(8)
MOVB @#7223,@#7224
+
        MOVB   @#7223,@#7224
SWAB @#7212
+
        SWAB   @#7212
MOVB #206,@#7212 ; Код отжатия клавиши АЛФ
+
        MOVB   #206,@#7212     ; Код отжатия клавиши АЛФ
CMPB @#7213,#207 ; Была нажата клавиша ФИКС ?
+
        CMPB   @#7213,#207     ; Была нажата клавиша ФИКС ?
BNE 105112$ ; Нет
+
        BNE     105112$         ; Нет
CLRB @#7224 ; При отжатии АЛФ не передавать ASCII-кода
+
        CLRB   @#7224         ; При отжатии АЛФ не передавать ASCII-кода
MOV @#7216,@#7214
+
        MOV     @#7216,@#7214
105112$:JMP 104472$
+
105112$:JMP     104472$
 
; П/п обслуживания нажатия ГРАФ
 
; П/п обслуживания нажатия ГРАФ
105116$:MOV #7774,@#7214 ; Текущая табл.-таблица ГРАФ-регистра
+
105116$:MOV     #7774,@#7214   ; Текущая табл.-таблица ГРАФ-регистра
105124$:MOV #206,R1 ; R1 = код отжатия ГРАФ и УПР
+
105124$:MOV     #206,R1         ; R1 = код отжатия ГРАФ и УПР
105130$:CMP @#7214,@#7216 ; Адрес текущей табл. равен адресу предыдущей ?
+
105130$:CMP     @#7214,@#7216   ; Адрес текущей табл. равен адресу предыдущей ?
BNE 105022$ ; Нет
+
        BNE     105022$         ; Нет
MOV #7234,@#7214 ; Текущая таблица-таблица основного регистра
+
        MOV     #7234,@#7214   ; Текущая таблица-таблица основного регистра
BR 105022$
+
        BR     105022$
 
; П/п обслуживания нажатия УПР
 
; П/п обслуживания нажатия УПР
105150$:MOV #10254,@#7214 ; Текущая таблица-таблица УПР-регистра
+
105150$:MOV     #10254,@#7214   ; Текущая таблица-таблица УПР-регистра
BR 105124$
+
        BR     105124$
 
; П/п обслуживания нажатия ФИКС
 
; П/п обслуживания нажатия ФИКС
105160$:MOV #207,R1 ; R1 = код отжатия ФИКС
+
105160$:MOV     #207,R1         ; R1 = код отжатия ФИКС
TST @#7212 ; Нажата регистровая клавиша ?
+
        TST     @#7212         ; Нажата регистровая клавиша ?
BNE 105202$ ; Да
+
        BNE     105202$         ; Да
MOV #10534,@#7214 ; Текущая таблица-таблица ФИКС-регистра
+
        MOV     #10534,@#7214   ; Текущая таблица-таблица ФИКС-регистра
BR 105130$
+
        BR     105130$
105202$:CMP @#7214,#7514 ; Нажата НР ?
+
105202$:CMP     @#7214,#7514   ; Нажата НР ?
BEQ 105016$ ; Да
+
        BEQ     105016$         ; Да
TSTB @#7224 ; Нажата АЛФ ?
+
        TSTB   @#7224         ; Нажата АЛФ ?
BEQ 105224$ ; Нет
+
        BEQ     105224$         ; Нет
CLRB @#7224 ; При отжатии АЛФ не передавать ASCII-кода
+
        CLRB   @#7224         ; При отжатии АЛФ не передавать ASCII-кода
105224$:MOV @#7214,@#7216
+
105224$:MOV     @#7214,@#7216
BR 105022$
+
        BR     105022$
 
; П/п обслуживания нажатия УПР+ПОМ (ИСУ on/off)
 
; П/п обслуживания нажатия УПР+ПОМ (ИСУ on/off)
105234$:COMB @#22552 ; Изменить режим ИСУ/не ИСУ
+
105234$:COMB   @#22552         ; Изменить режим ИСУ/не ИСУ
BEQ 105250$ ; Режим ИСУ выключен
+
        BEQ     105250$         ; Режим ИСУ выключен
EMT 52 ; Высветить надпись "ИСУ"
+
        EMT     52             ; Высветить надпись "ИСУ"
.WORD 107641$
+
        .WORD   107641$
BR 105254$
+
        BR     105254$
105250$:EMT 52 ; Стереть надпись "ИСУ"
+
105250$:EMT     52             ; Стереть надпись "ИСУ"
.WORD 107632$
+
        .WORD   107632$
105254$:JMP 104306$
+
105254$:JMP     104306$
 
; П/п обработки управляющего символа Ctrl+N (переключение на русский алфавит)
 
; П/п обработки управляющего символа Ctrl+N (переключение на русский алфавит)
105260$:MOV @#22556,R0 ; R0 = текущее состояние алфавита
+
105260$:MOV     @#22556,R0     ; R0 = текущее состояние алфавита
MOV #200,@#22556 ; Установить русский алфавит
+
        MOV     #200,@#22556   ; Установить русский алфавит
MOV #16*400+17,@#7222;Последовательность посылки кодов
+
        MOV     #16*400+17,@#7222;Последовательность посылки кодов
; при нажатии и отжатии АЛФ
+
                                ; при нажатии и отжатии АЛФ
EMT 52 ; Высветить надпись "РУС"
+
        EMT     52             ; Высветить надпись "РУС"
.WORD 107731$
+
        .WORD   107731$
BR 105330$
+
        BR     105330$
 
; П/п обработки управляющего символа Ctrl+O (переключение на латинский алфавит)
 
; П/п обработки управляющего символа Ctrl+O (переключение на латинский алфавит)
105306$:MOV @#22556,R0
+
105306$:MOV     @#22556,R0
CLR @#22556 ; Установить латинский алфавит
+
        CLR     @#22556         ; Установить латинский алфавит
MOV #17*400+16,@#7222
+
        MOV     #17*400+16,@#7222
EMT 52 ; Высветить надпись "ЛАТ"
+
        EMT     52             ; Высветить надпись "ЛАТ"
.WORD 107736$
+
        .WORD   107736$
105330$:CMP R0,@#22556 ; Предыдущий и текущий режимы алфавита равны ?
+
105330$:CMP     R0,@#22556     ; Предыдущий и текущий режимы алфавита равны ?
BEQ 105342$ ; Да
+
        BEQ     105342$         ; Да
SWAB @#7220 ; Переменить верхний/нижний регистр
+
        SWAB   @#7220         ; Переменить верхний/нижний регистр
 
105342$:RETURN
 
105342$:RETURN
 
105344$:RETURN
 
105344$:RETURN
 
; П/п устанавливает специальные режимы клавиатуры (системный, ДКЛ)
 
; П/п устанавливает специальные режимы клавиатуры (системный, ДКЛ)
105346$:MOV (R5)+,R0 ; R0 = адрес новых кодов клавиатуры
+
105346$:MOV     (R5)+,R0       ; R0 = адрес новых кодов клавиатуры
MOV (R5)+,R1 ; R1 = адрес буфера сохранения
+
        MOV     (R5)+,R1       ; R1 = адрес буфера сохранения
TST @R1 ; Режим уже был установлен ?
+
        TST     @R1             ; Режим уже был установлен ?
BNE 105376$ ; Да
+
        BNE     105376$         ; Да
INC (R1)+ ; Установить флаг спецрежима
+
        INC     (R1)+           ; Установить флаг спецрежима
BR 105372$
+
        BR     105372$
105362$:MOV 7232(R2),(R1)+ ; Сохранить значение клавиши
+
105362$:MOV     7232(R2),(R1)+ ; Сохранить значение клавиши
MOV (R0)+,7232(R2) ; Занести новое значение
+
        MOV     (R0)+,7232(R2) ; Занести новое значение
105372$:MOV (R0)+,R2 ; R2 = адрес клавиши
+
105372$:MOV     (R0)+,R2       ; R2 = адрес клавиши
BNE 105362$ ; Еще не конец таблицы
+
        BNE     105362$         ; Еще не конец таблицы
105376$:RTS R5
+
105376$:RTS     R5
 
; П/п восстанавливает предыдущий режим клавиатуры
 
; П/п восстанавливает предыдущий режим клавиатуры
105400$:MOV (R5)+,R0 ; R0 = адрес новых кодов клавиатуры
+
105400$:MOV     (R5)+,R0       ; R0 = адрес новых кодов клавиатуры
MOV (R5)+,R1 ; R1 = адрес буфера сохранения
+
        MOV     (R5)+,R1       ; R1 = адрес буфера сохранения
TST @R1 ; Спецрежим установлен ?
+
        TST     @R1             ; Спецрежим установлен ?
BEQ 105426$ ; Нет
+
        BEQ     105426$         ; Нет
CLR (R1)+ ; Сбросить флаг спецрежима
+
        CLR     (R1)+           ; Сбросить флаг спецрежима
BR 105422$
+
        BR     105422$
105414$:MOV (R1)+,7232(R2) ; Восстановить значение клавиши
+
105414$:MOV     (R1)+,7232(R2) ; Восстановить значение клавиши
TST (R0)+
+
        TST     (R0)+
105422$:MOV (R0)+,R2 ; R2 = адрес клавиши
+
105422$:MOV     (R0)+,R2       ; R2 = адрес клавиши
BNE 105414$ ; Еще не конец таблицы
+
        BNE     105414$         ; Еще не конец таблицы
105426$:RTS R5
+
105426$:RTS     R5
 
; П/п переключения клавиатуры в новый режим. Если текущий режим является
 
; П/п переключения клавиатуры в новый режим. Если текущий режим является
 
; не системным, то переключение производится сразу, иначе (системный режим)
 
; не системным, то переключение производится сразу, иначе (системный режим)
Line 334: Line 335:
 
; в системном режиме, информация сохраняется в буфере, откуда перекачивается
 
; в системном режиме, информация сохраняется в буфере, откуда перекачивается
 
; в таблицу раскладки при выходе из системного режима.
 
; в таблицу раскладки при выходе из системного режима.
105430$:MOV (R5)+,R0 ; R0 = адрес новой таблицы
+
105430$:MOV     (R5)+,R0       ; R0 = адрес новой таблицы
BR 105502$
+
        BR     105502$
105434$:TST @#11054 ; Установлен системный режим ?
+
105434$:TST     @#11054         ; Установлен системный режим ?
BEQ 105476$ ; Нет
+
        BEQ     105476$         ; Нет
MOV #107310$-4,R2 ; R2 = адрес списка системных клавиш
+
        MOV     #107310$-4,R2   ; R2 = адрес списка системных клавиш
105446$:ADD #4,R2 ; Перейти к следущему адресу
+
105446$:ADD     #4,R2           ; Перейти к следущему адресу
MOV @R2,R3 ; R3 = адрес клавиши
+
        MOV     @R2,R3         ; R3 = адрес клавиши
BEQ 105476$ ; Конец списка системных клавиш
+
        BEQ     105476$         ; Конец списка системных клавиш
CMP R3,R1 ; Адреса совпадают ?
+
        CMP     R3,R1           ; Адреса совпадают ?
BNE 105446$ ; Нет
+
        BNE     105446$         ; Нет
SUB #107310$,R2 ; Получение адреса клавиши в буфере сохранения
+
        SUB     #107310$,R2     ; Получение адреса клавиши в буфере сохранения
ASR R2
+
        ASR     R2
MOV (R0)+,11056(R2) ; Занести код в буфер сохранения
+
        MOV     (R0)+,11056(R2) ; Занести код в буфер сохранения
BR 105502$
+
        BR     105502$
105476$:MOV (R0)+,7232(R1) ; Занести код в таблицу раскладки клавиатуры
+
105476$:MOV     (R0)+,7232(R1) ; Занести код в таблицу раскладки клавиатуры
105502$:MOV (R0)+,R1 ; R1 = адрес клавиши
+
105502$:MOV     (R0)+,R1       ; R1 = адрес клавиши
BNE 105434$ ; Еще не конец таблицы
+
        BNE     105434$         ; Еще не конец таблицы
RTS R5
+
        RTS     R5
 
; Корректирующие коды, использующиеся при вычислении адреса в таблице раскладки
 
; Корректирующие коды, использующиеся при вычислении адреса в таблице раскладки
105510$:.BYTE 5,12,17,24,31,36,43,50
+
105510$:.BYTE   5,12,17,24,31,36,43,50
  
 
; НАЧАЛЬНЫЕ ДАННЫЕ ДЛЯ ТАБЛИЦ РАСКЛАДКИ КЛАВИАТУРЫ
 
; НАЧАЛЬНЫЕ ДАННЫЕ ДЛЯ ТАБЛИЦ РАСКЛАДКИ КЛАВИАТУРЫ
Line 364: Line 365:
  
 
; Раскладка основного регистра
 
; Раскладка основного регистра
105520$:.BYTE 54,33,73,0,0,0,64,0,0,67,70,55,11,112,61,62,63,105,65,66
+
105520$:.BYTE   54,33,73,0,0,0,64,0,0,67,70,55,11,112,61,62,63,105,65,66
.BYTE 133,135,0,0,106,103,125,113,120,116,107,114,104,0,0,121
+
        .BYTE   133,135,0,0,106,103,125,113,120,116,107,114,104,0,0,121
.BYTE 131,127,101,111,122,117,102,100,0,0,0,136,123,115,40,124
+
        .BYTE   131,127,101,111,122,117,102,100,0,0,0,136,123,115,40,124
.BYTE 130,0,54,67,60,61,64,53,177,0,0,56,134,126,70,56,62,65,0
+
        .BYTE   130,0,54,67,60,61,64,53,177,0,0,56,134,126,70,56,62,65,0
.BYTE 0,15,0,137,110,132,71,15,63,66,14,12,57,72,55,60,71
+
        .BYTE   0,15,0,137,110,132,71,15,63,66,14,12,57,72,55,60,71
 
; - список регистровых клавиш
 
; - список регистровых клавиш
.BYTE 55,56,43,30,57,110,0
+
        .BYTE   55,56,43,30,57,110,0
 
; - строки символов
 
; - строки символов
.BYTE 107
+
        .BYTE   107
.ASCIZ <33><177>
+
        .ASCIZ <33><177>
.BYTE 123
+
        .BYTE   123
.ASCIZ <33>/~/
+
        .ASCIZ <33>/~/
.BYTE 4,0,5,0,6,0,10,0,11,0,0
+
        .BYTE   4,0,5,0,6,0,10,0,11,0,0
  
 
; Раскладка НР-регистра
 
; Раскладка НР-регистра
105702$:.BYTE 54,33,53,0,0,0,44,0,0,47,50,57,11,112,41,42,43,105,45,46
+
105702$:.BYTE   54,33,53,0,0,0,44,0,0,47,50,57,11,112,41,42,43,105,45,46
.BYTE 133,135,0,0,106,103,125,113,120,116,107,114,104,0,0,121
+
        .BYTE   133,135,0,0,106,103,125,113,120,116,107,114,104,0,0,121
.BYTE 131,127,101,111,122,117,102,100,0,0,0,136,123,115,40,124
+
        .BYTE   131,127,101,111,122,117,102,100,0,0,0,136,123,115,40,124
.BYTE 130,0,74,67,60,61,64,52,177,0,0,76,134,126,70,56,62,65,0
+
        .BYTE   130,0,74,67,60,61,64,52,177,0,0,76,134,126,70,56,62,65,0
.BYTE 0,12,0,137,110,132,71,15,63,66,14,12,77,52,75,60,51
+
        .BYTE   0,12,0,137,110,132,71,15,63,66,14,12,77,52,75,60,51
 
; - список регистровых клавиш
 
; - список регистровых клавиш
.BYTE 55,56,43,30,57,110,0
+
        .BYTE   55,56,43,30,57,110,0
 
; - строки символов
 
; - строки символов
.BYTE 107
+
        .BYTE   107
.ASCIZ <33><177>
+
        .ASCIZ <33><177>
.BYTE 123
+
        .BYTE   123
.ASCIZ <33>/~/
+
        .ASCIZ <33>/~/
.BYTE 4,0,5,0,6,0,10,0,11,0,0
+
        .BYTE   4,0,5,0,6,0,10,0,11,0,0
  
 
; Раскладка ГРАФ-регистра
 
; Раскладка ГРАФ-регистра
106064$:.BYTE 54,33,73,0,0,0,64,0,0,67,70,55,11,252,61,62,63,245,65,66
+
106064$:.BYTE   54,33,73,0,0,0,64,0,0,67,70,55,11,252,61,62,63,245,65,66
.BYTE 273,275,0,0,246,243,265,253,260,256,247,254,244,0,0,261
+
        .BYTE   273,275,0,0,246,243,265,253,260,256,247,254,244,0,0,261
.BYTE 271,267,241,251,262,257,242,240,0,0,0,276,263,255,40,264
+
        .BYTE   271,267,241,251,262,257,242,240,0,0,0,276,263,255,40,264
.BYTE 270,0,54,67,60,61,64,53,177,0,0,56,274,266,70,56,62,65,0
+
        .BYTE   270,0,54,67,60,61,64,53,177,0,0,56,274,266,70,56,62,65,0
.BYTE 0,0,0,277,250,272,71,15,63,66,14,12,57,72,55,60,71
+
        .BYTE   0,0,0,277,250,272,71,15,63,66,14,12,57,72,55,60,71
 
; - список регистровых клавиш
 
; - список регистровых клавиш
.BYTE 55,56,43,30,57,110,0
+
        .BYTE   55,56,43,30,57,110,0
 
; - строки символов
 
; - строки символов
.BYTE 66
+
        .BYTE   66
.ASCIZ <33>/D/
+
        .ASCIZ <33>/D/
.BYTE 76
+
        .BYTE   76
.ASCIZ <33>/C/
+
        .ASCIZ <33>/C/
.BYTE 112
+
        .BYTE   112
.ASCIZ <33>/A/
+
        .ASCIZ <33>/A/
.BYTE 77
+
        .BYTE   77
.ASCIZ <33>/B/
+
        .ASCIZ <33>/B/
.BYTE 111
+
        .BYTE   111
.ASCIZ <15><12>
+
        .ASCIZ <15><12>
.BYTE 4,0,5,0,6,0,10,0,11,0,0
+
        .BYTE   4,0,5,0,6,0,10,0,11,0,0
  
 
; Раскладка УПР-регистра
 
; Раскладка УПР-регистра
106262$:.BYTE 0,33,73,0,0,0,64,0,0,67,70,0,11,12,61,62,63,5,65,66,33,35
+
106262$:.BYTE   0,33,73,0,0,0,64,0,0,67,70,0,11,12,61,62,63,5,65,66,33,35
.BYTE 0,0,6,3,25,13,20,16,7,14,4,0,0,21,31,27,1,11,22,17,2,0,0,0,0
+
        .BYTE   0,0,6,3,25,13,20,16,7,14,4,0,0,21,31,27,1,11,22,17,2,0,0,0,0
.BYTE 36,23,15,40,24,30,0,54,67,60,61,64,0,177,0,0,56,34,26,70,56
+
        .BYTE   36,23,15,40,24,30,0,54,67,60,61,64,0,177,0,0,56,34,26,70,56
.BYTE 62,65,0,0,0,0,37,10,32,71,15,63,66,14,12,57,72,55,60,71
+
        .BYTE   62,65,0,0,0,0,37,10,32,71,15,63,66,14,12,57,72,55,60,71
 
; - список регистровых клавиш
 
; - список регистровых клавиш
.BYTE 55,56,43,30,57,110,123,107,0
+
        .BYTE   55,56,43,30,57,110,123,107,0
 
; - строки символов
 
; - строки символов
.BYTE 74
+
        .BYTE   74
.ASCIZ <33>/P/
+
        .ASCIZ <33>/P/
.BYTE 14
+
        .BYTE   14
.ASCIZ <33>/Q/
+
        .ASCIZ <33>/Q/
.BYTE 1
+
        .BYTE   1
.ASCIZ <33>/R/
+
        .ASCIZ <33>/R/
.BYTE 4,0,5,0,6,0,10,0,11,0,0
+
        .BYTE   4,0,5,0,6,0,10,0,11,0,0
  
 
; Раскладка ФИКС-регистра
 
; Раскладка ФИКС-регистра
106452$:.BYTE 54,33,73,0,0,0,64,0,0,67,70,55,11,112,61,62,63,105,65,66
+
106452$:.BYTE   54,33,73,0,0,0,64,0,0,67,70,55,11,112,61,62,63,105,65,66
.BYTE 133,135,0,0,106,103,125,113,120,116,107,114,104,0,0,121
+
        .BYTE   133,135,0,0,106,103,125,113,120,116,107,114,104,0,0,121
.BYTE 131,127,101,111,122,117,102,100,0,0,0,136,123,115,40,124
+
        .BYTE   131,127,101,111,122,117,102,100,0,0,0,136,123,115,40,124
.BYTE 130,0,54,67,60,61,64,53,177,0,0,56,134,126,70,56,62,65,0
+
        .BYTE   130,0,54,67,60,61,64,53,177,0,0,56,134,126,70,56,62,65,0
.BYTE 0,0,0,137,110,132,71,15,63,66,14,12,57,72,55,60,71
+
        .BYTE   0,0,0,137,110,132,71,15,63,66,14,12,57,72,55,60,71
 
; - список регистровых клавиш
 
; - список регистровых клавиш
.BYTE 55,56,43,30,57,110,0
+
        .BYTE   55,56,43,30,57,110,0
 
; - строки символов
 
; - строки символов
.BYTE 107
+
        .BYTE   107
.ASCIZ <33><177>
+
        .ASCIZ <33><177>
.BYTE 123
+
        .BYTE   123
.ASCIZ <33>/~/
+
        .ASCIZ <33>/~/
.BYTE 4,0,5,0,6,0,10,0,11,0,0
+
        .BYTE   4,0,5,0,6,0,10,0,11,0,0
  
 
; Данные для пользовательского режима (VT-52)
 
; Данные для пользовательского режима (VT-52)
106634$:.WORD 224,106752$,176,106755$,154,106760$,174,106763$
+
106634$:.WORD   224,106752$,176,106755$,154,106760$,174,106763$
.WORD 504,106752$,456,106755$,434,106760$,454,106763$
+
        .WORD   504,106752$,456,106755$,434,106760$,454,106763$
.WORD 1244,106752$,1216,106771$,1174,106760$,1214,106766$
+
        .WORD   1244,106752$,1216,106771$,1174,106760$,1214,106766$
.WORD 1524,106752$,1476,106755$,1454,106760$,1474,106763$
+
        .WORD   1524,106752$,1476,106755$,1454,106760$,1474,106763$
.WORD 244,106774$,524,106771$,1242,106777$,0
+
        .WORD   244,106774$,524,106771$,1242,106777$,0
106752$:.ASCIZ <33>/A/
+
106752$:.ASCIZ <33>/A/
106755$:.ASCIZ <33>/B/
+
106755$:.ASCIZ <33>/B/
106760$:.ASCIZ <33>/D/
+
106760$:.ASCIZ <33>/D/
106763$:.ASCIZ <33>/C/
+
106763$:.ASCIZ <33>/C/
106766$:.ASCIZ <33>/K/
+
106766$:.ASCIZ <33>/K/
106771$:.ASCIZ <33>/J/
+
106771$:.ASCIZ <33>/J/
106774$:.ASCIZ <33>/H/
+
106774$:.ASCIZ <33>/H/
106777$:.ASCIZ <15><12>
+
106777$:.ASCIZ <15><12>
 
; Данные для пользовательского режима (15ИЭ-00-013)
 
; Данные для пользовательского режима (15ИЭ-00-013)
107002$:.WORD 224,34,176,35,154,32,174,31,504,22,456,26,434,24,454,23
+
107002$:.WORD   224,34,176,35,154,32,174,31,504,22,456,26,434,24,454,23
.WORD 1244,34,1216,37,1174,32,1214,13,1524,34,1476,35,1454,32,1474,31
+
        .WORD   1244,34,1216,37,1174,32,1214,13,1524,34,1476,35,1454,32,1474,31
.WORD 244,10,524,14,1242,25,0
+
        .WORD   244,10,524,14,1242,25,0
 
; Данные для ДКЛ-режима
 
; Данные для ДКЛ-режима
107120$:.WORD 236,107216$,210,107222$,162,107226$,164,107232$
+
107120$:.WORD   236,107216$,210,107222$,162,107226$,164,107232$
.WORD 212,107236$,240,107242$,166,107246$,214,107252$
+
        .WORD   212,107236$,240,107242$,166,107246$,214,107252$
.WORD 242,107256$,160,107262$,206,107266$,234,107272$
+
        .WORD   242,107256$,160,107262$,206,107266$,234,107272$
.WORD 170,107276$,30,107301$,2,107304$,0
+
        .WORD   170,107276$,30,107301$,2,107304$,0
107216$:.ASCIZ <33>/?M/
+
107216$:.ASCIZ <33>/?M/
107222$:.ASCIZ <33>/?n/
+
107222$:.ASCIZ <33>/?n/
107226$:.ASCIZ <33>/?p/
+
107226$:.ASCIZ <33>/?p/
107232$:.ASCIZ <33>/?q/
+
107232$:.ASCIZ <33>/?q/
107236$:.ASCIZ <33>/?r/
+
107236$:.ASCIZ <33>/?r/
107242$:.ASCIZ <33>/?s/
+
107242$:.ASCIZ <33>/?s/
107246$:.ASCIZ <33>/?t/
+
107246$:.ASCIZ <33>/?t/
107252$:.ASCIZ <33>/?u/
+
107252$:.ASCIZ <33>/?u/
107256$:.ASCIZ <33>/?v/
+
107256$:.ASCIZ <33>/?v/
107262$:.ASCIZ <33>/?w/
+
107262$:.ASCIZ <33>/?w/
107266$:.ASCIZ <33>/?x/
+
107266$:.ASCIZ <33>/?x/
107272$:.ASCIZ <33>/?y/
+
107272$:.ASCIZ <33>/?y/
107276$:.ASCIZ <33>/P/
+
107276$:.ASCIZ <33>/P/
107301$:.ASCIZ <33>/Q/
+
107301$:.ASCIZ <33>/Q/
107304$:.ASCIZ <33>/R/
+
107304$:.ASCIZ <33>/R/
.EVEN
+
        .EVEN
 
; Данные для системного режима
 
; Данные для системного режима
107310$:.WORD 162,60,164,61,212,62,240,63,166,64
+
107310$:.WORD   162,60,164,61,212,62,240,63,166,64
.WORD 214,65,242,66,160,67,206,70,234,71
+
        .WORD   214,65,242,66,160,67,206,70,234,71
.WORD 222,107462$,236,107464$,246,107466$,216,107471$
+
        .WORD   222,107462$,236,107464$,246,107466$,216,107471$
.WORD 224,107474$,176,107477$,154,107502$,174,107505$
+
        .WORD   224,107474$,176,107477$,154,107502$,174,107505$
.WORD 504,107510$,456,107513$,434,107516$,454,107521$
+
        .WORD   504,107510$,456,107513$,434,107516$,454,107521$
.WORD 146,107460$,172,107456$,244,14,0
+
        .WORD   146,107460$,172,107456$,244,14,0
107456$:.BYTE 177,0
+
107456$:.BYTE   177,0
107460$:.BYTE 40,0
+
107460$:.BYTE   40,0
107462$:.BYTE 15,0
+
107462$:.BYTE   15,0
107464$:.BYTE 15,0
+
107464$:.BYTE   15,0
107466$:.ASCIZ <33>/~/
+
107466$:.ASCIZ <33>/~/
107471$:.ASCIZ <33><177>
+
107471$:.ASCIZ <33><177>
107474$:.ASCIZ <33><200>
+
107474$:.ASCIZ <33><200>
107477$:.ASCIZ <33><201>
+
107477$:.ASCIZ <33><201>
107502$:.ASCIZ <33><202>
+
107502$:.ASCIZ <33><202>
107505$:.ASCIZ <33><203>
+
107505$:.ASCIZ <33><203>
107510$:.ASCIZ <33><204>
+
107510$:.ASCIZ <33><204>
107513$:.ASCIZ <33><205>
+
107513$:.ASCIZ <33><205>
107516$:.ASCIZ <33><206>
+
107516$:.ASCIZ <33><206>
107521$:.ASCIZ <33><207>
+
107521$:.ASCIZ <33><207>
 
; Надписи для верхней информационной строки
 
; Надписи для верхней информационной строки
107524$:.ASCIZ <0>/    /
+
107524$:.ASCIZ <0>/    /
107533$:.ASCIZ <0>/  УСТ/
+
107533$:.ASCIZ <0>/  УСТ/
107542$:.ASCIZ <5>/    /
+
107542$:.ASCIZ <5>/    /
107551$:.ASCIZ <5>/ ПМ  /
+
107551$:.ASCIZ <5>/ ПМ  /
107560$:.ASCIZ <5>/ ЦМ  /
+
107560$:.ASCIZ <5>/ ЦМ  /
107567$:.ASCIZ <12>/    /
+
107567$:.ASCIZ <12>/    /
107576$:.ASCIZ <12>/ ДКЛ /
+
107576$:.ASCIZ <12>/ ДКЛ /
107605$:.ASCIZ <17>/    /
+
107605$:.ASCIZ <17>/    /
107614$:.ASCIZ <17>/ ИНВ /
+
107614$:.ASCIZ <17>/ ИНВ /
107623$:.ASCIZ <17>/ПОДЧ /
+
107623$:.ASCIZ <17>/ПОДЧ /
107632$:.ASCIZ <24>/    /
+
107632$:.ASCIZ <24>/    /
107641$:.ASCIZ <24>/ ИСУ /
+
107641$:.ASCIZ <24>/ ИСУ /
107650$:.ASCIZ <31>/    /
+
107650$:.ASCIZ <31>/    /
107657$:.ASCIZ <31>/ НР  /
+
107657$:.ASCIZ <31>/ НР  /
107666$:.ASCIZ <31>/ СУ  /
+
107666$:.ASCIZ <31>/ СУ  /
107675$:.ASCIZ <31>/ГРАФ /
+
107675$:.ASCIZ <31>/ГРАФ /
107704$:.ASCIZ <31>/ФИКС /
+
107704$:.ASCIZ <31>/ФИКС /
107713$:.ASCIZ <36>/ЗАГЛ /
+
107713$:.ASCIZ <36>/ЗАГЛ /
107722$:.ASCIZ <36>/СТР  /
+
107722$:.ASCIZ <36>/СТР  /
107731$:.ASCIZ <43>/РУС/
+
107731$:.ASCIZ <43>/РУС/
107736$:.ASCIZ <43>/ЛАТ/
+
107736$:.ASCIZ <43>/ЛАТ/
.EVEN
+
        .EVEN
.ENDT
 
 
</pre>
 
</pre>

Latest revision as of 07:34, 13 January 2008


; *********************************************************
; *                                                       *
; *                  ДРАЙВЕР КЛАВИАТУРЫ                   *
; *                                                       *
; *                Адреса 103554 - 107743                 *
; *                                                       *
; *********************************************************

; П/п начальной инициализации
103554$:JSR     R5,173730$      ; Очистка ОЗУ
        .WORD   7176,1762       ; Начальный адрес - 7176, число слов - 1762
103564$:TST     @#177702        ; Сбросить готовность рег.сост. клавиатуры
        MOV     #175412$,@#300  ; Вектор прерываний от клавиатуры
        MOV     #200,@#302
        MOV     #100,@#177700   ; Разрешить прерывания от клавиатуры
        MOV     #175540$,@#324  ; Вектор прерываний от канала 0 (источник)
        MOV     #200,@#326
        BIS     #1,@#177076     ; Разрешить прерывания от канала 0 (источник)
        CALL    104064$         ; Настройка начальных адресов буферов
        MOV     #11140,@#13140  ; Нач. адрес буфера клавиш К1 - К25
        MOV     #7234,@#7214    ; Текущая таблица - табл. основного регистра
        MOV     #7234,@#7216
        MOVB    #40,@#7221      ; Заглавные буквы
        MOVB    #16,@#7222      ; Латинский регистр
        MOVB    #17,@#7223
; Заполнение таблиц раскладки клавиатуры
        MOV     #105520$,R1     ; R1 = нач. адрес данных для таблиц раскладки
        MOV     #7234,R0        ; R0 = нач. адрес таблиц раскладки
        MOV     #5,R4           ; R4 = число таблиц раскладки
103720$:MOV     #130,R2         ; R2 = число элементов таблицы
        MOV     R0,R3           ; R3 = адрес текущей заполняемой таблицы
103726$:MOVB    (R1)+,(R3)+     ; Пересылка
        CLRB    (R3)+
        SOB     R2,103726$
        MOV     #400,R2         ; R2 = номер первой регистровой клавиши
103740$:MOVB    (R1)+,R3
        BEQ     103762$         ; Это строка или конец данных для тек. табл.?
        BMI     103756$         ; Переход к следующей регистровой комбинации ?
        DEC     R3              ; Регистровая клавиша (в R3 - смещение)
        ASL     R3
        ADD     R0,R3
        MOV     R2,@R3
103756$:INC     R2
        BR      103740$
103762$:MOVB    (R1)+,R3
        BEQ     104004$         ; Это конец таблицы ?
        DEC     R3              ; Строка (адрес в R1,смещение в табл. в R3)
        ASL     R3
        ADD     R0,R3
        MOV     R1,@R3
103776$:TSTB    (R1)+           ; Прогон строки
        BNE     103776$
        BR      103762$
104004$:ADD     #260,R0         ; Переход к следующей таблице
        SOB     R4,103720$
        CALL    113670$         ; Установить систему команд VT-52
        MOVB    #2,@#7226       ; Интервал автоповтора
        RETURN
; П/п ПАУЗА (ожидание нажатия любой клавиши)
104026$:CLR     @#177700        ; Запретить прерывания от клавиатуры
104032$:TSTB    @#177700        ; Ожидание нажатия или отжатия клавиши
        BPL     104032$
        TSTB    @#177702        ; Клавиша отжата ?
        BMI     104032$         ; Да
        MOV     #100,@#177700   ; Разрешить прерывания от клавиатуры
104054$:JSR     R5,173730$      ; Очистка буферов клавиатуры
        .WORD   2240,14
; Установка указателей на начало буферов
104064$:MOV     #2260,@#7176
        MOV     #2260,@#7200
        MOV     #2240,@#7202
        MOV     #2240,@#7204
        MOV     #2200,@#7206
        MOV     #2200,@#7210
        RETURN
; П/п обслуживания запросов EMT 22 и EMT 24 (ввод символа с ожиданием)
104132$:TRAP    2               ; Считывание символа с буфера в регистр R0
        ADD     @#7230,PC       ; Символ есть в буфере ?
        BR      104152$         ; Да
        CLR     @#7230
        TRAP    0               ; Запуск диспетчера процессов
        BR      104132$
104152$:MOV     R0,2(SP)
        RETURN
; П/п заноса ASCII-символов и адресов строк в буфер
104160$:MOV     R0,@7210        ; Занести символ в буфер
        ADD     #2,@#7210       ; Продвинуть указатель
        BIC     #40,@#7210      ; Корректировка указателя (циклический буфер)
        ADD     @#7230,PC
        RETURN
104206$:TRAP    2
        RETURN

; *** ОСНОВНАЯ П/П ОБСЛУЖИВАНИЯ КЛАВИАТУРЫ ***

; Точка выхода из п/п обслуживания клавиатуры
104212$:CLR     @#7060          ; Очистить флаг вызова п/п
        CLRB    @#7227          ; Очистить ячейку значения автоповтора
104222$:ADD     @#7230,PC
        RETURN
104230$:TRAP    2
        RETURN
104234$:TSTB    @7202           ; Есть скэн-коды в буфере автоповтора ?
        BEQ     104212$         ; Нет
        TSTB    @#7227          ; Истекло время автоповтора ?
        BNE     104222$         ; Нет
        MOV     @#7202,R3       ; R3 = указатель на буфер автоповтора(чтение)
104254$:MOVB    (R3)+,R0        ; Прочесть очередной скэн-код
        BNE     104336$         ; Он существует
104260$:BIC     #20,R3          ; Подправить значение указателя
        CMP     R3,@#7204       ; Буфер просмотрен до конца ?
        BNE     104254$         ; Нет
        MOVB    @#7226,@#7227
        DEC     @#7060
        BR      104222$
; Точка входа в п/п обслуживания клавиатуры из диспетчера процессов
104306$:MOV     @#7176,R1       ; R1 = указатель на буфер скэн-кодов
        MOVB    @R1,R0          ; Прочесть скэн-код
        BEQ     104234$         ; Скэн-кода нет
        DEC     @#7060          ; Уменьшить счетчик (флаг вызова)
        CLRB    (R1)+           ; Вычеркнуть скэн-код из буфера
        BIC     #10,R1          ; Подправить значение указателя
        MOV     R1,@#7176
        CLR     R3              ; В данном случае R3 является индикатором
                                ; того, что скэн-код был прочитан из основ-
                                ; ного буфера (R3=0) или из буфера авто-
                                ; повтора (R3<>0).
104336$:MOV     R0,R2           ; R2 = скэн-код
        BMI     104516$         ; Это скэн-код отжатия
        ASHC    #74,R0          ; Извлечение ASCII-кода
        MOVB    105510$(R0),R1
        MOV     R2,R0
        SUB     R1,R0
        ASL     R0
        ADD     @#7214,R0
        MOV     @R0,R0
        MOV     R0,R1
        SWAB    R1
        BEQ     104410$         ; Это одиночный ASCII-код
        ASRB    R1
        BNE     104434$         ; Это адрес ASCIZ-строки
        MOVB    R0,R0           ; Переход на обслуживание регистровых клавиш
        ASL     R0
        JMP     @104714$(R0)
104410$:TST     @#7232          ; Разрешена передача одиночных символов ?
        BNE     104510$         ; Нет
        TSTB    R0              ; Символ в диапазоне 128-255 ?
        BMI     104434$         ; Да
        CMP     R0,#100         ; Это символы @,A-Z,[,\,],_ ?
        BLO     104434$         ; Нет
        BISB    @#7220,R0       ; Установка заглавные/строчные буквы
104434$:TST     R3              ; Это символ из буфера автоповтора ?
        BNE     104472$         ; Да
        TSTB    @7202           ; Буфер автоповтора пуст ?
        BNE     104454$         ; Нет
        MOVB    #31,@#7227      ; Задать время между нажатием и автоповтором
104454$:MOVB    R2,@7204        ; Положить скэн-код в буфер автоповтора
        INC     @#7204          ; Подправить значение указателя
        BIC     #20,@#7204
104472$:MOV     @#7210,R1       ; R1 = указатель на буфер ASCII-символов
        MOV     R0,(R1)+        ; Положить символ(адрес строки) в буфер
        BIC     #40,R1
        MOV     R1,@#7210
104510$:TST     R3              ; Это был символ из буфера автоповтора ?
        BNE     104260$         ; Да
104514$:BR      104306$
104516$:MOV     @#7212,R0       ; R0 = ожидаемый код отжатия рег. клавиши
        BEQ     104614$         ; Регистровая клавиша не была нажата
        CMPB    R2,R0           ; Коды отжатия совпадают ?
        BEQ     104540$         ; Да
104530$:SWAB    R0
        BEQ     104530$
        CMPB    R2,R0
        BNE     104614$
; Обработка кода отжатия регистровой клавиши
104540$:CLRB    R0              ; Очистить байт кода отжатия
        SWAB    R0
        MOV     R0,@#7212
        CLR     R0
        CMPB    R2,#205         ; Была отжата клавиша НР (Shift) ?
        BEQ     104574$         ; Да
        MOVB    @#7224,R0       ; R0 = ASCII-код, посылаемый при отжатии АЛФ
        BEQ     104600$         ; Его нет
        CLRB    @#7224
        BR      104600$
104574$:SWAB    @#7220          ; Переменить состояние заглавные/строчные
104600$:MOV     @#7216,@#7214   ; Восстановить пред. табл. раскл. клавиатуры
        TST     R0              ; Есть данные для передачи при отжатии АЛФ ?
        BNE     104472$         ; Да
        BR      104306$
; Обработка кода отжатия алфавитно-цифровой клавиши
104614$:BIC     #177760,R2      ; Оставить биты кода отжатия
        MOV     @#7202,R1       ; R1 = указатель на буфер автоповтора
104624$:MOVB    (R1)+,R0        ; Прочесть скэн-код из буфера автоповтора
        BEQ     104644$         ; Он отсутствует
        BIC     #177760,R0      ; Оставить биты кода отжатия
        CMP     R0,R2           ; Эти коды совпадают ?
        BEQ     104700$         ; Да
        MOV     R2,R3
        BEQ     104306$
104644$:BIC     #20,R1
        TST     R3
        BNE     104660$
        MOV     R1,@#7202
104660$:CMP     R1,@#7204       ; Буфер просмотрен до конца ?
        BNE     104624$         ; Нет
        MOVB    #2,@#7226       ; Установить нормальную скорость автоповтора
104674$:JMP     104306$
104700$:CLRB    -1(R1)          ; Выбросить скэн-код из буфера автоповтора
        CLR     R2              ; R2 = 0(признак того, что скэн-код обнаружен)
        TST     R3
        BNE     104674$
        BR      104644$
; Адреса п/п обслуживания регистровых комбинаций
104714$:.WORD   104766$         ; Нажатие НР (Shift)
        .WORD   105044$         ; Нажатие АЛФ
        .WORD   105116$         ; Нажатие ГРАФ (Graph)
        .WORD   105150$         ; Нажатие УПР (Ctrl)
        .WORD   105160$         ; Нажатие ФИКС (Lock)
        .WORD   104734$         ; Установка режимов (УСТ)
        .WORD   105234$         ; Режим ИСУ (УПР+ПОМ)
        .WORD   104746$         ; Печать экрана (УПР+ИСП)
; П/п обслуживания нажатия УСТ
104734$:CLR     @#7042          ; Адресовать ASCII-коды клавиатуры запросу EMT
        INC     @#7070          ; Установить флаг вызова меню УСТАНОВКА
        BR      104514$
; П/п обслуживания нажатия УПР+ИСП (печать экрана)
104746$:CALL    135704$         ; Печать экрана
        MOV     @#7216,@#7214
        CLR     @#7212
        BR      104514$
; П/п обслуживания нажатия НР
104766$:TSTB    @7202           ; Нажата какая-нибудь алф.-циф. клавиша ?
        BEQ     105004$         ; Нет
        MOV     #401,7226       ; Установить повышенную скорость автоповтора
        BR      104514$
105004$:MOV     #205,R1         ; R1 = код отжатия НР
        MOV     #7514,@#7214    ; Текущая табл.-таблица нижнего регистра
105016$:SWAB    @#7220          ; Переключить режим заглавные/строчные буквы
105022$:SWAB    @#7212
        MOVB    R1,@#7212
        CMPB    @#7213,#207     ; Была нажата клавиша ФИКС ?
        BEQ     105202$         ; Да
        BR      104514$
; П/п обслуживания нажатия АЛФ
105044$:MOVB    @#7222,R0       ; R0 = 16(8) или 17(8)
        MOVB    @#7223,@#7224
        SWAB    @#7212
        MOVB    #206,@#7212     ; Код отжатия клавиши АЛФ
        CMPB    @#7213,#207     ; Была нажата клавиша ФИКС ?
        BNE     105112$         ; Нет
        CLRB    @#7224          ; При отжатии АЛФ не передавать ASCII-кода
        MOV     @#7216,@#7214
105112$:JMP     104472$
; П/п обслуживания нажатия ГРАФ
105116$:MOV     #7774,@#7214    ; Текущая табл.-таблица ГРАФ-регистра
105124$:MOV     #206,R1         ; R1 = код отжатия ГРАФ и УПР
105130$:CMP     @#7214,@#7216   ; Адрес текущей табл. равен адресу предыдущей ?
        BNE     105022$         ; Нет
        MOV     #7234,@#7214    ; Текущая таблица-таблица основного регистра
        BR      105022$
; П/п обслуживания нажатия УПР
105150$:MOV     #10254,@#7214   ; Текущая таблица-таблица УПР-регистра
        BR      105124$
; П/п обслуживания нажатия ФИКС
105160$:MOV     #207,R1         ; R1 = код отжатия ФИКС
        TST     @#7212          ; Нажата регистровая клавиша ?
        BNE     105202$         ; Да
        MOV     #10534,@#7214   ; Текущая таблица-таблица ФИКС-регистра
        BR      105130$
105202$:CMP     @#7214,#7514    ; Нажата НР ?
        BEQ     105016$         ; Да
        TSTB    @#7224          ; Нажата АЛФ ?
        BEQ     105224$         ; Нет
        CLRB    @#7224          ; При отжатии АЛФ не передавать ASCII-кода
105224$:MOV     @#7214,@#7216
        BR      105022$
; П/п обслуживания нажатия УПР+ПОМ (ИСУ on/off)
105234$:COMB    @#22552         ; Изменить режим ИСУ/не ИСУ
        BEQ     105250$         ; Режим ИСУ выключен
        EMT     52              ; Высветить надпись "ИСУ"
        .WORD   107641$
        BR      105254$
105250$:EMT     52              ; Стереть надпись "ИСУ"
        .WORD   107632$
105254$:JMP     104306$
; П/п обработки управляющего символа Ctrl+N (переключение на русский алфавит)
105260$:MOV     @#22556,R0      ; R0 = текущее состояние алфавита
        MOV     #200,@#22556    ; Установить русский алфавит
        MOV     #16*400+17,@#7222;Последовательность посылки кодов
                                ; при нажатии и отжатии АЛФ
        EMT     52              ; Высветить надпись "РУС"
        .WORD   107731$
        BR      105330$
; П/п обработки управляющего символа Ctrl+O (переключение на латинский алфавит)
105306$:MOV     @#22556,R0
        CLR     @#22556         ; Установить латинский алфавит
        MOV     #17*400+16,@#7222
        EMT     52              ; Высветить надпись "ЛАТ"
        .WORD   107736$
105330$:CMP     R0,@#22556      ; Предыдущий и текущий режимы алфавита равны ?
        BEQ     105342$         ; Да
        SWAB    @#7220          ; Переменить верхний/нижний регистр
105342$:RETURN
105344$:RETURN
; П/п устанавливает специальные режимы клавиатуры (системный, ДКЛ)
105346$:MOV     (R5)+,R0        ; R0 = адрес новых кодов клавиатуры
        MOV     (R5)+,R1        ; R1 = адрес буфера сохранения
        TST     @R1             ; Режим уже был установлен ?
        BNE     105376$         ; Да
        INC     (R1)+           ; Установить флаг спецрежима
        BR      105372$
105362$:MOV     7232(R2),(R1)+  ; Сохранить значение клавиши
        MOV     (R0)+,7232(R2)  ; Занести новое значение
105372$:MOV     (R0)+,R2        ; R2 = адрес клавиши
        BNE     105362$         ; Еще не конец таблицы
105376$:RTS     R5
; П/п восстанавливает предыдущий режим клавиатуры
105400$:MOV     (R5)+,R0        ; R0 = адрес новых кодов клавиатуры
        MOV     (R5)+,R1        ; R1 = адрес буфера сохранения
        TST     @R1             ; Спецрежим установлен ?
        BEQ     105426$         ; Нет
        CLR     (R1)+           ; Сбросить флаг спецрежима
        BR      105422$
105414$:MOV     (R1)+,7232(R2)  ; Восстановить значение клавиши
        TST     (R0)+
105422$:MOV     (R0)+,R2        ; R2 = адрес клавиши
        BNE     105414$         ; Еще не конец таблицы
105426$:RTS     R5
; П/п переключения клавиатуры в новый режим. Если текущий режим является
; не системным, то переключение производится сразу, иначе (системный режим)
; производится проверка адресов клавиш и для клавиш, задействованных
; в системном режиме, информация сохраняется в буфере, откуда перекачивается
; в таблицу раскладки при выходе из системного режима.
105430$:MOV     (R5)+,R0        ; R0 = адрес новой таблицы
        BR      105502$
105434$:TST     @#11054         ; Установлен системный режим ?
        BEQ     105476$         ; Нет
        MOV     #107310$-4,R2   ; R2 = адрес списка системных клавиш
105446$:ADD     #4,R2           ; Перейти к следущему адресу
        MOV     @R2,R3          ; R3 = адрес клавиши
        BEQ     105476$         ; Конец списка системных клавиш
        CMP     R3,R1           ; Адреса совпадают ?
        BNE     105446$         ; Нет
        SUB     #107310$,R2     ; Получение адреса клавиши в буфере сохранения
        ASR     R2
        MOV     (R0)+,11056(R2) ; Занести код в буфер сохранения
        BR      105502$
105476$:MOV     (R0)+,7232(R1)  ; Занести код в таблицу раскладки клавиатуры
105502$:MOV     (R0)+,R1        ; R1 = адрес клавиши
        BNE     105434$         ; Еще не конец таблицы
        RTS     R5
; Корректирующие коды, использующиеся при вычислении адреса в таблице раскладки
105510$:.BYTE   5,12,17,24,31,36,43,50

; НАЧАЛЬНЫЕ ДАННЫЕ ДЛЯ ТАБЛИЦ РАСКЛАДКИ КЛАВИАТУРЫ
; Структура :
; первые 88 байт - ASCII-коды для клавиш
; далее - смещения для регистровых клавиш (конец - байт 0)
; строки символов : - смещение в таблице (байт 0 - конец списка)
;                   - ASCIZ-строка
; байт 0 - конец описания раскладки

; Раскладка основного регистра
105520$:.BYTE   54,33,73,0,0,0,64,0,0,67,70,55,11,112,61,62,63,105,65,66
        .BYTE   133,135,0,0,106,103,125,113,120,116,107,114,104,0,0,121
        .BYTE   131,127,101,111,122,117,102,100,0,0,0,136,123,115,40,124
        .BYTE   130,0,54,67,60,61,64,53,177,0,0,56,134,126,70,56,62,65,0
        .BYTE   0,15,0,137,110,132,71,15,63,66,14,12,57,72,55,60,71
; - список регистровых клавиш
        .BYTE   55,56,43,30,57,110,0
; - строки символов
        .BYTE   107
        .ASCIZ  <33><177>
        .BYTE   123
        .ASCIZ  <33>/~/
        .BYTE   4,0,5,0,6,0,10,0,11,0,0

; Раскладка НР-регистра
105702$:.BYTE   54,33,53,0,0,0,44,0,0,47,50,57,11,112,41,42,43,105,45,46
        .BYTE   133,135,0,0,106,103,125,113,120,116,107,114,104,0,0,121
        .BYTE   131,127,101,111,122,117,102,100,0,0,0,136,123,115,40,124
        .BYTE   130,0,74,67,60,61,64,52,177,0,0,76,134,126,70,56,62,65,0
        .BYTE   0,12,0,137,110,132,71,15,63,66,14,12,77,52,75,60,51
; - список регистровых клавиш
        .BYTE   55,56,43,30,57,110,0
; - строки символов
        .BYTE   107
        .ASCIZ  <33><177>
        .BYTE   123
        .ASCIZ  <33>/~/
        .BYTE   4,0,5,0,6,0,10,0,11,0,0

; Раскладка ГРАФ-регистра
106064$:.BYTE   54,33,73,0,0,0,64,0,0,67,70,55,11,252,61,62,63,245,65,66
        .BYTE   273,275,0,0,246,243,265,253,260,256,247,254,244,0,0,261
        .BYTE   271,267,241,251,262,257,242,240,0,0,0,276,263,255,40,264
        .BYTE   270,0,54,67,60,61,64,53,177,0,0,56,274,266,70,56,62,65,0
        .BYTE   0,0,0,277,250,272,71,15,63,66,14,12,57,72,55,60,71
; - список регистровых клавиш
        .BYTE   55,56,43,30,57,110,0
; - строки символов
        .BYTE   66
        .ASCIZ  <33>/D/
        .BYTE   76
        .ASCIZ  <33>/C/
        .BYTE   112
        .ASCIZ  <33>/A/
        .BYTE   77
        .ASCIZ  <33>/B/
        .BYTE   111
        .ASCIZ  <15><12>
        .BYTE   4,0,5,0,6,0,10,0,11,0,0

; Раскладка УПР-регистра
106262$:.BYTE   0,33,73,0,0,0,64,0,0,67,70,0,11,12,61,62,63,5,65,66,33,35
        .BYTE   0,0,6,3,25,13,20,16,7,14,4,0,0,21,31,27,1,11,22,17,2,0,0,0,0
        .BYTE   36,23,15,40,24,30,0,54,67,60,61,64,0,177,0,0,56,34,26,70,56
        .BYTE   62,65,0,0,0,0,37,10,32,71,15,63,66,14,12,57,72,55,60,71
; - список регистровых клавиш
        .BYTE   55,56,43,30,57,110,123,107,0
; - строки символов
        .BYTE   74
        .ASCIZ  <33>/P/
        .BYTE   14
        .ASCIZ  <33>/Q/
        .BYTE   1
        .ASCIZ  <33>/R/
        .BYTE   4,0,5,0,6,0,10,0,11,0,0

; Раскладка ФИКС-регистра
106452$:.BYTE   54,33,73,0,0,0,64,0,0,67,70,55,11,112,61,62,63,105,65,66
        .BYTE   133,135,0,0,106,103,125,113,120,116,107,114,104,0,0,121
        .BYTE   131,127,101,111,122,117,102,100,0,0,0,136,123,115,40,124
        .BYTE   130,0,54,67,60,61,64,53,177,0,0,56,134,126,70,56,62,65,0
        .BYTE   0,0,0,137,110,132,71,15,63,66,14,12,57,72,55,60,71
; - список регистровых клавиш
        .BYTE   55,56,43,30,57,110,0
; - строки символов
        .BYTE   107
        .ASCIZ  <33><177>
        .BYTE   123
        .ASCIZ  <33>/~/
        .BYTE   4,0,5,0,6,0,10,0,11,0,0

; Данные для пользовательского режима (VT-52)
106634$:.WORD   224,106752$,176,106755$,154,106760$,174,106763$
        .WORD   504,106752$,456,106755$,434,106760$,454,106763$
        .WORD   1244,106752$,1216,106771$,1174,106760$,1214,106766$
        .WORD   1524,106752$,1476,106755$,1454,106760$,1474,106763$
        .WORD   244,106774$,524,106771$,1242,106777$,0
106752$:.ASCIZ  <33>/A/
106755$:.ASCIZ  <33>/B/
106760$:.ASCIZ  <33>/D/
106763$:.ASCIZ  <33>/C/
106766$:.ASCIZ  <33>/K/
106771$:.ASCIZ  <33>/J/
106774$:.ASCIZ  <33>/H/
106777$:.ASCIZ  <15><12>
; Данные для пользовательского режима (15ИЭ-00-013)
107002$:.WORD   224,34,176,35,154,32,174,31,504,22,456,26,434,24,454,23
        .WORD   1244,34,1216,37,1174,32,1214,13,1524,34,1476,35,1454,32,1474,31
        .WORD   244,10,524,14,1242,25,0
; Данные для ДКЛ-режима
107120$:.WORD   236,107216$,210,107222$,162,107226$,164,107232$
        .WORD   212,107236$,240,107242$,166,107246$,214,107252$
        .WORD   242,107256$,160,107262$,206,107266$,234,107272$
        .WORD   170,107276$,30,107301$,2,107304$,0
107216$:.ASCIZ  <33>/?M/
107222$:.ASCIZ  <33>/?n/
107226$:.ASCIZ  <33>/?p/
107232$:.ASCIZ  <33>/?q/
107236$:.ASCIZ  <33>/?r/
107242$:.ASCIZ  <33>/?s/
107246$:.ASCIZ  <33>/?t/
107252$:.ASCIZ  <33>/?u/
107256$:.ASCIZ  <33>/?v/
107262$:.ASCIZ  <33>/?w/
107266$:.ASCIZ  <33>/?x/
107272$:.ASCIZ  <33>/?y/
107276$:.ASCIZ  <33>/P/
107301$:.ASCIZ  <33>/Q/
107304$:.ASCIZ  <33>/R/
        .EVEN
; Данные для системного режима
107310$:.WORD   162,60,164,61,212,62,240,63,166,64
        .WORD   214,65,242,66,160,67,206,70,234,71
        .WORD   222,107462$,236,107464$,246,107466$,216,107471$
        .WORD   224,107474$,176,107477$,154,107502$,174,107505$
        .WORD   504,107510$,456,107513$,434,107516$,454,107521$
        .WORD   146,107460$,172,107456$,244,14,0
107456$:.BYTE   177,0
107460$:.BYTE   40,0
107462$:.BYTE   15,0
107464$:.BYTE   15,0
107466$:.ASCIZ  <33>/~/
107471$:.ASCIZ  <33><177>
107474$:.ASCIZ  <33><200>
107477$:.ASCIZ  <33><201>
107502$:.ASCIZ  <33><202>
107505$:.ASCIZ  <33><203>
107510$:.ASCIZ  <33><204>
107513$:.ASCIZ  <33><205>
107516$:.ASCIZ  <33><206>
107521$:.ASCIZ  <33><207>
; Надписи для верхней информационной строки
107524$:.ASCIZ  <0>/     /
107533$:.ASCIZ  <0>/  УСТ/
107542$:.ASCIZ  <5>/     /
107551$:.ASCIZ  <5>/ ПМ  /
107560$:.ASCIZ  <5>/ ЦМ  /
107567$:.ASCIZ  <12>/     /
107576$:.ASCIZ  <12>/ ДКЛ /
107605$:.ASCIZ  <17>/     /
107614$:.ASCIZ  <17>/ ИНВ /
107623$:.ASCIZ  <17>/ПОДЧ /
107632$:.ASCIZ  <24>/     /
107641$:.ASCIZ  <24>/ ИСУ /
107650$:.ASCIZ  <31>/     /
107657$:.ASCIZ  <31>/ НР  /
107666$:.ASCIZ  <31>/ СУ  /
107675$:.ASCIZ  <31>/ГРАФ /
107704$:.ASCIZ  <31>/ФИКС /
107713$:.ASCIZ  <36>/ЗАГЛ /
107722$:.ASCIZ  <36>/СТР  /
107731$:.ASCIZ  <43>/РУС/
107736$:.ASCIZ  <43>/ЛАТ/
        .EVEN