Funeral
#01
12 февраля 1999 |
![]() |
Code on! - процедура быстрой печати 42 и 64 символа в строке.

БЫСТРАЯ ПЕЧАТЬ 42, 64 СИМВОЛА В СТРОКЕ. (C) Eraser/Delirium Tremens __________________________________________Вроде нормальная, хотя в будующем ее нем- ного улучшем (у нас уже есть некоторые идеи...). Ну а теперь перейдем непосредственно к самой статье... Как-то решил я от безделья порыться в различных СМИ: читаю: "печать 42 символа", "печать 64 символа". Думаю - крутяк, срав- ню со своими... Но, обломчик получается. Скорость поражает (даже в оболочке Text Maker`а скорость выше!). Ну да ладно. Вот я и решил опубликовать на самом деле ultra fast печаталки (они применены в ТМ и ес- тественно в "гляделки" нашего журнала). Начнем с 42 - символьной. Шрифт линейный: ;+-------------------------------------------------------------+ ;│ Ultra-Fast печаталка на 42 символа: Eraser/Delirium Tremens │ ;+-------------------------------------------------------------+ ;│Вход: HL - адрес печати на экране │ ;│ #ХХ28 - адрес расположения данных для печати (42 byte)│ ;│Выход: HL - адрес след. строчки на°экране │ ;│ DE - адрес расположения данных для печати │ ;+-------------------------------------------------------------+ ORG #C000 FONT42 + INCBIN "font_u" ORG #б028 SPACE DEFB "*************** FUNeral #01 **************" Start LD HL,#4000 CALL PR_42 RET![]()
ай, пиплы! Ну как вам наша оболочка?
PR_42 PUSH HLLD A,(ВС) RRA RRA OR (HL) LD (HL),A LD A,(DE) INC Е LD C,A LD A,(ВС) INC L LD (HL),A LD A,L CPL AND #1FXOR A
LD (HL),A
INC H
LD (HL),A
INC H
LD (HL),A
INC H
LD (HL),A
INC H
LD (HL),A
INC H
LD (HL),A
INC H
LD (HL),A
INC H
LD (HL),A
POP HL
![]()
LD В,'FONT42
LD DE,SPACE
Loop_1 LD A,(DE)
INC Е
LD C,A
JR Z,Loop_2LD C,#00 RRA RRA RRA RR C RRA RR C OR (HL) LD (HL),A INC L LD (HL),CLD A,(DE)
INC Е
LD C,A
LD A,(ВС)
RLA
LD C,A
LD A,#00
RLA
RL C
RLA
OR (HL)
LD (HL),A
INC L
LD (HL),C
LD A,(DE)
INC Е
LD C,A
LD A,(ВС)
JP Loop_1А теперь 64 - символа. Напечатать их го- раздо проще,т.к. нет никакой "заумной" ро- тации и т.д. и т.п. Все же очень элемен- тарно: в одно знакомство входят два сим- вола (4*8)... Шрифт, как и для 42 - символов, линейный. В одной матрице содержатся две копии сим- вола: ;+-------------------------------------------------------------+ ;│ Ultra-Fast печаталка на б4 символа: Eraser/Delirium Tremens │ ;+-------------------------------------------------------------+ ;│Вход: HL - адрес печати на экране │ ;│ DE - адрес расположения данных для печати (б4 byte)│ ;│Выход: HL - адрес след. строчки в curmehte° │ ;+-------------------------------------------------------------+ ORG #C000 FОNTбЧ +INCBIN "б4_ТАВ" ORG #б000 Start LD HL,#4000 LD DE,SPACE CALL PRT_б4 RET SPACE DEFB "*************************** FUNeral #01 *********" DEFB "***************" PRT_б4 LD В,#40/#02 Loop_б4 PUSH ВС LD A,(DE) CALL PR_б4_L INC DE LD A,(DE) CALL PR_б4_R INC DE POP ВС DJNZ Loop_б4 RET PR_б4_L LD В,'FОNTбЧ; Печать в левой части знакоместа LD C,A DUP 7 LD A,(ВС) AND #F0 LD (HL),A INC H INC В EDUP LD A,(ВС) AND #F0 LD (HL),A LD A,H SUB #07 LD H,A RET PR_б4_R LD В,'FОNTбЧ; Печать в правой части знакоместа LD C,A![]()
Loop_2 LD A,L
AND #Е0
LD L,A
INC H
INC В
LD A,H
AND #07
LD Е,#28
JR NZ,Loop_1
LD A,L
ADD A,#20
LD L,A
RET C
LD A,H
SUB #08
LD H,A
RET
![]()
ORG Start
DUP 7ORG Start Р.S. Я не ставлю свой копирайт на эти про- цедуры, т.к. это было бы все равно что присвоить себе (C) на процедуру DOWN_HL;)LD A,(ВС)
AND #0F
OR (HL)
LD (HL),A
INC H
INC В
EDUP
LD A,(ВС)
AND #0F
OR (HL)
LD (HL),A
LD A,H
SUB #07
LD H,A
INC L
RET
;
![]()
Другие статьи номера:
Похожие статьи:
В этот день... 31 марта