Mostrando las entradas con la etiqueta Timex Computer 2048. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Timex Computer 2048. Mostrar todas las entradas

martes, marzo 27, 2007

The ZX Spectrum Book - 1982 to 199x

Hola amigos,

Hoy recibí mi copia del libro The ZX Spectrum Book - 1982 to 199x de Andrew Rollings.



El libro es un compendio de más de 230 juegos ordenados por año/alfabéticamente que pretende mostrar la historia del glorioso ZX Spectrum a partir de su producto principal los juegos.



El libro es un esfuezo personal de Andrew, apoyado y corregido por la escena especialmente por World of Spectrum, que comenzó el año 2005 y vio la luz en Diciembre del 2006.

Recomiendo 100% este libro a todos los fanáticos de ese maravillo microcomputador de los 80, sobretodo que este Abril se cumplen 25 años del lanzamiento del mítico Sinclair ZX Spectrum.



Si bien es cierto, no contiene todos los juegos que salieron para el Speccy (tarea tal vez sólo abordable en formato sitio web), sí contiene títulos que el autor considera representativos. Por supuesto que con 200+ títulos no pueden tener todos nuestros juegos favoritos, sin embargo sí contiene algunos títulos de autoría española lo que habla muy bien de la época de oro del software español.

Por mi parte extraño algunas conversiones de arcade como Arkanoid y algunos clásicos españoles como Profanation, lo que no resta mérito en ningún caso a este gran documento de valor referencial e histórico.

Pueden descargar capítulos en formato PDF o comprar el libro (rápido son sólo 1000 copias) desde el sitio oficial del libro.

El autor está preparando un nuevo libro, esta vez basado en otro monstruo de los 80: El Commodore 64.

Desde acá felicitamos y agradecemos a Andrew por su maravilloso trabajo. ¡¡Muchas gracias!!

Saludos

JF

viernes, noviembre 03, 2006

Airwolf para Timex Computer 2048

Hola amigos,

Continuando con los juegos "parchados" para TC 2048. Otro clásico:

Airwolf - 1984 - Elite Systems Ltd



Este juego fue el primer caso de incompatibilidad que conocí entre el TC 2048 y el Sinclair ZX Spectum.

El problema: no es posible mover el helicóptero arriba (teclas Q a T) ni abajo (teclas A a G).

La modificación que realicé: Durante la lectura del puerto de teclado se estaban comparando valores incorrectos. Ahora soporta correctamente Kempston y teclado (Q a T, A a G, Z, X y C).

Bajar archivo TZX de Airwolf para TC 2048


Nota: El archivo TZX utiliza un método de grabación turbo que permite su carga en un poco más de un minuto. El archivo fue generado con: Z802TZX de Tomaz Kac.

sábado, octubre 14, 2006

Diferencias entre Timex Computer 2048 y Sinclair ZX Spectrum (Parte 2)

Amigos,

Esta es la segunda parte de mi artículo sobre las direncias entre el Timex Computer 2048 y el Sinclair ZX Spectrum. La primera parte trataba los 1) Los diferentes modos de video y 2) La sincronización de video mediante el empleo de IN(255).

Continuamos con:

3.- Lectura del puerto FEh (254)

El puerto FEh es utilizado para leer el teclado y el puerto EAR para carga desde cinta. En ambos casos se lee la información de salida de la ULA.

En el TC2048 sólo se puede usar el puerto FEh para estos fines, en el ZX Spectrum, en cambio, todos los puertos pares son direccionados hacia la ULA por lo que se puede ocupar cualquier valor múltiplo de dos para leer el puerto FEh.

Al hacer IN al puerto 254, se obtiene el siguiente octeto:


B7-E-B5-k4-k3-k2-k1-k0



Donde:

  • E=Bit del estado de EAR (entrada de audio para carga desde cinta)
  • K4-k3-k2-k1-k0: bits que entregan la fila del teclado escaneada.
  • B7 y B5: bits que dependen de la arquitectura del microcomputador.



