Skip to content

Sound Blaster Programming Information: André Baresel, Craig Jackson.

Latest
Compare
Choose a tag to compare
@wolfram77 wolfram77 released this 04 Feb 07:50



   ÜÜÜÜ                          ÜÜÜÜ
  Û                              Û   Û
  ÛÜÜÜÜÜ  ÜÜÜ  Ü   Ü ÜÜÜÜ  ÜÜÜÜ  ÛÜÜÜÛÜ Ü      ÜÜÜ  ÜÜÜÜÜ ÜÜÜÜÜÜ ÜÜÜÜÜ ÜÜÜÜ
       Û Û   Û Û   Û Û   Û Û   Û Û    Û Û     ÛÜÜÜÛ ÛÜÜÜÜ   Û    ÛÜÜ   ÛÜÜÜß
       Û Û   Û Û   Û Û   Û Û   Û Û    Û Û     Û   Û     Û   Û    Û     Û   Û
  ßßßßßß ßßßßß  ßßßß ß   ß ßßßß  ßßßßßß ßßßßß ß   ß ßßßßß   ß    ßßßßß ß   ß
                       Programming Information v0.90
                              January 29, 1995

                       Andr‚ Baresel - Craig Jackson
                             Copyright (c) 1995



==============================================================================
 DISCLAIMER
------------------------------------------------------------------------------

  ALL INFORMATION IN THIS DOCUMENT WAS OBTAINED FROM NON-CONFIDENTIAL, PUBLIC
  DOMAIN, SOURCES AND LEGAL INVESTIGATION BY THE AUTHORS.  APART FROM CASUAL
  EXAMININATION OF THE SOUNDBLASTER OWNER'S MANUALS, ABSOLUTELY NO REFERENCE
  WAS MADE TO CREATIVE LABS DOCUMENTATION INCLUDING, BUT NOT LIMITED TO,
  SOFTWARE DEVELOPMENT KITS, PROGRAMMING NOTES, AND SOURCE CODE.

  THIS DOCUMENT IS NEITHER GUARANTEED TO BE FIT FOR ANY PARTICULAR PURPOSE NOR
  TO BE ENTIRELY CORRECT.  LIABILITY RESTS WITH THE USER OF THE DOCUMENTATION
  IF AND WHEN INFORMATION CONTAINED HEREIN RESULTS DIRECTLY OR INDIRECTLY IN
  LOSS OF PROFITS, PRODUCTIVITY, OR SLEEP.  ABSOLUTELY NO WARRANTIES OR
  GUARANTIES, EITHER EXPRESSED OR IMPLIED, ACCOMPANY THIS DOCUMENT.  THIS
  DOCUMENT, ITS AUTHORS, AND CONTRIBUTORS CLAIM NO AFFILIATION WITH CREATIVE
  LABS NOR DO THEY NECESSARILY ENDORSE ANY OF THE COMPANIES OR PRODUCTS
  MENTIONED.  THIS DOCUMENT IS FREELY REDISTRIBUTABLE ONLY IN ITS ORIGINAL
  UNMODIFIED FORM AND PROVIDED NO DIRECT PROFIT IS MADE FROM ITS DISTRIBUTION.  
  ALL COPYRIGHTS AND TRADEMARKS BELONG TO THEIR RESPECTIVE OWNERS.

==============================================================================
 SOUNDBLASTER MODELS
------------------------------------------------------------------------------
  SoundBlaster 1.0
  SoundBlaster 1.5            
  SoundBlaster 2.0                        
  SoundBlaster MCV (MCA)
  SoundBlaster Pro
  SoundBlaster Pro2                       
  SoundBlaster Pro Value Edition
  SoundBlaster Pro MCV (MCA)
  SoundBlaster 16
  SoundBlaster 16 Basic Edition
  SoundBlaster 16 Value Edition
  SoundBlaster 16 ASP
  SoundBlaster 16 MultiCD
  SoundBlaster 16 MultiCD ASP
  SoundBlaster 16 SCSI-2
  SoundBlaster 16 SCSI-2 ASP
  SoundBlaster AWE32                                                
  SoundBlaster AWE32 Value Edition

 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
 º SOUNDBLASTER MODEL    ³  8-BIT Hz (DAC)   ³  16-BIT Hz (DAC)  º
 º                       ³       MONO        ³       MONO        º
 ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
 º  SoundBlaster 1.x     ³    4000-22222     ³        N/A        º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster 2.x     ³    4000-45454     ³        N/A        º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster Pro     ³    4000-45454     ³        N/A        º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster 16      ³    4000-45454     ³     4000-45454    º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster AWE32   ³    5000-45454     ³     5000-45454    º
 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
 º SOUNDBLASTER MODEL    ³  8-BIT Hz (DAC)   ³  16-BIT Hz (DAC)  º
 º                       ³      STEREO       ³      STEREO       º
 ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
 º  SoundBlaster 1.x     ³        N/A        ³        N/A        º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster 2.x     ³        N/A        ³        N/A        º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster Pro     ³    4000-22727     ³        N/A        º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster 16      ³    4000-45454     ³     4000-45454    º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster AWE32   ³    5000-45454     ³     5000-45454    º
 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
 º SOUNDBLASTER MODEL    ³  8-BIT Hz (ADC)   ³  16-BIT Hz (ADC)  º
 º                       ³       MONO        ³       MONO        º
 ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
 º  SoundBlaster 1.x     ³    4000-11111     ³        N/A        º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster 2.x     ³    4000-15151     ³        N/A        º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster Pro     ³    4000-45454     ³        N/A        º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster 16      ³    4000-45454     ³     4000-45454    º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster AWE32   ³    5000-45454     ³     5000-45454    º
 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
 º SOUNDBLASTER MODEL    ³  8-BIT Hz (ADC)   ³  16-BIT Hz (ADC)  º
 º                       ³      STEREO       ³      STEREO       º
 ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
 º  SoundBlaster 1.x     ³        N/A        ³        N/A        º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster 2.x     ³        N/A        ³        N/A        º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster Pro     ³    4000-22727     ³        N/A        º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster 16      ³    4000-45454     ³     4000-45454    º
 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
 º  SoundBlaster AWE32   ³    5000-45454     ³     5000-45454    º
 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

==============================================================================
 SOUNDBLASTER COMPATIBLES 
------------------------------------------------------------------------------
 ???                         AudioDrive 688
 ???                         Laserwave Supra 16
 ???                         MediaConcept Pro
 Adaptec                     Audio Machine???
 Addonics???                 Sound Master
 Add Tech                    Sound 2000
 Advanced Gravis             Gravis Ultrasound
                             Gravis Ultrasound MAX
 Alpha Systems               VR
 ATI                         ATI Stereo F/X
 AVM Technology              AltraPro
 Aztech                      Sound Galaxy???
                             Sound Galaxy BXII
                             Sound Galaxy BXII Extra
                             Sound Galaxy Basic 16
                             Sound Galaxy Basic 16 Extra
                             Sound Galaxy Nova 16 
                             Sound Galaxy NXII
                             Sound Galaxy NX Pro
                             Sound Galaxy Orion 16
                             Sound Galaxy Pro???
                             Sound Galaxy Pro 16
 Biostar???                  MediaChips Audio Device 16 (7168VMD)
 Bluepoint                   Sound FX 3000???
 Cardinal Technologies       Digital Sound Pro 16
                             Sound Pilot
 Computer Peripherals        ViVa Maestro 16
                             ViVa Maestro 16 VR
 CPS                         AudioBlaster 1.0
                             AudioBlaster 1.5
                             AudioBlaster 2.0
                             AudioBlaster 2.5
                             AudioBlaster 4.0
 Diamond                     Sonic Sound
                             Sonic Sound LX
 DSP Solutions               PORT*ABLE Sound Plus
 Ensoniq                     Ensoniq Soundscape
 Gallant                     Audio Plus True 16
 Genoa Systems               AudioBahn 16 Pro
 IBM                         IBM Windsurfer
 Kingston Technologies       Omnivox
 Logitech Inc.               Soundman 16
                             Soundman Wave
 Lyben                       Sound Card Basic
                             Sound Card 16 Stereo
 MediaMagic                  OnMagic???
 MediaTrix                   AudioTrix Pro
 MediaVision                 Deluxe
                             Premium 3D
                             Premium 3D MultiCD
                             Premium 3D SCSI-2
                             Pro 3D   
                             Pro Audio 16 Basic
                             Pro Audio Spectrum 16
                             Pro Audio Studio
                             Pro Sonic 16
 MEI                         Premium 16 Sound Card
 Microsoft                   Windows Sound System 2.0???
 MultiWave Innovation Inc.   AudioWave Platinum 16
 Nu Reality                  Vivid 3D???
 Oak Technologies            Mozart-128
 Orchid                      GameWave 32
                             Sound Producer
                             SoundWave 32
 Paradise                    Audio Basic
                             Audio Professional
 ProLink Computer Inc.       SoundPlus
 Prometheus                  Aria 16
                             Aria 16se       
 Reveal                      Sound FX/32 Wavetable (SC600)
 Sigma Designs               Reel Magic
 Triumph Logistic Computers  Audio Forge Professional
 Trust                       Sound Expert 16 Deluxe
 Turtle Beach                Monte Carlo                
                             Tropez   
 Yamaha                      Yamaha CBX-B1
 Zoltrix                     TESS

==============================================================================
 ENVIRONMENT VARIABLE
------------------------------------------------------------------------------
 BLASTER=Aa Ii Dd Hh Pp Tt
   Aa - Base Address                    0210h, 0220h, 0230h, 0240h, 
                                            0250h, 0260h, 0280h
   Ii - Interrupt Request                     2, 3, 5, 7, 10
   Dd - DMA Channel, 8-bit                       0, 1, 3
   Hh - DMA Channel, 16-bit                      5, 6, 7
   Pp - Base MIDI Address                      0300h, 0330h
   Tt - Model                        1(1.x), 2(Pro), 3(2.0), 4(Pro2.0), 
                                           5(ProMCV), 6(16, AWE32)

 NOTE: 16-bit DMA definition may actually refer to an 8-bit DMA alias.

==============================================================================
 HARDWARE PORTS
