Author: BDAqua (client241.psea.hawkcommunications.com)
Date: 12-12-2004 04:15
Does this help?
****************************************************************************
P C M - S O U N D C H I P ( C O D E C )
****************************************************************************
$FFFF8900 [R/W] :$05 ____3210 ......................... Sound-DMA-Control Hi
||||
|||| MFP-IRQ-7
||00---- no request
||01---- after playing a frame
||10---- after recording a frame
||11---- after playing or recording a frame
||
|| Timer-A-Request
00------ no request
01------ after playing a frame
10------ after recording a frame
11------ after playing or recording a frame
$FFFF8901 [R/W] :$00 7_54__10 ......................... Sound-DMA-Control Lo
| || ||
| || |+---- 1: DMA-Play enable
| || +----- 1: DMA-Play frame repeat
| |+-------- 1: DMA-Record enable
| +--------- 1: DMA-Record frame repeat
+----------- 0: select playframe-adresses
1: select recordfame-adresses
..................................Frame-Addresses
$FFFF8902 [R/W] :$00 ******
$FFFF8903 [R/W] :$01 Frame-Start-Address Hi
$FFFF8904 [R/W] :$00 ******
$FFFF8905 [R/W] :$29 Frame-Start-Address Mi
$FFFF8906 [R/W] :$00 ******
$FFFF8907 [R/W] :$9C Frame-Start-Address Lo
$FFFF8908 [R/W] :$00 ******
$FFFF8909 [R/W] :$01 Frame-Address-Counter Hi
$FFFF890A [R/W] :$00 ******
$FFFF890B [R/W] :$29 Frame-Address-Counter Mi
$FFFF890C [R/W] :$00 ******
$FFFF890D [R/W] :$9C Frame-Address-Counter Lo
$FFFF890E [R/W] :$00 ******
$FFFF890F [R/W] :$02 Frame-End-Address Hi
$FFFF8910 [R/W] :$00 ******
$FFFF8911 [R/W] :$B0 Frame-End-Address Mi
$FFFF8912 [R/W] :$00 ******
$FFFF8913 [R/W] :$3C Frame-End-Address Lo
HOW to access the play/record-frame:
You have to set bit 7 of $8901.w to select play- or record-shadowregister,
then access the frame-begin/end-registers! The play- and record-shadow-
register are two seperate registers; they appear only at the same
addresses!
$FFFF8920 [R/W] :$00 __54__10 ........................... Track-Play-Control
|| ||
|| 00---- play 1 track
|| 01---- play 2 tracks
|| 10---- play 3 tracks
|| 11---- play 4 tracks
00 ------- connect track 1 with speaker
01 ------- connect track 2 with speaker
10 ------- connect track 3 with speaker
11 ------- connect track 4 with speaker
$FFFF8921 [R/W] :$03 76____10 ........................... Sound-Mode-Control
|| ||
|| 00---- nute condition (on STE: 6258 Hz)
|| 01---- 12517 HZ
|| 10---- 25033 HZ
|| 11---- 50066 HZ
|+---------- 0: 8 Bit
| 1: 16 Bit
+----------- 0: Stereo
1: Mono
Nice to know: The samplerate 6258 Hz was repleaced by a nute condition.
You can use it to deactivate the DMA-Transfer.
$FFFF8922 [R/-] :$00 not accessed by the XBIOS.
$FFFF8923 [R/-] :$00 The FALCON has no
$FFFF8924 [R/-] :$00 Microwire-
$FFFF8925 [R/-] :$00 Interface!!
$FFFF8930 [R/W] :$01 76543210 ......... Sound-Source-Device-Prescale-Mode Hi
||||||||
|||||||| Source-Device: EXT-INP
|||||||+---- 1: Handshaking off
|||||++----- Source-Clock
||||+------- set to zero
||||
|||| Source-Device: A/D-Converter
|||+-------- set to zero
||+--------- 0: internal 25.175 MHz-Clock
|| 1: extermal Clock
++---------- set to zero
$FFFF8931 [R/W] :$11 76543210 ......... Sound-Source-Device-Prescale-Mode Lo
||||||||
|||||||| Source-Device: DMA-PLAY
|||||||+---- 1: Handshaking off
|||||++----- Source-Clock
||||+------- 0: if handshaking on and destination=
|||| DSP-REC
|||| 1: if destination<>DSP-REC
|||| (this allows a automatic transfer from
|||| (memory to DSP without errors.)
||||
|||| Source-Device: DSP-XMIT
|||+-------- 1: Handshaking off
|++--------- Source-Clock
+----------- 0: Tristate, disconnect DSP from Multi-
plexer (only if you want to use the
external SSI-Port)
1: connect DSP with Multiplexer
Source-Clock can be : %00: internal 25.175 MHz-Clock
%01: external Clock
%10: intermal 32 MHz-Clock,do not use it for the
CODEC (A/D- and D/A-Converter).
%11: not defined
$FFFF8932 [R/W] :$00 76543210 ........... Sound-Destination-Device-Matrix Hi
||||||||
|||||||| Source-Device for destination: EXT-OUT
|||||||+---- 1: Handshaking off
|||||++----- Source-Device
||||+------- set to zero
||||
|||| Source-Device for destination: DAC
|||+-------- set to zero
|++--------- Source-Device
+----------- set to zero
$FFFF8933 [R/W] :$00 76543210 ........... Sound-Destination-Device-Matrix Lo
||||||||
|||||||| Source-Device for destination: DMA-REC
|||||||+---- 1: Handshaking off
|||||++----- Source-Device
||||+------- 0: if handshaking on and source=DSP-XMIT
|||| 1: if source<>DSP-XMIT
|||| (this modus allows a automatic transfer
|||| from DSP to memory without errors.)
||||
|||| Source-Device for destination: DSP-REC
|||+-------- 1: Handshaking off
|++--------- Source-Device
+----------- 0: Tristate, disconnect DSP from Multi-
plexer (only if you want to use the
external SSI-Port)
1: connect DSP with Multiplexer
Source-Device can be: %00: DMA-PLAY
%01: DSP-XMIT (DSP send data)
%10: EXT-INP (External Input)
%11: A/D-Converter
$FFFF8934 [R/W] :$00 ____3210 ...................... Prescale external Clock
||||
++++---- 0: switch to STE-compatible mode
1-15: Clock devided by 256, devided by
prescalevalue+1.
Documentation only allows values between
0 and 15, but the XBIOS allows values
between 0 and 255. The upper nibble is
cut by the hardware.
$FFFF8935 [R/W] :$01 ____3210 ... Prescale internal Clock (25.175 or 32 MHz)
||||
++++---- look above! According to the
|||| Documentation you can only use the
|||| following values for the CODEC(A/D- and
|||| D/A-Converter): 0,1,2,3,4,5,7,9,11
0000---- switch to STE-compatible mode
0001---- CLK50K 49170 Hz
0010---- CLK33K 32780 Hz
0011---- CLK25K 24585 Hz
0100---- CLK20K 19668 Hz
0101---- CLK16K 16390 Hz
0110---- CLK14K 14049 Hz (invalid for CODEC)
0111---- CLK12K 12292 Hz
1000---- CLK11K 10927 Hz (invalid for CODEC)
1001---- CLK10K 9834 Hz
1010---- CLK09K 8940 Hz (invalid for CODEC)
1011---- CLK08K 8195 Hz
1100---- CLK07K 7565 Hz (invalid for CODEC)
1101---- CLK07K 7024 Hz (invalid for CODEC)
1110---- CLK06K 6556 Hz (invalid for CODEC)
1111---- CLK06K 6146 HZ (invalid for CODEC)
$FFFF8936 [R/W] :$00 ______10 ......................... Track-Record-Control
||
00---- record 1 track
01---- record 2 tracks
10---- record 3 tracks
11---- record 4 tracks
$FFFF8937 [R/W] :$03 ______10 .................... CODEC-Hardwareadder-Input
|| (ADDRIN-register)
|| Source-input of the 16-bit-hardwareadder
||
|+---- 1: input from A/D-Converter
+----- 1: input from Multiplexer
NOTE: The CODEC-Hardwareadder-Input connects the D/A-Converter with the
multiplexer or the A/D-Converter. It is also possible to connect both.
In this case the 16-bit-Hardwareadder mix the two signals.
$FFFF8938 [R/W] :$03 ______10 .......................... A/D-Converter-Input
|| (ADCINPUT-register)
|+---- 0: input from right mic-channel
| 1: input from right PSG-channel
+----- 0: input from left mic-channel
1: input from left PSG-channel
$FFFF8939 [R/W] :$88 76543210 ..... Channel-Input-Amplifier in +1.5 dB steps
|||||||| (GAIN-register)
||||||||
||||++++---- 0-15: Gain right channel (RTGAIN)
++++-------- 0-15: Gain of left channel (LTGAIN)
$FFFF893A [R/W] :$07 ____3210 . Channel-Output-Amplifier in -1.5 dB-steps Hi
|||| (ATTEN-register)
||||
++++---- 0-15: Attenuation of feft channal(LTATTEN)
$FFFF893B [R/W] :$70 7654____ ........................................... Lo
||||
++++------- 0-15: Attenuation of right channel(RTATTEN)
$FFFF893C [R/W] :$64 ______10 .............................. CODEC-Status Hi
||
|+---- 1: right channel-overflow
+----- 1: left channel-overflow
$FFFF893D [R/W] :$00 7654____ .............................. CODEC-Status Lo
||||
|||+------ ?
||+------- ?
|+-------- ?
+--------- ?
$FFFF893E [R/W] :$81 not accessed
$FFFF893F [R/W] :$00 by the XBIOS
$FFFF8940 [R/W] :$00 <===== Hi
$FFFF8941 [R/W] :$00 _____210 ..............................GPx-Dataportpath
|||
+++---- bidirectional Dataportpath of the GP0-
GP2-Pins on the DSP-Connector
0: Pin set to Input (read data from GPx)
1: Pin set to Output (write data to GPx)
(normally %111)
$FFFF8942 [R/W] :$00 <===== Hi
$FFFF8943 [R/W] :$07 _____210 ................................. GPx-Dataport
|||
+++---- Input/Output-Data-Bits of the
GP0-GP2-Pins on the DSP-Connector. This
Pins can be used for userdef. operations.
|