Programming Turbo Sound
This article was published Shiru Otaku
on paper in the journal NedoPC # 3. Here
published at the request of the author and with the consent of
the Editor NedoPC.
Chip select
Both chips are controlled by the same
standard ports (# FFFD - choice Regis
spectrum AY, # BFFD - output value in the register
AY). At one point in time to these ports
connects one of the chips, and all conclusions
AY registers are sent to nego.Pri reset
selected chip number 0. Switching between
chips produced by selecting the Register
AY with the number of which are outside the range of su
isting registers. The choice of register # FF
connects the zero-chip, # FE - first.
Conditional selection procedure the 0-th chip:
selChip0:
LD BC, # FFFD
LD A, # FF
OUT (C), A
RET
Similarly, the choice is 1 chip:
selChip1:
LD BC, # FFFD
LD A, # FE
OUT (C), A
RET
You can do a simple procedure that is chosen
yuschuyu desired chip on its number of accumulators
Torus (0 ... 1):
selChip:
LD BC, # FFFD
AND 1, to avoid errors
, With the number in the accumulator,
; Not equal to 0 or 1
XOR B
OUT (C), A
RET
Full compatibility with all previous TS
written on the subject is provided,
that it is not trying to make a choice
non-existent registers AY (for the current
time programs that do not meet this condition
condition, not seen).
Using TS
Since the second chip has its own
control ports, provided opportunities
sequence to use any previously written
procedures for sound output without dorabo
current. For example, there are two procedures: the player in
equation describing the music and play audio
effects. On one chip to play
sound effects along with music
have to temporarily disable one or not
how many channels of music, to give the opportunity
sequence play a sound effect. When
the presence of Turbo Sound, you can run music
on a single chip, and the effects on the second, using
Using the same procedure. Need only insert
switching chips between them.
For example, it was:
CALL musicPlay
CALL soundPlay
Become:
CALL selChip1
CALL musicPlay
CALL selChip0
CALL soundPlay
In the absence of a new variant of TS will be
work the same way as the old one.
At the moment there is no specialist
lysed music players under the TS. But in
test for possible effect such
play, creating two conventional trehkana
lnyh module (each of them shall soda
neigh on three channels of six-channel complex
position) and compile them into different ad
rez. To play it will be enough
do the following:
CALL selChip1
CALL player1
CALL selChip0
CALL player0
In this case, each of the players do not need
to know what chip it displays data.
An important point: after the completion of
with TS need to choose a zero chip. It is also
needs to be done before performing the software
On sbrosa.V otherwise Possible
lems with the operation of the devices connected to
I / O ports AY, as the connector
TS plants only through ports of entry, you
water is zero chip. Sample code is shown
presented above, take into account this requirement.
Other implementations Turbo Sound
All the above applies to working with
TS version NedoPC. But there are also two
older version of the scheme Turbo Sound: QUADRA
on Amazing Soft Making and the option of TS
Power of Sound.
Option QUADRA completely incompatible with
NedoPC TS - it assumes a
own control ports for the second
chip (# EEFD - choice Registry AY, # AFFD -
output value). Support for this option
scheme does not make sense because of its unpopular
STI and the complete absence of the program ensures
baking.
TS version of the Power of Sound Supported
in a single at the moment Editor
six-channel music, Turbo Sound Editor.
From a programming standpoint, he differs
is just a way of switching chips,
that makes it easy to add support
in written for NedoPC TS software
obespechenii.Dlya is enough Precautions
vit user to select the type of
TS and appropriately modify
procedures to select the chip.
Switching chips in PoS TS is
through output values 0 .. 1 to port
# 1F (selectable number of chip corresponds
The view shown).
The following is a variant of the universal
procedures for selecting a chip on its number in the active
kumulyatore. It is assumed that the type of TS Cox
wounded at chipType +1, zero value
corresponds to the embodiment of TS from NedoPC,
nonzero - variant of the PoS.
selChip:
AND 1
chipType:
LD B, 0, instead of zero is present
, The number corresponding to the type
TS
DEC B
JR NC, chipPoS
LD C, # FD
XOR B
OUT (C), A
RET
chipPoS:
OUT (# 1F), A
RET
Auto detect the presence and type of TS
Below is the text of the procedure automatically
kinetic determine the presence and type of TS
(Options NedoPC and PoS), used in
Turbo Sound Editor. It should be noted that in
If you can not read the values of regi
displaying the AY (found in rare cases)
automatic detection will not work
det.Poetomu desirable to include in the
zmozhnost specify the type of TS 'manually'.
; Turbo-Sound checker by Himik's ZxZ / PoS-WT
; 24.05.05 at work;)
; Found:
; No AY / YM chip on board
; Single AY / YM chip on board
; Turbo-Sound port by PoS 'Bitwalker
; (Port # 1F for swith)
; Turbo-Sound port by NedoPC
; (Registers # FE-# FF selection)
ORG # 61A8
C_1
DI
XOR A
LD HL, # FE00
LD DE, # FFBF
LD BC, # FFFD
OUT (C), B; SELECT TS AY0 CHRV
OUT (C), A; SELECT REG 0
LD B, E
OUT (C), B; # BF-> REG 0 AY0 CHRV
INC A
OUT (# 1F), A; SELECT TS AY1 POS
OUT (C), C; # FD-> REG 0 AY1 POS
LD B, D
OUT (C), H; SELECT TS AY1 CHRV
OUT (C), L; SELECT REG 0
LD B, E
OUT (C), H; # FE-> REG 0 AY1 CHRV
LD A, L
OUT (# 1F), A; SELECT TS AY0 POS
OUT (C), L; # 00 -> REG 0 AY0 POS
INC A
OUT (# 1F), A; SELECT TS AY1 POS
LD B, D
OUT (C), D; SELECT TS AY0 CHRV
OUT (C), L; SELECT REG 0
IN A, (C); READ BYTE FROM REG 0
CP C
; Pass, if found TS by NedoPC
JR Z, TS_ENABLE_CHRV
; Pass, if found TS by PoS
CP # FE
JR Z, TS_ENABLE_POS
; Proceed if no chip is found
CP # FF
JR Z, NO_AY
C_2
; Found in only one chip
TE_DISABLE
LD A, 1
OUT (# FE), A
RET
NO_AY
LD A, 2
OUT (# FE), A
RET
TS_ENABLE_CHRV
LD A, 4
OUT (# FE), A
RET
TS_ENABLE_POS
LD A, 6
OUT (# FE), A
RET
DISPLAY / A, "Length:", C_2-C_1
Shiru (NedoPC team)
Ed.: I think at the moment
support option PoS has no
sense - adaptation TS by PoS under standard
NedoPC costs nothing, and even easier
scheme (disappear D3 and D4.1, on 1/D4 feeds
Xia 10/D1, and served on 2/D4 inverted
Noe this D7).
In the annex are looking for 6-channel module
X-agon'a, compiled NedoPC TS.
In addition, the archive should be based on 4 tracks
Shiru Otaku (each consisting of two pt3moduley) - This is the
remix of famous melodies from consoles.