Recovery of release 990110 after disk crash.
See Changelog for changes between 990103 and 990110.

diff --git a/loader/ne/convert.c b/loader/ne/convert.c
index ec6975c..0d201e6 100644
--- a/loader/ne/convert.c
+++ b/loader/ne/convert.c
@@ -376,6 +376,28 @@
 }
 
 /**********************************************************************
+ *	    ConvertAccelerator32To16
+ */
+VOID ConvertAccelerator32To16( LPVOID acc32, DWORD size, LPVOID acc16 )
+{
+    int type;
+
+    do
+    {
+        /* Copy type */
+        type = *((BYTE *)acc16)++ = *((BYTE *)acc32)++;
+        /* Skip padding */
+        ((BYTE *)acc32)++;
+        /* Copy event and IDval */
+        *((WORD *)acc16)++ = *((WORD *)acc32)++;
+        *((WORD *)acc16)++ = *((WORD *)acc32)++;
+        /* Skip padding */
+        ((WORD *)acc32)++;
+
+    } while ( !( type & 0x80 ) );
+}
+
+/**********************************************************************
  *	    NE_LoadPEResource
  */
 HGLOBAL16 NE_LoadPEResource( NE_MODULE *pModule, WORD type, LPVOID bits, DWORD size )
@@ -397,6 +419,10 @@
         ConvertDialog32To16( bits, size, GlobalLock16( handle ) );
         break;
 
+    case RT_ACCELERATOR16:
+        ConvertAccelerator32To16( bits, size, GlobalLock16( handle ) );
+        break;
+
     case RT_STRING16:
         FIXME( resource, "not yet implemented!\n" );
         /* fall through */
diff --git a/loader/ne/segment.c b/loader/ne/segment.c
index 854cbf3..a40ee19 100644
--- a/loader/ne/segment.c
+++ b/loader/ne/segment.c
@@ -148,7 +148,7 @@
       */
       char* buff = xmalloc(size);
       char* curr = buff;
-      ReadFile(hf, mem, size, &res, NULL);
+      ReadFile(hf, buff, size, &res, NULL);
       while(curr < buff + size) {
 	unsigned int rept = *((short*) curr)++;
 	unsigned int len = *((short*) curr)++;
@@ -800,6 +800,17 @@
 {
     WORD size = wSize << wElem;
     HANDLE16 hMem = GlobalAlloc16( NE_Ne2MemFlags(wFlags), size);
+
+    /* not data == code */
+    if (	(wFlags & NE_SEGFLAGS_EXECUTEONLY) ||
+    		!(wFlags & NE_SEGFLAGS_DATA)
+    ) {
+        WORD hSel = GlobalHandleToSel(hMem);
+        WORD access = SelectorAccessRights(hSel,0,0);
+
+	access |= 2<<2; /* SEGMENT_CODE */
+	SelectorAccessRights(hSel,1,access);
+    }
     return MAKELONG( hMem, GlobalHandleToSel(hMem) );
 }