<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A%2F%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-90%2F%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80_%D0%BE%D0%BA%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0%2F%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_1</id>
	<title>Радио-86РК/Радио 03-90/Драйвер оконного интерфейса/Таблица 1 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A%2F%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-90%2F%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80_%D0%BE%D0%BA%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0%2F%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_1"/>
	<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-90/%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80_%D0%BE%D0%BA%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_1&amp;action=history"/>
	<updated>2026-05-03T23:53:19Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://emuverse.ru/w/index.php?title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-90/%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80_%D0%BE%D0%BA%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_1&amp;diff=1168&amp;oldid=prev</id>
		<title>Panther: http://retro.h1.ru/RK86/Windows/RWinTbl.txt</title>
		<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-90/%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80_%D0%BE%D0%BA%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_1&amp;diff=1168&amp;oldid=prev"/>
		<updated>2008-12-03T09:37:24Z</updated>

		<summary type="html">&lt;p&gt;http://retro.h1.ru/RK86/Windows/RWinTbl.txt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{ДИ|Автор=Г. ШТЕФАН| Источник= http://retro.h1.ru/RK86/Windows/RWinTbl.txt}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
					Таблица&lt;br /&gt;
	JMP TEST 	; ПЕРЕХОД НА ТЕСТИРОВАНИЕ ДР.&lt;br /&gt;
PRINTC:	JMP 0F809Н 	;ВЫВОД СИМВОЛА ЧЕРЕЗ МОНИТОР&lt;br /&gt;
PRINT:	JMP 0F818H 	;ВЫВОД ТЕКСТА ЧЕРЕЗ МОНИТОР&lt;br /&gt;
INPUT:	JMP 0F803H 	;ввод символа с клавиатуры &lt;br /&gt;
LOADM:	JMP 0F821H 	;запрос символа над курсором&lt;br /&gt;
LDCUR:	JMP 0F81EH 	;ЗАПРОС ПОЛОЖЕНИЯ КУРСОРА&lt;br /&gt;
INITSP:	DW TXTCUR+5 	;АДРЕС ОБЛАСТИ СОХРАНЕНИЯ ЭК.&lt;br /&gt;
		; ОПИСАНИЕ РАБОЧИХ ПОЛЕЙ ДРАЙВЕРА&lt;br /&gt;
