Ultimately, the difference between these types of programs is who has control over the computer. DOS programs generally expect themselves to be the only program running on your computer, so they will directly manipulate the harware, such as writing to the disk or displaying graphics on the screen. They may also be dependent on timing, since the computer won't be doing anything else to slow them down. Many games fall into this category.
Windows programs, on the other hand, realize that they must share your computer with other Windows programs. Actually, did you know that Windows 3.x itself is a DOS program? What this means is that Windows has control of the computer's hardware, and in turn it shares parts of the computer's resources with Windows programs. The obvious advantage to this arrangement is that you can do several things at once; for example, you could play Beethoven's 5th, start downloading a file from a BBS, look at your checking account and use Calculator to check the balance, all at the same time. Another advantage is that you can share data between programs; for example, copying a spreadsheet summary into a work processor document.
The important thing here is that many DOS programs will run poorly or not at all in Windows. For example, if you try to run Microsoft System Diagnostics (MSD) while you are in Windows, you will get the message:
You are running Microsoft Windows.
MSD can only report information specified by its associated Windows Program Information File (.PIF). Therefore information presented may be less accurate or complete than if MSD is run outside of Windows. For more accurate information please exit Windows and run MSD from the MS-DOS prompt.
Some areas may be affected while MSD is run under Windows: Memory values and types will reflect what Windows provides by itself, and through the associated .PIF file; IRQ values may be reported differently; and the visual memory map in Memory, Memory Block Display, and Memory Browser may show different results. Other areas that may be affected include Video, OS Version, Mouse, Disk Drives, and COM Ports.
In the preceeding paragraphs, replace the word 'may' with 'will'. Games aren't even that nice; they simply won't run.
So how do you know whether a program is made for DOS or Windows? Nearly all Windows programs bear the Microsoft Windows logo , while DOS programs do not. If you're still not sure, try running the program from the DOS prompt first. For example, type calc at a DOS prompt; you will get the message:
This program requires Microsoft Windows.
NOTE for Windows 95: if you try running a Windows program from the Windows 95 command prompt, the computer will simply start Windows (if it isn't already running) and run the program.
A word of warning for Windows users: in the Main group there is an icon called MS-DOS Prompt. This is not the same thing as running in DOS. It will let you run some DOS programs, such as the command prompt or the EDIT program, but it is still running on top of Windows. The proper way to switch from Windows to DOS is to close or exit all of your Windows programs, including Program Manager.
For people who use Windows 95, most of the same information given for Windows 3.x applies. Many DOS games still do not run along with Windows 95. The major difference is in how you run DOS programs.
One way to switch the computer from Windows to DOS mode is to click on the Start menu, then Shut Down, then choose "Restart the computer in MS-DOS mode". Doing this will close all Windows programs and (mostly) remove Windows itself from memory.
Another way is to adjust the properties of a DOS program. Right-click on your program (or its shortcut), select Properties, open the Program tab, and click on the Advanced button. In the Advanced Program Settings you can set the program to run in MS-DOS mode, and even specify a starting configuration just for that program.