Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasZona WindowsEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

Emuladores - DOSBoxEmuladores - E-UAE

Emuladores - DOSEMU




Emuladores - DOSEMU




Copyright

Copyright © José Luis Lara Carrascal  2007-2013   http://manualinux.freehostia.com   


 
Sumario

Introducción
Preliminares
Instalación
Configuración
Impresión con DOSEMU
Iniciamos DOSEMU
Enlaces




Introducción

DOSEMU es un emulador para MSDOS y Windows 3.1 que nos permite ejecutar las aplicaciones diseñadas para correr en estos dos sistemas. Muchos usuarios se preguntarán si DOSEMU es igual que DOSBox, pues no, DOSBox está especialmente optimizado para la emulación de juegos, así que si queremos jugar a juegos de MSDOS deberemos de usar siempre DOSBox para un mejor rendimiento de los mismos, lo cual no significa que no podamos ejecutarlos con DOSEMU. Con la instalación de DOSEMU se incluye una copia del sistema operativo Freedos (Se descarga aparte), en el caso de que tengamos cualquiera de las versiones de MSDOS podremos sustituir el uso de este sistema por el MSDOS original en sus diferentes versiones.



Preliminares  

1) Comprobar que la ruta de instalación de los binarios del programa la tenemos en nuestro PATH


Abrimos una ventana de terminal y ejecutamos el siguiente comando,

[jose@Fedora-18 ~]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jose/bin

Si no aparece entre las rutas mostradas el directorio /usr/local/bin, abrimos un editor de texto y añadimos lo siguiente,

#!/bin/sh

export PATH=/usr/local/bin:$PATH

Lo guardamos con el nombre variables.sh, y lo instalamos en /etc/profile.d.

$ su
# install -m755 variables.sh /etc/profile.d

Tenemos que cerrar el emulador de terminal y volverlo a abrir para que la variable de entorno aplicada sea efectiva. Es conveniente guardar una copia de este script para posteriores instalaciones de nuestro sistema, teniendo en cuenta que es el que se va a utilizar a partir de ahora en todos los manuales de esta web, para establecer variables de entorno globales, excepto en aquellas que sólo afectan al usuario, en las que se utilizará el archivo de configuración personal, ~/.bashrc.

La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.

2) Comprobar que la variable de entorno 'XDG_DATA_DIRS' incluye el directorio /usr/local/share

Esta variable se aplica para que los archivos desktop ubicados en un directorio específico del sistema puedan ser leídos por los menús de entornos gráficos como XFce 4, o paneles como LXPanel o Fbpanel. Este aspecto es bastante delicado porque cada distribución es un mundo y lo mejor que podemos hacer es establecer una variable de entorno global que incluya todos los directorios predefinidos del sistema que incluyen archivos desktop, siempre y cuando el directorio /usr/local/share no esté incluido por defecto en la distribución de turno. Para saberlo basta abrir el menú de aplicaciones en cualquiera de los programas antes comentados y comprobar que aparece la entrada correspondiente a la aplicación tratada en este manual. Si no es así, en el mismo archivo /etc/profile.d/variables.sh, añadimos lo que está en rojo:

#!/bin/sh

export PATH=/usr/local/bin:$PATH

export XDG_DATA_DIRS=/usr/share:/usr/local/share:$XDG_DATA_DIRS

3) Desinstalar versiones anteriores del programa ubicadas en el directorio /usr

Aún en el caso de que la versión a compilar la vayamos a instalar en el mismo directorio que la que proporciona la distribución, siempre se debe desinstalar previamente la versión antigua, para evitar conflictos innecesarios.



Instalación  

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado DOSEMU para la elaboración de este documento.

* GCC - (4.7.2)
* Gawk - (4.0.2)
* M4 - (1.4.16)
* Make - (3.82)
* Automake - (1.13.1)
* Bison - (2.7)
* Autoconf - (2.69)
* Flex - (2.5.37)

Librerías de Desarrollo

* Xorg o XFree86 - (Xorg 7.7 / xorg-server 1.13.2)
   LibICE - (1.0.8)
   LibX11 - (1.5.0)
   LibXext - (1.3.1)
   LibXxf86vm - (1.1.2)
* SDL - (1.2.15)
* S-Lang - (2.2.4)
* SVGAlib - (1.9.25)
* ALSA - (1.0.26)
* Gpm - (1.20.7)
* Libsndfile - (1.0.25)

Aplicaciones

* Wget - (1.14) [1]

[1] Requerido para poder descargarnos los iconos del archivo desktop desde internet.



Descarga

dosemu-1.4.0.tgz  |  dosemu-freedos-1.0-bin.tgz

Optimizaciones  

$ export {CFLAGS,CXXFLAGS}='-O3 -march=barcelona'

