home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
bpos2-v2.zip
/
RTL-FIX1.ZIP
/
OS2F01.TXT
< prev
next >
Wrap
Text File
|
1993-11-30
|
4KB
|
126 lines
These files contain all known fixes as of 11/29/93.
As prepared by CHUCK TODD 70531.1475
This zip contains the following files:
FCTL.ASM ; runtime FILE access Routines.
TCTL.ASM ; runtime TEXT access routines.
Os2F01.txt ; this file.
OS216.pas ; Sample Unit to access OS2 16bit dll calls.
You will need then "c'T" patch available from CIS:GERNET LIB 7 L11_1.zip.
You will also need then BP 7.0 system (with TASM).
Optionally you can download from CIS:OS2DF1 LIB1 PRCP.ZIP (411k) this is an
.INF file that contains a reference for the OS2 1.3 compatible 16bit calls.
Also you will want download CIS:OS2DF1 LIB 7 IMPLIS.zip (44k) this is a
program to generate a listing of the INDEXes for the DOSCALLS.LIB file.
Using the DOSCALLS.LIB, you cannot import the functions By NAME, only by
INDEX.
These are a patch to the BORLAND PASCAL 7.0 Runtime, These patches
are to be installed ontop of the patches created by 'c'T' magazine.
1: Replace these FCTL,TCTL files with the ones in the 'c'T' patch.
2: Then install the fixes to the System.Pas, Dos.pas.
3: run cd os2rtl, run MAKE -B -fmakefile { this will recreate the OS2.TPL
4: copy the OS2.TPL file to you \bp\bin directory.
5: Recompile the DOS.pas and all Pascal files.
Both of these ASM files have been modifed to allow FILEREC,TEXTREC
variables to be on the HEAP.
Also, I have change the DEFAULT value of FILEMODE to
OPEN_ACCESS_DENYREADWRITE | READWRITE. {$0012}
it was OPEN_ACCESS_DENYNONE | READONLY. {$0040}
The problem with opening a read only file resulted because the FILE open
procedures always specified READWRITE access during the attempt to open
the file. This resulted in either a 12 invalid mode or a TRAP 'D' error.
THIS is a list of the changes to SYSTEM.PAS.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FileMode : Word = $0012;{ OPEN_SHARE_DENYREADWRITE,
OPEN_ACCESS_READWRITE}
These Changes are to DOS.PAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
After Implementation directive.
OS2DateTime = Record
Hours,
Minutes,
Seconds,
Hundredths,
Day,
Month : Byte;
Year : Word;
>>>>>> TimeZone : Integer; { Was Short Int}
WeekDay : Byte;
End;
****************************************
Procedure FindFirst(Path : PathStr;Attr : Word;Var S : SearchRec);
Var
FF : OS2FileFindBuf;
N : String;
Count : Word;
Type
PWord = ^Word;
Begin
N := Path + #0;
Count := 1;
PWord(@S)^ := $FFFF; { HDIR_CREATE }
DosError := DosFindFirst(@N[1],PWord(@S)^,Attr,FF,SizeOf(FF),Count,0);
If DosError = 0 then
Begin
S.Attr := FF.AttrFile;
S.Time := (LongInt(FF.fDateLastWrite) Shl 16) + FF.fTimeLastWrite;
>>>> S.Size := FF.cbFile;
Move(FF.cchName,S.Name,SizeOf(S.Name))
End;
End;
Procedure FindNext(Var S : SearchRec);
Var
FF : OS2FileFindBuf;
Count : Word;
Type
PWord = ^Word;
Begin
Count := 1;
DosError := DosFindNext(PWord(@S)^,FF,SizeOf(FF),Count);
If DosError = 0 then
Begin
S.Attr := FF.AttrFile;
S.Time := (LongInt(FF.fDateLastWrite) Shl 16) + FF.fTimeLastWrite;
>>>> S.Size := FF.cbFile;
Move(FF.cchName,S.Name,SizeOf(S.Name))
End
else
DosFindClose(PWord(@S)^);
End;
*******************
Procedure Exec(Path : PathStr;ComLine : ComStr);
Var
b : Array[0..255] of Char;
>> c : string;
Begin
>> if (length(comline)>0)and(comline[1] <> ' ') then
>> c := path + #0 +' '+comline+#0+#0
>> else c := path + #0+comline +#0+#0;
{
Path := Path + #0;
ComLine := ComLine + #0#0;
DosError := DosExecPgm(b,256,ExecFlags,@ComLine[1],Ptr(EnvironmentSeg,0),ExecResult,@Path[1]);
}
>> DosError := DosExecPgm(b,256,ExecFlags,@c[1],Ptr(EnvironmentSeg,0),ExecResult,@c[1]);
End;