Este mes vamos a pasar nuestros discos de Spectrum, tanto de
3" como de 3"1/2, a formato DSK para poder usarlos con un emulador
o distribuirlos por medios digitales al resto de usuarios interesados, en lo que
será la segunda y última entrega del análisis que hemos
hecho al conjunto de utilidades que componen las CPDTOOLS.
Como complemento a todo esto explicaremos, con un ejemplo sencillo
de comprender, cómo pasar un juego de cinta a disco. Esto vamos a hacerlo
en un emulador de Spectrum corriendo sobre PC, pero es totalmente aplicable
a un Spectrum real.
CONFIGURANDO CPDREAD
La instalación de las CPDTOOLS ya la abordamos en el anterior número
de Magazine ZX, por lo cual vamos a pasar directamente a la parte
práctica.
Lo primero que tenemos que hacer es abrir con un editor de textos el
archivo CPDREAD.CFG y mirar si tenemos las
opciones adecuadas seleccionadas.
Aunque muchos de estos parámetros los podemos introducir por la línea de
comandos, lo ideal es tener el archivo adecuado a nuestras necesidades.
En este archivo encontraremos una corta y sencilla serie de opciones
que, pese a que se pueden dejar prácticamente como vienen, vamos a recorrer
someramente para que podamos hacer nuestras variaciones si lo deseamos.
- #tracks
Como su nombre indica es el número de pistas a leer del
disquete, de momento podemos dejarlo como está, con valor 80.
- #drive
La letra a la que está asignada nuestra unidad de disco
de donde vamos a leer. Si lo hacemos de un disco de 3" 1/2 lo normal
es que esté configurado como 'A', y si tenemos acoplada una unidad de 3"
a nuestro PC, lo más lógico es tenerla como 'B'. Ponemos la letra
que se corresponda con la unidad que queremos leer y ya está.
- #sides
El número de caras que tiene el disco. Lo podemos dejar tal cual.
- #step
Aquí se indica el número de 'tracks' que tiene que saltar el
programa por cada lectura de la disquetera. Por defecto viene con un valor
de '1', pero si vamos a leer desde la disquetera de 3", debemos
cambiarlo por '2'. De lo contrario no saldrá el DSK correctamente.
- #mediatype
El tipo de disquetera desde el que vamos a leer.
Por defecto tiene el tipo '2' seleccionado, y con ése nos bastará tanto
si es para la disquetera de 3" 1/2 cómo para la de 3". En el mismo
archivo vienen el listado de disqueteras soportadas más la
opción correspondiente que debemos poner.
Una vez configurado el archivo, salimos del editor grabando los cambios y
ya tenemos el CPDREAD listo para su uso.
CREANDO NUESTRO DSK
Ahora viene la hora de crear nuestro primer DSK, tarea muy sencilla
gracias a la cual podemos disponer de una copia de seguridad de
nuestros discos originales de Spectrum, o compartirlos mediante web
o email con nuestros colegas; siempre en caso de que la casa propietaria de
los derechos del juego no haya denegado su libre distribución y, valga como
ejemplo de esto último, desarrolladores y distribuidores tales como
Ultimate, Capcom, etc. De esto os podéis informar en
WOS.
Como lo más normal es querer hacer la imagen de un disco de 3",
adecuamos nuestro archivo de configuración a esta característica como
indicamos en el paso anterior. Una vez hecho esto, deberemos arrancar
nuestro PC en modo MS-DOS o bien utilizar un disco de arranque como
indicábamos en la entrega del mes pasado. Introducimos el disco en
la unidad de 3" conectada al PC y tecleamos:
CPDREAD.EXE midisco.dsk y pulsamos INTRO.
(Por supuesto en el directorio donde tengamos almacenado el programa, que
bien puede ser 'C:/CPDTOOLS').
Después de unos segundos, y si nada falla, tendremos un archivo llamado
'midisco.dsk' con el contenido del disco por la cara correspondiente.
Para hacer la copia del segundo lado del disco le damos la vuelta,
cambiamos el nombre del archivo, por ejemplo 'midisco_b.dsk' y
ejecutamos la orden de nuevo.
Podemos encontrarnos con el caso de querer hacer un DSK de un
disco de 3"1/2, grabado como si tuviese dos caras. Nada más sencillo.
Volvemos a configurar el CPDREAD.CFG con las opciones idóneas y tecleamos:
CPDREAD.EXE midisco.dsk para la cara 'A' y
CPDREAD.EXE midisco.dsk S para la cara 'B',
nótese la 'S' que indica al programa que lea de la cara 'B'.
Si no queremos modificar el archivo de configuración, podemos pasarle al
programa los parámetros mediante la línea de comandos, por ejemplo:
CPDREAD.EXE midisco.dsk [tracks] [drive]
En el cual le indicaremos el disco desde el que queremos leer
de la misma manera que lo haríamos en el archivo de configuración. Esto
queda a nuestra elección.
El programa, en caso de que no le pasemos ninguna opción por línea de comandos,
las lee del archivo CFG, con lo cual prevalecen las primeras sobre las segundas.
CONCLUSIONES
El conjunto de herramientas que comprende el paquete CPDTOOLS nos va a ser muy
útil para preservar nuestros discos o crearlos y, unido esto a la posibilidad de
tener una disquetera de 3"1/2 conectada a nuestro Spectrum +3, se abre un
amplio abanico de posibilidades.
Como habéis podido comprobar, tanto grabar como leer discos es muy sencillo,
y únicamente nos encontramos con un pero bastante importante, que sólo funcione
con MS-DOS como sistema operativo, que actualmente está obsoleto y poca gente lo
tiene instalado en su PC. La falta de versiones para Linux o Windows le resta
bastantes enteros.
Aún así es un pack de utilidades imprescindible si queremos tener una
experiencia sensacional con nuestro Spectrum +3.
PASANDO UN JUEGO DE CINTA A DISCO
Cuando adquirimos un Spectrum +3, el principal motivo por el que lo
hacemos es para evitar los largos tiempos de espera y los errores en la
carga de los programas desde un soporte como es la cinta de cassette,
poco fiable y que depende de varios parámetros para su correcta carga,
como pueden ser el volumen, la colocación de la cabeza lectora del reproductor
de audio mediante el azimut (ese tornillito pequeño que tenemos que
girar para hacer subir o bajar la cabeza lectora respecto de la cinta),
o el estado de la cinta misma (y la suerte, por qué no decirlo).
A partir del lanzamiento de este modelo muchas empresas creadoras de software
sacaron sus productos tanto en cinta de cassette como en disco
de 3". Pero el software anterior, salvo contados packs recopilatorios, no lo
tenemos disponible en disco.
Este es el motivo de la creación de este artículo: pasar nuestros juegos
preferidos de cinta a disco.
ALGUNAS CONSIDERACIONES PREVIAS
Los programas almacenados en cinta de cassette, en muchos casos, estaban puestos
a salvo de la piratería y la copia indiscriminada con diferentes sistemas de
protección por software. Carga turbo, eliminación de las cabeceras de información,
grabación de la pantalla, basic y código máquina como un solo bloque, y un
largo etcétera.
Este texto no pretende ser un manual de cómo desproteger programas, con lo que,
en esta ocasión, nos vamos a limitar a los que utilizaban la rutina de carga de la ROM
con los comandos típicos del BASIC: 'LOAD' y 'SAVE'.
Antes de decidirnos a pasar un programa a disco, debemos asegurarnos de que
mantiene compatibilidad con el Spectrum +3. Varios juegos no funcionan en este modelo
de Amstrad o hay que modificarlos para que lo hagan. Por lo cual la mejor manera
de asegurarse si nos van a funcionar es cargándolos en el mismo, bien sea un
TZX o TAP en el emulador o la cinta original en el +3.
Por comodidad, en vez de trabajar sobre la máquina real, lo haremos sobre
un emulador. En concreto vamos a usar FUSE para Linux, ya que es el que el
autor usa habitualmente. No obstante, resulta válido cualquier otro que soporte
el uso de archivos DSK, como imágenes de disco, y TZX o TAP como cintas, en
cualquier plataforma o sistema operativo (MS-DOS, Windows, etc.). Incluso
se puede seguir el artículo trabajando directamente el +3 (eso sí, las cargas
de cinta se harán más tediosas).
INFORMÁNDONOS DE CÓMO ESTA GRABADO UN PROGRAMA
Los programas grabados con los comandos habituales del basic 'LOAD' y 'SAVE'
tienen un esquema estándar. Cuando ejecutamos el SAVE "programa"
LINE 10, primero se graba una cabecera con la información que necesita la rutina
de la ROM para cargar el bloque de datos, y después el bloque de datos propiamente
dicho. Para pasar el programa a disco, necesitamos saber la información exacta, y ésta
se puede conseguir con un programa lector de cabeceras. Podemos bajarnos un programa que
publicó Microhobby en el número 2 con el nombre de 'Listador de cintas', que cumplirá
con las funciones requeridas perfectamente, de la web
KyENTER.
Está grabado en un TAP gracias al webmaster de la misma y nos va a ser de
muchísima utilidad.
|
Imagen 1. El listador de cintas en
funcionamiento
|
Vamos a elegir un clásico para pasar a disco, como es el Manic Miner. Es un juego
muy sencillo de grabar en disco siguiendo las indicaciones aquí dadas.
Comenzamos por abrir nuestro emulador y quitar la opción de auto-carga de
cintas en caso de que la tuviésemos. Debemos elegir al Spectrum +3 como modelo
de hardware que queremos emular.
Abrimos el archivo del 'Listador de cintas' en el emulador y pasamos al BASIC con el
menú del +3. Una vez en él tecleamos LOAD "T:" y ENTER,
con esto conseguimos que el +3 mande las ordenes de carga a la cinta de cassette y no
a la unidad de disco que es a donde van por defecto en este modelo. Tecleamos en esta
ocasión
LOAD "" y cargaremos el listador en memoria. Una vez cargado,
nos saldrá una pantalla azul que nos pregunta por el nombre de la cinta,
podemos ponerlo o simplemente dar ENTER, esta información vale realmente para poco;
una pregunta similar nos hará respecto a la cara de la cinta y tiene el mismo valor que
la anterior. Antes de pulsar ENTER de nuevo, abrimos el archivo TAP o TZX del que
queremos sacar la información, en nuestro caso el que lleva el juego Manic Miner,
que hemos bajado de WOS.
Pulsamos ENTER y al cabo de un par de segundos nos saldrá una pantalla como la
de la Figura 1 con parte de la información que necesitamos.
Podemos ver que el Manic Miner está grabado con tres bloques de datos:
- BASIC con nombre 'MANICMINER' que se autoejecuta en la línea 1 y tiene una
longitud de 142 bytes.
- Bytes con nombre 'mm1' que comienza en la dirección 22784 y tiene una longitud
de 256 bytes.
- Bytes con nombre 'mm2' con comienzo en 32768 y una longitud de 32879 bytes.
MODIFICANDO EL CARGADOR BASIC PARA EL +3
Con esta información ya podemos pasar el programa a disco, pero antes tenemos que
modificar el cargador BASIC para adecuarlo a nuestro +3.
Reiniciamos el Spectrum (el emulador en este caso) y, desde el BASIC, volvemos
a teclear LOAD "T:" y ENTER,
y a continuación MERGE "". Así cargaremos
en memoria el cargador del Manic Miner, sin que llegue a ejecutarse
gracias al MERGE. Miramos el listado BASIC (que tenemos en la
Figura 2) del mismo y es importante que tomemos nota de
dos cosas: la dirección del CLEAR y la del USR, que en nuestro caso vienen a
ser 24310 para el CLEAR y 33792 para el USR. La primera dirección nos indica el lugar
donde colocamos el RAMPTOP para que el BASIC no machaque la información y la
PILA del ordenador, y la segunda nos indica la dirección de arranque del programa
en código máquina.
|
Figura 2. Cargador BASIC del Manic Miner |
Cuando cargamos un programa de cinta no es necesario indicar el nombre de los
bloques que se van a cargar, ya que se supone que van grabados secuencialmente en el
mismo orden
que los vamos a cargar. Esto no pasa con el +3 y la unidad de disco, debemos indicarle
exactamente cómo se llaman los diferentes bloques, en caso contrario no sabría
localizarlos. Los nombres que podemos dar a los diferentes archivos en la unidad
de disco cambia respecto a como estamos acostumbrados a hacerlo en cinta. En
disco se pueden nombrar con el formato de 8+3, es decir, ocho caracteres para el
nombre, seguidos de un punto, y tres caracteres para la extensión que nos
indique de que tipo de datos está compuesto el archivo. Por ejemplo "manic.bas"
para el cargador basic del Manic Miner, "manic.scr" para la pantalla de
carga, "manic.bin" para el bloque de datos y código máquina. En cambio, a la hora
de nombrar programas en cinta se pueden emplear hasta un total de 10 caracteres,
sin extensiones, a nuestra entera disposición.
Con el cargador en memoria tenemos dos opciones, modificar el que tiene el
juego original o crear uno nuevo. En este caso simplemente vamos a poner los nombres
que deseamos en las órdenes LOAD; los mismos con los que vamos a grabar los bloques
posteriormente a disco. El cargador debe quedar como en la Figura
3.
Veréis que tiene los comandos tecleados de una forma un tanto especial, con
instrucciones tales como VAL, PI, etc. Esto es así para que el programa BASIC ocupe
menos
en memoria.
|
Figura 3. Cargador para la versión en disco
|
GRABANDO EL PROGRAMA EN EL DISCO
Al hablar de disco, nos referimos indistintamente a un archivo DSK cargado en el
emulador
(para lo cual debemos conseguir un DSK en blanco) o bien un disco virgen en el +3.
Para el emulador, podemos coger el archivo 180k.dsk que viene con las CPDTOOLS y
hacer una copia con otro nombre.
Abrimos el DSK (vacío) en el emulador y empezamos a grabar los diferentes bloques.
El cargador BASIC lo tenemos en memoria, por lo cual tecleamos SAVE
"manic.bas" LINE 10 y pulsamos ENTER. Esperamos unos segundos, y estará grabado
en el disco. Los dos bloques de datos deberemos cargarlos ya que no lo hicimos antes.
Ejecutamos CLEAR 3E4 y ENTER, por ejemplo, para evitar que
se nos
corrompa el bloque que vamos a cargar en 32768 y a continuación
LOAD "" CODE: SAVE "manic.scr" CODE 22784,256 y pulsamos
ENTER. Con esto cargamos de cinta y despues grabamos a disco
el primero de los bloques. Con el segundo hacemos algo
similar: LOAD "" CODE: SAVE "manic.bin" CODE 32768,32768 y
ENTER. Ya tenemos el programa grabado en disco. Para comprobarlo hacemos
CAT y ENTER y debería salirnos algo similar a lo mostrado
en la Figura 4.
|
Figura 4. Listado del disco que acabamos de
hacer
|
Ya tenemos el Manic Miner listo para ser cargado en segundos en nuestro +3.
Reseteamos el emulador y tecleamos LOAD "manic.bas" y ENTER.
Al cabo de unos segundos, y si seguimos el proceso aquí explicado, tendremos el juego
cargado y listo para pegarnos unas partiditas.
|
Figura 5. Manic Miner pasado a disco |
CONCLUSIONES
Por supuesto, todo esto que acabamos de realizar lo podemos hacer sobre un +3
real, utilizando cintas y discos reales, etc., con el inconveniente del tiempo de
carga. El emulador nos facilita enormemente esta tarea y, además, no olvidemos que
podemos
grabar el archivo DSK generado a un disco de 3" o 3"1/2 como explicábamos en esta
misma sección el mes pasado.