Donde pone barcelona se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2.x e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Valores CPU
generic Produce un código binario optimizado para la mayor parte de procesadores existentes. Utilizar este valor si no sabemos el nombre del procesador que tenemos en nuestro equipo. Este valor sólo es aplicable en la opción '-mtune='. Esta opción está disponible a partir de GCC 4.2.x.
i386 Intel i386.
i486 Intel i486.
i586, pentium Intel Pentium sin soporte de instrucciones MMX.
pentium-mmx Intel PentiumMMX basado en Pentium con soporte de instrucciones MMX.
pentiumpro Intel PentiumPro.
i686 Produce un código binario optimizado para la mayor parte de procesadores compatibles con la serie 80686 de Intel. Todos los actuales lo son.
pentium2 Intel Pentium2 basado en PentiumPro con soporte de instrucciones MMX.
pentium3, pentium3m Intel Pentium3 basado en PentiumPro con soporte de instrucciones MMX y SSE.
pentium-m Versión de bajo consumo de Intel Pentium3 con soporte de instrucciones MMX, SSE y SSE2. Utilizado por los portátiles Centrino.
pentium4, pentium4m Intel Pentium4 con soporte de instrucciones MMX, SSE y SSE2.
prescott Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2 y SSE3.
nocona Versión mejorada de Intel Pentium4 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2 y SSE3.
core2 Intel Core2 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3 y SSSE3. Esta opción está disponible a partir de GCC 4.3.x.
corei7 Intel Core i7 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible a partir de GCC 4.6.x.
corei7-avx Intel Core i7 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES y PCLMUL. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible a partir de GCC 4.6.x.
core-avx-i Intel Core (ivyBridge) con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND y F16C. Esta opción está disponible a partir de GCC 4.7.x.
core-avx2 Intel Core (Haswell). Esta opción está disponible a partir de GCC 4.7.x.
atom Intel Atom con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3 y SSSE3. Esta opción está disponible a partir de GCC 4.5.x.
k6 AMD K6 con soporte de instrucciones MMX.
k6-2, k6-3 Versiones mejoradas de AMD K6 con soporte de instrucciones MMX y 3DNow!.
athlon, athlon-tbird AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y SSE prefetch.
athlon4, athlon-xp, athlon-mp Versiones mejoradas de AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y full SSE.
k8, opteron, athlon64, athlon-fx Procesadores basados en AMD K8 core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, 3DNow!, enhanced 3DNow! y extensiones 64-bit).
k8-sse3, opteron-sse3, athlon64-sse3 Versiones mejoradas de AMD K8 core con soporte de instrucciones SSE3. Esta opción está disponible a partir de GCC 4.3.x.
amdfam10, barcelona Procesadores basados en AMD Family 10h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.3.x.
btver1 Procesadores basados en AMD Family 14h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, CX16, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.6.x.
bdver1 Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.7.x.
bdver2 Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (BMI, TBM, F16C, FMA, LWP, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.7.x.
winchip-c6 IDT Winchip C6, que equivale a un i486 con soporte de instrucciones MMX.
winchip2 IDT Winchip2, que equivale a un i486 con soporte de instrucciones MMX y 3DNow!.
c3 Via C3 con soporte de instrucciones MMX y 3DNow!.
c3-2 Via C3-2 con soporte de instrucciones MMX y SSE.
geode AMD integrado con soporte de instrucciones MMX y 3DNow!. Esta opción está disponible a partir de GCC 4.3.x.
native Produce un código binario optimizado para el procesador que tengamos en nuestro sistema, siendo éste detectado utilizando la instrucción cpuid. Procesadores antiguos pueden no ser detectados utilizando este valor. Esta opción está disponible a partir de GCC 4.2.x.

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf dosemu-1.4.0.tgz
$ cd dosemu-1.4.0
$ sed -i '39d' src/base/init/lexer.h
$ ./configure --with-fdtarball=../dosemu-freedos-1.0-bin.tgz \
--with-target-cpu=barcelona --with-svgalib --mandir=/usr/local/share/man

Explicación de los comandos

sed -i '39d' src/base/init/lexer.h : Soluciona un error de compilación con las últimas versiones de Flex, en concreto éste:

lex.yy.c:2020:11: error: tipos en conflicto para 'yyget_leng' In file included from lexer.l:58:0:

--with-fdtarball=../dosemu-freedos-1.0-bin.tgz : Le indicamos la ruta al paquete del binario de Freedos que nos hemos bajado junto con el de DOSEMU.
--with-target-cpu=barcelona : Complementamos las optimizaciones anteriormente aplicadas con este parámetro con el que definimos la opción '-mtune=' que es utilizada por defecto por el script configure y con un parámetro definido de -mtune=i586. Donde pone barcelona se indica el procesador respectivo de cada sistema seleccionándolo de la lista del apartado de arriba.
--with-svgalib : Si tenemos instalada la librería gráfica Svgalib añadir esta opción.
--mandir=/usr/local/share/man : Instala las páginas de manual del programa en /usr/local/share/man, en lugar de /usr/local/man.

Compilación

$ make

Parámetros de compilación opcionales

-j2 : Si tenemos un procesador de doble núcleo (dual-core), y el kernel está optimizado para el mismo y es SMP, con este parámetro aumentaremos el número de procesos de compilación simultáneos a un nivel de 2 y aceleraremos el tiempo de compilación del programa de forma considerable.
-j4 : Lo mismo que arriba pero con procesadores de 4 núcleos (quad-core).

Instalación como root

$ su
# make install
# for i in /usr/local/share/icons/hicolor ; do \
install -dm755 $i/{16x16,24x24,32x32,48x48,64x64,128x128,256x256}/apps ; \
wget -c http://files.softicons.com/download/system-icons/pleasant-icons-by-harwen-zhang/\
png/256/MS-DOS-Application.png -O $i/256x256/apps/dosemu.png ; \
wget -c http://files.softicons.com/download/system-icons/pleasant-icons-by-harwen-zhang/\
png/128/MS-DOS-Application.png -O $i/128x128/apps/dosemu.png ; \
wget -c http://files.softicons.com/download/system-icons/pleasant-icons-by-harwen-zhang/\
png/64/MS-DOS-Application.png -O $i/64x64/apps/dosemu.png ; \
wget -c http://files.softicons.com/download/system-icons/pleasant-icons-by-harwen-zhang/\
png/48/MS-DOS-Application.png -O $i/48x48/apps/dosemu.png ; \
wget -c http://files.softicons.com/download/system-icons/pleasant-icons-by-harwen-zhang/\
png/32/MS-DOS-Application.png -O $i/32x32/apps/dosemu.png ; \
wget -c http://files.softicons.com/download/system-icons/pleasant-icons-by-harwen-zhang/\
png/24/MS-DOS-Application.png -O $i/24x24/apps/dosemu.png ; \
wget -c http://files.softicons.com/download/system-icons/pleasant-icons-by-harwen-zhang/\
png/16/MS-DOS-Application.png -O $i/16x16/apps/dosemu.png ; \
gtk-update-icon-cache -t $i &> /dev/null ; \
done

Instalación del archivo de configuración personal en nuestro home

$ cp /etc/dosemu/dosemu.conf ~/.dosemurc

Creación del archivo dosemu.desktop

Para que DOSEMU sea detectado por los menús de entornos gráficos como XFce 4 o paneles como LXPanel o Fbpanel, abrimos un editor de texto y añadimos lo siguiente: 

[Desktop Entry]
Encoding=UTF-8
Name=DOSEMU
GenericName=Emulador
Comment=Un emulador de MSDOS
Exec=xdosemu
TryExec=xdosemu
Icon=dosemu
Categories=Application;System;Emulator
Type=Application

Lo guardamos con la codificación de caracteres UTF-8, y con el nombre dosemu.desktop. Luego lo instalamos como root en /usr/local/share/applications. La desinstalación y respaldo de este archivo viene incluida en los scripts correspondientes proporcionados en este manual.

$ su
# install -dm755 /usr/local/share/applications
# install -m644 dosemu.desktop /usr/local/share/applications

Directorio de configuración personal

~/.dosemu Es el directorio de configuración personal de DOSEMU en nuestro home
~/.dosemu/drive_c Al igual que en Wine el directorio donde podemos instalar o copiar los programas de MSDOS es ~/.dosemu/drive_c, también podemos crear enlaces desde las particiones windows que tengamos montadas en /mnt a ~/.dosemu/drives siguiendo la correlación en el nombre de los dispositivos, e,f,g,h, etc. Y lo que hago yo es crear un enlace simbólico entre mi directorio home y ~/.dosemu/drive_c para poder tener acceso a todos los archivos que tengo en el mismo.

$ ln -s /home/jose /home/jose/.dosemu/drive_c

Archivo de configuración personal

~/.dosemurc Es el archivo de configuración personal de DOSEMU en nuestro home

Desinstalación como root

1) MODO TRADICIONAL

