/[projet1]/public/pc/tools/osdk/main/Osdk/_final_/Euphoric/cwsdpmi.txt
Defence Force logotype

Contents of /public/pc/tools/osdk/main/Osdk/_final_/Euphoric/cwsdpmi.txt

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.26