(c) Борисов Денис, г.Кстово
Первая процедура представ-
ляет собой индикатор каналов му-
зыкального процессора. Да, в
этюдах было опубликовано нес-
колько вариантов индикатора, но
ни одного атрибутного. Да и мес-
то эффекта жестко задано для
всех трех каналов муз. процессо-
ра. В нашей процедуре адрес эф-
фекта можно задавать отдельно
для каждого из трех каналов.
Использовать индикатор можно
так: рисуется картинка, для каж-
дого канала своя, черным INK и
PAPER, затем при работе индика-
тора картинка подсвечивается
INK'ом в зависимости от громкос-
ти.
Длина процедуры 53 байта,
сравните с предыдущими варианта-
ми. Индикатор рассчитан на 16
градаций громкости и выдает в
заданное знакоместо экрана атри-
бутов цвет INKа, соответствую-
щий громкости сыгранной ноты,
также используется BRIGHT. Эту
процедурку мы написали вместе с
Алексеем Николаевым.
140.
ORG 60000
LD BC,#FFFD
LD A,8
PUSH AF
CALL LOOP1
CALL PRINT1
POP AF
INC A
PUSH AF
CALL LOOP1
CALL PRINT2
POP AF
INC A
CALL LOOP1
CALL PRINT3
RET
LOOP1 OUT (C),A
IN A,(C)
AND 15
RRA
RET NC
ADD A,64
;если BRIGHT не надо, то убрать
RET
;Адреса экрана атрибутов для
;каналов A, B и C. Можно доба-
;вить до 3 10-15 знакомест на
;канал.
PRINT1 LD (22528),A
RET
PRINT2 LD (22529),A
RET
PRINT3 LD (22530),A
RET
2
Адреса для каналов выбраны
для примера и могут быть любыми
другими.
Следующая процедурка пред-
ставляет собой очистку экрана.
Такой или ей подобной я
(DENWER-DEN) в Ревю не встречал.
Эту программку я выдрал из игры
COMANDO TRACER и на 40% перера-
ботал. Что из этого получилось,
судить Вам.
Теперь о программе. После
старта программы устанавливаются
черная бумага и ярко-белые чер-
нила, затем изображение начинает
плавно сдвигаться от краев экра-
на к центру до полного исчезно-
вения.
140.
ORG 40000
ENT
LD HL,22528
LD DE,22529
LD BC,767
LD (HL),71
LDIR
METKA LD IX,61952
LD B,96
LD L,255
LD H,0
L2 LD (IX+0),H
LD (IX+1),L
DEC L
INC IX
INC IX
DJNZ L2
LD B,96
L1 LD (IX+0),H
LD (IX+1),L
INC L
INC IX
INC IX
DJNZ L1
LD B,0
MET PUSH BC
LD IX,61952
LD B,0
LD HL,16384
DEN1 LD A,(IX+1)
ADD A,(IX+0)
140. LD (IX+1),A
CALL C,DEN2
CALL LOOP1
INC IX
INC IX
INC B
LD A,B
CP 192
JR NZ,DEN1
POP BC
DJNZ MET
RET
DEN2 LD E,15
PUSH HL
SRL (HL)
INC L
DEN3 RR (HL)
INC L
DEC E
JR NZ,DEN3
POP HL
PUSH HL
LD A,L
ADD A,31
LD L,A
LD E,15
SLA (HL)
DEC L
DEN4 RL (HL)
DEC L
DEC E
JR NZ,DEN4
POP HL
LOOP1 INC H
LD A,H
AND 7
RET NZ
LD A,L
ADD A,32
LD L,A
RET C
LD A,H
SUB 8
LD H,A
RET
2
Надеюсь, Вам понравятся эти
две небольшие процедурки.
Теперь о вопросе, который
неоднократно поднимался на стра-
ницах ZX-Ревю. СТАНДАРТИЗАЦИЯ.
Все корреспонденты предлагают (в
основном все) стандартизировать
наш старый добрый SPECCY, сис-
темный разъем, кемпстон, сопро-
цессор, и т.д. и т.п. Господа,
на данном этапе это нереально!
Посмотрите, сколько у нас ра-
зновидностей Спектрума, не оши-
бусь, если назову число 30 или
40. И надеяться на то, что
пользователи этих компьютеров
откажутся от них в пользу стан-
дартизированного детища, кото-
рое нам предлагают родить сов-
местными усилиями, по крайней
мере неразумно.
Мое предложение таково. Надо
делать настраиваемые программы,
а не переделывать под них ком-
пьютер. То есть, в самой прог-
рамме располагается инсталлирую-
щий модуль (или вся программа
является настраиваемой), кото-
рый при первичном запуске запра-
шивает данные по конфигурации
компьютера или сам определяет их
автоматически. Затем создает ра-
бочую версию программы. Таким
образом решаются сразу два воп-
роса: вопрос совместимости и
вопрос нелегального копирования.
Так как после настройки програм-
мы на компьютере пользователя и
уничтожения инсталлирующего мо-
дуля программа вряд ли будет ра-
ботать на другом компьютере.
Прим. ред.: Хорошая, но не новая идея.
Посмотрите на такие программы, как Alasm
v3.5. Там вопрос совместимости решен про-
ще, чем предложил Денис, но система драй-
веров более гибкая. Таким образом, учиты-
ваются интересы пользователей даже очень
специфичных (редких) компьютеров. Ведь
каждый может написать драйверок под себя.
А теперь представьте, если эту задачу
взвалить на плечи программиста, пишущего
программу. Он ведь, по-вашему, ОБЯЗАН
знать все возможные конфигурации, что в
принципе невозможно. Но при написании про-
граммы он должен обеспечить ее работу на
наиболее популярных машинах, что и сделал
автор Alasm'а.
* * *