mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 11:19:58 +02:00
* 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:
parent
5f5bb4cf36
commit
2f163d10d7
@ -612,10 +612,10 @@ begin
|
|||||||
dosregs.si:=1; { use ms-dos time }
|
dosregs.si:=1; { use ms-dos time }
|
||||||
dosregs.ecx:=attr;
|
dosregs.ecx:=attr;
|
||||||
dosregs.edx:=tb_offset+Sizeof(LFNSearchrec)+1;
|
dosregs.edx:=tb_offset+Sizeof(LFNSearchrec)+1;
|
||||||
dosmemput(tb_selector,tb_offset+Sizeof(LFNSearchrec)+1,path^,strlen(path)+1);
|
dosmemput(tb_segment,tb_offset+Sizeof(LFNSearchrec)+1,path^,strlen(path)+1);
|
||||||
dosregs.ds:=tb_selector;
|
dosregs.ds:=tb_segment;
|
||||||
dosregs.edi:=tb_offset;
|
dosregs.edi:=tb_offset;
|
||||||
dosregs.es:=tb_selector;
|
dosregs.es:=tb_segment;
|
||||||
dosregs.ax:=$714e;
|
dosregs.ax:=$714e;
|
||||||
msdos(dosregs);
|
msdos(dosregs);
|
||||||
LoadDosError;
|
LoadDosError;
|
||||||
@ -632,7 +632,7 @@ begin
|
|||||||
Move(s.Fill,hdl,4);
|
Move(s.Fill,hdl,4);
|
||||||
dosregs.si:=1; { use ms-dos time }
|
dosregs.si:=1; { use ms-dos time }
|
||||||
dosregs.edi:=tb_offset;
|
dosregs.edi:=tb_offset;
|
||||||
dosregs.es:=tb_selector;
|
dosregs.es:=tb_segment;
|
||||||
dosregs.ebx:=hdl;
|
dosregs.ebx:=hdl;
|
||||||
dosregs.ax:=$714f;
|
dosregs.ax:=$714f;
|
||||||
msdos(dosregs);
|
msdos(dosregs);
|
||||||
@ -681,13 +681,13 @@ begin
|
|||||||
if path[i]='/' then path[i]:='\';
|
if path[i]='/' then path[i]:='\';
|
||||||
copytodos(f,sizeof(searchrec));
|
copytodos(f,sizeof(searchrec));
|
||||||
dosregs.edx:=tb_offset;
|
dosregs.edx:=tb_offset;
|
||||||
dosregs.ds:=tb_selector;
|
dosregs.ds:=tb_segment;
|
||||||
dosregs.ah:=$1a;
|
dosregs.ah:=$1a;
|
||||||
msdos(dosregs);
|
msdos(dosregs);
|
||||||
dosregs.ecx:=attr;
|
dosregs.ecx:=attr;
|
||||||
dosregs.edx:=tb_offset+Sizeof(searchrec)+1;
|
dosregs.edx:=tb_offset+Sizeof(searchrec)+1;
|
||||||
dosmemput(tb_selector,tb_offset+Sizeof(searchrec)+1,path^,strlen(path)+1);
|
dosmemput(tb_segment,tb_offset+Sizeof(searchrec)+1,path^,strlen(path)+1);
|
||||||
dosregs.ds:=tb_selector;
|
dosregs.ds:=tb_segment;
|
||||||
dosregs.ah:=$4e;
|
dosregs.ah:=$4e;
|
||||||
msdos(dosregs);
|
msdos(dosregs);
|
||||||
copyfromdos(f,sizeof(searchrec));
|
copyfromdos(f,sizeof(searchrec));
|
||||||
@ -700,7 +700,7 @@ procedure Dosfindnext(var f : searchrec);
|
|||||||
begin
|
begin
|
||||||
copytodos(f,sizeof(searchrec));
|
copytodos(f,sizeof(searchrec));
|
||||||
dosregs.edx:=tb_offset;
|
dosregs.edx:=tb_offset;
|
||||||
dosregs.ds:=tb_selector;
|
dosregs.ds:=tb_segment;
|
||||||
dosregs.ah:=$1a;
|
dosregs.ah:=$1a;
|
||||||
msdos(dosregs);
|
msdos(dosregs);
|
||||||
dosregs.ah:=$4f;
|
dosregs.ah:=$4f;
|
||||||
@ -1022,17 +1022,17 @@ begin
|
|||||||
{$ifdef GO32V2}
|
{$ifdef GO32V2}
|
||||||
copytodos(filerec(f).name,strlen(filerec(f).name)+1);
|
copytodos(filerec(f).name,strlen(filerec(f).name)+1);
|
||||||
dosregs.edx:=tb_offset;
|
dosregs.edx:=tb_offset;
|
||||||
dosregs.ds:=tb_selector;
|
dosregs.ds:=tb_segment;
|
||||||
{$else}
|
|
||||||
strpcopy(n,filerec(f).name);
|
|
||||||
dosregs.edx:=longint(@n);
|
|
||||||
{$endif}
|
|
||||||
if LFNSupport then
|
if LFNSupport then
|
||||||
begin
|
begin
|
||||||
dosregs.ax:=$7143;
|
dosregs.ax:=$7143;
|
||||||
dosregs.bx:=0;
|
dosregs.bx:=0;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
{$else}
|
||||||
|
strpcopy(n,filerec(f).name);
|
||||||
|
dosregs.edx:=longint(@n);
|
||||||
|
{$endif GO32V2}
|
||||||
dosregs.ax:=$4300;
|
dosregs.ax:=$4300;
|
||||||
msdos(dosregs);
|
msdos(dosregs);
|
||||||
LoadDosError;
|
LoadDosError;
|
||||||
@ -1049,17 +1049,17 @@ begin
|
|||||||
{$ifdef GO32V2}
|
{$ifdef GO32V2}
|
||||||
copytodos(filerec(f).name,strlen(filerec(f).name)+1);
|
copytodos(filerec(f).name,strlen(filerec(f).name)+1);
|
||||||
dosregs.edx:=tb_offset;
|
dosregs.edx:=tb_offset;
|
||||||
dosregs.ds:=tb_selector;
|
dosregs.ds:=tb_segment;
|
||||||
{$else}
|
|
||||||
strpcopy(n,filerec(f).name);
|
|
||||||
dosregs.edx:=longint(@n);
|
|
||||||
{$endif}
|
|
||||||
if LFNSupport then
|
if LFNSupport then
|
||||||
begin
|
begin
|
||||||
dosregs.ax:=$7143;
|
dosregs.ax:=$7143;
|
||||||
dosregs.bx:=1;
|
dosregs.bx:=1;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
{$else}
|
||||||
|
strpcopy(n,filerec(f).name);
|
||||||
|
dosregs.edx:=longint(@n);
|
||||||
|
{$endif}
|
||||||
dosregs.ax:=$4301;
|
dosregs.ax:=$4301;
|
||||||
dosregs.cx:=attr;
|
dosregs.cx:=attr;
|
||||||
msdos(dosregs);
|
msdos(dosregs);
|
||||||
@ -1139,7 +1139,14 @@ End;
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* new lfn check from mailinglist
|
||||||
* renamed win95 -> LFNSupport
|
* renamed win95 -> LFNSupport
|
||||||
+ tb_selector, tb_offset for easier access to transferbuffer
|
+ tb_selector, tb_offset for easier access to transferbuffer
|
||||||
@ -1168,3 +1175,4 @@ end.
|
|||||||
* fixed read_text_as_array
|
* fixed read_text_as_array
|
||||||
+ read_text_as_pchar which was not yet in the rtl
|
+ read_text_as_pchar which was not yet in the rtl
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ unit go32;
|
|||||||
function get_run_mode : word;
|
function get_run_mode : word;
|
||||||
|
|
||||||
function transfer_buffer : longint;
|
function transfer_buffer : longint;
|
||||||
function tb_selector : longint;
|
function tb_segment : longint;
|
||||||
function tb_offset : longint;
|
function tb_offset : longint;
|
||||||
function tb_size : longint;
|
function tb_size : longint;
|
||||||
procedure copytodos(var addr; len : longint);
|
procedure copytodos(var addr; len : longint);
|
||||||
@ -215,7 +215,7 @@ var
|
|||||||
{$ifndef go32v2}
|
{$ifndef go32v2}
|
||||||
|
|
||||||
{ the following procedures copy from and to DOS memory without DPMI,
|
{ 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);
|
procedure raw_dosmemput(seg : word;ofs : word;var data;count : longint);
|
||||||
|
|
||||||
@ -1163,9 +1163,14 @@ end ['EAX','EDX'];
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function tb_selector : longint;
|
function tb_segment : longint;
|
||||||
begin
|
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;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -1226,7 +1231,14 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* new lfn check from mailinglist
|
||||||
* renamed win95 -> LFNSupport
|
* renamed win95 -> LFNSupport
|
||||||
+ tb_selector, tb_offset for easier access to transferbuffer
|
+ tb_selector, tb_offset for easier access to transferbuffer
|
||||||
|
@ -117,8 +117,6 @@ var
|
|||||||
procedure sysrealintr(intnr : word;var regs : trealregs);
|
procedure sysrealintr(intnr : word;var regs : trealregs);
|
||||||
function tb : longint;
|
function tb : longint;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{ include system independent routines }
|
{ include system independent routines }
|
||||||
@ -213,9 +211,9 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function tb_selector : longint;
|
function tb_segment : longint;
|
||||||
begin
|
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;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -624,7 +622,7 @@ begin
|
|||||||
AllowSlash(p);
|
AllowSlash(p);
|
||||||
syscopytodos(longint(p),strlen(p)+1);
|
syscopytodos(longint(p),strlen(p)+1);
|
||||||
regs.realedx:=tb_offset;
|
regs.realedx:=tb_offset;
|
||||||
regs.realds:=tb_selector;
|
regs.realds:=tb_segment;
|
||||||
{$ifndef RTLLITE}
|
{$ifndef RTLLITE}
|
||||||
if LFNSupport then
|
if LFNSupport then
|
||||||
regs.realeax:=$7141
|
regs.realeax:=$7141
|
||||||
@ -651,8 +649,8 @@ begin
|
|||||||
sysseg_move(get_ds,longint(p1),dos_selector,tb+strlen(p2)+2,strlen(p1)+1);
|
sysseg_move(get_ds,longint(p1),dos_selector,tb+strlen(p2)+2,strlen(p1)+1);
|
||||||
regs.realedi:=tb_offset;
|
regs.realedi:=tb_offset;
|
||||||
regs.realedx:=tb_offset + strlen(p2)+2;
|
regs.realedx:=tb_offset + strlen(p2)+2;
|
||||||
regs.realds:=tb_selector;
|
regs.realds:=tb_segment;
|
||||||
regs.reales:=tb_selector;
|
regs.reales:=tb_segment;
|
||||||
{$ifndef RTLLITE}
|
{$ifndef RTLLITE}
|
||||||
if LFNSupport then
|
if LFNSupport then
|
||||||
regs.realeax:=$7156
|
regs.realeax:=$7156
|
||||||
@ -682,7 +680,7 @@ begin
|
|||||||
syscopytodos(addr+writesize,size);
|
syscopytodos(addr+writesize,size);
|
||||||
regs.realecx:=size;
|
regs.realecx:=size;
|
||||||
regs.realedx:=tb_offset;
|
regs.realedx:=tb_offset;
|
||||||
regs.realds:=tb_selector;
|
regs.realds:=tb_segment;
|
||||||
regs.realebx:=h;
|
regs.realebx:=h;
|
||||||
regs.realeax:=$4000;
|
regs.realeax:=$4000;
|
||||||
sysrealintr($21,regs);
|
sysrealintr($21,regs);
|
||||||
@ -713,7 +711,7 @@ begin
|
|||||||
size:=len;
|
size:=len;
|
||||||
regs.realecx:=size;
|
regs.realecx:=size;
|
||||||
regs.realedx:=tb_offset;
|
regs.realedx:=tb_offset;
|
||||||
regs.realds:=tb_selector;
|
regs.realds:=tb_segment;
|
||||||
regs.realebx:=h;
|
regs.realebx:=h;
|
||||||
regs.realeax:=$3f00;
|
regs.realeax:=$3f00;
|
||||||
sysrealintr($21,regs);
|
sysrealintr($21,regs);
|
||||||
@ -809,7 +807,7 @@ begin
|
|||||||
do_seek(handle,pos);
|
do_seek(handle,pos);
|
||||||
regs.realecx:=0;
|
regs.realecx:=0;
|
||||||
regs.realedx:=tb_offset;
|
regs.realedx:=tb_offset;
|
||||||
regs.realds:=tb_selector;
|
regs.realds:=tb_segment;
|
||||||
regs.realebx:=handle;
|
regs.realebx:=handle;
|
||||||
regs.realeax:=$4000;
|
regs.realeax:=$4000;
|
||||||
sysrealintr($21,regs);
|
sysrealintr($21,regs);
|
||||||
@ -880,7 +878,7 @@ begin
|
|||||||
{$endif RTLLITE}
|
{$endif RTLLITE}
|
||||||
regs.realeax:=$6c00;
|
regs.realeax:=$6c00;
|
||||||
regs.realedx:=action;
|
regs.realedx:=action;
|
||||||
regs.realds:=tb_selector;
|
regs.realds:=tb_segment;
|
||||||
regs.realesi:=tb_offset;
|
regs.realesi:=tb_offset;
|
||||||
regs.realebx:=$2000+(flags and $ff);
|
regs.realebx:=$2000+(flags and $ff);
|
||||||
regs.realecx:=$20;
|
regs.realecx:=$20;
|
||||||
@ -956,7 +954,7 @@ begin
|
|||||||
AllowSlash(pchar(@buffer));
|
AllowSlash(pchar(@buffer));
|
||||||
syscopytodos(longint(@buffer),length(s)+1);
|
syscopytodos(longint(@buffer),length(s)+1);
|
||||||
regs.realedx:=tb_offset;
|
regs.realedx:=tb_offset;
|
||||||
regs.realds:=tb_selector;
|
regs.realds:=tb_segment;
|
||||||
{$ifndef RTLLITE}
|
{$ifndef RTLLITE}
|
||||||
if LFNSupport then
|
if LFNSupport then
|
||||||
regs.realeax:=$7100+func
|
regs.realeax:=$7100+func
|
||||||
@ -1001,7 +999,7 @@ var
|
|||||||
begin
|
begin
|
||||||
regs.realedx:=drivenr;
|
regs.realedx:=drivenr;
|
||||||
regs.realesi:=tb_offset;
|
regs.realesi:=tb_offset;
|
||||||
regs.realds:=tb_selector;
|
regs.realds:=tb_segment;
|
||||||
{$ifndef RTLLITE}
|
{$ifndef RTLLITE}
|
||||||
if LFNSupport then
|
if LFNSupport then
|
||||||
regs.realeax:=$7147
|
regs.realeax:=$7147
|
||||||
@ -1059,10 +1057,10 @@ begin
|
|||||||
Buffers:=' '+#0;
|
Buffers:=' '+#0;
|
||||||
syscopytodos(longint(RootName),strlen(RootName)+1);
|
syscopytodos(longint(RootName),strlen(RootName)+1);
|
||||||
regs.realeax:=$71a0;
|
regs.realeax:=$71a0;
|
||||||
regs.reales:=tb_selector;
|
regs.reales:=tb_segment;
|
||||||
regs.realedi:=tb_offset;
|
regs.realedi:=tb_offset;
|
||||||
regs.realecx:=strlen(Buffers)+1;
|
regs.realecx:=strlen(Buffers)+1;
|
||||||
regs.realds:=tb_selector;
|
regs.realds:=tb_segment;
|
||||||
regs.realedx:=tb_offset;
|
regs.realedx:=tb_offset;
|
||||||
sysrealintr($21,regs);
|
sysrealintr($21,regs);
|
||||||
syscopyfromdos(longint(Buffers),strlen(Buffers)+1);
|
syscopyfromdos(longint(Buffers),strlen(Buffers)+1);
|
||||||
@ -1090,7 +1088,14 @@ Begin
|
|||||||
End.
|
End.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* new lfn check from mailinglist
|
||||||
* renamed win95 -> LFNSupport
|
* renamed win95 -> LFNSupport
|
||||||
+ tb_selector, tb_offset for easier access to transferbuffer
|
+ tb_selector, tb_offset for easier access to transferbuffer
|
||||||
|
Loading…
Reference in New Issue
Block a user