Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

MS-DOS Player for Win32-x64

Aug
1,914
68
This is an MS-DOS emulator that runs on Win32-x64 command prompt.

16bit MS-DOS compatible commands can be executed on Win32-x64 envrionment.

Last update was May 10, 2020. Tested and works on Windows 10 64-bit.

I can now run the 16-bit LIST.COM in a 64-bit TCC;
Code:
e:\dosbox\utils>msdos.exe LIST.COM
1598561958777.png

I can create a "64-bit version" of the 16-bit LIST.COM;
Code:
e:\dosbox\utils>msdos.exe -cLIST64.EXE LIST.COM
'LIST64.EXE' is successfully created

This is from the README.TXT file;
Code:
----- Convert Command File To 32bit Or 64bit Execution File

You can convert a 16bit command file to a single 32bit or 64bit execution file
by embeding a command file to the msdos.exe.

For exmaple, you can convert LIST.COM by this command:

    > msdos -cLIST32.EXE LIST.COM

and you can simply run LIST32.EXE without msdos.exe.

I also created a 4DOS64.EXE, which I can run in TCC;
Code:
e:\dosbox\4dos>E:\dosbox\utils\msdos.exe -c4DOS64.EXE 4dos.com
'4DOS64.EXE' is successfully created
1598562590212.png


A bit of a problem when EXITing 4DOS;
Code:
4DOS server error -- Attempt to exit from root shell
Fatal error -- reboot the system or restart the session
but it matters not, as I won't need to run 4DOS.COM since I have TCC.EXE

Nice to be able to run my old utilities again. Sharing this with others who may also be interested.

Joe
 
How is this different from vDos? www.vdos.info
From readme.txt:

MS-DOS Player for Win32-x64 console
4/10/2020

----- What's This

This is MS-DOS emulator running on Win32-x64 command prompt.
16bit MS-DOS compatible commands can be executed on Win32-x64 envrionment.

This emulator inherits the environment variables from the host Windows,
and a target command can access the host's file path directly.

So you can execute 16bit MS-DOS compatible commands on your 64bit Windows
in the same sence as you did on 32bit Windows, and you do not need to copy
any files to/from a virtual machine (VMware, Virtual PC, XP mode, or others).

NOTE: This emulator DOES NOT support Win16 execution files.

This emulator aims to support character user interface utilities, for example
file converters, compilers, assemblers, debuggers, and text editors.

NOTE: This emulator DOES NOT support graphic/sound hardwares and DOES NOT
aim to support game softwares. I recommend DOSBOx for this purpose.

----------------------

OPH. 2021-05-07 19:48
 
Wow this is amazing!

But I keep getting "too many environments" when I run it

1687801539907.png


1687801604273.png
 
Code:
E:\...\utils>msdos 
MS-DOS Player (i486) for Win32-x64 console

Usage:

MSDOS [-b] [-c[(new exec file)] [-p[P]]] [-d] [-e] [-i] [-m] [-n[L[,C]]]
      [-s[P1[,P2[,P3[,P4]]]]] [-sd] [-sc] [-vX.XX] [-wX.XX] [-x] [-a] [-l]
      (command) [options]

        -b      stay busy during keyboard polling
        -c      convert command file to 64bit execution file
        -p      record current code page when convert command file
        -d      pretend running under straight DOS, not Windows
        -e      use a reduced environment block
        -i      ignore invalid instructions
        -m      restrict free memory to 0x7FFF paragraphs
        -n      create a new buffer (25 lines, 80 columns by default)
        -s      enable serial I/O and set host's COM port numbers
        -sd     enable DTR/DSR flow control
        -sc     enable RTS/CTS flow control
        -v      set the DOS version
        -w      set the Windows version
        -x      enable LIM EMS, VCPI, and XMS
        -a      disable ANSI.SYS
        -l      draw box lines with ank characters

Works fine on my system;
Code:
     _x64: 1
   _admin: 1
_elevated: 1

TCC  30.00.22 x64   Windows 10 [Version 10.0.19044.3086]

Try running it as msdos.exe -d -e list.com and see if that works.

Joe
 
Which msdos.exe are you using?

I'm using the one from msdos\binary\i486_x64\
Code:
E:\...\binary>tree 

E:\Documents\msdos\binary
├──i286_x64
├──i286_x86
├──i386_x64
├──i386_x86
├──i486_x64
├──i486_x86
├──i86_x64
├──i86_x86
├──ia32_x64
├──ia32_x86
├──v30_x64
└──v30_x86

