Cómo usar el emulador de EPOC para Windows en una Asus Eee 4G con Debian, Ratpoison y Wine

Descripción del contenido de la página

Instalación y ajustes necesarios para usar el emulador de EPOC para Windows incluido en el paquete de desarrollo de OPL de Symbian, en una Asus Eee 4G con el sistema operativo Debian, el gestor de ventanas Ratpoison y el programa Wine.

Etiquetas:

Este título tan largo es necesario porque todos sus elementos son importantes: La computadora Asus Eee 4G tiene una pantalla de 800x480 pixeles cuyo pequeño tamaño en algunas ocasiones no es tenido en cuenta por los programadores al diseñar la interfaz gráfica de usuario; el gestor de ventanas Ratpoison es muy eficiente pero por su propia heterodoxia en algunas ocasiones no se entiende bien con programas que precisan tamaños específicos de ventanas, o ventanas que (generalmente por descuido del programador de la aplicación) no pueden o deben ser ampliadas. Si entre medias está Wine, porque es una aplicación para Windows lo que intentamos ejecutar en Debian, la cosa se pone aun más interesante.

El emulador

El emulador de EPOC, el sistema operativo antecesor de Symbian, forma parte del entorno de desarrollo del sistema EPOC para Windows, del que existen tres versiones: para programar en OPL, en C++ y en Java. Las tres pueden encontrarse fácilmente en Internet, en páginas de Symbian. No obstante, facilito en la sección de descargas el archivo de la versión para OPL, que es la que uso.

Según se indica en la documentación incluida con el entorno de desarrollo, el emulador fue programado en Windows NT, y tiene algunas pequeñas pegas, que se indican, cuando se ejecuta en otras versiones de Windows.

El objetivo

Desde 2002 (y al menos hasta el momento de escribir estas líneas, en enero de 2011, sin previsión de cambio) uso mucho la Psion 5mx, tanto la versión estándar como la Pro; de hecho hay muchos documentos y tareas que sólo hago con ella, pues me resulta más práctica y versátil que una máquina «grande» como la «pequeña» Asus Eee 4G. Como he escrito en otras ocasiones en estas páginas, en mi opinión la Psion 5mx es la computadora de bolsillo mejor pensada, mejor diseñada y más eficiente que conozco, tanto en sus aspectos físico (de hardware) como logicial (de software).

Para facilitar el desarrollo de un proyecto en OPL+, El bosque encantado [en OPL+], se me ocurrió instalar el emulador de EPOC en la Asus; así podría usar ambas máquinas para el desarrollo, beneficiándome de la pantalla más grande y el teclado ergonómico. Había instalado el emulador años atrás, tanto en sistemas Windows como en Debian, pero no recordaba haberlo hecho en Debian con el gestor de ventanas Ratpoison...

La instalación

Para instalar el entorno de desarrollo, basta descomprimir su contenido y, en el mismo directorio resultante, ejecutar, de la forma habitual con el comando wine, el programa de instalación: wine Setup.exe &

El entorno de desarrollo se instala por defecto en un directorio raíz de la unidad C: de Windows, exactamente en C:\Epoc32\. Con la configuración predeterminada de Wine, esto equivale en Debian al directorio ~/.wine/drive_c/Epoc32 /.

El problema

El problema con que topé al intentar usar el emulador en Debian con Ratpoison fue que la imagen de fondo de decoración del emulador, que contiene alrededor de la zona de la pantalla los botones típicos de las máquinas EPOC, cuya pulsación es emulada también, era estirada verticalmente por el gestor de ventanas hasta ocupar todo el espacio disponible, lo cual causaba que los botones no coincidieran con sus zonas de pulsación, aparte de estar deformados. La ventana del emulador no ofrecía la opción propia de Windows para cambiarle el tamaño, por lo que no había nada que hacer. El manejo del programa era muy incómodo y algunas funciones, solamente accesibles con el puntero en las máquinas EPOC, no podían usarse.