Los bits que dependen de la arquitectura tiene los siguientes valores:


  • En el ZX Spectrum B5=1 y B7=1
  • En el TC2048 B5=0 y B7=0


Esta diferencia puede ocasionar problemas de compatibilidad en algoritmos de carga turbo o de velocidad superior.

Tal es el caso de las Ultracargas desarrolladas por Antonio Villena Godoy que requieren una versión especial para el TC2048. Ver artículo sobre ultracargas.

Otro caso emblemático es URIDIUM. La versión oficial no es compatible con el TC2048. Para hacerlo compatible basta cambiar un byte!!!

ORG 9AFD
LD C,0 ; En C deja las teclas presionadas
LD B,1FH ; Valor para enmascarar (sólo deja las teclas)
LD A,BFH ; Fila: Enter-L-K-J-H
IN A,(FEH) ; Lee puerto
CPL ; complementa (1 apretado, 0 no)
RRA ; Lo rota a la derecha y deja el valor de “Enter” en el flag de carrier
RL C ; Deja el valor de “Enter” en el bit 0 de C
AND B ; Enmascara los 5 últimos bits
CP A,1H ; Compara con uno. Pero en TC2048 uno de los bits diferentes se propago
; debido a la rotación de A. Para hacerlo compatible se hace:
; CP A,11H <— cambio en TC2048
CCF ; Complementa el flag de carrier (1 si está apretada “L”, o no)
RL C ; Pone el valor de “L” en el bit 0 de C, en el bit 1 está “Enter”.


La versión parchada para TC2048 la pueden descargar en este post.


4.- Diferencias en la ROM

La ROM del TC2048 es diferente a la ROM del ZX Spectrum. La diferencia es que durante la inicialización se cambia el modo de pantalla a 0, mediante la instrucción out 255,0.

Para esto se crea una rutina en la zona de SPARE de la ROM y se reemplaza el llamado al despliegue del mensaje (PO_MSG) por el llamado a esta rutina (que a su vez llama a PO_MSG).

ZX Spectrum:

RAM_SET:
0x1219
...
0X1295 AF XOR A
0X1296 113815 LD DE,1538H
0x1299 CD0A0C CALL 0C0AH,PO_MSG
...
SPARE:
0x386E FFFFFFFFFFF



TC2048:

RAM_SET:
0X1219
...
0X1295 AF XOR A
0X1296 113815 LD DE,1538H
0x1299 CD6E38 CALL 386EH,SPARE
...
SPARE:
0x386E D4FF OUT (255),A
0X3870 CD0A0C CALL 0C0AH,PO_MSG
0X3873 C9 RET


Problemas de compatibilidad: Para aquellas aplicaciones que utilizan los códigos FF en la zona de SPARE en las primeras direcciones.


Un truco que se utilizaba frecuentemente y que hacía uso de esta zona de memoria es como sigue:

En el modo de interrupción IM2 cuando se produce una interrupción se ejecuta la subrutina de atención de interrupciones en la posición de memoria indicada por: 256*I+[Contenido del bus de datos] y el byte siguiente.

I corresponde al registro I.

Estos dos bytes se conocen como el vector de interrupciones.

Dado que el ZX Spectrum (o el TC2048) no contiene el hardware para poner un byte en el bus de datos en estas condiciones, este valor es siempre FFh. Por lo tanto la subrutina se ubica en las direcciones apuntada por:

256*I+255 y 256*I+256.


Lamentablemente si existe un periférico adicional este podría poner un dato en el bus de datos diferente a 255, es por esto que las aplicaciones más avanzadas utilizaban la siguiente técnica para asegurarse que la rutina de atención de interrupciones fuera llamada independiente del contenido del bus de datos:

Estos programas contenían una tabla de 257 posiciones de memoria comenzando en 256*I+0 que contenían el mismo valor: FFh. Entonces independiente del valor del bus de datos se lee la dirección FFFFh.