------------------------------------------------------------------------------
 02x00h         C/MS 1-6 - Data Port                    Write       SB Only
 02x00h         FM Music - Left Status Port             Read        SBPro
 02x00h         FM Music - Left Register Port           Write       SBPro
 02x01h         C/MS 1-6 - Register Port                Write       SB Only
 02x01h         FM Music - Left Data Register           Write       SBPro
 02x02h         C/MS7-12 - Data Port                    Write       SB Only
 02x02h         FM Music - Right Status Port            Read        SBPro
 02x02h         FM Music - Right Register Port          Write       SBPro
 02x03h         C/MS7-12 - Register Port                Write       SB Only
 02x03h         FM Music - Right Data Register          Write       SBPro
 02x04h         Mixer - Register Port                   Write       SBPro
 02x05h         Mixer - Data Register                   Read/Write  SBPro
 02x06h         DSP - Reset                             Write       SB
 02x08h         FM Music - Compatible Status Port       Read        SB
 02x08h         FM Music - Compatible Register Port     Write       SB
 02x09h         FM Music - Compatible Data Register     Write       SB
 02x0Ah         DSP - Read Data                         Read        SB
 02x0Ch         DSP - Write Data or Command             Write       SB
 02x0Ch         DSP - Write Buffer Status               Read        SB
 02x0Dh         DSP - Timer Interrupt Clear             Read        SB16???
 02x0Eh         DSP - Data Available Status             Read        SB
 02x0Eh         DSP - IRQ Acknowledge, 8-bit            Read        SB
 02x0Fh         DSP - IRQ Acknowledge, 16-bit           Read        SB16
 02x10h         CD-ROM - Data Register                  Read        SBPro
 02x10h         CD-ROM - Command Port                   Write       SBPro
 02x11h         CD-ROM - Status Port                    Read        SBPro
 02x12h         CD-ROM - Reset                          Write       SBPro
 02x13h         CD-ROM - Enable                         Write       SBPro
 0388h          AdLib - Status Port                     Read        SB
 0388h          AdLib - Register Port                   Write       SB
 0389h          AdLib - Data Register                   Write       SB
 038Ah          Advanced AdLib - Status Port            Read        SB16
 038Ah          Advanced AdLib - Register Port          Write       SB16
 038Bh          Advanced AdLib - Data Register          Write       SB16
 03x00h         MPU-401 - Data Port                     Read/Write  SB16???
 03x01h         MPU-401 - Status Port                   Read        SB16???
 03x01h         MPU-401 - Command Port                  Write       SB16???
 0200h-0207h    Joystick                                Varies      SB

------------------------------------------------------------------------------
 02x00h     C/MS - Data Port     (Voice 1-6)            Write       SB Only

    DESCRIPTION
     References currently selected C/MS voice 1-6 index register.

    PROCEDURE
      a) Write register index (02x01h)
      b) Write register data  (02x00h)

    SEE ALSO
     02x01h  C/MS - Register Port (Voice 1- 6)  Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x02h  C/MS - Data Port     (Voice 7-12)  Write
------------------------------------------------------------------------------
 02x00h     FM Music - Left Status Port                 Read        SBPro

    DESCRIPTION
     Categorizes left-channel synthesizer generated timer interrupts.

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³[4]³[3]³[2]³[1]³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÂÄ Reserved (1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄ´
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Timer 2 Status      (1 = Expired)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Timer 1 Status      (1 = Expired)
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Global Timer Status (1 = Active )

    NOTES
     þ Global Timer Status will be active if either timer has expired.
     þ Counter period of Timer 1 is 80æs, and Timer 2 is 230æs.
     þ Synthesizer generated timer interrupts are signalled on IRQ0.

    SEE ALSO
     02x00h  FM Music - Left Register Port      Write
     02x01h  FM Music - Left Data Register      Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x08h  FM Music - Compat. Status Port     Read
      0338h  AdLib    - Status Port             Read
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x02h  FM Music - Right Status Port       Read
------------------------------------------------------------------------------
 02x00h     FM Music - Left Register Port               Write       SBPro

    DESCRIPTION
     Selects register index into left-channel synthesizer data port (02x01h)

    PROCEDURE
      a) Write register index (02x00h)
      b) Wait 3.3æs (0.0?æs OPL3)
      c) Write register data  (02x01h)
      d) Wait 23æs  (0.28æs OPL3)

    NOTES
     þ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.

    SEE ALSO
     02x00h  FM Music - Left Status Port        Read
     02x01h  FM Music - Left Data Register      Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x08h  FM Music - Compat. Register Port   Write
      0338h  AdLib    - Register Port           Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x02h  FM Music - Right Register Port     Write
------------------------------------------------------------------------------
 02x01h     C/MS - Register Port (Voice 1-6)            Write       SB Only

    DESCRIPTION
     Selects register index into C/MS voice 1-6 data port (02x00h)

    PROCEDURE
      a) Write register index (02x01h)
      b) Write register data  (02x00h)

    SEE ALSO
     02x00h  C/MS - Data Port     (Voice 1- 6)  Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x03h  C/MS - Register Port (Voice 7-12)  Write
------------------------------------------------------------------------------
 02x01h     FM Music - Left Data Register               Write       SBPro

    DESCRIPTION
     References currently selected left-channel synthesizer index register.

    PROCEDURE
      a) Write register index (02x00h)
      b) Wait 3.3æs (0.0?æs OPL3)
      c) Write register data  (02x01h)
      d) Wait 23æs  (0.28æs OPL3)

    NOTES
     þ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.

    SEE ALSO
     02x00h  FM Music - Left Status Port        Read
     02x00h  FM Music - Left Register Port      Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x09h  FM Music - Compat. Data Register   Write
      0339h  AdLib    - Data Register           Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x03h  FM Music - Right Data Register     Write
------------------------------------------------------------------------------
 02x02h     C/MS - Data Port     (Voice 7-12)           Write       SB Only

    DESCRIPTION
     References currently selected C/MS voice 7-12 index register.

    PROCEDURE
      a) Write register index (02x03h)
      b) Write register data  (02x02h)

    SEE ALSO
     02x03h  C/MS - Register Port (Voice 7-12)  Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x00h  C/MS - Data Port     (Voice 1- 6)  Write
------------------------------------------------------------------------------
 02x02h     FM Music - Right Status Port                Read        SBPro

    DESCRIPTION
     Categorizes right-channel synthesizer generated timer interrupts.

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³[4]³[3]³[2]³[1]³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÂÄ Reserved (1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄ´
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Timer 2 Status      (1 = Expired)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Timer 1 Status      (1 = Expired)
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Global Timer Status (1 = Active )

    NOTES
     þ Global Timer Status will be active if either timer has expired.
     þ Counter period of Timer 1 is 80æs, and Timer 2 is 230æs.
     þ Synthesizer generated timer interrupts are signalled on IRQ0.

    SEE ALSO
     02x02h  FM Music - Right Register Port     Write
     02x03h  FM Music - Right Data Register     Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
      038Ah  A. Adlib - Status Port             Read
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x00h  FM Music - Left Status Port        Read
------------------------------------------------------------------------------
 02x02h     FM Music - Right Register Port              Write       SBPro

    DESCRIPTION
     Selects register index into right-channel synthesizer data port (02x03h)

    PROCEDURE
      a) Write register index (02x02h)
      b) Wait 3.3æs (0.0?æs OPL3)
      c) Write register data  (02x03h)
      d) Wait 23æs  (0.28æs OPL3)

    NOTES
     þ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the right speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.

    SEE ALSO
     02x02h  FM Music - Right Status Port       Read
     02x03h  FM Music - Right Data Register     Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
      038Ah  A. Adlib - Register Port           Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x00h  FM Music - Left Register Port      Write
------------------------------------------------------------------------------
 02x03h     C/MS - Register Port (Voice 7-12)           Write       SB Only

    DESCRIPTION
     Selects register index into C/MS voice 7-12 data port (02x02h)

    PROCEDURE
      a) Write register index (02x03h)
      b) Write register data  (02x02h)

    SEE ALSO
     02x02h  C/MS - Data Port     (Voice 7-12)  Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x01h  C/MS - Register Port (Voice 1- 6)  Write
------------------------------------------------------------------------------
 02x03h     FM Music - Right Data Register              Write       SBPro

    DESCRIPTION
     References currently selected right-channel synthesizer index register.

    PROCEDURE
      a) Write register index (02x02h)
      b) Wait 3.3æs (0.0?æs OPL3)
      c) Write register data  (02x03h)
      d) Wait 23æs  (0.28æs OPL3)

    NOTES
     þ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the right speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.

    SEE ALSO
     02x02h  FM Music - Right Status Port       Read
     02x02h  FM Music - Right Register Port     Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
      038Bh  A. Adlib - Data Register           Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x01h  FM Music - Left Data Register      Write
------------------------------------------------------------------------------
 02x04h     Mixer - Register Port                       Write       SBPro

    DESCRIPTION
     Selects register index into mixer data port (02x05h)

    SELECTION BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Mixer Register Index bit   0 (SB16)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÂÄ Mixer Register Index bit 3-1 (SBPro)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Mixer Register Index bit   4 (SB16)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ Mixer Register Index bit 7-5 (SBPro)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    PROCEDURE
      a) Write mixer index     (02x04h)
      b) Read/write mixer data (02x05h)

    NOTES
     þ See complete mixer reference later in this document.
     þ MediaVision 3D-series cards use this port for index and data output.

    SEE ALSO
     02x05h  Mixer - Data Register              Read/Write
------------------------------------------------------------------------------
 02x05h     Mixer - Data Register                       Read/Write  SBPro

    DESCRIPTION
     References currently selected mixer index register.

    PROCEDURE
      a) Write mixer index     (02x04h)
      b) Read/write mixer data (02x05h)

    NOTES
     þ See complete mixer reference later in this document.

    SEE ALSO
     02x05h  Mixer - Register Port              Write
------------------------------------------------------------------------------
 02x06h     DSP - Reset                                 Write       SB

    DESCRIPTION
     Performs complete reset of DSP, terminating all pending operations.

    PROCEDURE
      a) Write 001h
      b) Wait 3.3æs minimum
      c) Write 000h
      d) Wait 100æs maximum for DSP Data Available (02x0Eh)
      e) Read 0AAh from DSP Read Data (02x0Ah)

    NOTES
     þ Reset of DSP disables speaker (see DSP command 0D3h).
------------------------------------------------------------------------------
 02x08h     FM Music - Compatible Status Port           Read        SB

    DESCRIPTION
     Categorizes left-channel synthesizer generated timer interrupts.

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³[4]³[3]³[2]³[1]³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÂÄ Reserved (1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄ´
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Timer 2 Status      (1 = Expired)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Timer 1 Status      (1 = Expired)
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Global Timer Status (1 = Active )

    NOTES
     þ Global Timer Status will be active if either timer has expired.
     þ Counter period of Timer 1 is 80æs, and Timer 2 is 230æs.
     þ Synthesizer generated timer interrupts are signalled on IRQ0.
     þ Alias for FM Music - Left Status Port (02x00h) on SBPro or higher.

    SEE ALSO
     02x08h  FM Music - Compat. Register Port   Write
     02x09h  FM Music - Compat. Data Register   Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x00h  FM Music - Left Status Port        Read
------------------------------------------------------------------------------
 02x08h     FM Music - Compatible Register Port         Write       SB

    DESCRIPTION
     Selects register index into left-channel synthesizer data port (02x09h)

    PROCEDURE
      a) Write register index (02x08h)
      b) Wait 3.3æs (0.0?æs OPL3)
      c) Write register data  (02x09h)
      d) Wait 23æs  (0.28æs OPL3)

    NOTES
     þ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.
     þ Alias for FM Music - Left Register Port (02x00h) on SBPro or higher.

    SEE ALSO
     02x08h  FM Music - Compat. Status Port     Read
     02x09h  FM Music - Compat. Data Register   Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x00h  FM Music - Left Register Port      Write
------------------------------------------------------------------------------
 02x09h     FM Music - Compatible Data Register         Write       SB

    DESCRIPTION
     References currently selected left-channel synthesizer index register.

    PROCEDURE
      a) Write register index (02x08h)
      b) Wait 3.3æs (0.0?æs OPL3)
      c) Write register data  (02x09h)
      d) Wait 23æs  (0.28æs OPL3)

    NOTES
     þ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.
     þ Alias for FM Music - Left Data Register (02x01h) on SBPro or higher.

    SEE ALSO
     02x08h  FM Music - Compat. Status Port     Read
     02x08h  FM Music - Compat. Register Port   Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x01h  FM Music - Left Data Register      Write
------------------------------------------------------------------------------
 02x0Ah     DSP - Read Data                             Read        SB

    DESCRIPTION
     Input port for DSP data byte reads.

    PROCEDURE
      a) Loop until bit 7 = 1 of DSP Data Available Status (02x0Eh read)
      b) Input byte from DSP Read Data port (02x0Ah read)

    NOTES
     þ Hard system resets occasionally cause some DSPs to leave an
        extraneous data byte on the bus (typically 0AAh).  Perform
        an explicit DSP reset at application startup to correct for this.

    SEE ALSO
     02x0Eh  DSP - Data Available Status        Read
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x0Ch  DSP - Write Data or Command        Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x06h  DSP - Reset                        Write
----------------------------------------------------------------------------
 02x0Ch     DSP - Write Data or Command                 Write       SB

    DESCRIPTION
     Output port for DSP command and data byte writes.

    PROCEDURE
      a) Loop until bit 7 = 0 of DSP Write Buffer Status (02x0Ch read)
      b) Output byte to DSP Write Data or Command port (02x0Ch write)

    SEE ALSO
     02x0Ch  DSP - Write Buffer Status          Read
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x0Ah  DSP - Read Data                    Read
------------------------------------------------------------------------------
 02x0Ch     DSP - Write Buffer Status                   Read        SB

    DESCRIPTION
     Indicates whether or not DSP is ready to receive data through
      the DSP Write Data or Command port (02x0Ch write).

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³[6]³[5]³[4]³[3]³[2]³[1]³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÂÄ Reserved (?)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄ´
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Write Buffer Status (0 = Ready)

    PROCEDURE
      a) Loop until bit 7 = 0 of DSP Write Buffer Status (02x0Ch read)
      b) Output byte to DSP Write Data or Command port (02x0Ch write)

    SEE ALSO
     02x0Ch  DSP - Write Data or Command        Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x0Eh  DSP - Data Available Status        Read
------------------------------------------------------------------------------
 02x0Dh     DSP - Timer Interrupt Clear                 Read        SB16???
        ???
------------------------------------------------------------------------------
 02x0Eh     DSP - Data Available Status                 Read        SB

    DESCRIPTION
     Indicates whether or not DSP has pending data to be read through
      the DSP Read Data port (02x0Ah read).

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³[6]³[5]³[4]³[3]³[2]³[1]³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÂÄ Reserved (?)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄ´
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Read Status (1 = Ready)

    PROCEDURE
      a) Loop until bit 7 = 1 of DSP Data Available Status (02x0Eh read)
      b) Input byte from DSP Read Data port (02x0Ah read)

    SEE ALSO
     02x0Ah  DSP - Read Data                    Read
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x0Ch  DSP - Write Buffer Status          Read
------------------------------------------------------------------------------
 02x0Eh     DSP - IRQ Acknowledge, 8-bit                Read        SB

    DESCRIPTION
     Acknowledges an IRQ signalled by an 8-bit DSP operation.

    PROCEDURE
      a) IRQ: Read from IRQ Acknowledge, 8-bit port (02x0Eh)
      b) IRQ: Perform Generic EOI (020h) to appropriate PICs

    NOTES
     þ Reflects correct DSP Data Available Status from IRQ.

    SEE ALSO
     02x0Fh  DSP - IRQ Acknowledge, 16-bit      Read
------------------------------------------------------------------------------
 02x0Fh     DSP - IRQ Acknowledge, 16-bit               Read        SB16

    DESCRIPTION
     Acknowledges an IRQ signalled by an 16-bit DSP operation.

    PROCEDURE
      a) IRQ: Read from IRQ Acknowledge, 16-bit port (02x0Fh)
      b) IRQ: Perform Generic EOI (020h) to appropriate PICs

    NOTES
     þ Still used for aliased 16-bit DMA (see mixer register 081h)

    SEE ALSO
     02x0Eh  DSP - IRQ Acknowledge, 8-bit       Read
------------------------------------------------------------------------------
 02x10h     CD-ROM - Data Register                      Read        SBPro

    DESCRIPTION
     Input port for active CD-ROM drive data and command response reads.

    PROCEDURE
      a) Loop until bit 2 = 0 or bit 1 = 0 of CD-ROM Status Port (02x11h read)
      b) Input byte from CD-ROM Data Register port (02x10h read)

    SEE ALSO
     02x11h  CD-ROM - Status Port               Read
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x13h  CD-ROM - Enable                    Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x10h  CD-ROM - Command Port              Write
------------------------------------------------------------------------------
 02x10h     CD-ROM - Command Port                       Write       SBPro

    DESCRIPTION
     Output port for active CD-ROM drive command sequences.

    PROCEDURE
     ???

    NOTES
     þ Command packets are seven bytes long.
     þ Interrupts should be disabled during output.

    SEE ALSO
     02x13h  CD-ROM - Enable                    Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x10h  CD-ROM - Data Register             Read
------------------------------------------------------------------------------
 02x11h     CD-ROM - Status Port                        Read        SBPro

    DESCRIPTION
     Indicates whether or not active CD-ROM drive is waiting for command data,
      has pending data available, or has prepared a command response.

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º[7]³[6]³[5]³[4]³[3]³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Write Status   (0 = Busy, v1.0+)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄ Data Available (0 = Ready)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄ Read Status    (0 = Ready)
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ Reserved (1)
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    SEE ALSO
     02x10h  CD-ROM - Data Register             Read
     02x10h  CD-ROM - Command Port              Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x13h  CD-ROM - Enable                    Write
------------------------------------------------------------------------------
 02x12h     CD-ROM - Reset                              Write       SBPro

    DESCRIPTION
     Performs complete reset of active CD-ROM drive.

    PROCEDURE
      a) Write 001h
      b) Wait 82æs??? minimum
      c) Write 000h

    NOTES
     þ Reset will close open drive doors.

    SEE ALSO
     02x13h  CD-ROM - Enable                    Write
------------------------------------------------------------------------------
 02x13h     CD-ROM - Enable                             Write       SBPro

    DESCRIPTION
     Selects active CD-ROM drive on multiple drive systems.

    PROCEDURE
     ???

    SEE ALSO
     02x10h  CD-ROM - Data Register             Read
     02x10h  CD-ROM - Command Port              Write
     02x11h  CD-ROM - Status Port               Read
     02x12h  CD-ROM - Reset                     Write
------------------------------------------------------------------------------
 0388h      AdLib - Status Port                         Read        SB

    DESCRIPTION
     Categorizes left-channel synthesizer generated timer interrupts.

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³[4]³[3]³[2]³[1]³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÂÄ Reserved (1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄ´
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Timer 2 Status      (1 = Expired)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Timer 1 Status      (1 = Expired)
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Global Timer Status (1 = Active )

    NOTES
     þ Global Timer Status will be active if either timer has expired.
     þ Counter period of Timer 1 is 80æs, and Timer 2 is 230æs.
     þ Synthesizer generated timer interrupts are signalled on IRQ0.
     þ Alias for FM Music - Left Status Port (02x00h).

    SEE ALSO
     0388h   AdLib - Register Port              Write
     0389h   AdLib - Data Register              Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x00h  FM Music - Left Status Port        Read
------------------------------------------------------------------------------
 0388h      AdLib - Register Port                       Write       SB

    DESCRIPTION
     Selects register index into left-channel synthesizer data port (0389h)

    PROCEDURE
      a) Write register index (0388h)
      b) Wait 3.3æs (0.0?æs OPL3)
      c) Write register data  (0389h)
      d) Wait 23æs  (0.28æs OPL3)

    NOTES
     þ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.
     þ Alias for FM Music - Left Register Port (02x00h).

    SEE ALSO
     0388h   AdLib - Status Port                Read
     0389h   AdLib - Data Register              Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x00h  FM Music - Left Register Port      Write
------------------------------------------------------------------------------
 0389h      AdLib - Data Register                       Write       SB

    DESCRIPTION
     References currently selected left-channel synthesizer index register.

    PROCEDURE
      a) Write register index (0388h)
      b) Wait 3.3æs (0.0?æs OPL3)
      c) Write register data  (0389h)
      d) Wait 23æs  (0.28æs OPL3)

    NOTES
     þ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.
     þ Alias for FM Music - Left Data Register (02x01h).

    SEE ALSO
     0388h   AdLib - Status Port                Read
     0388h   AdLib - Register Port              Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x01h  FM Music - Left Data Register      Write
------------------------------------------------------------------------------
 038Ah      Advanced AdLib - Status Port                Read        SB16

    DESCRIPTION
     Categorizes right-channel synthesizer generated timer interrupts.

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³[4]³[3]³[2]³[1]³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÂÄ Reserved (1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄ´
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Timer 2 Status      (1 = Expired)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Timer 1 Status      (1 = Expired)
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Global Timer Status (1 = Active )

    NOTES
     þ Global Timer Status will be active if either timer has expired.
     þ Counter period of Timer 1 is 80æs, and Timer 2 is 230æs.
     þ Synthesizer generated timer interrupts are signalled on IRQ0.
     þ Alias for FM Music - Right Status Port (02x02h) on SB16 or higher.

    SEE ALSO
     038Ah   A. AdLib - Register Port           Write
     038Bh   A. AdLib - Data Register           Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x02h  FM Music - Right Status Port       Read
------------------------------------------------------------------------------
 038Ah      Advanced AdLib - Register Port              Write       SB16

    DESCRIPTION
     Selects register index into right-channel synthesizer data port (038Bh)

    PROCEDURE
      a) Write register index (038Ah)
      b) Wait 3.3æs (0.0?æs OPL3)
      c) Write register data  (038Bh)
      d) Wait 23æs  (0.28æs OPL3)

    NOTES
     þ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.
     þ Alias for FM Music - Right Register Port (02x02h) on SB16 or higher.

    SEE ALSO
     038Ah   A. AdLib - Status Port             Read
     038Bh   A. AdLib - Data Register           Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x02h  FM Music - Right Register Port     Write
