Третья программа увеличивает изображение в центре экрана на весь экран. Я не стал учитывать и атрибуты, так как программа бы выросла почти в два раза, а она и так 133 байта. Программа не использует дополнительных буферов, поэтому увеличение проходит в два этапа, так как иначе затирается еще не увеличенная часть центральной области. (С) Program 'Zoom' by E.kulikaev '96.
В строках 139-143 происходит расчет адреса в атрибутах выводимой картинки.
144
145
146 ZAM
147
Сюда программа вставляет команду LD А,атрибут, нужную для прорисовки выводящей линии.
148 LD |
(HL),A |
6 L1 |
PUSH |
DE |
149 RET |
|
7 |
CALL |
DOUB |
150 LINE1 LD |
HL, 256*63+6 |
8 |
CALL |
L DE |
|
2 |
9 |
PUSH |
DE |
|
|
10 |
PUSH |
ВС |
Если вы хотите изменить цвет |
11 |
LD |
ВС,32 |
линии, поменяйте число 63 на нуж |
12 |
LDIR |
|
ный атрибут. |
|
13 |
POP |
ВС |
|
|
14 |
POP |
DE |
151 LD |
(ZAM),HL |
15 |
CALL |
L DE |
152 LD |
HL, 1 |
16 |
EX |
DE.HL |
153 LD |
(ZAMP+1),HL |
17 |
POP |
DE |
154 CALL |
LINE |
18 |
CALL |
L DE |
155 LD |
HL,0 |
19 |
DJNZ |
L1 |
156 LD. |
(ZAM),HL |
20 |
LD |
HL,22527- 31 |
40000 S
HL, 16384 DE, 16384 + 201
5 LD В ,48
Высота увеличиваемой обл.
В DE адрес левого верхнего угла центральной области экрана.
21 LD DE.22527- 214
Адрес левого нижнего угла центральной обл.
22 LD В,48 Высота нижней части обл.
23 R1 |
PUSH |
DE |
24 |
CALL |
DOUB |
25 |
CALL |
L UP |
26 |
PUSH |
DE |
27 |
PUSH |
ВС |
28 |
LD |
BC.32 |
29 |
LDIR |
|
30 |
POP |
ВС |
31 |
POP |
DE |
32 |
CALL |
L UP |
33 |
EX |
DE.HL |
34 |
POP |
DE |
35 |
CALL |
L UP |
36 |
DJNZ |
R1 |
37 |
RET |
|
38 DOUB |
PUSH |
HL |
39 |
LD |
C,16 |
40 L2 |
PUSH |
ВС |
41 |
LD |
A,(DE) |
42 |
LD |
ВС, #0402 |
43 L3 |
PUSH |
ВС |
44 L4 |
RLA |
|
45 |
PUSH |
AF |
46 |
RL |
(HL) |
47 |
POP |
AF |
48 |
RL |
(HL) |
49 |
DJNZ |
L4 |
50 |
INC |
HL |
51 |
POP |
ВС |
52 |
,DEC |
С |
53 |
JR |
NZ.L3 |
54 |
INC |
DE |
55 |
POP |
ВС |
56 |
DEC |
С |
57 |
JR |
NZ,L2 |
58 |
POP |
HL |
59 |
PUSH |
HL |
60 |
POP |
DE |
61 |
RET |
|
62 L DE |
INC |
D |
63 LD
64 AND
65 RET
66 LD
67 ADD
68 LD
69 RET
70 LD
71 SUB
72 LD
73 RET
74 LUP DEC
75 LD
76 AND
77 CP
78 RET
79 LD
80 SUB
81 LD
82 RET
83 LD
84 ADD
85 LD
86 RET