• No importa karl, para eso sirve el ON GOSUB
     

  • ok mañana lo probare haber que tal va
     

  • No entiendo bien tu codigo:
    gosub 9000+10*p(i) ( i piede variar entre uno y cuatro)

    tube que hacer lo siguinetes pasos

    b= 9000+10*p(i)
    if b=9010 then gosub 9010
    if b=9020 then gosub 9020
    if b=9030 then gosub 9030
    if b=9040 then gosub 9040

    Segun lo que se ve en esos IF, parece que p(i) es lo que varia entre 1 y 4, pero vos decis que es i lo que varia entre 1 y 4, de ser esto ultimo, el valor de la linea dependeria de que valores esten cargados en ese arreglo p(i). Si i=1 y p(i)=100, la variable b tendria el valor 9000+10*100, que seria 10000, y no es lo que se refleja en el codigo. No seria mas bien b=9000+10*i ?
    Si eso es asi, el codigo te quedaria:

    ON i GOSUB 9010,9020,9030,9040
    REM *** AQUI CONTINUA SI i NO ESTA ENTRE 1 Y 4 ***
    REM *** O AL VOLVER DE LA SUBRUTINA CORRESPONDIENTE ***
    ...

     

  • no me comi la p es p(i) lo que varia de 1 a 4 en orden aleatorio ya que es lo que determina el palo de la baraja, el i va de 1 a 3 ( carta 1,2 y 3), estoy haciendo una convercion del juego de truco del basic sinclar 1000 al basic msx, y hay cosas que me dan dolores de cabeza, como que las coordenas se escriben distinto entre uno y otro si en sinclair es 21,13 en msx es 13,21 ,para que se ubique en el mismo sector de la pantalla
     

  • parece que son pocos o no hay programadores de msx basic, el msx basic es mas complicado de loque pense, lo que con sinclair basic uso un solo comando aca tengo que usar varios. Ej: el querido print at 12,13;"hola" lo tengo que reeempalzar por locate 13,12:print "hola" otra diferencia a favor del sinclair basic fue que para reemplazar una solo sentencia me llevo 4 comparacione spara hacer lo mismo, ya que para gosub 9000+10*p(i) ( i piede variar entre uno y cuatro) tube que hacer lo siguinetes pasos b= 9000+10*p(i) if b=9010 then gosub 9010 if b=9020 then gosub 9020 if b=9030 then gosub 9030 if b=9040 then gosub 9040 menos mal que solo eran 4 compaciones si eran 20 es para matarce. el msx basic salio despues del sinclair basic, se supone que tendria que hacer mas sencillas las cosas y no complicarlas

    karl plus 4

    Me parece que juzgar si un lenguaje es mejor o peor que otro por el solo hecho de que no haga tal o cual cosa en forma similar no es correcto. No voy a defender a Microchotosoft, que bien se defiende solo (y así pierde todos los juicios). Y tampoco denostar al basic de Sinclair, ya que aprendí con ése y le tengo especial cariño.
    Pero lo cierto es que hay una gran diferencia entre ambos, y a favor del primero. El hecho de que sea bastante más complicado es porque tiene un montón de instrucciones más que su tío inglés, pero le da una potencia que en la Zx sólo se obtiene utilizando código de máquina. Y no nos olvidemos el hecho que la ZX mete todo en 16K (Sistema operativo + Basic) y la MSX en 32K, de los cuales 16K son solamente BASIC.

    A modo de ejemplos, sugiero que se vean las instrucciones "BASE" (que es más bien una variable) o "VDP" que permite leer o escribir los registros del procesador de video desde el basic. Y ni que hablar del tratamiento de errores (en donde el usuario puede definir sus propios errores) o el tratamiento de las interrupciones "ON INTERVAL..."
    Además, está el concepto de los "HOOKS" o ganchos en la ram, que me permiten modificar la direccion de inicio de cada rutina de instrucción del basic.
    O sea, por un lado fue el comienzo de una cierta compatibilidad en Basic (que junto a carradas de guita es lo único que supo hacer el CEO de microchotosoft), y por otro lado permite trabajar en forma bastante estructurada, la única macana es que todavía necesita los benditos números de línea...

    Si, es cierto, el MSX Basic es bien complicado, pero manejándolo bien solo he visto que lo supera el Quick Basic 7, y no sé si maneja tan bien como el MSX los gráficos.
     

  • yo no digo que uno sea mejor que el otro solo que el msx tiene algunas cosas mas complicadas que el sinclair basic, lo mismo me pasaria si quiero hacer el camino inverso, lo que algunas instrucciones me lleven pocos pasos en el msx basic, enelsinclair basic me llevaria varios, solo me molesto que no fueran mas parecidos el trabajo de las mismas funciones en las distintas verciones, como el print at y el locate print, son lo mismo pero es mas sencillo y conprencible (creo el print at)
     

  • El MSX-BASIC, es uno de los mejores Lenguajes BASIC.
    Quizas, no tenga alguna que otra opcion, pero tiene muchisimas,
    solo es necesario conocerlas...

    Para hacer un video inverso, lo que les recomiendo es que redefinan
    algunos caracteres (por ejemplo, los que no se utilizan):

    En el siguiente ejemplo, se redefinen los caracteres en SCREEN 0,
    desde "!" hasta la "Z", cambiando caracteres que no se utilizan,
    por los numeros y letras mayusculas, pero en video inverso...

    10 SCREEN 0: WIDTH 40
    11 REM MOSTRAR TODOS LOS CARACTERES
    12 FOR CARA = 1 TO 255
    13 PRINT CHR$(CARA);
    14 NEXT CARA
    15 REM -- REDEFINIR CARACTERES --
    20 FOR N=0 TO 495
    21 V=VPEEK(2304+N)
    22 VPOKE 3040+N,V XOR 255
    23 NEXT N
    24 END


    Explicacion:

    10 Fija el modo de pantalla "0", 40 columnas.
    12 a 14: Se muestran los 255 caracteres (para ver que se modifica)
    20: Se crea un buble, donde se fija que se modificaran 495 posiciones de VideoRAM.
    21: Se lee la posicion de memoria 2304+N, y se guarda en la variable V.
    22: Se modifica la posicion de memoria 3040+n, con el valor de V, invirtiendo el valor.
    23: Fin del bucle.
    24: Fin

    Las posiciones de VideoRam, corresponden a las definiciones de los caracteres.
    (prueben poner un valor manualmente, en una posicion para ver efectos)

    Tambien seria posible con esto, tener mas de un tipo de letra, y si lo queres
    con diferentes colores, tambien se puede , pero solo en screen 1.

    Prueben, cambiar la linea:
    22 VPOKE 3040+N,V or (V/2)

    Conseguiran caracteres mas gruesos!...

    Comentame si te sirve o queres algo distinto...

    Salu2
    Damian.Worf
     

  • Epaa!, algo asi estaba buscando yo para poder hacer un menu con las teclas de cursor... voy a ver si adapto tu rutina para lo que yo quiero hacer y te comento. smile
     

Moderador (s): homecomputer, Selandari, pastbytes, El Griego, damian.worf, Durandal