Más abajo indicaré cómo arrancar el emulador desde la línea de comandos o añadirlo al sistema de menús de Debian (accesible en Ratpoison con el paquete 9menu y otros). Por ahora sólo quiero mostrar el aspecto de la pantalla completa de la Asus Eee 4G tras arrancar el emulador de EPOC, para ilustrar el problema:

El pantallazo corresponde al emulador arrancado con la configuración de pantalla de EPOC más pequeña (640x240); las restantes (640x480 y 800x600) no caben en la pantalla de la Asus Eee 4G.

Como se aprecia, la franja horizontal blanca bajo la pantalla del sistema es fruto de haber estirado la imagen verticalmente; lógicamente los botones inferiores (los iconos de las aplicaciones principales) y los del lateral izquierdo están deformados también.

Los ficheros de arranque de cada configuración

El emulador puede funcionar con diferentes configuraciones, la más llamativa de ellas (y la que como he mostrado causa el problema más grave con Ratpoison) el tamaño de pantalla y la decoración de fondo que le da el aspecto de una u otra máquina.

Husmeando en los enlaces de Windows creados por el instalador en el menú de inicio de este sistema, encontré la primera pista: Existe un fichero BAT de arranque para cada configuración. Todos empiezan por e32 y están en el directorio ~/.wine/drive_c/Epoc32/Tools /:

.wine/drive_c/Epoc32/Tools/e32-lrg.bat
.wine/drive_c/Epoc32/Tools/e32-sys.bat
.wine/drive_c/Epoc32/Tools/e32-vga.bat

Veamos el contenido de cada uno de ellos:

.wine/drive_c/Epoc32/Tools/e32-lrg.bat (arranca el emulador con pantalla grande):

@echo off
REM change to drive and then directory of WSEXE.EXE
C:
cd \epoc32\release\wins\deb
epoc.exe -Mlarge --

.wine/drive_c/Epoc32/Tools/e32-sys.bat (arranca el emulador con pantalla estándar):

@echo off
REM change to drive and then directory of WSEXE.EXE
C:
cd \epoc32\release\wins\deb
epoc.exe -Mepoc --

.wine/drive_c/Epoc32/Tools/e32-vga.bat (arranca el emulador con pantalla VGA):

@echo off
REM change to drive and then directory of WSEXE.EXE
C:
cd \epoc32\release\wins\deb
epoc.exe -Mvga --

Como se ve, el ejecutable del emulador es ~/.wine/drive_c/Epoc32/Release/Wins/Deb/EPOC.EXE (en Debian, al contrario que en Windows, hay que respetar las mayúsculas y minúsculas de los nombres de ficheros y directorios). Lo único que cambia en cada fichero de aranque es el parámetro pasado al emulador con la opción -M: (lrg, epoc y vga).

Los ficheros de configuración

Haciendo unas búsquedas, no fue difícil encontrar dónde estaban los ficheros de configuración y las imágenes de decoración: en ~/.wine/drive_c/Epoc32/Data /.

El directorio contiene varios ficheros con extensión .zip, pero los que nos interesan son los restantes: Por cada posible configuración hay dos ficheros: un .INI de texto, típico de Windows, que contiene los valores de configuración, y una imagen .BMP con el mismo nombre que el anterior, que contiene la imagen de fondo asociada:

.wine/drive_c/Epoc32/Data/EPOC.BMP
.wine/drive_c/Epoc32/Data/EPOC.INI
.wine/drive_c/Epoc32/Data/LARGE.BMP
.wine/drive_c/Epoc32/Data/LARGE.INI
.wine/drive_c/Epoc32/Data/SERIES5.BMP
.wine/drive_c/Epoc32/Data/SERIES5.INI
.wine/drive_c/Epoc32/Data/VGA.BMP
.wine/drive_c/Epoc32/Data/VGA.INI

Estas son, reducidas al 50%, las cuatro imágenes:

Tamaño genéricoTamaño grandeTamaño genérico con aspecto de Series 5Tamaño VGA

La configuración series5

