386 DOS Environments (Part 1)
Quarterdeck Desqview and QEMM-386
Why should OS/2 got all the multitasking for! Sure, OS/2 was a very revolutionary thing. The operating system brought a powerful multitasking, multi-threading environment with memory management and protection for computer users. Programs ran in the "protected mode" offered by the 286, which could use as much memory as was available, and not limited by the 640KB barrier imposed by DOS.
However, the original OS/2 v1.x though still had limits. It was bloated for starters. Also, the OS conformed to the quirks and limitations of the 286 processor. This limited it's ability to run DOS applications to one single session that ran full-screen via a DOS "box". Since control shifted from OS/2 to DOS, a badly misbehaving DOS program could still crash the whole computer. What about users that needed to run multiple DOS applications at the same time.
MS-DOS conformed to the specs
of the Intel 8086/8088 processor. When Intel designed the 286 processor,
DOS was still establishing itself among operating systems, so there was
no fore-sight about how this single-tasking OS would eventually
dominate the world. It was assumed that with time, DOS users would
migrate to more advance OS's on more powerful hardware, like Xenix, and
use the UNIX ports of those applications. However, DOS flourished, and
its compatibility meant the difference between success and failure.
DOS became very popular because anyone which a PC could program for the machine using a variety of languages like assembler, C, or GW-BASIC. DOS didn't impose limits on programs, and as such, everything available was there's for the taking. Essentially, programmers could write programs that could bypass DOS calls and directly access the hardware in the machine. Environments like Xenix, and later, OS/2 and Windows, refused to let programs directly access hardware. The access was still there, but it had to be done through libraries which dictated the program access the device. Programs conformed to the environment via a API (Application Programming Interface). DOS also used few system resources and tend to be light-weight as an environment, which provided greater benefit of programmers writing code that took all the RAM and resources to there taking. This allowed DOS to quickly dominate the PC market.
The 386 Processor
When the 386 processor was being designed, DOS by now commanded a strong lead in the market, and thus, its compatibility was moved to the forefront. The Intel 386 processor introduced a "Virtual 8086" mode. This mode emulated a virtual Intel 8086 processor that could be used as the 386 was running at the same time. The 386, like the 286, had a "protected mode" with provided these powerful features. The virtual 8086 mode allowed DOS programs to be virtualized in protected mode. The DOS program would be tricked into believing that it was running on a standalone PC when it was really running within a virtualized environment within alongside other applications.
An environment designed for the 386 would allow its user to take full advantage of the features of the 386 while providing backward compatibility to DOS programs at the same time. It wasn't like OS/2 on the 286 where one had to switch back and forth between OS/2 and its DOS environment. Also, multiple 8086 sessions could run at the same time. The 386 processor provided support for virtualized serial ports and graphics as well, so multiple program could have access to peripheral devices and run such programs in a window as well.
Microsoft was never fans of the 286 port of OS/2. They viewed that processor as a technological dead-end and felt that supporting the 386 was a much more worth-while proposition, as it features would be supported for various processor iterations to come. Bill Gates even referred to the 286 as the tech version of the Ford Edsel. Ouch! The only reason the 286 version was developed was because IBM made promises to people that brought the IBM PC/AT that they would receive a advance OS that was also DOS compatible. The OS/2 developers on the Microsoft side continued to work on the 386 version of OS/2, but it wasn't going full-steam as the main focus was getting the 286 version out the door.
With the advance features of the 386 recognized immediately, some would embarked on there own to extend DOS and provide it with these defining capabilities. Shell programs, or environments that provided a friendly interface over the DOS prompt, came in to providing such support for the 386.
DOS became very popular because anyone which a PC could program for the machine using a variety of languages like assembler, C, or GW-BASIC. DOS didn't impose limits on programs, and as such, everything available was there's for the taking. Essentially, programmers could write programs that could bypass DOS calls and directly access the hardware in the machine. Environments like Xenix, and later, OS/2 and Windows, refused to let programs directly access hardware. The access was still there, but it had to be done through libraries which dictated the program access the device. Programs conformed to the environment via a API (Application Programming Interface). DOS also used few system resources and tend to be light-weight as an environment, which provided greater benefit of programmers writing code that took all the RAM and resources to there taking. This allowed DOS to quickly dominate the PC market.
The 386 Processor
When the 386 processor was being designed, DOS by now commanded a strong lead in the market, and thus, its compatibility was moved to the forefront. The Intel 386 processor introduced a "Virtual 8086" mode. This mode emulated a virtual Intel 8086 processor that could be used as the 386 was running at the same time. The 386, like the 286, had a "protected mode" with provided these powerful features. The virtual 8086 mode allowed DOS programs to be virtualized in protected mode. The DOS program would be tricked into believing that it was running on a standalone PC when it was really running within a virtualized environment within alongside other applications.
An environment designed for the 386 would allow its user to take full advantage of the features of the 386 while providing backward compatibility to DOS programs at the same time. It wasn't like OS/2 on the 286 where one had to switch back and forth between OS/2 and its DOS environment. Also, multiple 8086 sessions could run at the same time. The 386 processor provided support for virtualized serial ports and graphics as well, so multiple program could have access to peripheral devices and run such programs in a window as well.
Microsoft was never fans of the 286 port of OS/2. They viewed that processor as a technological dead-end and felt that supporting the 386 was a much more worth-while proposition, as it features would be supported for various processor iterations to come. Bill Gates even referred to the 286 as the tech version of the Ford Edsel. Ouch! The only reason the 286 version was developed was because IBM made promises to people that brought the IBM PC/AT that they would receive a advance OS that was also DOS compatible. The OS/2 developers on the Microsoft side continued to work on the 386 version of OS/2, but it wasn't going full-steam as the main focus was getting the 286 version out the door.
With the advance features of the 386 recognized immediately, some would embarked on there own to extend DOS and provide it with these defining capabilities. Shell programs, or environments that provided a friendly interface over the DOS prompt, came in to providing such support for the 386.
Quarterdeck DESQview And QEMM
Quarterdeck Office Systems created a revolutionary product. Well, Desqview wasn't that new. It was originally released in 1984 as a competitor to IBM Topview on the IBM PC/AT. DESQview was a windowed environment for MS-DOS that allowed multiple DOS programs to run on the same time. DESQview could run on the XT and AT clones alike. On a XT and 286 systems, the DOS programs running under DESQview had to fit within the 640KB barrier without disk swapping.
However, in 1988, Quarterdeck released QEMM, or the Quarterdeck Expanded Memory Manager (QEMM). This driver unlocked the features of the 386 processor for DESQview or DOS programs to use, With QEMM running on PC's equipped with the 386 processor, the sky was the limit when it came to memory. Using QEMM 386, Desqview could now make use of all the memory that was in the PC. DOS programs could blast past the 640KB barrier and run in their own dedicated sessions.
Without this driver, even if your
computer had 4MB's of RAM, DOS would still only recognize the first
640KB and the rest of that memory would be non-existent. With the
driver, DOS would be able to use all the memory on the computer.
QEMM also supported the virtual 8086 mode in the processor. QEMM would load programs above the 640KB barrier. QEMM also provided disk swapping. Disk swapping is the use of hard-drive space as memory. This allowed even more programs to run at the same time. A DOS computer without DESQview and QEMM was single-tasking and restricted to 640KB of RAM, even if the machine had more memory. With these products, the PC became a powerful, multitasking workstation that made use of the advance features of the 386 processor. Multiple DOS programs could run at the same time, and they could run in a window too.
Because the 386 provided support for virtualized serial ports, it was possible to create new virtual "ports" that could use the real one. Many computers operated BBS's (Bulletin-board service), which was the precursor to the Internet. On a single tasking DOS PC, only one session of the BBS program was running, limiting the users connected to the machine to a single node. On PC's that utilized DESQview, it was possible to run multiple sessions of the BBS program on the same computer at once, allowing multiple connections because the RS-232 port was virtualized in software. Multiple nodes couple be created from a single PC running this software. DESQview became very popular among those that operated BBS's due to it's abilities of handling multiple connections and using fewer resources compared to Windows 386 or OS/2.
DESQview had other advantages compared to environments like OS/2 and Windows 386 as well. Because the Desqview shell was character based, it used fewer resources than those environments. Many modern readers would complain that this made the environment "uglier". However, at the time, machines were a lot less powerful compared to now. Running GUI environments was a very demanding proposition because of there use of graphics, which placed a heavy load on the PC. When resources are limited, you took what you can get. DESQview tend to give back a more more than what it took.
There were still limitations in this environment though. Even though DOS programs loaded in the 386 protected mode via virtual 8086 mode, DESQview itself ran in real-mode, along with the copy of the DOS environment that the other virtual machines are based on. As a result, a badly misbehaving DOS program could still crash the system.
As mentioned earlier, the 386 supported virtualized graphics as well, and QEMM provided this feature too. Graphical programs could run in a window as well. In fact, earlier versions of Windows that were designed for the Intel 8086/8088, like Windows 1 and 2, could run within a DESQview window as well. The user could switched between these programs at the same time. There were trade-offs though. First, Desqview had to be running in graphics mode (preferably using VGA). Second, because EGA and VGA had a limited color palette, the colors of the graphical program looked "off" when in the background in a window. This is because DESQview and other programs are already making use of some of the colors provided by EGA/VGA, and thus, limiting the choice of available colors for those programs. Despite these trade-offs, it was really cool that a graphical program run a character window. AutoCAD and Windows 2 was tested.
QEMM also supported the virtual 8086 mode in the processor. QEMM would load programs above the 640KB barrier. QEMM also provided disk swapping. Disk swapping is the use of hard-drive space as memory. This allowed even more programs to run at the same time. A DOS computer without DESQview and QEMM was single-tasking and restricted to 640KB of RAM, even if the machine had more memory. With these products, the PC became a powerful, multitasking workstation that made use of the advance features of the 386 processor. Multiple DOS programs could run at the same time, and they could run in a window too.
Because the 386 provided support for virtualized serial ports, it was possible to create new virtual "ports" that could use the real one. Many computers operated BBS's (Bulletin-board service), which was the precursor to the Internet. On a single tasking DOS PC, only one session of the BBS program was running, limiting the users connected to the machine to a single node. On PC's that utilized DESQview, it was possible to run multiple sessions of the BBS program on the same computer at once, allowing multiple connections because the RS-232 port was virtualized in software. Multiple nodes couple be created from a single PC running this software. DESQview became very popular among those that operated BBS's due to it's abilities of handling multiple connections and using fewer resources compared to Windows 386 or OS/2.
DESQview had other advantages compared to environments like OS/2 and Windows 386 as well. Because the Desqview shell was character based, it used fewer resources than those environments. Many modern readers would complain that this made the environment "uglier". However, at the time, machines were a lot less powerful compared to now. Running GUI environments was a very demanding proposition because of there use of graphics, which placed a heavy load on the PC. When resources are limited, you took what you can get. DESQview tend to give back a more more than what it took.
There were still limitations in this environment though. Even though DOS programs loaded in the 386 protected mode via virtual 8086 mode, DESQview itself ran in real-mode, along with the copy of the DOS environment that the other virtual machines are based on. As a result, a badly misbehaving DOS program could still crash the system.
As mentioned earlier, the 386 supported virtualized graphics as well, and QEMM provided this feature too. Graphical programs could run in a window as well. In fact, earlier versions of Windows that were designed for the Intel 8086/8088, like Windows 1 and 2, could run within a DESQview window as well. The user could switched between these programs at the same time. There were trade-offs though. First, Desqview had to be running in graphics mode (preferably using VGA). Second, because EGA and VGA had a limited color palette, the colors of the graphical program looked "off" when in the background in a window. This is because DESQview and other programs are already making use of some of the colors provided by EGA/VGA, and thus, limiting the choice of available colors for those programs. Despite these trade-offs, it was really cool that a graphical program run a character window. AutoCAD and Windows 2 was tested.
Programs could be specifically written to run under Desqview as well. These programs could also pre-emptive multitask and make use of memory beyond 640KB. However, very few Desqview-specific programs exists. Most use it as a DOS multitasker, where Desqview did not disappoint. Because COM serial ports could be multitasked on 386-eqipped PC's, many users who operated BBS sites would run Desqview on their main workstation and virtualize the serial ports so multiple BBS sessions could run on their PC at the same time. Thus, more users could connect to a single workstation on those multiple connections virtualized by Desqview.
Desqview also supported the virtualized graphics capabilities offered by the 386 processor. Graphical DOS programs could run in a window. Desqview was a very powerful product for its time. It turned that single-tasking 386-equipped PC into that powerful workstation.
86Box is emulating a 16MHz, 386-eqipped PC with 4MB's of RAM along with a Trident 8900 SVGA Adapter. The emulated computer has two 30MB hard-disc images connected to it and MS-DOS v3.30A is installed.
When the AT-386 PC loads, the first 1MB, or 1024KB of RAM, is treated as conventional memory. However, conforming to the memory map that has been in place since the IBM PC in 1981, the first 640KB of that RAM is used for applications, while the remaining 384KB is used for BIOS functions. Out of that 640KB of conventional DOS memory available, DESQview/QEMM is using 588KB of which 37KB is remaining. The memory is used to load QEMM and DESQview itself, along with DOS environment that is copied into the 386 protected region when the virtual 8086 mode is utilized.
The memory above the 1MB mark is expanded memory, of which there is a additional 2MB's, or 2048KB, available. Like conventional memory, around 272KB of the expanded memory is used by the system for BIOS functions, leaving a total of 1776KB for applications to used. Out of the 1776KB in the system, there is 528KB available.
What this means is that there is still enough physical memory before QEMM has to start resorting to disk swapping, which is already occurring. It's safe to assume that some parts of both Lotus 123 and WordPerfect are stored as "virtual memory" on the hard-drive for later use when needed.
QEMM can use virtual memory. Virtual memory is the ability to use hard-drive space as memory. the main trade-off though is that because hard-drive access is much slower than memory access, the use of virtual memory tended to be much slower in performance. With the Memory Status program, virtual memory is listed as "Common Memory", of which there is a total of 20MB's allocated. Of that 20MBs, there is still 13.5MB's available for use. The difference between the "Total Available" and "Largest Available" is that while the total available represents well...the total, the program, divided into memory segments, might not fit within the space of the total available, hence the difference between "total" and "largest" available amount of memory for the program to use.
When the AT-386 PC loads, the first 1MB, or 1024KB of RAM, is treated as conventional memory. However, conforming to the memory map that has been in place since the IBM PC in 1981, the first 640KB of that RAM is used for applications, while the remaining 384KB is used for BIOS functions. Out of that 640KB of conventional DOS memory available, DESQview/QEMM is using 588KB of which 37KB is remaining. The memory is used to load QEMM and DESQview itself, along with DOS environment that is copied into the 386 protected region when the virtual 8086 mode is utilized.
The memory above the 1MB mark is expanded memory, of which there is a additional 2MB's, or 2048KB, available. Like conventional memory, around 272KB of the expanded memory is used by the system for BIOS functions, leaving a total of 1776KB for applications to used. Out of the 1776KB in the system, there is 528KB available.
What this means is that there is still enough physical memory before QEMM has to start resorting to disk swapping, which is already occurring. It's safe to assume that some parts of both Lotus 123 and WordPerfect are stored as "virtual memory" on the hard-drive for later use when needed.
QEMM can use virtual memory. Virtual memory is the ability to use hard-drive space as memory. the main trade-off though is that because hard-drive access is much slower than memory access, the use of virtual memory tended to be much slower in performance. With the Memory Status program, virtual memory is listed as "Common Memory", of which there is a total of 20MB's allocated. Of that 20MBs, there is still 13.5MB's available for use. The difference between the "Total Available" and "Largest Available" is that while the total available represents well...the total, the program, divided into memory segments, might not fit within the space of the total available, hence the difference between "total" and "largest" available amount of memory for the program to use.
The above
screenshot shows a graphical program running in a DESQview window, which
in this case, is AutoCAD running in EGA mode. dBase III Plus is running
in the background, along with the memory status program. Because
Desqview and QEMM always load in the same manner, the amount of
Conventional (DOS) Memory rarely changes. Because AutoCAD is a more
demanding program from a graphical perspective, if will need more memory
than dBase, WordPerfect, or Lotus 123. This explains why there is less
expanded memory available compare with the previous screenshot. There is
also less swap-space available (plenty still though).
Desqview could run Microsoft Excel, a Windows application, in a window. Many early Windows programs shipped with a runtime version of Windows included because the library of Windows applications was so small. What this meant for Desqview was that not just Microsoft Excel, but Windows 2 itself could run in a window.
Because the program is at the forefront and active, the Desqview VGA
driver allocated the appropriate colors to program.
When Windows was in the background, the available colors gets swapped out to the active program that needs them (since EGA/VGA had a very limited number of colors to display on the screen at once).
In the days right
before Windows 3.0, DESQview enjoyed limited success, but never enjoyed
widespread use. QEMM, which was sold separately, was one of the most
popular memory managers on PC's. As computers became more powerful,
GUI's became the mainstream, the demand for DOS memory managers
decreased in a world that was becoming more Windows-oriented. Still
though, both QEMM and DESQview were very remarkable products that gave
DOS multitasking capabilities. It helped define the PC as a capable
workstation.
Work Cited:
PCEM - https://pcem-emulator.co.uk/
Intel 286 - https://en.wikipedia.org/wiki/Intel_80286
Intel 386 - https://en.wikipedia.org/wiki/Intel_80386
DESQview - https://en.wikipedia.org/wiki/DESQview
QEMM - https://en.wikipedia.org/wiki/QEMM
Quarterdeck Office Systems - https://en.wikipedia.org/wiki/Quarterdeck_Office_Systems
Virtual 8086 Mode - https://en.wikipedia.org/wiki/Virtual_8086_mode
PCEM - https://pcem-emulator.co.uk/
Intel 286 - https://en.wikipedia.org/wiki/Intel_80286
Intel 386 - https://en.wikipedia.org/wiki/Intel_80386
DESQview - https://en.wikipedia.org/wiki/DESQview
QEMM - https://en.wikipedia.org/wiki/QEMM
Quarterdeck Office Systems - https://en.wikipedia.org/wiki/Quarterdeck_Office_Systems
Virtual 8086 Mode - https://en.wikipedia.org/wiki/Virtual_8086_mode
Comments
Post a Comment