Третья программа увеличивает изображение в центре экрана на весь экран. Я не стал учитывать и атрибуты, так как программа бы выросла почти в два раза, а она и так 133 байта. Программа не использует дополнительных буферов, поэтому увеличение проходит в два этапа, так как иначе затирается еще не увеличенная часть центральной области. (С) Program 'Zoom' by E.kulikaev '96.
В строках 139-143 происходит расчет адреса в атрибутах выводимой картинки.
144
145
146 ZAM
147
LD POP NOP NOP
A,(HL) HL
Сюда программа вставляет команду 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
ORG ENT LD LD
1 2
3
4
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 |
74 LUP DEC