Este programa no tiene soporte para desinstalación con el comando 'make uninstall'

2) MODO MANUALINUX

El principal inconveniente del comando anterior es que tenermos que tener el directorio de compilación en nuestro sistema para poder desinstalar el programa. En algunos casos esto supone muchos megas de espacio en disco. Con el paquete de scripts que pongo a continuación logramos evitar el único inconveniente que tiene la compilación de programas, y es el tema de la desinstalación de los mismos sin la necesidad de tener obligatoriamente una copia de las fuentes compiladas.

dosemu-1.4.0-scripts.tar.gz

$ su 
# tar zxvf dosemu-1.4.0-scripts.tar.gz
# cd dosemu-1.4.0-scripts
# ./Desinstalar_dosemu-1.4.0

Copia de Seguridad como root

Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.

$ su 
# tar zxvf dosemu-1.4.0-scripts.tar.gz
# cd dosemu-1.4.0-scripts
# ./Respaldar_dosemu-1.4.0

Restaurar la Copia de Seguridad como root

Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.

$ su 
# cd /var/copibin/restaurar_copias
# ./Restaurar_dosemu-1.4.0



Configuración de DOSEMU  Bloc de Notas

Éste es un ejemplo del archivo de configuración del programa con los comentarios traducidos al español.

1) Opciones de CPU: define las características de la CPU para DOSEMU
2) Opciones de disco y sistema de archivos
3) Opciones de memoria
4) Opciones de depuración
5) Modificaciones específicas de Dosemu
6) Opciones relacionadas con la terminal
7) Opciones relacionadas con el teclado
8) Opciones del ratón
9) Configuración del mando de juego
10) Opciones del puerto serie
11) Opciones del puerto paralelo y la impresora
12) Opciones de altavoz y sonido
13) Opciones de red
14) Opciones específicas para el sistema X Window (xdosemu, dosemu -X)
15) Acceso directo al hardware
16) Consola de vídeo

##############################################################################
# Este archivo es el dosemu.conf del sistema o el archivo de usuario ~/.dosemurc,
# incluido con global.conf o dosemu.bin.
#
# ./doc/README.txt (capítulo 2.) contiene una descripción de la sintaxis
# y el uso de dosemu.conf y .dosemurc.
#
# Los valores comentados aquí son los predefinidos, sólo a efectos de documentación
# Las opciones marcadas [priv] no pueden ser cambiadas en ~/.dosemurc.
#
# (opcional) los derechos de acceso se definen en
#
#      /etc/dosemu/dosemu.users o /etc/dosemu.users
#
##############################################################################



# Notas para la edición de este archivo:
#
#   En    $_xxx = (n)    n es un valor numérico o booleano
#                  =     =
#   En    $_zzz = "s"    s es una cadena
#
# ¡Por favor, tenga en cuenta que todas las opciones están comentadas por defecto!
# Suprimir # antes de $ para cambiar una opción.


##############################################################################
## Opciones de CPU: define las características de la CPU para DOSEMU.

# CPU mostrada para DOS, valores válidos:  "80[23456]86"
# Por defecto: 80586

$_cpu = "80686"

# Uso de emulación de cpu: "off" ( on por defecto en x86),
# Sólo "vm86"  (on por defecto en x86-64) o "full" (vm86 y DPMI, ¡experimental!).
# Usar "vm86sim" o "fullsim" para usar simulación en lugar de generación de código JIT.

# $_cpu_emu = "off"

# si es posible usar contador de ciclos de Pentium para medir el tiempo. Por defecto: off

# $_rdtsc = (off)

# Velocidad de la CPU, usado en combinación con el TSC
# Por defecto 0 = calibrado por dosemu, de forma dada (ej.166.666)

# $_cpuspeed = (0)

# FPU emulada, (off) o (on), por defecto = (on)

# $_mathco = (on)

# 0 = todo la potencia de la CPU para DOSEMU; por defecto = 1 = mejor, cuanto más alto, más potencia de CPU

# $_hogthreshold = (1)

##############################################################################
## Opciones de disco y sistema de archivos  

# Lista de hdimages o directorios de inicio dentro de
# ~/.dosemu, el directorio de configuración del sistema (/etc/dosemu por defecto), o
# syshdimagedir (/var/lib/dosemu por defecto) asignado en este orden
# tal como "hdimage_c directory_d hdimage_e"
# También se permiten las rutas de nombres absolutas.
# Si el nombre empieza con '/dev/', entonces el disco entero o partición de acceso es
# aceptado en lugar de la imagen_hdi vitual tal como "/dev/hda", "/dev/hda1" o
# "/dev/hda1:ro" para sólo lectura
# Los dispositivos montados actualmente y la swap son rechazados. Hdimages y los dispositivos pueden
# ser mezclados como "hdimage_c /dev/hda1 /dev/hda3:ro". Por defecto: "drives/*"

# $_hdimage = "drives/*"

# Si usted quiere iniciar desde una disquetera virtual:
# nombre de archivo de la imagen de disquete bajo DOSEMU_LIB_DIR
# ej. "floppyimage" desactiva $_hdimage
#      "floppyimage +hd" no desactiva $_hdimage. Por defecto: ""

# $_vbootfloppy = ""

# tipos de dispositivo de disquetera: "threeinch" o "fiveinch" o "atapi" o vacío,
# si no existe. De forma opcional el dispositivo puede ser añadido tal como
# "threeinch:/dev/fd0". Por defecto: "threeinch" for A:, "" for B:

# $_floppy_a = "threeinch"
# $_floppy_b = ""

# Lista de dispositivos CDROM. Hasta 4 están soportados. Usted puede especificar
# archivos de imagen. Usted necesita cargar cdrom.sys y mscdex/nwcdex/shsucdx.exe.
# Por defecto: "/dev/cdrom"

$_cdrom = "/dev/hdb"

# lista de dispositivos genéricos SCSI que estén disponibles para el driver aspi interno
# (el formato de una entrada es 'device:type:mappedtarget' tal como
# "sg2:WORM sg3:Sequential-Access:6 sg4:CD-ROM" o
# "sg2:4 sg3:1:6 sg4:5" (que es igual). Por defecto: ""

# $_aspi = ""

# si hay que bloquear el archivo completo en las unidades lredired en las peticiones de bloqueo de archivo
# o solamente hay que bloquear un byte

# $_full_file_locks = (off)

# activa/desactiva el soporte de nombres de archivo largos para las unidades lredired;
# por defecto: on

# $_lfn_support = (on)

# config.sys   -> config.XXX; predefinido="" o 3 car.,

# $_emusys = ""

# system.ini   -> system.XXX; predefinido="" o 3 car., (para Windows 3.x)

# $_emuini = ""

##############################################################################
## Opciones de memoria

# tamaño de memoria convencional de DOS, en Kbytes, <= 768.
# Por defecto: 640

# $_dosmem = (640)

# Tamaño de la memoria extendida. Esta memoria es accesible vía int15h y puede ser
# usada por himem.sys y el driver interno XMS.
# Por defecto: 8192

# $_xms = (8192)

# Tamaño de EMS (memoria expandida) en Kbytes;
# Aviso: No se recomienda la desactivación de EMS (off). Si se desactiva
# le asignará un espacio UMB adicional de 64K, pero con el efecto lateral
# de que será desactivado el traductor de API de modo de DOS protegido,
# provocando que algunas aplicaciones en modo protegido dejen de funcionar.
# Por defecto: 2048

# $_ems = (2048)

# Segmento de DOS dónde el marco de SME es ubicado.
# Default: 0xe400

# $_ems_frame = (0xe400)

# Tamaño de memoria DPMI en Kbytes; por defecto: 0x5000

# $_dpmi = (0x5000)

# Dirección base DPMI; por defecto: auto
# Si el valor predefinido falla, probar 0x10000000

# $_dpmi_base = (auto)

# Algunos programas compilados con DJGPP contienen fallos de derefencia
# del puntero NULOS. Éstos pueden funcionar bajo Windows o QDPMI,
# pero dejarán de hacerlo bajo dosemu, porque dosemu detecta este tipo
# de errores en esta clase de programas. Si su programa se cierra con el mensaje
# "SIGSEGV", activando esta opción probablemente le servirá de ayuda.

# $_ignore_djgpp_null_derefs = (0)

# driver preferido de mapeado, uno de: auto, mapshm, mapashm, mapfile
# Por defecto: ""="auto"

# $_mapping= ""

##############################################################################
## Opciones de depuración  

# conmutadores de depuración; el mismo formato que la opción de línea de comandos -D, por defecto: ""="-a+cw".
# (pero sin el -D delante), normalmente se escriben en ~/.dosemu/boot.log

# $_debug = "-a+cw"

# qué puertos i/o serán rastreados (sólo se mostrarán si usted usa también -D+T)
# vea $_ports más abajo para la sintaxis

# $_trace_ports = ""

##############################################################################
## Modificaciones específicas de Dosemu  

# seleccione la procedencia de la hora del sistema para la emulación RTC. Valores posibles:
# "pit", "bios" y "linux". La procedencia de la hora, "linux", seguirá los cambios de
# tiempo del sistema, pero no permitirá establecer la hora desde DOS.
# La procedencia "bios" es monótona (no seguirá los cambios de tiempo del sistema),
# pero permitirá establecer la hora del sistema desde DOS.

# $_timemode = "bios"

# establezca esto en algún valor positivo (ejemplo. Por defecto: 10)
# si usted va a jugar a Doom o Duke3D con sonido.

# $_cli_timeout = (10)

# pruebe a ajustar esto a algún valor positivo más bajo (ejemplo. 5; por defecto: 50)
# si tiene problemas con algún programa de DOS que se bloquea después de estar
# funcionando algún tiempo.

# $_pic_watchdog = (50)

# lista de modificaciones temporales, vea las notas de publicación en el archivo ChangeLog.
# ejemplo. "0:1 2:0", que debe de establecer feature_0 a 1 y feature_2 a 0.
# Por defecto: ""

# $_features= ""

##############################################################################
## Opciones relacionadas con la terminal

# Codificación de caracteres usada externamente por dosemu
# Por defecto: "" == usa la codificación de caracteres establecida desde las locales o en su lugar:
# "cp437", "cp737", "cp773", "cp775", "cp850", "cp852", "cp857", "cp860",
# "cp861", "cp862", "cp863", "cp864", "cp865", "cp866", "cp869", "cp874",
# "cp1125", "cp1251"
# "iso8859-1", "iso8859-2", "iso8859-3", "iso8859-4", "iso8859-5", "iso8859-6",
# "iso8859-7", "iso8859-8", "iso8859_9", "iso8859-14", "iso8859-15", "koi8-r"
# "koi8-u", "koi8-ru", "utf8"

# $_external_char_set = ""

# Codificación de caracteres usada por los programas de dos
# Por defecto: "" == usa "cp437" o en su lugar:
# "cp437", "cp737", "cp773", "cp775", "cp850", "cp852", "cp857", "cp860",
# "cp861", "cp862", "cp863", "cp864", "cp865", "cp866", "cp869", "cp874",
# "cp895", "cp1125", "cp1251", "bg-mik"

# $_internal_char_set = ""

# terminal con soporte de color. Por defecto: (on)

# $_term_color = (on)

# intervalo de tiempo entre cada refresco de pantalla (unidades: 20 == 1 segundo). Por defecto: 4

# $_term_updfreq = (4)

# xterm, títulos de ventana compatibles. Por defecto: %s - DOSEMU
# donde %s es el nombre del programa de DOS. Usar "" para no cambiar el título

# $_xterm_title = "%s - DOSEMU"

# Esquema de adaptador de vídeo usado: uno de: vga, ega, mda, mga, cga, none
# Por defecto: "vga"; none=modo de terminal muda.

# $_video = "vga"

##############################################################################
## Opciones relacionadas con el teclado

# Esquema de teclado: por defecto: 'auto' (se intentará generá la tabla desde las opciones
# de consola del sistema Linux)
# o uno de: finnish(-latin1), de(-latin1), be, it, us, uk, dk(-latin1),
# keyb-no, no-latin1, dvorak, pl, po, sg(-latin1), fr(-latin1), sf(-latin1),
# es(-latin1), sw, hu(-latin2), hu-cwi, keyb-user, hr-cp852, hr-latin2,
# cz-qwerty, cz-qwertz, ru, tr.

# $_layout = "auto"

# desviación normal de entrada del teclado en la consola Linux, quizá peligroso.
# por defecto: (auto), usar sólo con -s o -k, o (0): off, usar -k, o (1): on.

# $_rawkeyboard = (auto)

# 30 == Ctrl-^ (Ctrl-6 en teclados US), prefijo de secuencia especial para las terminales
# usar Ctrl-^ h para la ayuda

# $_escchar = (30)

##############################################################################
## Opciones del ratón  

# Usar el driver de ratón interno. Por defecto = (on).

# $_mouse_internal = (on)

## ** Las opciones siguientes del ratón son IGNORADAS para cualquier sesión DOSEMU excepto en las que
## ** la consola Linux utiliza suid/sudo/root, el conmutador -s, y $_graphics=(1).

# Protocolo del ratón: uno de (microsoft, mousesystems, logitech, mmseries,
# mouseman, hitachi, busmouse, ps2, imps2).
# Por defecto: "microsoft"

# $_mouse = "microsoft"

# Dispositivo del ratón: si usted va a utilizar el driver interno del ratón, puede poner
# el dispositivo real del ratón como: "/dev/input/mice", "/dev/mouse", "/dev/psaux"
# (para PS/2), o "/dev/gpmdata" (para el uso del repetidor GPM).
# si en cambio, intenta usar el driver de puerto del ratón de DOS, entonces tiene que poner
# uno de "com1", "com2", "com3", "com4", y el driver interno del ratón será desactivado.
# El valor por defecto "" significa: no leer el dispositivo del ratón de forma directa (ningún ratón en
# la consola, modo "$_graphics=(1)", pero GPM todavía puede utilizarse en otros modos).

# $_mouse_dev = ""

# Por defecto: "" o uno o más de: "emulate3buttons cleardtr"

# $_mouse_flags = ""

# velocidad en baudios, por defecto: 0 == no ajustar

# $_mouse_baud = (0)

##############################################################################
## Configuración del mando de juego

# Dispositivos joystick 1 y 2
# ejemplo. "/dev/js0" o por defecto: "/dev/js0 /dev/js1"
#      (o "" si usted no desea soporte de joystick)

# $_joy_device = "/dev/js0 /dev/js1"

# rango para la lectura de los ejes del joystick, debe ser > 0, por defecto: 1

# $_joy_dos_min = (1)

# evitar las opciones de máximo a > 250, por defecto: 150

# $_joy_dos_max = (150)

# el más alto, el menos sensible - útil si usted tiene un joystick tambaleante.
# default: 1

# $_joy_granularity = (1)

# el retardo entre las lecturas no bloqueantes del joystick linux incremente el rendimiento si >0
# y el procesador>=Pentium recomendado: 1-50ms o 0 si no está seguro. por defecto: 1

# $_joy_latency = (1)

##############################################################################
## Opciones del puerto serie

# usar ejemplo. "/dev/mouse", "/dev/ttyS0", "/dev/ttyS1", ...
# Nota: todos los "/dev/ttyXX" pueden ir precedidos del sufijo con el IRQ
# utilizado (en lugar del valor predefinido), como "/dev/ttyS2 irq 5"
# o "/dev/ttyS3 irq 9". Por defecto: ""

# $_com1 = ""
# $_com2 = ""
# $_com3 = ""
# $_com4 = ""

# directorio de bloqueo de tty. Una cadena vacía "" significa sin bloqueos de tty.
# por defecto: "/var/lock"

# $_ttylocks = "/var/lock"

##############################################################################
## Opciones del puerto paralelo y la impresora  

# Comandos de impresión a utilizar para LPT1, LPT2 y LPT3.
# Por defecto: "lpr -l", "lpr -l -P lpt2", y "" (desactivado)
# Que significa: utilizar la cola de impresión predefinida para LPT1, "lpt2" cola para LPT2.
# "-l" significa modo de impresión crudo (sin preprocesado).

# $_lpt1 = "lpr -l"
# $_lpt2 = "lpr -l -P lpt2"
# $_lpt3 = ""

# tiempo de retardo en segundos antes de la salida de impresión. Por defecto: (20)

# $_printer_timeout = (20)

##############################################################################
## Opciones de altavoz y sonido  

# altavoz: por defecto: "emulated", o "native" (sólo consola) o "" (off)

# $_speaker = "emulated"

# soporte de sonido on/off; usar (2) para el nuevo código de sonido experimental

# $_sound = (on)

# (¡emulado!) Sound Blaster base puerto i/o, por defecto: (0x220)

# $_sb_base = (0x220)

# Opciones de IRQ de Sound Blaster, por defecto: (5)

# $_sb_irq = (5)

# Opciones de canal DMA de 8 bits de Sound Blaster, por defecto: (1)

# $_sb_dma = (1)

# Opciones de canal DMA de 16 bits de Sound Blaster, por defecto: (5)

# $_sb_hdma = (5)

# Dispositivo de sonido, por defecto: "/dev/dsp"

# $_sb_dsp = "/dev/dsp"

# Dispositivo mezclador de sonido, por defecto: ""; usar "/dev/mixer" si usted le permite a dosemu
# los cambios de volumen

# $_sb_mixer = ""

# Puerto i/o de base midi

# $_mpu_base = (0x330)

# Las opciones siguientes son específicas del driver y no son necesarias para alterar los
# los valores predefinidos en la mayoría de los casos. Leer sound-usage.txt para más detalles.
# Por defecto: min_frags: 4, max_frags: 0x20, stalled_frags: 2, do_post: off,
# min_extra_frags: 2, dac_freq: 6000.

# $_oss_min_frags = (4)
# $_oss_max_frags = (0x20)
# $_oss_stalled_frags = (2)
# $_oss_do_post = (off)
# $_oss_min_extra_frags = (2)
# $_oss_dac_freq = (6000)

##############################################################################
## Opciones de red

# Activa el packet driver interno. Por defecto: on

# $_pktdriver = (on)

# Tipo de red virtual. "direct" para acceso directo NIC, "tap" para
# utilizar el dispositivo virtual TAP.
# NOTA: el método "direct" necesita privilegios de root.
# Por defecto: "tap"

# $_vnet = "tap"

# Dispositivo de red para Packet Driver. Para el modo de acceso directo NIC, se puede
# ajustar a, por ejemplo, "eth0". Para el modo de red virtual TAP, tiene que ajustarse
# de forma explícita, como "tap0", para enlazar a un dispositivo TAP existente,
# o dejarlo en blanco para una ubicación dinámica de un dispositivo TAP. Cualquier opción
# que no se inicie con "tap", es ignorada en el modo TAP y permitida sólo en modo direct.
# Por defecto: "eth0"

# $_netdev = "tap0"

