УКНЦ ROM disasm 2

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

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


; *********************************************************
; *                                                       *
; *                  ДРАЙВЕР КЛАВИАТУРЫ                   *
; *                                                       *
; *                Адреса 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