Update of /server/cvs/freexp
In directory m6s15:/tmp/cvs-serv32161

Modified Files:
        overxms.asm overxms.obj overxms.pas xpx.pas 
Log Message:
MW: - Uebernahme von Fehlerkorrekturen aus Overxms 1.2


--- /server/cvs/freexp/overxms.asm      2008/12/26 18:37:14     1.8
+++ /server/cvs/freexp/overxms.asm      2009/05/17 07:30:44     1.9
@@ -1,9 +1,21 @@
 ; ---------------------------------------------------------------
 ; Dieser Quelltext ist urheberrechtlich geschuetzt.              
 ; (c) 2003-2009 FreeXP, http://www.freexp.de                                   
                                              ; 
---------------------------------------------------------------
-; $Id: overxms.asm,v 1.8 2008/12/26 18:37:14 mw Exp $
+; $Id: overxms.asm,v 1.9 2009/05/17 07:30:44 mw Exp $
 TITLE Turbo Pascal XMS support for loading overlays - By Wilbert van Leijen
+; OVERXMS 1.1
+; Bug fix by Arnold Bailey  [72020,136]   BIX abailey 1/03/93
+;
+;   XMS uses BX to return error codes. Most version will preserve the value
+;   of BX if there is no error.
+;
+;   DRDOS 6 EMM386.SYS and HIDOS.SYS (equivalent to HIMEM.SYS) change
+;   BX to zero if there is no error. The procedure UnitToXMS uses BX as an
+;   offset counter. With DRDOS 6 it gets reset causing major crash.
+;
+;   Added PUSH BX and POP BX to preserve value.
 ;     modifyed by FreeXP in 2004
+
 PAGE 65, 132
 LOCALS @@
 
@@ -109,7 +121,15 @@
 @@1:    ADD    BX, [PrefixSeg]
         ADD    BX, 10h
         MOV    ES, BX
-        ADD    AX, ES:[OvrHeader.CodeSize]
+
+;** Ver 1.2 BugFix
+        MOV    CX, ES:[OvrHeader.CodeSize]
+        TEST   CX,1     ; Test for odd number of bytes
+        JZ     @@2
+        INC    CX       ; Make sure it's even number of bytes
+@@2:    ADD    AX, CX
+;** Ver 1.2 Bug Fix
+
         ADC    DX, 0
         MOV    BX, ES:[OvrHeader.CodeListNext]
         OR     BX, BX
@@ -128,9 +148,9 @@
         MOV    [ovrmemsize], DX
         CALL   [XmsDriver]
         OR     AX, AX
-        JZ     @@2
+        JZ     @@3
         MOV    [OvrXmsHandle], DX
-@@2:    RETN
+@@3:    RETN
 AllocateXms ENDP
 
 ;  Function XmsReadFunc(OvrSeg : Word) : Integer; Far;
@@ -200,8 +220,12 @@
         MOV    Word Ptr [XmsMove.DestOffset+2], BX
         MOV    AH, 11
         LEA    SI, XmsMove
+
+; BUG Fix. Need to preserve BX
         PUSH   BX
         CALL   [XmsDriver]
+
+; BUG Fix. Restore BX
         POP    BX
 
 ;  Bump code size
@@ -354,6 +378,8 @@
            END
 
 ;~~~~~~~~~~~~~~~~~~~
+; 17.05.09  MW  Uebernahme von Korrekturen aus OVERXMS 1.2
+;
 ; 04.10.04  MW  Groesse des Overlays wird jetzt hier berechnet.
 ; 
 ; 16.03.03  MW  Neue Variable ovrmemsize zeigt die Groesse des Overlay
Binary files /server/cvs/freexp/overxms.obj     2004/10/04 11:25:22     1.3 and 
/server/cvs/freexp/overxms.obj  2009/05/17 07:30:44     1.4 differ
--- /server/cvs/freexp/overxms.pas      2008/12/26 18:37:14     1.7
+++ /server/cvs/freexp/overxms.pas      2009/05/17 07:30:44     1.8
@@ -1,10 +1,13 @@
 { --------------------------------------------------------------- }
 { Dieser Quelltext ist urheberrechtlich geschuetzt.               }
 { (c) 2003-2009 FreeXP, http://www.freexp.de                      }
-{ OVERXMS - Loads overlays in XMS.  Written by Wilbert van Leijen }
-{           modifyed by FreeXP in 2004                            }
+{ OVERXMS 1.2 - Loads overlays in XMS.                            }
+{               Written by Wilbert van Leijen                     }
+{               modifyed by FreeXP in 2004                        }
 { --------------------------------------------------------------- }
-{ $Id: overxms.pas,v 1.7 2008/12/26 18:37:14 mw Exp $ }
+{ $Id: overxms.pas,v 1.8 2009/05/17 07:30:44 mw Exp $ }
+
+{ BUG Fix in OVERXMS.ASM by Arnold Bailey [72020,136]   BIX abailey 1/03/93 }
 
 Unit OverXMS;
 
@@ -32,7 +35,10 @@
 end.  { OverXMS }
 {
   $Log: overxms.pas,v $
-  Revision 1.7  2008/12/26 18:37:14  mw
+  Revision 1.8  2009/05/17 07:30:44  mw
+  MW: - Uebernahme von Fehlerkorrekturen aus Overxms 1.2
+
+  Revision 1.7  2008-12-26 18:37:14  mw
   - Aktualisierung auf Version 3.45
 
   Revision 1.6  2008-01-01 20:59:24  mw
--- /server/cvs/freexp/xpx.pas  2009/05/16 11:28:30     1.44
+++ /server/cvs/freexp/xpx.pas  2009/05/17 07:30:44     1.45
@@ -8,7 +8,7 @@
 { Die Nutzungsbedingungen fuer diesen Quelltext finden Sie in der }
 { Datei SLIZENZ.TXT oder auf www.crosspoint.de/oldlicense.html.   }
 { --------------------------------------------------------------- }
-{ $Id: xpx.pas,v 1.44 2009/05/16 11:28:30 mw Exp $ }
+{ $Id: xpx.pas,v 1.45 2009/05/17 07:30:44 mw Exp $ }
 
 { CrossPoint - First Unit }
 
@@ -352,7 +352,7 @@
     end
     else if ((XmsTest) and (not noovrbuf) and 
(XmsAvail>(Size_OVR+xpswapspace+700))) then
     begin
-      { OvrInitXMS; }
+      OvrInitXMS;
       xmsovrbuf:=true;
       emsovrbuf:=false;
       ovrstr:=' (XMS)';
@@ -387,7 +387,10 @@
 
 {
   $Log: xpx.pas,v $
-  Revision 1.44  2009/05/16 11:28:30  mw
+  Revision 1.45  2009/05/17 07:30:44  mw
+  MW: - Uebernahme von Fehlerkorrekturen aus Overxms 1.2
+
+  Revision 1.44  2009-05-16 11:28:30  mw
   MW: - Overlay im XMS funktioniert derzeit nicht und führt zum Absturz.
         Daher wird es jetzt erst einmal deaktiviert.
 


------------------------------------------------------------------------
FreeXP CVS-Mailingliste
CVS-List@freexp.de
http://www.freexp.de/cgi-bin/mailman/listinfo/cvs-list

Antwort per Email an