Pues eso amig@s,

Como bien dice el título, ¿cómo podemos conectar un disco duro para cargar nuestros videojuegos y programas favoritos en nuestra Commodore 64?

Es posible, mediante la utilización de una controladora llamada IECATA donde su función es convertir las señales digitales que emite el disco duro y transformarlas en señales series para luego poder utilizarse y leerse en el puerto IEC de la Commodore 64.

Este proyecto se basa en el desarrollo de Asbjørn Djupdal, aunque he tenido que realizar varios cambios para poder hacerlo funcional y utilizable. Actualmente existen soluciones que permiten conectar un lector de tarjetas a la Commodore c64 y cargar las roms desde una sd (SDIEC). Pero yo buscaba una alternativa utilizando un disco duro y encontré la que en 2002 desarrolló Asbjørn como proyecto de fin de carrera (se puede encontrar la información en su página web).

Pedidos

Si no tenéis los conocimientos para construir la controladora o grabar el microcontrolador Atmel. Tengo en stock un número limitado de unidades que puedo construir. Si os interesa adquirir una, enviarme un email a info@arananet.net o a través de Twitter @edu_arana.

Funcionamiento

Proceso de construcción

Descripción

La versión original del IEC-ATA fue desarrollada por Asbjørn Djupdal, la versión del PCB utilizada en este proyecto ha sido desarrollada por József Novák. Si necesitas más información sobre el proyecto original, puedes dirigirte a la página web del autor original del IEC-ATA en http://www.djupdal.org/cbm/iecata/ o en el correo electrónico del autor original djupdal@idi.ntnu.no.

La versión en español de éste proyecto la puedes encontrar en mi blog:

http://arananet-net.kinja.com/como-construir…

Introducción

IEC-ATA es un controlador de disco duro para ser utilizado junto con el puerto IEC de Commodore. Permite a todos los ordenadores que disponen del puerto IEC (e.j VIC-20,C-64, C-128) utilizar un disco duro con conexión ATA (También llamados discos duros IDE). Características

Advertisement

• Soporta todos los discos duros ATA hasta 128 GB de tamaño. El disco duro debe disponer del modo LBA.

• Todo el disco duro se aprovecha en una sola partición.

• Soporta los comandos estándar del KERNEL de Commodore. Esto incluye varias implicaciones: Puede conectarse a todos los ordenadores que disponen del puerto IEC (VIC- 20, C-64, C-128).

Advertisement

• No requiere controlador para funcionar, el disco duro funciona como una unidad de diskettes.

• El puerto IEC es muy lento, haciendo que el disco duro sea lento. Pero es considerablemente más rápido que una unidad de diskettes 1541.

• El sistema de ficheros personalizado dispone de las siguientes características: Soporta los tipos de fichero PRG, y SEQ, y un nuevo tipo DIR que representa los subdirectorios. • Unidad de redireccionamiento pequeña: 512 bytes (un solo bloque lógico ATA).

• El tamaño máximo de cada fichero soportado es: 32 megabytes.

• El número máximo de directorios es: 256.

• El número máximo de subdirectorios: ilimitado.

Conexión entre la C64 y la controladora IECATA

Conectar la placa controladora IEC-ATA a la Commodore y al disco duro y encender el ordenador. Si la luz de Error no se enciende durante unos segundos, intentar resetear el ordenador. Si eso no ayuda, entonces existe algún tipo de error con el disco duro.

Advertisement

El disco duro utiliza el identificador 10 o superior (al contrario de la unidad 1541 que usualmente utiliza el 8), aunque como hemos comentado anteriormente, el disco duro se utiliza igual que una unidad 1541.

Los siguientes comandos son soportados por el IEC-ATA (a través del id 15):

- CD: Cambiar directorio

- CD<- Directorio superior

- CD/ Al directorio raíz

- MD: Crear subdirectorio

- RD: Borrar subdirectorios. El directorio debe estar vacio.

- S: Borrar ficheros

- R:= Renombrar ficheros

- N Formatear disco.

- I Inicializar disco (actualmente es ignorado por el IEC-ATA)

- UI+ or - Configura la velocidad del puerto IEC, + bajo para C64, - más rápido para VIC 20 - U0>+chr$(dev) - Configura el identificador de la unidad temporalmente. Se puede configurar desde el id 10 al 30. La sintaxis de estos comandos son los mismos que en el Commodore DOS. Donde pueden utilizarse atajos como (* y?). Cargar y guardar ficheros funciona de la misma manera que en una unidad 1541.

Advertisement

Nota: solo pueden crearse ficheros del tipo PRG y SEQ. Si leemos el canal de errores (canal 15) podremos encontrarnos con uno de estos códigos de error:

- 00: Sin error

- 74: Error al inicializar, el disco duro no tiene un sistema de ficheros compatible o válido.

- 25: Error al crear, fichero, directorio, etc.

- 61: Error al abrir, estás intentando acceder a un fichero que no puede ser abierto.

- 62: No se ha encontrado dato, el fichero o directorio no existe.

- 30: Error de sintaxis. - 73: Mensaje de la versión del IEC-ATA.

Comandos de ejemplo en la C64

Cargar un fichero desde el BASIC:

LOAD”nombredelfichero”,10

Guardar un fichero desde el BASIC:

SAVE”nombredelfichero”,10

Cargar el directorio raíz del disco duro:

LOAD”$”,10

Cambiarse de directorio:

OPEN1,10,15,”CD:midirectorio”:CLOSE1

Formatear el disco duro:

OPEN1,10,15,”N”:CLOSE1

Copia de contenido al disco duro IEC

Para poder copiar nuestros PRG’s al disco duro IEC es necesario tener instalado un sistema operativo Linux (por ejemplo Ubuntu) con opciones de desarrollo. Luego necesitamos compilar los programas iecata de la carpeta software/unix y software/unix/util. Para ello, debemos llevar a cabo las siguientes tareas:

Requisitos previos:

• Tener instalado Ubuntu 12 o superior.

• Tener un disco duro IDE y un puerto libre en la placa base de nuestro ordenador.

Advertisement

• Tener algunos ficheros de c64 en formato PRG o SEQ en una carpeta dentro de nuestro ubuntu. Para este ejemplo hemos creado la carpeta /c64roms y copiado algunos PRG’s dentro. (Nota: Los ficheros deben estar en MAYÚSCULAS y sin espacios en blanco)

Comenzamos:

1-Conectar el disco duro IDE a un puerto IDE de nuestro ordenador.

2-Arrancar el ordenador y desde un terminal ejecutar sudo fdisk -l para identificar el disco duro que utilizaremos como disco IEC.

3-Para este ejemplo utilizaremos el disco duro /dev/sdb

4-Descargamos el fichero del proyecto desde mi blog y lo descomprimimos.

5-Accedemos al directorio software/linux:

cd software/linux

6-Ejecutamos la instrucción make y dicha instrucción compilará y generará un programa con el nombre iecata. Luego entramos al directorio utils y realizamos la misma acción: make

Advertisement

7-Para ejecutar el programa iecata desde ubuntu y que éste pueda leer las particiones del disco, es necesario ejecutarlo con sudo y conocer la partición del disco duro que Ubuntu ha detectado: sudo ./iecata /dev/sdb

Al ejecutarlo nos aparecerá un prompt para indicar que operación necesitamos hacer. Pulsando a (de ayuda) nos mostrará una lista de comandos permitidos por el programa. Lo primero que debemos hacer es formatear el disco para que se cree la partición que contendrá los ficheros de nuestros videojuegos y programas.

Comando [a para ayuda]> format

Para comprobar que podemos leer la partición solo es necesario ejecutar el comando ls y si no devuelve ningún error, daremos por bueno el formateo. Luego procederemos a la carga de los ficheros, para ello, primero saldremos del programa con la tecla s .

Advertisement

Para cargar los ficheros al disco duro recién formateado, debemos acceder a la carpeta utils y realizar los siguientes pasos:

1-Comprobaremos y corregiremos cualquier error que exista en los nombres de los ficheros a subir al disco duro IEC, para ello he creado un script (prepararficheros.sh). Este script recibe como parámetro el directorio donde tenemos nuestros ficheros PRG o SEQ. Su función es cambiar los nombres de los ficheros (nombre y extensión) a mayúsculas y luego quitarle los espacios que existan en los nombres de dichos ficheros.

Ejemplo de uso con el directorio /c64roms: sudo ./prepararficheros.sh /c64roms

Una vez que termine de realizar todas sus tareas nos devolverá el prompt para continuar con el siguiente paso.

Advertisement

2-Para subir los ficheros al disco duro IEC utilizaremos otro script llamado (iecsubir.sh). Este script recibe como parámetro dos variables, la ruta a la partición del disco duro y el directorio donde tenemos las roms (en este ejemplo utilizaremos la ruta /c64roms).

Ejemplo: sudo ./iecsubir.sh /dev/sdb /c64roms

Si la operación ha salido correctamente, el script nos mostrará un mensaje “Fichero subido correctamente!” lo que nos confirma que el fichero se ha subido y grabado en la partición de nuestro disco duro IEC.

Advertisement

Una vez copiados los ficheros, apagaremos el ordenador, conectaremos el disco duro al puerto IDE de la controladora IEC-ATA, arrancaremos la C64 y solo nos quedará disfrutar de todos los videojuegos retro que hemos subido a nuestro disco duro .

Hardware

El controlador IEC-ATA contiene un microcontrolador AVR mega8515 con 32 kilobytes de memoria SRAM externa.

Advertisement

Es necesario disponer de una fuente de alimentación (por ejemplo de ordenador) para alimentar el disco duro (12v y 5v) y la controladora IEC-ATA (5v).

Flash

En el directorio flash_hex de este proyecto podrán encontrar el fichero para grabar en el ATMEGA8515. Existe una versión más actualizada pero aún no la he probado.

Esquema para crear el cable IECATA > C64

Descarga de los ficheros del proyecto y el diseño del PCB

Actualizado 22/06/2016: Se corrige la opción s (salir) porque no respondía.

https://mega.nz/#!Nx9FTYzA!sbi…

Alternativa:

http://bit.ly/1z2rnyb

Enlaces de interés

https://github.com/arananet/iecat… - Mi repositorio Github con los fuentes de los scripts que se utilizan en este proyecto.

www.PCBCART.com - Fabricante de placas PCB.

www.TME.com – Venta de componentes electrónicos online.

http://www.djupdal.org/cbm/iecata/ - La página original del IEC-ATA, por Asbjørn Djupdal.

Advertisement

http://www.dienstagstreff.de/de/hardware/ie… -Versión alternativa del IECATA llamada IECATA V2

Espero que les resulte útil.

Salu2.