diff --git a/rtl/dos/dos.pp b/rtl/dos/dos.pp index 393d787f7a..274985547a 100644 --- a/rtl/dos/dos.pp +++ b/rtl/dos/dos.pp @@ -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 } + diff --git a/rtl/dos/go32.pp b/rtl/dos/go32.pp index 2a1aea1253..907e7739ff 100644 --- a/rtl/dos/go32.pp +++ b/rtl/dos/go32.pp @@ -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 diff --git a/rtl/dos/go32v2/system.pp b/rtl/dos/go32v2/system.pp index 33ad1b9524..22da962d04 100644 --- a/rtl/dos/go32v2/system.pp +++ b/rtl/dos/go32v2/system.pp @@ -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