
    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;


