Contributor: LIN KE-FONG { Here is a small piece of code to detect if you are running under a Linux's dosemu dos box. Truly definitive version. .. update !! Copyright (C) 1996 Lin Ke-Fong. Donated to public domain. Feel free to ask me any questions at: * lin.ke-fong@ace.epita.fr * ke-fong.lin@nuxes.frmug.net.fr } function dosemu_Detect:boolean; assembler; { This function use two methods (which are "official") to detect dosemu. First if dosemu is present, the BIOS date string at 0xF000:0xFFF5 should be "02/25/93". Second interrupt $E6 called with ah = 0 should return $AA55 in ax register when in a dosemu dos box. Note that interrupt $E6 should be "initialized" to point to an IRET instruction since it is often pointed on nothing by BIOS. } asm push ds { check for the BIOS date } mov ax,$F000 mov ds,ax mov bx,$FFF5 mov ax,'20' cmp word ptr [bx],'20' jne @no_dosemu cmp word ptr [bx+2],'2/' jne @no_dosemu cmp word ptr [bx+4],'/5' jne @no_dosemu cmp word ptr [bx+6],'39' jne @no_dosemu { initialize interrupt $E6 to an IRET } xor ax,ax mov ds,ax mov bx,$E6 * 4 les di,[bx] mov bl,es:[di] mov byte ptr es:[di],$CF { put an iret instruction } { call the installation check interrupt (int $E6 with ah = 0) } xor ah,ah int $E6 mov es:[di],bl { restore the old instruction } cmp ax,$AA55 jne @no_dosemu mov ax,01h jmp #end #no_dosemu: xor ax,ax @end: pop ds end; begin if dosemu_Detect then writeln('Hello dosemu ! and hello Linux !') else writeln('dosemu > MSDOS 7 :-)'); end.