Вторая процедура реализует оригинальную бегущую строку. С ее помощью можно выводить текст различными модифицированными шрифтами (наклонным, утолщенным) и их комбинациями. Причем вид шрифта задается всего 8 байтами. После метки TABLE я привел несколько примеров. Для того чтобы просмотреть их, нужно в строке LD DE,TABLE+16 вместо 16 подставить какое-либо другое число, кратное 8. Я думаю, после просмотра демонстрации, принцип работы процедуры станет, ясен, и читатели сами смогут придумать другие модификации шрифтов. Листинг процедуры:
30000 $
INIT
B, 2 BC
STROKA
ORG
ENT
CALL
HALT
LD
PUSH CALL
POP
DJNZ
LD
IN
RRA
JR
RET
INIT LD
LD LD LD LD RET
STROKA LD
RRCA
LD
JR
LD
LD
OR
JR
LD
LD
L1 INC
LD LD LD ADD ADD ADD LD ADD LD
BEGIN LD EXX LD EXX LD LD
L2 LD
AND EXX JR LD
L3 INC
EXX OR LD INC INC DJNZ LD LD
L41 PUSH
LD
L4 RL
DEC RL DEC RL DEC RL DEC DJNZ
BC
LOOP A, #7F A,(#FE)
C,START
HL,TEXT (STARTL),HL (COUNTL),HL A,1
(POSLET) , A
A, (POSLET)
(POSLET),A NZ,BEGIN HL,(COUNTL) A, (HL) A
NZ, L1
HL,(STARTL) A, (HL) HL
(COUNTL),HL L,A H, 0 HL, HL HL, HL HL, HL DE, (23606) HL, DE (ADRES) , HL DE,(ADRES)
DE,TABLE+16
BC,(POSLET) HL,#4 01F A,(DE)
C
Z,L3 A,(DE) DE
(HL) (HL),A H
DE
L2
HL,#4 01F
A,8 HL
B, 8 (HL) L
(HL)
L
(HL)
L
(HL)
L
L4
|
POP |
HL |
|
|
INC |
H |
|
|
DEC |
A |
|
|
OR |
A |
|
|
JR |
NZ,L41 |
|
|
RET |
|
|
. ************************** t |
POSLET |
DEFW |
#0800 |
|
COUNTL |
DEFW |
0 |
|
STARTL |
DEFW |
0 |
|
ADRES |
DEFW |
0 |
|
TEXT |
DEFM |
"NEW RUNNING LINE " |
|
DEFM |
" (C)1996 KOTLYAROV |
|
NOP |
|
|
TABLE |
DEFB |
6, 6, 6, 6, 6 |
6, 6, 6 |
|
DEFB |
3,6,12,24 |
48,96,192 |
|
DEFB |
2,2,2,2,6 |
6, 6, 6 |
|
DEFB |
6, 6,3,3, 3 |
|
|
DEFB |
3, 3,3,3,6 |
|
|
DEFB |
6, 6, 6,7,5 |
5, 5, 7 |
|
DEFB |
6,6,6,4,4 |
|
|
DEFB |
3, 3, 6, 6, 6 |
6,12,12 |