Peter Graf lo ha vuelto a hacer, y esta vez a lo grande. Acaba de anunciar una nueva tarjeta de expansión para el QL pero esta vez … ¡Vía puerto ROM! Una autentica locura.

Las características son:

  • Conexión con pantallas modernas vía salida VESA estándar. Soporta los modos de videos tradicionales del QL añadiendo modos adicionales con más resolución (hasta 1024×768) y más colores (hasta 65536).
  • Una CPU compatible con el 68000 a 40 MHz.
  • 32 MB de RAM
  • Soporte para sistemas operativos Minerva y SMSQ/E
  • Un reloj en tiempo real
  • Un puerto serie a 115200 baudios
  • Conexión con ratón PS2
  • Conexión con teclado PS2
  • Un puerto adicional de entrada / salida.

Y todo esto en una placa de 53 x 35 mm que se conecta al puerto ROM del QL.

Oficialmente lo van a presentar en el evento alemán del 40 aniversario del QL (17/18/19 de mayo), pero ya hay un adelanto en un hilo de QLFormum, https://qlforum.co.uk/viewtopic.php?t=4799 .

Lo mejor es verlo en imágenes.

Viene del artículo: «Programando mi propia demo en QL III»

Finaliza esta serie de artículos, y en esta ocasión veremos cómo controlar las colisiones y las puntuaciones para dejar nuestra demo terminada.

El Ying y el Yang

En la línea 500 de esta versión, he inicializado los marcadores a 200. Este valor se corresponde con el número de casillas del tablero del color de cada bola. En un tablero de 20×20, cuya área inicial de cada bola es de 10×20, el número de casillas es de 200, luego el número de puntos es 200.

Cada vez que una bola se adentre en la zona de la bola contraria, robará una casilla y rebotará para volver a su zona del tablero. En ese momento, el marcador de la bola en cuestión se incrementará en 1, y el de la otra bola se reducirá en 1.

¡Este es el delicado equilibrio entre las fuerzas del Yin y del Yang!

Read More

Viene del artículo: «Programando mi propia demo en QL II»

Sigo con esta serie de artículos, y hoy toca hablar de movimiento y rebotes de las bolas de la demo.

La dinámica

En anteriores entregas, hemos definido la estructura del programa, y luego inicializado las variables y dibujado la interfaz. Vamos a ver cómo darle movimiento a las bolas dentro del tablero y hacer algunas comprobaciones básicas para evitar que las bolas se salgan del mismo.

Como sabemos, cada bola tiene una posición X e Y en el tablero, que corresponde con la posición horizontal y vertical en el mismo. Para movernos por el tablero, que tiene unas dimensiones concretas, debemos sumar a las posiciones X e Y de cada bola, alternativamente, el valor 1 para avanzar. Con esto calculamos el siguiente movimiento. Es decir, que si la bola 1 está en la posición X=2, Y=5, le sumaremos uno a ambas, y calculamos así el movimiento: X=X+1, X=3; Y=Y+1, Y=6. Lo mismo para las posiciones X e Y de la bola 2. Primero la bola 1, luego la bola 2, alternativamente, sin parar.

Al valor que le sumamos a las posiciones X e Y le llamamos desplazamiento. Nos referiremos a ellos como DX y DY. Así que tenemos X1, Y1, DX1, DY1 para la bola 1 y X2, Y2, DX2, DY2 para la bola 2.

Pero si el desplazamiento es 1, ¿porqué necesitamos una variable?. Pues porque el desplazamiento puede ser negativo. Imagina que avanzamos con la bola 1 hasta llegar al borde del tablero. El siguiente movimiento no puede ser sumarle 1 a la posición X o Y. Debemos aplicar un cambio de dirección de la bola, com osi esta hubiera rebotado.

Read More

Viene del artículo: «Programando mi propia demo en QL I»

Sigo con esta serie de artículos, y empezamos hablando de los tipos de los variables.

Variables

Como en otros BASIC de la época, en SuperBASIC las variables numéricas se indican con una serie de letras y números, dando comienzo con una letra, y pudiendo usar guiones bajos, pero no otro signo.

Las variables de cadeta o de texto, emplean el símbolo $ al final. Así «var_numero» y «var_cadena$» serán respectivamente, una variable numérica y una variable de cadena.

Pero en SuperBASIC podemos indicar que una variable va a contener un valor numérico entero añadiendo % al final del nombre de la variable, así pues «var_entero%» será una variable que almacenará valores enteros. Si le asignamos un valor decimal, sólo almacenará la parte entera. Esto es útil para reducir el consumo de memoria. Las variables enteras ocupan menos espacio en memoria y la aplicación funcionará más rápido, y esto también es de utilidad si decidimos compilar nuestra aplicación, ya que el ejecutable ocupará menos.

Pero en SuperBASIC, este tipo de variables enteras no pueden usarse en los bucles, a no ser que hayamos cambiado nuestra ROM por la ROM Minerva, una ROM avanzada a la ROM original del QL, que sí lo permite.

Como siempre, puedes conocer más leyendo la guía del usuario.

Read More

Parece que, más allá de los sospechosos habituales de la comunidad de QL, hay gente interesada en conocer un poco más sobre el QL, y en programar en él. Varios juegos en SuperBASIC han visto la luz recientemente en los foros de RetroWiki,. Esta colección de pocos artículos que inicio hoy pretende dar a conocer las particularidades del SuperBASIC mediante un ejemplo práctico, la realización de una pequeña demo.

Para aprovechar estas entregas es necesario que tengas conocimientos básicos de programación y sobre el Sinclair QL.

Me quedé hipnotizado con este ejemplo de programación, y me propuse portarlo al QL. A medida que lo iba desarrollando, más potencial le veía como medio para aprender programación.

El código en JavaScript y el video puede verse aquí: https://github.com/vnglst/pong-wars

Este es el aspecto que tendrá la demo en el QL.

Read More

Se que el título de este post es un poco extraño, pero me permite compartir lo que recibí en un paquete entregado por Correos esta semana. Se trata de dos «expansiones» para uno de mis QLs.

Una de las expansiones es una puerta abierta al futuro, se trata del dispositivo de moda en el mundillo QL, QIMSI. Seguramente ya lo conoceréis porque hemos hablado mucho de él en otros post de Retrowiki y en Qlog. En el encuentro de Majadas del 40 aniversario lo pudimos ver en vivo (muchos de nosotros por primera vez). Brevemente, para quien no lo conozca, se trata de una diminuta placa que se conecta al puerto ROM del QL y que aporta almacenamiento masivo en una micro-SD, conexión de ratón PS2, conexión a un teclado externo PS2 y posibilidad de incoporar comunicaciones serie de alta velocidad. Ahora tengo la QIMSI en uno de mis QL con una GoldCard, esto me permite ejecutar tanto QDOS como SMSQ/E, que por cierto, se acaba de liberar una nueva versión hace un par de semanas.

La segunda «expansión» es una mirada al pasado, concretamente una disquetera de 5 1/4 DD de Miracle System. Sinceramente no me esperaba que funcionara, pero fue conectarla al QL, encender el sistema, formatear un disquete, copiar ficheros y …. sorpresa ¡¡FUNCIONAAAA!!. Otra prueba interesante que realice es acceder a la disquetera como «unidad compartida del QL» desde la FPGA (Q68) y desde el emulador en el PC (QPC2) empleando la QLNET (la red local del QL). Mola mucho hacer un «n1_dir_flp1_» desde la FPGA o el emulador en el PC y ver como se enciente la luz de la disquetera del QL mostrando el contenido del directorio.

Esto me parece fantástico, una plataforma que ha sobrevivido 40 años y que en la actualidad aún se mantiene su sistema operativo el cual puede lidiar con tanto con dispositivos modernos (tarjetas microSD de almacenamiento masivo) como con dispositivos de almacenamiento de principios de los 80.

Os pongo algunas imágenes:

QL is 40, QL forever!

PD:
¡Gracias napsternds! 

En 2008, -hace ya unos años-, creé un programa que permite, de forma flexible, configurar menús de arranque para el QL clásico, sin entorno de ventanas.

El programa ofrece una variada gama de posibilidades de configuración para mostrar un menú desde el que seleccionar opciones que permiten lanzar aplicaciones.

El menú puede mostrar o no información relacionada con las opciones según lo configuremos, puede recorrer una lista de opciones amplia, y lanzar una o varias de las opciones si se desea.

En definitiva, el ‘MENÚ BOOT’ no es más que un BOOT de BOOTs interactivo.

Read More