BASEAD:	EQU 2100Н 	;АДРЕС НАЧАЛА РАБ. ОБЛАСТИ&lt;br /&gt;
WPARM:	EQU BASEAD 	;РАЗМЕР ОКНА (ВЕРТ./ГОРИЭ.&amp;gt;&lt;br /&gt;
WHOME:	EQU WPARM+2 	;ПОЛОЖЕНИЕ ВЕРХ. ЛЕВОГО УГЛА&lt;br /&gt;
WCURSR:	EQU WHOME+2 	;ПОЛОЖЕНИЕ КУРСОРА&lt;br /&gt;
NUMWND:	EQU WCURSR+2	;НОМЕР АКТИВНОГО ОКНА&lt;br /&gt;
ADRSP:	EQU NUMWND+1	; АДРЕС СВОБОДНОЙ ОБЛАСТИ&lt;br /&gt;
TXTCUR:	EQU ADRSP+2 	; РАБОЧИЕ ЯЧ. ДЛЯ УСТ.КУСОРА&lt;br /&gt;
;+resetw - инициирование драйвера оконного +&lt;br /&gt;
;* интерфейса +&lt;br /&gt;
;++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
RESETW:	PUSH Н&lt;br /&gt;
	XRA А 		;ОБНУЛЕНИЕ НОМЕРА &lt;br /&gt;
	STA NUMWND	;АКТИВНОГО ОКНА &lt;br /&gt;
	LHLD INITSP 	;ИНИЦИИРУЕМ АДРЕС НАЧАЛА ОЗУ &lt;br /&gt;
	SHLD ADRSP 	;ДЛЯ СОХРАНЕНИЯ ЭКРАНОВ &lt;br /&gt;
	POP Н &lt;br /&gt;
	RET&lt;br /&gt;
;+++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
;+SAVEW - СОХРАНЕНИЕ ОБЛАСТИ ЭКРАНА ЗАНИМАЕМОЙ +&lt;br /&gt;
;+ ПОД ОТКРЫВАЕМОЕ ОКНО                        +&lt;br /&gt;
;+ВХОД: H,L- КООРДИНАТЫ ЛЕВОЙ ВЕРШИНЫ ОКНА     +&lt;br /&gt;
;+ D,Е- РАЗМЕРЫ ОКНА С РАМКОЙ (СТРК/СТЛБ1      +&lt;br /&gt;
SAVEW:	PUSH D 		; СОХРАНЯЕМ РЕГИСТРЫ&lt;br /&gt;
	PUSH Н&lt;br /&gt;
	PUSH H 		;КООРДИНАТЫ ОКНА&lt;br /&gt;
	CALL CURIN 	;ЗАГРУЖАЕМ ПОЛОЖЕНИЕ КУРСОРА&lt;br /&gt;
	SHLD WCURSR 	;СОХРАНЯЕМ ПОЛОЖЕНИЕ КУРСОРА&lt;br /&gt;
	LHLD ADRSP 	;АДРЕС СТЕКА ОБЛАСТИ СОХРАН.&lt;br /&gt;
SAW10:	XTHL 		;КООРДИНАТЫ ОКНА В HL&lt;br /&gt;
	CALL CUROUT 	;УСТАНАВЛИВАЕМ КУРСОР&lt;br /&gt;
	INR Н 		;ГОТОВИМ СЛЕДУЮЩУЮ СТРОКУ&lt;br /&gt;
	XTHL 		;СОХРАНЯЕМ КООРДИНАТЫ В СТЕКЕ&lt;br /&gt;
	MOV В,Е 	;РАЗМЕР ОКНА ПО ГОРИЗОНТАЛИ&lt;br /&gt;
SAW20:	CALL LOADM 	;БАЙТ ИЗ ЭКРАННОЙ ОБЛАСТИ&lt;br /&gt;
	MOV М, А 	;СОХРАНЯЕМ ЕГО В РАБ.ОБЛАСТИ&lt;br /&gt;
	INX Н 		;УВЕЛИЧИВАЕМ АДРЕС&lt;br /&gt;
	MVI C,18H 	;СДВИГАЕМ КУРСОР ВПРАВО&lt;br /&gt;
	CALL PRINTC&lt;br /&gt;
	DCR В 		;УМЕНЬШАЕМ СЧЕТЧ.ШИРИНЫ ОКНА&lt;br /&gt;
	JNZ SAW20 	;ЦИКЛ ПО СИМВОЛАМ СТРОКИ&lt;br /&gt;
	DCR D 		;УМЕНЬШАЕМ СЧЕТЧ.ВЫСОТЫ ОКНА&lt;br /&gt;
	JNZ SAW10 	;ЦИКЛ ПО СТРОКАМ&lt;br /&gt;
	INX SP 		;ПРОПУСКАЕМ КООРДИНАТЫ ОКНА&lt;br /&gt;
	INX SP 		;В СТЕКЕ&lt;br /&gt;
	XCHG 		;ПЕРЕСЫЛАЕМ АДР.РАБ.ОБЛАСТИ&lt;br /&gt;
	LHLD WНОМЕ 	;СОХРАНЯЕМ КООРД. АКТ.ОКНА&lt;br /&gt;
	CALL SAVPP 	;В РАБОЧЕЙ ОБЛАСТИ&lt;br /&gt;
	LHLD WPARM 	;СОХРАНЯЕМ ПАРАМЕТРЫ ОКНА&lt;br /&gt;
	CALL SAVPP&lt;br /&gt;
	LHLD WCURSR 	; СОХРАНЯЕМ ПОЗИЦИИ КУРСОРА&lt;br /&gt;
	CALL SAVPP&lt;br /&gt;
	LHLD ADRSP 	; СОХРАНЯЕМ АДР.НАЧАЛА ОБЛАСТИ&lt;br /&gt;
	CALL SAVPP 	;ПОД АКТИВНОЕ ОКНО&lt;br /&gt;
	ХСНG 		;ОБНОВЛЯЕМ АДРЕС НАЧАЛА&lt;br /&gt;
	SHLD ADRSP 	;СВОБОДНОЙ РАБ. ОБЛАСТИ&lt;br /&gt;
	LXI H, NUMWND 	;УВЕЛИЧИВАЕМ НОМЕР&lt;br /&gt;
	INR М 		;АКТИВНОГО ОКНА&lt;br /&gt;
	POP H 		;ВОССТАНАВЛИВАЕМ РЕГИСТРЫ&lt;br /&gt;
	POP D&lt;br /&gt;
	RET&lt;br /&gt;
; SAVPP - ПОДПРОГРАММА ПОМЕЩЕНИЯ ПАРАМЕТРОВ&lt;br /&gt;
; &amp;#039; АКТИВНОГО ОКНА В СТЕК ДРАЙВЕРА&lt;br /&gt;
SAVPP:	XCHG 		; АДРЕС ПЕРЕСЫЛАЕМ В HL&lt;br /&gt;
	MOV М, Е 	; МЛАДШИЙ БАЙТ ПАРАМЕТРА&lt;br /&gt;
	INX Н&lt;br /&gt;
	MOV M, D 	; СТАРШИЙ БАЙТ ПАРАМЕТРА&lt;br /&gt;
	INX H&lt;br /&gt;
	ХСНG 		; ВОССТАНАВЛИВАЕМ АДРЕС В DE&lt;br /&gt;
	RET&lt;br /&gt;
;+RESTW - СТИРАНИЕ АКТИВНОГО ОКНА И ВОССТА- +&lt;br /&gt;
;+ НОВЛЕНИЕ СОДЕРЖИМОГО ЭКРАНА              +&lt;br /&gt;
;++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
RESTW:	PUSH H&lt;br /&gt;
	PUSH D&lt;br /&gt;
	PUSH В&lt;br /&gt;
	LDA NUMWND 	; ПРОВЕРЯЕМ НОМЕР АКТ. ОКНА &lt;br /&gt;
	DCR A 		; ЕСЛИ ОТКРЫТОГО ОКНА НЕТ, &lt;br /&gt;
	JM RESRET 	; ТО ВЫХОДИМ. ИНАЧЕ УМЕНЬШАЕМ &lt;br /&gt;
	STA NUMWND 	; НОМЕР АКТИВНОГО ОКНА 	&lt;br /&gt;
	LHLD ADRSP 	; НАЧИНАЕМ ВОССТАНОВЛЕНИЕ &lt;br /&gt;
	XCHG 		; ПАРАМЕТРОВ ПРЕДПОСЛ. ОКНА &lt;br /&gt;
	CALL RESPP 	; АДРЕС РАБОЧЕЙ ОБЛАСТИ ОКНА &lt;br /&gt;
	SHLD ADRSP 	;&lt;br /&gt;
	CALL RESPP 	; ПОЗИЦИЯ КУРСОРА &lt;br /&gt;
	SHLD WCURSR 	; &lt;br /&gt;
	CALL RESPP 	; РАЗМЕРЫ ОКНА &lt;br /&gt;
	PUSH H&lt;br /&gt;
	CALL RESPP 	; КООРДИНАТЫ ОКНА PUSH H&lt;br /&gt;
	LHLD WPARM 	; ЗАГРУЖАЕМ РАЗМЕР СТИР. &lt;br /&gt;
	XCHG 		; ОКНА &lt;br /&gt;
	INR D 		; УЧИТЫВАЕМ РАМКУ &lt;br /&gt;
	INR D&lt;br /&gt;
	LHLD WHOME 	; ЗАГРУКАЕМ КООРДИНАТЫ &lt;br /&gt;
	DCR H 		; СТИРАЕМОГО ОКНА &lt;br /&gt;
	DCR L 		; И УЧИТЫВАЕМ РАМКУ &lt;br /&gt;
	PUSH H 		; СОХРАНЯЕМ ЕГО В СТЕКЕ &lt;br /&gt;
	LHLD ADRSP 	; АДРЕС ОБЛАСТИ СОХР. ОКНА &lt;br /&gt;
RES10:	XTHL 		; КООРДИНАТЫ ОКНА В (H.L) &lt;br /&gt;
	CALL CUROUT 	; КУРСОР В УГОЛ РАМКИ &lt;br /&gt;
	INR H 		; ГОТОВИМСЯ К СЛЕД.СТРОКЕ &lt;br /&gt;
	XTHL 		; АДРЕС 08Л.СОХР. В (H,L)&lt;br /&gt;
	MOV В,Е 	; счетчик ширины окна&lt;br /&gt;
RES20:	MOV C,M 	; ВОССТАНАВЛИВАЕМ СОДЕР&amp;quot;.&lt;br /&gt;
	CALL PRINTC 	; ЭКРАНА&lt;br /&gt;
	INX H 		; УВЕЛИЧИВАЕМ АДРЕС&lt;br /&gt;
	DCR В 		; НИКЛ ПО СТРОКЕ&lt;br /&gt;
	JNZ RES20&lt;br /&gt;
	DCR D 		; ЦИКЛ ПО СТРОКАМ&lt;br /&gt;
	JNZ RES10&lt;br /&gt;
	INX SP 		; ПРОПУСКАЕМ РАБОЧУЮ&lt;br /&gt;
	INX SP 		; ПЕРЕМЕННУЮ В СТЕКЕ&lt;br /&gt;
	POP D 		; КООРДИНАТЫ&lt;br /&gt;
	POP H 		; И РАЗМЕРЫ ОКНА&lt;br /&gt;
	SHLD WPARM 	; ПОМЕЩАЕМ В РАБОЧИЕ&lt;br /&gt;
	XCHG 		; ЯЧЕЙКИ ДРАЙВЕРА SHLD WHOME&lt;br /&gt;
	SHLD WHOME&lt;br /&gt;
LHLD WCURSR 	; ВОССТАНАВЛИВАЕМ ПОЗИЦИЮ &lt;br /&gt;
CALL CUROUT 	; КУРСОРА &lt;br /&gt;
RESRET:	POP В 		; ВОССТАНАВЛИВАЕМ РЕГИСТРЫ&lt;br /&gt;
	POP D 		; и выход&lt;br /&gt;
	POP H &lt;br /&gt;
	RET&lt;br /&gt;
; _________________________________________________&lt;br /&gt;
; RESPP - ПОДПРОГРАММА ЗАГРУЗКИ ПАРАМЕТРОВ ОКНА&lt;br /&gt;
; _________________________________________________&lt;br /&gt;
RESPP:	XCHG&lt;br /&gt;
	DCX H 		; ЗАГРУЖАЕМ ДВА БАЙТА&lt;br /&gt;
	MOV D, M 	; ИЗ ОБЛАСТИ СОХРАНЕНИЯ&lt;br /&gt;
	DCX H 		; ПЕРЕСЫЛАЕМ ИХ В (H,L)&lt;br /&gt;
	MOV Е,М&lt;br /&gt;
	XCHG &lt;br /&gt;
	RET 		; ВЫХОД&lt;br /&gt;
;+ FRAME - РИСОВАНИЕ РАМКИ ОКНА И ФОРМИРОВАНИЕ +&lt;br /&gt;
;+ ПАРАМЕТРОВ ОКНА                             +&lt;br /&gt;
;+ ВХОД : H,L- КООРДИНАТЫ OKHA, D, E РАЗМЕРЫ   +&lt;br /&gt;
FRAMES:	PUSH H 		; СОХРАНЯЕМ РЕГИСТРЫ &lt;br /&gt;
	PUSH D&lt;br /&gt;
	CALL CUROUT 	; КУРСОР В УГОЛ РАМКИ &lt;br /&gt;
	DCR D 		; УМЕНЬШАЕМ ВЫСОТУ РАМКИ &lt;br /&gt;
	DCR D&lt;br /&gt;
	MOV В, Е 	; ШИРИНУ РАМКИ В СЧЕТЧИК &lt;br /&gt;
	LXI H, FRTEXT 	; АДРЕС ВЕРХНЕЙ ЛИНИИ &lt;br /&gt;
	CALL DRWFR 	; РИСУЕМ ЛИНИЮ И УГОЛ &lt;br /&gt;
	MOV B, D 	; ВЫСОТУ РАМКИ В СЧЕТЧИК&lt;br /&gt;
	CALL DRWFR 	; РИСУЕМ ПРАВУЮ ЛИНИИ&lt;br /&gt;
	MOV В,Е 	; ширину рамки в счетчик&lt;br /&gt;
	CALL DRWFR 	; РИСУЕМ НИЖНЮЮ ЛИНИЮ&lt;br /&gt;
	MOV B, D 	; ВЫСОТУ РАМКИ В СЧЕТЧИК&lt;br /&gt;
	CALL DRWFR 	; РИСУЕМ ЛЕВУЮ ЛИНИЮ И&lt;br /&gt;
	CALL CURIN 	; ЗАГРУЖАЕМ КООРДИНАТЫ&lt;br /&gt;
	SHLD WHOME 	; ПОЛОЖЕНИЯ НОМЕ ОКНА&lt;br /&gt;
	XCHG&lt;br /&gt;
	SHLD WPARM 	; ЗАПИСЫВАЕМ РАЗМЕРЫ АКТ.&lt;br /&gt;
	POP D 		; ОКНА&lt;br /&gt;
	POP H 		; ВОССТАНАВЛИВАЕМ РЕГИСТРЫ&lt;br /&gt;
	RET&lt;br /&gt;
;-DRWFR - РИСОВАНИЕ СТОРОНЫ И УГЛА РАМКИ &lt;br /&gt;
;-ВХОД: В - ДЛИНА СТОРОНЫ&lt;br /&gt;
DRWFR:	DCR В 		; ЕСЛИ ДЛИНА 1&lt;br /&gt;
	JZ DRR20 	; ОБХОДИМ ЦИКЛ ПО ДЛИНЕ СТОР. &lt;br /&gt;
DRW10:	PUSH H 		; РИСУЕМ В-1 СИМВОЛОВ СТОРОНЫ&lt;br /&gt;
	CALL PRINT&lt;br /&gt;
	POP H&lt;br /&gt;
	DCR В&lt;br /&gt;
	JNZ DRW10 &lt;br /&gt;
DRR20:	CALL PRINT 	; РИСУЕМ ПОСЛЕДНИЙ СИМВОЛ&lt;br /&gt;
	INX H&lt;br /&gt;
	CALL PRINT 	; ПРОРИСОВЫВАЕМ УГОЛ&lt;br /&gt;
	INX H 		; готовим адрес очереди. стор.&lt;br /&gt;
	RET&lt;br /&gt;
; ДАННЫЕ ДЛЯ ПОСТРОЕНИЯ РАМКИ &lt;br /&gt;
FRTEXT:	DB 17Н, 0		; ВЕРХНЯЯ СТОРОНА&lt;br /&gt;
	DB 1АН, 8, 0 	; УГОЛ&lt;br /&gt;
	DB 17Н, 1АН, 8, 0 	; ПРАВАЯ СТОРОНА&lt;br /&gt;
	DB 0 		; УГОЛ&lt;br /&gt;
	DB 17Н, 8, 8, 0	; НИЖНЯЯ СТОРОНА&lt;br /&gt;
	DB 19H, 18H, 0	; УГОЛ&lt;br /&gt;
	DB 17Н,19Н, 8, 0	;ЛЕВАЯ СТОРОНА&lt;br /&gt;
	DB 18Н,1АН, 0 	; КУРСОР В ЛЕВЫЙ ВЕРХНИЙ УГОЛ&lt;br /&gt;
;WRITE - ВЫВОД ТЕКСТА ЧЕРЕЗ ДРАЙВЕР ОКНА. +&lt;br /&gt;
; АНАЛОГ П/П МОНИТОРА 0F818H )            +&lt;br /&gt;
;ВХОД: HL - АДРЕС НАЧАЛА ТЕКСТА.          +&lt;br /&gt;
WRITE:	MOV А, М 	; ВЫВОДИМ ВСЕ СИМВОЛЫ&lt;br /&gt;
	ORA А 		; ДО НУЛЯ&lt;br /&gt;
	JZ WRTRET&lt;br /&gt;
	MOV С, А 	; ЧЕРЕЗ&lt;br /&gt;
	CALL WRITEC 	; ПОДПРОГРАММУ WRITEC&lt;br /&gt;
	INX H&lt;br /&gt;
	JMP WRITE &lt;br /&gt;
WRTRET:	INX H&lt;br /&gt;
	RET&lt;br /&gt;
;++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
; WRITEC - ВЫВОД СИМВОЛА ЧЕРЕЗ ДРАЙВЕР ОКНА +&lt;br /&gt;
; АНАЛОГ П/П МОНИТОРА 0F809Н                +&lt;br /&gt;
; ВХОД: С - КОД СИМВОЛА                     +&lt;br /&gt;
;++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
WRITEC:	LDA NUMWND 	; ПРОВЕРЯЕМ НАЛИЧИЕ&lt;br /&gt;
	ORA А 		; АКТИВНОГО ОКНА&lt;br /&gt;
	JZ WRC30 	; ЕСЛИ НЕТ- ЧЕРЕЗ МОНИТОР&lt;br /&gt;
	MOV А, С 	; РЕЗЕРВИРУЕМ ВОЗМОЖНОСТЬ&lt;br /&gt;
	ORA A 		; ИЗМЕНЕНИЯ АТРИБУТОВ ВГ-75&lt;br /&gt;
	JM WRC30&lt;br /&gt;
	CPI 0DН 	; УПРАВЛЯЮШИЕ СИМВОЛЫ&lt;br /&gt;
	JNZ WRC10 	; 0Dн&lt;br /&gt;
	CALL WR0D&lt;br /&gt;
	JMP WRCRET &lt;br /&gt;
WRC10:	CPI 0СН 	; 0CH&lt;br /&gt;
	JNZ WRC20&lt;br /&gt;
	CALL WR0C&lt;br /&gt;
	JMP WRCRET &lt;br /&gt;
WRC20:	CPI 1FH 	; 1FH&lt;br /&gt;
	JNZ WRC30&lt;br /&gt;
	CALL WR1F 	; ОБРАБАТЫВАЮТСЯ П/П ДРАЙВЕРА&lt;br /&gt;
	JMP WRCRET&lt;br /&gt;
URC30:	CALL PRINTC 	; ОСТАЛЬНЫЕ СИМВОЛЫ В МОНИТОР &lt;br /&gt;
WRCRET: 	RET&lt;br /&gt;
; WR0D - ОБРАБОТКА СИМВОЛА 0DН +&lt;br /&gt;
WR0D:	PUSH В&lt;br /&gt;
	MVI C, 0DH 	; КУРСОР В НАЧАЛО СТРОКИ &lt;br /&gt;
	CALL PRINTC&lt;br /&gt;
	LDA WHOME 	; МЛАДШИЙ БАЙТ В WHOME &lt;br /&gt;
	MOV В, А 	; КООРДИНАТА ПО СТОЛБЦАМ &lt;br /&gt;
	MVI C, 18H 	; ПЕРЕДВИГАЕМ КУРСОР НА&lt;br /&gt;
WRDL0:	CALL PRINTC 	; ПЕРВУЮ ПОЗИЦИЮ ВНУТРИ ОКНА&lt;br /&gt;
	DCR В &lt;br /&gt;
	JNZ WRD10 &lt;br /&gt;
	POP В &lt;br /&gt;
	RET&lt;br /&gt;
; WR0C - ОБРАБОТКА СИМВОЛА 0СН +&lt;br /&gt;
WR0С:	PUSH Н&lt;br /&gt;
	LHLD WHOME 	; УСТАНАВЛИВАЕМ КУРСОР В &lt;br /&gt;
	CALL CUROUT 	; В ВЕРХНИЙ ЛЕВЫЙ УГОЛ&lt;br /&gt;
					ПРОДОЛЖЕНИЕ ТАБЛИЦ!&lt;br /&gt;
	POP Н 		; ОКНА ВНУТРИ РАМКИ&lt;br /&gt;
	RET&lt;br /&gt;
; WR1F - ОБРАБОТКА СИМВОЛА 1FH +&lt;br /&gt;
WR1F:	PUSH Н 		; СОХРАНЯЕМ ИСПОЛЬЗУЕМЫЕ&lt;br /&gt;
	PUSH D 		; РЕГИСТРЫ&lt;br /&gt;
	PUSH В&lt;br /&gt;
	LHLD WPARM 	; ЗАГРУЖАЕМ РАЗМЕРЫ ОКНА&lt;br /&gt;
	XCHG&lt;br /&gt;
	LHLD WHOME 	; ЗАГРУЖАЕМ КООРДИНАТЫ ОКНА &lt;br /&gt;
WRF10:	CALL CUROUT 	; КУРСОР В НАЧАЛО СТРОКИ ОКНА&lt;br /&gt;
	MOV B, E 	; РАЗМЕР ОКНА ПО СТОЛБЦАМ&lt;br /&gt;
	DCR В 		; УЧИТЫВАЕМ РАМКУ&lt;br /&gt;
	DCR В 		; СЧЕТЧИК ПО СТОЛБЦАМ &lt;br /&gt;
WRF20:	MVI С,&amp;#039; &amp;#039; 	; ОБНУЛЯЕМ СТРОКУ&lt;br /&gt;
	CALL PRINTC&lt;br /&gt;
	DCR В 		; ЦИКЛ ПО СИМВОЛАМ СТРОКИ&lt;br /&gt;
	JNZ WRF20&lt;br /&gt;
	INR Н 		; ГОТОВИМ КООРД. СЛЕД. СТРОКИ&lt;br /&gt;
	DCR D 		; УМЕНЬШАЕМ СЧЕТЧИК СТРОК&lt;br /&gt;
	JNZ WRF10 	; ЦИКЛ ПО СТРОКАМ ОКНА&lt;br /&gt;
	CALL WR0C 	; КУРСОР В ВЕРХНИЙ ЛЕВЫЙ УГОЛ&lt;br /&gt;
	POP В&lt;br /&gt;
	POP D 		; ВОССТАНАВЛИВАЕМ РЕГИСТРЫ&lt;br /&gt;
	POP Н&lt;br /&gt;
	RET&lt;br /&gt;
;+++++++++++++++++++++++++++++++++++++&lt;br /&gt;
;+CURIN - ЗАГРУЗКА КООРДИНАТ КУРСОРА +&lt;br /&gt;
;+ВЫХОД: &amp;lt;Н&amp;gt; - НОМЕР СТРОКИ          +&lt;br /&gt;
;+ (L) - НОМЕР СТОЛБЦА               +&lt;br /&gt;
CURIN:	CALL LDCUR 	; ЗАГРУЖАЕМ КООРД. КУРСОРА &lt;br /&gt;
	PUSH D 		; В ФОРМАТЕ МОНИТОРА &lt;br /&gt;
	LXI D,0FCF8H 	; ПРИВОДИМ К НОРМАЛЬНОМУ ВИДУ &lt;br /&gt;
	DAD D 		; ОТ &amp;lt;0,0&amp;gt; ДО &amp;lt;24,63) &lt;br /&gt;
	POP D &lt;br /&gt;
	RET&lt;br /&gt;
