Mensajepor explorer » 07 Mar 2020 16:40
Exacto. Lo que son procedimientos BASIC puros (FOR..NEXT, IF..THEN, GOTO, GOSUB, INPUT, LET) son todos prácticamente iguales. Operar con enteros y números en punto flotante también (SIN, INT, COS, TAN, ARCTN, LN, EXP).
Pero operar con cadenas de caracteres ya empieza a ser distinto. Mientras unos BASIC usan LEN,LEFT$, RIGHT$, MID$... otros usan, directamente, la propia variable que almacena la cadena de caracteres junto con argumentos. Por ejemplo, lo que sería LEFT$(A$,4) en una máquina, en otra sería A$(0,3).
Si nos vamos a DEFfn o RANDOM o RND, o GOSUB o GOTO con etiquetas, o ON GOTO..., ON GOSUB... aquí ya no hay traducción directa si no que tienes que imitarlo con varias líneas de código.
Y ya, manejar los periféricos, o el hardware (gráficos y sonido), son todos distintos. Los números de notas musicales no coinciden nunca, el número de sprites tampoco, ni en el número ni en el tamaño o resolución. Algunas veces ni siquiera hay soporte en el BASIC de instrucciones para los sprites.
Esa es la razón por la que MSX tuvo ese plus de éxito: se anunciaba con un BASIC estándar entre todas las máquinas, independientes de la marca.
Todo esto me lo sé muy bien porque estuve durante un par de años pasando códigos del ZX Spectrum publicados en Microhoby, al del Atari BASIC. Los típicos jueguecitos con UDG (gráficos definidos por el usuario).