CATALOGO/SONIDO.ASM
2021-09-03 17:43:05 +02:00

99 lines
3.7 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

_TEXT SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS:_TEXT
DIR_VOC DD 0
DIR_SFXDRV DD 0
;------------------------------------------------------------------------------;
; INICIALIZACION DEL SFX DRIVER ;
;------------------------------------------------------------------------------;
; entrada: BX = n§ de la funci¢n ;
; ES:DI = dir. de la variable word de estado ;
; [CS:DIR_SFXDRV] = dir. de la rutina ct-voice ;
; ;
; salida: AX = 0 si la tarjeta de sonido est  instalada ;
; = -1 si no hay tarjeta de sonido ;
;------------------------------------------------------------------------------;
PUBLIC _INICIALIZADRV
_INICIALIZADRV PROC NEAR
PUSH BP
MOV BP,SP
PUSH BX
PUSH DI
PUSH ES
LES DI,[BP+4]
MOV WORD PTR CS:[DIR_SFXDRV],DI
MOV WORD PTR CS:[DIR_SFXDRV+2],ES
MOV BX,3
CALL DWORD PTR CS:[DIR_SFXDRV]
CMP AX,0
JNZ NO_HAY_TARJ
MOV BX,5
LES DI,[BP+8]
CALL DWORD PTR CS:[DIR_SFXDRV]
XOR AX,AX
NO_HAY_TARJ: POP ES
POP DI
POP BX
POP BP
RET
_INICIALIZADRV ENDP
;------------------------------------------------------------------------------;
; ELIGE UN FICHERO DE SONIDO ;
;------------------------------------------------------------------------------;
; entrada: ES:DI = dir. del fichero de sonido .VOC ;
;------------------------------------------------------------------------------;
PUBLIC _ELIGEFICHFX
_ELIGEFICHFX PROC NEAR
PUSH BP
MOV BP,SP
PUSH DI
PUSH ES
LES DI,[BP+4]
MOV WORD PTR CS:[DIR_VOC],DI
MOV WORD PTR CS:[DIR_VOC+2],ES
POP ES
POP DI
POP BP
RET
_ELIGEFICHFX ENDP
;------------------------------------------------------------------------------;
; LLAMADA AL CT-SOUND DRIVER ;
;------------------------------------------------------------------------------;
; entrada: BX = n§ de la funci¢n ;
; ES:DI = dir. del fichero de sonido .VOC ;
; [CS:DIR_SFXDRV] = dir. de la rutina ct-voice ;
;------------------------------------------------------------------------------;
PUBLIC _SOUNDFXDRIVER
_SOUNDFXDRIVER PROC NEAR
PUSH BP
MOV BP,SP
PUSH BX
PUSH DI
PUSH ES
MOV BX,[BP+4]
LES DI,CS:[DIR_VOC]
CMP BX,6
JNE NO_INI
ADD DI,ES:[DI+14h] ;ES:DI=dir. del data block
NO_INI: CALL DWORD PTR CS:[DIR_SFXDRV]
POP ES
POP DI
POP BX
POP BP
RET
_SOUNDFXDRIVER ENDP
_TEXT ENDS
END