170

Basically, Windows used the basic 16-color CGA palette, which included 4 shades of monochrome, and 12 basic colors (two each of red, green, blue, yellow, purple, and teal), which later formed the basis of the "web safe palette" that became popular during the early days of the Internet. The algorithm used back then was known as the Bayer dithering ...


135

I wrote a short python script that extracted the icons, matched them with entries from APPS.INF and generated an HTML file. Some entries were missing, so I entered them manually, except for the generic MS-DOS icons which I marked as "(no entry)". One icon was blank. You can find my moricons.py script on GitHub.


131

Basically, because it is running under Windows 3 at that point. Windows 98’s setup process goes through three main phases, in three different operating environments; each one installs the operating environment for the next, until the installation is complete. The first, which can run from the setup floppies and/or CD-ROM, uses a DOS program (DOSSETUP.BIN) ...


90

There were a number of factors involved. Windows 3.0 introduced a more refined user interface than available in Windows 2.0: more colours, proportional fonts everywhere, smaller icons, and MDI windows (multiple document windows inside an application window)... This made it "obviously" better than plain DOS to many users. Reviewers back in the day ...


85

Stephen Kitt covers the bases well, but I think the majority of the reason relates to fact that Windows 3.0 finally brought 286 protected mode execution to the masses. Even though the 80286 was first released in 1984, Windows 3.0 was the first mainstream platform that actually ran it in protected mode. That made it the first mainstream platform that could ...


81

For Win16 programs, Windows implemented co-operative multitasking. Its implementation was based upon the "message loop" architecture of every Windows program. The duty of every program was to endlessly run in a loop in which a call to the GetMessage function was performed. This function call looks whether a message to this process is in the queue. ...


42

Found a great answer on Super User that explains it really well! Windows 3.1 uses cooperative multi-tasking – meaning that each application that is in the process of running is instructed to periodically check a message queue to find out if any other application is asking for use of the CPU and, if so, to yield control to that application. However,...


40

You’ll find the mappings for these icons in SYSTEM\APPS.INF in Windows 3; this is the file which is used by Windows Setup to detect pre-existing DOS applications on the system, and set up icons for them in Program Manager. Look for “moricons.dll” and the index of the icon you’re interested in. For example the ADOS icon, index 101, corresponds to Access for ...


38

As @phyrfox mentions, it is ordered dithering using a Bayer matrix. I recently was trying to find a 16×16 Bayer matrix (256 discrete values) but all the ones I could find were 8×8 max, so I derived the algorithm. It's actually a pretty simple recursion: (Python) def InitBayer(size, value=0, step=1): matrix = [[0 for _ in range(size)] for _ in range(size)]...


33

The short answer is yes, starting with version 2.0 and even more so with Warp, OS/2 was a viable alternative for daily DOS and Windows tasks, up to and including Windows 3.x. Starting with OS/2 2.0, the first 32-bit version, OS/2 included very, very good support for DOS programs, including protected-mode and some measure of direct hardware access. This ...


33

Executable files for 16-bit Windows are usually laid out in the now-rather-inaccurately-named New Executable format. Most current Windows executable analysis tools do not support this format; they can only read files in the 32-bit and 64-bit Portable Executable format. This is what the error message you cited is trying to tell you. As for how to extract ...


32

If my memory serves well, Windows can be installed from a directory on hard disk. You need a means of reading all disks and storing its files on the same directory on the hard disk of your target machine. There may be files that are the same (DISK.ID or something). Just overwrite them. Then, invoke the INSTALL application from the copied directory. I think ...


25

TL;DR: on 286s in standard-mode Windows, DOS programs run one at a time in real mode, with Windows suspended, so the restrictions of enhanced mode which rendered DPMI necessary don’t apply. The “trick” used to allow unmodified Windows 2 programs to run in protected mode on a 286 relies largely on the fact that Windows provides a full operating system API to ...


24

One reason that Windows 3.0 was popular with software authors: it included a DOS extender, meaning that on 286 / 386 processors Windows programs could run in protected mode and access as much memory as the computer had, rather than the 640k allowed by PCDOS.


24

It was a DOS-Windows 3.x and DOS-Windows 9x/ME thing. It was a driver named speaker.drv, written by Microsoft. It turned off interrupts for significant periods of time, which caused I/O problems with other devices but which was inherent in the nature of the hardware. It came in a self-extracting archive named speak.exe, and could be found on the companion ...


23

