CVS freexp
CVS User mw
cvs-list at freexp.de
Son Mai 17 09:30:44 CEST 2009
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.
Mehr Informationen über die CVS-List Mailingliste