# usar modificación Novell 802.3. Por defecto: off

# $_novell_hack = (off)

# NOTA: IPX requiere de privilegios de root a menos que usted haya ajustado /proc/net/ipx_route
# de antemano.
# Por defecto: (off)

# $_ipxsupport = (off)

# Dirección de red IPX a utilizar. Una de las que estén listadas en /proc/net/ipx/interface.
# Dirección 0 significa usar la red de interfaz primaria, si existe, a la que estará vinculada.
# Por defecto: 0

# $_ipx_network = (0)

##############################################################################
## Opciones específicas para el sistema X Window (xdosemu, dosemu -X)

# intervalo de tiempo entre cada refresco de pantalla (unidades: 20 == 1 segundo). Por defecto: 5

# $_X_updfreq = (5)

# Título en la barra de la ventana. Por defecto = "DOS in a BOX"

# $_X_title = "DOS in a BOX"

# Mostrar el nombre de la aplicación que está corriendo en el título de la barra de la ventana. Por defecto: on

# $_X_title_show_appname = (on)

# Texto para el icono, cuando esté minimizado. Por defecto = "xdosemu"

# $_X_icon_name = "xdosemu"

# Iniciar DOSEMU en modo de pantalla completa. Por defecto = "off"

# $_X_fullscreen = (off)

# on==traduce el teclado mediante el uso del mapa del teclado de dosemu, o 'off' o 'auto'. Por defecto:auto

# $_X_keycode = (auto)

# velocidad del parpadeo del cursor

# $_X_blinkrate = (12)

# nombre de la fuente X para ser utilizada (ejemplo. "vga") por defecto = "" (fuentes de mapa de bits)

# $_X_font = ""

# Usar extensiones de memoria compartida. Muy rápido, pero problemático con X remoto.
# Por defecto: on

# $_X_mitshm = (on)

# compartir el mapa de color con otras aplicaciones. Por defecto: off

# $_X_sharecmap = (off)

# Establecer un aspecto fijo para el redimensionado de los gráficos de la ventana. Por defecto: on

# $_X_fixed_aspect = (on)

# Utilizar siempre una razón de aspecto de 4:3 para los gráficos. Por defecto: off

# $_X_aspect_43 = (off)

# Utilizar un filtrado lineal para la interpolación >15 bpp. Por defecto: off

# $_X_lin_filt = (off)

# Utilizar un filtrado bilineal para la interpolación >15 bpp. Por defecto: off

$_X_bilin_filt = (on)

# factor de tamaño inicial para el modo de vídeo 0x13 (320x200)

# $_X_mode13fact = (2)

# "x,y" o tamaño inicial de las ventanas (defaults to ""=flotante)

# $_X_winsize = ""

# corrección de gamma. Por defecto: 1.0

$_X_gamma = (1.5)

# tamaño (en Kbytes) del frame buffer para la emulación vga. Por defecto: 4096

# $_X_vgaemu_memsize = (4096)

# usar un frame buffer lineal en los modos VESA. Por defecto: on

# $_X_lfb = (on)

# usar interfaz de modo protegido para los modos VESA. Default: on

# $_X_pm_interface = (on)

# Nombre KeySym para activar la captura del ratón, ""=off. Por defecto: "Home" (ctrl+alt+inicio)

# $_X_mgrab_key = "Home"

# Lista de los modos vesa para añadir. La lista tieene que contener ESPACIOS separados-
# "xres,yres" en parejas, como los siguientes: "xres,yres ... xres,yres". Por defecto: ""

# $_X_vesamode = ""

# pausar xdosemu si pierde el enfoque

# $_X_background_pause = (off)

##############################################################################
## Acceso directo al hardware

# NOTA:las opciones siguientes marcadas con [priv] sólo son válidas en el archivo
# dosemu.conf del sistema y no pueden ser cambiadas con ~/.dosemurc.
# Para que estas opciones tengan efecto, DOSEMU tiene que ejecutarse con privilegios de root;
# ya sea corriendo como root o sudo/suid con modificación en el archivo dosemu.users,
# y usando el conmutador -s.

# [priv] lista de números de puertos como "0x1ce 0x1cf 0x238" o
# "0x1ce range 0x280,0x29f 310" o "range 0x1a0,(0x1a0+15)". Por defecto: ""
# $_ports = "device /dev/null fast 0x200"
# $_ports = $_ports, " device /dev/lp0 range 0x378 0x37a"
# El espacio en blanco es importante
# "device" significa: si el puerto está registrado, abre este dispositivo para bloquear el
# acceso. La apertura tiene que haberse realizado o el acceso a los puertos será denegado.
# Si usted sabe lo que está haciendo, utilice /dev/null para simular un dispositivo a bloquear.

# $_ports = ""

# [priv] lista de números de IRQ (2-15) a pasarle a DOS como "3 8 10".Por defecto: ""
# Esto no funciona en x86-64.

# $_irqpassing = ""

# [priv] memoria de DOS a mapear de forma directa: lista de segmentos de valores/rangos como

# "0xc8000 range 0xcc000,0xcffff". Por defecto: ""

# $_hardware_ram = ""

# [priv] (on): dar acceso al espacio de configuración PCI.
# (auto): restrictivo, el acceso principalmente emulado si la tarjeta de vídeo lo requiere.
# Por defecto: (auto)

# $_pci = (auto)

##############################################################################
## Consola de vídeo

# Las opciones siguientes se aplican directamente en la consola de vídeo (no en X)
# Muchas son privilegiadas, y requieren de suid/sudo/root y el conmutador -s.

