¡Wenas! Lo teneis como siempre en el área de archivos, sección
utilidades. Ya se pueden grabar las imágenes de cinta en formato CAS
de nuevo sobre cinta, directamente con el MSX, sin necesidad de usar
el CAS2WAV de PC.
Bueno, antes de nada aclarar que aunque el nombre lo sugiera, CAS2TAPE
no es el complemento exacto de TAPE2CAS: las grabaciones que genera no
son idénticas a las cintas originales (aunque en ambos casos TAPE2CAS
obtendría de ellas exactamente la misma imagen CAS). Por ejemplo, las
imágenes sacadas de cintas turbo no las graba de nuevo en turbo, sino
en formato estándar. Esto puede parecer un problema, pero en realidad
es una ventaja: CAS2TAPE las puede grabar a 1200 baudios (más lentas
que el original), pero también a 1800 (cargan en el mismo tiempo y con
fiabilidad parecida) o incluso a 3500 (¡casi el doble de rápidas que
el original!). Y si el original no era turbo, la ventaja es aún mayor.
Al final no he podido llegar hasta los 5400 baudios como tenía
previsto, sólo hasta 3500. El caso es que grabar, se podía grabar
perfectamente a esa velocidad e incluso más rápido (en cinta la
calidad no era suficiente, pero en wav o CD seguro que sí). El
problema era luego la rutina de carga estándar del MSX, que por su
propia programación resulta incapaz de leer correctamente a más de
3500-3600 baudios. Y como los programas en imagen CAS, por definición,
están obligados a usar esa rutina de la rom y no una propia en plan
Waver, no quedaba más remedio que ceñirse a sus limitaciones :-( En
principio veo dos posibilidades para lograr velocidades de carga
mayores:
- Usar Waver, por supuesto ;-) Pero entonces no valen imágenes
directas de cinta, hay que tener el programa en fichero ROM, y pasar
de un formato a otro es tarea artesanal y compleja.
- En los turbo R (que gracias al modo DRAM permiten "parchear" la rom
del sistema), mejorar el TRCAS para que no ponga las rutinas estándar
de cassete del MSX sino otras más optimizadas, que incluso podrían
aprovechar el R800.
Otra cosa que puede resultar llamativa, es la extraña distribución de
las velocidades soportadas por CAS2TAPE. En principio pensaba ponerlas
cada 600 baudios (1200, 1800, 2400, 3000...) pero de nuevo las
"particularidades" de la rutina estándar me obligaron a cambiar de
planes. Descubrí que en un amplio rango alrededor de los 3000 baudios,
resulta imposible que reconozca las cabeceras de los bloques, por muy
bien que estén grabadas :-/ Así que al final escogí estas
velocidades, que además de seguir una cierta lógica (velocidades
estándar / + 33% / + 50%) minimizan las posibilidades de error de
carga (!!) tal como explico más abajo...
En conclusión: bueno, he podido comprobar que contando con una buena
cinta y con un lector de los que filtran la señal (ni siquiera un
Bitcorder, el mío es uno de esos "sin marca" que vendía Rafa Corrales
), los fallos de carga a velocidades de pocos miles de baudios se
deben mucho más a los problemas de la rutina estándar del MSX que a la
propia calidad del sonido. En concreto, lo que falla es la rutina que
reconoce las cabeceras y determina su velocidad, que hay ciertas
frecuencias que no logra medirlas con exactitud. Como esa medida se
usa después para interpretar los bits de datos, cuáles son 0 y cuáles
son 1, cuanto más error tenga más probabilidad hay de malinterpretar
alguno. Además, se da un efecto bastante curioso: a medida que la
velocidad sube, el error en la medición también aumenta, pero no de
manera contínua sino en plan "dientes de sierra" algo irregulares.
Ocurre entonces, que hay un par de "valles" especialmente pronunciados
en los 1600 y los 3200 baudios, donde el error de medición baja hasta
valores similares a los de 1200 y 2400 baudios, respectivamente. En
otras palabras: a 1600 y 3200 baudios, la probabilidad de errores es
prácticamente la misma que a las velocidades estándar... pero la carga
es un 33% más rápida ;-)