ZX Review
#5-6
04 ноября 1997 |
|
Этюды - Индикатор каналов музыкального процессора. Процедура очистки экрана. Предложение по стандартизации.
(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'а. * * *
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября