Formato TZX para MSX

BlackHole
Mensajes: 698
Registrado: 03 Ago 2011 23:07
Agradecido : 1 vez
Agradecimiento recibido: 37 veces

Formato TZX para MSX

Mensajepor BlackHole » 04 Abr 2017 18:11

Estimados compañeros,

Me complace presentar aquí en RetroWiki los frutos de un proyecto que se inició hace 18 meses: una ampliación del formato TZX que permite soportar eficientemente los especiales patrones de bits en las rutinas de grabación hacia cinta que encontramos en la norma MSX. Además, esta ampliación se ha pensado con la suficiente versatilidad como para poder soportar un amplio número de máquinas, como los equipos de 8 bits de Acorn Computers y famosos microordenadores de los 70 como el MITS Altair 8800, KIM-1, Ohio Scientific Superboard II, Compukit UK101 o Tangerine MICROTAN65, entre muchos otros.

Para ello he diseñado un nuevo tipo de bloque TZX que permite describir en apenas 16 bytes de metadatos, las caracterísicas del formato KCS (Kansas City Standard) y el formato CUTS (Computer Users Tape Standard), así como sus posibles variaciones en velocidad, número de ciclos por bit y número de bits de arranque/parada alrededor de cada byte real de datos. Esto permite que ligeras desviaciones del estándar KCS, como las de la norma MSX que hoy nos ocupa, sean fácilmente definibles cambiando solo un par de valores.

Aunque en estos momentos solo haya un pequeño puñado de volcados de cintas, realizados para las pruebas de desarrollo, en los últimos tiempos he procurado que existiese una masa crítica de herramientas disponibles para que la gente interesada pudiese empezar a trabajar. Por mi parte he actualizado la aplicación TZX2WAV en Windows y el reproductor TapeRider en Android para que pudiesen funcionar con este nuevo bloque, y durante 4 meses he estado colaborando con el alemán Claus Jahn para que su excelente programa ZX-Blockeditor también permita cargar y crear ficheros TZX con dichos bloques. Otra gente está trabajando en una evolución del MakeTZX que reconozca cintas MSX, también en reproductores hardware basados en Arduino que aparte del CAS incorporarán el nuevo formato, y me han llegado ecos de que un programador que está preparando un nuevo emulador de MSX podría también incluirlo si se generan suficientes volcados.

Imagen

Los valores por defecto del estándar KCS son 4 ciclos (8 pulsos) de 1200 Hz para un bit cero y 8 ciclos (16 pulsos) de 2400 Hz para un bit uno. El orden de los bits en un byte (endianness) coloca el bit menos significativo en primer lugar (LSb) y cada byte está precedido por un bit a cero de arranque y seguido de dos bits a uno de parada, lo que hace un total de 11 bits por cada grupo y una velocidad efectiva de 300 baudios. Los tonos guía usan también una frecuencia de 2400 Hz (se podría considerar como un número finito de bits a uno). La duración del tono guía y de las pausas es típicamente de 5 segundos, aunque no hay una norma fijada sobre ello.

Microsoft (Bill Gates asistió a la reunión de Kansas City de 1975 como representante de MITS) decidió usar dicho patrón para la norma MSX posteriormente en 1983. Sin embargo, como a lo largo de los años se había observado que los cassettes eran más fiables de lo esperado, cuadruplicó la tasa a 1 ciclo (2 pulsos) de 1200 Hz (1458 T-states) para un bit cero y 2 ciclos (4 pulsos) de 2400 Hz (729 T-states) para un bit uno. Existe un tono guía largo para cabeceras de 15380 ciclos (30720 pulsos) de 2400 Hz y uno corto para el resto de datos de 3840 ciclos (7680 pulsos) de 2400 Hz. Es más, el MSX incorpora una velocidad adicional de 2400 baudios al doble de frecuencia: 1 ciclo (2 pulsos) de 2400 Hz (729 T-states) para un bit cero y 2 ciclos (4 pulsos) de 4800 Hz (365 T-states) para un bit uno.

Solo un inciso para recordar que en la terminología TZX se denomina "pulso" a un semiciclo de una onda, ya que el formato es originario de la emulación de Spectrum y éste es capaz de detectar tanto el flanco de subida como el de bajada (otros equipos son solo capaces de detectar uno de ellos, como los equipos Commodore de 8 bits, que solo detectan el flanco descendiente de una onda). Por lo tanto, un ciclo equivale a 2 pulsos a la hora de contabilizar para el formato TZX. Igualmente, la duración de cada pulso viene dada por la frecuencia base del Spectrum (3.5 MHz) y para otras máquinas hay que rehacer los cálculos: por ejemplo el MSX tiene una frecuencia de 3.579.545 Hz (2.27% más rápida) y los T-states del procesador Z80 definidos en la cabecera TZX no van a coincidir exactamente con los reales en esa máquina.

Historia y evolución del proyecto

En Junio de 2014, se creó en el foro Z?n? d? Pru?b?? (que junto con RetroWiki, Vintagenarios y Va de Retro conforman los 4 foros generalistas de retroinfomática en España) una solicitud para la creación de un formato de cinta "universal" que pudiese soportar todos los ordenadores existentes. La consulta provenía de usuarios de MSX que se encuentran con que el formato CAS creado para sus copias de seguridad, solo es capaz de interceptar las llamadas a las rutinas de carga en la ROM (BIOS) de sus máquinas, y no es capaz de emular convenientemente las protecciones (curiosamente modulaciones de Spectrum en su mayoría) sin parchear/desproteger el código del juego, así como replicar las pausas presentes en las cintas porque confían en la existencia de un control remoto que pare el motor. Ante una solicitud similar realizada en el foro internacional de referencia MSX Resource Center (msx.org) solo habían encontrado indiferencia.

Ingenuamente y ante mi desconocimiento absoluto del MSX por la fecha, supuse que se debería comportar como otras máquinas de 8 bits y contesté que el formato TZX debería sin mayor problema ser capaz de soportarlo, con lo que empecé a hacer mis primeras averiguaciones. Los compañeros Antonio Villena en Octubre de 2014 y Miguel Angel Rodríguez (mcleod ideafix) en Julio de 2015 igualmente propusieron que el formato PZX podría ser otro candidato, pero todos andábamos bastante equivocados, sobre todo porque ambos formatos están muy centrados en el Spectrum y solo plantean bytes de 8 bits: no contemplan que existan marcadores de inicio y parada (con lo que obtenemos un grupo de 11 bits por byte) ni que los propios bytes cargados en memoria estén dados la vuelta en la cinta.

Los diversos compromisos del resto de interesados (supongo que en esto el desarrollo del ZX-Uno tuvo mucho que ver) dejaron todo esto en el aire, hasta que me planteé en Noviembre de 2015 volver a retomar el tema. Fue cuando realmente entendí cómo se almacenaban los datos en MSX, acostumbrado a que en el resto de ordenadores los bits tuviesen siempre 2 pulsos de distinta frecuencia, me encontré que en MSX la combinación óptima "0[00000000]11" necesitaba 26 pulsos y la peor "0[11111111]11" necesitaba 42 para definir un único byte. La única manera de que las herramientas existentes en la fecha (Tapir y ZX-Blockeditor) pudiesen gestionar esos patrones, era usar el poco usado bloque generalista (introducido en la versión TZX 1.20) y añadir a cada bloque un diccionario de 21 KB que definiese 256 entradas con un número variable de pulsos para cada una de ellas.

Realicé manualmente, ayudado con el Adobe Audition y un editor hexadecimal, algún volcado con éxito (Stardust de Topo Soft) que utilizaba el ID19 del formato TZX... pero enseguida me di cuenta que había algunos juegos que tenían hasta 39 bloques de carga (Head over Heels) y necesitarían multiplicar por 39 los 21 KB de diccionario. Tendríamos así 819 KB solo para definir cómo estaban dispuestos los bits, aparte de lo que ocupasen después los propios bytes cargados del juego. Una locura. Incluir manualmente los 10700 númeritos en cada bloque, más la lentitud extrema que tanto dato extra provocaba en ZX-Blockeditor, me hicieron ver enseguida la necesidad de crear un nuevo bloque TZX fuera de las especificaciones oficiales.