;+CUROUT - УСТАНОВКА КУРСОРА В ЗАДАННУП ПОЗИЦИЮ +&lt;br /&gt;
;+ВХОД: &amp;lt;Н) - НОМЕР СТРОКИ                      +&lt;br /&gt;
;+ (L) - НОМЕР СТОЛБЦА                          +&lt;br /&gt;
;++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
CUROUT:	PUSH H 		; СОХРАНЯЕМ РЕГИСТРЫ &lt;br /&gt;
	PUSH D &lt;br /&gt;
	PUSH В&lt;br /&gt;
	LXI D,2020Н 	; ГОТОВИМ: 20H+&amp;lt;l ) И 20Н+(Н) &lt;br /&gt;
	DAD D&lt;br /&gt;
	XCHG 		; ПЕРЕСЫЛАЕМ В &amp;lt;l),L&amp;gt; &lt;br /&gt;
	LXI H,TXTCUR+4 	; РАБОЧЕЕ ПОЛЕ В ОЗУ &lt;br /&gt;
	MVI М,0 	; ПРИЗНАК КОНЦА СТРОКИ &lt;br /&gt;
	DCX Н 		; ФОРМИРУЕМ В TXTCUR &lt;br /&gt;
	MOV M,E 	; ESCAPE ПОСЛЕДОВАТЕЛЬНОСТЬ &lt;br /&gt;
	DCX Н 		; АР2,&amp;#039;Г&amp;#039;,2вН+(Н&amp;gt;&amp;gt;20H+&amp;lt;L&amp;gt;,0 &lt;br /&gt;
	MOV M,D &lt;br /&gt;
	DСХ Н &lt;br /&gt;
	MVI M,&amp;#039;Y&amp;#039; &lt;br /&gt;
	DСХ H &lt;br /&gt;
	MVI M,1BH&lt;br /&gt;
	CALL PRINT 	; УСТАНАВЛИВАЕМ КУРСОР ЧЕРЕЗ &lt;br /&gt;
