Body #06
20 июня 1997

PUSH HL - Печать текста с точностью до пикселя по координате Y.

<b>PUSH HL</b> - Печать текста с точностью до пикселя по координате Y.
┌══════════════════════════════════════════════════════════════┐
│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ PUSH HL ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│
└══════════════════════════════════════════════════════════════┘
(C) SATSOFT					   PHN.270-72-36

Я  ПРЕДЛАГАЮ  ВАШЕМУ ВНИМАНИЮ ПРОЦЕДУРУ СТИВА ТЕРНЕРА ДЛЯ ПЕЧАТИ
ТЕКСТОВЫХ СООБЩЕНИЙ В ЛЮБОЙ ТОЧКЕ ЭКРАНА С ТОЧНОСТЬЮ ДО ПИКСЕЛА,
А  НЕ  ТОЛЬКО  В КООРДИНАТАХ ЗНАКОМЕСТ.ЭТА ПРОГРАМКА БЫЛА СЛЕГКА
МНОЮ  ОТТЕСТИРОВАНА  В  ALASM'Е,  ТАК ЧТО ОШИБОК В НЕЙ НЕ ДОЛЖНО
БЫТЬ.   КОММЕНТАРИЕВ,Я  НАДЕЮСЬ,К  ДАННОЙ  ПРОГРАММЕ  ДАВАТЬ  НЕ
НАДО,Т.К.  ВСЕ ВЫ НАВЕРНОЕ ОБРАЗОВАННЫЕ ЛЮДИ.МОГУ СКАЗАТЬ ТОЛЬКО
ОДНО - НЕ ЗАБЫВАЙТЕ СТАВИТЬ ДЛИНУ СТРОКИ.

               ;ПЕЧАТЬ ТЕКСТА С ТОЧНОСТЬЮ ДО ПИКСЕЛА
        ORG 40000
	LD A,1	            ;НОМЕР СООБЩЕНИЯ В КИЛОГРАММАХ   :)
	LD D,99	            ;КООРДИНАТА Y В ПИКСЕЛАХ ОТ 0 ДО 184
	LD E,3              ;КООРДИНАТА Х В ЗНАКОМЕСТАХ 0 ДО 31
	CALL TEXT
	LD A,2
	LD D,120
	LD E,8
	CALL TEXT
	RET
	                     ;ПОДПРОГРАММА ТЕХТ
	                     ;А - НОМЕР СООБЩЕНИЯ
	                     ;DE- КООРДИНАТЫ ПЕЧАТИ
TEXT	LD HL,TXADD
LOOK	LD B,0
	JR GOTRY
LONG	LD C,(HL)            ;ПОИСК ТЕКСТА
	INC HL
	ADD HL,BC
GOTRY	DEC A
	JR NZ,LONG
	CALL PRINT
	RET
PRINT	LD (INPUT),HL
	LD A,D
	AND #38	             ;ОПРЕДЕЛЯЕМ РЯД
	ADD A,A
	ADD A,A
	ADD A,E	             ;ПРИБАВИЛИ Х
	LD E,A	             ;МЛАДШИЙ БАЙТ
	LD A,D
	RRA
	RRA
	RRA
	AND #18	             ;ОПРЕДЕЛЯЕМ ТРЕТЬ ЭКРАНА
	LD C,A
	LD A,D
	AND #07	             ;СТРОКА В РЯДУ
	ADD A,C
	ADD A,#40            ;СТАРШИЙ БАЙТ
	LD D,A
	LD HL,(INPUT)
	LD A,(HL)
	AND A
	RET Z	             ;НЕВЕРНОЕ ЗНАЧЕНИЕ
	LD C,A
PROLET	LD (OUTPUT),DE
	INC HL
	LD (INPUT),HL
	LD A,(HL)
	CP #FF
	JR NZ,CHAR
	                     ;ПЕРЕХОД К НОВОЙ СТРОКЕ
	                     ;ПОД ПЕРВОЙ ПОЗИЦИЕЙ
	                     ;ПЕЧАТИ
	LD DE,(OUTLIN)
	LD A,E
	ADD A,#20
	LD E,A
	RET NC
	LD A,D     	     ;ДРУГАЯ ТРЕТЬ ЭКРАНА
	ADD A,8
	CP #58
	RET NC
	LD D,A
	LD (OUTLIN),DE
	JR REJOIN
CHAR	LD L,A     	     ;ПОИСК СИМВОЛА
	LD H,0
	ADD HL,HL
	ADD HL,HL
	ADD HL,HL
	LD DE,(CHASET)
	ADD HL,DE
	LD DE,(OUTPUT)
	LD A,D
	CP #58
	RET NC
 	LD B,8
EIGHT	LD A,(HL)            ;ВЫДАЕТ 8 СТРОК СИМВОЛА
	LD (DE),A
	INC HL
	LD A,D
	AND 7
	INC A
	CP 8
	JR NZ,NONEW
	LD A,D
	AND #F8
	LD D,A
	LD A,E
	ADD A,#20
	LD E,A
	JR NC,NEXTSL
	LD A,D
	ADD A,8
	LD D,A
NONEW	INC D
NEXTSL	DJNZ EIGHT
	LD DE,(OUTPUT)
NEXTLT	INC E
	JR NZ,REJOIN
	LD A,D
	ADD A,8
	LD D,A
REJOIN	LD HL,(INPUT)
	DEC C
	JR NZ,PROLET
	RET
OUTLIN	DEFW 0                 ;НАЧАЛЬНАЯ СТРОКА
OUTPUT	DEFW 0	               ;АДРЕС ПЕЧАТИ
INPUT	DEFW 0	               ;АДРЕС ТЕКСТА
CHASET	EQU 23606              ;УКАЗЫВАЕТ НА АДРЕС ШРИФТА В ПЗУ
		               ;МИНУС 256 БАЙТ
	                       ;ТАБЛИЦА ТЕКСТА
TXADD   DEFB 26		       ;ДЛИНА ДАННОЙ СТРОКИ В СИМВОЛАХ
	DEFB "HELLO ALL READERS OF BODY!"
        DEFB 16		       ;ДЛИНА ДАННОЙ СТРОКИ В СИМВОЛАХ
        DEFB "TO BE CONTINUED!"

>ASSEMBLE
#0079
 SYMBOLS:#C04B-#FED1
TOTAL ERRORS:#0000



Другие статьи номера:

GAME Обзор - Краткий обзор новых игрушек и демок : Dandy, G-Man, Little Computer People, Operation Wolf, Ugliblaster, Defenders of the Earth, Zero Info, Insane, Stress, Blood Jack, F.S.R.D., Geography.

PUSH HL - Печать текста с точностью до пикселя по координате Y.

Давайте посмеемся - Ответы GIVER'a на задачки первого номера.

Новости - О свежих новостях из Гомеля.

От авторов - О новых рубриках газеты.

Реклама - Реклама и объявления ...


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Приложение - упаковщик экранных файлов LazyPack 2.0.
Информация - Для личных писем.
TOP 13 - Лучшая тринашка игр.
AMIGA vs PC - Основные особенности различных моделей Амиг.
Вступление - о новом номере газеты.

В этот день...   21 ноября