* go32v1 RTL did not compile (LFNsupport outside go32v2 defines !)

I renamed tb_selector to tb_segment because
      it is a real mode segment as opposed to
      a protected mode selector
    Fixed it for go32v1 (remove the $E0000000 offset !)
This commit is contained in:
pierre 1998-08-27 10:30:48 +00:00
parent 5f5bb4cf36
commit 2f163d10d7
3 changed files with 65 additions and 40 deletions

View File

@ -612,10 +612,10 @@ begin
dosregs.si:=1; { use ms-dos time }
dosregs.ecx:=attr;
dosregs.edx:=tb_offset+Sizeof(LFNSearchrec)+1;
dosmemput(tb_selector,tb_offset+Sizeof(LFNSearchrec)+1,path^,strlen(path)+1);
dosregs.ds:=tb_selector;
dosmemput(tb_segment,tb_offset+Sizeof(LFNSearchrec)+1,path^,strlen(path)+1);
dosregs.ds:=tb_segment;
dosregs.edi:=tb_offset;
dosregs.es:=tb_selector;
dosregs.es:=tb_segment;
dosregs.ax:=$714e;
msdos(dosregs);
LoadDosError;
@ -632,7 +632,7 @@ begin
Move(s.Fill,hdl,4);
dosregs.si:=1; { use ms-dos time }
dosregs.edi:=tb_offset;
dosregs.es:=tb_selector;
dosregs.es:=tb_segment;
dosregs.ebx:=hdl;
dosregs.ax:=$714f;
msdos(dosregs);
@ -681,13 +681,13 @@ begin
if path[i]='/' then path[i]:='\';
copytodos(f,sizeof(searchrec));
dosregs.edx:=tb_offset;
dosregs.ds:=tb_selector;
dosregs.ds:=tb_segment;
dosregs.ah:=$1a;
msdos(dosregs);
dosregs.ecx:=attr;
dosregs.edx:=tb_offset+Sizeof(searchrec)+1;
dosmemput(tb_selector,tb_offset+Sizeof(searchrec)+1,path^,strlen(path)+1);
dosregs.ds:=tb_selector;
dosmemput(tb_segment,tb_offset+Sizeof(searchrec)+1,path^,strlen(path)+1);
dosregs.ds:=tb_segment;
dosregs.ah:=$4e;
msdos(dosregs);
copyfromdos(f,sizeof(searchrec));
@ -700,7 +700,7 @@ procedure Dosfindnext(var f : searchrec);
begin
copytodos(f,sizeof(searchrec));
dosregs.edx:=tb_offset;
dosregs.ds:=tb_selector;
dosregs.ds:=tb_segment;
dosregs.ah:=$1a;
msdos(dosregs);
dosregs.ah:=$4f;
@ -1022,17 +1022,17 @@ begin
{$ifdef GO32V2}
copytodos(filerec(f).name,strlen(filerec(f).name)+1);
dosregs.edx:=tb_offset;
dosregs.ds:=tb_selector;
{$else}
strpcopy(n,filerec(f).name);
dosregs.edx:=longint(@n);
{$endif}
dosregs.ds:=tb_segment;
if LFNSupport then
begin
dosregs.ax:=$7143;
dosregs.bx:=0;
end
else
{$else}
strpcopy(n,filerec(f).name);
dosregs.edx:=longint(@n);
{$endif GO32V2}
dosregs.ax:=$4300;
msdos(dosregs);
LoadDosError;
@ -1049,17 +1049,17 @@ begin
{$ifdef GO32V2}
copytodos(filerec(f).name,strlen(filerec(f).name)+1);
dosregs.edx:=tb_offset;
dosregs.ds:=tb_selector;
{$else}
strpcopy(n,filerec(f).name);
dosregs.edx:=longint(@n);
{$endif}
dosregs.ds:=tb_segment;
if LFNSupport then
begin
dosregs.ax:=$7143;
dosregs.bx:=1;
end
else
{$else}
strpcopy(n,filerec(f).name);
dosregs.edx:=longint(@n);
{$endif}
dosregs.ax:=$4301;
dosregs.cx:=attr;
msdos(dosregs);
@ -1139,7 +1139,14 @@ End;
end.
{
$Log$
Revision 1.9 1998-08-26 10:04:01 peter
Revision 1.10 1998-08-27 10:30:48 pierre
* go32v1 RTL did not compile (LFNsupport outside go32v2 defines !)
I renamed tb_selector to tb_segment because
it is a real mode segment as opposed to
a protected mode selector
Fixed it for go32v1 (remove the $E0000000 offset !)
Revision 1.9 1998/08/26 10:04:01 peter
* new lfn check from mailinglist
* renamed win95 -> LFNSupport
+ tb_selector, tb_offset for easier access to transferbuffer
@ -1168,3 +1175,4 @@ end.
* fixed read_text_as_array
+ read_text_as_pchar which was not yet in the rtl
}

View File