# usar 'console' vídeo (acceso directo a la ram de vídeo). Por defecto: (1)

# $_console = (1)

# usar la BIOS de la tarjeta para ajustar los gráficos y permitir puerto i/o directo. Por defecto: (1)

# $_graphics = (1)

# [priv] ejecutar el BIOS de la tarjeta VGA de rutina de inicialización (muchas tarjetas no
# necesitan esto). Por defecto: (0)

# $_vbios_post = (0)

# [priv] ajustar la dirección de su VBIOS (ejemplo. 0xc000, 0xe000).
# Por defecto: (0)=autodetectar.

# $_vbios_seg = (0)

# [priv] ajustar el tamaño de su BIOS (ejemplo. 0x10000, 0x8000).

# Por defecto: (0)=autodetectar.

# $_vbios_size = (0)

# [priv] cantidad en K de RAM (real) de video para guardar/restaurar
# cuando se conmute entre las consolas virtuales. (auto) significa toda la RAM de vídeo,
# que puede tornarse *muy* largo si usted tiene mucha memoria de vídeo.
# (off) significa que no se guardará ninguna RAM de vídeo.
# Por defecto: 4096

# $_vmemsize = (4096)

# [priv] chipset real: uno de: plainvga, trident, et4000, diamond, avance
# cirrus, matrox, wdvga, paradise, ati, s3, sis, svgalib
# es probable que estos drivers estén obsoletos para las tarjetas modernas; "vesa"
# probablemente funcione, si no, pruebe "plainvga". Por defecto: "vesa"

# $_chipset = "vesa"

# [priv] si usted tiene más de un monitor (2 monitores)

# $_dualmon = (0)



Impresión con DOSEMU  

Añado esta información adicional sobre el uso de la tarea de imprimir con DOSEMU, porque la explicación del archivo de configuración es poco clara. Abrimos una ventana de terminal y ejecutamos el siguiente comando:

[jose@localhost ~]$ lpstat -p
la impresora HP_Deskjet_F4200_series_USB_CN8862F1R305C3_HPLIP está inactiva.  activada desde lun 04 oct 2010 21:56:33 CEST

Una vez que tenemos el nombre de la impresora, lo añadimos (lo que está en rojo) en la sección correspondiente del archivo de configuración de DOSEMU.

##############################################################################
## Opciones del puerto paralelo y la impresora  

# Comandos de impresión a utilizar para LPT1, LPT2 y LPT3.
# Por defecto: "lpr -l", "lpr -l -P lpt2", y "" (desactivado)
# Que significa: utilizar la cola de impresión predefinida para LPT1, "lpt2" cola para LPT2.
# "-l" significa modo de impresión crudo (sin preprocesado).

$_lpt1 = "lpr -P
HP_Deskjet_F4200_series_USB_CN8862F1R305C3_HPLIP"
# $_lpt2 = "lpr -l -P lpt2"
# $_lpt3 = ""

# tiempo de retardo en segundos antes de la salida de impresión. Por defecto: (20)

# $_printer_timeout = (20)

##############################################################################

Y ya podremos imprimir desde cualquier programa de MSDOS que vayamos a utilizar con DOSEMU.



Iniciamos DOSEMU  

Sólo nos queda teclear en una terminal o en un lanzador el comando xdosemu, y el emulador aparecerá en la pantalla:

NOTA IMPORTANTE: Si al ejecutar el comando xdosemu, el programa no se inicia y se muestra este mensaje en la terminal (en el caso de que lo hagamos desde una terminal):

[jose@localhost ~]$ xdosemu
LOWRAM mmap: Argumento inválido
Violación de segmento

Tendremos que ejecutar el siguiente comando como root antes de ejecutar el programa:

$ su
# echo 0 > /proc/sys/vm/mmap_min_addr

Para hacer esto permanente y evitar el engorro de tener que hacerlo cada vez que iniciemos DOSEMU, abrimos como root, el archivo /etc/sysctl.conf con un editor de texto y añadimos al final del mismo el parámetro que está en color rojo. Un ejemplo:

# Kernel sysctl configuration file for Mandriva Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Disables IP dynaddr
net.ipv4.ip_dynaddr = 0
# Disable ECN
net.ipv4.tcp_ecn = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Controls the System Request debugging functionality of the kernel
#kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1

# If you set this variable to 1 then cd tray will close automatically when the
# cd drive is being accessed. Setting this to 1 is not advised as it has been
# known to cause problems when supermount is enabled.
dev.cdrom.autoclose=0
# removed to fix some digital extraction problems
# dev.cdrom.check_media=1

# to be able to eject via the device eject button (magicdev)
dev.cdrom.lock=0
net.ipv4.icmp_ignore_bogus_error_responses=0
net.ipv4.conf.all.rp_filter=0
net.ipv4.icmp_echo_ignore_broadcasts=0
net.ipv4.icmp_echo_ignore_all=0
net.ipv4.conf.all.log_martians=0
kernel.sysrq=1

vm.mmap_min_addr = 0



Captura DOSEMU - 1


Si lo ejecutamos con la opción -S utilizaremos SDL para el renderizado gráfico,

xdosemu -S

Captura DOSEMU - 2


Captura DOSEMU - 3




Enlaces


http://dosemu.sourcerforge.net >> La web de DOSEMU


Foro Galería Blog


Actualizado el 11-02-2013

Emuladores - DOSEMU

Emuladores - DOSBoxEmuladores - E-UAE