Cómo modificar el contenido de la distribución +3DOS para ZX-Uno

El pasado 15 de octubre publiqué la imagen de una distribución para ZX-Uno que usaba el sistema de ficheros +3DOS. En este artículo voy a comentar las herramientas con las que se puede modificar, extraer o añadir material a esta distribución. Como yo trabajo con linux los scripts de mi cosecha los he hecho en bash, sin embargo las herramientas que usan pueden ejecutarse en Windows y linux.

Si tenéis el fichero 2020-10-15_ZX-Uno_Spectrum+3e.img dentro de una carpeta, deberéis descargar el siguiente fichero y descomprimir su contenido en esa misma carpeta.

DISTIBUCION +3DOS – Tools

El siguiente paso para trabajar con la imagen es renombrar el fichero 2020-10-15_ZX-Uno_Spectrum+3e.img a spectrum.vhd

 

STROWSAW y 3E.EXE

Estas son las herramientas fundamentales para trabajar con la imagen de la distribución. Aunque ya las he incluido en el archivo que habéis descargado, las podéis encontrar también en esta página.

El 3E.EXE es un programa Win32 de consola realizado por mcleod_ideafix, y que permite manipular el contenido de una imagen que contenga un sistema de ficheros +3DOS. El programa Strowsaw es un simple GUI para win32 que permite usar de forma gráfica todas las opciones del programa anterior. Tanto uno como otro pueden ejecutarse en linux con wine.

Además, si ejecutáis el programa Strowsaw en Windows con permisos de administrador, podéis también trabajar directamente con el contenido de la tarjeta SD física sin necesidad de usar un fichero raw.

En el programa Strowsaw para poder trabajar con la imagen de la distribución deberéis abrirla con FILE >> Open hard disc image, y en tipo de archivo seleccionar All files (*.*), para así poder visualizar el archivo spectrum.vhd .

Las operaciones que se pueden hacer con este programa son:

  • Puede mostrar archivos sin extraerlos, como código BASIC (si es del tipo «Programa»), o como volcado hexadecimal (para archivos binarios). La fuente Zx Spectrum se puede utilizar para la visualización.
  • Extrae automáticamente todos los archivos cargados en una partición (cargados en un HDF o un dispositivo físico).
  • Extrae automáticamente todos los archivos en un disco (HDF o dispositivo físico), reproduciendo la estructura de partición original como un árbol de carpetas de Windows.
  • Extrae uno o más archivos y los guarda directamente en un archivo TAP (nuevo o existente).
  • Extrae uno o más archivos sin el encabezado + 3DOS, si está presente en su partición.
  • Coloca más archivos a la vez en una partición.

El programa 3E.EXE puede también usarse para manipular el contenido de la imagen, aunque es más útil para procesos batch. Para ver todos los comandos que soporta simplemente ejecutarlo desde una consola de windows sin parámetros, y saldrá la ayuda. Si no sabéis usar la consola de windows podéis consultar este artículo.

 

Scripts en bash y las cpmtools

Para poder manipular el contenido de la imagen he creado una serie de scripts para ser ejecutados en linux, y que son:

  • makefolders_doc.sh: Crea una subcarpeta llamada DOC, y dentro todas las carpetas de la imagen para poder meter en ellas la documentación necesaria.
  • makefolders.sh: Crea una subcarpeta llamada SD, y dentro todas las carpetas de la imagen para poder meter en ellas los archivos que se extraigan de la imagen de la distribución
  • get_partitions.sh: Extrae a la carpeta SD todos los archivos de de la imagen, excepto los de las particiones CP/M y SOFTWARE (software de CP/M)
  • get_cpm.sh: Extrae a la carpeta SD todos los archivos de de la imagen de las particiones CP/M y SOFTWARE (software de CP/M), y los organiza en subcarpetas según su número de usuario.
  • put_partitions.sh: Copia de la carpeta SD a la imagen los archivos de las carpetas que no son de CP/M.
  • put_cpm.sh: Copia de la carpeta SD a la imagen los archivos de las carpetas que contienen software de CP/M.

