home *** CD-ROM | disk | FTP | other *** search
- ;[]------------------------------------------------------------------------[]
- ;| |
- ;| (c) 1993,1994 by Marc van Shaney , aka Kaya Memisoglu |
- ;| |
- ;| Dieser Assembler-Source-Code unterliegt dem Urheberrecht von Kaya |
- ;| Memisoglu und darf auch nur mit seiner schriftlichen Genehmigung |
- ;| in kommerziellen Programmen verwendet werden. |
- ;| Ich übernehme keinerlei Verantwortung für eventuelle Schäden,die dieses |
- ;| Programm verursacht. |
- ;| |
- ;| |
- ;| |
- ;| 18.1.1994 Kaya Memisoglu |
- ;| |
- ;[]------------------------------------------------------------------------[]
-
- ; !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
- ; !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
- ;
- ; I DO NOT SAVE THE REGISTER VARIABLES SI AND DI IN THIS CODE AND IN SOME
- ; OTHER MODULES. SO MAKE SURE BEFORE COMPILING THIS CODE THAT THE REGISTER
- ; VARIABLES IN BORLAND C ARE SET TO *NONE*.
- ; BUT IF YOU STILL WANT TO USE THEM, YOU HAVE TO SAVE THEM BY CHANGING THIS
- ; CODE !!!
- ;
- ; !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
- ; !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
-
-
- P386
- LOCALS
- DRV_TEXT equ 'PC-Speaker driver ',0 ; 32 Bytes
- DRV_VERSION equ 1
- DRV_NAME MACRO
- PUBLIC C SPEAKER_Driver
- SPEAKER_Driver dd DISPATCH
- ENDM
-
- EXTERNAL_ROUTINES MACRO
- SpkrBaseTabla db 40h,40h,40h,40h,40h,40h,40h,40h,40h,40h,3Fh,3Fh,3Fh,3Fh
- db 3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Eh,3Eh,3Eh,3Eh,3Eh,3Eh,3Eh,3Eh
- db 3Eh,3Eh,3Dh,3Dh,3Dh,3Dh,3Dh,3Dh,3Dh,3Dh,3Dh,3Ch,3Ch,3Ch,3Ch,3Ch
- db 3Ch,3Ch,3Ch,3Ch,3Ch,3Bh,3Bh,3Bh,3Bh,3Bh,3Bh,3Bh,3Bh,3Bh,3Bh,3Ah
- db 3Ah,3Ah,3Ah,3Ah,3Ah,3Ah,3Ah,3Ah,3Ah,39h,39h,39h,39h,39h,39h,39h
- db 39h,39h,39h,38h,38h,38h,38h,38h,38h,38h,38h,37h,37h,37h,37h,37h
- db 36h,36h,36h,36h,35h,35h,35h,35h,34h,34h,34h,33h,33h,32h,32h,31h
- db 31h,30h,30h,2Fh,2Eh,2Dh,2Ch,2Bh,2Ah,29h,28h,27h,26h,25h,24h,23h
- db 22h,21h,20h,1Fh,1Eh,1Dh,1Ch,1Bh,1Ah,19h,18h,17h,16h,15h,14h,13h
- db 12h,11h,11h,10h,10h,0Fh,0Fh,0Eh,0Eh,0Dh,0Dh,0Dh,0Ch,0Ch,0Ch,0Ch
- db 0Bh,0Bh,0Bh,0Bh,0Ah,0Ah,0Ah,0Ah,0Ah,09h,09h,09h,09h,09h,09h,09h
- db 09h,09h,08h,08h,08h,08h,08h,08h,08h,08h,08h,08h,08h,08h,07h,07h
- db 07h,07h,07h,07h,07h,06h,06h,06h,06h,06h,06h,06h,06h,06h,06h,06h
- db 05h,05h,05h,05h,05h,05h,05h,05h,05h,05h,04h,04h,04h,04h,04h,04h
- db 04h,04h,04h,04h,03h,03h,03h,03h,03h,03h,03h,03h,03h,03h,02h,02h
- db 02h,02h,02h,02h,02h,02h,02h,01h,01h,01h,01h,01h,01h,01h,01h,01h
- db 01h,01h
-
- SpkrTabla db 256 dup (0)
- ENDM
-
- DRV_EXIT MACRO
- IN AL,61h
- AND AL,11111100b
- OUT 61h,AL
- ENDM
-
-
-
-
-
-
-
- ;In BX rate
- VOICE_INIT MACRO
- push es
-
- mov cx,256
- mov ax,cs
- mov es,ax
- mov di,OFFSET SpkrTabla
- mov si,OFFSET SpkrBaseTabla
- Spk_Init_loop:
- lods byte ptr cs:[si]
- xor ah,ah
- dec ax
- mov bx,cs:[Timer_Constant]
- shr bx,1
- mul bx
- mov bx,039h
- div bx
- inc ax
- stosb
- loop Spk_Init_loop
- pop es
- ENDM
-
-
-
-
-
-
-
- VOICE_START MACRO
- IN AL,61h
- OR AL,3
- OUT 61h,AL ; Turn on speaker.
-
- MOV AL,0B6h
- OUT 43h,AL
-
- MOV AL,0B0h
- OUT 43h,AL
- MOV AL,034h
- OUT 43h,AL
-
- XOR AL,AL
- OUT 42h,AL
- OUT 42h,AL
- MOV AL,10010000b
- OUT 43h,AL ; Select Speaker timer mode.
-
- mov ax,cs:[Timer_Constant]
- out 40h,al
- shr ax,8
- out 40h,al ;Geschwindigkeit setzen
- ENDM
-
-
-
-
- VOICE_STOP MACRO
- IN AL,61h
- AND AL,11111100b
- OUT 61h,AL
- ENDM
-
-
-
- VOICE_OUT MACRO
- push bx
- MOV BX,OFFSET SpkrTabla
- XLAT cs:[bx]
- OUT 42h,AL
- pop bx
- ENDM
-
- include sndtimer.inc
-
- Config_Info DD 0
- END