<?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_09-90%2F%D0%AD%D0%BA%D1%80%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_BEST%2F%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_4</id>
	<title>Радио-86РК/Радио 09-90/Экранный генератор BEST/Таблица 4 - История изменений</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_09-90%2F%D0%AD%D0%BA%D1%80%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_BEST%2F%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_4"/>
	<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_09-90/%D0%AD%D0%BA%D1%80%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_BEST/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_4&amp;action=history"/>
	<updated>2026-05-03T23:53:02Z</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_09-90/%D0%AD%D0%BA%D1%80%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_BEST/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_4&amp;diff=1193&amp;oldid=prev</id>
		<title>Panther: http://retro.h1.ru/RK86/Best/RBstTbl4.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_09-90/%D0%AD%D0%BA%D1%80%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_BEST/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_4&amp;diff=1193&amp;oldid=prev"/>
		<updated>2008-12-05T14:01:05Z</updated>

		<summary type="html">&lt;p&gt;http://retro.h1.ru/RK86/Best/RBstTbl4.txt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{ДИ|Автор=А. СОРОКИН | Источник= http://retro.h1.ru/RK86/Best/RBstTbl4.txt}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
				Таблица 4&lt;br /&gt;
SCRN:	EQU 077C2	;адрес левого верхнего угла экр. Подпрограмма адресации курсора - POST&lt;br /&gt;
			;Входные данные:&lt;br /&gt;
			;D - Y координата Е - X координата&lt;br /&gt;
			;Выходные данные: нет&lt;br /&gt;
POST:	PUSH H 		;ЗАПОМНИТЬ ЗНАЧЕНИЕ HL&lt;br /&gt;
	LXI H, PST+2	;HL &amp;lt;- АДРЕС ЗАПИСИ КООРД.&lt;br /&gt;
	MOV A, D 	; ЗАПИСАТЬ КООРДИНАТУ&lt;br /&gt;
 	ADI 20Н 	;Y В СООТВЕТСТВИИ С ФОР-&lt;br /&gt;
	MOV H, A 	;МАТОМ ДИРЕКТИВЫ МОНИТОРА.&lt;br /&gt;
	INX H 		;АДРЕС ЗАПИСИ СЛЕД. КООРД.&lt;br /&gt;
	MOV А,Е 	;ЗАПИСЬ КООРДИНАТЫ X&lt;br /&gt;
 	adi гон&lt;br /&gt;
	MOV H,A&lt;br /&gt;
	LXI H,PST 	; ЗАПУСК ДИРЕКТИВЫ МОНИТОРА &lt;br /&gt;
	CALL OF818H 	;ВЫВОДА СООБЩЕНИЯ НА ЭКРАН. &lt;br /&gt;
	POP H 		;ВОССТАНОВИТЬ ЗНАЧЕНИЕ HL &lt;br /&gt;
	RET &lt;br /&gt;
PST:	DB 1BH, 59Н, О, О, О&lt;br /&gt;
;ПОДПРОГРАММА ПЕРЕМЕЩЕНИЯ ОКНА ЭКРАНА С ЗАДАННЫМ РАЗМЕРОМ - SDVIG &lt;br /&gt;
;ВХОДНЫЕ ДАННЫЕ:&lt;br /&gt;
;		ХВ, YB - КООРДИНАТЫ X, Y ВЕРХНЕГО ЛЕВОГО УГЛА ОКНА.&lt;br /&gt;
;		XN,YN - КООРДИНАТЫ X, Y НИЖНЕГО ПРАВОГО УГЛА ОКНА.&lt;br /&gt;
;		Н(ТОР),М(ТОР*11 - КООРДИНАТЫ X,Y ВЕРХНЕГО ЛЕВОГО УГЛА КОПИИ ОКНА.&lt;br /&gt;
;		Н(ВОТТ),М(ВОТТ+1) - КООРДИНАТЫ X, Y НИЖНЕГО ПРАВОГО УГЛА КОПИИ ОКНА.&lt;br /&gt;
;ВЫХОДНЫЕ ДАННЫЕ: НЕТ.&lt;br /&gt;
;ИСПОЛЬЗУЕМЫЕ ПОДПРОГРАММЫ: HLM. INSTAL. ADR&lt;br /&gt;
;ДЛЯ ПЕРЕСЫЛКИ ОКНА ТЕКСТА , НЕ СТИРАЯ ПОД СОБОЙ ИЗОБРАЖЕНИЕ ЭКРАНА. ПОЛЬЗУЮТСЯ АЛГОРИТМОМ:&lt;br /&gt;
	MVI A, OFFH&lt;br /&gt;
	STA PERES+1&lt;br /&gt;
	CALL PERES &lt;br /&gt;
L:	.... 		;ВВОД ДАННЫХ ДЛЯ ПОДПРОГРАММЫ&lt;br /&gt;
	CALL SDVIG&lt;br /&gt;
	XRA A&lt;br /&gt;
	STA PERES+1 &lt;br /&gt;
	CALL PERES &lt;br /&gt;
	JMP L&lt;br /&gt;
;-AYS- 11.09.89&lt;br /&gt;
SDVIG:	PUSH D 		;ЗАПОМНИТЬ DE&lt;br /&gt;
	LHLD XN 	;B HL КООРД. НИЖН. ЛЕВОГО УГЛА&lt;br /&gt;
	CALL ADR 	;ВЫЧИСЛИТЬ АДРЕС ПО КООРД.&lt;br /&gt;
	XCHG 		;И В DE&lt;br /&gt;
	LHLD BOTT 	;В HL КООРД. НИЖН. ЛЕВОГО УГЛА&lt;br /&gt;
	CALL ADR 	; ОБРАЗА ОКНА И ВЫЧИСЛИТЬ АДРЕС&lt;br /&gt;
	CALL HLM1 	;ЕСЛИ АДРЕСА НЕ ПЕРЕКРЫВАЮТСЯ.&lt;br /&gt;
	JM FORTH 	;TO КОПИРОВАТЬ С НАЧАЛА.&lt;br /&gt;
; -- . -- -КОПИРОВАНИЕ ОКНА С КОНЦА.&lt;br /&gt;
	MVI A, OFFH 	;В KOD ПРИЗНАК КОПИРОВАНИЯ С&lt;br /&gt;
	STA KOD 	; КОНЦА И ВЫПОЛНИТЬ ПОДПРОГР.&lt;br /&gt;
	CALL INSTAL 	;ЗАГРУЗКИ НАЧАЛЬНЫХ ЗНАЧЕНИИ.&lt;br /&gt;
	XCHG 		;ПЕРЕД ПЕРЕСЫЛКОЙ ОКНА:&lt;br /&gt;
LY:	PUSH H 		;HL-АДР. ОКНА. DE-АДР. КОПИИ&lt;br /&gt;
	PUSH D 		; ЗАПОМНИМ АДРЕСА&lt;br /&gt;
	LDA KOD 	;B В - КОЛИЧЕСТВО СТРОК&lt;br /&gt;
	MOV С, А 	;В С - ДЛИНА СТРОКИ&lt;br /&gt;
LX:	MOV А, И	;ПЕРЕСЫЛАЕМ НАЧИНАЯ СО СТАР-&lt;br /&gt;
	STAX D 		;ШЕГО АДРЕСА К МЛАДШЕМУ ВО&lt;br /&gt;
	DCX D 		; ИЗБЕЖАНИЯ ПОТЕРИ&lt;br /&gt;
	DCX H 		;ДАННЫХ.&lt;br /&gt;
	DCR С 		; ВЫПОЛНЯТЬ, ПОКА НЕ КОНЧИЛАСЬ&lt;br /&gt;
 	JP LX 		; СТРОКА.&lt;br /&gt;
	DCR В 		;ЕСЛИ ПЕРЕСЛАЛИ ПОСЛЕДИ.&lt;br /&gt;
	JM KON 		; СТОКУ, ТО НА КОНЕЦ.&lt;br /&gt;
	POP H 		;ВЫЧИСЛИМ АДРЕС НОВОЙ СТРОКИ&lt;br /&gt;
	CALL HLM 	;OKHA И ЗАПОМНИМ ЕГО.&lt;br /&gt;
	SHLD ADRK 	; ВЫЧИСЛИМ АДРЕС НОВОЙ СТРОКИ POP Н ; КОПИИ ОКНА И&lt;br /&gt;
	CALL HLM 	;РАЗМЕСТИМ ПОЛУЧЕННЫЕ&lt;br /&gt;
	XCHG 		;АДРЕСА В &lt;br /&gt;
	LHLD ADRK 	; РЕГИСТРАХ. &lt;br /&gt;
	XCHG 		;ДАЛЕЕ ПЕРЕСЫЛКА СТРОК.&lt;br /&gt;
	JMP LY&lt;br /&gt;
;--------КОПИРОВАНИЕ ОКНА С НАЧАЛА.&lt;br /&gt;
FORTH:	XRA A 		;B KOD ПРИЗНАК КОПИРОВАНИЯ С&lt;br /&gt;
	STA KOD 	;НАЧАЛА И ВЫПОЛНИТЬ ПОДПРОГР.&lt;br /&gt;
	CALL INSTAL 	;ЗАГРУЗКИ НАЧАЛЬНЫХ ЗНАЧЕНИИ.&lt;br /&gt;
	PUSH H 		;ПЕРЕД ПЕРЕСЫЛКОЙ ОКНА:&lt;br /&gt;
	LHLD XB 	;HL-АДР. ОКНА&lt;br /&gt;
	CALL ADR 	;DE-АДР. КОПИИ&lt;br /&gt;
	POP D 		;&lt;br /&gt;
LYF:	PUSH H 		;ЗАПОМНИМ&lt;br /&gt;
	PUSH D 		; АДРЕСА&lt;br /&gt;
	LDA KOD 	;B В - КОЛИЧЕСТВО СТРОК&lt;br /&gt;
	MOV С, A 	;B С - ДЛИНА СТРОКИ&lt;br /&gt;
LXF:	MOV A, M	; ПЕРЕСЫЛАЕМ НАЧИНАЯ&lt;br /&gt;
	STAX D 		;C МЛАДШЕГО&lt;br /&gt;
	INX D 		;АДРЕСА К&lt;br /&gt;
	INX H 		; СТАРШЕМУ.&lt;br /&gt;
	DCR С 		;ВЫПОЛНЯТЬ, ПОКА НЕ КОНЧИЛАСЬ&lt;br /&gt;
 	JP LXF 		;cTPOKA*. &lt;br /&gt;
	DCR В 		;ЕСЛИ ПЕРЕСЛАЛИ ПОСЛЕДИ.&lt;br /&gt;
	JM КОN 		;СТОКУ. ТО НА КОНЕЦ.&lt;br /&gt;
	POP H 		;УВЕЛИЧИТЬ АДРЕСА&lt;br /&gt;
	LXI D, 78 	;OKHA И&lt;br /&gt;
	DAD D 		;КОПИЙ НА 76.&lt;br /&gt;
	SHLD ADRK 	;&lt;br /&gt;
	POP H 		; РАЗМЕСТИМ&lt;br /&gt;
	DAD D 		; ПОЛУЧЕННЫЕ&lt;br /&gt;
	XCHG 		; АДРЕС А&lt;br /&gt;
	LHLD ADRK 	;B&lt;br /&gt;
	XCHG 		; РЕГИСТРАХ.&lt;br /&gt;
	JMP LYF 	;ДАЛЕЕ ПЕРЕСЫЛКА СТРОК.&lt;br /&gt;
KON:	POP D 		;СНИМАЕМ СО СТЕКА&lt;br /&gt;
	POP D 		; АДРЕС&lt;br /&gt;
	POP D 		; ВОЗВРАТА.&lt;br /&gt;
	RET&lt;br /&gt;
; ПОДПРОГРАММА ВЫЧИСЛЕНИЯ HL=HL-DE i&lt;br /&gt;
HLM:	LXI D, 78 	;В DE ДЛИНУ СТРОКИ = 78&lt;br /&gt;
HLM1:	MOV A,L 	;HLM1 - ТОЧКА ВХОЛА&lt;br /&gt;
	SUB Е 		;ДЛЯ ВЫЧИСЛЕНИЯ&lt;br /&gt;
	MOV L,A 	;ПРОИЗВОЛЬНЫХ HL И DE.&lt;br /&gt;
	MOV A, H 	;&lt;br /&gt;
	SBB D 		;&lt;br /&gt;
	MOV H, A 	;&lt;br /&gt;
	RET&lt;br /&gt;
; ПОДПРОГРАММА ЗАГРУЗКИ НАЧАЛЬНЫХ ЗНАЧЕНИИ i&lt;br /&gt;
INSTAL:	LHLD BOTT 	;В HL - НАЧАЛЬНЫЕ&lt;br /&gt;
	LDA KOD 	; КООРДИНАТЫ ПЕРЕСЫЛКИ&lt;br /&gt;
	ORA A 		;B ОКНЕ. ( ОПРЕДЕЛЯЕМ ПО&lt;br /&gt;
	JNZ INS1 	; ПРИЗНАКУ КОПИРОВАНИЯ )&lt;br /&gt;
	LHLD TOP 	;&lt;br /&gt;
INS1:	CALL ADR 	;ВЫЧИСЛЯЕМ АДРЕС КООРДИНАТ.&lt;br /&gt;
	LDA XB 		;ВЫЧИСЛЯЕМ&lt;br /&gt;
	MOV B, A 	; КОЛИЧЕСТВО&lt;br /&gt;
	LDA XN 		;СТРОК В&lt;br /&gt;
	SUB В 		;OKHE И ПОМЕШАЕМ&lt;br /&gt;
	STA KOD 	;B РЕГИСТР В.&lt;br /&gt;
	LDA YB 		;ВЫЧИСЛЯЕМ&lt;br /&gt;
	MOV B, A 	; КОЛИЧЕСТВО&lt;br /&gt;
	LDA YN 		; СТРОК В&lt;br /&gt;
	SUB В 		;OKHE И ПОМЕШАЕМ&lt;br /&gt;
	MOV В, A 	;B РЕГИСТР В.&lt;br /&gt;
	RET&lt;br /&gt;
; _ __ _______&lt;br /&gt;
;ПОДПРОГРАММА ВЫЧИСЛЕНИЯ АДРЕСА, В ЭКРАННОЙ ОБЛАСТИ, СООТБЕТСТВУШЕГО КООРДИНАТАМ.&lt;br /&gt;
;ВХОДНЫЕ ДАННЫЕ:&lt;br /&gt;
;		Н - Y КООРДИНАТА L - X КООРДИНАТА&lt;br /&gt;
;ВЫХОДНЫЕ ДАННЫЕ: HL - АДРЕС&lt;br /&gt;
ADR:	PUSH D 		;ЗАПОМНИТЬ &lt;br /&gt;
	PUSH В 		;РЕГИСТРЫ &lt;br /&gt;
	MOV С, L 	;ВС КООРДИНАТУ X &lt;br /&gt;
	MOV А, Н 	;В А КООРДИНАТУ Y &lt;br /&gt;
	LXI D, 78 	;В DE ДЛИНУ СТРОКИ &lt;br /&gt;
	LXI H, 0 	;ВЫЧИСЛЕНИЕ&lt;br /&gt;
S1:	ORA А 		;АДРЕСА ПО&lt;br /&gt;
	JZ PROD 	;ФОРМУЛЕ:&lt;br /&gt;
	RAR 		;АДРЕС:78&amp;quot;Y&lt;br /&gt;
	JNC 32&lt;br /&gt;
	DAD D&lt;br /&gt;
S2:	xchg&lt;br /&gt;
	DAD H 		;&lt;br /&gt;
	XCHG 		;&lt;br /&gt;
	JMP S1&lt;br /&gt;
PROD:	XCHG 		;&lt;br /&gt;
	LXI H, SCRN 	; ЗАГРУЗИТЬ АДРЕС&lt;br /&gt;
	DAD D 		; КООРДИНАТ О. 0.&lt;br /&gt;
	MVI В, О 	; СЛОЖИТЬ С АДРЕСОМ НАЧАЛА&lt;br /&gt;
	DAD В 		;И ПРИБАВИТЬ X&lt;br /&gt;
	POP В 		; ВОССТАНОВИТЬ&lt;br /&gt;
	POP О 		;РЕГИСТРЫ.&lt;br /&gt;
	RET&lt;br /&gt;
;ПОДПРОГРАММА ПЕРЕСЫЛКИ ЭКРАНА&lt;br /&gt;
;ВХОДНЫЕ ДАННЫЕ: ПО МРЕСУ PERES+1 ЗАСЛАТЬ:&lt;br /&gt;
;	OFFH ЭКРАН --&amp;gt; ПАМЯТЬ ООН ЭКРАН &amp;lt;-- ПАМЯТЬ &lt;br /&gt;
;ВЫХОДНЫЕ ДАННЫЕ: НЕТ&lt;br /&gt;
feres:	mvi а,0&lt;br /&gt;
	LXI H, 08D61H 	;HL - АДРЕС ПЕРЕСЫЛКИ ЭКРАНА&lt;br /&gt;
	LXI D, SCRN 	;DE - АДРЕС ЭКРАНА&lt;br /&gt;
	LXI В,1950 	;ВС - РАЗМЕР ЭКРАНА&lt;br /&gt;
	ANA A&lt;br /&gt;
	JZ ТЗ 		;ОБМЕНЯТЬ АДРЕСА, ЕСЛИ ;&lt;br /&gt;
	XCHG 		;ПЕРЕСЫЛКА В ПАМЯТЬ.&lt;br /&gt;
ТЗ:	MOV А, Н 	;ПИК/1&lt;br /&gt;
	STAX D 		;ПЕРЕСЫЛКИ.&lt;br /&gt;
	INX Н&lt;br /&gt;
	INX D&lt;br /&gt;
	DCX В&lt;br /&gt;
	MOV А, В&lt;br /&gt;
	ORA С&lt;br /&gt;
	JNZ ТЗ &lt;br /&gt;
	RET &lt;br /&gt;
&lt;br /&gt;
KOD:	DS 1 &lt;br /&gt;
ХВ:	DS 1 &lt;br /&gt;
УВ:	ds 1 &lt;br /&gt;
XN:	DS 1&lt;br /&gt;
УN:	DS 1&lt;br /&gt;
top:	ds 1&lt;br /&gt;
BOOT:	ds 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Категория:Радио-86РК/Публикации|552]]&lt;/div&gt;</summary>
		<author><name>Panther</name></author>
	</entry>
</feed>