Los programas 3E.EXE y Strowsaw trabajan muy bien con el sistema de archivos +3DOS, pero no son capaces de trabajar con los usuarios de CP/M, por lo que para trabajar con las particiones CP/M y SOFTWARE es necesario que tengáis instalado en vuestro sistema, windows o linux, las cpmtools.

En las cpmtools viene un archivo diskdefs con las definiciones de los tipos de discos más empleados en sistemas CP/M. Este archivo dependiendo de si usáis las cpmtools desde windows o linux (instaladas desde vuestra distribución de linux o compiladas desde los fuentes), puede encontrarse en sitios diferentes. Debéis localizarlo y sustituirlo por el que yo os proporciono, y al que le he incluido las definiciones de disco para poder trabajar con esta distribución, y también con la imagen Multicomp FPGA – CP/M Demo Disk, que se usa con el core de máquina CP/M Multicomp, que también está disponible para el ZX-Uno.

#######################################################
## Definiciones de tipos de discos para trabajar con ##
## las cpmtools                                      ##
#######################################################

## este archivo suele estar normalmente en alguna de estas 
## carpetas;

## /usr/local/share
## /usr/share/cpmtools

### definiciones para trabajar con la imagen de disco de 1GB
### de distribución ZX-Uno Workbench +3e

diskdef 3e-c
  seclen 512
  tracks 256
  sectrk 128
  blocksize 8192
  maxdir 512
  skew 1
  boottrk 1
  os 3
end

diskdef 3e-d
  seclen 512
  tracks 256
  sectrk 128
  blocksize 8192
  maxdir 512
  skew 1
  boottrk 1
  os 3
  offset 16M
end

#### FIN ##############  +3e ########### FIN #########

### definiciones para trabajar con la imagen de disco cpm
### de Multicomp FPGA - CP/M Demo Disk

diskdef hd0
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  skew 1
  boottrk 1
  os 2.2
end

diskdef hd1
  seclen 512
  tracks 1024
  sectrk 32
  blocksize 4096
  maxdir 512
  skew 1
  boottrk 1
  os 2.2
end

diskdef hd2
  seclen 512
  tracks 1536
  sectrk 32
  blocksize 4096
  maxdir 512
  skew 1
  boottrk 1
  os 2.2
end

diskdef hd3
  seclen 512
  tracks 2048
  sectrk 32
  blocksize 4096
  maxdir 512
  skew 1
  boottrk 1
  os 2.2
end

diskdef hd4
  seclen 512
  tracks 2560
  sectrk 32
  blocksize 4096
  maxdir 512
  skew 1
  boottrk 1
  os 2.2
end

###### FIN ######  Multicomp  ####### FIN ###########

SETUPIMG.BAS

En la partición sistema de la distribución, que corresponde a la unidad C: trás arrancar en el ZX-Uno, se encuentra el programa BASIC SETUPIMG.BAS que lo que hace, si lo cargáis y ejecutáis, es formatear toda la imagen para poder usar hasta 101 particiones (la primera para control del sistema de archivos + 100 libres para el usuario), perdiéndose todo el contenido que hubiese grabado en ella, y creando las 70 particiones de usuario que usa la distribución, dejando 30 libres para un posterior uso.

Este programa es una modificación al que ya existe en el Workbench +3e 2.1, pero modificando el tamaño de las particiones para que entren en una imagen que se pueda grabar en una tarjeta SD de solo 1 GB.

 

Adaptar programas para su uso con el sistema de ficheros +3DOS

A los juegos que ya venían en el Workbench +3e v.2.1 he añadido estos otros más recientes:

NOMBRE DEL JUEGO                           FICHERO                        PARTICION                      
-----------------------------------------------------------------------------------
Alien Girl 48K                             ALIENGIR.BAS                   M_A                            
Alien Neo Plasma                           ANP                            M_A                            
Automated Cave Explorer                    ACE                            M_A                            
Batboy                                     BATBOY.BAS                     M_B                            
Black and White                            BLACKW.BAS                     M_B                            
BlockZ                                     BLOCKZ.BAS                     M_B                            
Bonnie and Clyde                           BONNIE                         M_B                            
Cocoa and the time machine                 COCOA.BAS                      M_C                            
Coloco                                     COLOCO.BAS                     M_C                            
Coloristic                                 COLORISTIC                     M_C                            
Danterrifik                                DANTE                          M_D                            
DRIFT!                                     DRIFT.BAS                      M_D                            
Dungeons of Gomilandia                     GOMILAN                        M_D                            
Gluf                                       GLUF                           M_G                            
Las aventuras de Rudolphine Rur            RUR1.BAS                       M_L                            
Las aventuras de Rudolphine Rur            RUR2.BAS                       M_L                            
Last train to Tranz-Central (demo)         LTRAIN.BAS                     M_L                            
Los tesoros perdidos de Tulum              TULUMES.BAS                    M_L                            
Magenta Jim                                MAGENTA.BAS                    M_M                            
Manic Pietro                               MPIETRO                        M_M                            
Moritz on the Autobahn                     AUTOBAHN.BAS                   M_M                            
Nosy                                       NOSY.BAS                       M_N                            
Puta Mili                                  PUTAMILI.BAS                   M_P                            
Red Shift                                  REDSHIFT.BAS                   M_R                            
Reverse Pong                               REVERSE.BAS                    M_R                            
Sofia II                                   SOFIA2.BAS                     M_S                            
Space Monsters meet the hardy              HARDY.BAS                      M_S                            
Spider Mami                                SPIDER                         M_S                            
Springbot Mars Attack!                     SPRINGB                        M_S                            
Super mario Bros Covid19                   SMARIO19.BAS                   M_S                            
The Curse of Trasmoz                       TRASMOZ.BAS                    M_T                            
Tiki Taca                                  TIKITACA                       M_T                            
Trace It!                                  TRACEIT.BAS                    M_T                            
Valley of Rains                            VALRAINS                       M_V                            
Vampire Vengeance                          VAMPIREV.BAS                   M_V                            
Wudang                                     WUDANG.BAS                     M_W                            
Yazzie                                     YAZZIE.BAS                     M_Y                            
ZX Larry                                   ZXLARRY.BAS                    M_Z                            
Devil's Quest                              DEVILSQ.BAS                    OCTOCOM                        
Jetpac RX                                  JETPACRX                       MODDING

Para pasarlos al formato +3DOS, generalmente partiendo de un fichero .TAP, he utilizado las siguientes herramientas:

Con la primera se puede convertir el contenido de un TAP a DSK, y tiene una efectividad del 60%. Esta es la herramienta más adecuada.

Con la segunda hay que partir de un snapshot .Z80 para convertirlo a un archivo .DSK. Aunque funciona muy bien, y la efectividad es superior al 90%, luego los juegos así convertidos tardan muchísimo en cargar, a veces hasta 30 segundos, por lo que no es muy aconsejable. Por este motivo he preferido, antes que usar este sistema de carga, el crear un cargador BASIC que presente la pantalla de carga, y que luego ejecute la sentencia SPECTRUM para cargar un snapshot .SNA. De esta forma se puede cargar un juego 128K en apenas 5 o 6 segundos.

Para pasar los ficheros contenidos en los archivos .DSK a la imagen de la distribución, generalmente he usado el core de Spectrum en la Mistica FPGA16 que me permite cargar los .DSK en la unidad A:, y luego los he copiado a la partición que les correspondía usando las correspondientes sentencias BASIC. También es posible usar utilidades que permiten extraer los ficheros de una imagen .DSK al disco duro, como la HCDisk 2.0, y luego usar la Strowsaw para copiarlos.

 

Epílogo

Con todas estas indicaciones ya no tenéis escusa para no personalizar la distribución +3DOS para el ZX-Uno a vuestro gusto.

Esta entrada fue publicada en ZX-Uno y etiquetada , , . Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *