• Esta es una prueba de la extension BASIC que hizo the_woz con el TAV 1.0, se trata de una version del clasico programa Eliza que aparecio en un fasciculo de Mi Computer. Pasamos el listado a C64, the_woz lo modifico para usar el sintetizador de voz, le agrego un parser basico para castellano, y yo le hice algunos retoques para que las frases incluidas suenen un poco mejor.
    Se adjunta la imagen .D64, que contiene el TAV64BAS, es decir la extension que agrega el comando TAV al BASIC, hay que cargarla con LOAD"*",8 o LOAD"TAV64BAS",8 y luego ejecutarla. Una vez hecho esto se puede cargar el programa con LOAD"PSIQUIATRA",8
    El programa es muy basico, y la idea era demostrar como funciona el comando en una aplicacion real, pero el que quiere expandirlo ya tiene de donde partir.

    ]tav64bas_demo.d64[/file]
     

  • Si alguno quiere mirar el codigo, aca esta.:

    10 rem ******************************
    15 rem *         psiquiatra         *
    20 rem *      version original:     *
    25 rem *  enciclopedia mi computer  *
    30 rem *    fasciculo numero 45     *
    35 rem *  modificado por: the_woz   *
    40 rem *                  pastbytes *
    45 rem *>> este programa requiere <<*
    50 rem *>> la extension tav64bas  <<*
    55 rem ******************************
    100 gosub 2000:rem inic
    200 for l=1 to 2*lt step 2
    300 print o$:tav ot$:input i$
    400 gosub 3000:rem analisis
    500 next l
    1000 print tab(2);"----- la sesion ha terminado. ------"
    1100 print tab(2);"pulse cualquier tecla para continuar"
    1200 get a$:if a$="" then goto 1200
    1300 gosub 5000:rem informe
    1900 end
    1999 rem ******************************
    2000 rem **      s/r inicializar     **
    2001 rem ******************************
    2050 lt=10:an=10:t9=500:ex=2*lt
    2100 dim r$(an):dim tr$(an):dim h$(2*lt)
    2200 data "si..","digame algo mas..","continue..","y..","por tanto.."
    2250 data "es eso importante..","por que le preocupa eso.."
    2300 data "por favor expliqueme eso..","por que lo dice.."
    2350 data "y eso en que lo afecta a usted.."
    2399 rem ** frases sintetizador **
    2400 data "si","di+game a+lgoma+s","kontinu+e","i-","porta+nto"
    2410 data "ese+so importa+nte","por ke+ lepreoku+pa eso"
    2420 data "porfabo+r ekspli+keme e+so","por ke+ lodi+se"
    2430 data "ie+so enke+loafe+kta auste+d"
    2500 for k=1 to an:read r$(k):next k
    2510 for k=1 to an:read tr$(k):next k
    2600 print chr$(147):o$="hola - cual es su problema.."
    2601 ot$="o+la-,kua+les suproble+ma-"
    2950 return
    2999 rem ******************************
    3000 rem **       s/r analisis       **
    3001 rem ******************************
    3100 if i$="adios" then ex=l-1:l=2*lt:return
    3200 h$(l)=o$:h$(l+1)=i$
    3300 r9=int(an*rnd(1)+1):if r9=r0 then goto 3300
    3400 o$=r$(r9):ot$=tr$(r9):r0=r9
    3420 if left$(i$,2)="si" then o$="por que esta ud tan seguro..":goto 3961
    3450 if left$(i$,2)="no" then o$="por que no..":goto 3962
    3500 z$=right$(i$,1)
    3520 ifz$="?"theno$="por que me lo pregunta..":ot$="por ke+ melopregu+nta-"
    3550 ifz$="!"theno$="por que lo perturba eso..":ot$="por ke+ lopertu+rba eso-"
    3600 if r9<an/4 then gosub 4000
    3950 return
    3960 rem **********respuestas**********
    3961 ot$="por ke+ esta+uste+d tansegu+r2o":return
    3962 ot$="por ke+ no":return
    3999 rem ******************************
    4000 rem **   s/r palabra mas larga  **
    4001 rem ******************************
    4050 w=1:h=1:wl=1:s=1
    4100 i$=i$+" ":l9=len(i$)
    4120 for c=1 to l9:for p=c to l9
    4150 z$=mid$(i$,p,1)
    4170 if z$=" " then w=p-c:h=c:c=p:p=l9
    4200 next p
    4210 if w>wl then wl=w:s=h
    4250 next c
    4270 o$="que significa "+mid$(i$,s,wl)+" para ud.."
    4280 gosub 6010:ot$="kesignifi+ka "+tp$+" pa+r2auste+d"
    4450 return
    4999 rem ******************************
    5000 rem **        s/r informe       **
    5001 rem ******************************
    5050 print chr$(147);:print tab(13);"** informe **":print
    5100 for k=1 to ex step 2
    5150 print tab(5);h$(k)
    5200 print h$(k+1)
    5300 for d=1 to t9:next d
    5400 next k
    5900 return
    6000 rem ******************************
    6001 rem **   traduccion a fonemas   **
    6002 rem ******************************
    6010 tt$=mid$(i$,s,wl):tp$=""
    6020 for t=1 to wl: cc$=mid$(tt$,t,1)
    6030 if cc$="v"then tp$=tp$+"b":goto 6110
    6040 if cc$="y"then tp$=tp$+"i":goto 6110
    6050 if cc$="x"then tp$=tp$+"ks":goto 6110
    6060 if cc$="l"then 6500
    6065 if cc$="r"then 6600
    6070 if cc$="c"then 6700
    6075 if cc$="q"then 6800
    6080 if cc$="g"then 6900
    6100 tp$=tp$+cc$
    6110 next t:return
    6499 rem ** silabas l **
    6500 if mid$(tt$,t+1,1)="l"then t=t+1:tp$=tp$+"sh":goto 6110
    6510 goto 6100
    6599 rem ** silabas r **
    6600 if (t<>1)and(mid$(tt$,t+1,1)<>"r")then tp$=tp$+"r2":goto 6110
    6610 goto 6100
    6699 rem ** silabas c **
    6700 nx$ = mid$(tt$,t+1,1)
    6710 if (nx$="i")or(nx$="e")then tp$=tp$+"s":goto 6110
    6715 if nx$="h" then 6100
    6720 tp$=tp$+"k":goto 6110
    6799 rem ** silabas q **
    6800 nx$ = mid$(tt$,t+1,2):tp$=tp$+"k"
    6810 if (nx$="ue")or(nx$="ui")then t=t+1
    6820 goto 6110
    6899 rem ** silabas g **
    6900 nx$ = mid$(tt$,t+1,1)
    6910 if (nx$="e")or(nx$="i")then tp$=tp$+"j":goto 6110
    6920 nx$ = mid$(tt$,t+1,2)
    6930 if (nx$="ue")or(nx$="ui")then t=t+1
    6940 goto 6100
     

  • Es una forma indirecta de decir que necesitamos uno??? un psiquiatra??? eehhh, hahaha.... seguro que si tongue

    Gracias por el codigo.
     

  • jaja si es por eso el foro entero es un manicomio.
    Me olvidaba, en realidad le puse ese nombre por poner algo, porque medio que Eliza no pegaba con la voz. biglaugh.png
     

  • Esta muy buena la iniciativa!. Buena mejora para el legendario Eliza!
     

Moderador (s): thierry, homecomputer, Selandari, pastbytes, Durandal