• Beverly Hills Cop: Uno mas adaptado loa carga para la lista de la 2068.
    Adjunto los archivos para ambas plataformas.
     

  • 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 : nnnnn_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).
     

  • H.E.R.O. : La otra vez necesite pasar este juego de Spectrum a Cartridge de la TS2068, aprovecho a subir una versión que ademas de poder cargarlo en cinta en la Timex Sinclair 2068, también carga en una Spectrum.
     

  • King's Valley: Es un juego para la ZX Spectrum y Spectrum 128. Con una pequeña modificación en el programa de carga en Basic, es también compatible para que pueda cargarse este juego en la Timex Sinclair 2068.
    La modificación consistió en borrarle el comando CLEAR 24575, debido a que esta instrucción daba error en el posicionamiento de la Pila de Máquina. La TS 2068 ubica por defecto la pila de máquina en esa posición de memoria (24575). La posición de memoria de pila de máquina en la Spetrum, está arriba de los 65000. Este juego tiene su propio cargador turbo y está ubicado a partir de la dirección de memoria 65000.
     

  • Comandos SOUND y STICK del Basic de la Timex Sinclair 2068, reemplazados por los comandos OUT 245,R , OUT 246,x e IN 246.

    El comando STICK (x,y) del Basic de la TS2068, que se utiliza para leer los dos ports de entrada de los Joystick 1 y 2 , pueden ser reemplazados por una pequeña rutina en assembler.

    ORG 5B04h
    ENT
    LD IX, (5C0Bh)
    LD A, 0E
    OUT (F4h), A
    LD B, (IX+04)
    LD C, F6h
    IN A, (C)
    CPL
    AND 8Fh
    LD B, 00
    LD C, A
    RET


    En este caso, la carga del código assembler, está en la dirección de memoria 23300, pero puede ser desplazado a cualquier parte de la memoria RAM.
    Primero definimos la función en Basic como DEF FN J(P) = USR$ (23300) , y luego llamamos a la función FN J (1) para el player 1 o FN J (2) para el player 2, y obtenemos el valor que nos devuelve el par de registro BC desde el assembler.

    STICK (1,1) ------> FN J(1) obteniendo los valores del movimiento de la palanca del Joystick 1.
    STICK (2,1) ------> FN J(1) obteniendo los valores >=128 para obtener el valor del movimiento del botón del Joystick 1..

    STICK (1,2) ------> FN J(2) obteniendo los valores del movimiento de la palanca del Joystick 2.
    STICK (2,2) ------> FN J(2) obteniendo los valores >=128 para obtener el valor del movimiento del botón del Joystick 2.


    El comando SOUND R,V, (de la 2068) se reemplaza con los comandos en BASIC OUT 245, R y OUT 246,V. . Quienes estén familiarizados con este comando de sonido, el primer valor es el del registro y el segundo es un valor que corresponde para cada canal (A,B o C).

    Veamos un ejemplo de la note LA
    10 SOUND 7,56; 0,.241; 1,1; 8,14 ------> 10 OUT 245,7 : OUT 246,56 : OUT 245,0 : OUT 246, 241 : OUT 245,1 : OUT 246, 1 : OUT 245,8 : OUT 246, 14
    20 PAUSE 40 ----------------------------------> 20 PAUSE 40
    30 SOUND 8,0; 7,63 ------------------------> 30 OUT 245,8 : OUT 246,0 : OUT 245,7 : OUT 246, 63

    Adjunto un programa llamado Sound_Stick_2068.tzx, el cual permite testear los Joystick para los players 1 y 2 . El programa finaliza, testeando el chip PSG , tocando un acorde de las notas LA-DO-MI. .
    Con este programa podemos acceder al chip AY-3-8912 (Sonido y Joystick) , ya sea , arrancando la TS2068 con sus ROM's (HOME y EXROM), desde un cartridge con Emulador ZX Spectrum, desde una plaqueta Twister-Borad con ROM de ZX Spectrum o una ROM interna de ZX Spectrum conectada en el Socket de la HOME 2068. Para todo estos casos, la TS2068 nunca pierde identidad con su hardware.

    El mismo ejemplo es para el comando OUT 255, 62. cuando queremos cambiar al modo de video extendido (64 columnas)
     

Moderador (s): homecomputer, Selandari, pastbytes, Palamar, phd, Durandal