|
Визитная карточка - прыгающая "бегущая строка".
|
Прыгающая "бегущая строка".
Перейдем к следующей процедуре. На этот раз это опять бегущая строка, вернее переделка ранее опубликованной процедуры (см. ZX-РЕВЮ-94, N1). Теперь строка может прыгать, что очень зрелищно выглядит. Данный эффект при своем действии не затирает фоновую картинку "под строкой", буквы прыгают как-бы "сквозь" изображение.
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 |
PRINT |
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 |
PRINT |
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.
★ * *
|
|