![]() |
|
:: СОДЕРЖАНИЕ НОМЕРА
:: Газетные рубрики
:: АВТОРЫ
:: Поиск
:: Поддержка проекта
Webmoney:
|
:: №25 (09.09.2005) Просмотров: 5588
Рубрика: Этюды. Номер: №25 (09.09.2005). Модификация шрифтаПредлагаем вашему вниманию, несколько интересных процедур, которые <превращают> стандартный шрифт из ПЗУ, в шрифт, пригодный для печати 64-х символов в строке (один символ - 4х8 пикселей).Вообще-то, все эти процедуры были написаны специально для наших демок 512 байт, и работали только при определенных условиях. Но во время подготовки данной статьи, мы решили доработать их и сделать более универсальными. font EQU #7000;адрес
;размещения
;шрифта (2048 байт)
ORG #6000
LD HL,font+32
LD DE,#3d00
cy LD BC,#300
LD A,(DE)
RLA
cy2 RLA
JR NC,cy3
RL C
RLA
JR cy4
cy3 RLA
RL C
cy4 DJNZ cy2
LD (HL),C
INC H
INC DE
LD A,H
CP font/256+8
JR NZ,cy
LD H,font/256
INC L
JR NZ,cyНекоторые новосозданные символы, выглядят немного коряво, следующая программка их подправит. LD HL,ftab
LD DE,font+512+32
dorf LD B,(HL)
INC HL
LD C,(HL)
INC HL
INC DE
DJNZ $-1
LD A,(DE)
XOR C
LD (DE),A
LD A,(HL)
OR A
JR NZ,dorf
Посмотреть получившийся шрифт (см. рисунок внизу страницы), можно перебросив его на экран, LDIR'ом. HL, font, DE, #4000, BC, 2048, LDIR.
И напоследок, третья процедура, при помощи которой, вы сможете напечатать текст на экране (HL, адрес экрана (#4000), DE, адрес текста, CALL wyw):
wyw LD A,(DE)
INC DE
OR A
RET Z
CP 32
JR NC,$+4
LD A,32
LD C,A
LD A,(DE)
INC DE
PUSH AF,HL,DE
CP 32
JR NC,$+4
LD A,32
LD E,A
LD B,font/256
LD D,B
LD A,(BC)
LD (HL),A
LD A,(DE)
RLD
INC H
INC D
INC B
LD A,B
CP font/256+8
JR NZ,$-11
POP DE,HL,AF
INC L
OR A
JR NZ,wyw
RET
Ниже находится таблица для второй процедуры. Вы можете поэкспериментировать с BIN числами, изменяя их, вы измените вид некоторых созданных символов.
ftab DB 5,%00000100
DB 1,%00000011
DB 4,%00000110
DB 20,%00000110
DB 15,%00000010
DB 30,%00000011
DB 8,%00000101
DB 1,%00000001
DB 206,%00000001
DB 23,%00000011
DB 13,%00000101
DB 192,%00000010
DB 22,%00000110
DB 22,%00000001
DB 211,%00000001
DB 7,%00000110
DB 250,%00000100
DB 4,%00000110
DB 20,%00000110
DB 49,%00000101,0Весь код занимает 145 байт (все три процедуры + таблица).
Алексей Червов, Владислав Ювженко, |