domingo, 18 de mayo de 2014

Spectrum v0.99a, un vídeo de demostración

Para complementar la entrada de hace pocos días, no estaría mal un vídeo del emulador de Gimeno en la plataforma y entorno para el que fue programado. Pues nada, aquí tenéis una prueba visual de lo que hasta hace pocos días estaba "Missing in Action" (en realidad, oculto):  http://youtu.be/bpggUoK114c



ADDENDA: Retrogamer Sevilla ha encontrado un texto donde el programador cuenta la historia sobre la concepción y programación de su emulador:

Soy un "vicioso" del Spectrum. Tengo uno de 48K, de teclado de goma, y es a este al que debo larguísimas horas de entretenimiento. Cuando adquirí el PC me plantee cómo mejorar el Spectrum dándole las prestaciones del PC (disco duro, teclado bueno, monitor claro, impresora rápida, etc.), pero no di con ninguna solución. Por otra parte, me atraía la pregunta de cuánto más podría ser el PC de rápido con respecto al Spectrum. 

Al fin, en primavera del 89 se me ocurrió la idea de un simulador. Había visto algún C64 con emulador de Spectrum, pero sólo a nivel BASIC. Pensé‚ que no me era suficiente, pues no funcionarían ni el cinco por ciento de los programas. Tenía, además, que simularlo a nivel de código máquina del Z-80.

Empecé con un simulador de Z-80 en Pascal, pero la velocidad dependía de tantos factores que al fin me decidí a reescribirlo en ensamblador. Hice dos versiones, a cual más enrevesada. Al fin, me decidí por hacerlo "en plan salvaje": una rutina por cada instrucción, y todas en una tabla. Esto fue en verano del 89.

La primera versión de algo que tenía posibilidades de funcionar la tuve a punto en una semana. Pero me faltaba algo: la ROM del Spectrum. Quería que fuera una copia exacta de la existente en el ordenador, pero además echaba de menos el listado fuente. Al fin, me enteré‚ de que un amigo tenía el libro "The Complete Spectrum ROM Disassembly", de Melbourne House, y se lo pedí. Dos semanas más me costó teclear todo el librito. Disponía de un ensamblador cruzado de Z-80; lo ensamblé, lo comparé‚ con el original, lo corregí, lo volví a ensamblar y lo probé‚ con el emulador. ¡Sorpresa la mía! La primera versión hacía algo a la primera. No acababa de funcionar bien pero afortunadamente eran fallos leves. En poco tiempo estuvo a punto uno que me permitía ya teclear listados BASIC y demás.

El problema surgió a continuación: ¿Cómo cargar de cassette? Suponía que dada la variación de velocidad entre PC's (8088, 8086, 80286, etc.) sería imposible siquiera plantearse que el emulador funcionara "de por sí" con cassette. Y además, ¿por dónde meterlo? Un amigo mío, que disponía de un osciloscopio, me ayudó a medir la frecuencia exacta y la tensión de mi reproductor de cassette. Resultó ser de unos cinco voltios a volumen máximo, lo que sugirió que usásemos el puerto paralelo, que reconocía esa misma señal. Puse a punto una rutina de carga compatible con las velocidades del Spectrum y modifiqué el emulador de manera que al llegar a la rutina de carga de la ROM entrase en la mía. Funcionó a la primera. Me fui corriendo en pos de mi copia del "Manic Miner" y lo cargué.

Desde aquella época, el emulador ha sufrido bastantes modificaciones, todas ellas para mejor. Y, actualmente, es lo que es. Se me propuso que lo vendiera, con una apetitosa oferta. Al final, decidí lanzarlo al dominio público. Tengo en mente algunas mejoras adicionales, relativas algunas a la velocidad, otras al joystick y otras a una versión para 386 exclusivamente, que sacaría partido del mismo. Tal vez en una futura versión del emulador queden incorporadas.

** ADVERTENCIA **
Circula una versión inválida e indocumentada del emulador [VGASPEC], debida a una filtración por parte de alguien a quien creía mi amigo. Esa versión aun tiene por corregir un problema que el emulador manifestaba al salir al sistema, y que sobreescribe en la zona del D.O.S. pudiendo causar catástrofes imprevistas. Es aconsejable que deje de utilizarse por completo, en previsión de accidentes. Además, los ficheros que reconocía no son compatibles con el nuevo formato que utilizo, más avanzado.

(Pedro Gimeno)

1 comentario:

  1. A Pedro lo llevé en mi coche un día y me quemó la tapicería con un cigarro, precisaemtne el día que me llevó a conocer su emulador.

    ResponderEliminar