From the monthly archives:

June 2008

Reviviendo MS-DOS 6.22 con QEMU

by Jorge Machin on June 30, 2008 · 0 comments

in Emuladores, Fedora, Linux, Videojuegos

Al hacer el post de mis videojuegos favoritos, me di cuenta que algunos de ellos ya no los puedo jugar ni usando wine o dosemu. Afortunadamente queda la alternativa de usar un emulador de "PC" e instalar en ellos DOS, Windows 3.11 o Windows95 para disfrutarlos otra vez. Efectivamente, al emular la PC se obtiene una computadora lenta, pero las computadoras de esa época eran igual de lentas y actualmente no se nota la diferencia cuando se juega en una máquina virtual.

Utilicé el conocido emulador QEMU porque funciona en Windows, Linux y Mac y las imágenes creadas son completamente intercambiables.

Instalando QEMU

En Fedora:

La instalación es con yum:

yum install kqemu

Si quiere utilizar aceleración por hardware, QEMU tiene un módulo que ejecuta directamente el código de máquina si se esta en una maquina compatible con los microprocesadores de Intel. Este se levanta como cualquier otro módulo:

modprobe kqemu

En Windows:

Solamente se necesita bajar y descomprimir el archivo zip con los binarios de la siguiente página: http://www.h7.dion.ne.jp/~qemu-win/. No hay archivo de instalación.

En este post se va asumir que todo se hace desde la línea de comando. Si usted prefiere, puede intentar usar el programa Qemu manager.

Si desea utilizar la aceleración por hardware, es necesario que baje e instale el archivo Kqemu-version-install.exe.

Instalado MS-DOS 6.22

El primer paso es crear una imagen del disco duro donde vamos a instalar todo, para ello ejecutamos el comando:

qemu-img create dos622.img 1000M

El nombre de la imagen donde instalaremos es dos622.img y su tamaño es de 1 GB. Es usted libre de cambiar el tamaño a sus necesidades.

El siguiente paso es instalar el MS-DOS. Afortunadamente cuento con unas imágenes de los diskettes de una computadora que tuve. Si usted tiene los diskettes los puede utilizar dando la ruta o creando primero una imagen usando dd o windd. El comando para hacer la imagen de los diskettes sería de la forma:

dd bs=2x80x18b if=/dev/fd0 of=/tmp/disk1.image

Ahora que si no cuenta con un sistema operativo MS-DOS original, podría intentar con FreeDOS o con DR-DOS, que igual y son mejores porque su desarrollo continúa hasta la fecha. Yo utilicé MS-DOS porque los tengo a la mano y usar los originales fue parte de este reto personal.

Con las imagenes o los diskettes a la mano, ejecutamos el comando:

qemu -boot a -fda disk1.img -hda dos622.img

En Windows es necesario agregar el parámetro L al directorio donde esta la instalación. Si estamos sobre el directorio de instalación el comando se transforma en:

qemu -L . -boot a -fda disk1.img -hda dos622.img

Desde aquí se puede seguir la instalación normal del MS-DOS.


¿Evocando pesadillas del pasado?

Los cambios de diskette que pide el instalador se pueden hacer accediendo a la consola, la cual se abre con las teclas 2 y usando el comando:

change floppy0 disk2.img

Si QEMU no conoce el dispositivo floppy0, puede ser porque su sistema lo nombre de otra forma. Para obtener los nombres de los dispositivos, puede ejecutar el siguiente comando y así cambiarlo por el correcto:

info block

Para regresar a la pantalla de instalación se presiona las teclas 1.

Una vez instalado el sistema operativo, se arranca sin la opción -boot y con todo la emulación del hardware que desee:

qemu -L .  -hda dos622.img -cdrom E:

Ahora si lo desea puede configurar a su gusto los archivos CONFIG.SYS y AUTOEXEC.BAT. Los mios tienen esta forma:

CONFIG.SYS:

DEVICE=C:\DOS\SETVER.EXE
DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF
DEVICE=C:\DOS\EMM386.EXE NOEMS
DOS=HIGH
LASTDRIVE=Z
COUNTRY=003,,C:\DOS\COUNTRY.SYS
SHELL=COMMAND.COM /P /e:1024
DEVICE=C:\DOS\DISPLAY.SYS CON=(EGA,,1)
FILES=50

AUTOEXEC.BAT:

@ECHO OFF
PROMPT $p$g
PATH C:\DOS
MODE CON CODEPAGE PREPARE=((850) C:\DOS\EGA.CPI)
MODE CON CODEPAGE SELECT=850
KEYB LA,,C:\DOS\KEYBOARD.SYS
C:\DOS\SMARTDRV.EXE /X
C:\DOS\SHARE.EXE /L:500
C:\DOS\DOSKEY.COM

Si necesita transferir archivos a la partición, en Linux, puede montar la imagen con el siguiente comando:

mount -o loop,offset=32256 dos622 punto_de__montaje

En windows, se pueden crear imágenes iso para leerlas desde QEMU, usar una disketera virtual como VFD o bien ver un directorio de nuestra máquina con el parámetro:

-hdb fat:/mi_directorio

Soporte para CD

Por lo general, los controladores de las unidades de disco compacto se incluían con ellas. Afortunadamente en el sitio 4DOS.infi se puede bajar unos controladores de Acer compatibles con atapi que funcionan correctamente con qemu.

Después de bajar el archivo APICD214.ZIP y transifir VIDE-CDD.SYS a nuestra imagen, se agrega la siguiente línea al archivo CONFIG.SYS:

DEVICE=C:\VIDE-CDD.SYS /D:MSCD001

y esta al AUTOEXEC.BAT:

C:\DOS\MSCDEX.EXE /S /D:MSCD001

Después de reiniciar, ya tenemos acceso a la unidiad de discos.

Soporte para ratón

Podemos usar el controlador CuteMouse que es un ejecutable que podemos agregar al AUTOEXEC.BAT.

Aceleración por hardware

Si ya tiene instalado o cargado los módulos de kqemu, solo necesita agregar la opción -kernel-kqemu

{ 0 comments }

Para convertir archivos .docx, .xlsx y .pptx a versiones anteriores, una soloción es instalar en Windows, el paquete de compatibilidad de Office. Se puede bajar de la siguiente URL que no requiere ninguna validación:

http://office.microsoft.com/en-us/products/HA101686761033.aspx

No es necesario tener instalado Office. Si quiere ver los archivos es necesario tener instalado los visores correspondientes.

{ 0 comments }

Muchas de las primeras máquinas de 8 bits de antaño e incluso sistemas embebidos, rutinas de criptografía o de mátematicas de la actualidad se programan en lenguaje ensamblador para sacar la máxima velocidad a los microprocesadores.

La CoCo y el lenguaje de máquina
La CoCo y el lenguaje de máquina
según el manual del usuario

Obviamente al ser de bajo nivel es un lenguaje muy talachudo en el que uno debe ser muy ordenado y tener en la mente muy claro lo que se está haciendo. No he tenido la oportunidad de utilizarlo profesionalmente desde que no programo microcontroladores pero de vez en cuando leo, modifico o hago algunos scripts para mi vieja computadora de 8 bits; ya sea para su sistema operativo NitrOS-9 o en el mismísimo DECB.

Programa "Hello World"

Mi primer programa en ensamblador del microprocesador 6809 en NitrOS-9 fue el clásico "Hello World":

* Program hello

              nam    hello

* Add OS-9 definitions

              ifp1
              use /dd/defs/defsfile
              endc

tylg          set    Prgrm+Objct
atry          set    ReEnt+rev
rev           set    $01
edition       set    $01

              mod    eom,name,tylg,atrv,start,size

              org    0
              rmb    450
size          equ    .

name          fcs    /hello/
              tcb    edition

* Text to output:

hello         fcc    "Hello World!"
crtn          fcb    C$CR
heLen         equ    *-hello

* Program start