En la dirección FFFFh se pone el valor 18h equivalente a la instrucción JR. El siguiente valor leído es el contenido de 0000h (ROM) que corresponde a F3h (DI). Por lo tanto se realiza un salto equivalente a JR FFF4h. En esta posición (FFF4h) se pone un JP a la rutina real de atención de interrupciones.

Para ahorrase esta tabla, algunos programas usan la ROM. Como ya se vio la ROM del ZX Spectrum contiene los valores FF entre 386Eh (14446) y 3CFFh (15615). Dado lo anterior I s se podría cargar con 39,3A ó 3B. Dado que el TC2048 tiene estos valores con FF no existen problemas de compatibilidad, no así con el Microdigital TK90X que si presenta este problema .

Un ejemplo de esto ocurre en el juego Turbo Esprit:

E42C 3E3B LD A,3BH
E42E ED47 LD I,A
E430 ED5E IM2
…
FFF4 C322E6 JP E622H
…
FFFF 18F4 JR FFF4H


En este caso si se produce el problema y es necesario parchar el juego para cargarlo en el Microdigital TK 90X.


----------------------------------------------------------

Otras diferencias en investigación son:


  • Puerto 244 para selección de banco de memoria. Este valor no es borrado por un reset
  • Puerto de joystick kempston puesto a +5V y no a tierra como otros.




Saludos

JF

Sinclair ZX Interface 2

La "Sinclar ZX Interface 2" es un periférico que se instala en el slot de expansión del ZX Specrum y que provee dos puertos para joysticks y un conector para los ROM Cartridges.


Adicionalmente se provee la extensión del puerto de expansión pero únicamente para la conexión de la impresora "ZX Printer" .

La ZX Interface 2 se empezó a comercializar el año 1983 y costaba GB 19.95. Los cartridges costaban inicialmente GB 14.95.

Los puertos de joystick correspondían al estándar Sinclair que mapeaba los joysticks a las teclas numéricas en el siguiente orden: izquierda, derecha, abajo, arriba y disparo.:

  • Puerto 1: 6,7,8,9,0
  • Puerto 2: 1,2,3,4,5

El ROM cartridge estaba limitado a 16KB y se mapeba directamente a las direcciones 0 a 16383 que corresponden al espacio de memoria que ocupa la ROM del ZX Spectrum. No se provee ningún mecanismo de paging para pasar del cartridge a la ROM original y por lo tanto es imposible acceder a las rutinas de la ROM cuando se utiliza un cartridge.


Los juegos en cartridge por lo tanto debían ser de 16KB y no debían ocupar ninguna rutina de la ROM. Los juegos disponibles en formaton ROM catridge fueron los siguientes:


En el año 2005, Droy de "El Trastero del Spectrum" diseñó un cartridge de 512KB compatible con la ZX IF2: El ZX Flash Cart.

Este cart permite cargar hasta 10 juegos de 48KB en forma inmediata en el ZX Spectrum mediante una EPROM de 512KB.


Nota: Las fotos fueron sacadas del sitio sobre la ZX IF2 de Paul Farrow, el sitio más completo sobre la "ZX Interface 2" de Internet, del Trastero del Spectrum y de Planet Sinclair.

domingo, octubre 08, 2006

Ultracargas para Timex Computer 2048

Categorías: Timex Computer 2048 Sinclair ZX Spectrum

Amigos,

Las ultracargas son un método de carga para ZX Spectrum creado por Antonio Villena Godoy. Con las ultracargas es posible cargar un juego en el Spectrum vía la entrada de audio en menos de 30 segundos.

Ésta es la versión para Timex Computer 2048 a la que Antonio le realizó los cambios necesarios para funcionar en TC 2048 después que mi amigo Cristian González y yo lo contactamos y le explicamos las diferencias entre el el ZX Spectrum y el TC 2048: En el TC 2048 los bits 7 y 5 del puerto 254 son siempre 0.

La pueden descargar desde aquí. Esta versión es incompatible con el Sinclair ZX Spectrum.

El uso es extremadamente sencillo: ejecuten desde una ventana DOS:


sna2wav.com nombre_del_archivo.sna

El resultado es un archivo wav con el mismo nombre del archivo sna.


A mí sólo me ha funcionado cargar usando el wav resultante en Windows Media Player.

Cristián González ha conseguido cargar los wavs usando MP3 Player que soporta el formato wav directamente (duplicando el volumen previamente con GoldWave). Recuerden usar un cable mono para conectar el TC 2048 con la tarjeta de sonido del PC.

Saludos

JF

domingo, agosto 27, 2006

Abu Simbel Profanation para Timex Computer 2048

Categorías: Juegos Timex Computer 2048 Sinclair ZX Spectrum

Hola amigos,

Siguiendo con los juegos "parchados" para TC 2048, otro clásico:

Abu Simbel Profanation- 1985 - Dinamic Software


El problema: Hay varias versiones, en una de ellas no se podía seleccionar la opción en el menú, en otra el personaje se mantenía saltando. Recuerdo que en su tiempo (circa 1987) existía una versión parchada para TC 2048 realizada, según me contaron en su tiempo, por un aficionado de Antofagasta, Chile.

La modificación que realicé: Muchos de los problemas de compatibilidad del TC 2048 también existían el Spectrum 128, por lo que las versiones para Spectrum 128K, resultan ser más compatibles con el TC 2048 que las versiones de 48K. En este caso tomé la versión de 128K y la modifiqué para convertirla en 48K. Funciona en TC 2048 solamente con interfaz Kempston.

Bajar archivo TZX de Abu Simbel Profanation para TC 2048

Nota: El archivo TZX utiliza un método de grabación turbo que permite su carga en un poco más de un minuto. El archivo fue generado con: Z802TZX de Tomaz Kac.

martes, agosto 22, 2006

Uridium para Timex Computer 2048

Categorías: Juegos Timex Computer 2048 Sinclair ZX Spectrum

Hola amigos,

Comenzamos con los juegos "parchados" para TC 2048. El primero es emblemático:

Uridium - 1986 - Hewson Consultants Ltd


El problema: al inicio del juego la nave se va hacia arriba y no es posible moverla hacia abajo.

La modificación que realicé: Durante la lectura del puerto de teclado se estaban comparando valores incorrectos. Ahora soporta correctamente Kempston y teclado (Z-X-L-SS-Enter).

Bajar archivo TZX de Uridium para TC 2048


Nota: El archivo TZX utiliza un método de grabación turbo que permite su carga en un poco más de un minuto. El archivo fue generado con: Z802TZX de Tomaz Kac.

sábado, julio 29, 2006

Diferencias entre Timex Computer 2048 y Sinclair ZX Spectrum (Parte 1)

Categoría: Sinclair ZX Spectrum Timex Computer 2048 Emulación

Además de los cambios que se vislumbran a simple vista tales como un teclado mejorado, puerto de video compuesto, puerto de joystick Kempston y un interruptor de encendido, el TC 2048 se diferencia de un Sinclair ZX Spectrum internamente.

A continuación se listan las diferencias que el autor conoce, por lo que toda información adicional es bienvenida.

1.- Modos de video (puerto 255)

El TC2048 soportaba más modos de video que su primo el ZX Spectrum. Los modos de video pueden ser configurados a través del puerto FFh (255d).

El modo se configura mediante los tres bits menos significativos:






  • 000: Modo tradicional del Spectrum de 8x8
  • 001: Datos de video en 24576 y atributos en 30720, 8x8
  • 010: Multicolor: video en 16384 y color en 24576 8x1
  • 110: Alta resolución. Monocolor columnas pares son tomadas desde 16384 y las columnas impares desde 24576
