Emulando MSDOS com doscmd em FreeBSD

Autor: GorristeR
Data: 11 de agosto de 2002


Introdu��o:

Doscmd te permite criar uma "m�quina virtual" de msdos. Seguramente hoje em dia n�o tenha muita utilidade, mas penso que pode ser util se desejas implementar em alguma empresa FreeBSD e ainda t�m algum PC com um programa "tipo clipper" de msdos, o qual s� funciona em msdos puro e duro, j� que numa janela de Windows n�o vai nem patr�s (esquece-te de Wine e se n�o � um m�quina potente o VMWare, ser� demasiada carga.

Igual pode interessar este artigo a algu�m que apontou a dire��o de seu primeiro ligue de ver�o (l� pelos tempos de Ver�o Azul) e o guardo num fichero do FRAMEWORK e n�o h� forma de poder l�-lo. Eu me decidi a us�-lo pensando que poderia provar desde meu Free esses velhos jogos como o Monkey Island(tm) ou os Goblins. Lamentavelmente doscmd n�o suporta ainda o uso de rato, som ou os modos gr�ficos VESA :(.

De todas formas, ainda que n�o v�-o usar, dei-me conta de que a informa��o sobre o mesmo (pa n�o variar) � zero, mas n�o um zero qualquer: �Um zero patatero!. Assim que espero que estas lineas lhe sirvam a algu�m ao menos para poupar-se o instalar o wine ou o vmware s� para executar um simples EXE ou COM.

Bueno, n�o me enrolo mais vamos ao lio...

Instalando:

Ainda que pare�a mentira, doscmd n�o est� nos ports, forma parte do Sistema Operativo, os sources se encontram em usr //src/usr.bin/doscmd. Por alguma estra�a raz�o o suporte para X n�o vem definido por defeito pelo que tereis que editar o fichero Makefile e adicionar a seguinte linea ao princ�pio:

X11BASE=    /usr/X11R6.

Logo um Make install e nuns pouco segundos j� o tendes pronto :D.

Configurando (1/2):

Antes de executar doscmd, � necess�rio ter um fichero de configura��o onde h� que indicar alguns par�metros b�sicos. Este fichero � $HOME/.doscmdrc. Inicialmente, deveremos indicar-lhe as seguintes lineas:

assign A:  /dev/fd0 1440
assign A:  /dev/fd0.720 720
assign hard /home/gorr/msdos/boot_drive 306 4 17.

As 2 primeiras lineas se referem ao ponto de montagem que vai fazer de unidade A:, poniendolo assim nos assegur�mos que funcionem tanto os disquetes de 720 Kb como os de 1440Kb. A �ltima linea, refere-se � unidade "virtual" lhe pomos uma geometria como a de um disco duro de 10 Megas. Pode-se p�r a geometria ou s� o par�metro "tipo" (ver tabelas de geometrias dispon�veis com man doscmd).

IMPORTANTE: Na terceira linea, n�o me funcionou p�r para indicar minha $HOME, tive que p�r a rota completa. Se n�o o fazeis assim, n�o funcionar� fdisk.

Disco de arranque MSDOS:

Devereis ter um disquete arrancable de MSDOS, recomendo-vos uma vers�o entre o 5.0 e o que traz o W95, vers�es superiores poderiam dar-vos problemas. Este disquete deve ter os seguintes comandos: FDISK, SYS e FORMAT. Logo devereis copiar nele o fichero redir.com, que se encontra no diret�rio de doscmd .

Em www .bootdisk.com, tendes muitos discos de arranque de diferentes vers�es de MSDOS, DRDOS, etc.

Quando o tenhais, iniciar doscmd, come�ar� o arranque do disquete e vos aparecer� ao final o t�pico prompt A:\>. J� podeis teclear FDISK para criar um "disco duro" e n�o ter que depender do disquete. Selecionais %[1] Criar partici�n ou unidade l�gica DOS, %[1] Criar partici�n prim�ria DOS. Sair de FDISK e terminar dosemu. Voltar a lan��-lo e desde o prompt fazeis um FORMAT C: e depois um SYS C: para fazer a unidade C: arrancable. Devereis p�r REDIR.COM no AUTOEXEC.BAT. E se ides usar v�rias unidades LASTDRIVE=Z em CONFIG .SYS. Logo s� � copiar os ficheros que preciseis desde A: a C:.

Configurando (2/2):

Uma vez que podais arrancar desde C:, adicionar a linea boot C: ao .doscmdrc. Tamb�m podeis usar os diret�rios que queirais e trat�-los como unidades DUAS. Os nomes de ficheros ser�o automaticamente convertidos a 8.3. Por exemplo, para usar /usr/ports como s� leitura e /tmp leitura/escritura, faremos o seguinte:

assign D: -ro /usr/ports
assign E: /tmp

O fichero de configura��o tem v�rias op��es mais, para manejar o porto paralelo, o s�rie e at� para utilizar SETVER num determinado comando. Podeis var mais info nas p�ginas man.

Resolu��o de problemas:

Crio que doscmd � um das aplica��es com as que mais problemas me encontrei, explico-vos aqui os problemas que encontrei durante a instala��o e a configura��o e como os resolvi:

N�o pude criar nenhuma partici�n com FDISK. Provei v�rias vers�es do DUAS e diferente geometria de disco, mas nunca mo detectou. Ao final tive que copiar os ficheros DOS que queria emular num diret�rio de meu $HOME e arrancar desde o disquete. Espero que voc�s tenhais mais sorte.

Se vos desaparecesse o fichero redir.com durante o processo de make como a mim (Estou seguro de que estava a primeira vez que hize um ls), com s� fazer um uudecode redir.com.uu o criareis.

A mim me dava erro o make install, dizia-me algo do fichero ems....sys que si que estava pelo que fiz um make all e logo o make install.

Se vos sa�sse o erro doscmd: Could not open font ``vga" provai a teclear xset fp+ /usr/libdata/doscmd/fonts. Esta linea, deberiais anadirla a vosso fichero /.xinitrc se quereis que esteja ativa a pr�xima vez que inicieis as X.

Li (o sento mas perdi a URL) que s�o necess�rias adicionar estas duas lineas em vosso GENERIC e recompilar o kernel para que funcione doscmd. Eu n�o as tenho e me funciona. Se estais usando SMP *n�o* o hag�is. Aqui vos incluo tamb�m os coment�rios originais em ingl�s.

#
# Allow processes to switch to vm86 mode, as well as enabling direct
# user-mode access to the I/Ou port space.  This option is necessary for
# the doscmd emulator to run.
#
options     "VM86"

# To include support for VESA video modes
# Dont use together with SMP!!
options     VESA            # needs VM86 defined too!!

Despedida:

Sauda��es a todo #FreeBSD do hi$pano, e aos diablejos da lista de correio de eldemonio .org.

Hosted by www.Geocities.ws

1