home *** CD-ROM | disk | FTP | other *** search
/ Groovy Bytes: Behind the Moon / groovybytes.iso / GROOVY / SND_TOOL / CDMP16.ZIP / SOURCE.ZIP / SPEAKER.ASM < prev    next >
Encoding:
Assembly Source File  |  1994-12-28  |  4.4 KB  |  150 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.  
  30. P386
  31. LOCALS
  32. DRV_TEXT     equ 'PC-Speaker driver              ',0  ; 32 Bytes
  33. DRV_VERSION     equ 1
  34. DRV_NAME MACRO
  35. PUBLIC C SPEAKER_Driver
  36. SPEAKER_Driver dd DISPATCH
  37.     ENDM
  38.  
  39. EXTERNAL_ROUTINES MACRO
  40. SpkrBaseTabla db 40h,40h,40h,40h,40h,40h,40h,40h,40h,40h,3Fh,3Fh,3Fh,3Fh
  41.       db 3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Eh,3Eh,3Eh,3Eh,3Eh,3Eh,3Eh,3Eh
  42.       db 3Eh,3Eh,3Dh,3Dh,3Dh,3Dh,3Dh,3Dh,3Dh,3Dh,3Dh,3Ch,3Ch,3Ch,3Ch,3Ch
  43.       db 3Ch,3Ch,3Ch,3Ch,3Ch,3Bh,3Bh,3Bh,3Bh,3Bh,3Bh,3Bh,3Bh,3Bh,3Bh,3Ah
  44.       db 3Ah,3Ah,3Ah,3Ah,3Ah,3Ah,3Ah,3Ah,3Ah,39h,39h,39h,39h,39h,39h,39h
  45.       db 39h,39h,39h,38h,38h,38h,38h,38h,38h,38h,38h,37h,37h,37h,37h,37h
  46.       db 36h,36h,36h,36h,35h,35h,35h,35h,34h,34h,34h,33h,33h,32h,32h,31h
  47.       db 31h,30h,30h,2Fh,2Eh,2Dh,2Ch,2Bh,2Ah,29h,28h,27h,26h,25h,24h,23h
  48.       db 22h,21h,20h,1Fh,1Eh,1Dh,1Ch,1Bh,1Ah,19h,18h,17h,16h,15h,14h,13h
  49.       db 12h,11h,11h,10h,10h,0Fh,0Fh,0Eh,0Eh,0Dh,0Dh,0Dh,0Ch,0Ch,0Ch,0Ch
  50.       db 0Bh,0Bh,0Bh,0Bh,0Ah,0Ah,0Ah,0Ah,0Ah,09h,09h,09h,09h,09h,09h,09h
  51.       db 09h,09h,08h,08h,08h,08h,08h,08h,08h,08h,08h,08h,08h,08h,07h,07h
  52.       db 07h,07h,07h,07h,07h,06h,06h,06h,06h,06h,06h,06h,06h,06h,06h,06h
  53.       db 05h,05h,05h,05h,05h,05h,05h,05h,05h,05h,04h,04h,04h,04h,04h,04h
  54.       db 04h,04h,04h,04h,03h,03h,03h,03h,03h,03h,03h,03h,03h,03h,02h,02h
  55.       db 02h,02h,02h,02h,02h,02h,02h,01h,01h,01h,01h,01h,01h,01h,01h,01h
  56.       db 01h,01h
  57.  
  58. SpkrTabla db 256 dup (0)
  59.     ENDM
  60.  
  61. DRV_EXIT MACRO
  62.       IN      AL,61h
  63.       AND     AL,11111100b
  64.       OUT     61h,AL
  65.       ENDM
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. ;In BX rate
  74. VOICE_INIT MACRO
  75.       push es
  76.  
  77.       mov cx,256
  78.       mov ax,cs
  79.       mov es,ax
  80.       mov di,OFFSET SpkrTabla
  81.       mov si,OFFSET SpkrBaseTabla
  82.  Spk_Init_loop:
  83.     lods byte ptr cs:[si]
  84.     xor ah,ah
  85.     dec ax
  86.     mov bx,cs:[Timer_Constant]
  87.     shr bx,1
  88.     mul bx
  89.     mov bx,039h
  90.     div bx
  91.     inc ax
  92.     stosb
  93.  loop Spk_Init_loop
  94.       pop es
  95.   ENDM
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103. VOICE_START MACRO
  104.     IN      AL,61h
  105.     OR      AL,3
  106.     OUT     61h,AL    ; Turn on speaker.
  107.  
  108.     MOV     AL,0B6h
  109.     OUT     43h,AL
  110.  
  111.     MOV     AL,0B0h
  112.     OUT     43h,AL
  113.     MOV     AL,034h
  114.     OUT     43h,AL
  115.  
  116.     XOR     AL,AL
  117.     OUT     42h,AL
  118.     OUT     42h,AL
  119.     MOV     AL,10010000b
  120.     OUT     43h,AL    ; Select Speaker timer mode.
  121.  
  122.       mov ax,cs:[Timer_Constant]
  123.       out 40h,al
  124.       shr ax,8
  125.       out 40h,al                      ;Geschwindigkeit setzen
  126.       ENDM
  127.  
  128.  
  129.  
  130.  
  131. VOICE_STOP MACRO
  132.       IN      AL,61h
  133.       AND     AL,11111100b
  134.       OUT     61h,AL
  135.     ENDM
  136.  
  137.  
  138.  
  139. VOICE_OUT MACRO
  140.       push bx
  141.       MOV     BX,OFFSET SpkrTabla
  142.       XLAT    cs:[bx]
  143.       OUT     42h,AL
  144.       pop bx
  145.      ENDM
  146.  
  147. include sndtimer.inc
  148.  
  149. Config_Info DD 0
  150. END