99 lines
3.7 KiB
NASM
99 lines
3.7 KiB
NASM
|
||
_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
|
||
|