------------------------------------------------------------------------------
 038Bh      A. AdLib - Data Register                    Write       SB16

    DESCRIPTION
     References currently selected right-channel synthesizer index register.

    PROCEDURE
      a) Write register index (038Ah)
      b) Wait 3.3æs (0.0?æs OPL3)
      c) Write register data  (038Bh)
      d) Wait 23æs  (0.28æs OPL3)

    NOTES
     þ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.
     þ Alias for FM Music - Right Data Register (02x03h) on SB16 or higher.

    SEE ALSO
     038Ah   A. AdLib - Status Port             Read
     038Ah   A. AdLib - Register Port           Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02x03h  FM Music - Right Data Register     Write
------------------------------------------------------------------------------
 03x00h     MPU-401 - Data Port                         Read/Write  SB16???

    DESCRIPTION
     Port for MPU-401 data transfer.

    PROCEDURE (R)
      a) Loop until bit 6 = 0 of MPU-401 Status Port (03x01h read)
      b) Input byte from MPU-401 Data Register port (03x00h read/write)

    PROCEDURE (W)
      a) Loop until bit 7 = 0 of MPU-401 Status Port (03x01h read)
      b) Output byte to MPU-401 Data Register port (03x00h read/write)

    SEE ALSO
     03x01h  MPU-401 - Status Port              Read
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     03x01h  MPU-401 - Command Port             Write
------------------------------------------------------------------------------
 03x01h     MPU-401 - Status Port                       Read        SB16???

    DESCRIPTION
     Indicates whether or not MPU-401 has data pending or is awaiting data.

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÂÄ Reserved (?)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄ´
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Data Read Register (0 = Ready)
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Data Set Ready     (0 = Ready)

    SEE ALSO
     03x00h  MPU-401 - Data Port                Read/Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     03x01h  MPU-401 - Command Port             Write
------------------------------------------------------------------------------
 03x01h     MPU-401 - Command Port                      Write       SB16???

    DESCRIPTION
     Output port for MPU-401 command sequences.

    PROCEDURE (W)
      a) Loop until bit 7 = 0 of MPU-401 Status Port (03x01h read)
      b) Output byte to MPU-401 Command Port (03x01h write)

    SEE ALSO
     03x01h  MPU-401 - Status Port              Read
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     03x00h  MPU-401 - Data Port                Read/Write
------------------------------------------------------------------------------
 0201h      Joystick Status Port                        Read/Write  SB

    DESCRIPTION
     Status port for joystick button and position read.

    JOYSTICK BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Joystick A: Switch X (1 = Reached)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄ Joystick A: Switch Y (1 = Reached)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄ Joystick B: Switch X (1 = Reached)
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Joystick B: Switch Y (1 = Reached)
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Joystick A: Button 1 (0 = Active )
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Joystick A: Button 2 (0 = Active )
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Joystick B: Button 1 (0 = Active )
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Joystick B: Button 2 (0 = Active )

    PROCEDURE
      a) Output byte to Joystick Status Port (0201h read/write) to reset timer
      b) Loop until all directional bits charge in Joystick Status Port (0201h
          read/write), use elapsed time waiting on each bit proportionally


==============================================================================
 DSP COMMANDS
------------------------------------------------------------------------------
 003h           ASP Status                                          SB16ASP
 004h           DSP Status (Obsolete)                               SB2.0-Pro2
 004h           ASP ???                                             SB16ASP
 005h           ASP ???                                             SB16ASP
 010h           Direct DAC, 8-bit                                   SB
 014h           DMA DAC, 8-bit                                      SB
 016h           DMA DAC, 2-bit ADPCM                                SB
 017h           DMA DAC, 2-bit ADPCM Reference                      SB
 01Ch           Auto-Initialize DMA DAC, 8-bit                      SB2.0
 01Fh           Auto-Initialize DMA DAC, 2-bit ADPCM Reference      SB2.0
 020h           Direct ADC, 8-bit                                   SB
 024h           DMA ADC, 8-bit                                      SB
 028h           Direct ADC, 8-bit (Burst)                           SB-Pro2
 02Ch           Auto-Initialize DMA ADC, 8-bit                      SB2.0
 030h           MIDI Read Poll                                      SB
 031h           MIDI Read Interrupt                                 SB
 032h           MIDI Read Timestamp Poll                            SB???
 033h           MIDI Read Timestamp Interrupt                       SB???
 034h           MIDI Read Poll + Write Poll (UART)                  SB2.0
 035h           MIDI Read Interrupt + Write Poll (UART)             SB2.0???
 037h           MIDI Read Timestamp Interrupt + Write Poll (UART)   SB2.0???
 038h           MIDI Write Poll                                     SB
 040h           Set Time Constant                                   SB
 041h           Set Sample Rate                                     SB16
 045h           Continue Auto-Initialize DMA, 8-bit                 SB16
 047h           Continue Auto-Initialize DMA, 16-bit                SB16
 048h           Set DMA Block Size                                  SB2.0
 074h           DMA DAC, 4-bit ADPCM                                SB
 075h           DMA DAC, 4-bit ADPCM Reference                      SB
 076h           DMA DAC, 2.6-bit ADPCM                              SB
 077h           DMA DAC, 2.6-bit ADPCM Reference                    SB
 07Dh           Auto-Initialize DMA DAC, 4-bit ADPCM Reference      SB2.0
 07Fh           Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference    SB2.0
 080h           Silence DAC                                         SB
 090h           Auto-Initialize DMA DAC, 8-bit (High Speed)         SB2.0-Pro2
 098h           Auto-Initialize DMA ADC, 8-bit (High Speed)         SB2.0-Pro2
 0A0h           Disable Stereo Input Mode                           SBPro Only
 0A8h           Enable Stereo Input Mode                            SBPro Only
 0Bxh/0Cxh      Generic DAC/ADC DMA (16-bit, 8-bit)                 SB16
 0D0h           Halt DMA Operation, 8-bit                           SB
 0D1h           Enable Speaker                                      SB
 0D3h           Disable Speaker                                     SB
 0D4h           Continue DMA Operation, 8-bit                       SB
 0D5h           Halt DMA Operation, 16-bit                          SB16
 0D6h           Continue DMA Operation, 16-bit                      SB16
 0D8h           Speaker Status                                      SB
 0D9h           Exit Auto-Initialize DMA Operation, 16-bit          SB16
 0DAh           Exit Auto-Initialize DMA Operation, 8-bit           SB2.0
 0E0h           DSP Identification                                  SB2.0
 0E1h           DSP Version                                         SB
 0E3h           DSP Copyright                                       SBPro2???
 0E4h           Write Test Register                                 SB2.0
 0E8h           Read Test Register                                  SB2.0
 0F0h           Sine Generator                                      SB
 0F1h           DSP Auxiliary Status (Obsolete)                     SB-Pro2
 0F2h           IRQ Request, 8-bit                                  SB
 0F3h           IRQ Request, 16-bit                                 SB16
 0FBh           DSP Status                                          SB16
 0FCh           DSP Auxiliary Status                                SB16
 0FDh           DSP Command Status                                  SB16

------------------------------------------------------------------------------
 003h       ASP Status                                              SB16ASP
    COMMAND <-STATUS

    ???
------------------------------------------------------------------------------
 004h       DSP Status (Obsolete)                                   SB2.0-Pro2
    COMMAND <-STATUS

    DESCRIPTION
     Retrieves information about pending DSP operations.

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³[2]³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Speaker Status           (1 = Active)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄ Stereo ADC Status        (1 = Active)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄ Reserved (0)
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Direct ADC   8-bit Burst (1 = Active)
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ DMA    DAC   2-bit ADPCM (1 = Active)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ DMA    DAC 2.6-bit ADPCM (1 = Active)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ DMA    DAC   4-bit ADPCM (1 = Active)
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ DMA    DAC   8-bit       (1 = Active)

    NOTES
     þ SoundBlaster 2.0 implements only bit 3 and 7.
     þ SoundBlaster Pro models do not support bit 7.

    SEE ALSO
     0F1h   DSP Auxiliary Status (Obsolete)
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0FBh   DSP Status
     0FCh   DSP Auxiliary Status
     0FDh   DSP Command Status
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D8h   Speaker Status
------------------------------------------------------------------------------
 004h       ASP ???                                                 SB16ASP
    COMMAND->???

    ???
------------------------------------------------------------------------------
 005h       ASP ???                                                 SB16ASP
    COMMAND->DATAHIBYTE->DATALOBYTE

    ???
------------------------------------------------------------------------------
 010h       Direct DAC, 8-bit                                       SB
    COMMAND->SAMPLEBYTE

    DESCRIPTION
     Outputs single sample.

    PROCEDURE
      a) Send Direct DAC, 8-bit command (010h) and sample
      b) Wait for correct timing

    NOTES
     þ Direct mode maximum sample rate is 23KHz.

    SEE ALSO
     020h   Direct ADC, 8-bit
------------------------------------------------------------------------------
 014h       DMA DAC, 8-bit                                          SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 8-bit DMA transfer.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 8-bit command (014h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH = SAMPLES - 1

    NOTES
     þ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     01Ch   Auto-Initialize DMA DAC, 8-bit                     
     090h   Auto-Initialize DMA DAC, 8-bit (High Speed)        
     0Cxh   Generic DAC/ADC DMA, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     017h   DMA DAC, 2-bit ADPCM Reference
     075h   DMA DAC, 4-bit ADPCM Reference
     077h   DMA DAC, 2.6-bit ADPCM Reference         
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     024h   DMA ADC, 8-bit                                          
------------------------------------------------------------------------------
 016h       DMA DAC, 2-bit ADPCM                                    SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 2-bit ADPCM DMA transfer with accumulated reference byte.
    This operation uses 8-bit DMA mode.

    PROCEDURE (after command 017h)
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 2-bit ADPCM command (016h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH = (SAMPLES-1 + 3)/4

    NOTES
     þ Supports up to 11KHz on SoundBlaster 1.x  
     þ Ensoniq Soundscape does not support ADPCM.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     017h   DMA DAC, 2-bit ADPCM Reference
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     074h   DMA DAC, 4-bit ADPCM
     076h   DMA DAC, 2.6-bit ADPCM
------------------------------------------------------------------------------
 017h       DMA DAC, 2-bit ADPCM Reference                          SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 2-bit ADPCM DMA transfer with new reference byte.  This
    operation uses 8-bit DMA mode.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 2-bit ADPCM Reference command (017h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH = (SAMPLES-1 + 3)/4 + 1

    NOTES
     þ Supports up to 11KHz on SoundBlaster 1.x
     þ Ensoniq Soundscape does not support ADPCM.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     016h   DMA DAC, 2-bit ADPCM
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     075h   DMA DAC, 4-bit ADPCM Reference
     077h   DMA DAC, 2.6-bit ADPCM Reference
------------------------------------------------------------------------------
 01Ch       Auto-Initialize DMA DAC, 8-bit                          SB2.0
    COMMAND

    DESCRIPTION
     Initiates auto-initialize 8-bit DMA transfer.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 058h + channel)
      f) Perform Auto-Initialize DMA DAC, 8-bit command (01Ch)
      g) IRQ: Prepare next half of buffer (not always in handler)
      h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      i) Loop to G until complete
      j) Perform Disable Speaker command (0D3h)
      k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
      l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
      m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)

    NOTES
     þ Supports up to 23KHz (11.5KHz stereo???)
     þ Exit auto-initialized mode by programming single-cycle DMA output or
        with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
     þ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.     

    LENGTH = (SAMPLES + 1)/2 - 1

    SEE ALSO
     048h   Set DMA Block Size                       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     090h   Auto-Initialize DMA DAC, 8-bit (High Speed) 
     0Cxh   Generic DAC/ADC DMA, 8-bit               