POP В 		; МОНИТОР &lt;br /&gt;
POP D &lt;br /&gt;
POP H &lt;br /&gt;
RET&lt;br /&gt;
;***************** ТЕСТОВАЯ ПРОГРАММА ************************&lt;br /&gt;
TEST:&lt;br /&gt;
STEP1:	CALL RESETW 	; ИНИЦИИРУЕМ ДРАЙВЕР&lt;br /&gt;
STEP2:	LXI Н,506Н 	; КООРД.РАМКИ 1 ОКНА&lt;br /&gt;
	LXI D,512H 	; РАЗМЕРЫ РАМКИ 1 ОКНА&lt;br /&gt;
	CALL SAVEW 	; COXP.СОДЕРЖ.ЭКРАНА&lt;br /&gt;
	CALL FRAME 	; РИСУЕМ РАМКУ &lt;br /&gt;
STEP3:	LXI H, TSTXT1 	; ВЫВОДИМ ТЕКСТ&lt;br /&gt;
	CALL WRITE 	; ЧЕРЕЗ ДРАЙВЕР&lt;br /&gt;
	CALL INPUT 	; ПАУЗА &lt;br /&gt;
STEP4:	LXI Н,80ЕН 	; КООРДИНАТЫ 2 ОКНА&lt;br /&gt;
	LXI D,512H 	; РАЗМЕРЫ 2 ОКНА&lt;br /&gt;
	CALL SAVEW 	; OTKPblBAEM 2 ОКНО&lt;br /&gt;
	CALL FRAME&lt;br /&gt;
	LXI H, TSTXT2 	; ВЫВОДИМ ТЕКСТ&lt;br /&gt;
	CALL WRITE 	; BO 2 ОКНО &lt;br /&gt;
