Comodoro Script y la carga por audio en máquinas Commodore

Responder
Avatar de Usuario
desUBIKado
Mensajes: 1002
Registrado: 05 Ago 2016, 22:33

Comodoro Script y la carga por audio en máquinas Commodore

Mensaje por desUBIKado » 30 Dic 2020, 12:24

Hace poco he adquirido un Maxduino Slim a ManuFerHi, por lo que decidí cambiar el firmware de mi Miniduino de Antonio Villena, con carcasa de Mejias3D, e instalarle el firmware TapuinoOnTzxduino de rcmolina, y así realizar cargas por audio en los cores de máquinas Commodore del ZX-Uno a partir de ficheros .TAP. En caso de que no dispongáis de un Maxduino, TZXduino o TAPuino, siempre podréis realizar las cargas de los ficheros .TAP con algún programa, como puede ser la aplicación TapDancer para móviles android.


1.- Instalación del firmware TapuinoOnTzxduino en el Miniduino

miniduino.jpg
miniduino.jpg (43.84 KiB) Visto 2186 veces
Simplemente hay que bajarse el código desde aquí, y seguir las instrucciones que ya publiqué de como actualizar el firmware en mi Guia de Uso del Maxduino.

Las versiones del firmware pueden acabar en 0 o en 1. Las que acaban en 0 tienen parcheado el control del motor (entrada remote), y no aparece éste en los menús de opciones. Las que acaban en 1 son las que permiten manejar el control del motor (jack de 2.5mm en los TZXduinos / Maxduinos / TAPuinos que lo llevan, como el Maxduino Slim de ManuFerHi). Como mi modelo de miniduino no tiene entrada de remote usé la versión 280.

Ahora en el código lo único que hay que personalizar es decirle que tipo de pantalla usa el TZXduino y el idioma en que se quiere instalar el firmware. Eso se hace descomentando una serie de líneas en la pestaña config-user-h en el Arduino IDE. En concreto yo descomenté estas 5:

Código: Seleccionar todo

#define LCD_I2C_ADDR        0x27 // I2C address for the LCD

#define LCD_USE_SSD1306_OLED_MODULE
#define LCD_I2C_ADDR        0x3C // I2C address for the OLED
#define LCD_SSD1306_BIG_FONTS    // define this for ... bigger fonts...

#define TAPUINO_LANGUAGE_ES
Arduino IDE.png

Con eso cambiado, y conectando el conversor USB a RS232 al miniduino, solo toca realizar la subida del firmware.

A diferencia del firmware Maxduino que usa 5, el Tapuino solo utiliza 4 pulsadores, y solo es capaz de reproducir ficheros .TAP para las máquinas de 8 bits de Commodore, no siendo capaz de reproducir otro tipo de ficheros.



2.- Conseguir ficheros .TAP para dar de comer a los cores de máquinas Commodore

Yo no tengo máquinas reales de Commodore, pero sí varias FPGA. Puede comprobar que en los cores de Commodore 64 y Commodore 16/116/Plus4 de la Mistica FPGA16, los ficheros .TAP que me descargaba de internet y reproducía con el Miniduino funcionaban sin problemas, sin embargo en el ZX-Uno apenas lo hacían un 40%. Por otra parte las cargas eran bastante lentas.

Leyendo el artículo El TAPUINO, una alternativa al Datassette del Commodore 64 encontré la solución a esos problemas. Mediante el programa wav-prg se podían convertir ficheros .PRG, .P00 y .T64, fáciles de encontrar por internet, en ficheros .TAP con carga Turbo que luego podía reproducirlos en el miniduino. Esto me permitía solucionar los 2 principales problemas, aumentando la fiabilidad de carga casi al 100%, y reduciendo enormemente el tiempo de la misma.

Ahora lo que me faltaba es implementar una forma sencilla de realizar transformaciones masivas a .TAP de forma desatendida, y para eso he creado el script Comodoro.



3.- Conversiones masivas a .TAP con comodoro.sh

El script comodoro.sh es un programa para terminal de linux bash que permite la transformación automatizada y masiva de ficheros .PRG, .P00 y .T64 a .TAP para luego ser utilizados en máquinas Commodore de 8 bit. El script utiliza wine para ejecutar las versiones de línea de comandos para windows del programa wav-prg 4.2.1 y de la librería Audiotap 2.2. Tanto el script como los programas y librerías necesarios os los podéis descargar en este archivo:

comodoro+wav-prg.png
comodoro+wavprg-cmdline-4.2.1-win32.7z
(506.36 KiB) Descargado 151 veces


Y para ver como funciona lo mejor es que os lo explique en este vídeo:


phpBB [media]




4.- Carga por audio en los cores de Commodore 64, C16/C116/Plus4, VIC20 y PET 2001 en el ZX-Uno

La carga de disco en modo raw está implementada en los cores del C64 y C16 del ZX-Uno, pero es bastante incómodo tanto el crear la imagen para luego grabarla en una SD dedicada, como el encontrar el disco a base de ir acercándonos a ciegas, ver el contenido de un disco, e ir avanzando y retrocediendo hasta encontrar el disco que queremos cargar. Con el TAPuino añadir nuevos programas es algo tan sencillo como copiar los archivos .TAP a su tarjeta micro SD, y para reproducirlos solo tenemos que localizalos en el display y darle al botón de PLAY. Esto unido a que las cargas están en modo turbo, hace que la acción de cargar un juego de Commodore 64 o 16 pueda hacerse más rápido usando la carga por audio que con el sistema implementado de carga de discos.

Para los cores de VIC20 y PET2001 la única forma de cargar software es usando el audio. Lamentablemente para el PET2001 no se pueden generar los .TAP a velocidad turbo, por lo que aunque generalmente son programas más pequeños que los de sus máquinas hermanas, las cargas duran más que en estas.

Para ver como se pueden realizar las cargas también os he creado este otro vídeo:


phpBB [media]



NOTA: En mis pruebas detecté que en mis ZX-Uno no tenía instalada la última versión del core de VIC20 (la TEST 3b), que podéis descargar de aquí. Esta versión implementa la ampliación de memoria de 32K, y mejora la carga por audio (¡ahora cargas muchas más cintas!), pero en los modelos ZX GO+ el teclado de membrana no funciona si no se le conecta un teclado PS/2 externo. Esto último habrá que investigarlo para corregirlo.


5.- Extracción de .PRG desde dentro de ficheros .D64

A veces no encontramos el formato .PRG del programa que estamos buscando. En caso de que se encuentre dentro de un fichero .D64, y que solo use el disco como medio de carga, es decir, es un programa único y una vez cargado no accede al disco para nada más, una forma de extraerlo es usando el programa C1541 incluido en el emulador VICE, y sus comandos internos attach disco.D64 y extract. Podéis leer como hacerlo en este artículo.

Otra forma es utilizar el programa DirMaster que permite exportarlos, pero veo más rápida y sencilla la forma anterior.

Avatar de Usuario
Alki
Mensajes: 129
Registrado: 13 Sep 2016, 17:50

Re: Comodoro Script y la carga por audio en máquinas Commodore

Mensaje por Alki » 30 Dic 2020, 22:37

Tengo por ahi un tzxduino sin usar, a ver si le cambio el firm y lo pruebo..

Gracias por compartir tus conocimientos.

Responder