home *** CD-ROM | disk | FTP | other *** search
- ; SOUNDBAS.ASM
- ;
- ; Marc Savary, Editions Ad Lib., 3-06-87
- ;
- ; assembler interface to the Sound Driver for Basic programs
- ;
- ; This code should be included in a Basic array and used with the CALL
- ; command : func = VARPTR (array(0)): CALL func(s0,s1,s2, ....)
- ;
-
-
- sound_driver_int equ 101 ; SD interrrupt number
-
- fSDInit equ 0
- fSDRelTimeStart equ 2
- fSDSetState equ 3
- fSDGetState equ 4
- fSDFlush equ 5
- fSDSetMode equ 6
- fSDGetMode equ 7
- fSDSetRelVolume equ 8
- fSDSetTempo equ 9
- fSDSetTranspose equ 10
- fSDGetTranspose equ 11
- fSDSetActVoice equ 12
- fSDGetActVoice equ 13
- fSDPlayNoteDel equ 14
- fSDPlayNote equ 15
- fSDSetTimbre equ 16
- fSDSetPitch equ 17
- fSDSetTickBeat equ 18
- fSDNoteOn equ 19
- fSDNoteOff equ 20
- fSDTimbre equ 21
-
-
- Code SEGMENT BYTE
- assume cs:code
-
-
- ; SoundBasic( s0, s1, s2, s3, s4, s5)
- ; int * s0, * s1, * s2, * s3, * s4, * s5;
- ;
- ; s0: function number
- ; s1 - s5: arguments
- ;
- ; return result in s0.
- ;
- SoundBasic PROC FAR
- PUBLIC SoundBasic
- frames STRUC
- dw ? ; old di
- dw ? ; old si
- old_es dw ? ; old ES
- dd ? ; return addr
- s5 dw ? ; ptrs to s5 argument
- s4 dw ? ; .... s4
- s3 dw ?
- s2 dw ?
- s1 dw ?
- s0 dw ? ; .. ptr to function number
-
- frames ENDS
-
- push es
- push si
- push di
- mov bp, sp
- mov bx, [bp].s0
- mov si, [bx] ; get function number
-
- mov bx, [bp].s5
- push [bx]
- mov bx, [bp].s4
- push [bx]
- mov bx, [bp].s3
- push [bx]
- mov bx, [bp].s2
- push [bx]
- cmp si, fSDSetTimbre ; s1 is a pointer ??
- jne suite
- push ds ; we need a Far prt ...
- push [bp].s1
- jmp ok
- suite: mov bx, [bp].s1
- push [bx]
- ok: push ss ; set ES:BX to point to list of arg.
- pop es
- mov bx, sp
- int sound_driver_int
- mov sp, bp
-
- mov bx, [bp].s0 ; store return value in S0
- mov [bx], ax
- pop di
- pop si
- pop es
- ret 12 ; 6 words arguments
- SoundBasic ENDP
-
-
- Code ENDS
- END
-
-