Jonathan Campbell 24035089f2 [PATCH 6/9] more
NOTE: auto-magically re-imported by HAL 9000
HASH: 7884f673eec92928243a1b7a123569c82235e833 (original)
2020-10-10 00:56:15 -04:00

265 lines
13 KiB
Plaintext

----------------------------------------------------------------------
DOCUMENT:
PROGRAMMING DIFFERENCES BETWEEN SOUND MASTER II AND SOUND BLASTER
FOR RECORDING AND PLAYBACK OF VOICE (DMA AND NON-DMA MODES)
Version 1.0
April 2, 1991
Programming and Documentation by Ryan Hanlon
Copyright (c) 1991, Covox, Inc. All Rights Reserved
----------------------------------------------------------------------
QUICK COMPARISON
---------------------------------------------------------
SOUND MASTER II SOUND BLASTER
---------------------------------------------------------
BASE PORTS 0x0220, 0x0240, 0x0210, 0x0220, 0x0230
0x0280, 0x02C0 0x0240, 0x0250, 0x0260
---------------------------------------------------------
BASE PORT 8254 TIMER 0 = 0x08 RESET = 0x06
OFFSET 8254 TIMER 1 = 0x09 READ DATA = 0x0A
8254 TIMER 2 = 0x0A WRITE COMMAND/DATA = 0x0C
8254 CONTROL = 0x0B WRITE BUFFER STATUS = 0x0C
CLEAR IRQ = 0x0C DATA AVAILABLE STATUS = 0x0E
DISABLE VMDMA = 0x0D
ENABLE VMDMA = 0x0E
DAC OFFSET = 0x0F
---------------------------------------------------------
MAXIMUM INPUT (ADC) 25KHz INPUT (ADC) 13KHz
I/O RATES OUTPUT (DAC) 100KHz OUTPUT (DAC) 13KHz
(8 bit only)
---------------------------------------------------------
DATA 2 bit, 3 bit, 4 bit 2 bit, 3 bit, 4 bit
true ADPCM (high quality) differential PCM (not ADPCM)
COMPRESSION optional silence encoding optional silence encoding
---------------------------------------------------------
AVAILABLE 3, 4, 5, 6, 7 2, 3, 5, 7
IRQ'S
---------------------------------------------------------
COMMANDS N/A 8 BIT DAC OUTPUT = 0x10
8 BIT ADC INPUT = 0x20
8 BIT DMA INPUT = 0x24
8 BIT DMA OUTPUT = 0x14
2 BIT DMA OUTPUT = 0x16
2 BIT DMA REFERENCE = 0x17
2.6 BIT DMA OUTPUT = 0x76
2.6 BIT DMA REF. = 0x77
4 BIT DMA OUTPUT = 0x74
4 BIT DMA REFERENCE = 0x75
HALT DMA = 0xD0
CONTINUE DMA = 0xD4
SET TIME CONSTANT = 0x40
MULTI-CHANNEL DAC = 0x6?
TURN ON SPEAKER = 0xD1
TURN OFF SPEAKER = 0xD3
CARD IDENTIFICATION = 0xE0
GET DSP VERSION NUM = 0xE1
----------------------------------------------------------------------
NON-DMA INPUT OF 8 BIT PCM SOUND DATA
SOUND MASTER II SOUND BLASTER
--------------------------- --------------------------------
INITIALIZE SM II FOR INPUT INITIALIZE THE DSP FOR INPUT OF PCM DATA
1. Set up timing method. 1. Reset the DSP chip by writing a '1'
to the RESET PORT (offset 0x06).
2. Wait 3 micro-seconds.
3. Write a '0' to the RESET PORT.
4. Insure that the DSP was initialized
by polling for '0xAA' at the READ
DATA PORT (offset 0x0A)
5. Wait for the MSB of the WRITE DATA
COMMAND PORT (offset 0x0C) to equal
0.
6. Write 0xD3 command (TURN OFF SPEAKER)
to the WRITE DATA/COMMAND PORT.
7. Set up timing method.
INPUT PCM DATA FROM SM II INPUT PCM DATA FROM DSP
2. Read byte of PCM data 8. Wait for the MSB of the WRITE DATA/
from DAC PORT (offset COMMAND PORT (offset 0x0C) to equal
0x0F). 0.
3. Wait for correct timing 9. Write 0x20 command (8 BIT ADC INPUT)
and repeat step 2 until to the WRITE DATA/COMMAND PORT.
end of transfer. 10. Wait for the MSB of the WRITE DATA/
COMMAND PORT (offset 0x0C) to equal
1.
11. Read byte of PCM data from the READ
DATA PORT (offset 0x0A).
12. Wait for correct timing and repeat
steps 8 through 11 until end of
transfer.
----------------------------------------------------------------------
NON-DMA OUTPUT OF 8 BIT PCM SOUND DATA
SOUND MASTER II SOUND BLASTER
--------------------------- --------------------------------
INITIALIZE SM II FOR OUTPUT INITIALIZE THE DSP FOR OUTPUT OF PCM DATA
1. Set up timing method. 1. Reset the DSP chip by writing a '1'
to the RESET PORT (offset 0x06).
2. Wait 3 micro-seconds.
3. Write a '0' to the RESET PORT.
4. Insure that the DSP was initialized
by polling for '0xAA' at the READ
DATA PORT (offset 0x0A)
5. Wait for the MSB of the WRITE DATA
COMMAND PORT (offset 0x0C) to equal
0.
6. Write 0xD1 command (TURN ON SPEAKER)
to the WRITE DATA/COMMAND PORT.
7. Set up timing method.
OUTPUT PCM DATA FROM SM II INPUT PCM DATA FROM DSP
2. Read byte of PCM data 8. Wait for the MSB of the WRITE DATA/
from DAC PORT (offset COMMAND PORT (offset 0x0C) to equal
0x0F). 0.
3. Wait for correct timing 9. Write 0x10 command (8 BIT ADC OUTPUT)
and repeat step 2 until to the WRITE DATA/COMMAND PORT.
end of transfer. 10. Wait for the MSB of the WRITE DATA/
COMMAND PORT (offset 0x0C) to equal 1.
11. Write a byte of PCM data to the WRITE
DATA/COMMAND PORT (offset 0x0C).
12. Wait for correct timing and repeat
steps 8 through 11 until end of
transfer.
----------------------------------------------------------------------
DMA INPUT OF 8 BIT PCM SOUND DATA
SOUND MASTER II SOUND BLASTER
--------------------------- --------------------------------
INITIALIZE THE SM II FOR INPUT INITIALIZE THE DSP FOR INPUT OF PCM DATA
1. Disable VMDMA on the sm II 1. Reset the DSP chip by writing a '1'
by writting any value to to the RESET PORT (offset 0x06).
the DISABLE VMDMA PORT 2. Wait 3 micro-seconds.
(offset 0x0D). 3. Write a '0' to the RESET PORT.
4. Insure that the DSP was initialized
by polling for '0xAA' at the READ
DATA PORT (offset 0x0A)
5. Wait for the MSB of the WRITE DATA
COMMAND PORT (offset 0x0C) to equal
0.
6. Write 0xD3 command (TURN OFF SPEAKER)
to the WRITE DATA/COMMAND PORT.
2. Setup 8237 DMA controller 7. Setup 8237 DMA controller and IRQ
and IRQ handlers. handlers.
3. Write control byte to the 8. Wait for the MSB of the WRITE DATA
8254 controller on the COMMAND PORT to equal 0.
SM II. 9. Write 0x40 command (SET TIME CONSTANT)
4. Write LSB of the input rate to the WRITE DATA/COMMAND PORT.
to the 8254 on the SM II. 10. Wait for the MSB of the WRITE DATA
5. Write MSB of the input rate COMMAND PORT to equal 0.
to the 8254 on the SM II. 11. Write one byte value to WRITE DATA/
COMMAND PORT for desired input rate.
6. Enable VMDMA on the SM II 12. Wait for the MSB of the WRITE DATA
by writing any value to the COMMAND PORT to equal 0.
ENABLE VMDMA PORT (offset 13. Write 0x24 command (8 BIT DMA INPUT)
0x0E). to the WRITE DATA/COMMAND PORT.
----------------------------------------------------------------------
DMA OUTPUT OF 8 BIT PCM SOUND DATA
SOUND MASTER II SOUND BLASTER
--------------------------- --------------------------------
INITIALIZE THE SM II FOR OUTPUT INITIALIZE THE DSP FOR OUTPUT OF PCM DATA
1. Disable VMDMA on the sm II 1. Reset the DSP chip by writing a '1'
by writting any value to to the RESET PORT (offset 0x06).
the DISABLE VMDMA PORT 2. Wait 3 micro-seconds.
(offset 0x0D). 3. Write a '0' to the RESET PORT.
4. Insure that the DSP was initialized
by polling for '0xAA' at the READ
DATA PORT (offset 0x0A)
5. Wait for the MSB of the WRITE DATA
COMMAND PORT (offset 0x0C) to equal
0.
6. Write 0xD2 command (TURN ON SPEAKER)
to the WRITE DATA/COMMAND PORT.
2. Setup 8237 DMA controller 7. Setup 8237 DMA controller and IRQ
and IRQ handlers. handlers.
3. Write control byte to the 8. Wait for the MSB of the WRITE DATA
8254 controller on the COMMAND PORT to equal 0.
SM II. 9. Write 0x40 command (SET TIME CONSTANT)
4. Write LSB of the input rate to the WRITE DATA/COMMAND PORT.
to the 8254 on the SM II. 10. Wait for the MSB of the WRITE DATA
5. Write MSB of the input rate COMMAND PORT to equal 0.
to the 8254 on the SM II. 11. Write one byte value to WRITE DATA/
COMMAND PORT for desired input rate.
6. Enable VMDMA on the SM II 12. Wait for the MSB of the WRITE DATA
by writing any value to the COMMAND PORT to equal 0.
ENABLE VMDMA PORT (offset 13. Write 0x14 command (8 BIT DMA OUTPUT)
0x0E). to the WRITE DATA/COMMAND PORT.