Прыгающая "бегущая строка".
Перейдем к следующей процедуре. На этот раз это опять бегущая строка, вернее переделка ранее опубликованной процедуры (см. ZX-РЕВЮ-94, N1). Теперь строка может прыгать, что очень зрелищно выглядит. Данный эффект при своем действии не затирает фоновую картинку "под строкой", буквы прыгают как-бы "сквозь" изображение.
ORG
EQU
ENT
LD
LD
LD
BUFF
50000
#F000 $
HL,BUFF
D,H
E,L
ВИЗИТНАЯ КАРТОЧКА
ВИЗИТНАЯ КАРТОЧКА
|
7 |
INC |
DE |
62 |
JR |
NZ,SCROL3 | ||
|
8 |
LD |
(HL),0 |
63 |
LD |
A,(WIDTH) | ||
|
9 |
LD |
ВС,фOFFF |
64 |
DEC |
A | ||
|
10 |
LDIR |
65 |
JR |
NZ,SCROL6 | |||
|
11 |
EI |
66 |
LD |
A,(POSLET) | |||
|
12 |
LOOPl |
CALL |
SCROL |
67 |
RRCA | ||
|
13 |
CALL |
|
68 |
LD |
(POSLET),A | ||
|
14 |
HALT |
69 |
JR |
NC,SCROL7 | |||
|
15 |
CALL |
PR1 |
70 |
LD |
HL,(COUNTL) | ||
|
16 |
LD |
A,#7F |
71 |
INC |
HL | ||
|
17 |
IN |
A,(#FE) |
72 |
LD |
(COUNTL),HL | ||
|
18 |
RRA |
73 |
SCROL7 |
LD |
A,(WIDTHL) | ||
|
19 |
JR |
C,LOOPl |
74 |
SCROL6 |
LD |
(WIDTH),A | |
|
20 |
RET |
15 |
RET | ||||
|
21 |
SCROL |
LD |
IX,(COUNTL) |
76 |
|
LD |
HL,(ADR1) |
|
22 |
LD |
A,(IX+0) |
77 |
INC |
HL | ||
|
23 |
OR |
A |
78 |
LD |
(ADR1),HL | ||
|
24 |
JR |
NZ,SCROL1 |
79 |
LD |
DE,(TIME) | ||
|
25 |
LD |
IX,(STARTL) |
80 |
DEC |
DE | ||
|
26 |
LD |
A,(IX+0) |
81 |
LD |
A,D | ||
|
27 |
SCROL1 |
CP |
#20 |
82 |
OR |
E | |
|
28 |
OR |
NC,SCROL2 |
83 |
JR |
NZ ,M1 | ||
|
29 |
LD |
(WIDTH),A |
84 |
LD |
DE,{TIME1) | ||
|
30 |
LD |
(WIDTHL),A |
85 |
LD |
HL,(APR) | ||
|
31 |
INC |
IX |
86 |
LD |
(ADR1),HL | ||
|
з? |
SCROL2 |
LD |
(COUNTL),IX |
87 |
Ml |
LD |
(TIME),DE |
|
33 |
LD |
DE,(POSLET) |
88 |
LD |
B, 8 | ||
|
34 |
LD |
D, #08 |
89 |
LD |
C,(HL) | ||
|
35 |
LD |
L,(IX+0) |
90 |
LD |
DE,BUFF+#08E0 | ||
|
36 |
LD |
H,#00 |
91 |
LD |
HL,BUFF+#00E0 | ||
|
37 |
ADD |
HL,HL |
92 |
M3 |
PUSH |
ВС | |
|
38 |
ADD |
HL,HL |
93 |
PUSH |
HL | ||
|
39 |
ADD |
HL,HL |
94 |
PUSH |
DE | ||
|
40 |
LD |
BC,(#5C36) |
95 |
PUSH |
HL | ||
|
41 |
ADD |
HL,BC |
96 |
PUSH |
DE | ||
|
42 |
SCROL3 |
PUSH |
HL |
97 |
CALL |
GET P | |
|
43 |
LD |
C,D |
98 |
POP |
DE | ||
|
44 |
LD |
B,0 |
99 |
PUSH |
HL | ||
|
45 |
DEC |
С |
100 |
LD |
B, 32 | ||
|
46 |
ADD |
HL,BC |
101 |
M2 |
LD |
A,(HL) | |
|
47 |
LD |
a;(hl) |
102 |
LD |
(DE),A | ||
|
48 |
LD |
HL,BUFF+#00FF |
103 |
INC |
E | ||
|
49 |
LD |
B,D |
104 |
INC |
L | ||
|
50 |
LD |
C,0 |
105 |
DJNZ |
M2 | ||
|
51 |
DEC |
В |
106 |
POP |
HL | ||
|
52 |
ADD |
HL,BC |
107 |
POP |
DE | ||
|
53 |
LD |
B, #20 |
108 |
LD |
B, 32 | ||
|
54 |
AND |
E |
109 |
M4 |
EX |
DE,HL | |
|
55 |
CPL |
110 |
LD |
A,(DE) | |||
|
56 |
CP |
#FF |
111 |
OR |
(HL) | ||
|
57 |
SCROL4 |
RL |
(HL) |
112 |
LD |
(DE),A | |
|
58 |
DEC |
HL |
113 |
EX |
DE,HL | ||
|
59 |
DJNZ |
SCROL4 |
114 |
INC |
E | ||
|
60 |
POP |
HL |
115 |
INC |
L | ||
|
61 |
DEC |
D |
116 |
DJNZ |
M4 |
ВИЗИТНАЯ КАРТОЧКА
|
117 |
POP |
DE |
172 |
POP |
BC | |||
|
118 |
INC |
D |
173 |
DEC |
С | |||
|
119 |
POP |
HL |
174 |
DJNZ |
PR 2 | |||
|
120 |
INC |
H |
175 |
RET | ||||
|
JL21 |
POP |
BC |
176 |
WIDTHL |
DEFB |
1 | ||
|
122 |
DEC |
С |
177 |
WIDTH |
DEFB |
1 | ||
|
123 |
DJNZ |
M3 |
178 |
STARTL |
DEFW |
SCROLT | ||
|
124 |
RET |
179 |
COUNTL |
DEFW |
SCROLT | |||
|
125 |
GET_P |
LD |
A,#AF+8 |
180 |
POSLET |
DEFB |
#80 | |
|
126 |
SUB |
С |
181 |
ADR |
DEFW |
VERT | ||
|
127 |
LD |
С.A |
182 |
ADR1 |
DEFW |
VERT | ||
|
128 |
AND |
A |
183 |
TIME |
DEFW |
41 | ||
|
129 |
RRA |
184 |
TIME1 |
DEFW |
41 | |||
|
130 |
SCF |
185 |
VERT |
DEFB |
0,2,4,6,8,10,12 | |||
|
131 |
RRA |
186 |
DEFB |
14,16,17,18,19,20 | ||||
|
132 |
AND |
A |
187 |
DEFB |
20,21,21,22,22,22 | |||
|
133 |
RRA |
188 |
DEFB |
23,23,23,23,22,22 | ||||
|
134 |
XOR |
С |
189 |
DEFB |
22,21,21,20,20,19 | |||
|
135 |
AND |
#F8 |
190 |
DEFB |
18,17,16,14,12,10 | |||
|
136 |
XOR |
С |
191 |
DEFB |
8,6,4,2 | |||
|
137 |
LD |
H, A |
192 |
SCROLT |
DEFM |
"HELLO, ZAGORETS" | ||
|
138 |
LD |
A, 0 |
193 |
DEFM |
" ANDREY FROM" | |||
|
139 |
RbCA |
194 |
DEFM |
" MASTERSOFT" | ||||
|
140 |
RLCA |
195 |
DEFM |
" PRESENTS NEW" | ||||
|
141 |
RLCA |
196 |
DEFM |
" TEXT-SCROL" | ||||
|
142 |
XOR |
С |
197 |
DEFM |
" SPECIAL FOR " | |||
|
143 |
AND |
#C7 |
198 |
DEFB |
2 | |||
|
144 |
XOR |
С |
199 |
DEFM |
"SINCLAIR PRISE" | |||
|
145 |
RLCA |
200 |
DEFB |
1 | ||||
|
146 |
RLCA |
201 |
DEFM |
" IN 08.05.1995." | ||||
|
147 |
LD |
L, A |
202 |
DEFM |
" HELLOS " | |||
|
148 |
LD |
A, 0 |
203 |
DEFB |
2 | |||
|
149 |
AND |
#07 |
204 |
DEFM |
"AHRsoft," | |||
|
150 |
LD |
D, A |
205 |
DEFM |
" CONSULsoft" | |||
|
151 |
LD |
A,8 |
206 |
DEFM |
" & MASTERsoft" | |||
|
152 |
SUB |
D |
207 |
DEFB |
1 | |||
|
153 |
LD |
D, A |
208 |
DEFM |
" GOOD BYE !" | |||
|
154 |
RET |
209 |
DEFM |
" BYE! BYE!!" | ||||
|
155 |
PR1 |
LD |
HL,(ADR1) |
210 |
DEFM |
" BYE!! " | ||
|
156 |
LD |
В, 8 |
211 |
DEFM |
M II | |||
|
157 |
LD |
DE,BUFF+#08E0 |
212 |
DEFM |
II II | |||
|
158 |
LD |
C,(HL) |
213 |
DEFB |
0 | |||
|
159 |
PR2 |
PUSH |
BC | |||||
|
160 |
PUSH |
DE |
Длина |
блока кодов без текста | ||||
|
161 |
PUSH |
DE |
(до метки SCROLT) 346 байт, вмес | |||||
|
162 |
CALL |
GET P |
те с |
: демонстрационным текстом - | ||||
|
163 |
POP |
DE |
572 |
байта. |
Шестнадцатиричный | |||
|
164 |
LD |
B, 32 |
дамп: | |||||
|
165 |
PR3 |
LD |
A,(DE) | |||||
|
166 |
LD |
(HL),A |
С350 |
i: 21 |
00 FO 54 5D 13 36 00 :1Е | |||
|
167 |
INC |
E |
С358 |
t: 01 |
FF OF ED BO FB CD 70 :FF | |||
|
168 |
INC |
L |
С360 |
с C3 |
CD DF C3 76 CD 53 C4 :AF | |||
|
169 |
DJNZ |
PR3 |
С368 |
li 3E |
7F DB FE IF 38 EF C9 iDO | |||
|
170 |
POP |
DE |
С370 |
i: DD |
2A 76 C4 DD 7E 00 B7 :86 | |||
|
171 |
INC |
D |
С378 |
i: 20 |
07 DD 2A 74 C4 DD 7E :FC | |||
ВИЗИТНАЯ КАРТОЧКА
|
С380 |
00 |
FE |
20 |
30 |
08 |
32 |
73 |
С4 |
02 |
С538: 52 73 6F 66 74 01 20 20 :4С |
|
С388 |
32 |
72 |
С4 |
DD |
23 |
DD |
22 |
76 |
28 |
С540: 20 20 20 20 20 47 4F 4F :8А |
|
С390 |
С4 |
ED |
5В |
78 |
С4 |
16 |
08 |
DD |
96 |
С548: 44 20 42 59 45 20 21 20 :В2 |
|
С398 |
6Е |
00 |
26 |
00 |
29 |
29 |
29 |
ED |
57 |
С550: 20 20 20 20 42 59 45 21 i96 |
|
СЗАО |
4В |
36 |
5С |
09 |
Е5 |
4А |
06 |
00 |
7Е |
С558: 20 20 42 59 45 21 21 20 : 9F' |
|
СЗА8 |
OD |
09 |
7Е |
21 |
FF |
F0 |
42 |
ОЕ |
5F |
С560: 20 42 59 45 21 21 21 20 :А8 |
|
СЗВО |
00 |
05 |
09 |
06 |
20 |
A3 |
2F |
FE |
77 |
С568: 20 20 20 20 20 20 20 20 :2D |
|
СЗВ8 |
FF |
СВ |
16 |
2В |
10 |
FB |
Е1 |
15 |
87 |
С570: 20 20 20 20 20 20 20 20 :35 |
|
СЗСО |
' 20 |
Е2 |
ЗА |
73 |
С4 |
3D |
20 |
13 |
66 |
С578: 20 20 20 20 20 20 20 20 :3D |
|
СЗС8 |
ЗА |
78 |
С4 |
OF |
32 |
78 |
С4 |
30 |
АЕ |
С580: 20 2Q 20 20 20 20 20 20 :45 | |
|
C3D0 |
07 |
2А |
76 |
С4 |
23 |
22 |
76 |
С4 |
7D |
С588: 20 20 20 00 00 00 00 00 :AD | |
|
C3D8 |
ЗА |
72 |
С4 |
32 |
73 |
С4 |
С9 |
2А |
67 |
1 |
|
СЗЕО |
7В |
С4 |
23 |
22 |
7В |
С4 |
ED |
5В |
АЕ |
Об особенностях программы. |
|
СЗЕ8 |
7D |
С4 |
1В |
7А |
ВЗ |
20 |
OA |
ED |
4В |
Текст располагается с адреса |
|
C3F0 |
5В |
7F |
С4 |
2А |
79 |
С4 |
22 |
7В |
55 |
50346. Предпочтительно применение |
|
C3F8 |
С4 |
ED |
53 |
7D |
С4 |
06 |
08 |
4Е |
5С |
Стилизованного символьного набо |
|
С400 |
11 |
ЕО |
F8 |
21 |
ЕО |
F0 |
С5 |
Е5 |
48 |
ра. При этом переход на него вы |
|
С408 |
D5 |
Е5 |
D5 |
CD |
2Е |
С4 |
D1 |
Е5 |
DO |
полняется традиционно - изменени |
|
С410 |
06 |
20 |
7Е |
12 |
1С |
2С |
10 |
FA |
DC |
ем CHARS - двухбайтовой системной |
|
С418 |
Е1 |
D1 |
06 |
20 |
ЕВ |
1А |
В6 |
12 |
81 |
переменной по адресу 23606/07. |
|
С420 |
ЕВ |
1С |
2С |
10 |
F7 |
D1 |
14 |
Е1 |
Е4 |
Однако, можно сделать замену: |
|
С428 |
24 |
С1 |
0D |
10 |
D9 |
С9 |
ЗЕ |
В7 |
85 | |
|
С4 30 |
91 |
4F |
А7 |
IF |
37 |
1F |
А7 |
1F |
Вб |
40 LD ВС,ADR-256 |
|
С438 |
А9 |
Е6 |
F8 |
А9 |
67 |
ЗЕ |
00 |
07 |
D8 | |
|
С440 |
07 |
07 |
А9 |
Е6 |
С7 |
А9 |
07 |
07 |
IF |
где ADR - адрес загрузки стилизо- I |
|
С448 |
6F |
ЗЕ |
00 |
Е6 |
07 |
57 |
ЗЕ |
08 |
43 |
ванного символьного набора. Тогда В |
|
С450 |
92 |
57 |
С9 |
2А |
7В |
С4 |
06 |
08 |
3D |
специальное переключение CHARS не |
|
С458 |
11 |
ЕО |
F8 |
4Е |
С5 |
D5 |
D5 |
CD |
8F |
понадобится. |
|
С460 |
2Е |
С4 |
D1 |
06 |
20 |
1А |
77 |
1С |
ВА |
Кроме самой программы, текста |
|
С468 |
2С |
10 |
FA |
D1 |
14 |
С1 |
0D |
10 |
25 |
и стилизованного символьного на |
|
С470 |
ЕВ |
С9 |
01 |
01 |
АА |
С4 |
АА |
С4 |
С6 |
бора (при необходимости), для ра |
|
С478 |
80 |
81 |
С4 |
81 |
С4 |
29 |
00 |
29 |
98 |
боты еще требуется буферная об |
|
С480 |
00 |
00 |
02 |
04 |
06 |
08 |
OA |
ОС |
6Е |
ласть памяти объемом 4К. В данном в |
|
С488 |
ОЕ |
10 |
11 |
12 |
13 |
14 |
14 |
15 |
DD |
случае эта область находится по |
|
С490 |
15 |
16 |
16 |
16 |
17 |
17 |
17 |
17 |
07 |
адресу #F000 (61440). Иными сло |
|
С498 |
16 |
16 |
16 |
15 |
15 |
14 |
14 |
13 |
03 |
вами, эта область памяти (по ад |
|
С4А0 |
12 |
11 |
10 |
ОЕ |
ОС |
OA |
08 |
06 |
С9 |
рес #FFFF включительно) недоступ |
|
С4А8 |
04 |
02 |
48 |
45 |
4С |
4С |
4F |
2С |
12 |
на для других целей. В нее копи |
|
С4В0 |
20 |
5А |
41 |
47 |
4F |
52 |
45 |
54 |
ВО |
руется изображение, которое нахо |
|
С4В8 |
53 |
20 |
41 |
4Е |
44 |
52 |
45 |
59 |
В2 |
дится за "строкой". |
|
С4СО |
20 |
46 |
52 |
4F |
4D |
20 |
4D |
41 |
86 |
Для очистки буферной области |
|
С4С8 |
53 |
54 |
45 |
52 |
53 |
4F |
46 |
54 |
06 |
памяти в авторский вариант прог |
|
C4D0 |
20 |
50 |
52 |
45 |
53 |
45 |
4Е |
54 |
D5 |
раммы добавлены строки 4-10. Ад |
|
C4D8 |
53 |
20 |
4Е |
45 |
57 |
20 |
54 |
45 |
В2 |
рес этой области легко можно из |
|
С4ЕО |
58 |
54 |
2D |
53 |
43 |
52 |
4F |
4С |
00 |
менить, он задается в строке 2 |
|
С4Е8 |
20 |
53 |
50 |
45 |
43 |
49 |
41 |
4С |
CD |
(прим.ИФК). |
|
C4F0 |
20 |
46 |
4F |
52 |
20 |
02 |
53 |
49 |
79 |
Теперь о том, как задавать |
|
C4F8 |
4Е |
43 |
4С |
41 |
49 |
52 |
20 |
50 |
Е5 |
амплитуду и периодичность "прыж |
|
С500 |
52 |
49 |
53 |
45 |
01 |
20 |
49 |
4Е |
ВО |
ков" бегущей строки. В строках |
|
С508 |
20 |
30 |
38 |
2Е |
30 |
35 |
2Е |
31 |
47 |
185-191 расположена таблица |
|
С510 |
39 |
39 |
35 |
2Е |
20 |
48 |
45 |
4С |
A3 |
"прыжков". Числа - это координаты |
|
С518 |
4С |
4F |
53 |
20 |
02 |
41 |
48 |
52 |
С8 |
бегущей строки по вертикали. Из |
|
С520 |
73 |
6F |
66 |
74 |
2С |
20 |
43 |
4F |
7F |
менив их, можно заставить бегущую |
|
С528 |
4Е |
53 |
55 |
4С |
73 |
6F |
66 |
74 |
ЕВ |
строку "прыгать" по-другому. В |
|
CJ530 |
20 |
26 |
20 |
4D |
41 |
53 |
54 |
45 |
D5 |
строках 183 и 184 надо занести |
ВИЗИТНАЯ КАРТОЧКА
длину полученной таблицы в байтах. Это число должно быть равно общему количеству цифр в строках 185-191.
★ * *