Рассмотрим теперь еще одну
интересную процедуру, позаим-
ствованную из программы COMANDO
TRACER. Она похожа на плавное
"затухание" экрана из программы
"ZYNAPS", но только предназна-
чена не для всего экрана, а для
заданного прямоугольного окна
экрана. Листинг процедуры:
1420.
DB5B 210509 LD HL,#0905
DB5E CD92DB CALL #DB92
DB61 CDA4DB CALL #DBA4
DB64 3E08 LD A,#08
DB66 08 EX AF,AF'
DB67 E5 PUSH HL
DB68 0604 LD B,#04
DB6A CDAEDB CALL #DBAE
DB6D 0E06 LD C,#06
DB6F 0616 LD B,#16
DB71 7E LD A,(HL)
DB72 E607 AND #07
DB74 CA78DB JP Z,#DB78
DB77 3D DEC A
DB78 77 LD (HL),A
DB79 2C INC L
DB7A 10F5 DJNZ #DB71
DB7C 7D LD A,L
DB7D C60A ADD A,#0A
DB7F 6F LD L,A
DB80 D284DB JP NC,#DB84
DB83 24 INC H
DB84 0D DEC C
DB85 C26FDB JP NZ,#DB6F
DB88 E1 POP HL
DB89 08 EX AF,AF'
DB8A 3D DEC A
DB8B F266DB JP P,#DB66
DB8E C9 RET
------------------------------
DB92 C5 PUSH BC
DB93 7C LD A,H
DB94 47 LD B,A
DB95 E618 AND #18
DB97 F640 OR #40
DB99 67 LD H,A
DB9A 78 LD A,B
DB9B 0F RRCA
DB9C 0F RRCA
DB9D 0F RRCA
DB9E E6E0 AND #E0
DBA0 B5 OR L
DBA1 6F LD L,A
DBA2 C1 POP BC
DBA3 C9 RET
------------------------------
DBA4 7C LD A,H
DBA5 0F RRCA
DBA6 0F RRCA
DBA7 0F RRCA
DBA8 E603 AND #03
DBAA C658 ADD A,#58
DBAC 67 LD H,A
DBAD C9 RET
------------------------------
DBAE 76 HALT
DBAF 10FD DJNZ #DBAE
DBB1 C9 RET
2
Процедура выполняет в задан-
ном прямоугольном окне плавное
выключение цвета INK от белого
до черного, при этом PAPER будет
черным.
Перед запуском процедуры дол-
жны быть заданы следующие исход-
ные данные. В команде по адресу
DB5BH в регистре HL должны быть
заданы координаты в знакоместах
левого верхнего угла очищаемого
окна, а именно, в H - строка; в
L - колонка. В команде по адре-
су DB6DH в регистре C задается
высота окна в строках. В коман-
де по адресу DB6FH в регистре B
задается ширина окна в знакомес-
тах. Кроме этого, в команде по
адресу DB7DH в качестве числово-
го параметра должно быть задано
число, равное 32 минус ширина
окна в знакоместах. То есть для
нашего примера, при ширине окна
22 знакоместа (в регистре B бы-
ло задано 16H), числовой пара-
метр в команде по адресу DB7DH
должен быть равен 10 (0A).
Постоянная времени процедуры
очистки окна может регулировать-
ся в широких пределах при помо-
щи изменения числового парамет-
ра в команде по адресу DB68H.
Здесь в регистр В заносится па-
раметр цикла задержки (подпрог-
рамма DBAEH).
Для получения блока кодов
"затухания окна" можно восполь-
зоваться Бейсик-программой:
1 READ ram: CLEAR ram: READ f
$: READ st: READ len: FOR a=st T
O st+len-1: READ b: POKE a,b: NE
XT a: SAVE f$CODE st,len
10 DATA 56154,"tr3",56155,87
100 DATA
033,005,009,205,146,219,205,164,
219,062,008,008,229,006,004,205,
174,219,014,006,006,022,126,230,
007,202,120,219,061,119,044,016
110 DATA
245,125,198,010,111,210,132,219,
036,013,194,111,219,225,008,061,
242,102,219,201,000,000,000,197,
124,071,230,024,246,064,103,120
120 DATA
015,015,015,230,224,181,111,193,
201,124,015,015,015,230,003,198,
088,103,201,118,016,253,201
Ниже приведена Бейсик-прог-
рамма, демонстрирующая "затуха-
ние окна". Здесь в строке 30 на
экран может быть загружена лю-
бая картинка-заставка.
10 BORDER 0: PAPER 0: INK 7: C
LEAR 56154
20 LOAD "tr3"CODE
30 LOAD "tracer $"CODE 16384
40 BEEP .1,26: BEEP .1,20: PAU
SE 0
50 RANDOMIZE USR 56155
На этом заканчиваем разборку
программы COMANDO TRACER.