------------------------------------------------------------------------------
 01Fh       Auto-Initialize DMA DAC, 2-bit ADPCM Reference          SB2.0
    COMMAND

    DESCRIPTION
     Initiates auto-initialize 2-bit ADPCM DMA transfer with reference byte.     

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 058h + channel)
      f) Perform Auto-Initialize DMA DAC, 2-bit ADPCM command (01Fh)
      g) IRQ: Prepare next half of buffer (not always in handler)
      h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      i) Loop to G until complete
      j) Perform Disable Speaker command (0D3h)
      k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
      l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
      m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)

    NOTES
     þ Exit auto-initialized mode by programming single-cycle DMA output or
        with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
     þ Ensoniq Soundscape does not support ADPCM.     

    SAMPLEBYTES = (SAMPLES     + 3)/4 + 1
    LENGTH      = (SAMPLEBYTES + 1)/2 - 1

    SEE ALSO 
     048h   Set DMA Block Size                       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     017h   DMA DAC, 2-bit ADPCM Reference                     
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     07Dh   Auto-Initialize DMA DAC, 4-bit ADPCM Reference      
     07Fh   Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference    
------------------------------------------------------------------------------
 020h       Direct ADC, 8-bit                                       SB
    COMMAND <-SAMPLEBYTE

    DESCRIPTION
     Inputs single sample.
                                
    PROCEDURE
      a) Send Direct ADC, 8-bit command (020h)
      b) Read sample
      c) Wait for correct timing    

    NOTES
     þ Direct mode maximum sample rate is 23KHz.

    SEE ALSO
     010h   Direct DAC, 8-bit                           
------------------------------------------------------------------------------
 024h       DMA ADC, 8-bit                                          SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 8-bit DMA transfer (record).

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 044h + channel)
      e) Perform DMA ADC, 8-bit command (024h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH = SAMPLES - 1

    NOTES
     þ SoundBlasters prior to SB16 return the first sample in direct mode.

    SEE ALSO                 
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02Ch   Auto-Initialize DMA ADC, 8-bit                    
     098h   Auto-Initialize DMA ADC, 8-bit (High Speed)
     0Cxh   Generic DAC/ADC DMA, 8-bit                  
------------------------------------------------------------------------------
 028h       Direct ADC, 8-bit (Burst)                               SB-Pro2
    COMMAND <-SAMPLEBYTE0...SAMPLEBYTEn

    DESCRIPTION
     ???

    PROCEDURE
     ???

    NOTES
     þ Terminate operation with DSP reset.

    SEE ALSO
     020h   Direct ADC, 8-bit
------------------------------------------------------------------------------
 02Ch           Auto-Initialize DMA ADC, 8-bit                      SB2.0
    COMMAND

    DESCRIPTION
     Initiates auto-initialize 8-bit DMA transfer (record).

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 054h + channel)
      f) Perform Auto-Initialize DMA ADC, 8-bit command (02Ch)
      g) IRQ: Prepare next half of buffer (not always in handler)
      h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      i) Loop to G until complete
      j) Perform Disable Speaker command (0D3h)
      k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
      l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
      m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)

    NOTES
     þ Supports up to 23KHz (11.5KHz stereo???)
     þ Exit auto-initialized mode by programming single-cycle DMA output or
        with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
     þ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.     

    LENGTH = (SAMPLES + 1)/2 - 1

    SEE ALSO
     048h   Set DMA Block Size                       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     098h   Auto-Initialize DMA ADC, 8-bit (High Speed)
     0Cxh   Generic DAC/ADC DMA, 8-bit               
------------------------------------------------------------------------------
 030h       MIDI Read Poll                                          SB
    COMMAND <-MIDICODE

    DESCRIPTION
     Reads MIDI code.

    PROCEDURE
      a) Send MIDI Read Poll command (030h)
      b) Read MIDI code when available

    NOTES
     þ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     031h   MIDI Read Interrupt
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     032h   MIDI Read Timestamp Poll
     033h   MIDI Read Timestamp Interrupt
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     034h   MIDI Read Poll + Write Poll (UART)
     035h   MIDI Read Interrupt + Write Poll (UART)
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     038h   MIDI Write Poll
------------------------------------------------------------------------------
 031h       MIDI Read Interrupt                                     SB
    COMMAND {<-MIDICODE}

    DESCRIPTION
     Generates interrupt when MIDI code is available.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform MIDI Read Interrupt command (031h)
      c) IRQ: Read MIDI code
      d) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      e) Perform MIDI Read Interrupt command (031h) to terminate

    NOTES
     þ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     033h   MIDI Read Timestamp Interrupt
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     035h   MIDI Read Interrupt + Write Poll (UART)
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     030h   MIDI Read Poll
-----------------------------------------------------------------------------
 032h       MIDI Read Timestamp Poll                                SB???
    COMMAND <-TIMESTAMPLOBYTE<-TIMESTAMPMIDBYTE<-TIMESTAMPHIBYTE<-MIDICODE

    DESCRIPTION
     Reads MIDI code with timestamp.

    PROCEDURE
      a) Send MIDI Read Timestamp Poll command (032h)
      b) Read timestamp and MIDI code when available

    NOTES
     þ Timestamp if 24-bit value containing the time since the last MIDI
        command in milliseconds.
     þ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     033h   MIDI Read Timestamp Interrupt
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
------------------------------------------------------------------------------
 033h       MIDI Read Timestamp Interrupt                           SB???
    COMMAND {<-TIMESTAMPLOBYTE<-TIMESTAMPMIDBYTE<-TIMESTAMPHIBYTE<-MIDICODE}

    DESCRIPTION
     Generates interrupt when MIDI code is available, includes timestamp.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform MIDI Read Interrupt with Timestamp command (033h)
      c) IRQ: Read MIDI code with timestamp
      d) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      e) Perform MIDI Read Interrupt with Timestamp command (033h) to terminate

    NOTES
     þ Timestamp if 24-bit value containing the time since the last MIDI
        command in milliseconds.
     þ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     032h   MIDI Read Timestamp Poll
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
------------------------------------------------------------------------------
 034h       MIDI Read Poll + Write Poll (UART)                      SB2.0
    COMMAND [->MIDICODE] [<-MIDICODE]

    DESCRIPTION
     Enables UART mode, where all DSP read/writes are interpreted as MIDI codes.

    PROCEDURE
      a) Send MIDI Read Poll + Write Poll (UART) command (034h)
      b) Send and receive MIDI codes
      c) Reset DSP to terminate

    NOTES
     þ Disable UART mode with DSP reset (port 02x06h)
     þ Read/write status must still be checked (port 02x0Eh/02x0Ch)
     þ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     030h   MIDI Read Poll
     038h   MIDI Write Poll
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     035h   MIDI Read Interrupt + Write Poll (UART)
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
------------------------------------------------------------------------------
 035h       MIDI Read Interrupt + Write Poll (UART)                 SB2.0???
    COMMAND [->MIDICODE] {<-MIDICODE}

    DESCRIPTION
     Enables UART mode with interrupt, where all DSP writes are interpreted as
      MIDI codes and interrupts are generated when a MIDI code is to be read.

    PROCEDURE
      a) Send MIDI Read Interrupt + Write Poll (UART) command (035h)
      b) Send and receive MIDI codes (see command 031h)
      c) Reset DSP to terminate

    NOTES
     þ Disable UART mode with DSP reset (port 02x06h)
     þ Write buffer status must still be checked (port 02x0Ch)
     þ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     034h   MIDI Read Poll + Write Poll (UART)
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     031h   MIDI Read Interrupt
------------------------------------------------------------------------------
 037h       MIDI Read Timestamp Interrupt + Write Poll (UART)       SB2.0???
    COMMAND [->MIDICODE]
             {<-TIMESTAMPLOBYTE<-TIMESTAMPMIDBYTE<-TIMESTAMPHIBYTE<-MIDICODE}

    DESCRIPTION
     Enables UART mode with interrupt, where all DSP writes are interpreted as
      MIDI codes and interrupts are generated when a timestamped MIDI code is
      to be read.

    PROCEDURE
      a) Send MIDI Read Timestamp Interrupt + Write Poll (UART) command (037h)
      b) Send and receive MIDI codes with timestamps (see command 033h)
      c) Reset DSP to terminate

    NOTES
     þ Disable UART mode with DSP reset (port 02x06h)
     þ Write buffer status must still be checked (port 02x0Ch)
     þ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     034h   MIDI Read Poll + Write Poll (UART)
     035h   MIDI Read Interrupt + Write Poll (UART)
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     038h   MIDI Write Poll
------------------------------------------------------------------------------
 038h       MIDI Write Poll                                         SB
    COMMAND->MIDICODE

    DESCRIPTION
     Writes MIDI code.

    PROCEDURE
      a) Send MIDI Write Poll command (038h) and data

    SEE ALSO
     034h   MIDI Read Poll + Write Poll (UART)
     035h   MIDI Read Interrupt + Write Poll (UART)
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     030h   MIDI Read Poll
------------------------------------------------------------------------------
 040h       Set Time Constant                                       SB
    COMMAND->TIMEBYTE

    DESCRIPTION
     Sets sample rate through internal I/O transfer timer.

    FORMULA
     TimeConstant = 256 - (1000000 / (SampleChannels * SampleRate))

    NOTES
     þ For non-SoundBlaster Pro cards, always set SampleChannels equal to one.

    SEE ALSO
     041h   Set Sample Rate
------------------------------------------------------------------------------
 041h       Set Sample Rate                                         SB16
    COMMAND->RATEHIBYTE->RATELOBYTE

    DESCRIPTION
     Sets sample rate.

    NOTES
     þ Sampling rate precision is truncated to nearest time constant.
     þ Sampling rate is programmed independent of stereo or monaural modes.

    SEE ALSO
     040h   Set Time Constant
------------------------------------------------------------------------------
 045h       Continue Auto-Initialize DMA, 8-bit                     SB16
    COMMAND

    DESCRIPTION
     Continues a halted auto-initialized 8-bit DMA operation.

    SEE ALSO
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0Cxh   Generic DAC/ADC, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     01Ch   Auto-Initialize DMA DAC,   8-bit
     01Fh   Auto-Initialize DMA DAC,   2-bit ADPCM
     02Ch   Auto-Initialize DMA ADC,   8-bit
     07Dh   Auto-Initialize DMA DAC,   4-bit ADPCM
     07Fh   Auto-Initialize DMA DAC, 2.6-bit ADPCM
     090h   Auto-Initialize DMA DAC,   8-bit (High Speed)
     098h   Auto-Initialize DMA ADC,   8-bit (High Speed)
