Emulador real de la unidad 1541 mediante Raspberry Pi – PI1541 para Commodore 64 – 128

La unidad de disco Commodore 1541 contiene en su interior  CPU, ROM, RAM, dispositivos IO y la mecánica de la unidad por lo que es una computadora en si misma. Debido a la popularidad de las máquinas Commodore y la consiguiente proliferación de software creado para ellas, se desarrollaron todo tipo de exóticos cargadores rápidos y esquemas de protección contra copias. Como consecuencia la solución de tarjeta SD  de ciclo exacto ha tardado más que otros sistemas en llegar a buen término.

¿En qué se diferencia Pi1541 de SD2IEC?

A diferencia de SD2IEC, Pi1541 emula un 6502 y los dos 6522. Cualquier código que se le pida que ejecute se ejecuta en un ciclo exacto. SD2IEC admite un conjunto limitado de cargadores rápidos al intentar adivinar el cargador rápido a partir del código que se le envía. SD2IEC no ejecutará ni puede ejecutar el código, simplemente simula los protocolos de comunicación. Como consecuencia, solo se admite una pequeña cantidad de cargadores rápidos populares. Como Pi1541 puede ejecutar código en su núcleo 6502 emulado, admite una amplia gama de cargadores rápidos (juegos y escenas de demostración), incluso originales protegidos contra copia.

Antecedentes

Preparación

Para usar Pi1541, necesitará una Raspberry Pi 3B (o 3B +), una tarjeta SD, un cable, firmware gratuito de la Raspberry Pi Foundation y un archivo ROM Commodore 1541 válido.
El cable fue diseñado para ser lo más simple y económico posible.

CONFIGURACIÓN DE TARJETA SD

1. Formatee una tarjeta SD en Fat32.
2. Descargue Raspberry Pi Firrmware de la Raspberry Pi Foundation.
3. Una vez descargado, descomprima el archivo.
4. Copie los 3 archivos (bootcode.bin, fixup.dat y start.elf (que se encuentran en firmware-master \ boot)) en la carpeta raíz de su tarjeta SD.
2. Descomprima el archivo zip suministrado (Pi1541.zip) en la tarjeta SD en blanco. (Esto creará una carpeta llamada 1541 en la carpeta raíz de la tarjeta SD. Aquí es donde puede colocar las imágenes y carpetas de su disco Commodore).
3. Copie un archivo que contenga una imagen ROM 1541 (por ejemplo, vice-3.1 \ DRIVES \ dos1541) en la carpeta raíz de la tarjeta SD. La ROM debe llamarse dos1541 o d1541.rom o d1541II o Jiffy.bin.
4. (OPCIONAL) Copie un archivo que contenga una ROM de fuente CBM (por ejemplo, vice-3.1 \ C64 \ chargen ) en la carpeta raíz de la tarjeta SD. La ROM debe llamarse chargen.
5. Copie las imágenes y carpetas de su disco en la carpeta 1541 que ahora se encuentra en la tarjeta SD.
6. Cree un cable.

Para obtener una guía paso a paso sobre los pasos adicionales necesarios para configurar un Pi0 o Pi1, consulte el increíble canal de You Tube de mi amigo Tony: The LEEC – Lagom Effort Electronics Channel y su tremendamente útil video; –
Howto: Pi1541 en RPi Zero y 1 

CABLE

Las computadoras Commodore pueden producir 5V en sus puertos seriales. Las Raspberry Pi solo pueden tolerar 3.3V en sus pines GPIO. Desafortunadamente, esto complica el diseño del cable. Se requiere un convertidor de nivel lógico bidireccional I2C para convertir los voltajes para que cada dispositivo solo esté expuesto a los voltajes que requiere.

