home *** CD-ROM | disk | FTP | other *** search
/ Pelit 2000 / pelit2000.iso / ohjelmat / nh330pm.zip / CWSDPMI.DOC next >
Text File  |  1999-12-11  |  7KB  |  154 lines

  1. CWSDPMI is Copyright (C) 1995-1997  Charles W Sandmann (sandmann@clio.rice.edu)
  2.                                     1206 Braelinn, Sugar Land, TX 77479
  3.  
  4. This is release 4.  The files in this binary distribution may be redistributed
  5. under the GPL (with source) or without the source code provided:
  6.  
  7. * CWSDPMI.EXE or CWSDPR0.EXE are not modified in any way except via CWSPARAM
  8.  
  9. * Notice to users that they have the right to receive the source code and/or
  10.   binary updates for CWSDPMI.  Distributors should indicate a site for the 
  11.   source in their documentation.
  12.  
  13. -------------------------------------------------------------------------------
  14.  
  15. CWSDPMI was written to provide DPMI services for V2 of DJGPP.  It currently
  16. does not support 16-bit DPMI applications, or DPMI applications requiring a
  17. built in extender.  It does support virtual memory and hardware interrupt 
  18. reflection from real mode to protected mode.  DJGPP V1.1x and RSX applications 
  19. will also run using this server, which can be used to provide enhanced control
  20. over hardware interrupts.  Some DPMI 1.0 extensions (0x506, 0x507, 0x508) have 
  21. been implemented.
  22.  
  23. CWSDPR0.EXE is an alternate version which runs at ring 0 with virtual memory
  24. disabled.  It may be used if access to ring-0 features are desired.  It
  25. currently does not switch stacks on HW interrupts, so some DJGPP features
  26. such as SIGINT and SIGFPE are not supported and will generate a double fault
  27. or stack fault error (to be fixed someday).
  28.  
  29. Directions for use (server can be used in either of two different ways):
  30.  
  31. 1) "cwsdpmi" alone with no parameters will terminate and stay resident 
  32.    FOR A SINGLE DPMI PROCESS.  This means it unloads itself when your 
  33.    DPMI application exits.  This mode is useful in software which needs
  34.    DPMI services, since CWSDPMI can be exec'ed and then will unload on exit.
  35.  
  36. 2) "cwsdpmi -p" will terminate and stay resident until you remove it.
  37.    It can be loaded into UMBs with LH.  "cwsdpmi -u" will unload the TSR.
  38.  
  39. 3) The file used for virtual memory swapping, if desired, is controlled 
  40.    by the "-sc:\cwsdpmi.swp" syntax on the command line.  You must specify
  41.    either a file with full disk/directory syntax, or "-s-" which disables
  42.    virtual memory.  The environment variables GO32TMP, TMP, and TEMP are
  43.    no longer used.
  44.  
  45. 4) The default swap file name is now c:\cwsdpmi.swp, but this can be changed
  46.    with the CWSPARAM image, as can some other parameters.
  47.  
  48. I would like to give special thanks to DJ Delorie who wrote the original 
  49. GO32 code on which CWSDPMI is based.  Morten Welinder also provided and 
  50. improved much of the code in this program.
  51.  
  52. -------------------------------------------------------------------------------
  53.  
  54. This section contains a list of the error messages you might see out of 
  55. CWSDPMI and some details on what they mean.
  56.  
  57. Exceptions are only handled by CWSDPMI if the application does not establish
  58. an exception handler, exceptions nest 5 deep, or the error is particularly bad:
  59.  
  60. "Page fault" -
  61.   1) an illegal page fault happens in a RMCB or HW interrupt, (lock all pages!)
  62.   2) all available pages have been locked,
  63.   3) the application is using non-committed pages for null pointer protection.
  64. "Double Fault" - multiple exceptions occured
  65. "Invalid TSS" - typically due to RMCB or HW interrupt being called after the
  66.    selectors/memory have been deallocated (remember to reset the mouse)
  67. "General Protection Fault" - bad parameter sent to a DPMI call
  68.  
  69. "80386 required."
  70.  
  71. Since 80286 and lesser processors don't have the hardware necessary to 
  72. run CWSDPMI.  No workaround, upgrade.
  73.  
  74. "DOS 3 required."
  75.  
  76. A few interrupts are used which need DOS 3.0 or higher.  I don't expect to
  77. ever see this message, since 80386 machines were introduced after DOS 3.0
  78. and that check is made first.
  79.  
  80. "CWSDPMI V0.90+ (r4) Copyright (C) 1997 CW Sandmann  ABSOLUTELY NO WARRANTY"
  81.  
  82. An informational message displayed if the program is not run in one-pass mode.
  83.  
  84. "Protected mode not accessible."
  85.  
  86. This message should only be displayed if running CWSDPMI in a protected
  87. environment with no access to protected mode.  In this case, DPMI should 
  88. already be available and CWSDPMI would not be needed.  I would like to
  89. know if you see this message and DPMI is not available!
  90.  
  91. "Warning: cannot open swap file c:\cwsdpmi.swp"
  92.  
  93. Maybe you are out of file handles, or the swap file name is incorrectly
  94. specified in the image (change the name with cwsparam).
  95.  
  96. "No swap space!"
  97.  
  98. This message means you tried to use more paging file than CWSDPMI is 
  99. compiled to handle (typically 256Mb worth).  Since this is protected 
  100. against in the memory allocation code, you should never see this message.
  101.  
  102. "Swap disk full!"
  103.  
  104. This means the paging file could not be expanded when trying to page
  105. memory out to disk.  This would normally not be seen, unless you are
  106. writing output to the same disk which holds the paging file.  Decrease
  107. the amount of memory your DPMI application is using or free up disk space.
  108.  
  109. "Interrupt 0x??"
  110.  
  111. Your application tried to call an interrupt from protected mode which 
  112. normally shouldn't be called (something like a data pointer).  If the
  113. request was allowed to continue it would likely hang your machine.  If you
  114. see this message and think the interrupt should be allowed to continue, let
  115. me know.
  116.  
  117. "Error: Using XMS switched CPU into V86 mode."
  118.  
  119. This message might be seen if you have your memory manager in AUTO mode.  The
  120. only workaround in this case is to stop using AUTO mode.
  121.  
  122. "Error: could not allocate page table memory"
  123.  
  124. The page table memory (a minimum of 16Kb) is allocated from conventional 
  125. memory (either in the 640Kb region or UMBs).  If CWSDPMI cannot allocate the 
  126. minimum necessary memory, you would see this message.  Free up some 
  127. conventional memory.  You may also see this message if a page directory needs
  128. to be faulted in, and there are no available pages.  This means too many pages
  129. have been locked for the allocated page tables available.  While CWSDPMI
  130. tries to dynamically allocate these if needed, this effort failed.  You need 
  131. to increase the number of page tables with CWSPARAM, or increase the amount 
  132. of free conventional memory if it is low.  If the application which calls
  133. CWSDPMI internally manages all the DOS memory, the page tables may need to
  134. be pre-allocated at DPMI startup time (if this is needed, try using the 
  135. run option flag 2 in cwsparam).
  136.  
  137. "16-bit DPMI unsupported."
  138.  
  139. CWSDPMI is a 32-bit only DPMI server.  Ideally, on the request to enter DPMI's
  140. PM with a 16-bit request, we would just fail the call setting the carry bit
  141. like the DPMI specification describes.  Some buggy 16-bit compiler tools don't
  142. check the return status and will hang the machine in this case.  So, I issue
  143. an error message and exit the image instead.        
  144.    
  145. "Descriptors exhausted."
  146.  
  147. An attempt to nest a DPMI client failed in the setup phase due to insufficient
  148. free selectors in the LDT.
  149.  
  150. "CWSDPMI not removed"
  151.  
  152. When the -u parameter is specified, if DPMI is not detected this message is
  153. printed.  Informational.
  154.