mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-11 20:26:00 +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.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
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user