Press enter to see results or esc to cancel.

System Procedures GetDir, ChDir, MkDir and RmDir

This function processes system procedure GetDir.

Function Proc_GetDir: Word; Far;
Var DriveExpression, DirExpression: Texpression;
begin
  ExpectTokenAndGetNext (Token_LeftParenthesis);
  With DriveExpression do
    begin
      ExpectIntegerExpression;
      CheckOrdinalRange (Ptr (SystemUnitSegment, Byte_TypeOffset));
      PushExpression
    end;
  ExpectTokenAndGetNext (Token_Comma);
  DirExpression.ExpectStringVariable;
  DirExpression.PushArrayPointerAndHighestIndex;
  ExpectTokenAndGetNext (Token_RightParenthesis);
  StoreCode_icGoSub (DriveExpression.IntermediateCodeOffset);
  StoreCode_icGoSub (DirExpression.IntermediateCodeOffset);
  GenerateInstruction_CALL_FAR (SysProc_DirGet);
  Proc_GetDir := EndSubroutine;
end;

This function processes system procedures ChDir, MkDir and RmDir.

Function Proc_ChDir_MkDir_RmDir: Word; Far;
Var DirExpression: Texpression;
begin
  ExpectTokenAndGetNext (Token_LeftParenthesis);
  DirExpression.ExpectAndStoreStringAndPushPointer;
  ExpectTokenAndGetNext (Token_RightParenthesis);
  DirExpression.Calculate;
  GenerateInstruction_CALL_FAR (ProcParameter);
  GenerateIOErrorCheckingCode;
  Proc_ChDir_MkDir_RmDir := EndSubroutine;
end;