In Windows up to version 3.x included (and early versions of OS/2), the only interface available for graphics was the Graphics Device Interface. This defines a large number of 2D graphics primitives, from simple line-drawing to font rendering. Graphics drivers implemented the GDI Device Driver Interface, with primitives matching the GDI primitives; this was ...


21

The other answers already mention that the algorithm is based on an 8×8 Bayer matrix. But that’s not the whole story. Most how-to guides to colour Bayer dithering, like the one cited in @phyrfox’s answer will have you perturb the colour’s RGB coordinates0 uniformly by the amount specified in the dithering matrix’s cell (scaled to the precision of the target ...


21

Windows executables are in NE format rather than the MZ format used by DOS, so a developer would need a toolchain capable of generating files in that format. Windows functions are not accessed by calling known fixed addresses, but by a list of imported symbols which are populated when the program is loaded. So the tools used would also have to generate ...


21

The first part isn’t too difficult: install Windows 98 as usual, then edit MSDOS.SYS to change its BootGUI setting to 0. This will disable the automatic GUI startup, and the computer will boot to a COMMAND.COM prompt. You can install Windows 3.11 in a different directory than Windows 98. Before you can, you’ll need to patch IO.SYS using Ralf Buschmann’s ...


19

The device was called the MindDrive, from a company called "The Other 90%". It had a few games available including MindSkier, which was a downhill slalom game. Nothing in particular ever happened to it, it just never caught on. The technology really has nothing to do with brainwaves at all; it's just measuring the conductance of your finger. At worst, it's ...


18

As I recall, the Windows code did have some special cases. If you asked for #C0C0C0 you would of course get solid #C0C0C0. This was a special case; if you asked for #BFBFBF then you would get a chequerboard dither using #808080 and #FFFFFF. The dither used an 8×8 matrix, so it would only approximate 18-bit colour. If all channels had a value of 128 or less ...


17

There are several reasons for the low performance of virtual memory. The implementation had a significant effect. It keeps ALL of the contents of memory in the VM Storage file, plus however much extra you've set it to, so all memory writes are also to disk also, even if not all reads are. Source Program design also affected this. Many memory-hungry ...


17

Notepad (at least originally) was implemented as a simple wrapper around the Windows EDIT control. EDIT is not really designed to handle large amounts of text -- it stores text in a single block of memory allocated via LocalAlloc (which, at least for 16-bit versions of Windows, means that it can't handle more than 64K of text in a single control, and in ...


17

Well, turns out the Wikipedia article has the answer already: WinG would also perform a graphics hardware/driver profiling test on the first execution of the program in order to determine the best way to manipulate the graphics hardware. This test showed a window full of red curved lines, sections of which would wobble as performance was tested. Once WinG ...


16

For me, the main advantage of Windows 2.0 over MS-DOS was that I could configure my printer just once and then all Windows programs used the same configuration. Also it printed graphics better than most DOS applications. But overall, Windows 2.0 was basically a technology preview of things to come... Windows 3.0 let you run MS-DOS sessions in their own ...


16

The first question would be: "with what Winsock stack?" As originally shipped, Windows for Workgroups didn't support IP at all. Somewhere along the line (but I'm not sure of the exact date) Microsoft specified the Winsock API. To use it, however, you had to install a Winsock implementation, of which there were a number (Trumpet!, Netscape, KA9Q1, ...


15

In the Windows world, the MAX_PATH 260-character limit dates back to the introduction of the Win32 APIs; it is for example documented in GetWindowsDirectory. Before that, Windows (at least in version 3) documented a 144-character limit; see for example GetSystemDirectory. As far as why the path limit is 260 characters, the general answer you’ll find on the ...


14

After doing a bit of research (on Raymond Chen's blog) one of the better examples of things Windows compilers did on 16 bit Windows was to increment BP before pushing it on the stack in a far called function (and decrementing it afterwards) so the code that walked the stack knew the size of the return address. https://devblogs.microsoft.com/oldnewthing/...


14

It was an option in (afaik) MS-Dos 6.0 and later, where you were able to define different sections in config.sys [MENU] REM syntax: Name, Descritopn MENUITEM=DOS, DOS w/o CD MENUITEM=DOSCD, DOS with CD MENUITEM=WIN, Windows [COMMON] DEVICE=C:\DOS\HIMEM.SYS DOS=HIGH,UMB [DOSCD] REM this is only loaded when "DOSCD" is selected DEVICE=C:\DOS\EMM386.EXE ...


Only top voted, non community-wiki answers of a minimum length are eligible