Quiero destacar en este punto, el inestimable trabajo de recopilación de volcados de juegos de MSX en WAV realizado por el valenciano Pablibiris que dispone de un gran repositorio en la web de Vintagenarios, y cuyos archivos me han sido útiles para poder hacer todas las pruebas a lo largo de este proyecto.

Aunque no fue sino hasta Noviembre de 2016, un año después, donde a raíz de un comentario en RetroWiki sobre la carga en los ordenadores Acorn Electron y BBC Micro, y casi como por casualidad, llegué a una página de Wikipedia donde se explicaba que el formato de codificación de ambos equipos proviene de una reunión realizada en 1975 en la ciudad de Kansas City (Missouri) y auspiciada por la prestigiosa revista Byte, para estandarizar las transferencias de datos y solucionar el caos que ya por entonces había entre distintos fabricantes, de ahí que al resultado se le conozca como Kansas City Standard. Por lo tanto, la opción más factible era la creación de un bloque TZX que consiguiese replicar el comportamiento del KCS y donde el MSX se acoplase sin necesitar diccionarios extraños. Así nació unos días después, el bloque con identificador 4B (el código ASCII de la letra K) que está descrito más arriba.

Inmediatamente actualizé mi herramienta TZX2WAV a la versión 0.4 Beta para poder generar audios a partir del nuevo formato, que pudieran ser cargados en máquina real o en emuladores (en la actualidad solo el OpenMSX y el MESS/MAME son capaces de admitir WAV como entrada). Al poco tiempo me puse en contacto con el alemán Claus Jahn, creador de la suite de herramientas ZX-Modules, y aunque él ya había abandonado el proyecto, le convencí de actualizar ZX-Blockeditor para que soportase una nueva versión TZX 1.21 que incorporase el bloque 4B. Durante los siguientes cuatro meses, en los ratos que ambos teníamos libres, le proporcioné retroalimentación a las betas que me iba proporcionando, especialmente en la inclusión de opciones específicas para MSX en el editor de bloques. Finalmente el pasado 15 de Marzo de 2017, liberó al público la versión 2.4.2 actualizada.

Por último, anteayer actualicé el reproductor TZX para Android TapeRider a la versión 0.3 Beta, que igualmente soporta el nuevo bloque 4B.

Herramientas

TZX2WAV.EXE.gz
TZX to VAV Converter v0.4 Beta (Build 20161205)
(34.22 KiB) Descargado 45 veces

TapeRider 0.3 Beta.apk.gz
TapeRider 0.3 Beta (TZX player Android)
(136.03 KiB) Descargado 46 veces

ZX-Blockeditor_2.4.2_Setup.msi.gz
ZX-Blockeditor 2.4.2 (Windows)
(5.65 MiB) Descargado 40 veces

Volcados de ejemplo

Auf Wiedersehen Monty (MSX).TZX
Auf Wiedersehen Monty (MSX)
(72.74 KiB) Descargado 39 veces

Stardust_ID4B.tzx
Stardust (MSX)
(91.88 KiB) Descargado 35 veces

Livingstone Supongo (MSX).tzx
Livingstone Supongo (MSX)
(40.58 KiB) Descargado 39 veces

jltursan
Mensajes: 1898
Registrado: 20 Sep 2011 13:59
Agradecido : 51 veces
Agradecimiento recibido: 143 veces

Re: Formato TZX para MSX

Mensajepor jltursan » 04 Abr 2017 19:38

¡Todo un trabajazo! -thumbup

Ahora sólo queda ver si se va consiguiendo esa masa crítica de material suficiente para que la gente del OpenMSX se anime a implementarlo en su emulador. Posiblemente si, como dices, hace acto de aparición en otro emulador, eso podría servir de acicate.

En definitiva, ¡chapeau! -drinks

Avatar de Usuario
elfoscuro
Mensajes: 1271
Registrado: 01 Jun 2012 20:46
Agradecimiento recibido: 26 veces
Contactar:

Re: Formato TZX para MSX

Mensajepor elfoscuro » 04 Abr 2017 21:00

