* better errorcode returning using int21h,5900

This commit is contained in:
peter 1999-09-10 17:14:09 +00:00
parent 12e807b5bc
commit c7bd67fb54
2 changed files with 2576 additions and 2545 deletions

View File

@ -149,11 +149,22 @@ var
dosregs : registers;
procedure LoadDosError;
var
r : registers;
begin
if (dosregs.flags and carryflag) <> 0 then
begin
r.eax:=$5900;
r.ebx:=$0;
realintr($21,r);
{ conversion from word to integer !!
gave a Bound check error if ax is $FFFF !! PM }
doserror:=integer(dosregs.ax)
doserror:=integer(r.ax);
case doserror of
19 : DosError:=150;
21 : DosError:=152;
end;
end
else
doserror:=0;
end;
@ -1015,7 +1026,10 @@ End;
end.
{
$Log$
Revision 1.11 1999-09-08 18:55:49 peter
Revision 1.12 1999-09-10 17:14:09 peter
* better errorcode returning using int21h,5900
Revision 1.11 1999/09/08 18:55:49 peter
* pointer fixes
Revision 1.10 1999/08/13 21:23:15 peter

View File

@ -534,6 +534,20 @@ begin
end;
procedure getinoutres;
var
regs : trealregs;
begin
regs.realeax:=$5900;
regs.realebx:=$0;
sysrealintr($21,regs);
InOutRes:=lo(regs.realeax);
case InOutRes of
19 : InOutRes:=150;
21 : InOutRes:=152;
end;
end;
{ Keep Track of open files }
const
@ -741,7 +755,7 @@ begin
regs.realeax:=$3e00;
sysrealintr($21,regs);
if (regs.realflags and carryflag) <> 0 then
InOutRes:=lo(regs.realeax);
GetInOutRes;
end;
@ -763,7 +777,7 @@ begin
regs.realecx:=0;
sysrealintr($21,regs);
if (regs.realflags and carryflag) <> 0 then
InOutRes:=lo(regs.realeax);
GetInOutRes;
end;
@ -790,7 +804,7 @@ begin
regs.realecx:=$ff; { attribute problem here ! }
sysrealintr($21,regs);
if (regs.realflags and carryflag) <> 0 then
InOutRes:=lo(regs.realeax);
GetInOutRes;
end;
@ -816,7 +830,7 @@ begin
sysrealintr($21,regs);
if (regs.realflags and carryflag) <> 0 then
begin
InOutRes:=lo(regs.realeax);
GetInOutRes;
exit(writesize);
end;
inc(writesize,regs.realeax);
@ -850,7 +864,7 @@ begin
sysrealintr($21,regs);
if (regs.realflags and carryflag) <> 0 then
begin
InOutRes:=lo(regs.realeax);
GetInOutRes;
do_read:=0;
exit;
end;
@ -876,7 +890,7 @@ begin
sysrealintr($21,regs);
if (regs.realflags and carryflag) <> 0 then
Begin
InOutRes:=lo(regs.realeax);
GetInOutRes;
do_filepos:=0;
end
else
@ -894,7 +908,7 @@ begin
regs.realeax:=$4200;
sysrealintr($21,regs);
if (regs.realflags and carryflag) <> 0 then
InOutRes:=lo(regs.realeax);
GetInOutRes;
end;
@ -910,7 +924,7 @@ begin
sysrealintr($21,regs);
if (regs.realflags and carryflag) <> 0 then
Begin
InOutRes:=lo(regs.realeax);
GetInOutRes;
do_seekend:=0;
end
else
@ -941,7 +955,7 @@ begin
regs.realeax:=$4000;
sysrealintr($21,regs);
if (regs.realflags and carryflag) <> 0 then
InOutRes:=lo(regs.realeax);
GetInOutRes;
end;
@ -1014,7 +1028,7 @@ begin
sysrealintr($21,regs);
if (regs.realflags and carryflag) <> 0 then
begin
InOutRes:=lo(regs.realeax);
GetInOutRes;
exit;
end
else
@ -1051,7 +1065,7 @@ begin
sysrealintr($21,regs);
do_isdevice:=(regs.realedx and $80)<>0;
if (regs.realflags and carryflag) <> 0 then
InOutRes:=lo(regs.realeax);
GetInOutRes;
end;
@ -1107,7 +1121,7 @@ begin
regs.realeax:=func shl 8;
sysrealintr($21,regs);
if (regs.realflags and carryflag) <> 0 then
InOutRes:=lo(regs.realeax);
GetInOutRes;
end;
@ -1170,7 +1184,7 @@ begin
sysrealintr($21,regs);
if (regs.realflags and carryflag) <> 0 then
Begin
InOutRes:=lo(regs.realeax);
GetInOutRes;
exit;
end
else
@ -1274,7 +1288,10 @@ Begin
End.
{
$Log$
Revision 1.17 1999-09-10 15:40:33 peter
Revision 1.18 1999-09-10 17:14:09 peter
* better errorcode returning using int21h,5900
Revision 1.17 1999/09/10 15:40:33 peter
* fixed do_open flags to be > $100, becuase filemode can be upto 255
Revision 1.16 1999/09/08 16:09:18 peter