STEP5:	CALL INPUT 	; ПАУЗА&lt;br /&gt;
	CALL RESTW 	; СТИРАЕМ 2 OKHО&lt;br /&gt;
STEP6:	CALL INPUT 	; ПАУЗА&lt;br /&gt;
	CALL RESTW 	; СТИРАЕМ 1 ОКНО&lt;br /&gt;
	CALL INPUT 	; ПАУЗА&lt;br /&gt;
	JMP TEST 	; НА ПОВТОР ТЕСТ-ПРОГРАММЫ &lt;br /&gt;
TSTXT1:	DB 1FH,&amp;#039;1 ОКНО&amp;#039;&lt;br /&gt;
	DB 0DH, 0AH, &amp;#039;2 СТРОКА 1 ОКНА&amp;#039;,0 &lt;br /&gt;
TSTXT2:	DB 1FH,&amp;#039;2 ОКНО &amp;#039;&lt;br /&gt;
	DB 0DB,0AH,&amp;#039;2 СТРОКА 2 ОКНА&amp;#039;&lt;br /&gt;
	DB 0DH,0AH,&amp;#039;3 СТРОКА 2 ОКНА&amp;#039;,0СН,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Радио-86РК/Публикации|481]]&lt;/div&gt;</summary>
		<author><name>Panther</name></author>
	</entry>
</feed>