------------------------------------------------------------------------------
 047h       Continue Auto-Initialize DMA, 16-bit                    SB16
    COMMAND

    DESCRIPTION
     Continues a halted auto-initialized 16-bit DMA operation.

    SEE ALSO
     0D9h   Exit Auto-Initialize DMA, 16-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0Bxh   Generic DAC/ADC, 16-bit
------------------------------------------------------------------------------
 048h       Set DMA Block Size                                      SB2.0
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Set DMA transfer size for auto-initialize and high speed modes.

    SAMPLEBYTES =  SAMPLES                    8-bit
                  (SAMPLES-1   + 1)/2 + 1     4-bit ADPCM + Reference
                  (SAMPLES-1   + 2)/3 + 1   2.6-bit ADPCM + Reference
                  (SAMPLES-1   + 3)/4 + 1     2-bit ADPCM + Reference

    LENGTH      =  SAMPLEBYTES        - 1  (Single Cycle)
                  (SAMPLEBYTES + 1)/2 - 1  (Auto-Init   )

    NOTES
     þ Length is always equal to the number of bytes to transfer minus one.

    SEE ALSO
     01Ch   Auto-Initialize DMA DAC,   8-bit
     01Fh   Auto-Initialize DMA DAC,   2-bit ADPCM
     02Ch   Auto-Initialize DMA ADC,   8-bit
     07Dh   Auto-Initialize DMA DAC,   4-bit ADPCM
     07Fh   Auto-Initialize DMA DAC, 2.6-bit ADPCM
     090h   Auto-Initialize DMA DAC,   8-bit (High Speed)
     098h   Auto-Initialize DMA ADC,   8-bit (High Speed)
------------------------------------------------------------------------------
 074h       DMA DAC, 4-bit ADPCM                                    SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 4-bit ADPCM DMA transfer with accumulated reference byte.
    This operation uses 8-bit DMA mode.

    PROCEDURE (after command 075h)
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 4-bit ADPCM command (074h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH      = (SAMPLES-1   + 1)/2

    NOTES
     þ Supports up to 12KHz on SoundBlaster 1.x  
     þ Ensoniq Soundscape does not support ADPCM.
                                                          
    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     074h   DMA DAC, 4-bit ADPCM Reference
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     016h   DMA DAC, 2-bit ADPCM
     076h   DMA DAC, 2.6-bit ADPCM
------------------------------------------------------------------------------
 075h       DMA DAC, 4-bit ADPCM Reference                          SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 4-bit ADPCM DMA transfer with new reference byte.  This
    operation uses 8-bit DMA mode.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 4-bit ADPCM Reference command (075h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH      = (SAMPLES-1   + 1)/2 + 1

    NOTES
     þ Supports up to 12KHz on SoundBlaster 1.x  
     þ Ensoniq Soundscape does not support ADPCM.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     075h   DMA DAC, 4-bit ADPCM
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     017h   DMA DAC, 2-bit ADPCM Reference
     077h   DMA DAC, 2.6-bit ADPCM Reference
------------------------------------------------------------------------------
 076h       DMA DAC, 2.6-bit ADPCM                                  SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 2.6-bit ADPCM DMA transfer with accumulated reference byte.
    This operation uses 8-bit DMA mode.

    PROCEDURE (after command 077h)
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 2.6-bit ADPCM command (076h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH      = (SAMPLES-1   + 2)/3

    NOTES
     þ Supports up to 13KHz on SoundBlaster 1.x  
     þ Ensoniq Soundscape does not support ADPCM.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     077h   DMA DAC, 2.6-bit ADPCM Reference
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     016h   DMA DAC, 2-bit ADPCM
     074h   DMA DAC, 4-bit ADPCM
------------------------------------------------------------------------------
 077h       DMA DAC, 2.6-bit ADPCM Reference                        SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 2.6-bit ADPCM DMA transfer with new reference byte.  This
    operation uses 8-bit DMA mode.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 2.6-bit ADPCM Reference command (077h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH      = (SAMPLES-1   + 2)/3 + 1

    NOTES
     þ Supports up to 13KHz on SoundBlaster 1.x  
     þ Ensoniq Soundscape does not support ADPCM.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     076h   DMA DAC, 2.6-bit ADPCM
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     017h   DMA DAC, 2-bit ADPCM Reference
     075h   DMA DAC, 4-bit ADPCM Reference
------------------------------------------------------------------------------
 07Dh       Auto-Initialize DMA DAC, 4-bit ADPCM Reference          SB2.0
    COMMAND

    DESCRIPTION
     Initiates auto-initialize 4-bit ADPCM DMA transfer with reference byte.         

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 058h + channel)
      f) Perform Auto-Initialize DMA DAC, 4-bit ADPCM command (07Dh)
      g) IRQ: Prepare next half of buffer (not always in handler)
      h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      i) Loop to G until complete
      j) Perform Disable Speaker command (0D3h)
      k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
      l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
      m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)

    NOTES
     þ Exit auto-initialized mode by programming single-cycle DMA output or
        with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
     þ Ensoniq Soundscape does not support ADPCM.

    SAMPLEBYTES = (SAMPLES     + 1)/2 + 1
    LENGTH      = (SAMPLEBYTES + 1)/2 - 1

    SEE ALSO     
     048h   Set DMA Block Size                       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     075h   DMA DAC, 4-bit ADPCM Reference                   
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     01Fh   Auto-Initialize DMA DAC, 2-bit ADPCM Reference      
     07Fh   Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference    
------------------------------------------------------------------------------
 07Fh       Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference        SB2.0
    COMMAND

    DESCRIPTION
     Initiates auto-initialize 2.6-bit ADPCM DMA transfer with reference byte.          

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 058h + channel)
      f) Perform Auto-Initialize DMA DAC, 2.6-bit ADPCM command (07Fh)
      g) IRQ: Prepare next half of buffer (not always in handler)
      h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      i) Loop to G until complete
      j) Perform Disable Speaker command (0D3h)
      k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
      l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
      m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)

    NOTES
     þ Exit auto-initialized mode by programming single-cycle DMA output or
        with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
     þ Ensoniq Soundscape does not support ADPCM.    

    SAMPLEBYTES = (SAMPLES     + 2)/3 + 1
    LENGTH      = (SAMPLEBYTES + 1)/2 - 1

    SEE ALSO
     048h   Set DMA Block Size                       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     077h   DMA DAC, 2.6-bit ADPCM Reference            
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     01Fh   Auto-Initialize DMA DAC, 2-bit ADPCM Reference      
     07Dh   Auto-Initialize DMA DAC, 4-bit ADPCM Reference      
------------------------------------------------------------------------------
 080h       Silence DAC                                             SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Outputs block of silent samples at current sample rate, and signals
      IRQ when complete.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Silence DAC command (080h)
      d) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      e) Remove IRQ handler (restore vector, restore PIC mask)

    LENGTH = SAMPLES - 1

    SEE ALSO
     040h   Set Time Constant
------------------------------------------------------------------------------
 090h       Auto-Initialize DMA DAC, 8-bit (High Speed)             SB2.0-Pro2
    COMMAND

    DESCRIPTION
     Initiates 8-bit DMA transfer (>23KHz).

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 058h + channel)
      f) Perform Auto-Initialize DMA DAC, 8-bit (HighSpeed) command (090h)
      g) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      h) Reset DSP (or terminate normally on SB16+)

    NOTES
     þ High speed mode ignores DSP commands during transfers (<SB16).
     þ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.

    SEE ALSO
     048h   Set DMA Block Size                       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     01Ch   Auto-Initialize DMA DAC, 8-bit
     0Cxh   Generic DAC/ADC DMA, 8-bit               
------------------------------------------------------------------------------
 098h       Auto-Initialize DMA ADC, 8-bit (High Speed)             SB2.0-Pro2
    COMMAND

    DESCRIPTION
     Initiates 8-bit DMA transfer (record, >23KHz).

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 054h + channel)
      f) Perform Auto-Initialize DMA ADC, 8-bit (HighSpeed) command (098h)
      g) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      h) Reset DSP (or terminate normally on SB16+)

    NOTES
     þ High speed mode ignores DSP commands during transfers (<SB16).

    SEE ALSO
     048h   Set DMA Block Size                       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     02Ch   Auto-Initialize DMA ADC, 8-bit
     0Cxh   Generic DAC/ADC DMA, 8-bit               
------------------------------------------------------------------------------
 0A0h       Disable Stereo Input Mode                               SBPro Only
    COMMAND

    DESCRIPTION
     Selects monaural input mode on SoundBlaster Pro.

    NOTES
     þ Monaural input mode is default.
     þ SoundBlaster 16 uses command 0Bxh/0Cxh for stereo input.

    SEE ALSO
     0A8h   Enable Stereo Input Mode
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0F1h   DSP Auxiliary Status (Obsolete)
------------------------------------------------------------------------------
 0A8h       Enable Stereo Input Mode                                SBPro Only
    COMMAND

    DESCRIPTION
     Selects stereo input mode on SoundBlaster Pro.

    NOTES
     þ Monaural input mode is default.
     þ SoundBlaster 16 uses command 0Bxh/0Cxh for stereo input.
     þ BUG: Stereo input mode results in playback static.

    SEE ALSO
     0A0h   Disable Stereo Input Mode
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0F1h   DSP Auxiliary Status (Obsolete)
------------------------------------------------------------------------------
 0Bxh/0Cxh  Generic DAC/ADC DMA (16-bit, 8-bit)                     SB16
    COMMAND->MODE->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Generalized sampling and playback command (includes 16-bit operations).

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Setup DMA controller (mode = mode + channel)
      d) Perform Generic DAC/ADC DMA command (0Bxh/0Cxh)
      e) IRQ: Acknowledge IRQ (input from IRQ Acknowledge port - 02x0Eh/02x0Fh;
                               perform Generic EOI (020h) to appropriate PICs)
      f) Terminate transfer, method dependent on mode

    COMMAND BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º(7)³(6)³(5)³(4)³ 3 ³ 2 ³ 1 ³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Reserved (0)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄ FIFO Mode (0 = Disable, 1 = Enable)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄ DMA Mode  (0 = Single, 1 = Auto-Init)
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Transfer Mode (0 = DAC, 1 = ADC)
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ Sampling Resolution
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´   1011b = 16-bit, 1100b = 8-bit
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    MODE BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º[7]³[6]³ 5 ³ 4 ³[3]³[2]³[1]³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÂÄ Reserved (0)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄ´
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Sample Mode (0 = Unsigned, 1 = Signed)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Stereo Mode (0 = Monaural, 1 = Stereo)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ Reserved (0)
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    LENGTH = SAMPLES - 1        (even for 16-bit samples)

    NOTES
     þ Enable FIFO mode for high speed mode or large data transfers.
     þ BUG: SoundBlaster 16 ADC only accurate to 12-bits.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D5h   Halt DMA Operation, 16-bit
     0D6h   Continue DMA Operation, 16-bit
     047h   Continue Auto-Initialize DMA, 16-bit
     0D9h   Exit Auto-Initialize DMA Operation, 16-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     014h   DMA DAC, 8-bit
     024h   DMA ADC, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     01Ch   Auto-Initialize DMA DAC, 8-bit
     02Ch   Auto-Initialize DMA ADC, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     090h   Auto-Initialize DMA DAC, 8-bit (High Speed)
     098h   Auto-Initialize DMA ADC, 8-bit (High Speed)
