YM, DSP & DMA Sound

From Atari Wiki
Revision as of 09:53, 26 July 2026 by Exxos (talk | contribs)
Jump to navigation Jump to search
===========#==#=======#===============================================#=====
----------------------|YM2149/AY-3-8910 Sound Chip                    |-----
===========#==#=======#===============================================#=====
$FFFF8800.B|R-|PSG_SEL|Read Data                                      |
           |-W|       |Register Select                                |
$FFFF8802.B|rW|PSG_DAT|Write Data                                     |
           |  |       | PSG Register 14 - Port A            %RICDPBAS |
           |  |       | Reset IDE 0:no,1:reset (slow down)---+||||||| |F
           |  |       | Internal Speaker 0:on,1:off-----------+|||||| |F
           |  |       | Centronics Strobe----------------------+||||| |
           |  |       | Reset DSP 0:no,1:reset------------------+|||| |F
           |  |       | Printer Select In------------------------+||| |
           |  |       | Drive B select 0:on,1:off-----------------+|| |
           |  |       | Drive A select 0:on,1:off------------------+| |
           |  |       | Side select 0:side1,1:side0-----------------+ |
           |  |       | NOTE: side select polarity is deliberate.    |
           |  |       | Bit set selects side 0. Preserve bits 3-7    |
           |  |       | when writing; they carry RTS, DTR and the    |
           |  |       | Centronics strobe.                            |
           |  |       | PSG Register 15 - Port B            %xxxxxxxx |
           |  |       | Centronics Data Port-----------------++++++++ |
===========#==#=======#===============================================#=====
----------------------|DMA, CODEC, ADC, DAC, DSP-Transmit/Receive     |-----
===========#==#=======#===============================================#=====
$FFFF8900.W|RW|SND_DMA|Sound-DMA-Control           %____RPRP F_EL__EL |F,STE
           |  |       | Timer A after Record/Play-------++|| | ||  || |F
           |  |       | MFP I/O 7 after Record/Play-------++ | ||  || |F
           |  |       | Frame Registers 0:play,1:record------+ ||  || |F
           |  |       | DMA record Enable/Loop-----------------++  || |F
           |  |       | DMA play Enable/Loop-----------------------++ |F,STE
$FFFF8903.B|RW|SND_FSH|Frame Start Hi                                 |F,STE
$FFFF8905.B|RW|SND_FSM|Frame Start Mi                                 |F,STE
$FFFF8907.B|RW|SND_FSL|Frame Start Lo                                 |F,STE
$FFFF8909.B|RW|SND_FCH|Frame Count Hi                                 |F,STE
$FFFF890B.B|RW|SND_FCM|Frame Count Mi                                 |F,STE
$FFFF890D.B|RW|SND_FCL|Frame Count Lo                                 |F,STE
$FFFF890F.B|RW|SND_FEH|Frame End Hi                                   |F,STE
$FFFF8911.B|RW|SND_FEM|Frame End Mi                                   |F,STE
$FFFF8913.B|RW|SND_FEL|Frame End Lo                                   |F,STE
$FFFF8920.W|RW|SND_SMC|Sound Mode Control          %__SS__PP MB____FF |F,STE
           |  |       | DAC to track %SS--------------++  || ||    || |F
           |  |       | Play %PP+1 tracks-----------------++ ||    || |F
           |  |       | 0:Stereo,1:Mono----------------------+|    || |F
           |  |       | 0:8bit,1:16bit------------------------+    || |F
           |  |       | CORRECTED 2026: the mono/stereo line printed |
           |  |       | both states as 0. Per EmuTOS bios/dmasound.c |
           |  |       | the bit set means mono, and per the Atari    |
           |  |       | Compendium 00 = 8-bit stereo, 01 = 16-bit    |
           |  |       | stereo, 10 = 8-bit mono.                      |
           |  |       | Falcon:(unused)--STE: 6258 Hz--------------00 |F,STE
           |  |       | Falcon:12292 Hz--STE:12517 Hz--------------01 |F,STE
           |  |       | Falcon:19668 Hz--STE:25033 Hz--------------10 |F,STE
           |  |       | Falcon:49170 Hz--STE:50066 Hz--------------11 |F,STE
$FFFF8922.B|RW|   -   |Microwire Data Register                        |STE
$FFFF8924.B|RW|   -   |Microwire Mask Register                        |STE
===========#==#=======#===============================================#=====
----------------------|Falcon Sound Matrix and CODEC                  |-----
===========#==#=======#===============================================#=====
$FFFF8930.W|RW|SND_CBO|Crossbar Output Select Controller              |F
$FFFF8932.W|RW|SND_CBI|Crossbar Input Select Controller               |F
$FFFF8934.B|RW|SND_FDE|Frequency Divider, External Sync               |F
$FFFF8935.B|RW|SND_FDI|Frequency Divider, Internal Sync               |F
$FFFF8936.B|RW|SND_RTS|Record Tracks Select                           |F
$FFFF8937.B|RW|SND_CIS|CODEC Input Source                             |F
$FFFF8938.B|RW|SND_CAD|CODEC ADC Input                                |F
$FFFF8939.B|RW|SND_GAI|Gain settings                        %LLLLRRRR |F
$FFFF893A.W|RW|SND_ATT|Attenuation settings                 %LLLLRRRR |F
$FFFF893C.W|R-|SND_CST|CODEC Status                                   |F
$FFFF8940.W|RW|SND_GPD|GPIO Data Direction                            |F
$FFFF8942.W|RW|SND_GPI|GPIO Data                                      |F
           |  |       | MISSING: this whole block was absent, which is|
           |  |       | what the old "DSP registers still missing"    |
           |  |       | note referred to. Addresses from the Atari    |
           |  |       | Compendium; $FFFF893C from EmuTOS             |
           |  |       | bios/dmasound.c. Bit-level detail for the two |
           |  |       | crossbar registers and the frequency divider  |
           |  |       | table is in the Compendium and still needs    |
           |  |       | adding.                                       |





Back to Memory Map for Atari ST,STE,TT and Falcon