DOS Protected Mode Services (DPMS) is a set of extended DOS memory management services to allow DPMS-enabled DOS drivers to load and execute in extended memory and protected mode. [1] [2] [3]
Not being a DOS extender by itself, DPMS is a minimal set of extended DOS memory management services to allow slightly modified DOS resident system extensions (RSX) such as device drivers or terminate-and-stay-resident programs (TSRs) (as so called DPMS clients) to relocate themselves into extended memory and run in 16-bit or 32-bit protected mode while leaving only a tiny stub in conventional memory as an interface to communicate with the conventional DOS environment. [2] [4] [5] The DPMS clients do so through DPMS services provided by a previously loaded DPMS server. [1] The necessary size of the remaining stub depends on the type of driver, but often can be reduced to a few hundred bytes for just the header even for complex drivers.
By executing the driver in extended memory and freeing up conventional memory, DPMS not only allows very large drivers to load and take advantage of the available memory, but also to leave more memory available for normal DOS drivers to load or non-extended DOS applications to execute within the space constraints of the conventional memory area. This will also help increase the amount of free system resources under Windows. Providing unified interfaces for the software to allocate and use memory in protected mode [1] without having to tunnel all requests through real mode DOS, DPMS at the same time can help improve system performance as well.
DPMS was originally developed by Novell's Digital Research GmbH, Germany, in 1992. [6] [nb 1] It is compatible with any DOS and can coexist with memory managers and DOS extenders such as DPMI, VCPI, etc. The DPMS API is reentrant [1] and compatible with multitaskers such as the DR-DOS multitasker or DESQview. [7] By providing a built-in DPMS VxD-driver, it is also compatible with Windows 3.x and Windows 9x. [7]
The DPMS server must be loaded after the memory managers (and before the drivers using it), either as a "DPMSXXX0" [7] device driver per DEVICE statement in CONFIG.SYS (preferred method), or later as a TSR. [7] For debug purposes (for example in conjunction with Microsoft's WDEB386.EXE [1] ), SDK-versions of EMM386.EXE 3.00 can alternatively provide DPMS services [1] via EMM386 [/]DPMS[=ON] through a built-in DPMS.SYS module, [8] then running at ring 1 instead of ring 0, as with the stand-alone version of DPMS.EXE. The DPMS [/]NOCR3 option allows debugging under older NuMega SoftICE versions. [8]
Depending on circumstances the server will occupy between about 700 to 1400 bytes of conventional memory by itself and cannot be loaded into UMBs. [7] [nb 2] The DPMS server will require at least a 286 machine to run, but since DPMS-enabled software can be designed in a way so that it continues to execute in conventional memory if DPMS services are not available, the software does not need to give up compatibility with systems not providing DPMS services, either because DPMS is not loaded or not available (for example on pre-286 processors). [1] [7] On 386 CPUs (and higher), the DPMS server will not only provide a set of 16-bit, but also a set of 32-bit services. [1] Even on these machines, DPMS can be forced to load only its 16-bit services using the DPMS [/]2[86] option.
DPMS will allocate memory either through VCPI or XMS, [8] depending on what kind of memory is available. VCPI will typically call down to XMS as well. Newer versions of DPMS can be forced to use one of these interfaces using the DPMS [/]MEM=XMS|VCPI option. [8] In some versions, it is possible to specify the maximum amount of extended memory to be allocated with DPMS [/]MB=nnnn. [8]
DPMS registering services can be disabled or re-enabled at any time after load using the DPMS [/]OFF or DPMS [/]ON command, however, this will only affect new drivers loaded, not those already running and using DPMS. [1] [7]
There are basically three revisions of the DPMS specification, DPMS beta, [9] [10] DPMS 1.0 (original Novell DOS 7 shipment) [1] and DPMS 1.1 (since March 1994 update). [11] The 1.0 specification continued to support the beta specification as well, whereas the 1.1 (and higher) implementation does not. [11]
DPMS saw its debut in beta versions of DR DOS "Panther" in October 1992, [8] [nb 1] which, besides others, came with DPMS-enabled versions of the Super PC-Kwik disk cache, [8] Addstor's SuperStor disk compression, [9] [8] and DEBUG as "stealth" protected mode system debugger. [8] While DPMS was already called "DOS Protected Mode Services" at this time, the DPMS.EXE/DPMS.SYS 0.10 driver would still display "DOS Protected Mode Server" startup messages. The PCMCIA card services CS in PalmDOS were DPMS-enabled as well. [8] Later retail products such as Novell DOS 7 [3] and Personal NetWare 1.0 in December 1993 also came with many DPMS-enabled drivers such as the file deletion tracking component DELWATCH 2.00, the adaptive disk cache NWCACHE 1.00, [9] [7] NWCDEX 1.00, [6] [7] a CD-ROM redirector extension, the peer-to-peer networking server SERVER 1.20, and STACKER 3.12, the disk compression component. DPMS was also provided by Caldera OpenDOS 7.01, [1] DR-DOS 7.02 and 7.03, which, at least in some releases, added DPMS-enabled issues of DRFAT32 (a FAT32 redirector extension), [8] LONGNAME (VFAT long filename support) [8] and VDISK (virtual RAM disk). [1] [10] DR-DOS 7.03 contains the latest version of DPMS 1.44.
DPMS was also provided by IBM's PC DOS 7.0 [12] [13] and PC DOS 2000, which came with an older version of Novell's DPMS server and a DPMS-enabled version of Stacker 4.02 bundled. [12] [13]
Stac Electronics also produced a DPMS-enabled stand-alone version of Stacker 4. [14]
PC-Kwik Corporation's Super PC-Kwik 6.xx for DOS [15] and their Power Pak 4.0 for Windows also included the DPMS-enabled disk cache SUPERPCK in 1994. [16]
Some third-party DOS driver suites such as the Eicon Diva or High Soft Tech GmbH (HST) Saphir [17] CAPI ISDN drivers or PCMCIA/PCCard driver stacks such as Award's CardWare 2.5 (or higher) are known to support DPMS as well. [8] After Phoenix's acquisition of Award, their PCMCIA drivers 6.0 (and higher) have been sold off to UniCore. [8] CardWare 6.0 and 7.0 were available through APSoft, [18] [19] Socket Services (SSxxxxxx.EXE), Card Services (PCCS.EXE), PC Enable (PCENABLE.EXE), and card handlers (PCDISK.EXE, PCSRAM.EXE, PCATA.EXE, and PCFLASH.EXE) could use DPMS. Through LXE's integration of the stack into their ruggedized DOS PCs, DPMS also found its way into the Datalight ROM-DOS suite. [20] [21] [22]
In 1999, Funk Software introduced a DPMS-enabled version of their remote control software Proxy Host, allowing PHOST to occupy only 9 KB of conventional memory. [23] The Remote Dial-in Client software REMOTE for the 833 Remote Access Server by Perle Systems could take advantage of DPMS for the same purpose at least since 2002. [24] SciTech Software's Kendall Bennett investigated the possibility to add DPMS support to their DOS driver suite around 2000 as well, but this was never published.
Bret Johnson developed DPMS-enabled Print Screen to file (PRTSCR) and USB drivers for DOS. [25] [26]
In 1993, Helix Software Company's memory manager NETROOM 3 introduced a feature very similar to Novell's DPMS: CLOAKING was used to relocate Helix's and third-party drivers into extended memory [2] and run them at ring 0. [27] Providing its functions as an extension to the real-mode EMS and XMS interface, its protected mode services are available under INT 2Ch. [10] [28] A CLOAKING developer's kit was available which included a NuMega SoftICE debugger. [29] [30] Cloaked driver or TSR software hooking interrupts had to leave a small 11-byte stub in conventional memory which would invoke the CLOAKING server to pass execution to the protected mode portion of the driver software. [27]
CLOAKING includes support for operation under Windows 3.x and Windows 95, providing compatible INT 2Ch services to protected mode drivers via a Windows VxD, as well as debugging through Windows start-up using SoftICE. This ability to transition between protected mode host environments is also the subject of a patent. [31]
CLOAKING integrates into and works with existing virtual memory control programs, without switching descriptor tables or resetting the control registers. This allows for faster interrupt processing, according to Helix's documentation. [30] [31]
In contrast to Novell's DPMS, Helix's CLOAKING driver can be loaded high, [7] [nb 2] but it does not run on 286 machines, [7] [nb 2] though it does support 16-bit services and program structure on a 386. Also, CLOAKING 2.01 has been found to be incompatible with the DR-DOS multitasker (EMM386 /MULTI[=ON] + TASKMGR). [7]
If no DPMS server is present when CLOAKING.EXE loads, CLOAKING will, by default, also provide a cloaked DPMS server at a mere 100 bytes increase of its DOS memory footprint. [14] [7] However, it can also coexist with a DPMS server loaded before CLOAKING. The loading of its built-in DPMS server can be suppressed using the CLOAKING /NODPMS parameter. [7] DPMS-enabled drivers will work with both DPMS or CLOAKING, but not vice versa. [7]
In NETROOM v3.04, the Supplemental Disk distribution dated 10 February 1995 included the password-protected resource file NR.ZIP (679,271 KB) as an undocumented file; DPMSCLK.EXE (13,904 KB), "Cloaked DPMS Server v3.03". The file does not reveal support for any options or parameters when queried using the standard help option, DPMSCLK /? . This file is not unzipped by the NETROOM 3 SETUP.EXE program and does not install. There is no hint of the file's existence in the NETROOM 3 software manual [32] or any of the on-disk program documentation and human-readable files. [33] This final version of NETROOM as released basically ignored DPMS.
Helix licensed a version of Award Software's BIOS and developed cloaked system and video BIOSes which executed entirely in protected mode, reducing their real-mode memory footprint down to 8 KB (instead of 96 KB [10] ) and used these as run-time BIOS in conjunction with their NETROOM memory manager. [7] [28]
As part of their Multimedia Cloaking product, Helix provided cloaked versions of Logitech's MOUSE 6.33 driver, Microsoft's MSCDEX, and a home-grown disk cache to replace Microsoft's SmartDrive drivers.
There was also a product named Multimedia Stacker consisting of Stac's DPMS-enabled Stacker 4.01 with Helix's above suite of cloaked DOS utilities. [14] [34]
The Logitech DOS mouse driver since MouseWare 6.50 was enabled to take advantage of CLOAKING as well, thereby reducing the mouse driver's memory footprint visible to DOS applications from 27 KB to 1 KB. [7]
CLOAKING was also licensed to Symantec for their utility suite, to Corel for their CD Creator and Corel SCSI products, and to SMC Networks for their Ethernet drivers.
Novell's DPMS utility may not be used to temporarily disable DPMS with a DPMS [/]OFF command if those DPMS services are provided by CLOAKING instead of DPMS itself, because Helix's implementation will erroneously not only disallow new drivers to register with DPMS, but completely switch off DPMS services even for already loaded drivers, leading to a system crash. [7]
In 1993, Novell had announced plans to convert their resident workstation management utilities as well as their DOS network driver stacks (shells, redirectors and requestors) to use DPMS, [10] however, only the Personal NetWare server component was modified to actually take advantage of it.
Announced in 1993, [35] [36] [37] [38] Novell introduced a new 32-bit DOS/Windows NetWare client (Client 32) based on ODI32/NIOS in 1996, replacing the former 16-bit client based on ODI/VLM. [7] The NIOS (NetWare I/O Subsystem [37] [39] [40] ) client for DOS and Windows used techniques very similar to DPMS or Cloaking to relocate and run the code of the loaded NLMs (NetWare Loadable Modules) in protected mode and extended memory in order to reduce the conventional memory footprint of the network stack down to about 2 to 5 KB. [7] [39]
NIOS neither required nor used DPMS or Cloaking directly, and it did not provide a generic interface which could be used by non-NLM modules, however, it was certainly inspired by the DPMS technology and it can coexist with both of them.
While Novell's Personal NetWare was published unmodified as part of the DR-DOS suite by its newer owners Caldera, Lineo and DeviceLogics up to 2018, Personal NetWare had been abandoned since 1995 within Novell itself. This led to the situation that Novell never published a PNW.NLM driver to support the Personal NetWare protocol under the newer 32-bit ODI32/NIOS stack, so that users of Personal NetWare, who could take advantage of the PNW server module's DPMS capabilities already, were bound to continue to use the memory-consuming ODI/VLM 16-bit client with its PNW.VLM protocol driver. [7]
DR-DOS is a disk operating system for IBM PC compatibles. Upon its introduction in 1988, it was the first DOS that attempted to be compatible with IBM PC DOS and MS-DOS.
A terminate-and-stay-resident program is a computer program running under DOS that uses a system call to return control to DOS as though it has finished, but remains in computer memory so it can be reactivated later. This technique partially overcame DOS's limitation of executing only one program, or task, at a time. TSRs are used only in DOS, not in Windows.
NetWare is a discontinued computer network operating system developed by Novell, Inc. It initially used cooperative multitasking to run various services on a personal computer, using the IPX network protocol.
In computing, the DOS Protected Mode Interface (DPMI) is a specification introduced in 1989 which allows a DOS program to run in protected mode, giving access to many features of the new PC processors of the time not available in real mode. It was initially developed by Microsoft for Windows 3.0, although Microsoft later turned control of the specification over to an industry committee with open membership. Almost all modern DOS extenders are based on DPMI and allow DOS programs to address all memory available in the PC and to run in protected mode.
In DOS memory management, conventional memory, also called base memory, is the first 640 kilobytes of the memory on IBM PC or compatible systems. It is the read-write memory directly addressable by the processor for use by the operating system and application programs. As memory prices rapidly declined, this design decision became a limitation in the use of large memory capacities until the introduction of operating systems and processors that made it irrelevant.
Btrieve is a transactional database software product. It is based on Indexed Sequential Access Method (ISAM), which is a way of storing data for fast retrieval. There have been several versions of the product for DOS, Linux, older versions of Microsoft Windows, 32-bit IBM OS/2 and for Novell NetWare.
CONFIG.SYS is the primary configuration file for the DOS and OS/2 operating systems. It is a special ASCII text file that contains user-accessible setup or configuration directives evaluated by the operating system's DOS BIOS during boot. CONFIG.SYS was introduced with DOS 2.0.
Virtual DOS machines (VDM) refer to a technology that allows running 16-bit/32-bit DOS and 16-bit Windows programs when there is already another operating system running and controlling the hardware.
EMM386 is the expanded memory manager of Microsoft's MS-DOS, IBM's PC DOS, Digital Research's DR-DOS, and Datalight's ROM-DOS which is used to create expanded memory using extended memory on Intel 80386 CPUs. There also is an EMM386.EXE available in FreeDOS.
A disk compression software utility increases the amount of information that can be stored on a hard disk drive of given size. Unlike a file compression utility, which compresses only specified files—and which requires the user to designate the files to be compressed—an on-the-fly disk compression utility works automatically through resident software without the user needing to be aware of its existence. On-the-fly disk compression is therefore also known as transparent, real-time or online disk compression.
A NetWare Loadable Module (NLM) is a loadable kernel module that can be loaded into Novell's NetWare operating system. NLMs can implement hardware drivers, server functions, applications, system libraries or utilities.
DriveSpace is a disk compression utility supplied with MS-DOS starting from version 6.0 in 1993 and ending in 2000 with the release of Windows Me. The purpose of DriveSpace is to increase the amount of data the user could store on disks by transparently compressing and decompressing data on-the-fly. It is primarily intended for use with hard drives, but use for floppy disks is also supported. This feature was removed in Windows XP and later.
Remote Initial Program Load is a protocol for starting a computer and loading its operating system from a server via a network. Such a server runs a network operating system such as LAN Manager, LAN Server, Windows NT Server, Novell NetWare, LANtastic, Solaris or Linux.
3+Share, also known simply as 3+ or 3 Plus, was a pioneering file and print sharing product from 3Com. Introduced in the early 1980s, 3+Share was competitive with Novell's NetWare in the network server business throughout the 1980s. It was replaced by the joint Microsoft-3Com LAN Manager in 1990, but 3Com exited the server market in 1991.
NetWare Lite and Personal NetWare are a series of discontinued peer-to-peer local area networks developed by Novell for DOS- and Windows-based personal computers aimed at personal users and small businesses in the 1990s.
SmartDrive is a disk caching program shipped with MS-DOS versions 4.01 through 6.22 and Windows 3.0 through Windows 3.11. It improves data transfer rates by storing frequently accessed data in random-access memory (RAM).
MSCDEX or Microsoft CD-ROM Extensions is a software program produced by Microsoft and included with MS-DOS 6.x and certain versions of Windows to provide CD-ROM support. Earlier versions of MSCDEX since 1986 were installable add-ons for MS-DOS 3.1 and higher.
The Windows 9x series of operating systems refers to the monolithic kernel which powers these operating systems. The basic code is similar in function to MS-DOS. As a 16-/32-bit hybrid, it requires support from MS-DOS to operate.
Helix Software Company was a New York City based software company founded in October 1986. The company developed software tools and utilities for DOS and Windows. In 1993, Helix licensed some of its memory management technology to Microsoft for use in MS-DOS 6.0. Microsoft subsequently released Helix's memory management technology as part of the MEMMAKER and EMM386 DOS commands.
[…] [up to] 1992 Digital Research GmbH […] DR DOS 6.0 […] Designed and implemented DPMS protected mode extender for device drivers for DR DOS 7. […]
{{cite book}}
: |work=
ignored (help) (NB. NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger MPDOSTIP.ZIP collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT file.){{cite book}}
: |work=
ignored (help)[…] In Stacker 4.0, Stac provided DOS Protected Mode Services (DPMS) support, which allows most of the Stacker driver to move into extended memory. […]