<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.felixl.com/index.php?action=history&amp;feed=atom&amp;title=Uknc_ROM_disasm_-_2</id>
	<title>Uknc ROM disasm - 2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.felixl.com/index.php?action=history&amp;feed=atom&amp;title=Uknc_ROM_disasm_-_2"/>
	<link rel="alternate" type="text/html" href="https://www.felixl.com/index.php?title=Uknc_ROM_disasm_-_2&amp;action=history"/>
	<updated>2026-10-21T03:17:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://www.felixl.com/index.php?title=Uknc_ROM_disasm_-_2&amp;diff=1725&amp;oldid=prev</id>
		<title>Alex K: Исправлены ошибки</title>
		<link rel="alternate" type="text/html" href="https://www.felixl.com/index.php?title=Uknc_ROM_disasm_-_2&amp;diff=1725&amp;oldid=prev"/>
		<updated>2008-01-13T14:34:13Z</updated>

		<summary type="html">&lt;p&gt;Исправлены ошибки&lt;/p&gt;
&lt;a href=&quot;https://www.felixl.com/index.php?title=Uknc_ROM_disasm_-_2&amp;amp;diff=1725&amp;amp;oldid=1528&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Alex K</name></author>
		
	</entry>
	<entry>
		<id>https://www.felixl.com/index.php?title=Uknc_ROM_disasm_-_2&amp;diff=1528&amp;oldid=prev</id>
		<title>Nzeemin at 15:23, 18 March 2007</title>
		<link rel="alternate" type="text/html" href="https://www.felixl.com/index.php?title=Uknc_ROM_disasm_-_2&amp;diff=1528&amp;oldid=prev"/>
		<updated>2007-03-18T15:23:52Z</updated>

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