Los interruptores son completamente opcionales. Si va a conectar un teclado a su Pi, entonces no los necesita. El zumbador piezoeléctrico también es opcional (de hecho, para habilitarlo, debe configurarlo en el archivo options.txt que se explica a continuación). Por el momento, solo se admiten zumbadores piezoeléctricos sin generadores. Si no conecta y configura un Piezo, aún puede obtener los sonidos de pasos de cabeza a través de la toma de auriculares de Pi. Nuevamente, el LED de actividad es opcional. Se me ha proporcionado para aquellos que desean un LED externo para sus carcasas Pi personalizadas.

Opciones de cable

Hay muchas opciones para el hardware.
Las dos opciones que presento aquí varían en complejidad.

La opción A está bien si no tiene otros dispositivos (unidades, impresoras, SD2IEC, etc.) en el bus serie. Si es así, cree la opción B.

Opción A

Esta es la versión más simple del hardware. Alimente el Pi con una fuente de alimentación externa adecuada. El convertidor de nivel lógico bidireccional I2C obtiene sus 5 V del pin 2 de Pi y 3,3 V del pin 1 de PI. Ambos lados GND y el pin 2 del puerto serie GND del C64 están conectados al pin PI 9. El pin 3 del puerto serie ATN del C64 está conectado a un pin lateral de 5v libre del convertidor de nivel y el lado de 3.3v se conecta al pin 3 de Pi (GPIO02). El pin 4 del puerto serie CLOCK de C64 se conecta a un pin lateral de 5v libre del convertidor de nivel y el lado de 3.3v se conecta al pin 11 de Pi (GPIO17).


El pin 5 del puerto serie DATA de C64 se conecta a un pin lateral de 5v libre del convertidor de nivel y el lado de 3.3v se conecta al pin 12 de Pi (GPIO18).
El pin 6 del puerto serie RESET de C64 está conectado a un pin lateral de 5v libre del convertidor de nivel y el lado de 3.3v luego se conecta al pin 5 de Pi (GPIO03).

Los botones / interruptores, el zumbador piezoeléctrico y el LED son opcionales.

Opción B

Esta opción utiliza un 7406 al igual que todos los equipos Commodore y, por lo tanto, puede admitir más dispositivos conectados al bus serie.
(Nota: también puede usar un 7405, 7416, 74LS05, 74LS06 o un 74LS16)
Nuevamente, los botones / interruptores, el zumbador piezoeléctrico y el LED son todos opcionales.

Si crea la opción B, deberá colocar la línea «splitIECLines = 1» en el archivo options.txt que se encuentra en la carpeta raíz de la tarjeta SD.

Botones / interruptores

Opcionalmente, puede conectar botones de contacto momentáneos que pueden ayudar en el uso del Pi1541.
(Estos son opcionales y no son necesarios si va a utilizar un teclado USB conectado a su Pi)
Los botones están conectados así; –
 – Restablecer (o Seleccionar) el pin 13 de Pi (GPIO27)
 – Disco anterior (o Subir) Pin 15 de Pi (GPIO22)
 – Siguiente disco (o Bajar) Pin 16 de Pi (GPIO23)
 – Carpeta de salida Pin 7 de Pi (GPIO04)
 – Inserte el pin 29 de Pi (GPIO05) del disco
 El otro lado del botón está conectado a tierra. (Se utilizan pullups internos para que no necesite resistencias)

Partes

Puede construir su propio sombrero Pi siguiendo el esquema anterior con las siguientes partes; –

Busque; –
«Raspberry Pi 3 Modelo 3 (o 3B +) con fuente de alimentación adecuada» x1
«Terminal S hembra 6 pines DIN PCB» x2
«2×20 pines Conector hembra PCB «x1 (paso de 2,54 mm)
» Convertidor de nivel lógico
bidireccional I2C «x1 (4 u 8 canales) » Tarjeta Micro SD 8-32GB «x1
» 5cm x 7cm Tablero perfilado «x1
» 6x6x4.Interruptor momentáneo de PCB DIP de 5 mm y 4 pines «x5 (opcional)

Utilizando

