home *** CD-ROM | disk | FTP | other *** search
/ Garbo / Garbo.cdr / pc / sysutil / swell100.lzh / SWELL.DOC < prev    next >
Encoding:
Text File  |  1989-07-06  |  31.9 KB  |  994 lines

  1.  
  2.  
  3.  
  4.  
  5.                                     Contents
  6.  
  7.  
  8.                   1  Abstract  . . . . . . . . . . . . . . . . . . . 1
  9.                   2  Introduction  . . . . . . . . . . . . . . . . . 1
  10.                   3  Usage . . . . . . . . . . . . . . . . . . . . . 1
  11.                      3.1  SWELL.EXE  . . . . . . . . . . . . . . . . 1
  12.                      3.2  SwellCFG.EXE . . . . . . . . . . . . . . . 2
  13.                      3.3  MemMap (MM.EXE)  . . . . . . . . . . . . . 3
  14.                   4  Where did my TSR go?  . . . . . . . . . . . . . 4
  15.                   5  Turbo Trouble . . . . . . . . . . . . . . . . . 5
  16.                   6  Possible Uses . . . . . . . . . . . . . . . . . 5
  17.                      6.1  Lotus 123  . . . . . . . . . . . . . . . . 5
  18.                      6.2  MAKE.EXE / Microsoft C Compiler  . . . . . 5
  19.                      6.3  Text editor with a Compiler  . . . . . . . 5
  20.                      6.4  Debuggers  . . . . . . . . . . . . . . . . 6
  21.                      6.5  Bulletin Board Systems (BBS) . . . . . . . 6
  22.                   7  Problems  . . . . . . . . . . . . . . . . . . . 6
  23.                      7.1  Special Situations . . . . . . . . . . . . 7
  24.                      7.2  Communications Programs  . . . . . . . . . 7
  25.                      7.3  Local Area Networks (LANs) . . . . . . . . 7
  26.                   8  Disclaimer  . . . . . . . . . . . . . . . . . . 8
  27.                   9  License . . . . . . . . . . . . . . . . . . . . 8
  28.                      9.1  Registered Version . . . . . . . . . . . . 8
  29.                      9.2  Demonstration Version  . . . . . . . . . . 8
  30.                   10  Registration . . . . . . . . . . . . . . . . . 9
  31.                      10.1  Prices  . . . . . . . . . . . . . . . . . 9
  32.                      10.2  Order Form  . . . . . . . . . . . . . .  10
  33.                   11  For more information:  . . . . . . . . . . .  11
  34.  
  35.                Index                                                13
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.           1  Abstract
  44.  
  45.  
  46.           SWELL transparently swaps a program  out of memory onto disk when
  47.           a  child  program  is loaded.  This allows a program to run other
  48.           programs even  if  there  is  not  enough  RAM for them to occupy
  49.           simultaneously.
  50.  
  51.  
  52.           2  Introduction
  53.  
  54.  
  55.           This   program   alleviates   memory  constraints  under  certain
  56.           conditions.  The following    example  will help illustrate: Many
  57.           word  processors  (Sprint,  WordPerfect)  come   with  conversion
  58.           utilities that run externally.    If you have 300k of free memory
  59.           and your word  processor  uses  250k,  this  leaves  50k  for the
  60.           conversion utility to operate.  It may not be enough!
  61.  
  62.           When SWELL is active, it will swap the word processor session out
  63.           to disk before  loading  the conversion utility (leaving the full
  64.           300k free for the conversion  utility to operate) then reload the
  65.           wordprocessing session  at the completion of the conversion.  The
  66.           wordprocessor will not be aware that it was put into  limbo while
  67.           the conversion utility was running.
  68.  
  69.           The  results  are  obvious: SWELL can allow programs to work when
  70.           they would not work before.
  71.  
  72.  
  73.           3  Usage
  74.  
  75.  
  76.           3.1  SWELL.EXE
  77.  
  78.           SWELL  is  a  TSR  (Terminate  and  Stay  Resident) program  that
  79.           requires  no  parameters  on  the  command line.  If not  already
  80.           installed, SWELL will remain  in  memory after you start it.  The
  81.           registered version  of SWELL uses approximately 9K of memory, the
  82.           demonstration version uses approximately 48k.
  83.  
  84.           SWELL will use the root directory of the drive you loaded it from
  85.           for  its swap files unless you specify  one  of  two  environment
  86.           variables as follows:
  87.  
  88.                SET TMP=x:\path
  89.           or
  90.                SET SWELL=x:\path
  91.  
  92.           Both  the  TMP  and  SWELL  environment variables have  the  same
  93.           effect.  If both are  specified, SWELL takes precedence over TMP.
  94.           If you have extended, EMS or XMS memory,  you  can  create  a RAM
  95.           disk and point TMP, or SWELL to it.  Note  that  SWELL only looks
  96.           for these variables when it is loaded into  memory;  Changing TMP
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.           or  SWELL  afterwards  will NOT change the path where SWELL swaps
  104.           memory.  Performance is so high with a  ram  disk  that  you will
  105.           probably not notice any swapping occurring.
  106.  
  107.           If you have  any  other  TSR  programs, you will probably want to
  108.           load them before SWELL (this is discussed further in section 4.)
  109.  
  110.           3.2  SwellCFG.EXE
  111.  
  112.           SwellCFG Allows  you to view and/or change certain SWELL options.
  113.           SwellCFG will only work  if  SWELL  has  been loaded into memory.
  114.           Starting this  program with no parameters brings up the following
  115.           help screen:
  116.  
  117.           █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
  118.           █ SwellCFG             (C) 1989 Peter Fitzsimmons 06-03-89 █
  119.           █                                             Version 1.01 █
  120.           █ Usage:   SWELLCFG  [/d] [/v on|off] [/1] [/s] [/a] [/u]  █
  121.           █                    [/b on|off]                           █
  122.           █                                                          █
  123.           █ Purpose: Display/Modify SWELL's (the SWapper shELL)      █
  124.           █          operating characteristics.                      █
  125.           █ Options: /d - Display current status (no changes).       █
  126.           █          /v - turn verbose flag off (quiet mode) or on.  █
  127.           █          /1 - suspend once : don't do any swapping       █
  128.           █               for the next program that is loaded.       █
  129.           █          /s - suspend (until reactivated with /a).       █
  130.           █          /a - activate.                                  █
  131.           █          /u - uninstall (remove SWELL from memory).      █
  132.           █          /b - engage/disengage support for certain       █
  133.           █               Borland products.                          █
  134.           █ Example: SWELLCFG /a /v off                              █
  135.           █          would ensure that SWELL is active, and is in    █
  136.           █          quiet mode.                                     █
  137.           █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
  138.                           Figure 1: The SwellCFG Usage Box
  139.  
  140.           SwellCFG communicates with SWELL  through  the  SWELL Application
  141.           Programming Interface (SAPI).   Registered  users  receive  the C
  142.           source code (Microsoft/Turbo) for SwellCFG, as  well  as complete
  143.           documentation on SAPI.  SwellCFG takes the following command line
  144.           parameters, in any order:
  145.  
  146.           /d -      Displays the status of the verbose  flag,  the "suspend
  147.                     once" flag, and the suspended flag.
  148.           /v -      Changes the status of the verbose flag.  When ON, SWELL
  149.                     will print messages  when  it is swapping memory out to
  150.                     disk, loading programs, and swapping data from  disk to
  151.                     memory.   When loading a program, SWELL will report how
  152.                     many bytes of RAM it has saved you so far.   Verbose on
  153.                     is useful when debugging your  system,  or  if  you are
  154.                     curious about SWELL's  effectiveness.  With the verbose
  155.                     flag  OFF,  SWELL  is in quiet mode; it will only print
  156.  
  157.  
  158.  
  159.  
  160.                                         - 2 -
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.                     messages during  an  error  condition  (ex:  swap  disk
  168.                     full).  The default is OFF.
  169.           /s -      This  option will suspend SWELL from swapping  programs
  170.                     out to disk.  It will NOT stop it from swapping  IN any
  171.                     programs  it  had  swapped out to disk  before  it  was
  172.                     suspended.  Use this option when you are about to use a
  173.                     program that does not work  with  SWELL  (ex: Microsoft
  174.                     Windows).
  175.           /a -      This option reactivates SWELL if it was  suspended with
  176.                     the /s or /1 options.  It is not an  error  to use this
  177.                     option if SWELL is already active.
  178.           /1 -      This option tells SWELL not  to  swap  anything  on the
  179.                     next program load.  It's  usefulness  is  limited  in a
  180.                     user invoked program like SwellCFG.  The "suspend once"
  181.                     option was intended for  use  by  programs that use the
  182.                     SAPI  to  communicate  with SWELL.  It could be used if
  183.                     you are about to load a TSR (TSR programs are discussed
  184.                     later in more detail).
  185.           /u -      Ask SWELL to remove itself from memory.  I use the word
  186.                     "ask" because SWELL may refuse your  request.  If SWELL
  187.                     is still responsible for programs swapped  out  to disk
  188.                     it will not `uninstall'  itself.    SwellCFG /u must be
  189.                     called again after all swapping has completed.
  190.           /b -      Engage  or Disengage "Turbo support".  Certain  Borland
  191.                     products  (Turbo  C 2.00, Turbo  Pascal  5.00,  perhaps
  192.                     others) will  not get swapped unless this option is ON.
  193.                     See section 5.  The default is OFF.
  194.           NOTE:     SwellCFG is not case sensitive.  "/v off"  is  the same
  195.                     as "/V Off".  Also,  the forward slash character can be
  196.                     replaced by the minus sign.  ie: "-a -v on" is the same
  197.                     as "/a /v On".
  198.  
  199.           3.3  MemMap (MM.EXE)
  200.  
  201.           MemMap does not  affect SWELL in any way.  It can be used with or
  202.           without SWELL in memory.  It simply displays DOS memory  usage at
  203.           any given time.  At this moment, I am working on this document in
  204.           a word processor.  I am going to shell to DOS (actually, the "DOS
  205.           box" of OS/2) and run MM with SWELL active:
  206.  
  207.            size   name                        hooked vectors
  208.           ------ ---------------------------  -----------------------
  209.             3744 config.sys 2E
  210.             3536 C:\OS2\COMMAND.COM
  211.             8992 D:\usr\msc\v51\swl\SWELL.EXE   21 22 23 24 2F
  212.              672 ..\CMD\SP.EXE
  213.              672 C:\OS2\COMMAND.COM
  214.           342880 free
  215.                        Figure 2: Memory map with SWELL active
  216.  
  217.           Now, I will do the same after suspending SWELL:
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.                                         - 3 -
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.            size   name                        hooked vectors
  232.           ------ ---------------------------  -----------------------
  233.             3744 config.sys 2E
  234.             3536 C:\OS2\COMMAND.COM
  235.             8992 D:\usr\msc\v51\swl\SWELL.EXE   21 2F
  236.           227552 ..\CMD\SP.EXE
  237.             3536 C:\OS2\COMMAND.COM             22 23 24
  238.           113104 free
  239.                       Figure 3: Memory map with SWELL inactive
  240.  
  241.           SP.EXE is my word processor.  Notice that it only uses  672 bytes
  242.           when SWELL is active, and 227552 when it is not.  Although not as
  243.           significant, COMMAND.COM also uses less memory with SWELL active.
  244.           SWELL  swaps out all of the parent  application  except  its  PSP
  245.           (Program Segment Prefix) which is 256 bytes, plus the size of the
  246.           environment,  which  in  my  case  was  416  bytes.   Now I'll do
  247.           something impossible without SWELL:
  248.  
  249.            size   name                        hooked vectors
  250.           ------ ---------------------------  -----------------------
  251.             3744 config.sys 2E
  252.             3536 C:\OS2\COMMAND.COM
  253.             8992 D:\usr\msc\v51\swl\SWELL.EXE   21 22 23 24 2F
  254.              672 ..\CMD\SP.EXE
  255.              672 C:\OS2\COMMAND.COM
  256.              672 ..\CMD\SP.EXE
  257.              672 C:\OS2\COMMAND.COM
  258.              672 ..\CMD\SP.EXE
  259.              672 C:\OS2\COMMAND.COM
  260.           340064 free
  261.                          Figure 4: Over committed memory map
  262.  
  263.           I loaded my WP 3  times!  Normally  this  would  have  used  (3 x
  264.           227552)  +  (3  x 3536) = 693264 bytes of memory  (note  this  is
  265.           larger than the infamous  640k  barrier).  I could have loaded it
  266.           many more times, but my RAM disk (which I was using for swapping)
  267.           became full.
  268.  
  269.  
  270.           4  Where did my TSR go?
  271.  
  272.  
  273.           After SWELL swaps a  parent  program out to disk, and just before
  274.           it loads the child  program,  all  of  the Interrupt Vector Table
  275.           (IVT) is restored  to  the  state  that  is was in when SWELL was
  276.           first loaded.  Therefore, any  "pop-up"  type  TSR  programs that
  277.           were loaded when  SWELL  was suspended will probably not respond.
  278.           If  SWELL  is  active when a TSR is loaded (and the active parent
  279.           program was loaded after SWELL) the TSR will  simply  vanish from
  280.           memory!  The reasons for this side effect are beyond the scope of
  281.           this document.
  282.  
  283.           Note that when SWELL is first loaded, the  active  parent program
  284.           (most  likely  command.com)  is  at  a lower address in RAM  than
  285.  
  286.  
  287.  
  288.                                         - 4 -
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.           SWELL,  so it is not swapped.  Any TSR's loaded at this time will
  296.           remain resident, but will not activate after any  swapping  is in
  297.           effect.    As  soon as there is a parent program above SWELL, any
  298.           TSR's that are loaded will simply vanish.  For these  reasons, it
  299.           is recommended that SWELL is the last TSR program that you load.
  300.  
  301.  
  302.           5  Turbo Trouble
  303.  
  304.  
  305.           For  some  reason, Turbo C 2.00 and  Turbo  Pascal  5.00  use  an
  306.           undocumented DOS call  (INT  21h,  ax  = 4B01h) to invoke the DOS
  307.           Shell function.   I  have  simulated  this  call,  and  these two
  308.           products seem to work properly.  However, since the DOS call they
  309.           use is undocumented, SWELL, by  default, will not respond to this
  310.           call.    To  engage  support  for these Borland products and  any
  311.           others that may use  this  method,  you  must invoke "SWELLCFG /b
  312.           on".   Note that no harm will come if these two products are used
  313.           when SWELL does not have Borland support engaged; they just won't
  314.           get swapped out to disk when you shell.
  315.           Other Borland products,  such  as Turbo Debugger and Sprint, make
  316.           the proper DOS EXEC call (ax = 4B00h) and work perfectly.
  317.  
  318.  
  319.           6  Possible Uses
  320.  
  321.  
  322.           6.1  Lotus 123
  323.  
  324.           When you invoke the 'System' feature of 123, 123 will  be swapped
  325.           out to disk while you use  DOS  to  format disks etc.  Since your
  326.           suspended 123 session uses very  little memory, it is possible to
  327.           start up another  123  session  (or  MANY  of them).  Or, you can
  328.           temporarily use your word processor or telecommunications program
  329.           to gather data for your spread sheet.  When you EXIT back to 123,
  330.           it will be in the precise state in which you left it.
  331.  
  332.           6.2  MAKE.EXE / Microsoft C Compiler
  333.  
  334.           I find  I  can't  live  without SWELL in the OS/2 DOS Box.  After
  335.           loading all of my  network  device drivers etc, I only have about
  336.           350K of free  memory.    The  MSC  5.10 compiler will not load if
  337.           running a MAKE file.  SWELL gives back  more  than  140k  of free
  338.           memory to each pass of the compiler.
  339.  
  340.           6.3  Text editor with a Compiler
  341.  
  342.           Even on a full 640k machine, it is almost impossible to  shell to
  343.           DOS from your  favorite  editor (ex: Qedit, Microsoft Editor) and
  344.           run any  of today's compilers (QuickC, QuickBasic, Turbo C, Turbo
  345.           Pascal etc).   SWELL makes your editor temporarily disappear from
  346.           memory to let these beasts run.  Alternatively, you can  shell to
  347.           DOS FROM your compiler  and  run your editor (then shell again to
  348.           your compiler (then shell again into  your  editor ((((...)))))).
  349.  
  350.  
  351.  
  352.                                         - 5 -
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.           As noted above, the Turbo C and Turbo Pascal compilers  won't get
  360.           swapped out to disk during a DOS shell unless Borland  support is
  361.           engaged.
  362.  
  363.           6.4  Debuggers
  364.  
  365.           Debuggers like CodeView and Turbo Debugger use a  lot  of memory.
  366.           With SWELL active, there is plenty of room to shell  to/from your
  367.           editor or compiler, or have more than one debugging session.
  368.  
  369.           6.5  Bulletin Board Systems (BBS)
  370.  
  371.           BBS sysops will be  very  pleased with SWELL.  Many BBS programs,
  372.           like  Opus,  use   external  programs  (sometimes  called  "door"
  373.           programs)  to  run  on-line games, mail management  etc.    SWELL
  374.           allows a BBS session to run in such little memory that more phone
  375.           lines can be added and serviced on the same computer.   The Royal
  376.           Trust  BBS  listed  at  the  end of this document operates  under
  377.           SWELL.
  378.  
  379.  
  380.           7  Problems
  381.  
  382.  
  383.           Side Effects caused by SWELL:
  384.            - Turbo C/Turbo Pascal: When  Borland  support is  engaged  (see
  385.                                    section 5) the "Run" command  causes the
  386.                                    compiler  to  be  swapped out of memory.
  387.                                    This  is  both  good   and   bad.     It
  388.                                    effectively gives  your  program 320,000
  389.                                    bytes more RAM!  The bad side is that it
  390.                                    disables the built-in debugger.   If you
  391.                                    have the external  Turbo  Debugger, this
  392.                                    is not a problem (and is quite a benefit
  393.                                    since  you can  start  up  the  debugger
  394.                                    without ending your Turbo C session).
  395.            - Quick C Version 1:    If you compile to  an  EXE  file (rather
  396.                                    than MEMORY)  QC.EXE  will  hang.   This
  397.                                    happens  because  the  linker (LINK.EXE)
  398.                                    and QC.EXE share memory during  the link
  399.                                    stage.   This  is  not  a  problem  with
  400.                                    QCL.EXE.  (It is not known at  this time
  401.                                    if QC Version 2 has the same problem).
  402.  
  403.           SWELL is known not to work with the following programs:
  404.  
  405.            - Microsoft Windows     (Although  I have  not  tested  them,  I
  406.                                    suspect    other   multi-taskers    like
  407.                                    Desqview  and  Double  DOS will have the
  408.                                    same  problems.)  SWELL  does  work   if
  409.                                    loaded in a Windows/386 command  prompt,
  410.                                    however,  care  must  be  taken to use a
  411.                                    different swap  path  for  each  copy of
  412.  
  413.  
  414.  
  415.  
  416.                                         - 6 -
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.                                    SWELL loaded into memory.   See "network
  424.                                    drives" in section 7.3.
  425.            - Carbon Copy           Early  testing   reports   suggest  some
  426.                                    problems  related to  the  use  of  this
  427.                                    remote communications utility.
  428.  
  429.            - GEM
  430.  
  431.           7.1  Special Situations
  432.  
  433.           As  stated  in  Section 4, SWELL restores  the  entire  interrupt
  434.           vector  table  (IVT)  to the state it was in when SWELL was first
  435.           loaded.  Therefore, if the parent program had hooked any vectors,
  436.           they will be temporarily  reset  when  it  calls a child program.
  437.           Although I know of only one program that does this (Quick C 1.x),
  438.           it  is conceivable that the parent and  child  could  be  sharing
  439.           memory pointed to by one of these vectors, or by some environment
  440.           variable.   In this situation, SWELL  would  interfere  with  the
  441.           parent/child relationship.  SwellCFG /1 or the SAPI could be used
  442.           by the parent to prevent itself from being swapped to disk before
  443.           the child is loaded to get around this problem.
  444.  
  445.           7.2  Communications Programs
  446.  
  447.           In a similar  situation, some programs (especially communications
  448.           programs,  like  Telix)  need  to  install  an  Interrupt Service
  449.           Routine  (ISR)  in  the  IVT  to service hardware events, like  a
  450.           character  being received from COM1:.  When  such  a  program  is
  451.           swapped out to disk, the ISR it installed will be reset as it was
  452.           when  SWELL  was  installed.  In the case of a program like Telix
  453.           that   uses   the   COMx:  ports,  this  means   it   will   stop
  454.           receiving/transmitting  characters  while  you  are  in  a  shell
  455.           (everything  will  return  to  normal  when you return  to  Telix
  456.           though).  This is usually of no significance, since you would not
  457.           shell from Telix  if  it  was  busy  doing  something.  Note that
  458.           shelling to a program  that  installs  its  own ISR (ex: DSZ.COM)
  459.           will work fine.
  460.  
  461.           7.3  Local Area Networks (LANs)
  462.  
  463.           When swapping to a network drive, be sure  to  pick  a  swap path
  464.           (see section 3.1 on page 1) that no other  workstation  is  using
  465.           for SWELL.  If you  do not differentiate each workstation's path,
  466.           the  workstations  will overwrite each  other's  swapped  memory,
  467.           causing at least one of the workstations to fail.
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.                                         - 7 -
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.           8  Disclaimer
  488.  
  489.  
  490.           The Program is supplied "AS IS" without any warranty of any kind,
  491.           either expressed or  implied,  including, but not limited to, the
  492.           implied warranties of merchantabilty and fitness for a particular
  493.           purpose.
  494.  
  495.           In  no  event  shall Peter Fitzsimmons be liable for any damages,
  496.           either direct or  consequential,  caused by the use, or inability
  497.           to use, this program, even  if Peter Fitzsimmons has been advised
  498.           of the possibility of such damages.
  499.  
  500.  
  501.           9  License
  502.  
  503.  
  504.           The "DEMONSTRATION VERSION" of  SWELL,  to  which  subsection 9.2
  505.           applies, is that version which  clearly  identifies  itself (each
  506.           time it is executed)  as  the  DEMONSTRATION VERSION.  Subsection
  507.           9.1  applies  to  any  version  that  is  not clearly  marked  as
  508.           DEMONSTRATION VERSION.
  509.  
  510.           9.1  Registered Version
  511.  
  512.           You may:
  513.                a) use the Program on ONLY one machine at any one time;
  514.                b) make a copy  of  the  Program  for backup or modification
  515.                purposes ONLY in support of your Authorized Use; and
  516.                c) modify and/or merge the Program into another program only
  517.                in support of your Authorized Use.
  518.  
  519.           YOU MAY NOT:
  520.                a)  use,  copy,  modify, merge, or transfer  copies  of  the
  521.                Program except as noted in this Agreement;
  522.                b) reverse assemble, reverse  engineer,  or  reverse compile
  523.                the Program; and/or
  524.                c) sublicense, rent, lease or assign the Program or any copy
  525.                of it.
  526.  
  527.           9.2  Demonstration Version
  528.  
  529.           9.2.1 You are free to use and distribute, with no obligation, the
  530.           DEMONSTRATION VERSION of SWELL provided that:
  531.  
  532.                a) you distribute only verbatim copies of  the DEMONSTRATION
  533.                VERSION of SWELL as you receive it; and
  534.                b)  it  is  accompanied   by   unmodified   copies   of  its
  535.                documentation.
  536.  
  537.           9.2.2 You may incorporate the DEMONSTRATION VERSION of SWELL into
  538.           your  hardware  and/or  software  product  under  the   terms  of
  539.           Paragraph 9.2.1 above provided that:
  540.  
  541.  
  542.  
  543.  
  544.                                         - 8 -
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.                a) you do not in any way modify the program;
  552.                b) you do not interfere  with the program's operation in any
  553.                manner,  including,  but  not  limited  to,  redirecting  or
  554.                impeding its interaction  with  the user via the keyboard or
  555.                screen; and
  556.                c) you  tangibly  demonstrate  to  Peter  Fitzsimmons,  or a
  557.                representative  appointed by  Peter  Fitzsimmons,  that  all
  558.                terms of this license are in compliance.
  559.  
  560.  
  561.           10  Registration
  562.  
  563.  
  564.           Registered  owners  of  SWELL  will  receive   the   most  recent
  565.           production  version  of  SWELL with  all annoyances removed.  The
  566.           registered version uses  approximately  9k of memory.  Complete C
  567.           source code for  SwellCFG.EXE  is  supplied  so  that application
  568.           developers  can   interface   their   applications   with  SWELL.
  569.           Registration  also  entitles   you  to  one  free  minor-revision
  570.           upgrade.
  571.  
  572.           10.1  Prices
  573.  
  574.           Quantity | Discount | Price per Copy
  575.                    |          | $US | $Canadian
  576.           -------------------------------------
  577.            1-10    |    -     | $40 | $48
  578.           11-30    |   25%    | $30 | $36
  579.           31+      |   35%    | $26 | $31
  580.  
  581.           Discounts are per order and are not cumulative.
  582.  
  583.           Prices  include  shipping  via  Canada  Post inside the  USA  and
  584.           Canada.   All other destinations should include  $10  U.S.    for
  585.           shipping charges.  Please allow 4 weeks for delivery.
  586.           ALL PRICES AND DISCOUNTS ARE SUBJECT TO CHANGE WITHOUT NOTICE.
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.                                         - 9 -
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.           10.2  Order Form
  616.  
  617.           Remit payment to:
  618.  
  619.  
  620.  
  621.           Peter Fitzsimmons
  622.           Post Office Box 670
  623.           Adelaide St Postal Station
  624.           Toronto, Canada M5C 2J8
  625.  
  626.  
  627.  
  628.                --- ( fold here if you are using a windowed envelope ) ---
  629.  
  630.           Check one: Amounts specified in
  631.           U.S.  __  -OR-  Canadian funds __.
  632.  
  633.           _____ SWELL registrations .............. @ $_____ each = $_______
  634.  
  635.           _____ Overseas shipping................. @ $10.00 each = $_______
  636.  
  637.                 Ontario residents please add 8% PST.........Tax    $_______
  638.  
  639.                                                              Total $_______
  640.  
  641.                 Name_______________________________________________________
  642.  
  643.                 Company____________________________________________________
  644.  
  645.                 Address____________________________________________________
  646.  
  647.                 ___________________________________________________________
  648.  
  649.                 Phone(______)________________  Bus.(______)________________
  650.  
  651.                 Where did you obtain Swell?
  652.  
  653.                 ___________________________________________________________
  654.  
  655.                 Comments___________________________________________________
  656.  
  657.                 ___________________________________________________________
  658.  
  659.                 ___________________________________________________________
  660.  
  661.                 ___________________________________________________________
  662.  
  663.                 ___________________________________________________________
  664.  
  665.                 ___________________________________________________________
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.                                        - 10 -
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.           11  For more information:
  680.  
  681.  
  682.           Write to: Post Office Box 670
  683.                     Adelaide St Postal Station
  684.                     Toronto, Canada
  685.                     M5C 2J8
  686.  
  687.           To receive the latest FREE demo version of SWELL,  send  a  self-
  688.           addressed diskette to the  address  above,  or call the following
  689.           BBS (which has kindly granted  me  permission  to  distribute the
  690.           demonstration version of SWELL through it):
  691.  
  692.           RT Labs BBS
  693.           (416)867-9663 (fido 1:250/628 FREQ SWELL1??.ARC)
  694.           Toronto Canada
  695.           300 - 9600 bps (Hayes V-series)
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.                                        - 11 -
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.                                        - 12 -
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.                                         Index
  814.  
  815.  
  816.                  /1 3                        L
  817.                  /a 3                        LAN 7
  818.                  /b 3                        License 8
  819.                  /d 2
  820.                  /s 3                        M
  821.                  /u 3                        Microsoft C Compiler 5
  822.                  `uninstall' 3               Microsoft Editor 5
  823.                  /v 2                        Microsoft Windows 6
  824.  
  825.                  A                           N
  826.                  active parent program 4     network 7
  827.                  Application Programming
  828.                     Interface 2              O
  829.                                              Opus 6
  830.                  B
  831.                  BBS 6                       P
  832.                                              parameters 1
  833.                  C                           payment 10
  834.                  Carbon Copy 7               Prices 9
  835.                  CodeView 6                  PSP 4
  836.                  command line parameters
  837.                     2                        Q
  838.                  communications programs     Qedit 5
  839.                     7                        Quick C 6, 7
  840.                                              QuickBasic 5
  841.                  D                           QuickC 5
  842.                  Desqview 6
  843.                  DOS Box 5                   R
  844.                  Double DOS 6                Registration 9
  845.                  DSZ.COM 7
  846.                                              S
  847.                  E                           SAPI 2, 3
  848.                  EMS 1                       source code 2
  849.                  environment variables 1     Sprint 5
  850.                  extended 1                  suspend 3
  851.                                              suspend once 3
  852.                  I                           SWELL 1
  853.                  Interrupt Service           sysops 6
  854.                     Routine 7
  855.                  Interrupt Vector Table      T
  856.                     4                        Telix 7
  857.                  ISR 7                       Terminate and Stay
  858.                  IVT 4, 7                       Resident 1
  859.                                              TMP 1
  860.                                              TSR 2, 4
  861.  
  862.  
  863.  
  864.                                        - 13 -
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871.                  Turbo C 3, 5, 6             X
  872.                  Turbo Debugger 5, 6         XMS 1
  873.                  Turbo Pascal 3, 5, 6
  874.  
  875.                  V
  876.                  verbose flag 2
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                                        - 14 -
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.                                     Figures
  942.  
  943.  
  944.                Figure 1: The SwellCFG Usage Box  . . . . . . . . . . 2
  945.                Figure 2: Memory map with SWELL active  . . . . . . . 3
  946.                Figure 3: Memory map with SWELL inactive  . . . . . . 4
  947.                Figure 4: Over committed memory map . . . . . . . . . 4
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.                                          iii
  993.  
  994.