ZX Spectrum – Crear bloques turbo en TZX

En el post sobre carga turbo se explicó como crear una carga turbo para programas BASIC, usando la rutina nanodrive publicada en Microhobby. Como ya se explicó, si usamos ZXSpin nos grabará los bloques normales automáticamente, pero para grabar un bloque turbo necesitaremos usar las opciones Recording > Tape Recording > Start Recording.

Este método tiene un problema gordo y es que ZXSpin grabará literalmente lo que salga por MIC, generando un bloque de tipo “Direct Recording” que es bastante grande. Por otra parte, hay herramientas que convierten de audio a cinta y que también generan este tipo de bloques cuando no reconocen su cargador/velocidad.

En este post voy a explicar un método para crear bloques turbo más pequeños (vamos, del tamaño habitual en los TZX). Para ello necesitaremos algo que cree TZX (ZXSpin), una calculadora y el ZX Block Editor.

Lo primero de todo, algo de matemáticas. La rutina de grabación de la ROM del Spectrum graba a 1500 baudios, y la longitud del pulso que representa un 0 es de 855 (y la longitud del pulso que representa un 1 es el doble). Por tanto, x/1500=855 y aquí x representa la longitud en pulsos de un segundo. Despejando la x, nos encontramos que en un segundo hay 855*1500 pulsos (1282500 pulsos).

Por tanto, para una velocidad de 3850 baudios (la que coge por defecto nanodrive), nos encontraremos que el 0 nos dura 1282500/3850 pulsos (333.11, lo redondeamos a 333) y el 1 nos va a durar unos 666 pulsos.

Vale, ya sabemos las longitudes del 0 y del 1… ¿y qué hacemos ahora?

Lo primero de todo, grabamos nuestro programa a cinta. La diferencia es que cuando vayamos a grabar el bloque turbo no grabaremos mediante nanodrive, sino que haremos un SAVE … CODE normal.

Abrimos nuestro TZX con ZX Blockeditor. Ahí vemos que nuestro bloque CODE en realidad se compone de dos: uno llamado BYTES (esta es la cabecera) y otro llamado Standard data.

La cabecera nos sobra, así que marcamos el bloque BYTES y lo eliminamos con “Delete Block”.

Ahora marcamos el bloque Standard Data y vamos al menú Edit > Add Turbo Data. Se abre una ventana que contiene los datos de los distintos parámetros de grabación.

Cambiamos los valores de “0-bit pulse lenght” y “1-bit pulse length” a los valores que hemos calculado previamente y pulsamos Connect. Ahora debajo de nuestro “Standard data” hay un “Turbo data addition”, que lleva la información de la carga turbo.

Ahora que ya tenemos nuestro “nuevo” bloque turbo, grabamos el TZX y comprobamos que cargue correctamente. Para los que no quieran tirar de calculadora, incluyo esta tabla con los parámetros adecuados para las distintas velocidades de nanodrive:

Baudios: S: L: 0-bit: 1-bit:
2200 10 27 583 1166
2250 12 28,29 570 1140
2350 14 29,3 546 1091
2450 16 31 523 1047
2550 18 32 503 1006
2650 20 34 484 968
2750 22 35 466 933
2800 24 36 458 916
3000 26 38? 428 855
3050 28 39 420 841
3300 30 40 389 777
3450 32 41 372 743
3550 33 42 361 723
3650 34 43? 351 703
3850 36 44 333 666
4125 38 45? 311 622

Algunas notas a esta tabla:

  • El parámetro S solo se utiliza para grabar a cinta… si vas a alterar los ficheros TZX no necesitas saberlo.
  • La columna L se ha copiado literalmente de la tabla que se incluyó en el número 81 de Microhobby. No recomiendo usar las velocidades que tengan interrogantes o decimales, aunque si redondeas al entero más próximo podrías usarlo (nanodrive admite ligeras variaciones de velocidad a la hora de cargar).
  • He probado las velocidades de 2200, 3850 (por defecto en nanodrive) y 4125 baudios y el TZX generado funciona correctamente. De todas formas cuidadito que no todos los cassettes admitirán semejantes velocidades (aunque los emuladores tragan con todo).

Enlaces interesantes:

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s