Felicidades!!! Ya hace mucho tiempo que se venía necesitando esto. A ver si se mueve, y se convierte en el estándar, porque la verdad, los CAS... Siempre me ha llamado la atención que se viera enseguida en Spectrum que los TAP no eran el camino, y sin embargo, en MSX aun andaran así.

Un saludo.

Avatar de Usuario
jrodriguezv
Mensajes: 758
Registrado: 05 Jul 2012 10:32
Agradecido : 8 veces
Agradecimiento recibido: 7 veces
Contactar:

Re: Formato TZX para MSX

Mensajepor jrodriguezv » 05 Abr 2017 11:47

Enhorabuena por el proyecto, por lo didáctico que has hecho la explicación, por la modificación de las herramientas y por el trabajo en general.
¡Bravo!

Avatar de Usuario
Taburoto
Mensajes: 1193
Registrado: 15 Mar 2011 00:40
Agradecido : 11 veces
Agradecimiento recibido: 57 veces

Re: Formato TZX para MSX

Mensajepor Taburoto » 06 Abr 2017 18:35

Enhorabuena y suerte con todo esto,las cintas de MSX siempre han estado mal vistas,los usuarios del sistema MSX van de "otro rollo"

Ante una solicitud similar realizada en el foro internacional de referencia MSX Resource Center (msx.org) solo habían encontrado indiferencia.


Los usuarios de MSX (la mayoria) están contentos con el formato .CAS y ni siquiera se han planteado mejorarlo,el MSX está consolizado,lo cual es una pena porque para mi siempre fue un gran ordenador,pero actualmente está visto como una consola de juegos japoneses y sus cartuchos ya son objeto de colección consolera.

manolito74
Mensajes: 9
Registrado: 13 May 2017 14:59
Agradecimiento recibido: 2 veces

Re: Formato TZX para MSX

Mensajepor manolito74 » 13 May 2017 20:25

Hola:

Una vez más dar públicamente las gracias a BlackHole por embarcarse en todo este Proyecto. Por supuesto gracias también a NataliaPc que ha traído savia nueva y energías renovadas al Proyecto en forma de nuevas Herramientas como el MakeTSX, que por cierto ahora mismo va por la versión 0.5 beta.

Gracias a Pablibiris por proveernos de Ficheros ".WAV" a tutiplén. ;-)

Agradezco también la ayuda de toda la gente que se va sumando al Proyecto y aporta su pequeño granito de arena dando info sobre Juegos y su tipo de Carga, gente que trastea con los ".Wav" y está intentando crear Ficheros ".Tsx", etc, etc, etc.

¡Cualquier ayuda será bienvenida! ;-)

Gracias & Saludetes. ;-)

manolito74
Mensajes: 9
Registrado: 13 May 2017 14:59
Agradecimiento recibido: 2 veces

Re: Formato TZX para MSX

Mensajepor manolito74 » 11 Jun 2017 16:42

Hola:

Pues bien, vamos avanzando otro poquito más. Gracias a NataliaPC tenemos la versión 0.6 del makeTSX que incluye las siguientes características:

-Opción de hacer dump hexadecimal/ASCII [-c]

-Al generar un archivo TSX se generan automáticamente los siguientes bloques al inicio del fichero:

-- Bloque #30 con info sobre la versión de makeTSX que ha extraido este archivo.
-- Bloque #32 Archivo Info vacío para que al usuario le resulte más cómodo modificarlo para identificar la cinta.
-- Bloque #35 con la key MSXLOAD para indicar la instrucción de carga de la cinta (RUN/CLOAD/BLOAD), siempre que el primer bloque de datos sea un header MSX estandar.

-Al listar los bloques de un archivo TSX ahora se muestran las direcciones de inicio/final/ejecución de los bloques de datos #4B en caso de contar previamente con un header MSX que lo identifique como binario.

Gracias & Saludetes. ;-)

manolito74
Mensajes: 9
Registrado: 13 May 2017 14:59
Agradecimiento recibido: 2 veces

Re: Formato TZX para MSX

Mensajepor manolito74 » 24 Jul 2017 13:51

