Método SnapShot. Hasta ahora para poder hacer compatible la carga de Juegos/Programas de la ZX Spectrum en la Timex Sinclair 2068, consistía en generar en assembler un nuevo load "" code y RANDOMIZE USR xxxxx , para programas que cargaran detrás de la zona de basic de la 2068, o programas de cintas sin cabeceras que utilizan llamadas a rutinas de la ROM de la Spectrum, ubicada en direcciones de memorias incompatible con la TS2068. Otro dato a tener en cuenta, es la ubicación del registro assembler SP (Stack Point), donde direcciona en la memoria la pila de máquina. Y algunos detalles mas, que a veces son necesarios de trabajar , por ejemplo: cuando el inicio de la carga del juego está protegido con ANTI-MERGE, ANTI-BREAK, código máquina después de una sentencia REM, etc.
Muchas de estas rutinas en assembler, se podía generar automáticamente con el programa Header-Maker , con los datos de la zona de carga en memoria, que se podían obtener con el programa Analizador de Tapes (ambos programas publicados en este foro). Y para los casos mas ceberos el uso de un dessessamblador.
Sin dejar dejarlo de lado y olvidado este método a pulmón, voy a dejar un par de herramientas interesantes para trabajar con archivos snapshot, el cual nos va a permitir de una forma mas práctica, compatibilizar programas de la ZX Spectrum con la Timex Sinclair 2068.
SnapToTap: Este es un programa para Windows que carga un archivo snapshot o Z80 y lo convierte en un archivo tipo TAP con la estructura de nombre : n
nnnn_xxxxx.tap .
Donde nnnnn , es el nombre del archivo snap o Z80 y xxxxx, es un número de cinco dígitos, donde comienza a cargar el programa assembler en memoria. Siempre con nombre "v2".
Los ejemplos que voy a dar, es utilizando el programa emulador FUSE.
a) Cargar un programa de Spectrum en el Fuse (emulando Spectrum 48K), y desde el menú principal del juego/programa, generar un archivo snapshot en el menú de FUSE:
File-->Save snapshot..
b) Desde el programa de Windows snaptoTap, abrir el archivo .sna , esperar que procese y luego salvarlo en el disco. (con su clásico nombre
nnnnn_xxxxx.tap).
c) Probar de cargar el archivo TAP en el emulador FUSE en modo ZX 48K, y si el juego o programa cargar y corre perfectamente, probarlo en una TS2068 o en el mismo FUSE en modo 2068.
Si un programa de la Spectrum utiliza rutinas de la ROM, es probable que se cuelgue o resete al instante. (que es lo mismo me pasaba con el método tradicional).
Una característica de estos programas capturados por un snapshot y convertidos a TAP, es que el cargardor snapshot , se instala en los primeros 1000 bytes de la zona de memoria de la pantalla (16384) para acomodar correctamente el programa y todos los registros del assembler. Por lo que se observará un poco "sucia" las primeras cuatro o cinco filas de la pantalla. Luego se acomoda cuando se cambia de pantalla o se vuelve a la principal.
Hay juegos, que tiene pantalla fija en la parte superior y conviven con algunso puntitos, como ser el juego
3D Tank Duel.
Subo este juego en dos archivos, uno como tal cual lo genera el programa snapToTap, y otro en tzx , el cual se le agregó la pantalla de presentación de carga, para una mayor prolijidad.
También subo otros juegos compatibilizadas la carga de la Spectrum a la 2068 por un colega del foro (8Datos), a quién le habia explicado este método por mensajería privada, el cual nos aporta los siguientes títulos.
Azzurro 8bit jam
Sokoban
Speccy Bros
King's Valley
Con este método un poco mas amigable, se abre un poco mas el espectro de programas para la Timex Sinclair 2068.
Por último, también adjunto otro programa llamado Z80TZXv12 mas específico para usuarios de Spectrum. Convierte los archivos .sna y .z80 al formato .tzx sin afectar la zona de memoria de pantalla. (Este programa no es muy compatible para cargarlos en la TS2068).