Los bits 3,4 y 5 configuran el color de tinta para la pantalla completa en modo alta resolución:






  • 0: 000 black
  • 1: 001 blue
  • 2: 010 red
  • 3: 011 purple
  • 4: 100 green
  • 5: 101 cyan
  • 6: 110 yellow
  • 7: 111 white
El bit 6 es utilizado para deshabilitar las interrupciones (al poner en 1). El bit 7 no es utilizado.









2.- Sincronización de video mediante IN 255h

Al hacer IN al puerto 255 o a algún puerto inexistente en el Spectrum se obtiene el dato de video que están escribiendo en pantalla. Lo anterior debido a que existen unos resistores de 470[Ohms] entre la ULA y el bus de datos que no sirven como aislante cuando se direcciona un puerto inexistente.

El valor que se obtiente puede ser: un valor de píxel, un atributo (color) o nada (el borde). El borde entrega un valor de FFh.

Los programadores usaban esto para sincronización de video o para realizar una pausa de acuerdo a la tasa de refresco del video. Ejemplo:



LOOP IN A,(#FF) ; Lee el “puerto”
CP A,#FF ; ¿Está en el borde o en la venta?
JP Z,LOOP ; Salta hacia atrás si está en el borde
..... ; Continúa



En el TC2048 no existe esta conexión y el bus de datos está levantado a +5V por 8 resistores de 10[KOhms], por lo que al direccionar a un puerto inexistente siempre se lee FFh.

Dado que al leer el puerto FFh siempre se obtiene el valor FFh algunos juegos que utilizan el bucle anterior quedan bloqueados, y por lo tanto deben ser “parchados” para funcionar correctamente en el TC2048. El ejemplo por antonomasia es el juego Arkanoid. Una versión parchada de este y otros juegos se encontrarán pronto disponibles en este blog.

Saludos

JF


Timex Computer 2048

Categorías: Timex Computer 2048 Sinclair ZX Spectrum



El Timex Computer 2048 (TC2048) es un microcomputador fabricado por Timex of Portugal Ltda. filial de Timex Corporation con licencia de Sinclair Research a partir del año 1984. Su distribución se concentró en algunos países de Europa y Latinoamérica. Fue muy exitoso en Portugal, Polonia y en Chile.



Básicamente corresponde a un clon del popular Sinclair Spectrum al que se le incorporaron algunas mejoras como un teclado mejorado, puerto de joystick incorporado, salida de video compuesto, botón de encendido/apagado y una ULA mejorada que permitía nuevos modos de video.

Algunas diferencias internas hicieron que no fuera 100% compatible con los juegos de Sinclair Spectrum.

Sus características técnicas son:

Fabricante
Timex Computer Portugal
Año
1984
Procesador
Z80A a 3.58 MHz
Memoria RAM
48K
Memoria ROM
16K conteniendo el BASIC, casi idéntica a la del ZX Spectrum
Chips auxiliares
ULA modificada del TS 2068
Modos Gráficos
256x192 pixels, 32x24 caracteres (pantalla tipo ZX Spectrum)
256x192 pixels, 32x192 caracteres (modo extendido de color)
Modo de pantalla dual, conmutable entre dos pantallas tipo ZX Spectrum
512x192 pixels monocromo
Sonido
1 canal de 10 octavas (por altavoz interno)
Conexiones
Bus para conexión de periféricos (compatible con el del ZX Spectrum)
Un conector para joysticks Kempston
Salida para TV (RF)
Salida de video compuesto
Conexión para Cassette (EAR y MIC)
Entrada de 9V DC para fuente externa (positivo afuera)


Un emulador muy bueno del TC2048 es vbSpec

Los juegos los pueden bajar de World of Spectrum. Los juegos identificados como no compatibles son:

  • Abu Simbel Profanation
  • Airwolf
  • Arkanoid
  • Bubble Bobble
  • Camelot Warriors
  • Jack the Nipper 2
  • Uridium

(Estos juegos han sido parchados por mí para funcionar en TC2048. Pronto estarán disponibles en este blog).