home *** CD-ROM | disk | FTP | other *** search
/ Chip: Special Sound & MIDI / Chip-Special_Sound-und-Midi-auf-dem-PC.bin / dostools / sbf / sbp_chk.asm < prev    next >
Assembly Source File  |  1992-03-07  |  1KB  |  73 lines

  1. ;
  2. ; Reset routine for Soundblaster
  3. ; Coded for the SBF by millerje
  4. ;
  5.  
  6. DSP_RESET    equ    6
  7. DSP_DATA_AVAIL    equ    0Eh
  8. DSP_READ_DATA    equ    0Ah
  9.  
  10.         .MODEL    large
  11.  
  12.         .DATA
  13.         EXTRN    _IOaddr:WORD
  14.  
  15.         .CODE
  16.         PUBLIC    _InitSB
  17. _InitSB        PROC
  18.  
  19. ; Reset the DSP by sending 1, (delay), then 0
  20.         mov    al,1
  21.         mov    dx,[_IOaddr]
  22.         add    dx,DSP_RESET
  23.         out    dx,al
  24.  
  25. ; Do a wait for I/O
  26.         in    al,dx
  27.         in    al,dx
  28.         in    al,dx
  29.         in    al,dx
  30.  
  31.         mov    al,0
  32.         mov    dx,[_IOaddr]
  33.         add    dx,DSP_RESET
  34.         out    dx,al
  35.  
  36.         mov    cx,64h
  37. DataWait:
  38.         mov    dx,[_IOaddr]
  39.         add    dx,DSP_DATA_AVAIL
  40.         in    al,dx
  41.         test    al,80h
  42.         jnz    YesData            ;a byte is waiting...
  43.         loop    DataWait
  44.  
  45. ; Timed out- there's no data there
  46.         jmp    short exit
  47.  
  48. ; Data is waiting, if = 0AAh, there's a SB here!
  49. YesData:
  50.         mov    dx,[_IOaddr]
  51.         add    dx,DSP_READ_DATA
  52.         in    al,dx
  53.         cmp    al,0AAh
  54.         je    YepSB            ;Found the ID byte
  55.         loop    DataWait        ;No, wait for next byte
  56.  
  57. ; timed out- can't find signature
  58.         jmp    short exit
  59.  
  60. YepSB:
  61.         mov    ax,0
  62.         ret
  63.  
  64. exit:
  65.         mov    ax,1
  66.         ret
  67.  
  68. _InitSB        ENDP
  69.  
  70.         END
  71.  
  72.  
  73.