@ -159,7 +159,7 @@ unit go32;
function get_run_mode : word;
function transfer_buffer : longint;
function tb_selector : longint;
function tb_segment : longint;
function tb_offset : longint;
function tb_size : longint;
procedure copytodos(var addr; len : longint);
@ -215,7 +215,7 @@ var
{$ifndef go32v2}
{ the following procedures copy from and to DOS memory without DPMI,
these are not necessary for go32v2, becuase that requires dpmi (PFV) }
these are not necessary for go32v2, because that requires dpmi (PFV) }
procedure raw_dosmemput(seg : word;ofs : word;var data;count : longint);
@ -1163,9 +1163,14 @@ end ['EAX','EDX'];
end;
function tb_selector : longint;
function tb_segment : longint;
begin
tb_selector:=go32_info_block.linear_address_of_transfer_buffer shr 4;
{$ifdef go32v2}
tb_segment:=go32_info_block.linear_address_of_transfer_buffer shr 4;
{$else i.E. for go32v1}
{ all real mode memory is mapped to $E000000 location !! }
tb_segment:=(go32_info_block.linear_address_of_transfer_buffer shr 4) and $FFFF;
{$endif go32v2}
end;
@ -1226,7 +1231,14 @@ end.
{
$Log$
Revision 1.11 1998-08-26 10:04:02 peter
Revision 1.12 1998-08-27 10:30:50 pierre
* go32v1 RTL did not compile (LFNsupport outside go32v2 defines !)
I renamed tb_selector to tb_segment because
it is a real mode segment as opposed to
a protected mode selector
Fixed it for go32v1 (remove the $E0000000 offset !)
Revision 1.11 1998/08/26 10:04:02 peter
* new lfn check from mailinglist
* renamed win95 -> LFNSupport
+ tb_selector, tb_offset for easier access to transferbuffer

View File

@ -117,8 +117,6 @@ var
procedure sysrealintr(intnr : word;var regs : trealregs);
function tb : longint;
implementation
{ include system independent routines }
@ -213,9 +211,9 @@ begin
end;
function tb_selector : longint;
function tb_segment : longint;
begin
tb_selector:=go32_info_block.linear_address_of_transfer_buffer shr 4;
tb_segment:=go32_info_block.linear_address_of_transfer_buffer shr 4;
end;
@ -624,7 +622,7 @@ begin
AllowSlash(p);
syscopytodos(longint(p),strlen(p)+1);
regs.realedx:=tb_offset;
regs.realds:=tb_selector;
regs.realds:=tb_segment;
{$ifndef RTLLITE}
if LFNSupport then
regs.realeax:=$7141
@ -651,8 +649,8 @@ begin
sysseg_move(get_ds,longint(p1),dos_selector,tb+strlen(p2)+2,strlen(p1)+1);
regs.realedi:=tb_offset;
regs.realedx:=tb_offset + strlen(p2)+2;
regs.realds:=tb_selector;
regs.reales:=tb_selector;
regs.realds:=tb_segment;
regs.reales:=tb_segment;
{$ifndef RTLLITE}
if LFNSupport then
regs.realeax:=$7156
@ -682,7 +680,7 @@ begin
syscopytodos(addr+writesize,size);
regs.realecx:=size;
regs.realedx:=tb_offset;
regs.realds:=tb_selector;
regs.realds:=tb_segment;
regs.realebx:=h;
regs.realeax:=$4000;
sysrealintr($21,regs);
@ -713,7 +711,7 @@ begin
size:=len;
regs.realecx:=size;
regs.realedx:=tb_offset;
regs.realds:=tb_selector;
regs.realds:=tb_segment;
regs.realebx:=h;
regs.realeax:=$3f00;
sysrealintr($21,regs);
@ -809,7 +807,7 @@ begin
do_seek(handle,pos);
regs.realecx:=0;
regs.realedx:=tb_offset;
regs.realds:=tb_selector;
regs.realds:=tb_segment;
regs.realebx:=handle;
regs.realeax:=$4000;
sysrealintr($21,regs);
@ -880,7 +878,7 @@ begin
{$endif RTLLITE}
regs.realeax:=$6c00;
regs.realedx:=action;
regs.realds:=tb_selector;
regs.realds:=tb_segment;
regs.realesi:=tb_offset;
regs.realebx:=$2000+(flags and $ff);
regs.realecx:=$20;
@ -956,7 +954,7 @@ begin
AllowSlash(pchar(@buffer));
syscopytodos(longint(@buffer),length(s)+1);
regs.realedx:=tb_offset;
regs.realds:=tb_selector;
regs.realds:=tb_segment;
{$ifndef RTLLITE}
if LFNSupport then
regs.realeax:=$7100+func
@ -1001,7 +999,7 @@ var
begin
regs.realedx:=drivenr;
regs.realesi:=tb_offset;
regs.realds:=tb_selector;
regs.realds:=tb_segment;
{$ifndef RTLLITE}
if LFNSupport then
regs.realeax:=$7147
@ -1059,10 +1057,10 @@ begin
Buffers:=' '+#0;
syscopytodos(longint(RootName),strlen(RootName)+1);
regs.realeax:=$71a0;
regs.reales:=tb_selector;
regs.reales:=tb_segment;
regs.realedi:=tb_offset;
regs.realecx:=strlen(Buffers)+1;
regs.realds:=tb_selector;
regs.realds:=tb_segment;
regs.realedx:=tb_offset;
sysrealintr($21,regs);
syscopyfromdos(longint(Buffers),strlen(Buffers)+1);
@ -1090,7 +1088,14 @@ Begin
End.
{
$Log$
Revision 1.16 1998-08-26 10:04:03 peter
Revision 1.17 1998-08-27 10:30:51 pierre
* go32v1 RTL did not compile (LFNsupport outside go32v2 defines !)
I renamed tb_selector to tb_segment because
it is a real mode segment as opposed to
a protected mode selector
Fixed it for go32v1 (remove the $E0000000 offset !)
Revision 1.16 1998/08/26 10:04:03 peter
* new lfn check from mailinglist
* renamed win95 -> LFNSupport
+ tb_selector, tb_offset for easier access to transferbuffer