БЫСТРАЯ ПЕЧАТЬ 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 HL
XOR 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
LD 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 #1F
JR Z,Loop_2

LD 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,(ВС)
LD C,#00
RRA
RRA
RRA
RR C
RRA
RR C
OR (HL)
LD (HL),A
INC L
LD (HL),C
JP Loop_1
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
А теперь 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
ORG Start
Р.S. Я не ставлю свой копирайт на эти про-
цедуры, т.к. это было бы все равно что
присвоить себе (C) на процедуру DOWN_HL;)
Other articles: