lunes, 29 de abril de 2019

Simphony. Programa musical

Mi participación en el  II Concurso de Programas MSX (1986), Simphonyorganizado por Sony España, y cuyo premio se falló en 1987. Es una aplicación musical programada en ensamblador para ordenadores MSX1, y que cuenta con un pequeño cargador escrito en BASIC. Conseguí uno de los terceros premios de 100.000 ptas, bastante dinero para la época, que utilicé para comprarme un Sony HB-700S (yo el dinero ni lo vi, ya me llegó en especie). En la siguiente imagen aparece la nota de prensa con los resultados publicados en MSX Club de Programas nº 28 (1987).


Este juego lo hice con 16 años, e iba aprendiendo ensamblador a la vez que lo desarrollaba. Estaba bien para aquella época, pero con un poco más de experiencia y documentación se podría haber hecho algo más fino. Como nota anecdótica, el ordenador MSX en el que lo desarrollé tenía solo 16Kb de RAM, y tuve que pedir prestada una ampliación de memoria para poder ensamblarlo. Y el programa para ensamblar estaba escrito en BASIC. Y, por supuesto, nada de depurador. En aquella época todo lo escribía en papel, depuración también en papel, y cuando ya estaba más o menos clara la cosa, a picar tecla y a hincharse a cuelgues.

Poner el programa en marcha de nuevo ha sido un poco locura. No conservo nada de él, excepto el listado anexo al contrato que firmé con Sony. Más de 20 páginas en ensamblador sin etiquetas y una página en BASIC. Una vez descartada la opción del escaseado con OCR (por la poca fiabilidad en el reconocimiento de números hexadecimales), me puse manos a la obra tecleando el programa desde cero. El código BASIC lo tecleé directamente en el ordenador MSX. El código ensamblador, después de haber probado distintas combinaciones en el propio ordenador MSX, al final me decanté por hacerlo en mi Mac. Para ello usé el editor Geany, el ensamblador Glass (aprovecho para dar las gracias a su desarrollador), y el emulador OpenMSX.

Después de un laborioso proceso de depuración y etiquetado, conseguí hacerlo funcionar (y de paso solucionar algunos fallos del programa original). Desde luego nada que ver con el proceso de trabajo en los 80, que era muy muy penoso. No se si ahora tendría la fuerza de voluntad para desarrollar en esas condiciones. Me ha resultado muy entretenido volver a programar en ensamblador del Z80 después de 30 años. Está claro que es como montar en bicicleta.

El programa es de un uso relativamente sencillo. Tenemos dos teclados en pantalla (de dos y una octavas), y utilizamos el teclado del ordenador para tocas las notas, y en todo momento se nos marca cual es en los teclados de la pantalla. Además, dispone de varias opciones para aplicar algunos efectos de sonido y acompañamientos. El programa puede hacer sonar hasta tres notas simultáneamente (una por cada teclado mas el acompañamiento), debido a que ese es el número máximo soportado por el PSG de MSX. Tenemos opciones para grabar y reproducir las notas tocadas. Además, podemos salvar y cargar dichas secuencias en cinta.

Tanto el código fuente como los ejecutables están disponibles en GitHub:

https://github.com/humbertomb/mymsx/tree/master/simphony1

viernes, 26 de abril de 2019

Skram Omega. Juego tipo shooter muy rápido

Mi segunda publicación en la revista MSX Club de Programas nº 26 (1987), Skram Omega, juego tipo shooter programado en BASIC y ensamblador para ordenadores MSX1. 

Como en la práctica totalidad de los programas de aquella época, no co los conservo en forma digital. De este juego tan solo conservo un listado parcial (no encuentro ni la revista). Gracias a la preservación que hace la gente del MSX, he conseguido la revista en PDF y el código de la web de recopilaciones de Archivos MSX Basic. La verdad es que es increíble que 30 años después pueda encontrar este material.
Pasemos a hablar del juego. Es el típico shooter, muy sencillo de aspecto, con un formato adecuado para publicar en revista. El juego no va a pasar a los anales de la historia del videojuego por sus características estéticas y de jugabilidad, pero técnicamente tiene su aquel, ya que para conseguir velocidad de ejecución hay rutinas en ensamblador y acceso directamente a los registros del VDP. Este juego lo hice ya con 17 años, y se nota una diferencia técnica muy importante respecto al anterior juego Barcelona'92.


Una característica curiosa del juego es que tiene un scroll horizontal, pero en sentido de izquierda a derecha, justo al contrario de lo habitual, lo que añade mucha complicación a la hora de jugar. El movimiento es muy muy rápido, y hasta que se le coge el truquillo, las partidas pueden durar entre dos y cinco segundos. Llevamos un avión que tiene que esquivar unos misiles que le llegan de frente (muchos) y a la vez tiene que bombardear unos vehículos acorazados que están en el suelo. La partida finaliza cuando te quedas sin bombas (sólo tienes 50) o te alcanza un misil. Al acabar obtienes una puntuación según el número de blancos alcanzados.


El código está disponible en GitHub:
 https://github.com/humbertomb/mymsx/tree/master/skram

jueves, 25 de abril de 2019

Reparación de un Amiga 2000


Hace unas semanas, y después de haber puesto en marcha mis MSXs, decidí meterle mano a mi Amiga 2000, pensando en que no iba a estar en muy mal estado. Conexión de cables, monitor, etc; botón de encendido, muchísimo ruido, y ... nada. Pantalla completamente negra. Después de haber retirado todas las tarjetas de expansión y repetido el proceso varias veces, pasamos a consultar el manual (si, es siempre lo último que hay que hacer :-). Pantalla negra indica que puede ser algo relacionado con el microprocesador. Inspeccionado la placa se observa que tiene un aspecto peor que lamentable. La batería del RTC estalló hace tiempo, y el ácido ha corroído una parte importante de la placa, que es justo donde está el microprocesador y la ROM. Esto es algo muy habitual en estos ordenadores. Y ya tenemos pista para investigar. Fotografía del estado inicial de la placa.


Con la ayuda de mi hermano (en realidad gracias a mi hermano con un poco de ayuda mía), limpiamos toda la placa con alcohol isopropílico (como si lo regalaran, vamos, para una boda), y cambiamos la batería por una pila de botón. Revisamos un poco por encima el MC68000 con un osciloscopio, y tenemos señal de reloj (en la imagen un divisor por 10, de la frecuencia de reloj de 7.09MHz) y trasiego por los buses de datos y direcciones. 



Si hay vida, hay esperanza. Pero seguimos con la pantalla negra. Habría que seguir todas las pistas y soldaduras, al menos las del micro y las de la ROM. Para evitar sorpresas y retrasos, compro un micro y una ROM nuevas. Conseguir un micro de esa época y en buen estado es una historia. Pero lo conseguí sin tener que arruinarme. Las ROMs se siguen vendiendo nuevas y programadas en la actualidad. Diversas combinaciones de micro y ROM, con sus numerosos encendidos y apagados de ordenador. En todos los casos lo mismo: pantalla negra.



Aquí no hay más remedio que meter mano hasta el fondo. Desoldamos los zócalos del micro y de la ROM. Por suerte sólo estropeamos un pad (de los 88 posibles entre los dos zócalos). Manual de servicio del Amiga 2000 en mano, repasamos todas las pistas que van desde el micro a la RAM y a la ROM, pasando por los distintos buffers y selectores de banco de memoria. Encontramos dos pistas sin continuidad (debido a la corrosión), una del bus de datos, y otra del bus de direcciones en sentido a la ROM. Soldamos cables, soldamos unos nuevos zócalos con patillas torneadas, ponemos el micro y la ROM originales, encendemos, otra vez mucho ruido, nervios (por qué no decirlo), y ... , funciona. Aparece la pantalla de introducción de disco.



Introducimos un disquete de arranque y, ... , no va. Era obvio que no podía ir a la primera. Pero tampoco fue con los sucesivos discos que probamos. A revisar disquetera de 3.5" toca. Con ese tiempo es habitual que algo tengan. Como tengo varias de PC de la época, ni me molesto en reparar. Para adaptarlas al amiga hay que cambiar un puente y añadir una línea. Muy sencillo. Minucia para lo que ya llevamos. 

Vuelta a probar. Cablear, montar, disco de arranque y, ..., ahora si. El ordenador ha vuelto a vivir. Todavía quedan cosas por hacer, pero lo básico ya está hecho. Pues nada, a disfrutarlo un poco. Probamos una demo con música de Michael Jackson. Cómo se oye el equipo con unos altavoces con subwoofer amplificados, de los normales. En su día usábamos unos altavoces muy muy cutres.


Después del relax toca ir montando las diversas placas de expansión del ordenador: una aceleradora con un MC68EC030 a 40 MHz y 4Mb de RAM, un disco duro SCSI de 425Mb, una ampliación de memoria de 2Mb de RAM, y una tarjeta AT con un 80286 a 8MHz y 1Mb de RAM. Se van probando una a una, repasando la configuración de jumpers y demás (aquí fui muy blando, leí los manuales antes de ponerme manos a la obra), y al final todas acaban funcionado, excepto el disco duro, que incluso habiendo intentado una RCP de urgencia, no ha superado la prueba. Se da de baja. Pasamos programas de test para verificar los dispositivos, la memoria y las expansiones. Todo OK.


Como el disco duro SCSI está mal, y no hay forma de encontrar un disco SCSI con mínima confianza, decido comprar una tarjeta IDE que, además de permitirme usar un disco de PC, me permite añadir una unidad de CD-ROM y un adaptador IDE-CompactFlash. La compro en AMIGAstore.eu, que además de ser muy majos están en Lorca, a tiro de piedra de Cartagena. Alargamos cables de alimentación, añadimos nuevos, pasamos como podemos los cables planos y, tachan, redoble de los buenos, funciona todo.



Formateo y particionado del disco duro, instalación del Workbench 3.1, e instalación de mil utilidades, commodities, y demás chorradas por las que el Amiga se hizo famoso. Y ya está plenamente operativo el ordenador. Ahora a disfrutarlo.



NOTA. Esto que ocurre en una página de blog, en la realidad ha llevado casi dos meses de echarle muchas horas :-). Estad prevenidos por si a alguien se le ocurre hacer algo parecido.




lunes, 22 de abril de 2019

Barcelona'92. Juego de pruebas deportivas

Mi primera publicación en la revista MSX Club de Programas nº 3-4 (1985), Barcelona'92, juego de las Olimpiadas programado en BASIC para ordenadores MSX1
Esta pasada Navidad puse en marcha mi ordenador Sony HB-700S de 1988 (MSX2). Disquetera cambiada, placa de teclado limpiada, y limpieza general. El ordenador funciona bastante bien, aunque el puerto de juegos A tiene alguna conexión mala. Y el vídeo pierde la sincronía tras un reset. Pero por lo demás, estupendo para el tiempo que tiene.  
Tras varias mudanzas en pésimas condiciones, no conservo cintas con programas de esta época. Y sólo conservo listados en papel de alguno de los programas que hice, más parecidos a un pergamino que a un listado.
Como aperitivo de vuelta al MSX, he comenzado desde lo más bajo. He copiado a mano el listado del juego, y lo he ido grabando en una cassette (si, ese chisme que se rebobina con el boli BIC). Pura experiencia ochentera !!! Antes de que alguien piense "qué bruto!! se podría usar un OCR y ya tienes mucho ganado". Hasta ahí también llegué yo solito. Probé un montón, y no me generaban nada usable. El problema es que los OCRs no están pensados para escanear listados de impresora matricial de baja resolución: los puntos son muy gruesos, y los ceros tienen una línea en medio. Al final dediqué a la búsqueda más tiempo del que necesité para copiar el listado. Y, además, me sirvió para repasar mi BASIC.
Una vez que el programa estaba copiado y depurado, encontré el código disponible en una web con recopilaciones de Archivos MSX Basic 😬. Para el siguiente programa ya iré directamente a esta web. Aún tengo unos cuantos más.
Vamos ahora a hablar del juego. Antes de que nadie se parta el pecho, hay que pensar que lo programé con 15 años. Y el primer ordenador lo toqué con casi 14 años. La idea es similar al juego Track & Field de Konami (1983) pero en pobre. El juego es para dos jugadores reales, y no se puede competir contra el ordenador. Hay cuatro pruebas diferentes: 100 m lisos, 100 m vallas, natación, y tiro con arco. Cada prueba da puntos. Gana el jugador que más puntos consigue. En todas las pruebas excepto el tiro con arco participan los dos jugadores de forma simultánea.

El código está disponible en GitHub:
https://github.com/humbertomb/mymsx/tree/master/bcn92