Una vez configurado, opcionalmente puede conectar el Pi a una pantalla a través del puerto HDMI (también conecte un teclado USB).
Luego, puede usar el teclado para navegar por las carpetas y seleccionar imágenes de disco.
PAGEUP / DOWN ayuda a moverse más rápido por las carpetas.
INSERT agrega una imagen a la lista seleccionada.
ENTER agrega una imagen a la lista seleccionada y entra en modo de emulación.
ESC sale de una imagen montada (y del modo de emulación) (y borra las selecciones).
RETROCESO sale de una carpeta (y borra las selecciones).
Mientras está en modo de emulación, las teclas numéricas se utilizan para intercambiar imágenes de disco (cuando se seleccionan varias imágenes).
Mientras está en el modo de exploración, las teclas numéricas se utilizan para intercambiar imágenes ROM.

Una vez que se monta una imagen, puede usar la computadora Commodore como lo haría con un disco insertado en un 1541

real.O

Una vez que el Pi se haya iniciado, simplemente escriba LOAD * , 8 y cargará fb64 (CBM-Browser) y puede usar esto para navegar por carpetas y seleccionar imágenes.
Nota
: fb64 se puede utilizar para cargar archivos PRG.
– puede utilizar CBM-Browser fb20, fb16, etc. para otras computadoras Commodore. (solo descomprime el fb.zip en la carpeta 1541 de su tarjeta). También necesitará usar las versiones que he proporcionado, ya que tuve que modificar la fuente para agregar una verificación de errores adicional para que esperen a que el Pi cargue la imagen y el 1541 emulado para que arranque. LOAD «*», 8 carga el primer archivo colocado en la carpeta 1541, así que asegúrese de que el fb del comuter que más usa sea el primer archivo copiado en la carpeta 1541 durante la configuración.

– Usando fb64 (o los otros fbs para otros sistemas) para seleccionar imágenes de, por ejemplo, C64_Preservation_Project_10th_ Anniversary_Collection, los nombres de archivo pueden ser demasiado largos para el 64 y solo mostrará 16 caracteres. Como puede haber varias imágenes de disco que comienzan con los mismos primeros 16 caracteres, puede resultar confuso cuál ha seleccionado. El 64 solo devuelve los primeros 16 caracteres, por lo que Pi montará la primera imagen que encuentre en esa carpeta que coincida con los primeros 16 caracteres. (el uso de la pantalla Pi mostrará el nombre completo).
– Si apaga y enciende el Pi para reiniciarlo e intenta cargar fb64 y obtiene un « dispositivo no encontrado », intente nuevamente ya que el Pi necesita un poco de tiempo para arrancar.

Al usar G64 e imágenes de disco originales, la mayoría de ellas fueron diseñadas para ejecutarse automáticamente y, por lo tanto, cargarse con LOAD «*», 8,1 (Algunos directorios incluso están vacíos si los enumera). Esto puede confundir al navegador CBM, por lo que le recomiendo que una vez que navegue en la imagen de disco de su elección, salga del navegador CBM presionando Q y luego puede escribir la CARGA obligatoria «*», 8,1

Nota: algún software original previene su directorio se muestre a través del comando LOAD «$», 8.

Algunos archivos NIB también funcionan. Tenga en cuenta que hay muchos NIB y G64 sospechosos que no funcionan incluso cuando se transfieren a disquetes reales (incluso dentro de c64pp)

OPCIONES

Se puede colocar un archivo de texto simple llamado options.txt en la carpeta raíz de la tarjeta SD.

ID del dispositivo

Si desea cambiar el ID de la unidad, edite el archivo options.txt y puede agregar / descomentar la línea; –
deviceID = 9

ROM

También puede cargar una ROM alternativa copiando otras imágenes de ROM y agregando líneas a options.txt con sus nombres, por ejemplo; –
ROM2 = Jiffy.bin
ROM3 = d1541II
(Puede intercambiar ROMS cuando no está en modo de emulación – a través de el teclado (teclas numéricas))

OnResetChangeToStartingFolder

