Радио-86РК/Радио 06-89/Контроллер последовательного интерфейса/Таблица 5

Материал из Emuverse
Версия от 15:50, 28 ноября 2008; Panther (обсуждение | вклад) (http://retro.h1.ru/RK86/RS232/Rs232io.asm)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Данный материал защищён авторскими правами!

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

Автор: А. ДОЛГИЙ

Источник: http://retro.h1.ru/RK86/RS232/Rs232io.asm

;*** ПОДПРОГРАММА ПЕРЕДАЧИ ***
;ПЕРЕДАВАЕМЫЙ СИМВОЛ (В КОДЕ КОИ-7> 
;ЗАДАЕТСЯ В РЕГИСТРЕ С. ВМЕСТО СИМВОЛОВ, 
;ОТСУТСТВУЮЩИХ В МТК-2, ПЕРЕДАЕТСЯ ТОЧКА.
TTYOUT: 	PUSH 	PSW
	PUSH 	Н
	PUSH 	В
	MOV 	А, С
	ANI 	7FH
	MOV 	С, А
	CPI 0AH
	JZ 	LF   	;ПЕРЕВОД СТРОКИ
	CPI 	00Н
	JZ 	CR   	;ВОЗВРАТ КАРЕТКИ
	CPI 	'.'
	JZ 	BL   	;ПРОБЕЛ 
; СИМВОЛЫ С КОДОМ МЕНЫЕ 20Н 
;НЕ ПЕРЕДАЮТСЯ
	JM 	RTRN 
;ПЕРЕВОДИМ КОИ-7 В МТК-2
	LXI 	H, ASCITC-20H
	MVI 	В,0
	DAD 	В 
;ВЫДЕЛЯЕМ ПРИЗНАК РЕГИСТРА
	MVI 	A, 0E0H
	ANA	M
	MOV 	В, А
;ЕСЛИ РЕГИСТР НЕ СОВПАДАЕТ С УСТАНОВЛЕННЫМ, 
;ПЕРЕДАЕМ КОД СМЕНЫ РЕГИСТРА 
	LDA 	REG
	CMP 	B 
	JZ	XMT
	MOV 	А, В
	STA 	REG
	RLC
	JC 	SETFIG
	RLC
	JC 	SETRUS
	MVI 	C, 1FH 
SETREG: 	CALL 	TX 	
;ПЕРЕДАЕМ СИМВОЛ В MTK-2 
ХМТ:    	MOV 	С, М 
ХMТ1:   	CALL 	TX 
RTRN:   	POP 	В
	POP 	Н
	POP 	PSW
	RET 
;ПЕРЕВОД СТРОКИ 
LF:     	MVI 	С, 2
	JMP 	XMT1 	
;ПРОБЕЛ 
BL:     	MVI 	С, 4
	JMP 	XMT1 
;ВОЗВРАТ КАРЕТКИ 
CR:     	MVI 	С,8
	JMP	XMT1 
;ЦИФРОВОЙ РЕГИСТР 
SETFIG: 	MVI 	C, 1BH
	JMP 	SETREG 
;РУССКИЙ РЕГИСТР 
SETRUS: 	MVI 	C, 0
	JMP 	SETREG
;*** ПОДПРОГРАММА ПРИЕМА ***
;ЖДЕМ ОЧЕРЕДНОЙ СИМВОЛ 
TTYIN: 	CALL 	RX
	JC 	TTYIN 
	ANI 	1FH 
;ОБРАБАТЫВАЕМ ВК, ПРОБЕЛ И ПС
	CPI  	2
	JNZ 	TI1 
	MVI 	А, 0АН 
	RET 
TI1:    	CPI 	4
	JNZ 	TI2
	MVI 	А, 20H
	RET 
TI2:   	 CPI 	8
	JNZ 	TI3 
	MVI 	А, 00Н 
	RET
;ОБРАЕАТЫВАЕН КОДЫ СМЕНЫ РЕГИСТРОВ 
TI3:    	PUSH 	Н
	LXI 	H, REG
	CPI 	1FH
	JNZ 	TI4
	MVI 	M, 20H 	;ЛАТИНСКИЙ 
TI4:    	CPI 	0
	JNZ 	TI5
	MVI 	Н, 40Н       	;РУССКИЙ 
TI5:    	CPI 	1ВН
	JNZ 	TI6
	MVI 	Н, 80Н       	;ЦИФРА 
TI6:    	ANA 	M 
;ОБРАБАТЫВАЕМ КОД ТОЧКИ
	CPI 	9CH
	JNZ 	TI7
	MVI 	А, '.'
	POP 	Н
	RET
;ПЕРЕВОДИМ MTK-2 8 КОИ-7 
TI7:    	PUSH 	В
	MVI 	C, 5FH
	LXI 	H, ASCITC 
TI8:    	CMP 	М
	JZ	TI9
	INX 	Н
	DCR 	С
	JNZ 	TI8 
TI9:    	MOV 	А,С
	XRI 	7FH
	POP 	B
	POP 	H
	RET
;** ТАБЛИЦА ПЕРЕВОДА КОИ-7 В МТК-2 ***
ASCITC:	DB 	84H,9CH,85H,9CH,9CH,9CH,9CH,85H 
	DB 	8FН,92Н,89Н,91Н,82Н,83Н,9СН,9DН 
	DB 	96H,97H,93H,81H,8AH,90H,95H,87H 
	DB 	86H,98H,8EH,9CH,9CH,9EH,9CH,99H
	DB 	9CH,23H,39H,2EH,29H,21H,2DH,ЗАH 
	DB 	34H,26H,2BH,2FH,32H,3CH,2CH,38H
	DB 	36H,37H,2AH,25H,30H,27H,3EH,33H 
	DB 	30Н,35Н,31Н,9CH,9CH,9CH,9CH,9CH 
	DB 	8BH,43H,59H,4EH,49H,41H,40H,5AH 
	DB 	54H,46H,4BH,4FH,52H,SCH,4CH,58H 
	DB 	56H,57H,4AH,45H,50H,47H,5EH,53H 
	DB 	50H,55H,51H,9AH,80H,94H,8AH,9CH
	END