be9 ;;SPEECH.ASM ;;.OBJ file for TP 5.0 with text to speech functions ;;Uses resident driver SBTALKER.DRV INCLUDE SCREEN.MAC PUBLIC sbts_init PUBLIC sbts_settings PUBLIC sbts_say CSEG SEGMENT ASSUME CS:CSEG,DS:CSEG drv_adr dd ? sp_base dw ? sp_seg dw ? speech_rec STRUCT db 32 dup (?) inp_str db 256 dup(?) out_str db 256 dup(?) gender dw ? tone dw ? volume dw ? pitch dw ? speed dw ? speech_rec ENDS speech_stk STRUCT dw ? ;Return address on stack dw ? ts_spd dw ? ts_pit dw ? ts_vol dw ? ts_tne dw ? ts_gnd dw ? speech_stk ENDS sbts_init PROC NEAR push ax push bx push ds push es mov ax,cseg mov ds,ax mov ax,352fh int 21h mov ax,es cmp ax,0 jz no_drv_inst mov ax,0fbfbh int 2fh cmp ax,0 jnz no_drv_inst mov sp_base,bx ;Save pointer mov sp_seg,es ;and segment of driver mov ax,word ptr es:[bx+4] mov word ptr[drv_adr],ax mov ax,word ptr es:[bx+6] mov word ptr[drv_adr+2],ax abort: pop es pop ds pop bx pop ax ret no_drv_inst: Print 'Speech driver not installed! Aborted...' jmp abort sbts_init ENDP sbts_settings PROC NEAR push bp mov bp,sp push ax push bx push dx push ds push es mov ax,cseg mov ds,ax mov es,sp_seg mov bx,sp_base mov dx,[bp+ts_spd] mov es:[bx+speed],dx mov dx,[bp+ts_pit] mov es:[bx+pitch],dx mov dx,[bp+ts_tne] mov es:[bx+tone],dx mov dx,[bp+ts_vol] mov es:[bx+volume],dx mov dx,[bp+ts_gnd] mov es:[bx+gender],dx mov al,2 call drv_adr pop es pop ds pop dx pop bx pop ax pop bp ret sbts_settings ENDP old_seg dw ? sbts_say PROC NEAR push ax push bx push cx push es push ds push si push di xor cx,cx mov cl,byte ptr ds:[di] mov si,di mov old_seg,ds mov ax,cseg mov ds,ax mov bx,sp_base mov es,sp_seg mov bp,bx add bp,inp_str mov di,bp push ds mov ds,old_seg rep movsb ;Transfer string to pop ds mov al,7 ;Output text call drv_adr pop di pop si pop es pop ds pop cx pop bx pop ax ret sbts_say ENDP ;------------------------------------------------------------------- CSEG ENDS END . 0