ЭТЮДЫ
Первая производит очистку экрана оригинальным способом, как бы расщепляя его, задвигая при этом вверх и вниз. Сам экран располагается с адреса BUFF и переносится самой программой. После появления картинки на экране нужно нажать SPACE для продолжения. Для изменения скорости расползания необходимо
Этюды - процедура очистки экрана оригинальным способом.
;Fz=1 -> found at HL
LP_SK1
EX LD CPIR
RET NZ ;Fz=0 -> not found
PUSH HL PUSH DE
SEEKER
(LB.SK1 + 1), A
AF.AF' A.(DE)
LD
28
29
30
31
32
33
34
35
36
NZ.SD1
DE
L_UP
DE.HL
DE
L_UP
SD
HL, 16384 C,16
JR
POP
CALL
EX
POP
CALL
DJNZ
LD
LD
изменить шаг, т.е. число линии, на которое раздвигается экран за один проход Все строки, которые нужно изменить, выделены в листинге. Длину я старался сделать как можно меньше, но получилась 171 байт.
(С) Program 'Crawl' by E.Kulikaev '96.
|
1 |
ORG |
40000 |
|
2 |
ENT |
$ |
|
3 BUFF |
EQU |
30000 |
|
4 |
LD |
HL.BUFF |
|
5 |
LD |
DE, 16384 |
|
6 |
LD |
BC.6144 |
|
7 |
LDIR | |
|
8PAU |
LD |
A,#7F |
|
9 |
IN |
A,(#FE) |
|
10 |
RRA | |
|
11 |
JR |
C,PAU |
|
12SCR1 |
LD |
В ,24/2 |
Сколько раз происходит скролинг Рассчитываемое по формуле 24/(шаг/8) число, должно быть целым.
Кол-во очищаемых сверху
|
линий. | ||
|
37 SD3 |
PUSH |
HL |
|
38 |
LD |
B,32 |
|
39 SD2 |
LD |
A,(HL) |
|
40 |
AND |
%10101010 |
|
41 |
LD |
(HL),A |
|
42 |
INC |
HL |
|
43 |
DJNZ |
SD2 |
|
44 |
POP |
DE |
|
45 |
CALL |
L DE |
|
46 |
EX |
DE.HL |
|
47 |
DEC |
С |
|
48 |
JR |
NZ.SD3 |
|
49 |
LD |
HL, 16384+6 |
ВС
13LSCR 14
PUSH LD
HL,22527-95
15
16
LD LD
, Адрес 16-ой снизу линии экрана.
DE,22527-31 В,192-16
;Кол-во скроллируемых вниз линий.
|
17 SD |
PUSH |
DE |
|
18 |
PUSH |
HL |
|
19 |
LD |
C,32 |
|
20 SD1 |
LD |
A,(DE) |
|
21 |
XOR |
(HL) |
|
22 |
AND |
% 10101010 |
|
23 |
XOR |
(HL) |
|
24 |
LD |
(DE),A |
|
25 |
INC |
DE |
|
26 |
INC |
HL |
|
27 |
DEC |
С |
Адрес 16-ой линии экрана сверху.
|
50 |
LD |
DE, 16384 |
|
51 |
LD |
B.192-16 |
|
; Кол-во скроллируемых вверх | ||
|
линий экрана. | ||
|
52 SU |
PUSH |
DE |
|
53 |
PUSH |
HL |
|
54 |
LD |
C,32 |
|
55 SU1 |
LD |
A,(DE) |
|
56 |
XOR |
(HL) |
|
57 |
AND |
%01010101 |
|
58 |
XOR |
(HL) |
|
59 |
LD |
(DE),A |
|
60 |
INC |
DE |
|
61 |
INC |
HL |
|
62 |
DEC |
С |
|
63 |
JR |
NZ.SU 1 |
ZX W/t»%
70 LD HL.22527-95
; Адрес 16-ой линии экрана снизу.
;Кол-во очищаемых внизу линий.
|
72 SU3 |
PUSH |
HL |
|
73 |
LD |
B,32 |
|
74 SU2 |
LD |
A,(HL) |
|
75 |
AND |
%01010101 |
|
76 |
LD |
(HL),A |
|
77 |
INC |
HL |
|
78 |
DJNZ |
SU2 |
|
79 |
POP |
DE |
|
80 |
CALL |
L DE |
|
81 |
EX |
DE.HL |
|
82 |
DEC |
С |
|
83 |
JR |
NZ.SU3 |
|
84 |
POP |
ВС |
|
85 |
DJNZ |
LSCR |
|
86 |
RET | |
|
87 L DE |
INC |
D |
|
88 |
LD |
A.D |
|
89 |
AND |
7 |
|
90 |
RET |
NZ |
|
91 |
LD |
A.E |
|
92 |
ADD |
A.32 |
|
93 |
LD |
E.A |
|
94 |
RET |
С |
|
95 |
LD |
A.D |
|
96 |
SUB |
8 |
|
97 |
LD |
D.A |
|
98 |
RET | |
|
99 L UP |
DEC |
D |
|
100 |
LD |
A.D |
|
101 |
AND |
7 |
|
102 |
CP |
7 |
|
103 |
RET |
NZ |
|
104 |
LD |
A.E |
ЭТЮДЫ