|
Этюды - несколько слов по поводу запуска прерываний 2 рода.
|
Параметры измененного кодов будут следующими:
00451 PUSH AF
00452 RLA
00453 OR С
00454 LD С,A
00455 POP AF
Следует сказать несколько слов по поводу запуска прерываний 2 рода. В строках 80 и 150 задается старший байт адреса, то есть при прерывании произойдет переход по адресу, заданному в &30FF. Там (в ПЗУ) будет считан адрес ФЕВЗО, то есть 60208. В связи с таким способом запуска, эта программа не пойдет на компьютерах, в которых некорректно обрабатываются прерывания 2 рода - для них придется организовывать 257-байтовый буфер в свободной области памяти так, как это обычно делается для обеспечения совместимости (см. например, гХ-РЕВЮ-94, N4, стр.52).
Кроме того, при тестировании неудобен тот факт, что программа состоит фактически из четырех кусков (с адресов 40000, 41000, 42000 и 60208). Последний блок, кстати, совпадает с кодами широко распространенного ассемблера ZEUS, из-за чего становится затруднительно его использование. С целью создания компактного блока кодов можем порекомендовать следующие изменения:
00020 ORG
00080 LD
00150 LD
00130 ;
00140 CONT DX
00200 ;
00210 STOP DI
00250 ;
В ячейке f03FF ПЗУ будет считан адрес Ф986С, а адрес в единственной директиве ORG в 20 строке рассчитан таким образом, что
Start of object: #984А (38986) Length : #009Е (00158)
Executes : #984А (38986)
Шестнадцатиричный дамп блока для тестирования б/с:
984А |
F3 |
ЗЕ |
80 |
32 |
С8 |
98 |
2А |
СВ |
1А |
9852 |
98 |
22 |
С9 |
98 |
ЗЕ |
03 |
ED |
47 |
7А |
985А |
ED |
5Е |
FB |
С9 |
F3 |
ЗЕ |
03 |
ED |
22 |
9862 |
47 |
ED |
5Е |
FB |
С9 |
F3 |
ED |
46 |
76 |
986А |
FB |
С9 |
F5 |
С5 |
D5 |
Е5 |
2А |
С9 |
2D |
9872 |
98 |
6Е |
26 |
00 |
29 |
29 |
29 |
ED |
9Е |
987А |
5В |
36 |
5С |
19 |
ЕВ |
01 |
08 |
20 |
2С |
9882 |
21 |
1F |
40 |
ЗА |
С8 |
98 |
F5 |
С5 |
ЕЕ |
988А |
Е5 |
4F |
F5 |
17 |
В1 |
4F |
F1 |
1А |
6D |
9892 |
А1 |
2F |
FE |
FF |
СВ |
16 |
2В |
10 |
13 |
989А |
FB |
Е1 |
С1 |
F1 |
24 |
13 |
0D |
20 |
24 |
98А2 |
Е5 |
0F |
32 |
С8 |
98 |
FE |
80 |
СС |
0А |
98АА |
ВЗ |
98 |
Е1 |
D1 |
С1 |
F1 |
СЗ |
38 |
ЕС |
98В2 |
00 |
2А |
С9 |
98 |
23 |
7Е |
В7 |
28 |
55 |
98ВА |
04 |
22 |
С9 |
98 |
С9 |
2А |
СВ |
98 |
2F |
98С2 |
22 |
С9 |
98 |
Е1 |
18 |
Е4 |
80 |
CD |
07 |
98СА |
98 |
CD |
98 |
42 |
79 |
20 |
4F |
6С |
F5 |
98D2 |
65 |
67 |
20 |
59 |
61 |
6Е |
6В |
6F |
58 |
98DA |
76 |
73 |
6В |
69 |
79 |
20 |
31 |
39 |
32 |
98Е2 |
39 |
34 |
20 |
20 |
20 |
00 |
00 |
00 |
47 |
(С) Сергей Каминский,
г.Минск, 1995.
Предлагаю программу, выполняющую спрайтовый скроллинг для спрайтов размером 2x2 знакоместа. По существу это бегущая строка с символами повышенного качества. Такая строка смотрится гораздо приятнее, чем предложенная в ZX-PEBI0-94, N1, стр.48. Правда, для нее нужен специально сформированный символьный набор в спрайтовом формате, но, я думаю, что у каждого пользователя, который немного разбирается с кодами, найдется спрайт-editor, в котором можно нарисовать все буквы и составить из них символьный набор. Последний будет иметь длину 76Р*4«3072 байта.
ЭТЮДЫ
00001 |
; SPRITE SCROLL |
00560 |
JR |
NZ,NEXTA |
00002 |
; (с) |
MASTSOFT * 1994 |
00570 |
LD |
HL„TEXT |
00010 |
|
ORG |
40000 |
00580. |
LD |
(TEXTP),HL |
00020 |
|
ENT |
|
00590 |
JR |
NEXTB |
00030 |
|
CALL |
INIT |
00600 NEXTA |
INC |
HL |
00040 |
|
CALL |
SCROLL |
00610 |
LD |
(TEXTP),HL |
00050 |
|
RET |
|
00620 NEXTB |
SUB |
32 |
00060 |
INIT |
LD |
HL,BUF1 |
00630 |
LD |
H,0 |
00070 |
|
LD |
DE,BUF1+1 |
00640 |
LD |
L,A |
00080 |
|
LD |
ВС,31 |
00650 |
ADD |
HL,HL |
00090 |
|
LD |
(HL),0 |
00660 |
ADD |
HL,HL |
00100 |
|
LDIR |
|
00670 |
ADD |
HL,HL |
00110 |
|
LD |
HL,TEXT |
00680 |
ADD |
HL,HL |
00120 |
|
LD |
(TEXTP),HL |
00690 |
ADD |
HL,HL |
00130 |
|
LD |
HL,41000 |
00700 |
LD |
DE,(FONT) |
00140 |
|
LD |
(FONT),HL |
00710 |
ADD |
HL,DE |
00150 |
|
LD |
A,16 |
00720 |
LD |
DE,BUF1 |
00160 |
|
LD |
(COL),A |
00730 |
LD |
ВС, 32 |
00170 |
|
RET |
|
00740 |
LDIR |
|
00180 |
SCROLL |
LD |
A,(COL) |
00750 |
RET |
|
00190 |
|
CP |
0 |
00760 COL |
DEFB |
16 |
00200 |
|
JR |
Z,LDCOL |
00770 TEXTP |
DEFW |
TEXT |
00210 |
|
DEC |
A |
00780 FONT |
DEFW |
41000 |
00220 |
|
LD |
(COL),A |
00790 BUF1 |
DEFS |
32 |
00230 |
|
JR |
NEXT |
00800 TEXT |
DEFM |
"Copyright" |
00240 |
LDCOL |
CALL |
LDIRB |
00810 |
DEFM |
H by H |
00250 |
|
LD |
A, 16 |
00820 |
DEFM |
"MASTSOFT " |
00260 |
|
LD |
(COL),A |
00830 |
DEFM |
"1994" |
00270 |
NEXT |
LD |
HL,#50DF |
00840 |
DEFB |
255 |
00280 |
|
LD |
IX,BUF1+1 |
|
|
|
00290 |
|
LD |
B, 2 |
Start of object: #9C40 (40000) |
00300 |
LOOP |
PUSH |
ВС |
Length |
: #00D7 (00215) |
00310 |
|
PUSH |
HL |
Executes |
: #9C40 (40000) |
00320 |
|
LD |
B, 8 |
|
|
|
00330 |
LOOPl |
PUSH |
ВС |
Остается только добавить, как |
00340 |
|
PUSH |
HL |
запускать этот |
блок |
из Бейсика |
00350 |
|
RL |
(IX+0) |
(подсказка для |
начинающих): |
00360 |
|
RL |
(IX-1) |
|
|
|
00370 |
|
LD |
B, 32 |
10 RANDOMIZE |
USR 40000: |
00380 |
LOOP 2 |
RL |
(HL) |
REM Инициализация переменных |
00390 |
|
DEC |
HL |
20 RANDOMIZE |
USR 40003: |
00400 |
|
DJNZ |
LOOP 2 |
REM Скроллинг' на 1 пиксел |
00410 |
|
POP |
HL |
30 PAUSE 1: |
GO TO |
20 |
00420 |
|
POP |
ВС |
|
|
|
00430 |
|
INC |
IX |
Да, кстати, |
не забудьте загру- |
00440 |
|
INC |
IX |
зить Ваш символьный |
набор по ад- |
00450 |
|
INC |
H |
ресу 41000 или |
по тому, который |
00460 |
|
DJNZ |
LOOPl |
будет установлен в переменной |
00470 |
|
POP |
HL |
FONT. |
|
|
00480 |
|
POP |
ВС |
|
|
|
00490 |
|
LD |
DE,#20 |
Несколько слое хотим добавить |
00500 |
|
ADD |
HL,DE |
все же по поводу символьного на |
00510 |
|
DJNZ |
LOOP |
бора. Конструирование его при по |
00520 |
|
RET |
|
мощи редактора спрайтов по нашему |
00530 |
LDIRB |
LD |
HL,(TEXTP) |
мнению неудобно. Поэтому можно |
00540 |
|
LD |
A,(HL) |
поступить проще |
. Сначала, при по- |
00550 |
|
CP |
#FF |
мощи ARTSTUDIO> |
изображаем все |
этюды
символы символьного набора в масштабе 2x1, начиная с левого верхнего угла экрана так, как это показано на рисунке (в меню Text включены опции: Double height, Double width, Snap hrz., Snap urt):
01234-56789: ; < = >? 0flBCDEFGHIJKLMNO PORSTUUUXYZ Z1 +_ £abcdefghi J кimno pqrStUVWXyZ-C I У
Этот рисунок берем за основу. Телерь можно редактировать каждый символ на экране, пользуясь лупой. Надо только следить за соблюдением границ символов, чтобы не выйти ненароком за 16x16 пикселов. Уместно, по-видимому, будет включение сетки (Grid) размером 2x2. После того, как все символы, благодаря Вашим стараниям, приобретут желаемый вид, сохраните рисунок под именем, скажем, »fnt.scr
Теперь потребуется несложный перекодировщик для преобразования экранного файла в символьный набор спрайтового формата. Вот он:
2 BORDER 7: PAPER 7: INK 0: С LEAR 40999: GO TO 100
20 FOR c=d TO d+31 STEP 2 22 FOR b=»c TO d+31*2 STEP 32 24 FOR a»b TO b+7*256 STEP 256 26 LET x«PEEK a: POKE e,x: LET e-e+1: LET x«PEEK (a+1): POKE e ,x: LET e-e+1: POKE a,0: POKE (a +1),0
28 NEXT a: NEXT b: NEXT c: RET URN
100 LET e=41000 200 LOAD "fnt.scr"CODE 16384 1000 FOR d=16384 TO 16576 STEP 6 4: GO SUB 20: NEXT d
1010 FOR d=18432 TO 18528 STEP 6
4: GO SUB 20: NEXT d
2000 SAVE "fnt"CODE 41000,768*4
После старта загружается карг тинка "fnt.scr", затем начинается процесс формирования из нее символьного набора в спрайтовом формате. После чего готовый символьный набор будет сохранен в файле "fnt" CODE 41000,3072.
И, в заключение, как обычно, шестнадцатиричный дамп блока кодов.
9С40 |
CD |
47 |
9С |
CD |
66 |
9C |
C9 |
21 |
45 |
9С48 |
DC |
9С |
11 |
DD |
9C |
01 |
IF |
00 |
06 |
9С50 |
36 |
00 |
ED |
ВО |
21 |
FC |
9C |
22 |
9A |
9С58 |
D8 |
9С |
21 |
28 |
AO |
22 |
DA |
9C |
E9 |
9С60 |
ЗЕ |
10 |
32 |
D7 |
9C |
C9 |
ЗА |
D7 |
C9 |
9С68 |
9С |
FE |
00 |
28 |
06 |
3D |
32 |
D7 |
12 |
9С70 |
9С |
18 |
08 |
CD |
AB |
9C |
ЗЕ |
10 |
2A |
9С78 |
32 |
D7 |
9С |
21 |
DF |
50 |
DD |
21 |
07 |
9С80 |
DD |
9С |
06 |
02 |
C5 |
E5 |
06 |
08 |
55 |
9С88 |
С5 |
Е5 |
DD |
СВ |
00 |
16 |
DD |
CB |
34 |
9С90 |
FF |
16 |
06 |
20 |
CB |
16 |
2B |
10 |
83 |
9С98 |
FB |
Е1 |
С1 |
DD |
23 |
DD |
23 |
24 |
F5 |
9СА0 |
10 |
Еб |
Е1 |
CI |
11 |
20 |
00 |
19 |
IE |
9СА8 |
10 |
DA |
С9 |
2А |
D8 |
9C |
7E |
FE |
11 |
9СВ0 |
FF |
20 |
08 |
21 |
FC |
9C |
22 |
D8 |
26 |
9СВ8 |
9С |
18 |
04 |
23 |
22 |
D8 |
9C |
D6 |
9B |
9СС0 |
20 |
26 |
00 |
6F |
29 |
29 |
29 |
29 |
B5 |
9СС8 |
29 |
ED |
5В |
DA |
9C |
19 |
11 |
DC j 51 |
9CD0 |
9С |
01 |
20 |
00 |
ED |
BO |
C9 |
10 |
9F |
9CD8 |
FC |
9С |
28 |
AO |
00 |
00 |
00 |
00 |
D4 |
9СЕ0 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
1С |
9СЕ8 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00. |
84 |
9CF0 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
8C |
9CF8 |
00 |
00 |
00 |
00 |
43 |
6F |
70 |
79 |
2F |
9D00 |
72 |
69 |
67 |
68 |
74 |
20 |
62 |
79 |
B6 |
9D08 |
20 |
4D |
41 |
53 |
54 |
53 |
4F |
46 |
E2 |
9D10 |
54 |
20 |
31 |
39 |
39 |
34 |
FF |
00 |
F7 |
(С) Юрий Алехин,
г.Запорожье, 1995.
Предлагаю пятиканальный генератор звука.
С адреса NUS-31000 должен находиться блок данных. Группы по 5 байтов: значение частоты для 1 канала, затем для 2 и т.д.
Выход из программы происходит, если в 1 канале встретился код 255.
ЭТЮДЫ
00010 |
|
ORG |
40000 |
00590 |
|
OUT |
(254),A |
|
00020 |
|
ENT |
|
00600 |
ET3 |
DEC |
(IX+3) |
|
00030 |
MUS |
EQU |
31000 |
00610 |
|
LD |
A,(IX+3) |
|
00040 |
|
LD |
HL,MUS |
00620 |
|
OR |
NZ,ET4 |
|
00050 |
|
CALL |
NEXT |
00630 |
|
LD |
A,24 |
|
00060 |
|
RET |
|
00640 |
|
OUT |
(254),A |
|
00070 |
; |
|
|
00650 |
|
LD |
A,(V4) |
|
00080 |
NEXT |
LD |
A,(HL) |
00660 |
|
LD |
(IX+3),A |
|
00090 |
|
CP |
255 |
00670 |
|
XOR |
A |
|
00100 |
|
RET |
Z |
00680 |
|
OUT |
(254),A |
|
00110 |
|
LD |
(VI),A |
00690 |
ET4 |
DEC |
(IX+4) |
|
00120 |
|
INC |
HL |
00700 |
|
LD |
A,(IX+4) |
|
00130 |
|
LD |
A,(HL) |
00710 |
|
OR |
NZ,ET5 |
|
00140 |
|
LD |
(V2),A |
00720 |
|
LD |
A,24 |
|
00150 |
|
INC |
HL |
00730 |
|
OUT |
(254),A |
|
00160 |
|
LD |
A,(HL) |
00740 |
|
LD |
A,(V5) |
|
00170 |
|
LD |
(V3),A |
00750 |
|
LD |
(IX+4),A |
|
00180 |
|
INC |
HL |
00760 |
|
XOR |
A |
|
00190 |
|
LD |
A,(HL) |
00770 |
|
OUT |
(254),A |
|
00200 |
|
LD |
(V4),A |
00780 |
ET5 |
DEC |
HL |
|
00210 |
|
INC |
HL |
00790 |
|
LD |
A,H |
|
00220 |
|
LD |
A,(HL) |
00800 |
|
OR |
L |
|
00230 |
|
LD |
(V5),A |
00810 |
|
OR |
NZ,LOOP |
|
00240 |
|
INC |
HL |
00820 |
|
EI |
|
|
00250 |
|
PUSH |
HL |
00830 |
|
RET |
|
|
00260 |
|
CALL |
BEEP |
00840 |
> |
|
|
|
00270 |
|
POP |
HL |
00850 |
VI |
DEFB |
0 |
|
00280 |
|
OP |
NEXT |
00860 |
V2 |
DEFB |
0 |
|
00290 |
* |
|
|
00870 |
V3 |
DEFB |
0 |
|
00300 |
BEEP |
DI |
|
00880 |
V4 |
DEFB |
0 |
|
00310 |
|
LD |
IX,COUNT |
00890 |
V5 |
DEFB |
0 |
|
00320 |
|
LD |
HL,(TIME) |
00900 |
TIME |
DEFB |
9 |
|
00330 |
LOOP |
DEC |
(IX+0) |
00910 |
|
DEFB |
9 |
|
00340 |
|
LD |
A,(IX+0) |
00920 |
COUNT |
DEFB |
0 |
|
00350 |
|
JR |
NZ,ET1 |
00930 |
|
DEFB |
0 |
|
00360 |
|
LD |
A,24 |
00940 |
|
DEFB |
0 |
|
00370 |
|
OUT |
(254),A |
00950 |
|
DEFB |
0 |
|
00380 |
|
LD |
A,(VI) |
00960 |
|
DEFB |
0 |
|
00390 |
|
LD |
(IX+0),A |
|
|
|
|
|
|
00400 |
|
XOR |
A |
Start |
of object: #9C40 (40000) |
00410 |
|
OUT |
(254),A |
Length |
: #OOAF (00175) |
00420 |
ET1 |
DEC |
(IX+1) |
Executes |
: #9C40 (40000) |
00430 |
|
LD |
A,(IX+1) |
|
|
|
|
|
|
00440 |
|
OR |
NZ,ET2 |
Шестнадцатиричный |
дамп блока: |
00450 |
|
LD |
A,24 |
|
|
|
|
|
|
00460 |
|
OUT |
(254),A |
9C40 |
21 |
18 79 |
CD 47 |
9C C9 7E |
85 |
00470 |
|
LD |
A,(V2) |
9C48 |
FE |
FF C8 |
32 E3 |
9C 23 7E |
FB |
00480 |
|
LD |
(IX+1),A |
9C50 |
32 |
E4 9C |
23 7E |
32 E5 9C |
F2 |
00490 |
|
XOR |
A |
9C58 |
23 |
7E 32 |
E6 9C |
23 7E 32 |
1С |
00500 |
|
OUT |
(254),A |
9C60 |
E7 |
9C 23 |
E5 CD |
6B 9C El |
3C |
00510 |
ET2 |
DEC |
(IX+2) |
9C68 |
C3 |
47 9C |
F3 DD |
21 EA 9C |
21 |
00520 |
|
LD |
A,(IX+2) |
9C70 |
2A |
E8 9C |
DD 35 |
00 DD 7"E |
27 |
00530 |
|
OR |
NZ,ET3 |
9C78 |
00 |
20 OD |
3E 18 |
D3 FE ЗА |
A2 |
00540 |
|
LD |
A,24 |
9C80 |
E3 |
9C DD |
77 00 |
AF D3 FE |
6F |
00550 |
|
OUT |
(254),A |
9C88 |
DD |
35 01 |
DD 7E |
01 20 OD |
CO |
00560 |
|
LD |
A,(V3) |
9C90 |
3E |
18 D3 |
FE ЗА |
E4 9C DD |
EA |
00570 |
|
LD |
(IX+2),A |
9C98 |
77 |
01 AF |
D3 FE |
DD 35 02 |
40 |
00580 |
|
XOR |
A |
9CA0 |
DD |
7E 02 |
20 OD |
3E 18 D3 |
EF |
ЭТЮДЫ
полнить, загрузив по адресу 31000 произвольный блок кодов (или еще проще: обнулить второй и третий байты блока кодов, то есть задать MUS-0). При этом, правда, вместо мелодии будет нечто неопределенное, но можно примерно оценить генерируемый «звук.
В приведенной программе остановка происходит только в конце мелодии, в том случае, если встречен код 255. Если пойти дальше, то стоит подумать о том, как сделать остановку по нажатию любой клавиши, а не только после проигрывания всей мелодии, а также о том, как зациклить воспроизведение. Кроме того, неплохо было бы использовать предложенный генератор с прерываниями 2 рода -для этого надо выделить в подпрограмму процедуру проигрывания
9СА8: |
FE |
ЗА |
Е5 |
9С |
DD |
77 |
02 |
AF |
:02 |
одной ноты и вызывать ее, исполь |
9СВ0: |
D3 |
FE |
DD |
35 |
03 |
DD |
7Е |
03 |
: 90 |
зуя счетчик прерываний. Если пой |
9СВ8: |
20 |
0D |
ЗЕ |
18 |
D3 |
FE |
ЗА |
Еб |
:С8 |
ти еще дальше, то стоит подумать |
9СС0: |
9С |
DD |
77 |
03 |
AF |
D3 |
FE |
DD |
:АС |
о том, как кодировать мелодию - |
9СС8: |
35 |
04 |
DD |
7Е |
04 |
20 |
0D |
ЗЕ |
: 67 |
это уже отдельная проблема, но в |
9CD0: |
18 |
D3 |
FE |
ЗА |
Е7 |
9С |
DD |
77 |
:бб |
результате может получиться пяти- |
9CD8: |
04 |
AF |
D3 |
FE |
2В |
7С |
В5 |
20 |
: 74 |
канальный музыкальный редактор... |
9СЕ0: |
92 |
FB |
С9 |
00 |
00 |
00 |
00 |
00 |
:D2 |
В общем, Вы видите, что процесс |
9СЕ8: |
09 |
09 |
00 |
00 |
00 |
00 |
00 |
00 |
: 96 |
совершенствования бесконечен. А в основе его все же останется блок |
Кстати, тестирование |
можно |
вы— |
кодов, который предложил Юрий. |
Следующее письмо мы адресуем владельцам 128К компьютеров.
(С) М.Л.Плетнев (UGL SOFT LTD),
г.Великие Луки, Псковская обл.
Предлагаю Вашему вниманию доработанную процедуру м3анавесм, опубликованную в ZX-PEBD-94, N4, стр.38. Доработанная версия, мне кажется, больше похожа на занавес. Сначала штора опускается, затем за шторой "рисуется" картинка, штора поднимается и - картинка на экране. Скорость шторы можно регулировать в широких пределах, изменяя число в строке 70. Чем больше число, тем больше скорость . Цвет шторы задается в строках 80 и 90.
00010 |
|
ORG |
40000 |
|
00020 |
|
ENT |
|
|
00030 |
PORT |
EQU |
#7FFD |
Порт управления страницами |
00040 |
SCR |
EQU |
#4000 |
Видео-ОЗУ. |
00050 |
SCR 2 |
EQU |
#C000 |
Второе видео-ОЗУ. |
00060 |
PIC |
EQU |
# E000 |
Адрес картинки. |
00070 |
TIM |
EQU |
30 |
Скорость шторы. |
00080 |
COLORP |
EQU |
9 |
Цвет шторы (PAPER). |
00090 |
COLORB |
EQU |
1 |
Цвет шторы (BORDER). |
00100 |
|
DI |
|
|
00110 |
|
LD |
HL,SCR |
Делаем экран черным. |
00120 |
|
LD |
DE,SCR+1 |
|
00130 |
|
LD |
ВС,#1AFF |
|
00140 |
|
LD |
(HL),L |
|
00150 |
|
LDIR |
|
|
00160 |
|
XOR |
A |
|
00170 |
|
OUT |
(#FE),A |
|
00180 |
|
LD |
ВС,PORT |
|
00190 |
|
LD |
A,#17 |
|
00200 |
|
OUT |
<C),A |
|
00210 |
|
LD |
HL,SCR2 |
Штора - синяя.. |
00220 |
|
LD |
DE,SCR2+1 |
|
00230 |
|
LD |
BC,#1AFF |
|
00240 |
|
LD |
(HL),COLORP |
|
ЭТЮДЫ
00250 |
|
LDIR |
|
00260 |
* |
++++++++++++ Закрываем штору ++++++++++++ |
00270 |
|
LD |
ВС,PORT |
|
00280 |
|
LD |
A,#10 |
|
00290 |
|
OUT |
(C),A |
|
00300 |
|
LD |
HL, 1 |
|
00310 |
LI |
EI |
|
Ждем кадровый импульс. |
00320 |
|
HALT |
|
|
00330 |
|
DI |
|
|
00340 |
|
LD |
A,COLORB |
Рисуем штору. |
00350 |
|
OUT |
(#FE),A |
|
00369 |
|
LD |
A,#18 |
|
00370 |
|
OUT |
(C),A |
|
00380 |
|
PUSH |
HL |
Ждем |
00390 |
|
POP |
DE |
(в HL - время). |
00400 |
L2 |
DEC |
DE |
|
00410 |
|
LD |
A,D |
|
00420 |
|
OR |
E |
|
00430 |
|
JR |
NZ,L2 |
|
00440 |
|
XOR |
A |
Рисуем пустоту. |
00150 |
|
OUT |
(#FE), A |
|
00460 |
|
LD |
A,#10 |
|
00470 |
|
OUT |
(C),A |
|
00480 |
|
LD |
DE,TIM |
Увеличиваем время. |
00490 |
|
ADD |
HL,DE |
|
005Q0 |
|
LD |
A,H |
|
005'10 |
|
CP |
9 |
Если штора не закрыта, |
00520 |
|
JR |
HZ, LI |
то повтор. |
00530 |
|
LD |
A,COLORB |
|
00540 |
|
OUT |
(#FE),A |
|
00550 |
|
LD |
A,#18 |
|
00560 |
|
OUT |
(C),A |
|
00570 |
|
LD |
HL,PIC |
"Кидаем" картинку |
00580 |
|
LD |
DE,SCR |
под штору. |
00590 |
|
LD |
BC,#1B00 |
|
00600 |
|
LDIR |
|
|
00610 |
|
++++++++++++ Открываем |
штору ++++++++++++ |
00620 |
|
LD |
ВС,PORT |
|
00630 |
|
LD |
HL,#900 |
|
00640 |
L3 |
EI |
|
Ждем кадровый импульс. |
00650 |
|
HALT |
|
|
00660 |
|
DI |
|
|
00670 |
|
LD |
A,COLORB |
Рисуем штору. |
00680 |
|
OUT |
(#FE),A |
|
00690 |
|
LD |
A,#18 |
|
00700 |
|
OUT |
(C),A |
|
00710 |
|
PUSH |
HL |
Ждем |
00720 |
|
POP |
DE |
(в HL - время). |
00730 |
L4 |
DEC |
DE |
|
00740 |
|
LD |
A,D |
|
00750 |
|
OR |
E |
|
00760 |
|
JR |
NZ ,L4 |
|
00770 |
|
XOR |
A |
Рисуем картинку. |
00780 |
|
OUT |
(#FE),A |
|
00790 |
|
LD |
A,#10 |
|
00800 |
|
OUT |
(C),A |
|
00810 |
|
LD |
DE,TIM |
Уменьшаем время. |
00820 |
|
OR |
A |
|
ЭТЮДЫ
Start of object: #9C40 (40000) Length : #0093 (00147)
Executes : #9C40 (40000)
Шестнадцатиричный данп прог-
ранпы, |
|
|
|
|
|
|
|
|
|
9С40: |
F3 |
21 |
00 |
40 |
11 |
01 |
40 |
01 |
: 83 |
9С48: |
FF |
1А |
75 |
ED |
ВО |
AF |
D3 |
FE |
: 8F |
9С50: |
01 |
FD |
7F |
ЗЕ |
17 |
ED |
79 |
21 |
: 45 |
9С58: |
00 |
СО |
11 |
01 |
СО |
01 |
FF |
1А |
: АО |
9С60: |
36 |
09 |
ED |
ВО |
01 |
FD |
7F |
ЗЕ |
: 93 |
9С68: |
10 |
ED |
79 |
21 |
01 |
00 |
FB |
76 |
: 0D |
9С70: |
F3 |
ЗЕ |
01 |
D3 |
FE |
ЗЕ |
18 |
ED |
: 52 |
9С78: |
79 |
Е5 |
D1 |
1В |
7А |
ВЗ |
20 |
FB |
:А6 |
9С80: |
AF |
D3 |
FE |
ЗЕ |
10 |
ED |
79 |
11 |
: 61 |
9С88: |
1Е |
00 |
19 |
7С |
FE |
09 |
20 |
DE |
:DC |
ЗЕ |
01 |
D3 |
FE |
ЗЕ |
18 |
ED |
79 |
:F8 |
21 |
00 |
Е0 |
11 |
00 |
40 |
01 |
00 |
: 87 |
1В |
ED |
ВО |
01 |
FD |
7F |
21 |
00 |
: 92 |
09 |
FB |
76 |
F3 |
ЗЕ |
01 |
D3 |
FE |
:С1 |
ЗЕ |
18 |
ED |
79 |
Е5 |
D1 |
1В |
7А |
: 53 |
ВЗ |
20 |
FB |
AF |
D3 |
FE |
ЗЕ |
10 |
: F0 |
ED |
79 |
11 |
1Е |
00 |
В7 |
ED |
52 |
:Е7 |
1С |
В5 |
28 |
05 |
7С |
FE |
FF |
20 |
:5В |
D8 |
FB |
С9 |
00 |
00 |
00 |
00 |
00 |
: 08 |
M.Л.Плетнев просит напечатать его телефон и надеется, Что у него появятся новые друзья:
(53) 3-03-90 г.Великие Луки, Псковская обл.
00830 |
SBC |
HL,DE |
|
00840 |
LD |
A,H |
|
00850 |
OR |
L |
Если штора открыта, |
00860 |
OR |
Z,L5 |
то переход. |
00870 |
LD |
A,H |
Иначе - повторяем. |
00880 |
CP |
#FF |
|
00890 |
OR |
NZ,L3 |
|
00900 L5 |
EI |
|
Выход из процедуры. |
00910 |
RET |
|
|
|
|