Joe
 
I used the one from v30_x64 but it wasn't really clear for me which one to use.

The msdos.exe -d -e list.com did successfully run list.com! Wow! it's been ages! I was just looking for a replacement last week haha. But then realized it's an internal command now.
 
But yea, the -c convert doesn't result in a runnable EXE, it just says "too many environments". Would be nice to be able to successfully convert. I wonder what's wrong. Am I using the wrong version?
 
It would be best to read through the msdos documentation (msdos\readme.txt), and set your dos environment up appropriately.

For example, I have the following environment variables set in TCC;
Code:
E:\Utils>set ms*
MSDOS_COMSPEC=e:\dosbox\freedos\COMMAND.COM
MSDOS_PATH=e:\dosbox\utils

This tells msdos.exe that I am using the COMMAND.COM that is included with FreeDOS.

It also tells msdos.exe that my DOS path is e:\dosbox\utils

I have no problems creating LIST64.EXE from LIST.COM, and I get no errors from running it;

1687806558836.png


The C++ source code is included, so you could step through the code using Visual Studio, and see how it does what it does

Joe
 
Did you try creating the LIST64.EXE with the -d and -e switches?
Code:
E:\...\utils>msdos -d -e -cLIST64.exe LIST.COM
'LIST64.exe' is successfully created

Joe
 
Did you try creating the LIST64.EXE with the -d and -e switches?
Code:
E:\...\utils>msdos -d -e -cLIST64.exe LIST.COM
'LIST64.exe' is successfully created

Joe

That worked! Thanks!!

I don't actually have freedos or any command.com currently
 
You stated that you are using the v30_x64 version.

That version emulates NEC V30.

Do you want to emulate NEC v30?

I am using the i486_x64 emulator.

From the readme.txt;
Code:
This archive contains 12 executable binaries:

    i86_x86     Emulates 8086 and supports both 32bit/64bit Windows
    i86_x64     Emulates 8086 and supports only 64bit Windows
    i286_x86    Emulates 80286 and supports both 32bit/64bit Windows
    i286_x64    Emulates 80286 and supports only 64bit Windows
    i386_x86    Emulates 80386 and supports both 32bit/64bit Windows
    i386_x64    Emulates 80386 and supports only 64bit Windows
    i486_x86    Emulates 80486 and supports both 32bit/64bit Windows
    i486_x64    Emulates 80486 and supports only 64bit Window
    v30_x86     Emulates NEC V30 and supports both 32bit/64bit Windows
    v30_x64     Emulates NEC V30 and supports only 64bit Windows
    ia32_x86    Emulates IA32 and supports both 32bit/64bit Windows
    ia32_x64    Emulates IA32 and supports only 64bit Windows

Joe
 
Well, i got all my old stuff converted, thanks! this is like finding a box in my attic....
 
So, I'm back, haha.

I'm trying to convert some windows 3.1 stuff. Or maybe it's a Windows 95 program. Or Windows 98. Sheep.exe. It drew a cute sheep that walked around on top of your windows. I just really thought it'd be fun to bring it back.

Maybe it's not possible with this one... But maybe you've seen this situation before and know how to handle it???

1696590938342.png
 
MS-DOS Player is for DOS programs.

Sheep.exe is a Windows program.

You can determine the application type for Sheep.exe by using the @EXETYPE function;
Code:
echo %@exetype[sheep.exe]

the MSDos Player -w option,
which sets the Windows Version number,
tells DOS programs that they are running under a version of Windows,
and that the DOS program can make calls into the Windows API,
for example,
CALL INTERRUPT &H2F,
the DOS Multiplex Interrupt,
which,
if I remember,
was used to check to see if SHARE.EXE was loaded,
access the Windows Clipboard, etc.

You need to use Otvdm/Winevdm if you want to run 16-bit Windows programs,
such as Sheep.exe

Note that unlike MSDos Player,
Otvdm/Winevdm cannot create stand-alone 64-bit Windows .EXEs for the 64-bit Windows OS.

Here's how I run the Windows 3.1 version of Calculator on my 64-bit Windows 10 system;
Code:
start /pgm otvdmw.exe --app-name e:\dosbox\windows\calc.exe

Here's how I run the Windows 3.1 version of Cardfile on my 64-bit Windows 10 system;
Code:
start /pgm otvdmw.exe --app-name e:\dosbox\windows\cardfile.exe

Hope this helps.

Joe

Ref: Otvdm/winevdm
Ref: GitHub - otya128/winevdm: 16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows
 
Back
Top