El pi1541 punga parte 2
5 febrero, 2021
En esta segunda parte voy a contarles cómo conecté la pantalla, cómo configuré el pi1541 y el funcionamiento del dispositivo.
Encontrarás la parte 1 aquí.
Versión con pantalla
El uso sin pantalla es posible aunque no es recomendable. La versión para pi zero no tiene posibilidad de visualizar mediante hdmi como la versión pi 3, por lo tanto si tenés pantalla OLED es mucho mejor.
Primero le puse una pantalla que tomé prestada de otro proyecto para hacer una segunda versión del prototipo:
Para conectar la pantalla deben soldar GND y 3.3 VCC a los correspondientes pines de la pantalla OLED, y los pines SDA al pin 27 del Raspberry Pi, y SCL al pin 28 del Raspberry.
Luego fui a comprar una pantallita para dejarla definitiva y la conecté…
Configuración
- Para que todo funcione tenemos que tener nuestra tarjeta micro SD formateada como FAT32 y agregarle algunos archivos.
- Entramos al sitio de Steve White https://cbm-pi1541.firebaseapp.com bajamos el archivo Pi1541.zip en la parte de DOWNLOAD y luego la última versión del kernel para pi 0 kernel.zip
- Copiamos los archivos a la tarjeta SD, así nos tendría que quedar la raíz:
4. MUY IMPORTANTE: Luego reemplazamos el kernel que trae por defecto por el kernel para pi 0.
5. Adentro de la carpeta 1541 vamos a poner las imágenes de disco con los juegos, programas, demos, etc. Ese va a ser el “root” cuando iniciemos el pi1541.
Allí también recomiendo poner el filebrowser fb64 que también se baja desde el sitio de Steve.
Se puede incluso configurar para que se auto-monte la imagen fb.d64 o bien podés sacar los prg de adentro del d64 y tirarlos directamente adentro de la carpeta 1514.
6. Luego editamos el archivo config.txt para darle un overclock de 10% al raspberry zero, aparentemente es necesario para que funcione todo bien:
kernel_address=0x1f00000
arm_freq=1100
over_voltage=8
sdram_freq=500
sdram_over_voltage=2
force_turbo=1
boot_delay=1
7. Luego vamos a subirle este archivo options.txt. Por supuesto que esto va a cambiar según las opciones (si le ponen buzzer, si usan pantalla, y si la pantalla que usaste es de otro tamaño, etc.) pero este es el que funciona para mi configuración:
//deviceID = 9
//ROM2 = Jiffy.bin
//ROM3 = d1541II
OnResetChangeToStartingFolder = 1
//DisableSD2IECCommands = 1
//SoundOnGPIO = 1
LowercaseBrowseModeFilenames = 1
i2cBusMaster = 0
LCDName = ssd1306_128x64
Steve nos da el archivo options.txt modelo con todo el choclazo de opciones que tenemos para habilitar o deshabilitar.
Botonera
Número de botón | Función |
1 | Monta imagen de disco / ingresa en carpeta / ejecuta archivo / ingresa o sale del modo emulación. |
2 | Selecciona archivo o carpeta superior. |
3 | Selecciona archivo o carpeta inferior. |
4 | Sale al directorio / sube a carpeta nivel superior. |
5 | Marca archivo y lo agrega al orden de imágenes a montar |
Funcionamiento sin pantalla
Si por algún motivo no pudiste conectarle una pantallita podés tener bastante funcionalidad igualmente.
El pi1541 tiene dos “modos”. Ni bien lo encendemos está en modo “navegación” que funciona similar a un SD2IEC, y mediante un programa llamado “filebrowser” permite navegar por los archivos y montar carpetas con los ejecutables o imágenes que tengan. Pero una vez montada una imagen de disco o al correr un ejecutable pasa a modalidad “emulación”, imitando una disquetera 1541. Eso implica que si yo monto una imagen y luego quiero salir y montar otra, por ej. simulando un cambio de disco, debo salir de la emulación, seleccionar la otra imagen y montarla. Esto es fácil usando pantalla, pero si deseo prescindir de ella lo que debo hacer es indicarle de alguna manera al pi1541 qué imágenes quiero que tenga ya “listas” en fila para que con sólo apretar un botón me pase a la siguiente.
Para empezar nos conviene tener en la carpeta 1541 de la tarjeta micro SD, el filebrowser, y te recomiendo que renombres el ejecutable a algo corto y fácil de tipear, por ej. en vez de fb64.prg renombrarlo a f (sin extensión).
ACLARACION: si utilizás un cartucho fastloader esta modalidad no es compatible, en ese caso debes auto-montar la imagen fb.d64 agregando al archivo options.txt AutoMountImage = fb.d64
Entonces en ese caso al encender el pi1541 lo que haríamos es escribir
LOAD"F",8,1
RUN
Luego ingresamos al filebrowser:
Aquí nos detendremos, notarán que tengo una demo que requiere dos discos (o dos caras) y por lo tanto tiene 2 imágenes de disco UNCENSORED_1.D64 y UNCENSORED_2.D64 y un archivo AUTOSWAP.LST
Este no es más que un archivo de texto en el que vamos a poner una lista en orden con los nombres de las imágenes de archivo que van a formar parte de una sucesión de discos que yo después voy a querer montar, por ej.:
uncensored_1.d64
uncensored_2.d64
Entonces lo que hago es posicionarme sobre el archivo AUTOSWAP.LST y presiono RETURN. Esto hace que el pi1541 monte la primera imagen de disco y “recuerde” que la segunda imagen va a ser UNCENSORED_2.D64
Lo mismo sería si tuviera 3, 4, 5, o la cantidad de imágenes que sean, va a respetar el orden de la lista.
NOTA IMPORTANTE: Conviene no utilizar nombres de archivos muy largos. Evitar caracteres raros, muchos guiones, o mayúsculas. Conviene renombrar todo con letras minúsculas y números y nombres relativamente cortos, 10 caracteres o similar.
De otro modo puede no montar alguna imagen.
Funcionamiento con pantalla OLED
Cuando tenemos pantalla no necesitamos utilizar el filebrowser. Directamente navegamos por las carpetas e imágenes utilizando la botonera.
Cuando el progama me pida que cambie de disco simplemente presiono el botón 3 para pasar a la imagen siguiente que yo ya había definido.
Salir de la emulación
Normalmente cuando terminemos de jugar o ejecutar el programa que habíamos cargado, podemos apagar la Commodore y el pi1541, volver a encender y todo volvería a comenzar de cero. Pero esto a veces es un poco tedioso y muchas Commodore traen la posibilidad de ser reseteadas manteniendo el pi1541 encendido.
Al resetear la commodore y si el pi1541 continúa alimentado, seguirá emulando el último disco que le dejamos. Para salir de ese modo es necesario presionar el botón 1. Luego con el botón 4 salimos de la imagen de disco y de la carpeta en la que estamos para poder elegir otra imagen que cargar.
Esto también es útil cuando por ejemplo estamos trabajando con algún software de creación de contenido, música, gráficos y queremos guardar archivos en imágenes de disco distintas, salimos de la emulación con botón 1, navegamos por las carpetas con los botones 2, 3 y 4, y volvemos a entrar a la emulación presionando botón 1 cuando encontramos la imagen adecuada.
No es más que un hasta luego, no es más que un nuevo adiós…
Considero que el proyecto pi1541 de Steve White es un antes y un después en la comunidad commodore. En el mercado existían pocos dispositivos que realmente emularan una disquetera 1541 de forma completa, y estos eran difíciles de fabricar por su hardware custom, además de caros y difíciles de conseguir.
Como alternativa teníamos el SD2IEC que cualquiera podía armarse (ver mis anteriores tutoriales al respecto) que no deja de ser un buen dispositivo pero flaquea a la hora de correr cualquier ejecutable que deshabilite el kernel de la C64 (como muchas de las demos de la demoscene y algunos juegos), lo cual es un gran limitante.
Hace algunos años nos veníamos preguntando en la comunidad y sabíamos que existía la posibilidad de programar un emulador de 1541 exacto para raspberry pi, pero nunca nadie había podido hacerlo funcionar.
Finalmente fue posible gracias a la generosidad de Steve en hacer público el kernel y su código fuente ya pulido y funcional para que la comunidad haga pruebas, esto luego motivó a que otro desarrollador, Alex Martinelle, lo adaptara para funcionar en el pi 0. En Rebelion Digital nos gusta ese espíritu de compartir el conocimiento con libertad.
Finalmente, este artículo no pretendió ser “un tutorial sobre -la forma- en que se debe armar un pi1541”, es más bien mi manera de hacerlo con aciertos y errores y tal vez un puntapié inicial para que encuentres tu manera de armarlo a tu gusto, cumpliendo los fines para los que lo vayas a utilizar. Tampoco cubre todas las opciones de configuración ni de funcionalidades avanzadas con las que cuenta el proyecto.
Desde ese lugar espero que te haya resultado útil, hasta la próxima.
Categoria: pvm blog | retro computing | tutoriales
[…] En la parte 2 vamos a ver cómo se conecta la pantalla, cómo configurarlo y hacerlo funcionar… […]