home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / PASCAL / PASTUT34 / SYSDOS.TXT < prev    next >
Text File  |  1993-02-18  |  6KB  |  141 lines

  1.                         THE SYSTEM AND DOS UNITS.
  2.                         ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3.  
  4. The Microsoft Disk Operating System (MS-DOS) is a group of programs that
  5. controls the running and operation of the computer. It provides an
  6. interface between the operator and the computer. Most of the MS-DOS
  7. functions are actually executed from low-level language code using the
  8. interrupt 21H with preset values in the AX register (see the notes on
  9. Registers for further details). Directory and file manipulation is
  10. fundamentally achieved in this way, as is date and time manipulation.
  11.  
  12. Whilst it is possible to use interrupt 21H via the procedure MSDOS
  13. which is available in the DOS unit, most of the DOS functions are
  14. to be found as procedures and functions in either the System unit or
  15. the DOS unit, so avoiding the relative complexity of interrupt calls.
  16.  
  17. The System Unit.
  18. ════════════════
  19. This unit implements low-level, run-time routines for file I/O, string
  20. handling, arithmetic functions, dynamic memory management, etc.
  21. It is the one exception to declaration in the Uses clause, as it is
  22. always automatically included.
  23.  
  24. File I/O procedures include Reset, which opens an existing file.
  25.  
  26. File I/O functions include IOResult, which returns an integer value of 0
  27.                    if the operation has been successful or non-zero if not.
  28.  
  29. String procedures include Str, which converts a numeric value to its
  30.                   string representation.
  31.  
  32. String functions include Length, which returns the dynamic length of a
  33.                  string.
  34.  
  35. The I/O procedures also include directory manipulation as follows:
  36.  
  37.     ChDir     Changes the current directory.
  38.     GetDir    Returns the current directory of a specified drive.
  39.     MkDir     Creates a subdirectory.
  40.     RmDir     Removes an empty subdirectory.
  41.  
  42. All these procedure and functions are documented in the Library Reference,
  43. which should be consulted to find the parameters required and in the case
  44. of functions, the return type.
  45.  
  46. The IOResult function should be used to check the result of these operations.
  47.  
  48. The program DOSOPS.PAS contains examples of the use of the directory calls:
  49.  
  50.   GetDir(0,dir);       {I/O procedures from System unit - p131 Prog. Guide }
  51.   ....                 {The first parameter is the drive and 0 = current.  }
  52.   ....                 {The second parameter is the current directory name.}
  53.   ChDir('\');          {The directory is changed to that of the parameter. }
  54.   GetDir(0,dir2);
  55.   ....
  56.   ChDir(dir);          {Change back to the original directory given by dir }
  57.   GetDir(0,dir3);      {dir, dir2, dir3 are all string-type variables.     }
  58.  
  59. Whilst the above program has switched to the root directory, the procedure
  60. EXEC from the DOS unit is used to list selected files (see below).
  61.  
  62.  
  63. The DOS Unit.
  64. ═════════════
  65. The DOS unit contains over 30 procedures and functions for date and time
  66. manipulation, interrupt support, file and process handling.
  67.  
  68. The DOS unit must be declared in the uses clause before it is used.
  69.  
  70. The function DosExitCode returns the exit code of a subprocess, with
  71.    0 indicating normal successful termination
  72.    1 if terminated by Ctrl-C
  73.    2 if due to a device error
  74.    3 if terminated by the Keep procedure, used by Terminate and Stay
  75.      Resident (TSR) programs.
  76.  
  77. The date and time procedures include GetDate, SetDate, GetTime and
  78. SetTime, which are equivalent to the DOS interrupt 21H with the AH
  79. register preset to hexadecimal values of 2A, 2B, 2C and 2D respectively.
  80.  
  81. The interrupt support procedures include Intr, which executes a specific
  82. software interrupt as shown in the example INTRDEMO.PAS for the BIOS
  83. function for checking the display mode.
  84.   ....
  85.   Regs.AX := $0F00;         { Sets AH = 0F for Get Display Mode function }
  86.   Intr($10,Regs);           { Interrupt 10 for ROM BIOS Video Services }
  87.   ....                      { The $ sign indicates a hexadecimal value }
  88.                             { Regs of type Registers is a predeclared  }
  89.                             { record of all the registers.             }
  90.  
  91. This Intr procedure can also be used for DOS functions (interrupt 21H),
  92. although special provision is made by the procedure MsDos for executing
  93. a DOS function call.
  94.  
  95. The process-handling procedures include Exec, which executes a specified
  96. program with a specified command line. This means that the parent program
  97. can load another program, called the child, from a storage device and then
  98. execute it. When the child program is concluded , the parent program
  99. regains control and continues with its next statement.
  100.  
  101. The Exec procedure require two parameters:
  102.   1. The path, which of course includes the name of the program to be run.
  103.   2. The Command Line, including any parameters, switches and filenames
  104.  
  105. The Exec procedure is equivalent to the interrupt 21H with the AH register
  106. preset to 4B and this function destroys the contents of all registers
  107. except the Code Segment (CS) and the Instruction Pointer (IP). Thus the
  108. parent program must push the contents of the registers onto the Stack
  109. before calling the child program and then retrieved them afterwards.
  110. The procedure SwapVectors is provided for this purpose, as shown below
  111. in the extract from the program DOSOPS.PAS:
  112.  
  113.    ....
  114.    SwapVectors;         {Process-handling procedure from DOS unit - p146 }
  115.  
  116.    Exec('COMMAND.COM','/C DIR *.SYS');         {Also from DOS unit - p146}
  117.    If DosError <> 0 Then                       {see below}
  118.      Begin
  119.        Writeln('Error loading child program');
  120.        writeln('Dos error #', DosError);
  121.      End;
  122.    SwapVectors;
  123.    ....
  124.  
  125. Note that the /C used in the command line string above is a special
  126. requirement of COMMAND.COM, but not of other applications.
  127.  
  128. Errors are reported in DosError, with DosError = 8 indicating that there
  129. is insufficient memory to load the child program.
  130.  
  131. Further details of the BIOS and DOS functions can be found in the
  132. references:
  133.  
  134.   1. 'Advanced MS-DOS'   by Ray Duncan.  Microsoft Press.
  135.  
  136.   2. 'DOS and BIOS Functions'  Que Quick Reference Series. Que Corporation.
  137.  
  138.  
  139. SYSDOS.TXT
  140. 19.1.93
  141.