------------------------------------------------------------------------------
 0D0h       Halt DMA Operation, 8-bit                               SB
    COMMAND

    DESCRIPTION
     Pauses 8-bit single-cycle DMA operation.

    NOTES
     þ Halts every 8-bit DMA mode on SoundBlaster 16.              
     þ BUG: Halts 16-bit DMA operation on early SoundBlaster 16s (4.04).     

    SEE ALSO
     0D4h   Continue DMA Operation, 8-bit             
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit 
------------------------------------------------------------------------------
 0D1h       Enable Speaker                                          SB
    COMMAND

    DESCRIPTION
     Enables speaker output.

    NOTES
     þ Reset of DSP disables speaker.
     þ BUG: Halts pending DMA operations on SoundBlaster 1.x.
     þ BUG: Enabled speaker generates sampling noise on SoundBlaster 2.0.
     þ BUG: Speaker MUST be disabled before sampling on SoundBlaster Pro.
     þ BUG: Speaker state does NOT physically change on SoundBlaster 16.
     þ Originator of noisy 'pops' on some models (capacitor discharge).            

    SEE ALSO
     0D3h   Disable Speaker
------------------------------------------------------------------------------
 0D3h       Disable Speaker                                         SB
    COMMAND

    DESCRIPTION
     Disables speaker output.  

    NOTES    
     þ Reset of DSP disables speaker.
     þ BUG: Halts pending DMA operations on SoundBlaster 1.x.
     þ BUG: Enabled speaker generates sampling noise on SoundBlaster 2.0.
     þ BUG: Speaker MUST be disabled before sampling on SoundBlaster Pro.
     þ BUG: Speaker state does NOT physically change on SoundBlaster 16.
     þ Originator of noisy 'pops' on some models (capacitor discharge).            

    SEE ALSO
     0D1h   Enable Speaker
------------------------------------------------------------------------------
 0D4h       Continue DMA Operation, 8-bit                           SB
    COMMAND

    DESCRIPTION
     Continues a halted 8-bit single-cycle DMA operation.

    NOTES
     þ Continues every 8-bit DMA mode on SoundBlaster 16.           
     þ BUG: Continues 16-bit DMA operation on early SoundBlaster 16 (4.04).     

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit                 
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit 
------------------------------------------------------------------------------
 0D5h       Halt DMA Operation, 16-bit                              SB16
    COMMAND

    DESCRIPTION
     Pauses any 16-bit DMA operation.                        

    SEE ALSO
     0D6h   Continue DMA Operation, 16-bit                              
     0D9h   Exit Auto-Initialize DMA Operation, 16-bit              
------------------------------------------------------------------------------
 0D6h       Continue DMA Operation, 16-bit                          SB16
    COMMAND

    DESCRIPTION
     Continues any halted 16-bit DMA operation.

    SEE ALSO
     0D5h   Halt DMA Operation, 16-bit
     0D9h   Exit Auto-Initialize DMA Operation, 16-bit              
------------------------------------------------------------------------------
 0D8h       Speaker Status                                          SB
    COMMAND <-STATUS

    DESCRIPTION
     Determines current status of speaker.

    STATUS BYTE
     000h = Disabled
     0FFh = Enabled

    NOTES
     þ Reset of DSP disables speaker.

    SEE ALSO
     0D1h   Enable Speaker
     0D3h   Disable Speaker
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     004h   DSP Status (Obsolete)
     0F1h   DSP Auxiliary Status (Obsolete)
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0FBh   DSP Status
     0FCh   DSP Auxiliary Status
     0FDh   DSP Command Status
------------------------------------------------------------------------------
 0D9h       Exit Auto-Initialize DMA Operation, 16-bit              SB16
    COMMAND

    DESCRIPTION
     Terminates auto-initialized 16-bit DMA operation after current block.

    PROCEDURE                                  
      a) Perform Disable Speaker command (0D3h)
      b) Perform Halt DMA Operation, 16-bit command (0D5h - virtual speaker)
      c) Perform Exit Auto-Initialize DMA Operation, 16-bit command (0D9h)
      d) Perform Halt DMA Operation, 16-bit command (0D5h - virtual speaker)
             
    NOTES
     þ Halt commands are required for immediate termination and to quiet SB16.

    SEE ALSO                                              
     0D5h   Halt DMA Operation, 16-bit
     047h   Continue Auto-Initialize DMA, 16-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D3h   Disable Speaker
------------------------------------------------------------------------------
 0DAh       Exit Auto-Initialize DMA Operation, 8-bit               SB2.0
    COMMAND

    DESCRIPTION
     Terminates auto-initialized 8-bit DMA operations after current block.

    PROCEDURE                                  
      a) Perform Disable Speaker command (0D3h)
      b) Perform Halt DMA Operation, 8-bit command (0D0h - virtual speaker)
      c) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
      d) Perform Halt DMA Operation, 8-bit command (0D0h - virtual speaker)
             
    NOTES
     þ Halt commands are required for immediate termination and to quiet SB16.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit                 
     045h   Continue Auto-Initialize DMA, 8-bit
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D3h   Disable Speaker
------------------------------------------------------------------------------
 0E0h       DSP Identification                                      SB2.0
    COMMAND->DATA <-NOT(DATA)

    DESCRIPTION
     Returns bitwise NOT of data byte.

    NOTES
     þ Results reliable only after DSP reset on early models.

    SEE ALSO
     0E1h   DSP Version
     0E3h   DSP Copyright
------------------------------------------------------------------------------
 0E1h       DSP Version                                             SB
    COMMAND <-MAJORVERSIONBYTE<-MINORVERSIONBYTE

    DESCRIPTION
     Determines DSP major and minor version.

    MODEL                      VERSION
     SoundBlaster 1.0           1.??  (1.05???)
     SoundBlaster 1.5           1.??  (1.05???)
     SoundBlaster 2.0           2.xx  (2.01)
     SoundBlaster Pro           3.00  (???)
     SoundBlaster Pro 2         3.01+ (3.01, 3.02)
     SoundBlaster 16            4.0x  (4.04, 4.05)
     SoundBlaster 16 SCSI-2     4.11  (4.11)
     SoundBlaster AWE32         4.12+ (4.12)

    NOTES
     þ Ensure that no other card is mapped at the same port address by
         performing this command twice, checking for a consistent result.
     þ BUG: Some SB1.x clones errantly return version 2.00.
     þ BUG: Some SB16 SCSI-2s experience daughterboard communication errors.

    SEE ALSO
     0E0h   DSP Identification
     0E3h   DSP Copyright
------------------------------------------------------------------------------
 0E3h       DSP Copyright                                           SBPro2???
    COMMAND <-ASCII0...ASCIIn<-000h

    DESCRIPTION
     Reads DSP copyright string.

    PROCEDURE
      a) Send DSP Copyright command byte (0E3h)
      b) Read string byte
      c) Loop to B while string byte is not zero

    SEE ALSO
     0E0h   DSP Identification
     0E1h   DSP Version
------------------------------------------------------------------------------
 0E4h       Write Test Register                                     SB2.0
    COMMAND->TESTBYTE

    DESCRIPTION
     Writes diagnostic register.

    NOTES
     þ DSP reset does not clear the test register.

    SEE ALSO
     0E8h   Read Test Register
------------------------------------------------------------------------------
 0E8h       Read Test Register                                      SB2.0
    COMMAND <-TESTBYTE

    DESCRIPTION
     Reads diagnostic register.

    NOTES
     þ DSP reset does not clear the test register.

    SEE ALSO
     0E4h   Write Test Register
------------------------------------------------------------------------------
 0F0h       Sine Generator                                          SB
    COMMAND

    DESCRIPTION
     Diagnostic peak-to-peak sine wave generator.

    NOTES
     þ Disable sound with DSP reset.
     þ Sinusodal frequency is about 2KHz.
     þ Sets time constant to approximately 0C0h (15625Hz).
     þ Enables speaker on models prior to SoundBlaster 16.
------------------------------------------------------------------------------
 0F1h       DSP Auxiliary Status (Obsolete)                         SB-Pro2
    COMMAND <-STATUS

    DESCRIPTION
     Retrieves auxiliary information about pending DSP operations.

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³[1]³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Speaker Status  (0 = Enabled)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄ Reserved (1)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄ DSPC 0ACh ???
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Stereo Input Mode (1 = Stereo)
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Reserved (1)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ DSPC 020h-02Fh (SB1.x) ???
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ DSPC 02Dh-02Fh (SB1.x) ???
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ???

    NOTES
     þ SoundBlaster Pro introduces bit 3.

    SEE ALSO
     004h   DSP Status (Obsolete)
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0FBh   DSP Status
     0FCh   DSP Auxiliary Status
     0FDh   DSP Command Status
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D8h   Speaker Status    
------------------------------------------------------------------------------
 0F2h       IRQ Request, 8-bit                                      SB
    COMMAND

    DESCRIPTION
     Triggers 8-bit interrupt.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform IRQ Request, 8-bit command (0F2h)
      c) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)

    SEE ALSO
     0F3h   Interrupt Request, 16-bit
------------------------------------------------------------------------------
 0F3h       IRQ Request, 16-bit                                     SB16
    COMMAND

    DESCRIPTION
     Triggers 16-bit interrupt.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform IRQ Request, 16-bit command (0F3h)
      c) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 16-bit port - 02x0Fh;
                               perform Generic EOI (020h) to appropriate PICs)

    SEE ALSO
     0F2h   Interrupt Request, 8-bit
------------------------------------------------------------------------------
 0FBh       DSP Status                                              SB16
    COMMAND <-STATUS

    DESCRIPTION
     Retrieves information about pending DSP operations.

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ DMA DAC, 8-bit  (1 = Active)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄ DMA ADC, 8-bit  (1 = Active)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄ DMA DAC, 16-bit (1 = Active)
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ DMA ADC, 16-bit (1 = Active)
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Virtual Speaker (1 = Active)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ???
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ DSPC 04Fh ???
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Time Constant   (1 = Modified)

    NOTES
     þ Time Constant bit will not be set if too large a time constant was
        programmed (low sample rate).
     þ MediaVision 3D-series cards use this command for DMA and IRQ selection.

    SEE ALSO
     0FCh   DSP Auxiliary Status
     0FDh   DSP Command Status
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     004h   DSP Status (Obsolete)
     0F1h   DSP Auxiliary Status (Obsolete)
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D8h   Speaker Status     
------------------------------------------------------------------------------
 0FCh       DSP Auxiliary Status                                    SB16
    COMMAND <-STATUS

    DESCRIPTION
     Retrieves auxiliary information about pending DMA operations.

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ ???
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄ DAC/ADC DMA           (1 = Synchronous)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄ Auto-Init DMA, 8-bit  (1 = Active)
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ???
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Auto-Init DMA, 16-bit (1 = Active)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ???
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ???
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ???

    SEE ALSO
     0FBh   DSP Status
     0FDh   DSP Command Status
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     004h   DSP Status (Obsolete)
     0F1h   DSP Auxiliary Status (Obsolete)
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D8h   Speaker Status    
------------------------------------------------------------------------------
 0FDh       DSP Command Status                                      SB16
    COMMAND <-COMMANDSTATUS

    DESCRIPTION
     Retrieves most recently successful DSP command.

    NOTES
     þ Reseting the DSP clears this variable.
     þ Command does not support all valid DSP commands, but most.
     þ MediaVision 3D-series cards use this command for DMA and IRQ detection.

    SEE ALSO
     0FBh   DSP Status
     0FCh   DSP Auxiliary Status
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     004h   DSP Status (Obsolete)
     0F1h   DSP Auxiliary Status (Obsolete)
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     0D8h   Speaker Status    


==============================================================================
 MIXER REGISTERS
------------------------------------------------------------------------------
 000h       Reset                                       Write       SBPro
 001h       Status                                      Read        SBPro
 002h       Master Volume                               Read/Write  SBPro Only
 004h       DAC Level                                   Read/Write  SBPro
 006h       FM Output Control                           Read/Write  SBPro Only
 00Ah       Microphone Level                            Read/Write  SBPro
 00Ch       Input/Filter Select                         Read/Write  SBPro Only
 00Eh       Output/Stereo Select                        Read/Write  SBPro Only
 022h       Master Volume                               Read/Write  SBPro
 026h       FM Level                                    Read/Write  SBPro
 028h       CD Audio Level                              Read/Write  SBPro
 02Eh       Line In Level                               Read/Write  SBPro
 030h       Master Volume Left                          Read/Write  SB16
 031h       Master Volume Right                         Read/Write  SB16
 032h       DAC Level Left                              Read/Write  SB16
 033h       DAC Level Right                             Read/Write  SB16
 034h       FM Level Left                               Read/Write  SB16
 035h       FM Level Right                              Read/Write  SB16
 036h       CD Audio Level Left                         Read/Write  SB16
 037h       CD Audio Level Right                        Read/Write  SB16
 038h       Line In Level Left                          Read/Write  SB16
 039h       Line In Level Right                         Read/Write  SB16
 03Ah       Microphone Level                            Read/Write  SB16
 03Bh       PC Speaker Level                            Read/Write  SB16
 03Ch       Output Control                              Read/Write  SB16
 03Dh       Input Control Left                          Read/Write  SB16
 03Eh       Input Control Right                         Read/Write  SB16
 03Fh       Input Gain Control Left                     Read/Write  SB16
 040h       Input Gain Control Right                    Read/Write  SB16
 041h       Output Gain Control Left                    Read/Write  SB16
 042h       Output Gain Control Right                   Read/Write  SB16
 043h       Automatic Gain Control (AGC)                Read/Write  SB16
 044h       Treble Left                                 Read/Write  SB16
 045h       Treble Right                                Read/Write  SB16
 046h       Bass Left                                   Read/Write  SB16
 047h       Bass Right                                  Read/Write  SB16
 080h       IRQ Select                                  Read/Write  SB16
 081h       DMA Select                                  Read/Write  SB16
 082h       IRQ Status                                  Read        SB16

------------------------------------------------------------------------------
 000h       Reset                                       Write       SBPro

    DESCRIPTION
     Resets mixer to default settings.

    PROCEDURE
      a) Load index register
      b) Wait 100æs
      c) Write reset stop

    RESET BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Reset Stop (0)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÂÄ Reserved   (0)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    NOTES
     þ Defaults documented for each register (SBPro, SB16)
------------------------------------------------------------------------------
 001h       Status                                      Read        SBPro

    DESCRIPTION
     Contains previously selected register value.

    STATUS BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÂÄ Mixer Data Register value
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄ´
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ


    NOTES
     þ SoundBlaster 16 sets bit 7 if previous mixer index invalid.
     þ Status bytes initially 080h on startup for all but level bytes (SB16)
------------------------------------------------------------------------------
 002h       Master Volume                               Read/Write  SBPro Only

    VOLUME BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³[4]³ 3 ³ 2 ³ 1 ³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Reserved (1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÂÄ Right Master Volume bit 3-1 (SBPro)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Reserved (1)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ Left  Master Volume bit 3-1 (SBPro)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    DEFAULT
     099h, N/A

    NOTES
     þ Same as register 022h selection.

    SEE ALSO
     022h   Master Volume                       Read/Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     030h   Master Volume Left                  Read/Write
     031h   Master Volume Right                 Read/Write
------------------------------------------------------------------------------
 004h       DAC Level                                   Read/Write  SBPro

    LEVEL BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Right DAC Level bit  0  (SB16, SBPro=1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÂÄ Right DAC Level bit 3-1 (SBPro)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Left  DAC Level bit  0  (SB16, SBPro=1)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ Left  DAC Level bit 3-1 (SBPro)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    DEFAULT
     099h, 0CCh

    NOTES
     þ Mixer detection can be accomplished by looking for this register index.
     þ SoundBlaster 16 will automatically update registers 031h and 032h,
        transferring bits 7-4 and setting bit 3.

    SEE ALSO
     032h   DAC Level Left                      Read/Write
     033h   DAC Level Right                     Read/Write
------------------------------------------------------------------------------
 006h       FM Output Control                           Read/Write  SBPro Only

    CONTROL BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º[7]³ 6 ³ 5 ³[4]³ 3 ³ 2 ³ 1 ³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Reserved (1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÂÄ FM Level (bits 3-1, see notes)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Reserved (1)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ FM Left  Channel (0 = On, 1 = Off)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ FM Right Channel (0 = On, 1 = Off)
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Reserved (0)

    DEFAULT
     019h, N/A

    NOTES
     þ FM level controls both channels.
     þ If only one channel is active, the inactive channel's voices will
        be routed through the active one.
     þ SoundBlaster Pro will automatically update register 026h,
        transferring source bits 3-0 to destination bits 7-4 and 3-0.

    SEE ALSO
     026h   FM Level                            Read/Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     034h   FM Level Left                       Read/Write
     035h   FM Level Right                      Read/Write
------------------------------------------------------------------------------
 00Ah       Microphone Level                            Read/Write  SBPro

    LEVEL BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º[7]³[6]³[5]³[4]³[3]³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Microphone Level bit  0  (SB16, SBPro=0)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÂÄ Microphone Level bit 2-1 (SBPro)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ Reserved (0)
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    DEFAULT
     011h, 000h

    SEE ALSO
     03Ah   Microphone Level                    Read/Write
------------------------------------------------------------------------------
 00Ch       Input/Filter Select                         Read/Write  SBPro Only

    SELECT BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º[7]³[6]³ 5 ³[4]³ 3 ³ 2 ³ 1 ³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Reserved (1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÂÄ Input Select (0 = Microphone,
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÙ                1 = CD Audio, 3 = Line In)
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Frequency (0 = Highpass, 1 = Lowpass)
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Reserved (0)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Filter Input (0 = On, 1 = Off)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ Reserved (0)
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    DEFAULT
     011h, N/A

    SEE ALSO
     03Dh   Input Control Left                  Read/Write
     03Eh   Input Control Right                 Read/Write
------------------------------------------------------------------------------
 00Eh       Output/Stereo Select                        Read/Write  SBPro Only

    SELECT BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º[7]³[6]³ 5 ³[4]³[3]³[2]³ 1 ³[0]º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Reserved (1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄ Stereo Output Mode (1 = Stereo)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÂÄ Reserved (0)
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Reserved (1)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Filter Output (0 = On, 1 = Off)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ Reserved (0)
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    DEFAULT
     011h, N/A

    NOTES
     þ SoundBlaster 16 uses command 0Bxh/0Cxh for stereo output.

    SEE ALSO
     03Ch   Output Control                      Read/Write
------------------------------------------------------------------------------
 022h       Master Volume                               Read/Write  SBPro

    VOLUME BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Right Master bit  0  (SB16, SBPro=1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÂÄ Right Master bit 3-1 (SBPro)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Left  Master bit  0  (SB16, SBPro=1)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ Left  Master bit 3-1 (SBPro)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    DEFAULT
     011h, 0CCh

    NOTES
     þ SoundBlaster 16 will automatically update registers 030h and 031h,
        transferring bits 7-4 and setting bit 3.
     þ SoundBlaster Pro register 002h is the same as this.

    SEE ALSO
     002h   Master Volume                       Read/Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     030h   Master Volume Left                  Read/Write
     031h   Master Volume Right                 Read/Write
------------------------------------------------------------------------------
 026h       FM Level                                    Read/Write  SBPro

    LEVEL BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Right FM Level bit  0  (SB16, SBPro=1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÂÄ Right FM Level bit 3-1 (SBPro)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Left  FM Level bit  0  (SB16, SBPro=1)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ Left  FM Level bit 3-1 (SBPro)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    DEFAULT
     011h, 0CCh

    NOTES
     þ SoundBlaster 16 will automatically update registers 033h and 034h,
        transferring bits 7-4 and setting bit 3.
     þ SoundBlaster Pro will automatically update register 006h,
        transferring bits 3-1 and setting bit 0.

    SEE ALSO
     006h   FM Output Control                   Read/Write
     úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
     034h   FM Level Left                       Read/Write
     035h   FM Level Right                      Read/Write
------------------------------------------------------------------------------
 028h       CD Audio Level                              Read/Write  SBPro

    LEVEL BYTE
     ÉÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»
     º 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 º
     ÈÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑÍÏÍÑͼ
       ³   ³   ³   ³   ³   ³   ³   ÀÄÄÄ Right CD Audio bit  0  (SB16, SBPro=1)
       ³   ³   ³   ³   ³   ³   ÀÄÄÄÄÄÂÄ Right CD Audio bit 3-1 (SBPro)
       ³   ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄ´
       ³   ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
       ³   ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Left  CD Audio bit  0  (SB16, SBPro=1)
       ³   ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ Left  CD Audio bit 3-1 (SBPro)
       ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    DEFAULT
     011h, 000h

    NOTES
     þ SoundBlaster 16 will automatically update registers 035h and 036h,
        transferring bits 7-4 and setting bit 3.

    SEE ALSO
     036h   CD Audio Level Left                 Read/Write
     037h   CD Audio Level Right                Read/Write
------------------------------------------------------------------------------