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 !!!
-
- ;The Sound_Block structure:
- ; word Sample_rate
- ; word Sample_Size
- ; byte Bits_per_Sample
- ; byte Channels
- ; 10 bytes resreved
-
-
-
- P386
- LOCALS
-
-
- DRV_TEXT equ 'Adlib sound driver ',0 ; 32 Bytes
- DRV_VERSION equ 1
- DRV_NAME MACRO
- PUBLIC C ADLIB_Driver
- ADLIB_Driver dd DISPATCH
- ENDM
-
-
- AdlOut MACRO Reg, Val
- MOV DX,388h
- MOV AL,Reg
- OUT DX,AL
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
-
- INC DX
- MOV AL,Val
- OUT DX,AL
- ENDM
-
- EXTERNAL_ROUTINES MACRO
- AdlWait PROC NEAR
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- IN AL,DX
- retn
- ENDP
- ENDM
-
- SendAdlibCommand MACRO Reg,Value
- MOV DX,0388h
- MOV AL,Reg
- OUT DX,AL
-
- call AdLWait
-
- INC DX
- MOV AL,Value
- OUT DX,AL
-
- call AdLWait
- call AdlWait
- ENDM
- SendAdlibReg MACRO Reg,Value
- SendAdlibCommand Reg,Value
- ENDM
-
-
-
-
- ;BX holds Rate
- VOICE_INIT MACRO
- mov cx,256
- Adlib_Reset_Loop:
- SendAdlibCommand cl,0
- loop Adlib_Reset_Loop
-
- SendAdlibReg 01 , 20h
- SendAdlibReg 0C0h, 01h
- SendAdlibReg 023h, 27h ; All this selects a sustained note, with a highest
- SendAdlibReg 043h, 00h ; pitch and with a fully rectified wave form.
- SendAdlibReg 063h, 0FFh ; Empirically calculated (trial and error). If you
- SendAdlibReg 083h, 0Fh ; can find a better configuration, please tell me.
- SendAdlibReg 0E3h, 02h
- SendAdlibReg 0A0h, 0Ch
- SendAdlibReg 0B0h, 3Fh
- ENDM
-
-
-
-
- VOICE_OUT MACRO
- push dx
- shr al,3
- mov ah,al
- AdlOut 043h,ah
- pop dx
- ENDM
-
- include sndtimer.inc
-
-
- Config_Info dd 0h
- END
-
-
-
-