Efectivamente, hay cuatro imágenes porque hay cuatro configuraciones, no tres: La configuración series5 no tiene fichero de arranque. Para crearlo basta hacer una copia de alguno de los ficheros BAT de arranque que vimos anteriormente, nombrarlo por ejemplo e32-s5.bat y cambiarle el parámetro del ejecutable por series5, que es el nombre de los ficheros de configuración:

@echo off
REM change to drive and then directory of WSEXE.EXE
C:
cd \epoc32\release\wins\deb
epoc.exe -Mseries5 --

Esta configuración series5 tiene un tamaño de pantalla idéntico a la configuración epoc, 640x240 pixeles, el que comparten la mayoría de las primeras máquinas EPOC, las Series 5 y compatibles. La única diferencia es que la imagen asociada pretende imitar el aspecto de una máquina real de la gama Series 5.

La solución

La solución que pensé era muy sencilla: tomar las dos imágenes pequeñas, destinadas a una resolución de la máquina EPOC de 640x240, y hacer versiones nuevas ajustadas al tamaño exacto para la pantalla de 800x480 de la Asus Eee 4G.

Por supuesto había que tener en cuenta el borde propio de la ventana Windows. Tomando un pantallazo y ampliándolo pude medir los pixeles que ocupaba: 23 por arriba y 4 por cada uno de los tres lados restantes. Eso suponía que cada imagen original había que copiarla sobre un fondo de 792x453 (en este caso blanco), en la esquina superior izquierda (para que las coordenadas de los botones coincidieran). El resultado, a mitad de tamaño, es el siguiente:

Configuraciones nuevas

Los ficheros INI incluidos con el emulador especifican sólo las variables cuyo valor es diferente del predeterminado. En la documentación incluida con el emulador se detallan todas ellas con sus valores predeterminados. En los ficheros INI nuevos preferí añadir todas las variables que faltaban, con sus valores predeterminados, para facilitar futuras modificaciones:

