home *** CD-ROM | disk | FTP | other *** search
/ Groovy Bytes: Behind the Moon / groovybytes.iso / GROOVY / SND_TOOL / CDMP16.ZIP / SOURCE.ZIP / ADLIB.ASM < prev    next >
Encoding:
Assembly Source File  |  1994-12-28  |  4.0 KB  |  165 lines

  1. ;[]------------------------------------------------------------------------[]
  2. ;|                                                                          |
  3. ;| (c) 1993,1994 by Marc van Shaney , aka Kaya Memisoglu                    |
  4. ;|                                                                          |
  5. ;| Dieser Assembler-Source-Code unterliegt dem Urheberrecht von Kaya        |
  6. ;| Memisoglu und darf auch nur mit seiner schriftlichen Genehmigung         |
  7. ;| in kommerziellen Programmen verwendet werden.                            |
  8. ;| Ich übernehme keinerlei Verantwortung für eventuelle Schäden,die dieses  |
  9. ;| Programm verursacht.                                                     |
  10. ;|                                                                          |
  11. ;|                                                                          |
  12. ;|                                                                          |
  13. ;| 18.1.1994 Kaya Memisoglu                                                 |
  14. ;|                                                                          |
  15. ;[]------------------------------------------------------------------------[]
  16.  
  17. ; !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
  18. ; !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
  19. ;
  20. ; I DO NOT SAVE THE REGISTER VARIABLES SI AND DI IN THIS CODE AND IN SOME
  21. ; OTHER MODULES. SO MAKE SURE BEFORE COMPILING THIS CODE THAT THE REGISTER
  22. ; VARIABLES IN BORLAND C ARE SET TO *NONE*.
  23. ; BUT IF YOU STILL WANT TO USE THEM, YOU HAVE TO SAVE THEM BY CHANGING THIS
  24. ; CODE !!!
  25. ;
  26. ; !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
  27. ; !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
  28.  
  29. ;The Sound_Block structure:
  30. ;    word         Sample_rate
  31. ;    word         Sample_Size
  32. ;    byte         Bits_per_Sample
  33. ;    byte         Channels
  34. ;    10 bytes     resreved
  35.  
  36.  
  37.  
  38. P386
  39. LOCALS
  40.  
  41.  
  42. DRV_TEXT     equ 'Adlib sound driver             ',0  ; 32 Bytes
  43. DRV_VERSION     equ 1
  44. DRV_NAME MACRO
  45. PUBLIC C ADLIB_Driver
  46. ADLIB_Driver dd DISPATCH
  47.     ENDM
  48.  
  49.  
  50. AdlOut MACRO Reg, Val
  51.         MOV     DX,388h
  52.         MOV     AL,Reg
  53.         OUT     DX,AL
  54.         IN      AL,DX
  55.         IN      AL,DX
  56.         IN      AL,DX
  57.         IN      AL,DX
  58.         IN      AL,DX
  59.         IN      AL,DX
  60.  
  61.         INC     DX
  62.         MOV     AL,Val
  63.         OUT     DX,AL
  64. ENDM
  65.  
  66. EXTERNAL_ROUTINES MACRO
  67. AdlWait PROC NEAR
  68.         IN      AL,DX
  69.         IN      AL,DX
  70.         IN      AL,DX
  71.         IN      AL,DX
  72.         IN      AL,DX
  73.         IN      AL,DX
  74.         IN      AL,DX
  75.         IN      AL,DX
  76.         IN      AL,DX
  77.         IN      AL,DX
  78.         IN      AL,DX
  79.         IN      AL,DX
  80.         IN      AL,DX
  81.         IN      AL,DX
  82.         IN      AL,DX
  83.         IN      AL,DX
  84.         IN      AL,DX
  85.         IN      AL,DX
  86.         IN      AL,DX
  87.         IN      AL,DX
  88.         IN      AL,DX
  89.         IN      AL,DX
  90.         IN      AL,DX
  91.         IN      AL,DX
  92.         IN      AL,DX
  93.         IN      AL,DX
  94.         IN      AL,DX
  95.         IN      AL,DX
  96.         IN      AL,DX
  97.         IN      AL,DX
  98.         IN      AL,DX
  99.         IN      AL,DX
  100.         IN      AL,DX
  101.         IN      AL,DX
  102.         IN      AL,DX
  103.         retn
  104. ENDP
  105.     ENDM
  106.  
  107. SendAdlibCommand MACRO Reg,Value
  108.         MOV     DX,0388h
  109.         MOV     AL,Reg
  110.         OUT     DX,AL
  111.  
  112.         call AdLWait
  113.  
  114.         INC     DX
  115.         MOV     AL,Value
  116.         OUT     DX,AL
  117.  
  118.         call AdLWait
  119.         call AdlWait
  120.            ENDM
  121. SendAdlibReg MACRO Reg,Value
  122. SendAdlibCommand Reg,Value
  123.          ENDM
  124.  
  125.  
  126.  
  127.  
  128. ;BX holds Rate
  129. VOICE_INIT MACRO
  130.       mov cx,256
  131.  Adlib_Reset_Loop:
  132.     SendAdlibCommand cl,0
  133.  loop Adlib_Reset_Loop
  134.  
  135.     SendAdlibReg 01  , 20h
  136.     SendAdlibReg 0C0h, 01h
  137.     SendAdlibReg 023h, 27h  ; All this selects a sustained note, with a highest
  138.     SendAdlibReg 043h, 00h  ; pitch and with a fully rectified wave form.
  139.     SendAdlibReg 063h, 0FFh ; Empirically calculated (trial and error). If you
  140.     SendAdlibReg 083h, 0Fh  ; can find a better configuration, please tell me.
  141.     SendAdlibReg 0E3h, 02h
  142.     SendAdlibReg 0A0h, 0Ch
  143.     SendAdlibReg 0B0h, 3Fh
  144.       ENDM
  145.  
  146.  
  147.  
  148.  
  149. VOICE_OUT MACRO
  150.       push dx
  151.       shr     al,3
  152.       mov     ah,al
  153.       AdlOut  043h,ah
  154.       pop  dx
  155.       ENDM
  156.  
  157. include sndtimer.inc
  158.  
  159.  
  160. Config_Info     dd 0h
  161. END
  162.  
  163.  
  164.  
  165.