[comp.binaries.ibm.pc] v03i007: swap12, swap v1.2, swap current process & spawn another

leefi@uunet.UU.NET (Lee Fisher) (05/28/89)

Checksum:   64972338  (Verify with "brik -cv")
Posting-number: Volume 03, Issue 007
Submitted-by: microsoft!leefi@uunet.UU.NET (Lee Fisher)
Archive-name: swap12/swap12.uue

Quoted from the author:

"SWAP provides an application independent method for one MS-DOS
application to run another, even if both would normally not fit in
memory at the same time. It works by copying conventional memory used
by the currently running application to expanded memory, extended
memory, or to a disk file, thereby freeing conventional memory used
by the application. It then runs the desired program before restoring
the original environment. SWAP operation and internals are detailed
in an article in the April, 1989 issue of Dr. Dobb's Journal written
by Nico Mak. The article includes source code. This is version 1.2,
which adds support for expanded memory (XMS), swaps to disk
automatically if EMS or XMS memory is not available, and allows you
to swap to disk recursively."

This is a newer version of SWAP than in the 4/89 issue of "Dr. Dobb's
Journal" (version 1.0), which was posted to comp.binaries.ibm.pc 
(archive name: swap/swap.uue, posting number: volume 02, issue 046).
Version 1.2 now supports XMS memory as a target swap media, in addition 
to using EMS and the disk.

Source code to version 1.0 was available in the previous posting and
in the Dobbs article; this posting unfortunately does not include
source code for 1.2, as Mr. Mak has not yet made this code available. 
I obtained this version of SWAP directly from the author, Mr. Mak,
of Mansfield Software. The author can be reached on Compu$erve as 
70056,241 or on BIX as Nico_Mak.
--
Lee Fisher, leefi@microsof.com.UUCP, leefi@microsof.beaver.washington.EDU
{uw-beaver,decvax,decwrl,intelca,sun,tikal,uunet}!microsoft!leefi 


[
Checksums obtained with the 4.3BSD "sum" or System V "sum -r" command.

checksum     size (bytes)  file (between BEGIN--cut and END--cut lines)
   19340         9199      swap12.uue

checksum     size (bytes)  file
   44500         6656      swap12.arc

-- R.D.
]

swap12 part01/01
BEGIN--cut here--cut here
begin 644 swap12.arc
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
I0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`
`
end
END--cut here--cut here