Cuando utilice uno de los archivos de CBM-Browser para buscar carpetas en la computadora Commodore, deberá volver a cargarlo cada vez que reinicie la computadora. Cuando esta opción se establece en 1, Pi1541 volverá a cambiar a la carpeta \ 1541 cada vez que se restablezca el 1541 emulado (ver restablecimiento a continuación).

SoundOnGPIO

Cuando use un zumbador piezoeléctrico en lugar de sonido a través de la toma de auriculares de Pi, habilite esta opción.

Ancho de pantalla

ScreenHeight

Cuando utilice video compuesto, es posible que desee disminuir la resolución.
Estas opciones le permiten experimentar con tamaños de pantalla.
Por ejemplo, agregar estas líneas hará que el texto sea más grande; –
ScreenWidth = 512
ScreenWidth = 384

SplitIECLines

Esta opción debe configurarse si su hardware es como schamatic B.

Inversiones

Esta opción debe configurarse si su hardware es como schamatic B pero en lugar de un cambiador de nivel de voltaje, está utilizando otros dispositivos que invierten las entradas.

UTILIZANDO

Si una imagen de disco en la tarjeta SD está configurada para solo lectura, eso equivale a que el disco esté protegido contra escritura. (Su nombre también aparecerá en un color diferente en la pantalla de la Pi)

La línea RESET en el puerto serie de la máquina Commodore se comporta de manera diferente entre las computadoras Commodore e incluso entre diferentes revisiones del mismo modelo. Es posible que el 1541 emulado no se reinicie cuando reinicie su máquina. Puede reiniciar instalando un interruptor de reinicio en el cable y presionándolo o simplemente salir de la imagen del disco emulado a través del teclado de Pi. Nota: el Pi emulado siempre se reiniciará cuando se apague y encienda la máquina a la que está conectada.

ADVERTENCIAS

ADVERTENCIA: Construya bajo su propio riesgo su equipo Pi y Commodore.

ADVERTENCIA: asegúrese de que está utilizando copias de las imágenes de su disco, ya que podría destruirlas.

Asegúrese de utilizar una fuente de alimentación adecuada para el Pi. La Fundación Respberry Pi recomienda un mínimo de 2.5A.
Hasta ahora, el 100% de los problemas encontrados por otros al configurar y hacer funcionar el PI1541 se debían a que usaban una fuente de alimentación incorrecta o intentaban alimentar todo tipo de dispositivos exóticos a través de los puertos USB del Pi mientras intentaban usarlo.
Si el Pi muestra el icono del rayo, entonces la fuente de alimentación es insuficiente y el Pi1541 probablemente no funcionará.

Nota: algunas demostraciones pueden bloquear algunos 64 que son susceptibles al error VSP. Esto no es causado por Pi1541.

Si está construyendo la opción A, tenga en cuenta: –
«El método FET para adaptar un bus de drenaje abierto de 3.3V a un bus de drenaje abierto de 5V requiere que el RPi absorba toda la corriente que las fuentes laterales de 5V. gran problema si es la única unidad conectada, pero el bus IEC permite conectar varias unidades, impresoras y trazadores al mismo tiempo. Con el método FET, toda la corriente de cada resistencia pull-up debe ser absorbida por los pines RPi, que eventualmente se romperá «.

GRACIAS

Me gustaría agradecer a varias personas.

nbla000 por darme permiso para agregar lo que necesitaba al navegador CBM.

Pete Rittwage por ayuda, soporte, consejo, código y pruebas.

Petros Kokotis y Mateusz Malina por encima y más allá de las pruebas. El alto nivel de compatibilidad no se habría logrado si no fuera por estos dos tipos.

Todd Trann por sus pruebas, así como su ayuda con diagramas e imágenes.

También aprecié mucho los consejos, pruebas y comentarios de Rene, Greg Dunlap, penfold42 y Thomas Christoph.

Fuente:  https://mingos-commodorepage.com/tutorials/pi1541tut.php?id=124&title=Der%20PI1541%20Floppy%20Emulator

 

Deja un comentario