start         lda    #1            send to stdout
              leax   >hello,pcr    address of the data to write
              ldy    #heLen        number of bytes to write
              os9    I$WritLn

* Program exit

              clrb                  no errors
 end          os9       F$Exit      terminate

              emod
              equ       *
              end

El cual se compila con el siguiente comando:

asm hello.asm -o #16k

Como se puede ver en el código, al igual que muchos sistemas operativos como el MS-DOS, mucha de su programación consiste en llamar rutinas (os9) del sistema operativo, llamadas al BIOS o interrupciones del microprocesador, por lo que la programación puede llegar a ser menos complicada de lo que parece.

Técnicas especiales

Al programar en ensamblador en NitrOS-9, se debe siempre escribir código independiente de la posición porque el sistema operativo asigna las direcciones dependiendo de la memoria disponible. Esto se hace utilizando los comandos BRA, LBRA, BSR y LBSR. Para obtener las direcciones de constantes y tablas, se debe usar instrucciones LEA en lugar de las instrucciones inmediatas LD.

Para saber más...

La documentación con las especificaciones de las llamada al sistema, las podemos encontrar en el manual OS-9 Technical Information y la información sobre el uso del ensamblador esta disponible en el manual OS-9 Program development.

{ 0 comments }

Este post rompe un poco con la filosofía inicial de tratar sólo temas personales en mi página, pero debido a que algunas preguntas de mis vistantes se han vuelto algo recurrentes, he decido agregar una nueva categoría para tratar de contestarlas: Servicio a la Comunidad.

Inaguramos con el tema más preguntado:

¿Cómo terminar el juego The Call of Cthulhu?

Este juego de terror es algo díficil de terminar por varias razones: algunos de los acertijos son verdaderos retos, se necesita habilidad en el shooter, no hay muchos checkpoints, el juego es algo largo y tiene unos cuantos bugs.


¿En que parte salió esto?

Afortunadamente hay varias soluciones y todas ellas ya están en la red:

Usando un parche

Existe un parche que modifica el juego para hacerlo más llevadero; como por ejemplo poder guardar cuando se quiera, hacer que las armas causen más daño e incluso corrige alguno que otro bug:

- Parche de Digital ArchAngel

Guías escritas

Ahora que si quieres saber como resolver algún acertijo, puedes consultar una de las muchas guías que existen en la red. A mí en lo particular me gusto esta:

- Paseo (Walkthrough) por Simalcrum

Videos en Youtube

Si una imagen vale más que mil palabras, con un video paso a paso es imposible no terminar el juego:

- Paseo paso a paso por goTha83

Advertencia: Aún no sabemos si Internet va ser eterno, pero estoy seguro que sus enlaces no. No dudo que después de un tiempo, las ligas que puse en este post dejen de funcionar.

{ 1 comment }

En este post iré poniendo imagenes de los juegos que realmente me han fascinado y que considero que son o fueron mis favoritos.


 Kaboom! (2600-1983)
 Kaboom! (2600-1983) Enduro (2600-1983) Hockey sobre hielo (2600-1983) Pressure Cooker (2600-1983) Cazadores del Arca Perdida (2600-1983) Streef Fighter 2 (SNES-1993) Star Fox (SNEX-1993) Doom (MS-DOS-1994) Actua Soccer (MS-DOS-1996) Myst (WIN95-1996) Need for Speed Hot Pursuit 2 (WIN98-2002) Unreal Tournament (WIN98-2002) Uru (WINXP-2003) Unreal Tournament 2004 (WINXP-2004) The Longest Journey (WIN-2005) Fahrenheit ( WINXP-2005) Elder Scrolls Oblivion ( WINXP-2006) Dreamfall ( WINXP-2006) Team Fortress 2 (WINXP-2007) Call of Duty 4 (WINXP-2007)

La ventaja de haber conocido los videojuegos desde casi el comienzo es que fuí creciendo con ellos.

Nota: Las fechas son de cuando los jugué y no de cuando salieron a la venta.

{ 0 comments }