Ну, а теперь я предлагаю свою программы: Первая - это индикатор, показывающий в виде полосок с периодически изменяющимся сдвигом на экране, текущую амплитуду звука в каналах AY - CHIP. Похожая разработка уже публиковалась на страницах ZX РЕВЮ, но в ней цвета были жестко заданы.
; ES FOR INFORCOM
|
ORG |
38000 |
|
LD |
HL,22528 |
|
LD |
A,8 |
|
LD |
B, 3 |
|
LD |
DE,BUF |
|
PUSH |
DE |
|
PUSH |
AF |
|
PUSH |
HL |
|
PUSH |
BC |
|
CALL |
ANL |
|
LD |
A,(PAUS) |
|
DEC |
A |
|
JR |
NZ, L2 |
|
LD |
B, 3 |
|
LD |
HL,BUF |
|
LD |
A, (HL) |
|
INC |
A |
|
CP |
72 |
|
JR |
NZ, L3 |
|
LD |
A,65 |
|
LD |
(HL),A |
|
DJNZ |
L4 |
|
LD |
A,16 |
|
LD |
(PAUS),A |
|
POP |
BC |
|
POP |
HL |
|
LD |
DE,32 |
|
ADD |
HL, DE |
|
POP |
AF |
|
INC |
A |
|
POP |
DE |
|
DJNZ |
L1 |
|
RET |
|
|
LD |
BC,#FFFD |
|
OUT |
(C) , A |
|
IN |
A, (C) |
|
AND |
15 |
|
LD |
B, 15 |
|
AND |
A |
|
JR |
NZ, P1 |
|
LD |
(HL),0 |
|
JR |
P2 |
|
P1 |
PUSH |
AF |
|
|
LD |
A,(DE) |
|
|
LD |
(HL),A |
|
|
POP |
AF |
|
|
DEC |
A |
|
P2 |
INC |
HL |
|
|
DJNZ |
P3 |
|
|
RET |
|
|
BUF |
DEFB |
65, 66, 67 |
|
PAUS |
DEFB |
16 |
Лучше всего, по моему, программа демонстрируется с мелодией из пятой части "SATISFACTION MAGADEMO" (там большую часть экрана занимает сетка). Мелодия располагается в нулевом банке (странице) ОЗУ с адреса 49152. Демонстрационная программа:
1 RANDOMIZE USR 15 619: REM : LOAD "SAT"CODE *** Загрузили мелодию ***
2 BORDER 0: PAPER 0: INK 7: CLS
*** Очистили экран и переинициализировали музыку на самое начало ***
3 REM
*** Рисуем сегменты индикатора ***
4 FOR N=0 TO 2
5 FOR K=0 TO 14: PRINT AT N,K;"-": NEXT K
6 NEXT N
7 REM
*** Проигрываем мелодию ***
8 RANDOMIZE USR 4 915 8
9 RANDOMIZE USR 38E3
10 PAUSE 1
11 GO TO 8