Hola de nuevo:

Pues nuestra compañera NataliaPc sigue imparable y nos ofrece una nueva versión del MakeTSX, la versión 0.7beta. Las novedades más importantes son:

- Modo predictivo
- Modo interactivo
- Mejora del reconocimiento de bloques 4B
- Modo verbose
- Lectura de WAVs PCM/Mono en 8 y 16 bits

Os facilito los enlaces directos a la descarga de las diferentes versiones:

makeTSXv0.7b_Linux64.zip --> http://www.SPAM!.com/download/file.php?id=5247

makeTSXv0.7b_Win64.zip --> http://www.SPAM!.com/download/file.php?id=5248

makeTSXv0.7b_Linux32.zip --> http://www.SPAM!.com/download/file.php?id=5246

Y esta es la dirección del Hilo en cuestión de la Web "Zona de Pruebas" donde se nuncia esta nueva versión:

http://www.SPAM!.com/viewtopic. ... &start=330

Gracias & Saludetes. ;-)

manolito74
Mensajes: 9
Registrado: 13 May 2017 14:59
Agradecimiento recibido: 2 veces

Re: Formato TZX para MSX

Mensajepor manolito74 » 24 Jul 2017 14:14

Hola de nuevo:

Se me olvidó comentar que ahora tenemos un Repositorio FTP donde vamos poniendo todos los ".TSX" que vamos creando. Estos son los Datos de Acceso:

host: opencomputer.ddns.net
user: msx
pass: msxtsx
port: 21

Si alguien más se anima a colaborar, ¡bienvenido será!

Gracias & saludetes. ;-)

manolito74
Mensajes: 9
Registrado: 13 May 2017 14:59
Agradecimiento recibido: 2 veces

Re: Formato TZX para MSX

Mensajepor manolito74 » 27 Jul 2017 15:23

Hola de nuevo:

Pues en estas fechas tan señaladas me es grato informaros de la siguiente noticia que nuestra compañera NataliaPC nos ha confirmado oficialmente hoy:

El Soporte para el Formato ".TSX" ¡ya está implementado y funcionando en el VRoBit!. Según informa Alberto, responsable del Proyecto, ya ha añadido el soporte para el Bloque 4Bh y ha ido cargando correctamente todos los TSX que se le han enviado, tanto los que solo contienen Bloques MSX Estándar (4Bh) como los que contienen bloques Turbo (10h).

Nota: Aclarar no obstante que pese a quel MakeTSX a día de hoy todavía no soporta Bloques Turbo NataliaPC sí que ha hecho alguna conversión de Juegos con Carga TURBO a ".TSX" pero de una forma un tanto artesanal (y usando otras Herramientas) a modo de prueba. ;-)

Así que desde aquí agradecer una vez más a NataliaPC todo su trabajo y sus gestiones y dar las gracias también a Alberto por "adoptarnos"... XD

Gracias & Saludetes. ;-)

manolito74
Mensajes: 9
Registrado: 13 May 2017 14:59
Agradecimiento recibido: 2 veces

Re: Formato TZX para MSX

Mensajepor manolito74 » 02 Ago 2017 03:36

Ya tenemos disponible la versión 0.8beta del Programa makeTSX y que incluye las siguientes mejoras:

- Normalización del audio antes del proceso de detección (se puede deshabilitar con -dn).
- Grabar el WAV una vez normalizado (wav_normalized.wav) para ver el resultado (-outn).
- Grabar el WAV una vez aplicado el filtro de envolventes (wav_envelopped.wav) para ver el resultado (-oute).
- Autodetección del baudrate en bloques #4B (ya no detecta solamente 1200 y 2400).
- Detección mejorada de Bloques #20 (Silencios) y su integración con otros bloques para optimizar el número de bloques total.
- Detección mejorada de Bloques #4B.
- Detección de Bloques #10 (lo que se vienen a llamar coloquialmente bloques Turbo en el mundo MSX).
- Detección de Bloques #12 (Pure tone) aunque pendiente de mejora.

Como veis ahora por fin el MakeTSX es capaz de detectar y trabajar con Bloques Turbo. ;-)

