Página 2 de 5

Re: Decepción con el BASIC del Spectrum

Publicado: 16 Jun 2016, 12:15
por mcleod_ideafix
zup escribió:Tres preguntas...
- ¿Por qué precisamente Mallard BASIC y no otros compiladores BASIC?

Mallard BASIC no es un compilador sino un intérprete. No conozco más intérpretes de BASIC aparte del propio que trae la ROM y éste, que viene con el CP/M.

zup escribió:- ¿Alguien ha hecho una comparativa de BASICs para Spectrum?

De los interpretados, la estás viendo :D De los compilados, que yo sepa no la hay. Quizás alguna revista publicara algo en la época. Ni idea.

zup escribió:- ¿Penalizan mucho las interrupciones del +2A/+3 la ejecución del BASIC con respecto al 48k pelado? (Imagino que las del 128k también, pero menos)
[/quote]
Poco... 1730 ciclos de reloj por cada 70908 ciclos (lo que dura un frame). Eso es 0,48774 milisegundos por cada 19,99154 milisegundos. O dicho de otra forma, en cada segundo, las interrupciones roban 24,3978 milisegundos de tiempo.

Re: Decepción con el BASIC del Spectrum

Publicado: 16 Jun 2016, 12:36
por Uto
zup escribió:Tres preguntas...
- ¿Por qué precisamente Mallard BASIC y no otros compiladores BASIC?

Supongo que porque hablan de intérpretes de BASIC, no de compiladores. Si usas compiladores lo que ejecutas no es BASIC, sino C/M.

- ¿Alguien ha hecho una comparativa de BASICs para Spectrum?

Sería un artículo interesante desde luego, características, posibilidades, y por que no, velocidad de ejecución (pero separando compiladores de intérpretes claro). Seguro que hay más, pero yo recuerdo el Colt como compilador y el Beta Basic, que creo que era intérprete ¿no? (me falla ya la memoria)

Re: Decepción con el BASIC del Spectrum

Publicado: 16 Jun 2016, 16:31
por jltursan
Pues es una tontá; pero hablando del resultado del MSX-BASIC, se puede rascar una pizca definiendo las variables como de precisión simple (en lugar de doble por defecto). El resultado es de 1,26 segundos, 0,02 mejor :-)

No se si sería justo dado que no conozco la precisión de los otros BASIC; pero la del MSX tiene fama por lo excesiva para un lenguaje con la orientación del BASIC.

Re: Decepción con el BASIC del Spectrum

Publicado: 16 Jun 2016, 17:15
por dancresp
jltursan escribió:Pues es una tontá; pero hablando del resultado del MSX-BASIC, se puede rascar una pizca definiendo las variables como de precisión simple (en lugar de doble por defecto). El resultado es de 1,26 segundos, 0,02 mejor :-)

Me he peleado bastante con el MSX-BASIC y sin duda es el más equilibrado, ya que aplicado a juegos, lo que pierde en velocidad lo ganas sobradamente si usas SPRITES.

Yo mis tres ejemplos de los que más orgulloso me siento son "Star Wars - The Empire Strikes Back", "K.C. Munchkin" y el "Jaw Breaker".

No creo que exista ningún BASIC de 8 bits que mueva estos juegos con esa velocidad y esa suavidad.

La única duda es algún equipo que lleve el mismo chip de vídeo (¿ MTX-512 ?)

Añado los enlaces a las páginas de ZdP donde podéis bajar el ".cas", pero por desgracia todas las imágenes están corrompidas, y he intentado subir imágenes a este post pero no me deja, y eso que ocupan menos de 50KB. ¿Que pasa?

Videos:




Re: Decepción con el BASIC del Spectrum

Publicado: 16 Jun 2016, 19:03
por jltursan
Jeje, grandisimos ejemplos. Tú mejor que nadie conoce el resultado de hacer un "DEFINT A-Z" al comienzo del programa (si uno se lo puede permitir, claro).

Como curiosidad, la práctica totalidad de equipos japoneses llevan un Microsoft BASIC, más o menos parecido al del MSX (¿por qué, oh, porqué Microsoft, no incluiste en el MSX-BASIC 1 los comandos PUT y GET gráficos que tiene todo el mundo?). Los trucos del DEFINT o de los NEXT obran maravillas.

En fin, por no desvirtuar más el hilo, el BASIC del Spectrum siempre me pareció divertido, poco ortodoxo y gamberro, muy Perl. No conozco muchos dialectos BASIC que permitan emplear una variable como salto de un GOTO :D. Y efectivamente, la pantalla es un auténtico lastre, especialmente cuando no está orientada a imprimir caracteres (modo texto específico) o ni siquiera es fácil volcarlos gráficamente (una organización optimizada como la del PCW)

Re: Decepción con el BASIC del Spectrum

Publicado: 16 Jun 2016, 21:54
por mcleod_ideafix
jltursan escribió:el BASIC del Spectrum siempre me pareció divertido, poco ortodoxo y gamberro, muy Perl. No conozco muchos dialectos BASIC que permitan emplear una variable como salto de un GOTO :D

A mi las cosas que más me gustan del BASIC del Spectrum (y que he usado y abusado durante el tiempo que lo usé) son:
- Los GOTOs con variable
- El manejo de cadenas al modo "procrusteano" (bueno, en realidad me refiero a la notación para hacer el slicing de cadenas)
- La potencia de VAL que te permite evaluar una expresión desde el BASIC
- Ditto con VAL$ (aunque ésta la he usado bastante menos)
- Las expresiones condicionales, al estilo del operador ternario ?: del lenguaje C

Todas ellas son cosas que no he visto en otros intérpretes de BASIC.

Re: Decepción con el BASIC del Spectrum

Publicado: 16 Jun 2016, 23:06
por dancresp
mcleod_ideafix escribió:A mi las cosas que más me gustan del BASIC del Spectrum (y que he usado y abusado durante el tiempo que lo usé) son:
- Los GOTOs con variable
- El manejo de cadenas al modo "procrusteano" (bueno, en realidad me refiero a la notación para hacer el slicing de cadenas)
- La potencia de VAL que te permite evaluar una expresión desde el BASIC
- Ditto con VAL$ (aunque ésta la he usado bastante menos)
- Las expresiones condicionales, al estilo del operador ternario ?: del lenguaje C

Todas ellas son cosas que no he visto en otros intérpretes de BASIC.

Totalmente de acuerdo.

En el Spectrum he abusado más o menos poco, pero en el ZX-81 (que tiene una versión del BASIC reducida) es lo que me ha permitido hacer lo que he llegado a hacer y que en otros intérpretes habría sido más laborioso.

De tu lista me quedo son el tratamiento de cadenas y la versatilidad de la función VAL.
Bueno, me quedo con todo...

Re: Decepción con el BASIC del Spectrum

Publicado: 17 Jun 2016, 11:50
por zup
dancresp escribió:Me he peleado bastante con el MSX-BASIC y sin duda es el más equilibrado, ya que aplicado a juegos, lo que pierde en velocidad lo ganas sobradamente si usas SPRITES.


Esas diferencias en velocidad gráfica y lo del texto son dos cosas bastante interesantes. Habría que lanzar una serie de tests del estilo:
- Cálculo matemático (entero y flotante).
- Escritura de texto en pantalla.
- Acceso a variables.
- Salida gráfica.
- Todo combinado.

Algunas ideas:
- ¿Hay equipos que diferencien números enteros y coma flotante? Si usas Pascal o C, sí que hay diferencias pero no estoy seguro de que algún BASIC los diferencie.
- La salida gráfica tendría que ser (en principio) con primitivas tipo PLOT y DRAW, que son los puntos comunes entre casi todos los BASIC.
- Los tests 1 y 4 se podrían combinar dibujando fractales, aunque el tiempo gastado en dibujar puntos va a ser una nimiedad comparado con el tiempo gastado en cálculos.
- El acceso a las variables también podría ser importante. Un test sería crear una matriz enorme, llenarla y hacer un gran número de intercambios al azar. Se podría intentar combinar con el test 1 haciendo transformaciones u ordenaciones sobre ella, pero para este tipo de tests habría que hacer una matriz "estándar" para que el contenido no influya en el test.

Re: Decepción con el BASIC del Spectrum

Publicado: 18 Jun 2016, 15:46
por antligen
Pues que lástima.
Algunos en nuestra infancia intentamos (y algunas veces conseguimos) programar en BASIC algún juego que aunque rudimentario pudiera tener su gracia e incluso ser entretenido, pero siempre estaba el tema de la lentitud y muchos no estábamos por la labor de meternos en el código máquina. Si el BASIC del Spectrum hubiera tenido una velocidad similar a otros sistemas equiparables de la época nuestros juegos BASIC podrían haber sido bastante más resultones.

Re: Decepción con el BASIC del Spectrum

Publicado: 19 Jun 2016, 14:54
por mcleod_ideafix
antligen escribió:Pues que lástima.
Algunos en nuestra infancia intentamos (y algunas veces conseguimos) programar en BASIC algún juego que aunque rudimentario pudiera tener su gracia e incluso ser entretenido, pero siempre estaba el tema de la lentitud y muchos no estábamos por la labor de meternos en el código máquina. Si el BASIC del Spectrum hubiera tenido una velocidad similar a otros sistemas equiparables de la época nuestros juegos BASIC podrían haber sido bastante más resultones.


Puede que no fuera rápido, pero se pueden hacer juegos interesantes. Radastan organizó varias ediciones de concurso de juegos en BASIC, y hay entre ellos auténticas virguerías. Echale un vistazo...
http://www.bytemaniacos.com/?page_id=2

PD: yo participé con tres programas: una versión en BASIC puro de la maquinita "Fire!" de Nintendo, un juego de laberintos inspirado en el programa "Leo contra todos", y un programa para ayudarte a resolver Sudokus. Los dos primeros iban bien con la lentitud del BASIC. El tercero quizás fue el que más se resintió, por motivos obvios :D