Los comandos _epoc_drive_d y _epoc_drive_e sirven para indicar unidades de Windows que serán asociadas a las unidades D y E del emulador (y que por supuesto, en este caso, deben haber sido configuradas en Wine. No hice uso de estos comandos porque es más fácil crear enlaces simbólicos en la unidad C de EPOC (mapeada de forma predeterminada al directorio ~/.wine/Epoc32/Wins/C /) que conduzcan a los directorios que deseemos en el sistema de ficheros de Debian.

Los dos ficheros de las configuraciones nuevas son los siguientes:

epoc_ratpoison_800x480.ini

ScreenWidth 640
ScreenHeight 240
PhysicalScreenWidth 7620
PhysicalScreenHeight 2858
ScreenOffsetX 90
ScreenOffsetY 51
LedArrangeVertically
LedGap 5
LedOffsetX 36
LedOffsetY 45
LedSize 14

# _epoc_drive_d p:\

series5_ratpoison_800x480.ini

ScreenWidth 640
ScreenHeight 240
PhysicalScreenWidth 7620
PhysicalScreenHeight 2858
ScreenOffsetX 99
ScreenOffsetY 40
LedArrangeVertically
LedGap 5
LedOffsetX 36
LedOffsetY 45
LedSize 14

#  _epoc_drive_d p:\

Arrancar el emulador

En un entorno de escritorio, la instalación de un programa con Wine creará ficheros de escritorio y de menú equivalentes a los típicos seudoenlaces (ficheros .LNK) que Windows crea en su menú de inicio o en su escritorio. Pero sin esos lujos, como en este caso, hay que usar el ingenio y hacerlo todo uno mismo.

Como vimos antes, para arrancar el emulador hay que ejecutar el fichero BAT correspondiente a la configuración deseada. En Debian esto hay que hacerlo con wineconsole. Pero antes hay que cambiar el directorio de trabajo al directorio donde está el fichero BAT. Así pues, tanta para arrancar el emulador desde el menú de Debian como desde la línea de comandos, hay que hacer las dos operaciones.

Primero creé los menús en el sistema de menús de Debian. Basta escribir en el directorio ~/menu un fichero con las entradas de menú y ejecutar el comando upadate-menus.

Pero no encontré manera de ejecutar dos comandos en el parámetro command de cada entrada de menú, ni con el separador ; ni con &&. Por ello escribí un lanzador en en Bash que hace ambas operaciones (cambia el directorio y ejecuta con wineconsole el fichero BAT correspondiente al parámetro recibido).

El fichero de menú con todas las configuraciones es el siguiente:

?package(local.epoc_sys):\
    needs="x11"\
    section="Emulators/EPOC" \
    title="EPOC (640x240)"\
    longtitle="EPOC emulator for Windows NT" \
    command="~/bin/epoc_emulator.sh sys"

?package(local.epoc_sys_800x480):\
    needs="x11"\
    section="Emulators/EPOC" \
    title="EPOC (640x240) [for Ratpoison 800x480]"\
    longtitle="EPOC emulator for Windows NT" \
    command="~/bin/epoc_emulator.sh sys_ratpoison_800x480"

    # The following alternatives do not work:
    #command="cd ~/.wine/drive_c/Epoc32/Tools/ ; wineconsole ~/drive_c/Epoc32/Tools/e32-sys_ratpoison_800x480.bat &"
    #command="cd ~/.wine/drive_c/Epoc32/Tools/ && wineconsole ~/drive_c/Epoc32/Tools/e32-sys_ratpoison_800x480.bat &"

?package(local.epoc_s5):\
    needs="x11"\
    section="Emulators/EPOC" \
    title="EPOC (640x240 with 5mx skin)"\
    longtitle="EPOC emulator for Windows NT" \
    command="~/bin/epoc_emulator.sh s5"

?package(local.epoc_s5_800x480):\
    needs="x11"\
    section="Emulators/EPOC" \
    title="EPOC (640x240 with 5mx skin) [for Ratpoison and 800x480]"\
    longtitle="EPOC emulator for Windows NT" \
    command="~/bin/epoc_emulator.sh s5_ratpoison_800x480"

?package(local.epoc_vga):\
    needs="x11"\
    section="Emulators/EPOC" \
    title="EPOC (640x480)"\
    longtitle="EPOC emulator for Windows NT" \
    command="~/bin/epoc_emulator.sh vga"

?package(local.epoc_large):\
    needs="x11"\
    section="Emulators/EPOC" \
    title="EPOC (800x600)"\
    longtitle="EPOC emulator for Windows NT" \
    command="~/bin/epoc_emulator.sh lrg"


Y el lanzador:

#/bin/sh

# epoc_emulator.sh

# Boot for the EPOC emulator for Windows NT.
# By Marcos Cruz (programandala.net)

# I wrote this boot file because the following commands do not work
# in the ~/.menu/epoc_emulator Debian menu file:

# command="wineconsole ~/drive_c/Epoc32/Tools/e32-sys.bat &"
# command="cd ~/.wine/drive_c/Epoc32/Tools/ ; wineconsole ~/drive_c/Epoc32/Tools/e32-sys_for_800x480.bat &"
# command="cd ~/.wine/drive_c/Epoc32/Tools/ && wineconsole ~/drive_c/Epoc32/Tools/e32-sys_for_800x480.bat &"

# 2011-01-05 First version.
# 2011-01-26 Improved with --backend=curses parameter for wineconsole.

# $1 = ID of the BAT boot file to be launched,
# e.g. "sys" for  ~/.wine/drive_c/Epoc32/Tools/e32-sys.bat

# The config (.INI) and skin (.BMP) files for every configuration (whose name
# can be found in the BAT file as the -M parameter of the EXE file) are in
# ~/.wine/drive_c/Epoc32/Data/.

cd ~/.wine/drive_c/Epoc32/Tools/
wineconsole --backend=curses e32-$1.bat


El lanzador, lógicamente, hay que moverlo o enlazarlo en un directorio incluido en la ruta de búsqueda de ejecutables (en mi caso, ~/bin). Con ello estará accesible desde el fichero de menú y desde la línea de comandos.

Descargas