Podéis descargar el Programa aquí:

- Windows

- Linux 32 bits --> http://www.SPAM!.com/download/file.php?id=5251

- Linux 64 bits --> http://www.SPAM!.com/download/file.php?id=5252

También disponemos de un FTP en el que podéis subir las versiones de Ficheros ".TSX" que vayáis creando (tenéis que subirlas a la Carpeta "UpLoads"). Los datos de acceso al FTP son los siguientes:

host: opencomputer.ddns.net
user: anonymous
pass:
port: 21

Avatar de Usuario
Taburoto
Mensajes: 1193
Registrado: 15 Mar 2011 00:40
Agradecido : 11 veces
Agradecimiento recibido: 57 veces

Re: Formato TZX para MSX

Mensajepor Taburoto » 02 Ago 2017 11:57

Hola,necesito version para Win32 o Amiga Workbench 3.1 del programa,no tengo ningun ordenador con Linux y mucho menos Win64

Avatar de Usuario
elfoscuro
Mensajes: 1271
Registrado: 01 Jun 2012 20:46
Agradecimiento recibido: 26 veces
Contactar:

Re: Formato TZX para MSX

Mensajepor elfoscuro » 03 Ago 2017 11:04

¿Habéis conseguido ya que algún emulador lo incluya? Eso le daría un impulso bestial al tema...

Incluso podríais hacer algún fork si hay algún emu de código abierto... El caso es que el formato se pueda usar, y así convertirlo en el estándar en lugar del "pestoso" .CAS.

Un saludo.

Avatar de Usuario
carmeloco
Mensajes: 985
Registrado: 16 Dic 2015 08:56
Agradecido : 3 veces
Agradecimiento recibido: 72 veces

Re: Formato TZX para MSX

Mensajepor carmeloco » 03 Ago 2017 11:12

La dirección web de descarga, aparece como spam, con lo cual, no se puede descargar, y en la FTP no está.
[size=110]¿Quieres un ZX-Uno? puedes comprarlo en:
viewtopic.php?f=71&t=685

manolito74
Mensajes: 9
Registrado: 13 May 2017 14:59
Agradecimiento recibido: 2 veces

Re: Formato TZX para MSX

Mensajepor manolito74 » 03 Ago 2017 19:51

Hola:

@elfoscuro: en eso estamos. Ese es el gran paso que nos queda: conseguir que algún Emu nos "adopte"/dé Soporte al Formato ".TSX". Si alguien tiene contacto con alguno de los Desarroladores de EMUS o puede hacer algo al respecto pues se agradecerían enormemente las gestiones.

@carmeloco: Yo lo he descargado desde esos enlaces. El que te aparezca como "Spam" (como tú dices) no tendría porqué. Me temo que es configuración de tu Antivirus/Navegador. Prueba a usar otro Navegador para descargarlo a ver.

Igualmente necesitamos la máxima colaboración de gente para crear los ".TSX", colgarlos en el FTP, hacer pruebas, etc, etc, etc. -nb

Gracias & Saludetes. ;-)

Avatar de Usuario
inyigo
Mensajes: 21
Registrado: 19 Ago 2017 16:14
Ubicación: Barakaldo
Agradecido : 15 veces
Agradecimiento recibido: 3 veces

Re: Formato TZX para MSX

Mensajepor inyigo » 20 Ago 2017 14:33

manolito74 escribió:
Podéis descargar el Programa aquí:

- Windows --> http://www.SPAM!.com/download/file.php?id=5253

- Linux 32 bits --> http://www.SPAM!.com/download/file.php?id=5251

- Linux 64 bits --> http://www.SPAM!.com/download/file.php?id=5252

También disponemos de un FTP en el que podéis subir las versiones de Ficheros ".TSX" que vayáis creando (tenéis que subirlas a la Carpeta "UpLoads"). Los datos de acceso al FTP son los siguientes:

host: opencomputer.ddns.net
user: anonymous
pass:
port: 21


A mi también me aparece en la dirección lo de Spam!
-m3s3x -4mstr4d -sp3zy -cocbm1


Volver a “Software MSX”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado