(C) WLODEK BLACK
PRIME PLAYER
MELODIES WITH INDICATOR
Signal
Programmable sound generator AY-3-8910 (hereafter AY) contains
set of internal registers, whose function I will not
describe here, as on this in instructions to the computer. Any
player melodies created by the music editors Sound Tracker, Pro
Tracker, ASC Sound Master etc., refers to each AY 1 / 50
seconds (interrupt) (This does not apply to "digital" music
Digital Studio, etc.; there is an entirely different
principle), setting up a certain way , after which he worked
until the next re-programming itself, generating an audible
alert. Programming AY, in particular, sets the signal level in
each of the channels A, B and C. Registers AY, designed to
record all kinds of control settings are also available for
reading. Through this program the user can "see" the current
sound volume by simply querying registers the volume. It really
is the easiest way to get information about the level of the
signal, besides it is not tied to any particular type of music
player.
For the signal correspond to the registers 8.9 and 10 (# A)
-, respectively, for channels A, B and C. Strictly speaking,
they are not alone determine the level of sound - can, for
example, generally prohibit the operation of any channel.
However, in actual melodies usually involve all three channels.
Loudness is determined by bits 0,1,2 and 3 registers the
volume. Bit 4 specifies the modulation of sound management, but
its value can be ignored. Used in the "demo" level indicators
are purely artistic sense, and neglect of some parameters AY
perfectly acceptable - as they say, "only would jump. :-)
To learn the value of any register AY, we must first
Record number register port 65533 (# FFFD), and then read
from the same port.
Following is the text-display program with a simple call to
the player tunes created in the ASC Sound Master. Address
49,152 expected to compile.
; Simple player ASM tunes.
START CALL INIT1
; PLLOOP EI
HALT
PLAY0 CALL 49166, play tunes interrupt
XOR A; 0 - Channel A
CALL PLAY
LD A, 1, 1 - B channel
CALL PLAY
LD A, 2, 2 - Channel C
CALL PLAY
XOR A
IN A, (# FE); it's just a poll keypad
CPL
AND # 1F
JR Z, PLLOOP
CALL 49169; mute AY
EI
RET
; PLAY LD E, A; here begins the actual indicator.
ADD A, 8, 8 to add the channel number for
register number
LD BC, 65533
OUT (C), A; write the register number
IN A, (C); read register
AND 15; mask the extra bits
LD HL, OLDS; check the previous value
LD D, 0
ADD HL, DE
CP (HL)
JR NC, PLAY1
LD A, (HL)
DEC A; gradual decrease in the indicator readings
with a sharp decrease of the sound level
PLAY1 LD (HL), A
LD B, A
INC B
LD IX, VBASE; procedure for drawing "columns"
L1 LD L, (IX +0)
INC IX
LD H, (IX +0)
INC IX
ADD HL, DE
LD (HL), # 7E
DJNZ L1
L2 LD L, (IX +0)
INC IX
LD H, (IX +0)
INC IX
LD A, L
OR H
RET Z
ADD HL, DE
LD (HL), 0
JR L2
; INIT1 CALL 49163; initialization Player
LD A, 2
CALL # 1601
XOR A
LD (23659), A
LD DE, AMPTXT
LD BC, AMPTXE-AMPTXT
CALL # 203C; print on screen the field under the "columns"
LD A, 2
LD (23659), A
RET
; VBASE
DEFW 22496,21984,21472,20960; address memory
DEFW 22464,21952,21440,20928
DEFW 22432,21920,21408,20896
DEFW 22400,21888,21376,20864
DEFW 0,0
; AMPTXT DEFB 22,20,0,16,4,17,0,32,32,32; "text" field
DEFB 13,32,32,32; "columns."
DEFB 13,32,32,32
DEFB 13,32,32,32
DEFB 22,0,0
AMPTXE
; OLDS DEFB 0,0,0; variables - previous value of the thunder of
bone in the channels. ; END
... Of course, this is a matter of taste, but personally I do
not like, when sharp decrease of the signal level drops sharply
as the indicator. To increase, as they say, "time reversal"
indicator, I decided to memorize the previous value of the
level. If at the next poll registers the volume is found that
the level was lower by more than one, then the indicator
"retrace" only unit. Thus, the full time reversal of the
maximum level of 15 to zero will be 15/50 = 0.3 seconds, which
is well different visual and non-irritating, like a sharp flick.
Remember how the indicators of the level of recording in the
recorder: their hands or glowing strips react quickly to
increase the signal level (integration time), but rolled back
back much slower (time reversal).
My indicator you can see in some unpretentious greeting
demos - at the bottom left jump three columns of green color.
See how this program is queried AY. And the artistic part of
the indicator you are able to do as you wish!