Un Spectrum en un DOSBox en una Raspberry Pi 3 en un teclado IBM mecánico
Publicado: 25 Mar 2016, 10:53
Andaba trasteando con una Raspberry Pi model b prestada, cuando encontré en el mercadillo un teclado IBM mecánico, fué pulsar las teclas y trasportarme a los tiempos del Turbo C y el WordPerfect, asi que me dije: ¡voy a meter un MSDOS en el teclado IBM! o visto de otro modo, ¡voy a fabricarle una caja elegante a la Raspberry!
Tenía ya totalmente encajada la raspberry 1 en el teclado y estaba peleándome con el software, cuando van y sacan la raspberry 3, así que devuelvo la prestada y compro esa.
Aunque la diferencia de rendimiento es considerable de una a otra, al tener más puertos USB no he podido encajarla totalmente dentro del teclado
Empecemos con el jierro y a continuación una guía rápida de la configuración del software en la raspberry.
Como el teclado IBM es PS2, se utiliza un conversor PS2 a USB, que además permite utilizar un ratón PS2. Como los conectores USB se han quedado fuera, el cable del adaptador también sale por fuera, quedando un poco raro, y de perdidos al río le he dejado también por fuera el conector para ratón PS2.
El hueco que hay permite cambiar la microsd, además de airear en lo posible la RP.
En lugar de utilizar el conector USB de la RP, la alimentación pasa por un interruptor, y de ahí a los pines +5V y GND del conector GPIO.
Para el sonido he utilizado un pequeño altavoz de un Dell (PN:0D9899), que funciona con 5V y se puede conectar directamente a la salida de auriculares de la Pi.
Además del conversor HDMI-VGA para conectarlo a un monitor, le he puesto un codo a la salida HDMI, para que los cables molesten lo menos posible.
Aquí tenemos algunos programillas ejecutándose, espectacular cómo se mueve el Alone in the Dark.
Pues vamos con el software:
**************************** NOTAS PREVIAS
- La imagen base utilizada para la raspberry pi 3 es 2016-02-26-raspbian-jessie, se pasa a la tarjeta micro SD 10 de 32 GB con Win32DiskImager
- Las primeras pruebas las hice en una RP 1 con raspbian-wheezy, pero esa imagen no me funcionó en la RP3
- Además algunas de las siguientes configuraciones no son válidas para la RP1 y RP2.
**************************** CONFIGURACION INICIAL
-Desde Terminal (o desde X):
sudo raspi-config
configurar Locale (ES, es, UTF-8), teclado, zona horaria, expandir sistema de archivos, ...
-Actualizar listado desde repositorios
sudo apt-get update
-Actualizar paquetes en el sistema
sudo apt-get upgrade
**************************** SSH
-Habilitar con
sudo raspi-config
-usuario pi / raspberry ... cambiar password a pi, por defecto es raspberry
**************************** WIFI
-Se puede configurar desde el Escritorio, esquina superior derecha
**************************** Bloq Num ACTIVO AL ARRANCAR
-Al quedar ocultos los leds de la raspberry, con esto se vé si está encendida o no
sudo nano /etc/kbd/config
# Turn on numlock by default
LEDS=+num
**************************** MINIMIZAR ESCRITURA EN SD
-Utilizando la memoria para almacenar los archivos de logs en lugar de la SD, se consigue prolongar la vidad e esta, y ganar algo de velocidad
sudo nano /etc/fstab
(añadir la linea)
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0
**************************** APAGAR LA RASPBERRY CON Ctrl-Alt-Supr
-En lugar de apagar de botonazo, se puede configurar Ctrl-Alt-Supr para que apague el sistema, en lugar de reiniciarlo.
- Así que para apagar de forma rápida y límpia basta pulsar Ctr-Alt-F1 para mostrar un terminal, y a continuación Ctrl-Alt-Supr.
sudo rm /lib/systemd/system/ctrl-alt-del.target
sudo ln -s /lib/systemd/system/poweroff.target /lib/systemd/system/ctrl-alt-del.target
sudo systemctl daemon-reload
**************************** FTP
-Fundamental para pasar archivos a la raspberry desde el PC
sudo apt-get update
sudo apt-get install vsftpd
sudo nano /etc/vsftpd.conf
local_enable=YES
write_enable=YES
local_umask=077
chown_uploads=YES
chown_username=pi
sudo service vsftpd restart
**************************** CONFIGURACION RESOLUCION PANTALLA RASPBERRY
-Como voy a configurar DosBox con resolución VGA, para que no se vea muy pequeño en pantalla, es conveniente bajar también la resolución de la propia Raspberry.
-Los modos de video soportados dependen directamente del monitor que se utilice en cada caso. Se pueden comprobar con estos comandos:
pi@raspberrypi:~ $ tvservice -n
device_name=DEL-DELL_P2311H
pi@raspberrypi:~ $ tvservice -m CEA
Group CEA has 0 modes:
pi@raspberrypi:~ $ tvservice -m DMT
Group DMT has 11 modes:
mode 4: 640x480 @ 60Hz 4:3, clock:25MHz progressive
mode 6: 640x480 @ 75Hz 4:3, clock:31MHz progressive
mode 9: 800x600 @ 60Hz 4:3, clock:40MHz progressive
mode 11: 800x600 @ 75Hz 4:3, clock:49MHz progressive
mode 16: 1024x768 @ 60Hz 4:3, clock:65MHz progressive
mode 18: 1024x768 @ 75Hz 4:3, clock:78MHz progressive
mode 21: 1152x864 @ 75Hz 4:3, clock:108MHz progressive
mode 35: 1280x1024 @ 60Hz 5:4, clock:108MHz progressive
mode 36: 1280x1024 @ 75Hz 5:4, clock:135MHz progressive
(prefer) mode 82: 1920x1080 @ 60Hz 16:9, clock:148MHz progressive
mode 85: 1280x720 @ 60Hz 16:9, clock:74MHz progressive
-A continuación configurar el modo adecuado en el fichero /boot/config.txt
hdmi_group=1 (CEA)
hdmi_group=2 (DMT)
-En este caso 800x600 @ 60Hz 4:3
sudo nano /boot/config.txt
-> hdmi_group=2
-> hdmi_mode=9
**************************** SONIDO
-Configurar salida de cascos en lugar de por HDMI
amixer cset numid=3 1
-Para probarlo
wget http://www.freespecialeffects.co.uk/sou ... eep_01.wav
aplay bleep_01.wav
**************************** EJECUTAR DOSBOX AL ARRANCAR X
-Para que al arrancar LXDE se ejecute dosbox
sudo nano .config/lxsession/LXDE-pi/autostart
/usr/bin/dosbox
sudo chmod 755 .config/lxsession/LXDE-pi/autostart
**************************** DosBox SVN DYNAMIC RECOMPILATION
-Aunque se puede instalar fácilmente Dosbox desde repositorio, esa versión es súmamente lenta con lo que he optado por
recompilar desde fuente el DoxBox con algunas opciones que aumentan considerablemente su velocisad.
sudo apt-get install libsdl1.2-dev libsdl-net1.2-dev libsdl-sound1.2-dev libasound2-dev libpng12-dev automake autoconf zlib1g-dev
sudo apt-get install subversion
svn checkout svn://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk dosboxsvn
cd dosboxsvn
./autogen.sh
CXXFLAGS="-O2 -mfpu=vfp -march=armv6j -mfloat-abi=hard" ./configure --disable-opengl
sed -i "s/C_TARGETCPU.*/C_TARGETCPU ARMV4LE/g" config.h
echo "#define C_DYNREC 1" >>config.h
make
sudo make install
-Desde excritorio, ejecutar dosbox una primera vez para que se genere el siguiente fichero, y a continuación se edita
sudo nano /home/pi/.dosbox/dosbox-SVN.conf
fullscreen=true
fullresolution=800x600
keyboardlayout=es
[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
mount c MSDOS -freesize 1024
c:
[sdl]
priority=highest,normal
[dosbox]
machine=svga_et3000
memsize=16
[render]
frameskip=2
[cpu]
core=auto
cputype=386
cycles=3000
cycleup=10
cycledown=10
[gus]
gus=false
[speaker]
pcspeaker=true
tandy=off
disney=false
[joystick]
joysticktype=none
[ipx]
ipx=false
-Para que al arrancar LXDE ejecute dosbox
sudo nano .config/lxsession/LXDE-pi/autostart
->/usr/local/bin/dosbox
sudo chmod 755 .config/lxsession/LXDE-pi/autostart
-Para crear enlace en el escritorio
sudo nano /home/pi/Desktop/DOSBox.desktop
[Desktop Entry]
Type=Application
Name=DOSBox
Name[es]=DOSBox
Icon=dosbox
Exec=/usr/local/bin/dosbox
Terminal=false
Categories=Game;Emulator;
Keywords=GAME DOS Emulator;
sudo chmod 777 /home/pi/Desktop/DOSBox.desktop
sudo chown pi.pi /home/pi/Desktop/DOSBox.desktop
**************************** EMULADOR ZX Pedro Gimeno 0.99A en DosBox
¿Y qué sentido tiene todo esto si no se puede jugar al JetPac? pues evidentemente, ninguno
-En la carpeta MSDOS\ZX se copia el primer emulador de Spectrum, de Pedro Gimeno 0.99A, y el conversor de formatos spcnv
-Desde la propia raspberry y en dosbox, se convierte el juego a formato SP
spcnv110.exe JETPAC.Z80 JETPAC.SP
- se ejecuta el emulador indicándo que cargue el juego y solo hay que pulsar F1
SPECTRUM.EXE JETPAC.SP
saludos
Tenía ya totalmente encajada la raspberry 1 en el teclado y estaba peleándome con el software, cuando van y sacan la raspberry 3, así que devuelvo la prestada y compro esa.
Aunque la diferencia de rendimiento es considerable de una a otra, al tener más puertos USB no he podido encajarla totalmente dentro del teclado
Empecemos con el jierro y a continuación una guía rápida de la configuración del software en la raspberry.
Como el teclado IBM es PS2, se utiliza un conversor PS2 a USB, que además permite utilizar un ratón PS2. Como los conectores USB se han quedado fuera, el cable del adaptador también sale por fuera, quedando un poco raro, y de perdidos al río le he dejado también por fuera el conector para ratón PS2.
El hueco que hay permite cambiar la microsd, además de airear en lo posible la RP.
En lugar de utilizar el conector USB de la RP, la alimentación pasa por un interruptor, y de ahí a los pines +5V y GND del conector GPIO.
Para el sonido he utilizado un pequeño altavoz de un Dell (PN:0D9899), que funciona con 5V y se puede conectar directamente a la salida de auriculares de la Pi.
Además del conversor HDMI-VGA para conectarlo a un monitor, le he puesto un codo a la salida HDMI, para que los cables molesten lo menos posible.
Aquí tenemos algunos programillas ejecutándose, espectacular cómo se mueve el Alone in the Dark.
Pues vamos con el software:
**************************** NOTAS PREVIAS
- La imagen base utilizada para la raspberry pi 3 es 2016-02-26-raspbian-jessie, se pasa a la tarjeta micro SD 10 de 32 GB con Win32DiskImager
- Las primeras pruebas las hice en una RP 1 con raspbian-wheezy, pero esa imagen no me funcionó en la RP3
- Además algunas de las siguientes configuraciones no son válidas para la RP1 y RP2.
**************************** CONFIGURACION INICIAL
-Desde Terminal (o desde X):
sudo raspi-config
configurar Locale (ES, es, UTF-8), teclado, zona horaria, expandir sistema de archivos, ...
-Actualizar listado desde repositorios
sudo apt-get update
-Actualizar paquetes en el sistema
sudo apt-get upgrade
**************************** SSH
-Habilitar con
sudo raspi-config
-usuario pi / raspberry ... cambiar password a pi, por defecto es raspberry
**************************** WIFI
-Se puede configurar desde el Escritorio, esquina superior derecha
**************************** Bloq Num ACTIVO AL ARRANCAR
-Al quedar ocultos los leds de la raspberry, con esto se vé si está encendida o no
sudo nano /etc/kbd/config
# Turn on numlock by default
LEDS=+num
**************************** MINIMIZAR ESCRITURA EN SD
-Utilizando la memoria para almacenar los archivos de logs en lugar de la SD, se consigue prolongar la vidad e esta, y ganar algo de velocidad
sudo nano /etc/fstab
(añadir la linea)
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0
**************************** APAGAR LA RASPBERRY CON Ctrl-Alt-Supr
-En lugar de apagar de botonazo, se puede configurar Ctrl-Alt-Supr para que apague el sistema, en lugar de reiniciarlo.
- Así que para apagar de forma rápida y límpia basta pulsar Ctr-Alt-F1 para mostrar un terminal, y a continuación Ctrl-Alt-Supr.
sudo rm /lib/systemd/system/ctrl-alt-del.target
sudo ln -s /lib/systemd/system/poweroff.target /lib/systemd/system/ctrl-alt-del.target
sudo systemctl daemon-reload
**************************** FTP
-Fundamental para pasar archivos a la raspberry desde el PC
sudo apt-get update
sudo apt-get install vsftpd
sudo nano /etc/vsftpd.conf
local_enable=YES
write_enable=YES
local_umask=077
chown_uploads=YES
chown_username=pi
sudo service vsftpd restart
**************************** CONFIGURACION RESOLUCION PANTALLA RASPBERRY
-Como voy a configurar DosBox con resolución VGA, para que no se vea muy pequeño en pantalla, es conveniente bajar también la resolución de la propia Raspberry.
-Los modos de video soportados dependen directamente del monitor que se utilice en cada caso. Se pueden comprobar con estos comandos:
pi@raspberrypi:~ $ tvservice -n
device_name=DEL-DELL_P2311H
pi@raspberrypi:~ $ tvservice -m CEA
Group CEA has 0 modes:
pi@raspberrypi:~ $ tvservice -m DMT
Group DMT has 11 modes:
mode 4: 640x480 @ 60Hz 4:3, clock:25MHz progressive
mode 6: 640x480 @ 75Hz 4:3, clock:31MHz progressive
mode 9: 800x600 @ 60Hz 4:3, clock:40MHz progressive
mode 11: 800x600 @ 75Hz 4:3, clock:49MHz progressive
mode 16: 1024x768 @ 60Hz 4:3, clock:65MHz progressive
mode 18: 1024x768 @ 75Hz 4:3, clock:78MHz progressive
mode 21: 1152x864 @ 75Hz 4:3, clock:108MHz progressive
mode 35: 1280x1024 @ 60Hz 5:4, clock:108MHz progressive
mode 36: 1280x1024 @ 75Hz 5:4, clock:135MHz progressive
(prefer) mode 82: 1920x1080 @ 60Hz 16:9, clock:148MHz progressive
mode 85: 1280x720 @ 60Hz 16:9, clock:74MHz progressive
-A continuación configurar el modo adecuado en el fichero /boot/config.txt
hdmi_group=1 (CEA)
hdmi_group=2 (DMT)
-En este caso 800x600 @ 60Hz 4:3
sudo nano /boot/config.txt
-> hdmi_group=2
-> hdmi_mode=9
**************************** SONIDO
-Configurar salida de cascos en lugar de por HDMI
amixer cset numid=3 1
-Para probarlo
wget http://www.freespecialeffects.co.uk/sou ... eep_01.wav
aplay bleep_01.wav
**************************** EJECUTAR DOSBOX AL ARRANCAR X
-Para que al arrancar LXDE se ejecute dosbox
sudo nano .config/lxsession/LXDE-pi/autostart
/usr/bin/dosbox
sudo chmod 755 .config/lxsession/LXDE-pi/autostart
**************************** DosBox SVN DYNAMIC RECOMPILATION
-Aunque se puede instalar fácilmente Dosbox desde repositorio, esa versión es súmamente lenta con lo que he optado por
recompilar desde fuente el DoxBox con algunas opciones que aumentan considerablemente su velocisad.
sudo apt-get install libsdl1.2-dev libsdl-net1.2-dev libsdl-sound1.2-dev libasound2-dev libpng12-dev automake autoconf zlib1g-dev
sudo apt-get install subversion
svn checkout svn://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk dosboxsvn
cd dosboxsvn
./autogen.sh
CXXFLAGS="-O2 -mfpu=vfp -march=armv6j -mfloat-abi=hard" ./configure --disable-opengl
sed -i "s/C_TARGETCPU.*/C_TARGETCPU ARMV4LE/g" config.h
echo "#define C_DYNREC 1" >>config.h
make
sudo make install
-Desde excritorio, ejecutar dosbox una primera vez para que se genere el siguiente fichero, y a continuación se edita
sudo nano /home/pi/.dosbox/dosbox-SVN.conf
fullscreen=true
fullresolution=800x600
keyboardlayout=es
[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
mount c MSDOS -freesize 1024
c:
[sdl]
priority=highest,normal
[dosbox]
machine=svga_et3000
memsize=16
[render]
frameskip=2
[cpu]
core=auto
cputype=386
cycles=3000
cycleup=10
cycledown=10
[gus]
gus=false
[speaker]
pcspeaker=true
tandy=off
disney=false
[joystick]
joysticktype=none
[ipx]
ipx=false
-Para que al arrancar LXDE ejecute dosbox
sudo nano .config/lxsession/LXDE-pi/autostart
->/usr/local/bin/dosbox
sudo chmod 755 .config/lxsession/LXDE-pi/autostart
-Para crear enlace en el escritorio
sudo nano /home/pi/Desktop/DOSBox.desktop
[Desktop Entry]
Type=Application
Name=DOSBox
Name[es]=DOSBox
Icon=dosbox
Exec=/usr/local/bin/dosbox
Terminal=false
Categories=Game;Emulator;
Keywords=GAME DOS Emulator;
sudo chmod 777 /home/pi/Desktop/DOSBox.desktop
sudo chown pi.pi /home/pi/Desktop/DOSBox.desktop
**************************** EMULADOR ZX Pedro Gimeno 0.99A en DosBox
¿Y qué sentido tiene todo esto si no se puede jugar al JetPac? pues evidentemente, ninguno
-En la carpeta MSDOS\ZX se copia el primer emulador de Spectrum, de Pedro Gimeno 0.99A, y el conversor de formatos spcnv
-Desde la propia raspberry y en dosbox, se convierte el juego a formato SP
spcnv110.exe JETPAC.Z80 JETPAC.SP
- se ejecuta el emulador indicándo que cargue el juego y solo hay que pulsar F1
SPECTRUM.EXE JETPAC.SP
saludos