Ну, а теперь я предлагаю свою программы: Первая - это индикатор, показывающий в виде полосок с периодически изменяющимся сдвигом на экране, текущую амплитуду звука в каналах 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