Release 0.0.3
WHAT'S NEW with version 0.0.3:
- Fixed bug with sector sizes.
- Registers at program startup are now set correctly.
- Segment fixups for relocatable-segment internal entry points.
- Fixed bug in DOS PSP structure.
- Some resource loading is done.
- Added "return" ordinal type to build program.
- Added comment capability to build program.
diff --git a/Makefile b/Makefile
index 54dff6d..aeaa47a 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-CFLAGS=-g
+CFLAGS=-g -DDEBUG_RESOURCE
######################################################################
# FILES:
@@ -11,12 +11,15 @@
DLL_LENGTH=256
BUILDOBJS=dll_kernel.o dll_user.o dll_gdi.o dll_unixlib.o \
- dll_kernel_tab.o dll_user_tab.o dll_gdi_tab.o dll_unixlib_tab.o
+ dll_win87em.o dll_shell.o \
+ dll_kernel_tab.o dll_user_tab.o dll_gdi_tab.o dll_unixlib_tab.o \
+ dll_win87em_tab.o dll_shell_tab.o
MUST_BE_LINKED_FIRST=if1632.o $(BUILDOBJS)
OBJS=$(MUST_BE_LINKED_FIRST) \
- dump.o heap.o ldt.o kernel.o relay.o selector.o user.o wine.o
+ dump.o heap.o ldt.o kernel.o relay.o resource.o \
+ selector.o user.o wine.o
TARGET=wine
LIBS=-lldt
@@ -47,3 +50,9 @@
dll_unixlib.S dll_unixlib_tab.c: build unixlib.spec
build unixlib.spec
+
+dll_win87em.S dll_win87em_tab.c: build win87em.spec
+ build win87em.spec
+
+dll_shell.S dll_shell_tab.c: build shell.spec
+ build shell.spec
diff --git a/README b/README
index 09eb3de..3bcf6c8 100644
--- a/README
+++ b/README
@@ -2,9 +2,19 @@
warranty. It is my intent to cover this code with the Gnu Public
License.
-So here goes release 0.0.2 of the Windows loader. It will do some
-relocations and then run the program. The program test.exe is a
-Windows executable. Try the command "wine test.exe".
+So here goes release 0.0.3 of the Windows loader. It will do some
+relocations and then run the program. I have successfully loaded
+the Windows solitaire game. Try it. It currently stops a call to
+GetObject().
+
+WHAT'S NEW with version 0.0.3:
+ - Fixed bug with sector sizes.
+ - Registers at program startup are now set correctly.
+ - Segment fixups for relocatable-segment internal entry points.
+ - Fixed bug in DOS PSP structure.
+ - Some resource loading is done.
+ - Added "return" ordinal type to build program.
+ - Added comment capability to build program.
WHAT'S NEW with version 0.0.2:
@@ -34,10 +44,12 @@
- Make changes to the kernel to allow more than 32 LDT entries.
- Trap and handle DOS and DPMI calls.
- Windows emulation library (connect to Peter MacDonald's library).
- - Set registers correctly when starting Windows program.
- Allowing loading of 16-bit DLLs for use with program.
- - global memory allocation
- - complete and improve local heap allocation
+ - global memory allocation.
+ - complete and improve local heap allocation.
+ - Handle self-loading applications.
+ - Deal with callback functions.
+ - Resource loading
INSTALLATION:
diff --git a/build b/build
deleted file mode 100755
index d47f542..0000000
--- a/build
+++ /dev/null
Binary files differ
diff --git a/build-spec.txt b/build-spec.txt
index 61937bf..25dfed6 100644
--- a/build-spec.txt
+++ b/build-spec.txt
@@ -8,12 +8,18 @@
HANDLERNAME([ARGNUM [ARGNUM [...]]])
ORDINAL equate EXPORTNAME DATA
+
+ORDINAL return EXPORTNAME ARGLENGTH RETVALUE
+
+# COMMENT_TEXT
+
--------------------
General:
"name", "id" and "length" fields are mandatory. Specific ordinal
declarations are optional, but the default handler will print an
-error message.
+error message. Lines whose first character is a '#' will be ignored
+as comments.
Variable ordinals:
diff --git a/build.c b/build.c
index f7dd03d..8905cc9 100644
--- a/build.c
+++ b/build.c
@@ -1,6 +1,6 @@
-/*
- * Copyright Robert J. Amstadt, 1993
- */
+static char RCSId[] = "$Id: build.c,v 1.2 1993/06/30 14:24:33 root Exp root $";
+static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -17,6 +17,7 @@
#define FUNCTYPE_REG 19
#define EQUATETYPE_ABS 18
+#define TYPE_RETURN 20
#define MAX_ORDINALS 1024
@@ -45,6 +46,12 @@
int arg_indices_32[16];
} ORDFUNCDEF;
+typedef struct ordinal_return_definition_s
+{
+ int arg_size;
+ int ret_value;
+} ORDRETDEF;
+
ORDDEF OrdinalDefinitions[MAX_ORDINALS];
char LowerDLLName[80];
@@ -146,16 +153,26 @@
ParseBuffer = malloc(512);
ParseNext = ParseBuffer;
Line++;
- if (fgets(ParseBuffer, 511, SpecFp) == NULL)
- return NULL;
+ while (1)
+ {
+ if (fgets(ParseBuffer, 511, SpecFp) == NULL)
+ return NULL;
+ if (ParseBuffer[0] != '#')
+ break;
+ }
}
while ((token = GetTokenInLine()) == NULL)
{
ParseNext = ParseBuffer;
Line++;
- if (fgets(ParseBuffer, 511, SpecFp) == NULL)
- return NULL;
+ while (1)
+ {
+ if (fgets(ParseBuffer, 511, SpecFp) == NULL)
+ return NULL;
+ if (ParseBuffer[0] != '#')
+ break;
+ }
}
return token;
@@ -388,6 +405,50 @@
}
int
+ParseReturn(int ordinal)
+{
+ ORDDEF *odp;
+ ORDRETDEF *rdp;
+ char *token;
+ char *endptr;
+ int value;
+
+ if (ordinal >= MAX_ORDINALS)
+ {
+ fprintf(stderr, "%d: Ordinal number too large\n", Line);
+ exit(1);
+ }
+
+ rdp = malloc(sizeof(*rdp));
+
+ odp = &OrdinalDefinitions[ordinal];
+ strcpy(odp->export_name, GetToken());
+ odp->valid = 1;
+ odp->type = TYPE_RETURN;
+ odp->additional_data = rdp;
+
+ token = GetToken();
+ rdp->arg_size = strtol(token, &endptr, 0);
+ if (endptr == NULL || *endptr != '\0')
+ {
+ fprintf(stderr, "%d: Expected number value, got '%s'\n", Line,
+ token);
+ exit(1);
+ }
+
+ token = GetToken();
+ rdp->ret_value = strtol(token, &endptr, 0);
+ if (endptr == NULL || *endptr != '\0')
+ {
+ fprintf(stderr, "%d: Expected number value, got '%s'\n", Line,
+ token);
+ exit(1);
+ }
+
+ return 0;
+}
+
+int
ParseOrdinal(int ordinal)
{
char *token;
@@ -415,6 +476,8 @@
return ParseExportFunction(ordinal, FUNCTYPE_REG);
else if (stricmp(token, "equate") == 0)
return ParseEquate(ordinal);
+ else if (stricmp(token, "return") == 0)
+ return ParseReturn(ordinal);
else
{
fprintf(stderr,
@@ -509,6 +572,7 @@
{
ORDDEF *odp;
ORDFUNCDEF *fdp;
+ ORDRETDEF *rdp;
FILE *fp;
char filename[80];
char buffer[80];
@@ -553,6 +617,7 @@
else
{
fdp = odp->additional_data;
+ rdp = odp->additional_data;
switch (odp->type)
{
@@ -573,6 +638,18 @@
OutputVariableCode(fp, ".long", odp);
break;
+ case TYPE_RETURN:
+ fprintf(fp, "_%s_Ordinal_%d:\n", UpperDLLName, i);
+ fprintf(fp, "\tmovw\t$%d,%%ax\n", rdp->ret_value & 0xffff);
+ fprintf(fp, "\tmovw\t$%d,%%dx\n",
+ (rdp->ret_value >> 16) & 0xffff);
+ fprintf(fp, "\t.byte\t0x66\n");
+ if (rdp->arg_size != 0)
+ fprintf(fp, "\tlret\t$%d\n", rdp->arg_size);
+ else
+ fprintf(fp, "\tlret\n");
+ break;
+
case FUNCTYPE_REG:
fprintf(fp, "_%s_Ordinal_%d:\n", UpperDLLName, i);
fprintf(fp, "\tpushw\t%%ax\n");
diff --git a/dlls.h b/dlls.h
index a43a9e0..87d3dc8 100644
--- a/dlls.h
+++ b/dlls.h
@@ -1,4 +1,4 @@
-/* $Id$
+/* $Id: dlls.h,v 1.1 1993/06/29 15:55:18 root Exp $
*/
/*
* Copyright Robert J. Amstadt, 1993
@@ -52,5 +52,7 @@
extern struct dll_table_entry_s USER_table[];
extern struct dll_table_entry_s GDI_table[];
extern struct dll_table_entry_s UNIXLIB_table[];
+extern struct dll_table_entry_s WIN87EM_table[];
+extern struct dll_table_entry_s SHELL_table[];
#endif /* DLLS_H */
diff --git a/dump.c b/dump.c
index 72edc7a..6c21f9e 100644
--- a/dump.c
+++ b/dump.c
@@ -1,9 +1,6 @@
-/* $Id$
- */
+static char RCSId[] = "$Id: dump.c,v 1.1 1993/06/29 15:55:18 root Exp $";
+static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
-/*
- * Copyright Robert J. Amstadt, 1993
- */
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
diff --git a/gdi-ordinals b/gdi-ordinals
new file mode 100644
index 0000000..55fcf49
--- /dev/null
+++ b/gdi-ordinals
@@ -0,0 +1,283 @@
+ 1 1 4e0c SETBKCOLOR exported, shared data
+ 2 1 4e22 SETBKMODE exported
+ 3 1 4b46 SETMAPMODE exported, shared data
+ 4 1 4e6b SETROP2 exported
+ 5 1 5218 SETRELABS exported
+ 6 1 4eb9 SETPOLYFILLMODE exported
+ 7 1 4e92 SETSTRETCHBLTMODE exported
+ 8 1 4a00 SETTEXTCHARACTEREXTRA exported, shared data
+ 9 1 4df8 SETTEXTCOLOR exported, shared data
+ 10 1 49ec SETTEXTJUSTIFICATION exported, shared data
+ 11 1 4ee0 SETWINDOWORG exported, shared data
+ 12 4 06c8 SETWINDOWEXT exported
+ 13 1 4f14 SETVIEWPORTORG exported, shared data
+ 14 4 06fc SETVIEWPORTEXT exported
+ 15 1 4b12 OFFSETWINDOWORG exported
+ 16 4 0764 SCALEWINDOWEXT exported
+ 17 1 4ade OFFSETVIEWPORTORG exported
+ 18 4 0730 SCALEVIEWPORTEXT exported
+ 19 21 0e96 LINETO exported, shared data
+ 20 21 0eaa MOVETO exported, shared data
+ 21 1 4c50 EXCLUDECLIPRECT exported
+ 22 1 4c84 INTERSECTCLIPRECT exported
+ 23 9 1030 ARC exported, shared data
+ 24 9 101c ELLIPSE exported, shared data
+ 25 15 08fc FLOODFILL exported, shared data
+ 26 9 1044 PIE exported, shared data
+ 27 25 0000 RECTANGLE exported, shared data
+ 28 9 106c ROUNDRECT exported, shared data
+ 29 1 4c14 PATBLT exported, shared data
+ 30 1 48cb SAVEDC exported, shared data
+ 31 23 0383 SETPIXEL exported, shared data
+ 32 1 4d3a OFFSETCLIPRGN exported, shared data
+ 33 1 4f95 TEXTOUT exported, shared data
+ 34 1 4bfa BITBLT exported, shared data
+ 35 1 4be0 STRETCHBLT exported, shared data
+ 36 24 0000 POLYGON exported, shared data
+ 37 21 0ede POLYLINE exported, shared data
+ 38 7 06d1 ESCAPE exported, shared data
+ 39 1 48b7 RESTOREDC exported, shared data
+ 40 26 0000 FILLRGN exported, shared data
+ 41 26 003a FRAMERGN exported, shared data
+ 42 1 4dbd INVERTRGN exported, shared data
+ 43 26 0020 PAINTRGN exported, shared data
+ 44 1 4c98 SELECTCLIPRGN exported, shared data
+ 45 1 4dd7 SELECTOBJECT exported, shared data
+ 46 1 79f4 __GP exported, shared data
+ 47 1 4d4e COMBINERGN exported, shared data
+ 48 1 4929 CREATEBITMAP exported, shared data
+ 49 1 4943 CREATEBITMAPINDIRECT exported, shared data
+ 50 4 05d7 CREATEBRUSHINDIRECT exported, shared data
+ 51 4 05f1 CREATECOMPATIBLEBITMAP exported
+ 52 1 47c4 CREATECOMPATIBLEDC exported, shared data
+ 53 1 480a CREATEDC exported
+ 54 9 020e CREATEELLIPTICRGN exported, shared data
+ 55 9 0f99 CREATEELLIPTICRGNINDIRECT exported, shared data
+ 56 3 1589 CREATEFONT exported, shared data
+ 57 3 15b1 CREATEFONTINDIRECT exported, shared data
+ 58 4 05a7 CREATEHATCHBRUSH exported, shared data
+ 59 1 1ec0 WEP exported, shared data
+ 60 4 05c3 CREATEPATTERNBRUSH exported, shared data
+ 61 1 48f3 CREATEPEN exported, shared data
+ 62 1 490f CREATEPENINDIRECT exported, shared data
+ 63 9 0fb3 CREATEPOLYGONRGN exported, shared data
+ 64 1 59cd CREATERECTRGN exported, shared data
+ 65 1 4cb2 CREATERECTRGNINDIRECT exported, shared data
+ 66 4 017a CREATESOLIDBRUSH exported, shared data
+ 67 1 4a14 DPTOLP exported
+ 68 1 4897 DELETEDC exported, shared data
+ 69 1 48df DELETEOBJECT exported, shared data
+ 70 5 05a7 ENUMFONTS exported, shared data
+ 71 4 0678 ENUMOBJECTS exported, shared data
+ 72 1 4ccc EQUALRGN exported, shared data
+ 73 1 16a5 EXCLUDEVISRECT exported
+ 74 1 4a76 GETBITMAPBITS exported
+ 75 1 515d GETBKCOLOR exported, shared data
+ 76 1 5142 GETBKMODE exported
+ 77 1 4c64 GETCLIPBOX exported, shared data
+ 78 1 5157 GETCURRENTPOSITION exported
+ 79 1 5154 GETDCORG exported
+ 80 1 4a96 GETDEVICECAPS exported, shared data
+ 81 1 513f GETMAPMODE exported
+ 82 4 06a8 GETOBJECT exported, shared data
+ 83 23 036f GETPIXEL exported, shared data
+ 84 1 5139 GETPOLYFILLMODE exported
+ 85 1 5133 GETROP2 exported
+ 86 1 5145 GETRELABS exported
+ 87 1 4a5a GETSTOCKOBJECT exported, shared data
+ 88 1 513c GETSTRETCHBLTMODE exported
+ 89 16 0c63 GETTEXTCHARACTEREXTRA exported, shared data
+ 90 1 5160 GETTEXTCOLOR exported, shared data
+ 91 1 4b8d GETTEXTEXTENT exported, shared data
+ 92 3 166a GETTEXTFACE exported, shared data
+ 93 3 169a GETTEXTMETRICS exported, shared data
+ 94 1 5151 GETVIEWPORTEXT exported
+ 95 1 514b GETVIEWPORTORG exported
+ 96 1 514e GETWINDOWEXT exported
+ 97 1 5148 GETWINDOWORG exported
+ 98 1 16a2 INTERSECTVISRECT exported
+ 99 1 4a37 LPTODP exported
+100 23 039b LINEDDA exported, shared data
+101 1 4d26 OFFSETRGN exported, shared data
+102 1 2929 OFFSETVISRGN exported, shared data
+103 1 4da9 PTVISIBLE exported, shared data
+104 1 4d06 RECTVISIBLE exported, shared data
+105 1 1635 SELECTVISRGN exported, shared data
+106 1 4aaa SETBITMAPBITS exported
+117 1 1118 SETDCORG exported, shared data
+119 2 0e25 ADDFONTRESOURCE exported, shared data
+121 1 2067 DEATH exported, shared data
+122 1 208e RESURRECTION exported, shared data
+123 19 1603 PLAYMETAFILE exported, shared data
+124 19 1624 GETMETAFILE exported, shared data
+125 20 248b CREATEMETAFILE exported, shared data
+126 20 24a5 CLOSEMETAFILE exported, shared data
+127 19 15ef DELETEMETAFILE exported, shared data
+128 1 41b0 MULDIV exported, shared data
+129 1 076c SAVEVISRGN exported, shared data
+130 1 07b2 RESTOREVISRGN exported, shared data
+131 1 200a INQUIREVISRGN exported, shared data
+132 7 073d SETENVIRONMENT exported, shared data
+133 7 0707 GETENVIRONMENT exported, shared data
+134 1 4b6d GETRGNBOX exported, shared data
+135 15 087f SCANLR exported, shared data
+136 6 0507 REMOVEFONTRESOURCE exported, shared data
+148 1 4c28 SETBRUSHORG exported, shared data
+149 1 515a GETBRUSHORG exported
+150 1 4c3c UNREALIZEOBJECT exported, shared data
+151 20 246b COPYMETAFILE exported, shared data
+153 1 47d8 CREATEIC exported
+154 1 4aca GETNEARESTCOLOR exported, shared data
+155 7 052d QUERYABORT exported, shared data
+156 4 0605 CREATEDISCARDABLEBITMAP exported
+159 20 24b9 GETMETAFILEBITS exported, shared data
+160 20 24cd SETMETAFILEBITS exported, shared data
+161 1 4d95 PTINREGION exported, shared data
+162 1 49b8 GETBITMAPDIMENSION exported, shared data
+163 1 4984 SETBITMAPDIMENSION exported, shared data
+169 1 4352 ISDCDIRTY exported, shared data
+170 1 439b SETDCSTATUS exported, shared data
+172 1 4d81 SETRECTRGN exported, shared data
+173 1 5130 GETCLIPRGN exported, shared data
+175 19 166a ENUMMETAFILE exported, shared data
+176 19 163e PLAYMETAFILERECORD exported, shared data
+179 1 0601 GETDCSTATE exported, shared data
+180 1 0615 SETDCSTATE exported, shared data
+181 1 4ce6 RECTINREGION exported, shared data
+190 31 04ec SETDCHOOK exported, shared data
+191 31 04b5 GETDCHOOK exported, shared data
+192 1 76b0 SETHOOKFLAGS exported, shared data
+193 31 0526 SETBOUNDSRECT exported, shared data
+194 1 76e4 GETBOUNDSRECT exported, shared data
+195 1 1ac6 SELECTBITMAP exported, shared data
+196 20 24e1 SETMETAFILEBITSBETTER exported, shared data
+201 13 014a DMBITBLT exported
+202 13 014f DMCOLORINFO exported
+206 13 0163 DMENUMDFONTS exported
+207 13 0169 DMENUMOBJ exported
+208 13 0159 DMOUTPUT exported
+209 13 0154 DMPIXEL exported
+210 13 015e DMREALIZEOBJECT exported
+211 13 00df DMSTRBLT exported, shared data
+212 13 016e DMSCANLR exported
+213 13 0171 BRUTE exported, shared data
+214 13 0000 DMEXTTEXTOUT exported, shared data
+215 13 0130 DMGETCHARWIDTH exported, shared data
+216 13 0136 DMSTRETCHBLT exported, shared data
+217 13 013b DMDIBBITS exported, shared data
+218 13 0140 DMSTRETCHDIBITS exported, shared data
+219 13 0145 DMSETDIBTODEV exported, shared data
+220 13 024d DMTRANSPOSE exported, shared data
+230 27 0000 CREATEPQ exported
+231 27 00fb MINPQ exported
+232 27 00fe EXTRACTPQ exported
+233 27 0045 INSERTPQ exported
+234 27 01dc SIZEPQ exported
+235 27 01cb DELETEPQ exported
+240 28 01c3 OPENJOB exported, shared data
+241 28 08eb WRITESPOOL exported, shared data
+242 28 0e82 WRITEDIALOG exported, shared data
+243 28 1292 CLOSEJOB exported, shared data
+244 28 13e0 DELETEJOB exported, shared data
+245 28 1802 GETSPOOLJOB exported, shared data
+246 28 06a1 STARTSPOOLPAGE exported, shared data
+247 28 1112 ENDSPOOLPAGE exported, shared data
+248 28 18e4 QUERYJOB exported, shared data
+250 28 0000 COPY exported, shared data
+253 28 0ff3 DELETESPOOLPAGE exported, shared data
+254 28 156f SPOOLFILE exported, shared data
+300 5 093c ENGINEENUMERATEFONT exported, shared data
+301 6 0560 ENGINEDELETEFONT exported, shared data
+302 3 2b2d ENGINEREALIZEFONT exported, shared data
+303 3 2c8a ENGINEGETCHARWIDTH exported, shared data
+304 5 0993 ENGINESETFONTCONTEXT exported, shared data
+305 7 09e9 ENGINEGETGLYPHBMP exported, shared data
+306 7 1184 ENGINEMAKEFONTDIR exported, shared data
+307 7 083d GETCHARABCWIDTHS exported, shared data
+308 7 0876 GETOUTLINETEXTMETRICS exported, shared data
+309 7 0795 GETGLYPHOUTLINE exported, shared data
+310 7 0763 CREATESCALABLEFONTRESOURCE exported, shared data
+311 7 07fc GETFONTDATA exported, shared data
+312 7 0d8a CONVERTOUTLINEFONTFILE exported, shared data
+313 7 0d36 GETRASTERIZERCAPS exported, shared data
+314 1 669a ENGINEEXTTEXTOUT exported, shared data
+330 5 05d7 ENUMFONTFAMILIES exported, shared data
+332 7 0896 GETKERNINGPAIRS exported, shared data
+345 1 5136 GETTEXTALIGN exported, shared data
+346 1 4e49 SETTEXTALIGN exported, shared data
+348 9 1058 CHORD exported, shared data
+349 3 163f SETMAPPERFLAGS exported, shared data
+350 3 15cb GETCHARWIDTH exported, shared data
+351 1 4f48 EXTTEXTOUT exported, shared data
+352 1 0a2e GETPHYSICALFONTHANDLE exported, shared data
+353 3 160b GETASPECTRATIOFILTER exported, shared data
+354 1 1fdf SHRINKGDIHEAP exported, shared data
+355 48 02ef FTRAPPING0 exported, shared data
+360 22 0023 CREATEPALETTE exported, shared data
+361 22 0271 GDISELECTPALETTE exported, shared data
+362 22 1088 GDIREALIZEPALETTE exported, shared data
+363 22 0050 GETPALETTEENTRIES exported, shared data
+364 22 00d2 SETPALETTEENTRIES exported, shared data
+365 22 101d REALIZEDEFAULTPALETTE exported, shared data
+366 22 0109 UPDATECOLORS exported, shared data
+367 22 0000 ANIMATEPALETTE exported, shared data
+368 22 00be RESIZEPALETTE exported, shared data
+370 22 0073 GETNEARESTPALETTEINDEX exported, shared data
+372 15 0910 EXTFLOODFILL exported, shared data
+373 22 00f5 SETSYSTEMPALETTEUSE exported, shared data
+374 22 00aa GETSYSTEMPALETTEUSE exported, shared data
+375 22 0087 GETSYSTEMPALETTEENTRIES exported, shared data
+376 31 009c RESETDC exported, shared data
+377 31 0045 STARTDOC exported, shared data
+378 31 002e ENDDOC exported, shared data
+379 31 0068 STARTPAGE exported, shared data
+380 31 0017 ENDPAGE exported, shared data
+381 31 007c SETABORTPROC exported, shared data
+382 31 0000 ABORTDOC exported, shared data
+400 1 420e FASTWINDOWFRAME exported, shared data
+401 2 0403 GDIMOVEBITMAP exported, shared data
+403 2 042a GDIINIT2 exported, shared data
+405 2 012e FINALGDIINIT exported, shared data
+407 1 0ec1 CREATEUSERBITMAP exported
+409 4 0200 CREATEUSERDISCARDABLEBITMAP exported
+410 19 1490 ISVALIDMETAFILE exported, shared data
+411 1 511a GETCURLOGFONT exported, shared data
+412 22 0b0c ISDCCURRENTPALETTE exported, shared data
+439 11 0202 STRETCHDIBITS exported, shared data
+440 11 0000 SETDIBITS exported, shared data
+441 11 0196 GETDIBITS exported, shared data
+442 11 006c CREATEDIBITMAP exported, shared data
+443 11 010a SETDIBITSTODEVICE exported, shared data
+444 9 01be CREATEROUNDRECTRGN exported, shared data
+445 4 0619 CREATEDIBPATTERNBRUSH exported, shared data
+449 11 1015 DEVICECOLORMATCH exported, shared data
+450 24 0023 POLYPOLYGON exported, shared data
+451 9 0fe3 CREATEPOLYPOLYGONRGN exported, shared data
+452 21 19a0 GDISEEGDIDO exported, shared data
+460 1 7690 GDITASKTERMINATION exported, shared data
+461 1 76a2 SETOBJECTOWNER exported, shared data
+462 1 1ec6 ISGDIOBJECT exported, shared data
+463 1 0e68 MAKEOBJECTPRIVATE exported, shared data
+464 19 1862 FIXUPBOGUSPUBLISHERMETAFILE exported, shared data
+465 1 29b7 RECTVISIBLE_EHH exported, shared data
+466 1 2aab RECTINREGION_EHH exported, shared data
+467 1 56a3 UNICODETOANSI exported, shared data
+468 1 49cc GETBITMAPDIMENSIONEX exported, shared data
+469 1 5eb5 GETBRUSHORGEX exported
+470 1 5ed8 GETCURRENTPOSITIONEX exported
+471 1 4bb4 GETTEXTEXTENTPOINT exported, shared data
+472 1 5f27 GETVIEWPORTEXTEX exported
+473 1 5f4a GETVIEWPORTORGEX exported
+474 1 5f6d GETWINDOWEXTEX exported
+475 1 5f90 GETWINDOWORGEX exported
+476 1 4af2 OFFSETVIEWPORTORGEX exported
+477 1 4b26 OFFSETWINDOWORGEX exported
+478 1 4998 SETBITMAPDIMENSIONEX exported, shared data
+479 4 0710 SETVIEWPORTEXTEX exported
+480 1 4f28 SETVIEWPORTORGEX exported, shared data
+481 4 06dc SETWINDOWEXTEX exported
+482 1 4ef4 SETWINDOWORGEX exported, shared data
+483 21 0ebe MOVETOEX exported, shared data
+484 4 0744 SCALEVIEWPORTEXTEX exported
+485 4 0778 SCALEWINDOWEXTEX exported
+486 3 161f GETASPECTRATIOFILTEREX exported, shared data
diff --git a/gdi.spec b/gdi.spec
index 9f87b18..3537537 100644
--- a/gdi.spec
+++ b/gdi.spec
@@ -1,3 +1,5 @@
+# $Id: gdi.spec,v 1.2 1993/06/30 14:24:33 root Exp root $
+#
name gdi
id 3
-length 256
+length 490
diff --git a/heap.c b/heap.c
index 156e9c8..b6e7f9c 100644
--- a/heap.c
+++ b/heap.c
@@ -1,4 +1,4 @@
-static char RCSId[] = "$Id$";
+static char RCSId[] = "$Id: heap.c,v 1.1 1993/06/29 15:55:18 root Exp $";
static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
#include <stdio.h>
@@ -34,7 +34,7 @@
MDESC *m, *m_new;
#ifdef HEAP_DEBUG
- fprintf(stderr, "LocalAlloc: flags %x, bytes %d, ", flags, bytes);
+ printf("LocalAlloc: flags %x, bytes %d, ", flags, bytes);
#endif
/*
@@ -63,7 +63,7 @@
m->length -= (m_new->length + sizeof(MDESC));
#ifdef HEAP_DEBUG
- fprintf(stderr, "Returning %x\n", (int) (m + 1));
+ printf("Returning %x\n", (int) (m + 1));
#endif
return (void *) (m + 1);
}
@@ -80,13 +80,13 @@
m->next->prev = m->prev;
#ifdef HEAP_DEBUG
- fprintf(stderr, "Returning %x\n", (int) (m + 1));
+ printf("Returning %x\n", (int) (m + 1));
#endif
return (void *) (m + 1);
}
#ifdef HEAP_DEBUG
- fprintf(stderr, "Returning 0\n");
+ printf("Returning 0\n");
#endif
return 0;
}
diff --git a/if1632.S b/if1632.S
index 7d2bbed..807d32e 100644
--- a/if1632.S
+++ b/if1632.S
@@ -36,7 +36,7 @@
.text
/**********************************************************************
- * int CallTo16(unsigned long csip, unsigned long sssp,
+ * int CallToInit16(unsigned long csip, unsigned long sssp,
* unsigned short ds)
*
* Stack: 0 ebp
@@ -48,8 +48,8 @@
* 16 target ds
*/
.align 4
- .globl _CallTo16
-_CallTo16:
+ .globl _CallToInit16
+_CallToInit16:
pushl %ebp
movl %esp,%ebp
@@ -76,13 +76,17 @@
movl %ebp,saved_ebp
/*
- * Load ds, es, sp, ss & bp
+ * Load initial registers
*/
- movl $0,%eax
+ movw _WIN_StackSize,%bx
+ movw _WIN_HeapSize,%cx
+ movl $0,%esi
+ xorl %eax,%eax
movw _PSPSelector,%ax
movw %ax,%es
movw 16(%ebp),%ax
movw %ax,%ds
+ movl %eax,%edi
xorl %eax,%eax
movw 12(%ebp),%ax
movl %eax,%esp
@@ -257,6 +261,8 @@
popl saved_16esp
popw %es
+/* movw _PSPSelector,%ax
+ movw %ax,%es */
popw %ds
.align 2,0x90
@@ -283,12 +289,11 @@
/*
* Last, we need to load the return values.
*/
+ movl $0,%esi
movw $1,%ax
movw %gs:_WIN_StackSize,%cx
movw $1,%dx
movw 0x80,%bx
- movl $0,%esi
- movl $1,%edi
.byte 0x66
lret
diff --git a/kernel-ordinals b/kernel-ordinals
new file mode 100644
index 0000000..f3ad91d
--- /dev/null
+++ b/kernel-ordinals
@@ -0,0 +1,233 @@
+ 1 1 93ce FATALEXIT exported, shared data
+ 2 1 9d6f EXITKERNEL exported
+ 3 3 07c6 GETVERSION exported
+ 4 2 28b7 LOCALINIT exported
+ 5 1 0543 LOCALALLOC exported
+ 6 1 0587 LOCALREALLOC exported
+ 7 1 055f LOCALFREE exported
+ 8 1 0573 LOCALLOCK exported
+ 9 1 05bd LOCALUNLOCK exported
+ 10 1 05a9 LOCALSIZE exported
+ 11 1 8d6a LOCALHANDLE exported
+ 12 1 05d1 LOCALFLAGS exported
+ 13 1 8d85 LOCALCOMPACT exported
+ 14 2 0278 LOCALNOTIFY exported
+ 15 1 022b GLOBALALLOC exported
+ 16 1 028c GLOBALREALLOC exported
+ 17 1 0247 GLOBALFREE exported
+ 18 1 0278 GLOBALLOCK exported
+ 19 1 02cb GLOBALUNLOCK exported
+ 20 1 02b7 GLOBALSIZE exported
+ 21 1 0264 GLOBALHANDLE exported
+ 22 1 02e8 GLOBALFLAGS exported
+ 23 1 03b3 LOCKSEGMENT exported
+ 24 1 03c7 UNLOCKSEGMENT exported
+ 25 1 1105 GLOBALCOMPACT exported
+ 26 1 0e39 GLOBALFREEALL exported
+ 28 1 1190 GLOBALMASTERHANDLE exported
+ 29 1 7d21 YIELD exported
+ 30 1 7ca8 WAITEVENT exported
+ 31 1 7d92 POSTEVENT exported
+ 32 1 7df0 SETPRIORITY exported
+ 33 1 81e5 LOCKCURRENTTASK exported
+ 34 1 7de3 SETTASKQUEUE exported
+ 35 1 7d9d GETTASKQUEUE exported
+ 36 1 842c GETCURRENTTASK exported
+ 37 3 024e GETCURRENTPDB exported
+ 38 1 7dc5 SETTASKSIGNALPROC exported
+ 41 1 9c8e ENABLEDOS exported
+ 42 1 9c8f DISABLEDOS exported
+ 45 2 0244 LOADMODULE exported
+ 46 2 0176 FREEMODULE exported
+ 47 2 01bb GETMODULEHANDLE exported
+ 48 2 01d2 GETMODULEUSAGE exported
+ 49 2 01e6 GETMODULEFILENAME exported
+ 50 2 019e GETPROCADDRESS exported
+ 51 3 00a8 MAKEPROCINSTANCE exported
+ 52 3 00c5 FREEPROCINSTANCE exported
+ 53 1 4927 CALLPROCINSTANCE exported
+ 54 2 0219 GETINSTANCEDATA exported
+ 55 3 08ee CATCH exported
+ 56 3 0928 THROW exported
+ 57 1 0663 GETPROFILEINT exported, shared data
+ 58 1 0689 GETPROFILESTRING exported, shared data
+ 59 1 0763 WRITEPROFILESTRING exported, shared data
+ 60 3 0008 FINDRESOURCE exported
+ 61 1 0126 LOADRESOURCE exported
+ 62 1 018b LOCKRESOURCE exported
+ 63 1 0177 FREERESOURCE exported
+ 64 1 0140 ACCESSRESOURCE exported
+ 65 1 019f SIZEOFRESOURCE exported
+ 66 1 015d ALLOCRESOURCE exported
+ 67 3 002e SETRESOURCEHANDLER exported
+ 68 3 041a INITATOMTABLE exported
+ 69 1 4942 FINDATOM exported
+ 70 1 493f ADDATOM exported
+ 71 1 01b9 DELETEATOM exported
+ 72 1 01cd GETATOMNAME exported
+ 73 1 01fd GETATOMHANDLE exported
+ 74 1 05e5 OPENFILE exported
+ 75 3 04be OPENPATHNAME exported
+ 76 3 04b6 DELETEPATHNAME exported
+ 77 1 83cd RESERVED1 exported
+ 78 1 83ca RESERVED2 exported
+ 79 1 83c4 RESERVED3 exported
+ 80 1 83c7 RESERVED4 exported
+ 81 1 046e _LCLOSE exported
+ 82 1 04e6 _LREAD exported
+ 83 1 048d _LCREAT exported
+ 84 1 04b8 _LLSEEK exported
+ 85 1 0443 _LOPEN exported
+ 86 1 0516 _LWRITE exported
+ 87 1 838e RESERVED5 exported
+ 88 1 836f LSTRCPY exported
+ 89 1 837f LSTRCAT exported
+ 90 1 82f6 LSTRLEN exported
+ 91 2 268d INITTASK exported
+ 92 3 0508 GETTEMPDRIVE exported
+ 93 1 48fa GETCODEHANDLE exported
+ 94 3 03ce DEFINEHANDLETABLE exported
+ 95 2 022d LOADLIBRARY exported
+ 96 2 018a FREELIBRARY exported
+ 97 3 00dc GETTEMPFILENAME exported
+ 98 1 5c17 GETLASTDISKCHANGE exported
+ 99 1 0bc5 GETLPERRMODE exported
+100 2 2ab7 VALIDATECODESEGMENTS exported
+101 1 1d92 NOHOOKDOSCALL exported
+102 1 1d98 DOS3CALL exported
+103 1 9e19 NETBIOSCALL exported
+104 1 03db GETCODEINFO exported
+105 3 07d9 GETEXEVERSION exported
+106 1 2ede SETSWAPAREASIZE exported
+107 3 0132 SETERRORMODE exported
+108 1 11c6 SWITCHSTACKTO exported
+109 1 123c SWITCHSTACKBACK exported
+110 1 7bac PATCHCODEHANDLE exported
+111 1 02fc GLOBALWIRE exported
+112 1 0310 GLOBALUNWIRE exported
+113 254 0003 __AHSHIFT exported
+114 254 0008 __AHINCR exported
+115 1 999b OUTPUTDEBUGSTRING exported
+116 2 2797 INITLIB exported
+117 1 7d3e OLDYIELD exported
+118 1 7da7 GETTASKQUEUEDS exported
+119 1 7db5 GETTASKQUEUEES exported
+120 1 72d4 UNDEFDYNLINK exported
+121 1 8db0 LOCALSHRINK exported
+122 1 81ff ISTASKLOCKED exported
+123 1 4638 KBDRST exported
+124 1 9c90 ENABLEKERNEL exported
+125 1 9c91 DISABLEKERNEL exported
+126 1 2ea7 MEMORYFREED exported
+127 1 06d7 GETPRIVATEPROFILEINT exported, shared data
+128 1 0709 GETPRIVATEPROFILESTRING exported, shared data
+129 1 0795 WRITEPRIVATEPROFILESTRING exported, shared data
+130 3 0888 FILECDR exported
+131 3 08ce GETDOSENVIRONMENT exported
+132 3 07ab GETWINFLAGS exported
+133 1 4e78 GETEXEPTR exported
+134 3 0054 GETWINDOWSDIRECTORY exported
+135 3 007e GETSYSTEMDIRECTORY exported
+136 3 0675 GETDRIVETYPE exported
+137 1 0211 FATALAPPEXIT exported
+138 2 1e4d GETHEAPSPACES exported
+139 1 612c DOSIGNAL exported
+140 3 068c SETSIGHANDLER exported
+141 1 8014 INITTASK1 exported
+150 1 7cff DIRECTEDYIELD exported
+151 3 07e6 WINOLDAPCALL exported
+152 3 08e2 GETNUMTASKS exported
+154 1 034c GLOBALNOTIFY exported
+155 1 119f GETTASKDS exported
+156 1 4632 LIMITEMSPAGES exported
+157 1 4639 GETCURPID exported
+158 1 7e3e ISWINOLDAPTASK exported
+159 1 0ec5 GLOBALHANDLENORIP exported
+160 1 a940 EMSCOPY exported
+161 2 29c9 LOCALCOUNTFREE exported
+162 2 2a01 LOCALHEAPSIZE exported
+163 1 0338 GLOBALLRUOLDEST exported
+164 1 0324 GLOBALLRUNEWEST exported
+165 1 9e0c A20PROC exported
+166 2 028f WINEXEC exported
+167 1 4f02 GETEXPWINVER exported
+168 1 84b8 DIRECTRESALLOC exported
+169 1 0404 GETFREESPACE exported
+170 1 00d0 ALLOCCSTODSALIAS exported
+171 1 00e4 ALLOCDSTOCSALIAS exported
+172 1 21fb ALLOCALIAS exported
+173 254 f000 __ROMBIOS exported
+174 254 a000 __A000H exported
+175 1 1d9e ALLOCSELECTOR exported
+176 1 00f8 FREESELECTOR exported
+177 1 010c PRESTOCHANGOSELECTOR exported
+178 254 0001 __WINFLAGS exported
+179 254 d000 __D000H exported
+180 1 26b9 LONGPTRADD exported
+181 254 b000 __B000H exported
+182 254 b800 __B800H exported
+183 254 0000 __0000H exported
+184 1 139a GLOBALDOSALLOC exported
+185 1 13d4 GLOBALDOSFREE exported
+186 1 2252 GETSELECTORBASE exported
+187 1 2725 SETSELECTORBASE exported
+188 1 2755 GETSELECTORLIMIT exported
+189 1 276d SETSELECTORLIMIT exported
+190 254 e000 __E000H exported
+191 1 0363 GLOBALPAGELOCK exported
+192 1 0377 GLOBALPAGEUNLOCK exported
+193 254 0040 __0040H exported
+194 254 f000 __F000H exported
+195 254 c000 __C000H exported
+196 1 279b SELECTORACCESSRIGHTS exported
+197 1 038b GLOBALFIX exported
+198 1 039f GLOBALUNFIX exported
+199 1 0647 SETHANDLECOUNT exported
+200 1 3e4e VALIDATEFREESPACES exported
+201 1 9ada REPLACEINST exported
+202 3 081d REGISTERPTRACE exported
+203 1 946e DEBUGBREAK exported
+204 3 014e SWAPRECORDING exported
+205 1 97e0 CVWBREAK exported
+206 1 1df5 ALLOCSELECTORARRAY exported
+207 1 8425 ISDBCSLEADBYTE exported
+310 2 2a0c LOCALHANDLEDELTA exported
+311 1 9eaf GETSETKERNELDOSPROC exported
+314 1 9835 DEBUGDEFINESEGMENT exported
+315 1 708b WRITEOUTPROFILES exported, shared data
+316 1 127e GETFREEMEMINFO exported
+318 1 9ecf FATALEXITHOOK exported
+319 1 52fc FLUSHCACHEDFILEHANDLE exported
+320 1 7e50 ISTASK exported
+323 2 1e9b ISROMMODULE exported
+324 1 94cf LOGERROR exported, shared data
+325 1 94f2 LOGPARAMERROR exported, shared data
+326 2 1ea0 ISROMFILE exported
+327 1 949b K327 exported
+328 1 94ce _DEBUGOUTPUT exported
+329 1 94c5 K329 exported
+332 4 0218 THHOOK exported
+334 1 4b62 ISBADREADPTR exported
+335 1 4b83 ISBADWRITEPTR exported
+336 1 4c28 ISBADCODEPTR exported
+337 1 4c4e ISBADSTRINGPTR exported
+338 1 4c72 HASGPHANDLER exported
+339 1 a70e DIAGQUERY exported
+340 1 a71d DIAGOUTPUT exported
+341 3 084c TOOLHELPHOOK exported
+342 1 a820 __GP exported, shared data
+343 2 0689 REGISTERWINOLDAPHOOK exported
+344 2 06f3 GETWINOLDAPHOOKS exported
+345 1 4d39 ISSHAREDSELECTOR exported
+346 1 4ba5 ISBADHUGEREADPTR exported
+347 1 4be5 ISBADHUGEWRITEPTR exported
+348 1 4d5c HMEMCPY exported
+349 1 4dec _HREAD exported
+350 1 4df1 _HWRITE exported
+351 1 5e92 BUNNY_351 exported
+353 1 831f LSTRCPYN exported
+354 1 9eeb GETAPPCOMPATFLAGS exported
+355 1 9f2a GETWINDEBUGINFO exported, shared data
+356 1 9f36 SETWINDEBUGINFO exported, shared data
+403 1 29f1 K403 exported
+404 1 29ae K404 exported
diff --git a/kernel.c b/kernel.c
index 4c57006..cf23a44 100644
--- a/kernel.c
+++ b/kernel.c
@@ -1,4 +1,4 @@
-static char RCSId[] = "$Id$";
+static char RCSId[] = "$Id: kernel.c,v 1.1 1993/06/29 15:55:18 root Exp $";
static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
#include <stdio.h>
@@ -28,7 +28,7 @@
segment = *(Stack16Frame + 6);
#ifdef RELAY_DEBUG
- fprintf(stderr, "LockSegment: segment %x\n", segment);
+ printf("LockSegment: segment %x\n", segment);
#endif
return segment;
@@ -44,7 +44,7 @@
segment = *(Stack16Frame + 6);
#ifdef RELAY_DEBUG
- fprintf(stderr, "UnlockSegment: segment %x\n", segment);
+ printf("UnlockSegment: segment %x\n", segment);
#endif
return segment;
@@ -57,7 +57,7 @@
KERNEL_WaitEvent(int task)
{
#ifdef RELAY_DEBUG
- fprintf(stderr, "WaitEvent: task %d\n", task);
+ printf("WaitEvent: task %d\n", task);
#endif
return 0;
}
@@ -68,7 +68,7 @@
KERNEL_GetModuleFileName(int module, char *filename, int bytes)
{
#ifdef RELAY_DEBUG
- fprintf(stderr, "GetModuleFileName: module %d, filename %x, bytes %d\n",
+ printf("GetModuleFileName: module %d, filename %x, bytes %d\n",
module, filename, bytes);
#endif
diff --git a/kernel.spec b/kernel.spec
index 58a0f0a..127fabe 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -1,8 +1,10 @@
+# $Id: kernel.spec,v 1.2 1993/06/30 14:24:33 root Exp root $
+#
name kernel
id 1
-length 256
+length 410
-3 pascal GetVersion() KERNEL_GetVersion()
+3 return GetVersion 0 0x301
5 pascal LocalAlloc(word word) HEAP_LocalAlloc(1 2)
23 pascal LockSegment(s_word) KERNEL_LockSegment(1)
24 pascal UnlockSegment(s_word) KERNEL_UnlockSegment(1)
diff --git a/ldt.c b/ldt.c
index facad91..7ab12df 100644
--- a/ldt.c
+++ b/ldt.c
@@ -1,8 +1,6 @@
-/* $Id$
- */
-/*
- * Copyright Robert J. Amstadt, 1993
- */
+static char RCSId[] = "$Id: ldt.c,v 1.1 1993/06/29 15:55:18 root Exp $";
+static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
+
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
diff --git a/ldtlib.c b/ldtlib.c
index 137130d..cfd2e25 100644
--- a/ldtlib.c
+++ b/ldtlib.c
@@ -1,8 +1,6 @@
-/* $Id$
- */
-/*
- * Copyright Robert J. Amstadt, 1993
- */
+static char RCSId[] = "$Id: ldtlib.c,v 1.1 1993/06/29 15:55:18 root Exp $";
+static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
+
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
diff --git a/neexe.h b/neexe.h
index d92b4a6..c1b0070 100644
--- a/neexe.h
+++ b/neexe.h
@@ -1,4 +1,4 @@
-/* $Id: neexe.h,v 1.1 1993/06/09 03:28:10 root Exp root $
+/* $Id: neexe.h,v 1.3 1993/06/30 14:24:33 root Exp root $
*/
/*
* Copyright Robert J. Amstadt, 1993
@@ -143,9 +143,9 @@
unsigned short pspNextParagraph;
unsigned char pspReserved1;
unsigned char pspDispatcher[5];
- unsigned long pspTerminateVector;
- unsigned long pspControlCVector;
- unsigned long pspCritErrorVector;
+ unsigned short pspTerminateVector[2];
+ unsigned short pspControlCVector[2];
+ unsigned short pspCritErrorVector[2];
unsigned short pspReserved2[11];
unsigned short pspEnvironment;
unsigned short pspReserved3[23];
@@ -155,4 +155,63 @@
unsigned char pspCommandTail[128];
};
+/*
+ * Entry table structures.
+ */
+struct entry_tab_header_s
+{
+ unsigned char n_entries;
+ unsigned char seg_number;
+};
+
+struct entry_tab_movable_s
+{
+ unsigned char flags;
+ unsigned char int3f[2];
+ unsigned char seg_number;
+ unsigned short offset;
+};
+
+struct entry_tab_fixed_s
+{
+ unsigned char flags;
+ unsigned char offset[2];
+};
+
+/*
+ * Resource table structures.
+ */
+struct resource_nameinfo_s
+{
+ unsigned short offset;
+ unsigned short length;
+ unsigned short flags;
+ unsigned short id;
+ unsigned short handle;
+ unsigned short usage;
+};
+
+struct resource_typeinfo_s
+{
+ unsigned short type_id; /* Type identifier */
+ unsigned short count; /* Number of resources of this type */
+ unsigned long reserved;
+ /*
+ * Name info array.
+ */
+};
+
+#define NE_RSCTYPE_ACCELERATOR 0x8009
+#define NE_RSCTYPE_BITMAP 0x8002
+#define NE_RSCTYPE_CURSOR 0x8001
+#define NE_RSCTYPE_DIALOG 0x8005
+#define NE_RSCTYPE_FONT 0x8008
+#define NE_RSCTYPE_FONTDIR 0x8007
+#define NE_RSCTYPE_GROUP_CURSOR 0x800c
+#define NE_RSCTYPE_GROUP_ICON 0x800e
+#define NE_RSCTYPE_ICON 0x8003
+#define NE_RSCTYPE_MENU 0x8004
+#define NE_RSCTYPE_RCDATA 0x800a
+#define NE_RSCTYPE_STRING 0x8006
+
#endif /* NEEXE_H */
diff --git a/prototypes.h b/prototypes.h
index 0b6b8ed..526079fc 100644
--- a/prototypes.h
+++ b/prototypes.h
@@ -1,4 +1,4 @@
-/* $Id$
+/* $Id: prototypes.h,v 1.1 1993/06/29 15:55:18 root Exp $
*/
/*
* Copyright Robert J. Amstadt, 1993
@@ -26,7 +26,14 @@
struct segment_descriptor_s *selecetor_table,
int segment_num);
extern struct dll_table_entry_s *FindDLLTable(char *dll_name);
+extern unsigned int GetEntryPointFromOrdinal(int fd,
+ struct mz_header_s *mz_header,
+ struct ne_header_s *ne_header,
+ int ordinal);
extern char WIN_CommandLine[];
+extern struct mz_header_s *CurrentMZHeader;
+extern struct ne_header_s *CurrentNEHeader;
+extern int CurrentNEFile;
#endif /* PROTOTYPES_H */
diff --git a/relay.c b/relay.c
index 067d0ab..0dc6d49 100644
--- a/relay.c
+++ b/relay.c
@@ -1,8 +1,5 @@
-/* $Id$
- */
-/*
- * Copyright Robert J. Amstadt, 1993
- */
+static char RCSId[] = "$Id: relay.c,v 1.1 1993/06/29 15:55:18 root Exp $";
+static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
#include <stdio.h>
#include <stdlib.h>
@@ -20,12 +17,16 @@
#include "prototypes.h"
#include "dlls.h"
-struct dll_name_table_entry_s dll_builtin_table[4] =
+#define N_BUILTINS 6
+
+struct dll_name_table_entry_s dll_builtin_table[N_BUILTINS] =
{
- { "KERNEL", KERNEL_table, 256, 1 },
- { "USER", USER_table, 256, 2 },
- { "GDI", GDI_table, 256, 3 },
- { "UNIXLIB", UNIXLIB_table, 256, 4 },
+ { "KERNEL", KERNEL_table, 410, 1 },
+ { "USER", USER_table, 540, 2 },
+ { "GDI", GDI_table, 490, 3 },
+ { "UNIXLIB", UNIXLIB_table, 10, 4 },
+ { "WIN87EM", WIN87EM_table, 10, 5 },
+ { "SHELL", SHELL_table, 256, 6 },
};
unsigned short *Stack16Frame;
@@ -170,7 +171,7 @@
{
int i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < N_BUILTINS; i++)
if (strcmp(dll_builtin_table[i].dll_name, dll_name) == 0)
return dll_builtin_table[i].dll_table;
@@ -185,11 +186,11 @@
{
int i, limit;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < N_BUILTINS; i++)
if (dll_table == dll_builtin_table[i].dll_table)
break;
- if (i == 4)
+ if (i == N_BUILTINS)
return 0;
limit = dll_builtin_table[i].dll_table_length;
diff --git a/resource.c b/resource.c
new file mode 100644
index 0000000..7d674bc
--- /dev/null
+++ b/resource.c
@@ -0,0 +1,242 @@
+static char RCSId[] = "$Id: resource.c,v 1.3 1993/06/30 14:24:33 root Exp root $";
+static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "prototypes.h"
+#include "neexe.h"
+
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+
+typedef struct resource_data_s
+{
+ int resource_type;
+ void *resource_data;
+} RSCD;
+
+RSCD *Resources;
+int ResourceArraySize;
+
+/**********************************************************************
+ * AddResource
+ */
+int
+AddResource(int type, void *data)
+{
+ RSCD *r;
+ int i;
+ int j;
+
+ /*
+ * Find free resource id.
+ */
+ r = Resources;
+ for (i = 0; i < ResourceArraySize; i++, r++)
+ if (r->resource_type == 0)
+ break;
+
+ /*
+ * Do we need to add more resource slots?
+ */
+ if (i == ResourceArraySize)
+ {
+ if (ResourceArraySize > 0)
+ r = realloc(Resources, (ResourceArraySize + 32) * sizeof(RSCD));
+ else
+ r = malloc(32 * sizeof(RSCD));
+ if (r == NULL)
+ return 0;
+
+ for (j = ResourceArraySize; j < ResourceArraySize + 32; j++)
+ r[j].resource_type = 0;
+
+ ResourceArraySize += 32;
+ Resources = r;
+ r = &Resources[i];
+ }
+
+ /*
+ * Add new resource to list.
+ */
+ r->resource_type = type;
+ r->resource_data = data;
+
+ /*
+ * Return a unique handle.
+ */
+ return i + 1;
+}
+
+/**********************************************************************
+ * FindResourceByNumber
+ */
+int
+FindResourceByNumber(struct resource_nameinfo_s *result_p,
+ int type_id, int resource_id)
+{
+ struct resource_typeinfo_s typeinfo;
+ struct resource_nameinfo_s nameinfo;
+ unsigned short size_shift;
+ int i;
+
+ /*
+ * Move to beginning of resource table.
+ */
+ lseek(CurrentNEFile, (CurrentMZHeader->ne_offset +
+ CurrentNEHeader->resource_tab_offset), SEEK_SET);
+
+ /*
+ * Read block size.
+ */
+ if (read(CurrentNEFile, &size_shift, sizeof(size_shift)) !=
+ sizeof(size_shift))
+ {
+ return -1;
+ }
+
+ /*
+ * Find resource.
+ */
+ typeinfo.type_id = 0xffff;
+ while (typeinfo.type_id != 0)
+ {
+ if (read(CurrentNEFile, &typeinfo, sizeof(typeinfo)) !=
+ sizeof(typeinfo))
+ {
+ return -1;
+ }
+ if (typeinfo.type_id != 0)
+ {
+ for (i = 0; i < typeinfo.count; i++)
+ {
+ if (read(CurrentNEFile, &nameinfo, sizeof(nameinfo)) !=
+ sizeof(nameinfo))
+ {
+ return -1;
+ }
+
+#if defined(DEBUG_RESOURCE) && defined(VERBOSE_DEBUG)
+ if (type_id == typeinfo.type_id)
+ {
+ printf("FindResource: type id = %d, resource id = %x\n",
+ type_id, nameinfo.id);
+ }
+#endif
+ if ((type_id == -1 || typeinfo.type_id == type_id) &&
+ nameinfo.id == resource_id)
+ {
+ memcpy(result_p, &nameinfo, sizeof(nameinfo));
+ return size_shift;
+ }
+ }
+ }
+ }
+
+ return -1;
+}
+
+/**********************************************************************
+ * RSC_LoadString
+ */
+int
+RSC_LoadString(int instance, int resource_id, char *buffer, int buflen)
+{
+ struct resource_nameinfo_s nameinfo;
+ unsigned short target_id;
+ unsigned char string_length;
+ int size_shift;
+ int string_num;
+ int i;
+
+#ifdef DEBUG_RESOURCE
+ printf("LoadString: instance = %04x, id = %d, "
+ "buffer = %08x, length = %d\n",
+ instance, resource_id, buffer, buflen);
+#endif
+
+ /*
+ * Find string entry.
+ */
+ target_id = (resource_id >> 4) + 0x8001;
+ string_num = resource_id & 0x000f;
+
+ size_shift = FindResourceByNumber(&nameinfo, NE_RSCTYPE_STRING, target_id);
+ if (size_shift == -1)
+ return 0;
+
+ lseek(CurrentNEFile, (int) nameinfo.offset << size_shift, SEEK_SET);
+
+ for (i = 0; i < string_num; i++)
+ {
+ read(CurrentNEFile, &string_length, 1);
+ lseek(CurrentNEFile, string_length, SEEK_CUR);
+ }
+
+ read(CurrentNEFile, &string_length, 1);
+ i = MIN(string_length, buflen - 1);
+ read(CurrentNEFile, buffer, i);
+ buffer[i] = '\0';
+#ifdef DEBUG_RESOURCE
+ printf(" '%s'\n", buffer);
+#endif
+ return i;
+}
+
+/**********************************************************************
+ * RSC_LoadBitmap
+ */
+int
+RSC_LoadBitmap(int instance, char *bmp_name)
+{
+ struct resource_nameinfo_s nameinfo;
+ void *image;
+ int image_size;
+ int size_shift;
+
+#ifdef DEBUG_RESOURCE
+ printf("LoadBitmap: instance = %04x, name = %08x\n",
+ instance, bmp_name);
+#endif
+ /*
+ * Built-in bitmaps
+ */
+ if (instance == 0)
+ {
+ return 0;
+ }
+ /*
+ * Get bitmap by ordinal
+ */
+ else if (((int) bmp_name & 0xffff0000) == 0)
+ {
+ size_shift = FindResourceByNumber(&nameinfo, NE_RSCTYPE_BITMAP,
+ (int) bmp_name | 0x8000);
+ }
+ /*
+ * Get bitmap by name
+ */
+ else
+ {
+ size_shift = -1;
+ }
+ if (size_shift == -1)
+ return 0;
+
+ /*
+ * Read bitmap.
+ */
+ lseek(CurrentNEFile, ((int) nameinfo.offset << size_shift), SEEK_SET);
+
+ image_size = nameinfo.length << size_shift;
+ image = malloc(image_size);
+ if (image == NULL || read(CurrentNEFile, image, image_size) != image_size)
+ {
+ free(image);
+ return 0;
+ }
+
+ /*
+ * Add to resource list.
+ */
+ return AddResource(NE_RSCTYPE_BITMAP, image);
+}
diff --git a/segmem.h b/segmem.h
index 39a0225..3495c8f 100644
--- a/segmem.h
+++ b/segmem.h
@@ -1,4 +1,4 @@
-/* $Id$
+/* $Id: segmem.h,v 1.1 1993/06/29 15:55:18 root Exp $
*/
/*
* Copyright Robert J. Amstadt, 1993
diff --git a/selector.c b/selector.c
index 449e9ba..ba3a654 100644
--- a/selector.c
+++ b/selector.c
@@ -1,8 +1,5 @@
-/* $Id: exedump.c,v 1.1 1993/06/09 03:28:10 root Exp root $
- */
-/*
- * Copyright Robert J. Amstadt, 1993
- */
+static char RCSId[] = "$Id: selector.c,v 1.1 1993/06/29 15:55:18 root Exp $";
+static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
#include <stdio.h>
#include <stdlib.h>
@@ -29,6 +26,78 @@
extern void KERNEL_Ordinal_102();
extern void UNIXLIB_Ordinal_0();
+/**********************************************************************
+ * GetEntryPointFromOrdinal
+ */
+unsigned int
+GetEntryPointFromOrdinal(int fd, struct mz_header_s *mz_header,
+ struct ne_header_s *ne_header, int ordinal)
+{
+ struct entry_tab_header_s eth;
+ struct entry_tab_movable_s etm;
+ struct entry_tab_fixed_s etf;
+ int current_ordinal;
+ int i;
+
+ /*
+ * Move to the beginning of the entry table.
+ */
+ lseek(fd, mz_header->ne_offset + ne_header->entry_tab_offset, SEEK_SET);
+
+ /*
+ * Let's walk through the table until we get to our entry.
+ */
+ current_ordinal = 1;
+ while (1)
+ {
+ /*
+ * Read header for this bundle.
+ */
+ if (read(fd, ð, sizeof(eth)) != sizeof(eth))
+ myerror("Error reading entry table");
+
+ if (eth.n_entries == 0)
+ return 0;
+
+ if (eth.seg_number == 0)
+ {
+ current_ordinal++;
+ continue;
+ }
+
+ /*
+ * Read each of the bundle entries.
+ */
+ for (i = 0; i < eth.n_entries; i++, current_ordinal++)
+ {
+ if (eth.seg_number >= 0xfe)
+ {
+ if (read(fd, &etm, sizeof(etm)) != sizeof(etm))
+ myerror("Error reading entry table");
+
+ if (current_ordinal == ordinal)
+ {
+ return ((unsigned int)
+ (SelectorTable[etm.seg_number - 1].base_addr +
+ etm.offset));
+ }
+ }
+ else
+ {
+ if (read(fd, &etf, sizeof(etf)) != sizeof(etf))
+ myerror("Error reading entry table");
+
+ if (current_ordinal == ordinal)
+ {
+ return ((unsigned int)
+ (SelectorTable[eth.seg_number - 1].base_addr +
+ (int) etf.offset[0] +
+ ((int) etf.offset[1] << 8)));
+ }
+ }
+ }
+ }
+}
/**********************************************************************
* GetDOSEnvironment
@@ -113,9 +182,12 @@
usp = (unsigned short *) &psp->pspDispatcher[1];
*usp = (unsigned short) KERNEL_Ordinal_102;
*(usp + 1) = 0x23;
- psp->pspTerminateVector = 0x00230000 | ((int) UNIXLIB_Ordinal_0 & 0xffff);
- psp->pspControlCVector = 0x00230000 | ((int) UNIXLIB_Ordinal_0 & 0xffff);
- psp->pspCritErrorVector = 0x00230000 | ((int) UNIXLIB_Ordinal_0 & 0xffff);
+ psp->pspTerminateVector[0] = (unsigned short) UNIXLIB_Ordinal_0;
+ psp->pspTerminateVector[1] = 0x0023;
+ psp->pspControlCVector[0] = (unsigned short) UNIXLIB_Ordinal_0;
+ psp->pspControlCVector[1] = 0x0023;
+ psp->pspCritErrorVector[0] = (unsigned short) UNIXLIB_Ordinal_0;
+ psp->pspCritErrorVector[1] = 0x0023;
psp->pspEnvironment = SelectorTable[EnvironmentSelectorIdx].selector;
psp->pspCommandTailCount = 1;
strcpy(psp->pspCommandTail, "\r");
@@ -161,6 +233,14 @@
zfile = fopen("/dev/zero","r");
for (i = 0; i < ne_header->n_segment_tab; i++, s++)
{
+#ifdef DEBUG_SEGMENT
+ printf(" %2d: OFFSET %04.4x, LENGTH %04.4x, ",
+ i + 1, seg_table[i].seg_data_offset,
+ seg_table[i].seg_data_length);
+ printf("FLAGS %04.4x, MIN ALLOC %04.4x\n",
+ seg_table[i].seg_flags, seg_table[i].min_alloc);
+#endif
+
/*
* Store the flags in our table.
*/
@@ -231,9 +311,10 @@
/*
* Image in file.
*/
- status = lseek(fd, seg_table[i].seg_data_offset * 512, SEEK_SET);
+ status = lseek(fd, seg_table[i].seg_data_offset *
+ (1 << ne_header->align_shift_count), SEEK_SET);
if(read(fd, s->base_addr, old_length) != old_length)
- myerror("Unable to read segment from file");
+ myerror("Unable to read segment from file");
}
/*
* Create entry in LDT for this segment.
diff --git a/shell.spec b/shell.spec
new file mode 100644
index 0000000..79f46d9
--- /dev/null
+++ b/shell.spec
@@ -0,0 +1,5 @@
+# $Id: shell.spec,v 1.2 1993/06/30 14:24:33 root Exp root $
+#
+name shell
+id 5
+length 256
diff --git a/test.exe b/test.exe
deleted file mode 100755
index 3a75f7c..0000000
--- a/test.exe
+++ /dev/null
Binary files differ
diff --git a/unixlib.spec b/unixlib.spec
index 7b5b9dd..e24d02f 100644
--- a/unixlib.spec
+++ b/unixlib.spec
@@ -1,5 +1,7 @@
+# $Id: unixlib.spec,v 1.2 1993/06/30 14:24:33 root Exp root $
+#
name unixlib
id 4
-length 256
+length 10
-1 c _DebugPrintString(ptr) DebugPrintString(1)
\ No newline at end of file
+1 c _DebugPrintString(ptr) DebugPrintString(1)
diff --git a/user-ordinals b/user-ordinals
new file mode 100644
index 0000000..6df81ba
--- /dev/null
+++ b/user-ordinals
@@ -0,0 +1,413 @@
+ 1 1 ab5d MESSAGEBOX exported, shared data
+ 2 3 0059 OLDEXITWINDOWS exported, shared data
+ 3 5 0165 ENABLEOEMLAYER exported, shared data
+ 4 5 01a2 DISABLEOEMLAYER exported, shared data
+ 5 5 03a2 INITAPP exported, shared data
+ 6 1 81d4 POSTQUITMESSAGE exported, shared data
+ 7 5 0303 EXITWINDOWS exported, shared data
+ 8 3 0232 WEP exported, shared data
+ 10 1 a8e8 SETTIMER exported, shared data
+ 11 1 744c BEAR11 exported, shared data
+ 12 1 a905 KILLTIMER exported, shared data
+ 13 1 729f GETTICKCOUNT exported, shared data
+ 14 1 7439 GETTIMERRESOLUTION exported
+ 15 1 729f GETCURRENTTIME exported, shared data
+ 16 1 abc5 CLIPCURSOR exported, shared data
+ 17 1 abab GETCURSORPOS exported, shared data
+ 18 1 a8d4 SETCAPTURE exported, shared data
+ 19 1 28bd RELEASECAPTURE exported, shared data
+ 20 1 8161 SETDOUBLECLICKTIME exported, shared data
+ 21 1 8171 GETDOUBLECLICKTIME exported, shared data
+ 22 1 a875 SETFOCUS exported, shared data
+ 23 1 8183 GETFOCUS exported, shared data
+ 24 13 24e7 REMOVEPROP exported, shared data
+ 25 1 1c95 GETPROP exported, shared data
+ 26 13 24ca SETPROP exported, shared data
+ 27 13 2504 ENUMPROPS exported, shared data
+ 28 1 1874 CLIENTTOSCREEN exported, shared data
+ 29 1 189e SCREENTOCLIENT exported, shared data
+ 30 1 713c WINDOWFROMPOINT exported, shared data
+ 31 1 192d ISICONIC exported, shared data
+ 32 1 1825 GETWINDOWRECT exported, shared data
+ 33 1 1828 GETCLIENTRECT exported, shared data
+ 34 1 a919 ENABLEWINDOW exported, shared data
+ 35 1 1912 ISWINDOWENABLED exported, shared data
+ 36 1 ab25 GETWINDOWTEXT exported, shared data
+ 37 1 ab05 SETWINDOWTEXT exported, shared data
+ 38 1 ab49 GETWINDOWTEXTLENGTH exported, shared data
+ 39 1 a971 BEGINPAINT exported, shared data
+ 40 1 a991 ENDPAINT exported, shared data
+ 41 8 0f1b CREATEWINDOW exported, shared data
+ 42 14 103e SHOWWINDOW exported, shared data
+ 43 14 1088 CLOSEWINDOW exported, shared data
+ 44 14 1074 OPENICON exported, shared data
+ 45 7 1836 BRINGWINDOWTOTOP exported, shared data
+ 46 2 0dde GETPARENT exported, shared data
+ 47 1 1802 ISWINDOW exported, shared data
+ 48 1 1bd3 ISCHILD exported, shared data
+ 49 1 1c28 ISWINDOWVISIBLE exported, shared data
+ 50 6 1f72 FINDWINDOW exported, shared data
+ 51 1 1a6c BEAR51 exported, shared data
+ 52 14 03f0 ANYPOPUP exported, shared data
+ 53 8 0faa DESTROYWINDOW exported, shared data
+ 54 1 ad20 ENUMWINDOWS exported, shared data
+ 55 1 ad03 ENUMCHILDWINDOWS exported, shared data
+ 56 7 17a6 MOVEWINDOW exported, shared data
+ 57 8 0e7c REGISTERCLASS exported, shared data
+ 58 8 0eeb GETCLASSNAME exported, shared data
+ 59 1 a949 SETACTIVEWINDOW exported, shared data
+ 60 1 818d GETACTIVEWINDOW exported, shared data
+ 61 13 23dd SCROLLWINDOW exported, shared data
+ 62 18 1a00 SETSCROLLPOS exported, shared data
+ 63 18 1a22 GETSCROLLPOS exported, shared data
+ 64 18 1a44 SETSCROLLRANGE exported, shared data
+ 65 18 1a66 GETSCROLLRANGE exported, shared data
+ 66 1 a60b GETDC exported, shared data
+ 67 1 a5f7 GETWINDOWDC exported, shared data
+ 68 1 a61f RELEASEDC exported, shared data
+ 69 1 ab97 SETCURSOR exported, shared data
+ 70 1 822c SETCURSORPOS exported, shared data
+ 71 1 150c SHOWCURSOR exported, shared data
+ 72 1 1d3d SETRECT exported, shared data
+ 73 1 1d64 SETRECTEMPTY exported, shared data
+ 74 1 1d7d COPYRECT exported, shared data
+ 75 1 1d9a ISRECTEMPTY exported, shared data
+ 76 1 1dc0 PTINRECT exported, shared data
+ 77 1 1df4 OFFSETRECT exported, shared data
+ 78 1 1e19 INFLATERECT exported, shared data
+ 79 1 1e3e INTERSECTRECT exported, shared data
+ 80 1 1ea6 UNIONRECT exported, shared data
+ 81 1 ac40 FILLRECT exported, shared data
+ 82 1 acd0 INVERTRECT exported, shared data
+ 83 1 ac88 FRAMERECT exported, shared data
+ 84 13 239c DRAWICON exported, shared data
+ 85 6 1e91 DRAWTEXT exported, shared data
+ 86 13 0229 BEAR86 exported, shared data
+ 87 25 263b DIALOGBOX exported, shared data
+ 88 25 26e5 ENDDIALOG exported, shared data
+ 89 24 09ce CREATEDIALOG exported, shared data
+ 90 25 2804 ISDIALOGMESSAGE exported, shared data
+ 91 25 26f9 GETDLGITEM exported, shared data
+ 92 25 2741 SETDLGITEMTEXT exported, shared data
+ 93 25 2761 GETDLGITEMTEXT exported, shared data
+ 94 25 270d SETDLGITEMINT exported, shared data
+ 95 25 2721 GETDLGITEMINT exported, shared data
+ 96 25 2789 CHECKRADIOBUTTON exported, shared data
+ 97 25 2775 CHECKDLGBUTTON exported, shared data
+ 98 25 279d ISDLGBUTTONCHECKED exported, shared data
+ 99 37 0fdf DLGDIRSELECT exported, shared data
+100 37 0fb1 DLGDIRLIST exported, shared data
+101 25 27b1 SENDDLGITEMMESSAGE exported, shared data
+102 2 0cd2 ADJUSTWINDOWRECT exported, shared data
+103 25 2853 MAPDIALOGRECT exported, shared data
+104 1 1bab MESSAGEBEEP exported, shared data
+105 6 1f5e FLASHWINDOW exported, shared data
+106 1 4f46 GETKEYSTATE exported, shared data
+107 1 a7fc DEFWINDOWPROC exported, shared data
+108 1 a68f GETMESSAGE exported, shared data
+109 1 a744 PEEKMESSAGE exported, shared data
+110 1 a7b7 POSTMESSAGE exported, shared data
+111 1 a786 SENDMESSAGE exported, shared data
+112 1 3dc4 WAITMESSAGE exported, shared data
+113 1 a6b2 TRANSLATEMESSAGE exported, shared data
+114 1 a6fb DISPATCHMESSAGE exported, shared data
+115 1 3c37 REPLYMESSAGE exported, shared data
+116 1 a7e8 POSTAPPMESSAGE exported, shared data
+118 1 8214 REGISTERWINDOWMESSAGE exported, shared data
+119 1 81ae GETMESSAGEPOS exported, shared data
+120 1 81a1 GETMESSAGETIME exported, shared data
+121 1 ad68 SETWINDOWSHOOK exported, shared data
+122 1 a827 CALLWINDOWPROC exported, shared data
+123 1 a85b CALLMSGFILTER exported, shared data
+124 1 a95d UPDATEWINDOW exported, shared data
+125 1 aa27 INVALIDATERECT exported, shared data
+126 1 aa67 INVALIDATERGN exported, shared data
+127 1 aa47 VALIDATERECT exported, shared data
+128 1 aa93 VALIDATERGN exported, shared data
+129 2 0d8e GETCLASSWORD exported, shared data
+130 2 0da2 SETCLASSWORD exported, shared data
+131 2 0db6 GETCLASSLONG exported, shared data
+132 2 0dca SETCLASSLONG exported, shared data
+133 2 0d06 GETWINDOWWORD exported, shared data
+134 2 0d1a SETWINDOWWORD exported, shared data
+135 2 0d3a GETWINDOWLONG exported, shared data
+136 2 0d4e SETWINDOWLONG exported, shared data
+137 39 0710 OPENCLIPBOARD exported, shared data
+138 39 0643 CLOSECLIPBOARD exported, shared data
+139 39 0261 EMPTYCLIPBOARD exported, shared data
+140 39 00ee GETCLIPBOARDOWNER exported, shared data
+141 39 02f4 SETCLIPBOARDDATA exported, shared data
+142 39 0425 GETCLIPBOARDDATA exported, shared data
+143 39 0075 COUNTCLIPBOARDFORMATS exported, shared data
+144 39 06bb ENUMCLIPBOARDFORMATS exported, shared data
+145 1 8214 REGISTERCLIPBOARDFORMAT exported, shared data
+146 39 0752 GETCLIPBOARDFORMATNAME exported, shared data
+147 39 0724 SETCLIPBOARDVIEWER exported, shared data
+148 39 00f9 GETCLIPBOARDVIEWER exported, shared data
+149 39 0738 CHANGECLIPBOARDCHAIN exported, shared data
+150 9 1076 LOADMENU exported, shared data
+151 9 0806 CREATEMENU exported, shared data
+152 9 118e DESTROYMENU exported, shared data
+153 9 10db CHANGEMENU exported, shared data
+154 9 11a2 CHECKMENUITEM exported, shared data
+155 9 11c7 ENABLEMENUITEM exported, shared data
+156 9 1160 GETSYSTEMMENU exported, shared data
+157 9 10ad GETMENU exported, shared data
+158 9 10c1 SETMENU exported, shared data
+159 9 11ec GETSUBMENU exported, shared data
+160 10 30c3 DRAWMENUBAR exported, shared data
+161 9 10fd GETMENUSTRING exported, shared data
+162 19 0b49 HILITEMENUITEM exported, shared data
+163 13 2521 CREATECARET exported, shared data
+164 13 0bfa DESTROYCARET exported, shared data
+165 13 0db8 SETCARETPOS exported, shared data
+166 13 254f HIDECARET exported, shared data
+167 13 2563 SHOWCARET exported, shared data
+168 3 24fd SETCARETBLINKTIME exported, shared data
+169 13 0d8f GETCARETBLINKTIME exported, shared data
+170 4 04c0 ARRANGEICONICWINDOWS exported, shared data
+171 2 0e3c WINHELP exported, shared data
+172 23 0ceb SWITCHTOTHISWINDOW exported, shared data
+173 12 169b LOADCURSOR exported, shared data
+174 12 1712 LOADICON exported, shared data
+175 12 167e LOADBITMAP exported, shared data
+176 12 17af LOADSTRING exported, shared data
+177 12 1661 LOADACCELERATORS exported, shared data
+178 19 0af4 TRANSLATEACCELERATOR exported, shared data
+179 1 a92d GETSYSTEMMETRICS exported, shared data
+180 1 8135 GETSYSCOLOR exported, shared data
+181 41 186f SETSYSCOLORS exported, shared data
+182 1 74f4 BEAR182 exported, shared data
+183 13 0d9a GETCARETPOS exported, shared data
+184 1 490e QUERYSENDMESSAGE exported, shared data
+185 10 30d7 GRAYSTRING exported, shared data
+186 1 1cee SWAPMOUSEBUTTON exported
+187 9 00fe ENDMENU exported, shared data
+188 1 a772 SETSYSMODALWINDOW exported, shared data
+189 1 19d4 GETSYSMODALWINDOW exported, shared data
+190 1 a9b1 GETUPDATERECT exported, shared data
+191 1 abf9 CHILDWINDOWFROMPOINT exported, shared data
+192 1 3dba INSENDMESSAGE exported, shared data
+193 39 0030 ISCLIPBOARDFORMATAVAILABLE exported, shared data
+194 37 104d DLGDIRSELECTCOMBOBOX exported, shared data
+195 37 101f DLGDIRLISTCOMBOBOX exported, shared data
+196 6 1f1d TABBEDTEXTOUT exported, shared data
+197 6 1edc GETTABBEDTEXTEXTENT exported, shared data
+198 15 0875 CASCADECHILDWINDOWS exported, shared data
+199 15 0956 TILECHILDWINDOWS exported, shared data
+200 40 09d9 OPENCOMM exported, shared data
+201 40 09f6 SETCOMMSTATE exported, shared data
+202 40 0a13 GETCOMMSTATE exported, shared data
+203 40 0acd GETCOMMERROR exported, shared data
+204 40 0a3d READCOMM exported, shared data
+205 40 0a85 WRITECOMM exported, shared data
+206 40 0b1d TRANSMITCOMMCHAR exported, shared data
+207 40 0aaf CLOSECOMM exported, shared data
+208 40 0b3b SETCOMMEVENTMASK exported, shared data
+209 40 0b64 GETCOMMEVENTMASK exported, shared data
+210 40 0b8d SETCOMMBREAK exported, shared data
+211 40 0bab CLEARCOMMBREAK exported, shared data
+212 40 0a67 UNGETCOMMCHAR exported, shared data
+213 40 0af4 BUILDCOMMDCB exported, shared data
+214 40 0be7 ESCAPECOMMFUNCTION exported, shared data
+215 40 0bc9 FLUSHCOMM exported, shared data
+216 41 181e USERSEEUSERDO exported, shared data
+217 9 0163 LOOKUPMENUHANDLE exported, shared data
+218 25 2667 DIALOGBOXINDIRECT exported, shared data
+219 24 09fa CREATEDIALOGINDIRECT exported, shared data
+220 9 1093 LOADMENUINDIRECT exported, shared data
+221 13 2409 SCROLLDC exported, shared data
+222 1 a889 GETKEYBOARDSTATE exported, shared data
+223 1 a8a3 SETKEYBOARDSTATE exported, shared data
+224 1 ad54 GETWINDOWTASK exported, shared data
+225 1 ad37 ENUMTASKWINDOWS exported, shared data
+226 1 4983 LOCKINPUT exported, shared data
+227 19 0ac0 GETNEXTDLGGROUPITEM exported, shared data
+228 19 0ada GETNEXTDLGTABITEM exported, shared data
+229 2 0df2 GETTOPWINDOW exported, shared data
+230 2 08f2 GETNEXTWINDOW exported, shared data
+231 1 4afb GETSYSTEMDEBUGSTATE exported, shared data
+232 7 17ba SETWINDOWPOS exported, shared data
+233 14 109c SETPARENT exported, shared data
+234 1 ad9a UNHOOKWINDOWSHOOK exported, shared data
+235 1 adc4 DEFHOOKPROC exported, shared data
+236 1 8197 GETCAPTURE exported, shared data
+237 1 a9d1 GETUPDATERGN exported, shared data
+238 1 a9fa EXCLUDEUPDATERGN exported, shared data
+239 25 2690 DIALOGBOXPARAM exported, shared data
+240 25 26bc DIALOGBOXINDIRECTPARAM exported, shared data
+241 24 0a29 CREATEDIALOGPARAM exported, shared data
+242 24 0a55 CREATEDIALOGINDIRECTPARAM exported, shared data
+243 25 0aa3 GETDIALOGBASEUNITS exported, shared data
+244 1 2094 EQUALRECT exported, shared data
+245 40 0c06 ENABLECOMMNOTIFICATION exported, shared data
+246 5 05de EXITWINDOWSEXEC exported, shared data
+247 1 14ca GETCURSOR exported, shared data
+248 39 0600 GETOPENCLIPBOARDWINDOW exported, shared data
+249 1 4f59 GETASYNCKEYSTATE exported, shared data
+250 9 113b GETMENUSTATE exported, shared data
+251 2 0e5c SENDDRIVERMESSAGE exported, shared data
+252 41 18cb OPENDRIVER exported, shared data
+253 41 18f1 CLOSEDRIVER exported, shared data
+254 41 1905 GETDRIVERMODULEHANDLE exported, shared data
+255 2 0e70 DEFDRIVERPROC exported, shared data
+256 2 0eaf GETDRIVERINFO exported, shared data
+257 2 0e84 GETNEXTDRIVER exported, shared data
+258 1 18c8 MAPWINDOWPOINTS exported, shared data
+259 7 00b5 BEGINDEFERWINDOWPOS exported, shared data
+260 7 17eb DEFERWINDOWPOS exported, shared data
+261 7 1822 ENDDEFERWINDOWPOS exported, shared data
+262 2 0e1a GETWINDOW exported, shared data
+263 9 1217 GETMENUITEMCOUNT exported, shared data
+264 9 1200 GETMENUITEMID exported, shared data
+265 14 1060 SHOWOWNEDPOPUPS exported, shared data
+266 1 56b0 SETMESSAGEQUEUE exported, shared data
+267 18 1aa0 SHOWSCROLLBAR exported, shared data
+268 1 21cd GLOBALADDATOM exported, shared data
+269 1 2236 GLOBALDELETEATOM exported, shared data
+270 1 2251 GLOBALFINDATOM exported, shared data
+271 1 226f GLOBALGETATOMNAME exported, shared data
+272 1 1930 ISZOOMED exported, shared data
+273 41 1716 CONTROLPANELINFO exported, shared data
+274 23 0d8e GETNEXTQUEUEWINDOW exported, shared data
+275 1 77a7 REPAINTSCREEN exported, shared data
+276 1 6eea LOCKMYTASK exported, shared data
+277 25 27c5 GETDLGCTRLID exported, shared data
+278 1 19ca GETDESKTOPHWND exported, shared data
+279 41 0a51 OLDSETDESKPATTERN exported, shared data
+280 9 1174 SETSYSTEMMENU exported, shared data
+282 6 1f95 SELECTPALETTE exported, shared data
+283 6 1fd1 REALIZEPALETTE exported, shared data
+284 41 1740 GETFREESYSTEMRESOURCES exported, shared data
+285 41 1736 BEAR285 exported, shared data
+286 1 19ca GETDESKTOPWINDOW exported, shared data
+287 2 0e06 GETLASTACTIVEPOPUP exported, shared data
+288 1 81bb GETMESSAGEEXTRAINFO exported, shared data
+289 1 4b59 KEYBD_EVENT exported, shared data
+290 1 aabf REDRAWWINDOW exported, shared data
+291 1 adde SETWINDOWSHOOKEX exported, shared data
+292 1 ae14 UNHOOKWINDOWSHOOKEX exported, shared data
+293 1 ae35 CALLNEXTHOOKEX exported, shared data
+294 13 23c9 LOCKWINDOWUPDATE exported, shared data
+299 1 507a MOUSE_EVENT exported, shared data
+301 26 0000 BOZOSLIVEHERE exported, shared data
+306 10 1587 BEAR306 exported, shared data
+308 25 27d9 DEFDLGPROC exported, shared data
+309 1 abdf GETCLIPCURSOR exported, shared data
+314 1 09bc SIGNALPROC exported, shared data
+319 13 246c SCROLLWINDOWEX exported, shared data
+320 1 9325 SYSERRORBOX exported, shared data
+321 1 a8bd SETEVENTHOOK exported, shared data
+322 41 0e6e WINOLDAPPHACKOMATIC exported, shared data
+323 1 244f GETMESSAGE2 exported, shared data
+324 1 7766 FILLWINDOW exported, shared data
+325 1 76eb PAINTRECT exported, shared data
+326 6 02d2 GETCONTROLBRUSH exported, shared data
+331 1 4f36 ENABLEHARDWAREINPUT exported
+332 1 3df2 USERYIELD exported, shared data
+333 1 334e ISUSERIDLE exported, shared data
+334 1 4fed GETQUEUESTATUS exported, shared data
+335 1 501c GETINPUTSTATE exported, shared data
+336 12 0deb LOADCURSORICONHANDLER exported, shared data
+337 1 530a GETMOUSEEVENTPROC exported, shared data
+341 1 1798 _FFFE_FARFRAME exported, shared data
+343 1 9c7c GETFILEPORTNAME exported, shared data
+356 12 0ff1 LOADDIBCURSORHANDLER exported, shared data
+357 12 100d LOADDIBICONHANDLER exported, shared data
+358 9 0fa0 ISMENU exported, shared data
+359 1 a64c GETDCEX exported, shared data
+362 1 8a00 DCHOOK exported, shared data
+368 12 176f COPYICON exported, shared data
+369 12 16f8 COPYCURSOR exported, shared data
+370 14 0fde GETWINDOWPLACEMENT exported, shared data
+371 14 100e SETWINDOWPLACEMENT exported, shared data
+372 12 1789 GETINTERNALICONHEADER exported, shared data
+373 1 20b8 SUBTRACTRECT exported, shared data
+400 3 2570 FINALUSERINIT exported, shared data
+402 39 077c GETPRIORITYCLIPBOARDFORMAT exported, shared data
+403 8 0ea5 UNREGISTERCLASS exported, shared data
+404 8 0ec2 GETCLASSINFO exported, shared data
+406 12 16b8 CREATECURSOR exported, shared data
+407 12 172f CREATEICON exported, shared data
+408 12 0000 CREATECURSORICONINDIRECT exported, shared data
+410 9 122e INSERTMENU exported, shared data
+411 9 1250 APPENDMENU exported, shared data
+412 9 1294 REMOVEMENU exported, shared data
+413 9 12b6 DELETEMENU exported, shared data
+414 9 1272 MODIFYMENU exported, shared data
+415 9 0813 CREATEPOPUPMENU exported, shared data
+416 9 132a TRACKPOPUPMENU exported, shared data
+417 9 07ab GETMENUCHECKMARKDIMENSIONS exported, shared data
+418 9 12d8 SETMENUITEMBITMAPS exported, shared data
+420 16 055a _WSPRINTF exported, shared data
+421 16 0518 WVSPRINTF exported, shared data
+422 37 0fff DLGDIRSELECTEX exported, shared data
+423 37 106d DLGDIRSELECTCOMBOBOXEX exported, shared data
+430 11 0359 LSTRCMP exported, shared data
+431 11 0365 ANSIUPPER exported, shared data
+432 11 0381 ANSILOWER exported, shared data
+433 11 0203 ISCHARALPHA exported, shared data
+434 11 0208 ISCHARALPHANUMERIC exported, shared data
+435 11 020d ISCHARUPPER exported, shared data
+436 11 0212 ISCHARLOWER exported, shared data
+437 11 039d ANSIUPPERBUFF exported, shared data
+438 11 03b7 ANSILOWERBUFF exported, shared data
+445 15 1a6e DEFFRAMEPROC exported, shared data
+447 15 1a82 DEFMDICHILDPROC exported, shared data
+451 15 1aad TRANSLATEMDISYSACCEL exported, shared data
+452 8 0f57 CREATEWINDOWEX exported, shared data
+454 2 0cec ADJUSTWINDOWRECTEX exported, shared data
+455 12 052b GETICONID exported, shared data
+456 12 0328 LOADICONHANDLER exported, shared data
+457 12 175b DESTROYICON exported, shared data
+458 12 16e4 DESTROYCURSOR exported, shared data
+459 12 01bb DUMPICON exported, shared data
+460 14 0a85 GETINTERNALWINDOWPOS exported, shared data
+461 14 0aef SETINTERNALWINDOWPOS exported, shared data
+462 15 0276 CALCCHILDSCROLL exported, shared data
+463 15 053f SCROLLCHILDREN exported, shared data
+464 14 0fbe DRAGOBJECT exported, shared data
+465 14 035e DRAGDETECT exported, shared data
+466 1 ac0d DRAWFOCUSRECT exported, shared data
+470 11 02e7 STRINGFUNC exported, shared data
+471 11 035f LSTRCMPI exported, shared data
+472 11 03d1 ANSINEXT exported, shared data
+473 11 03eb ANSIPREV exported, shared data
+480 1 1d38 GETUSERLOCALOBJTYPE exported, shared data
+481 1 4d6c HARDWARE_EVENT exported, shared data
+482 18 1ac2 ENABLESCROLLBAR exported, shared data
+483 41 1895 SYSTEMPARAMETERSINFO exported, shared data
+484 1 b664 __GP exported, shared data
+499 22 005c WNETERRORTEXT exported, shared data
+501 22 0a68 WNETOPENJOB exported, shared data
+502 22 0a9d WNETCLOSEJOB exported, shared data
+503 22 0b40 WNETABORTJOB exported, shared data
+504 22 0acc WNETHOLDJOB exported, shared data
+505 22 0ae9 WNETRELEASEJOB exported, shared data
+506 22 0b06 WNETCANCELJOB exported, shared data
+507 22 0b23 WNETSETJOBCOPIES exported, shared data
+508 22 09ca WNETWATCHQUEUE exported, shared data
+509 22 09f9 WNETUNWATCHQUEUE exported, shared data
+510 22 0a16 WNETLOCKQUEUEDATA exported, shared data
+511 22 0a4b WNETUNLOCKQUEUEDATA exported, shared data
+512 22 0992 WNETGETCONNECTION exported, shared data
+513 22 08a6 WNETGETCAPS exported, shared data
+514 22 08c7 WNETDEVICEMODE exported, shared data
+515 22 08de WNETBROWSEDIALOG exported, shared data
+516 22 0914 WNETGETUSER exported, shared data
+517 22 0940 WNETADDCONNECTION exported, shared data
+518 22 0975 WNETCANCELCONNECTION exported, shared data
+519 22 0b63 WNETGETERROR exported, shared data
+520 22 0b80 WNETGETERRORTEXT exported, shared data
+521 22 0847 WNETENABLE exported, shared data
+522 22 084e WNETDISABLE exported, shared data
+523 22 0478 WNETRESTORECONNECTION exported, shared data
+524 22 0855 WNETWRITEJOB exported, shared data
+525 22 085e WNETCONNECTDIALOG exported, shared data
+526 22 0867 WNETDISCONNECTDIALOG exported, shared data
+527 22 0870 WNETCONNECTIONDIALOG exported, shared data
+528 22 0879 WNETVIEWQUEUEDIALOG exported, shared data
+529 22 088b WNETPROPERTYDIALOG exported, shared data
+530 22 0894 WNETGETDIRECTORYTYPE exported, shared data
+531 22 089d WNETDIRECTORYNOTIFY exported, shared data
+532 22 0882 WNETGETPROPERTYTEXT exported, shared data
diff --git a/user.c b/user.c
index 7b3ceed..8f7ac82 100644
--- a/user.c
+++ b/user.c
@@ -1,4 +1,4 @@
-static char RCSId[] = "$Id$";
+static char RCSId[] = "$Id: user.c,v 1.1 1993/06/29 15:55:18 root Exp $";
static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
#include <stdio.h>
diff --git a/user.spec b/user.spec
index 152ef18..1bc3a9a 100644
--- a/user.spec
+++ b/user.spec
@@ -1,5 +1,9 @@
+# $Id: user.spec,v 1.2 1993/06/30 14:24:33 root Exp root $
+#
name user
id 2
-length 256
+length 540
-5 pascal InitApp(word) USER_InitApp(1)
\ No newline at end of file
+5 pascal InitApp(word) USER_InitApp(1)
+175 pascal LoadBitmap(word ptr) RSC_LoadBitmap(1 2)
+176 pascal LoadString(word word ptr s_word) RSC_LoadString(1 2 3 4)
diff --git a/win87em.spec b/win87em.spec
new file mode 100644
index 0000000..5044d2d
--- /dev/null
+++ b/win87em.spec
@@ -0,0 +1,5 @@
+# $Id: win87em.spec,v 1.2 1993/06/30 14:24:33 root Exp root $
+#
+name win87em
+id 5
+length 10
diff --git a/windows.h b/windows.h
new file mode 100644
index 0000000..7d89f66
--- /dev/null
+++ b/windows.h
@@ -0,0 +1,27 @@
+#ifndef WINDOWS_H
+#define WINDOWS_H
+
+typedef struct tagRGBQUAD
+{
+ unsigned char rgbBlue;
+ unsigned char rgbGreen;
+ unsigned char rgbRed;
+ unsigned char rgbReserved;
+};
+
+typedef struct tagBITMAPINFOHEADER
+{
+ unsigned long biSize;
+ unsigned long biWidth;
+ unsigned long biHeight;
+ unsigned short biPlanes;
+ unsigned short biBitCount;
+ unsigned long biCompression;
+ unsigned long biSizeImage;
+ unsigned long biXPelsPerMeter;
+ unsigned long biYPelsPerMeter;
+ unsigned long biClrUsed;
+ unsigned long biClrImportant;
+} BITMAPINFOHEADER;
+
+#endif
diff --git a/wine b/wine
deleted file mode 100755
index 57d7234..0000000
--- a/wine
+++ /dev/null
Binary files differ
diff --git a/wine.c b/wine.c
index 85d3844..3e53965 100644
--- a/wine.c
+++ b/wine.c
@@ -1,8 +1,5 @@
-/* $Id: exedump.c,v 1.1 1993/06/09 03:28:10 root Exp root $
- */
-/*
- * Copyright Robert J. Amstadt, 1993
- */
+static char RCSId[] = "$Id: wine.c,v 1.1 1993/06/29 15:55:18 root Exp $";
+static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
#include <stdio.h>
#include <stdlib.h>
@@ -20,13 +17,18 @@
#include "prototypes.h"
#include "dlls.h"
-extern int CallTo16(unsigned long csip, unsigned long sssp, unsigned short ds);
+extern int CallToInit16(unsigned long csip, unsigned long sssp,
+ unsigned short ds);
extern void CallTo32();
unsigned short WIN_StackSize;
+unsigned short WIN_HeapSize;
char **Argv;
int Argc;
+struct mz_header_s *CurrentMZHeader;
+struct ne_header_s *CurrentNEHeader;
+int CurrentNEFile;
/**********************************************************************
* DebugPrintString
@@ -34,7 +36,7 @@
int
DebugPrintString(char *str)
{
- fprintf(stderr, "%s", str);
+ printf("%s", str);
return 0;
}
@@ -119,8 +121,12 @@
if (ne_header->header_type[0] != 'N' || ne_header->header_type[1] != 'E')
myerror("This is not a Windows program");
+ CurrentMZHeader = mz_header;
+ CurrentNEHeader = ne_header;
+ CurrentNEFile = fd;
+
WIN_StackSize = ne_header->stack_length;
-
+ WIN_HeapSize = ne_header->local_heap_length;
/*
* Create segment selectors.
@@ -146,7 +152,6 @@
}
}
- close(fd);
/*
* Fixup stack and jump to start.
*/
@@ -156,7 +161,7 @@
ss_reg = selector_table[ne_header->ss-1].selector;
sp_reg = ne_header->sp;
- rv = CallTo16(cs_reg << 16 | ip_reg, ss_reg << 16 | sp_reg, ds_reg);
+ rv = CallToInit16(cs_reg << 16 | ip_reg, ss_reg << 16 | sp_reg, ds_reg);
printf ("rv = %x\n", rv);
}
@@ -244,7 +249,8 @@
if (i == 0)
i = 0x10000;
- status = lseek(fd, seg->seg_data_offset * 512 + i, SEEK_SET);
+ status = lseek(fd, seg->seg_data_offset *
+ (1 << ne_header->align_shift_count) + i, SEEK_SET);
n_entries = 0;
read(fd, &n_entries, sizeof(short int));
rep = (struct relocation_entry_s *)
@@ -273,6 +279,15 @@
}
dll_table = FindDLLTable(dll_name);
+ if (dll_table == NULL)
+ {
+ char s[80];
+
+ sprintf(s, "Bad DLL name '%s'", dll_name);
+ myerror(s);
+ return -1;
+ }
+
ordinal = rep->target2;
selector = dll_table[ordinal].selector;
address = (unsigned int) dll_table[ordinal].address;
@@ -289,6 +304,14 @@
return -1;
}
dll_table = FindDLLTable(dll_name);
+ if (dll_table == NULL)
+ {
+ char s[80];
+
+ sprintf(s, "Bad DLL name '%s'", dll_name);
+ myerror(s);
+ return -1;
+ }
if (GetImportedName(fd, mz_header, ne_header,
rep->target2, func_name) == NULL)
@@ -305,7 +328,48 @@
break;
case NE_RELTYPE_INTERNAL:
+ if (rep->target1 == 0x00ff)
+ {
+ address = GetEntryPointFromOrdinal(fd, mz_header, ne_header,
+ rep->target2);
+ selector = (address >> 16) & 0xffff;
+ address &= 0xffff;
+ }
+ else
+ {
+ selector = selector_table[rep->target1-1].selector;
+ address = rep->target2;
+ }
+
+#ifdef DEBUG_FIXUP
+ printf("%d: %04.4x:%04.4x\n", i + 1, selector, address);
+#endif
+ break;
+
+ case 7:
+ /* Relocation type 7:
+ *
+ * These appear to be used as fixups for the Windows
+ * floating point emulator. Let's just ignore them and
+ * try to use the hardware floating point. Linux should
+ * successfully emulate the coprocessor if it doesn't
+ * exist.
+ */
+#ifdef DEBUG_FIXUP
+ printf("%d: ADDR TYPE %d, TYPE %d, OFFSET %04.4x, ",
+ i + 1, rep->address_type, rep->relocation_type,
+ rep->offset);
+ printf("TARGET %04.4x %04.4x\n", rep->target1, rep->target2);
+#endif
+ continue;
+
default:
+#ifdef DEBUG_FIXUP
+ printf("%d: ADDR TYPE %d, TYPE %d, OFFSET %04.4x, ",
+ i + 1, rep->address_type, rep->relocation_type,
+ rep->offset);
+ printf("TARGET %04.4x %04.4x\n", rep->target1, rep->target2);
+#endif
free(rep1);
return -1;
}
@@ -337,7 +401,23 @@
break;
+ case NE_RADDR_SELECTOR:
+ do {
+ next_addr = *sp;
+ *sp = (unsigned short) selector;
+ sp = (unsigned short *) ((char *) sel->base_addr + next_addr);
+ }
+ while (next_addr != 0xffff);
+
+ break;
+
default:
+#ifdef DEBUG_FIXUP
+ printf("%d: ADDR TYPE %d, TYPE %d, OFFSET %04.4x, ",
+ i + 1, rep->address_type, rep->relocation_type,
+ rep->offset);
+ printf("TARGET %04.4x %04.4x\n", rep->target1, rep->target2);
+#endif
free(rep1);
return -1;
}
diff --git a/winetest/main.c b/winetest/main.c
deleted file mode 100755
index de7d738..0000000
--- a/winetest/main.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/* MAIN.C
- *
- * PURPOSE:
- *
- * FUNCTIONS:
- * WinMain() - Initializes app, calls all other functions.
- */
-
-#include <windows.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-/*
- * Globals
- */
-char szAppName[] = "WineTest";
-
-extern long FAR PASCAL WineTestWndProc(HWND hwnd, unsigned message,
- WORD wParam, LONG lParam);
-/* extern void FAR __cdecl DebugPrintString(const char FAR *str); */
-
-/* WinMain
- */
-int PASCAL
-WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpszCmdLine, int cmdShow)
-{
- DebugPrintString("Hello\n");
-
- return 0;
-#if 0
- HWND hwnd;
- MSG msg;
- WNDCLASS wndclass;
-
- if (hPrevInstance)
- {
- MessageBox(NULL, "This application is already running.", szAppName,
- MB_OK | MB_ICONEXCLAMATION | MB_SYSTEMMODAL);
- return NULL;
- }
-
- wndclass.style = CS_HREDRAW | CS_VREDRAW;
- wndclass.lpfnWndProc = WineTestWndProc;
- wndclass.cbClsExtra = 0;
- wndclass.cbWndExtra = 0;
- wndclass.hInstance = hInstance;
- wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
- wndclass.hbrBackground = GetStockObject(WHITE_BRUSH);
- wndclass.lpszMenuName = "MainMenu";
- wndclass.lpszClassName = szAppName;
-
- RegisterClass(&wndclass);
-
- hwnd = CreateWindow(szAppName, "Wine Tester",
- WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- NULL,
- NULL,
- hInstance,
- NULL);
- ShowWindow(hwnd, cmdShow);
- UpdateWindow(hwnd);
-
- while (GetMessage(&msg, NULL, NULL, NULL))
- {
- TranslateMessage((LPMSG) &msg);
- DispatchMessage((LPMSG) &msg);
- }
-
- return msg.wParam;
-#endif /* 0 */
-}
-
-
-/* WineTestWndProc
- */
-long FAR PASCAL
-WineTestWndProc(HWND hwnd, unsigned message, WORD wParam, LONG lParam)
-{
- static HANDLE hInstance;
- FARPROC DlgProcInst;
- LONG parm;
-
- switch (message)
- {
- case WM_CREATE:
- hInstance = ((LPCREATESTRUCT) lParam)->hInstance;
- return 0;
-
- case WM_DESTROY:
- PostQuitMessage(0);
- return 0;
- }
-
- return DefWindowProc(hwnd, message, wParam, lParam);
-}
diff --git a/winetest/makefile b/winetest/makefile
deleted file mode 100755
index 5f111dd..0000000
--- a/winetest/makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-####################################################################
-#
-# PPI standard windows makefile
-#
-####################################################################
-
-####################################################################
-#
-# Compiler options
-#
-AFLAGS=/ML /LA
-CFLAGS=-AM -Ozaxb2 -Gr -G2 -Zpei -W3 -DWINVER=0x0301
-LFLAGS=/CO
-
-####################################################################
-#
-# Object files and target
-#
-OBJS=main.obj
-DIALOGS=
-TARGET=winetest
-
-####################################################################
-#
-# Standard rules
-#
-ROOTS=$(OBJS:.obj=)
-
-all: $(TARGET).exe
-
-version:
- coall -r$(RELEASE)
- $(MAKE) all
-
-$(TARGET).res: $(TARGET).rc $(TARGET).h $(DIALOGS)
- rc -r $(TARGET).rc
-
-$(TARGET).exe: $(TARGET).res $(TARGET).def $(TARGET).h $(OBJS)
- link @<<
-$(ROOTS) /NOD $(LFLAGS)
-$@
-$(TARGET) /MAP:FULL
-libw slibcewn oldnames
-$(TARGET).def
-<<
- rc -30 $(TARGET).res
-
diff --git a/winetest/winetest.def b/winetest/winetest.def
deleted file mode 100755
index bd9dbcc..0000000
--- a/winetest/winetest.def
+++ /dev/null
@@ -1,11 +0,0 @@
-NAME WINETEST
-
-DESCRIPTION 'Wine Tester'
-EXETYPE WINDOWS
-STUB 'WINSTUB.EXE'
-CODE PRELOAD MOVEABLE DISCARDABLE
-DATA PRELOAD MOVEABLE SINGLE
-HEAPSIZE 8192
-STACKSIZE 8192
-EXPORTS WineTestWndProc
-IMPORTS UNIXLIB._DebugPrintString
diff --git a/winetest/winetest.h b/winetest/winetest.h
deleted file mode 100755
index c280412..0000000
--- a/winetest/winetest.h
+++ /dev/null
@@ -1,2 +0,0 @@
-/* $Id$
- */
diff --git a/winetest/winetest.rc b/winetest/winetest.rc
deleted file mode 100755
index af8228e..0000000
--- a/winetest/winetest.rc
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <windows.h>
-
-MainMenu MENU
-BEGIN
- POPUP "&File"
- BEGIN
- MENUITEM "E&xit", 100
- MENUITEM SEPARATOR
- MENUITEM "&About...", 101
- END
-END