home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / progmisc / nfsrc21.zip / SETTIME.PRG < prev    next >
Text File  |  1991-08-16  |  3KB  |  103 lines

  1. /*
  2.  * File......: SETTIME.PRG
  3.  * Author....: Glenn Scott
  4.  * CIS ID....: 71620,1521
  5.  * Date......: $Date:   15 Aug 1991 23:06:08  $
  6.  * Revision..: $Revision:   1.3  $
  7.  * Log file..: $Logfile:   E:/nanfor/src/settime.prv  $
  8.  * 
  9.  * This is an original work by Glenn Scott and is placed in the
  10.  * public domain.
  11.  *
  12.  * Modification history:
  13.  * ---------------------
  14.  *
  15.  * $Log:   E:/nanfor/src/settime.prv  $
  16.  * 
  17.  *    Rev 1.3   15 Aug 1991 23:06:08   GLENN
  18.  * Forest Belt proofread/edited/cleaned up doc
  19.  * 
  20.  *    Rev 1.2   14 Jun 1991 19:53:00   GLENN
  21.  * Minor edit to file header
  22.  * 
  23.  *    Rev 1.1   12 Jun 1991 02:34:58   GLENN
  24.  * Documentation mods: change documented return value form "n" to "l" in 
  25.  * accordance with the new return value from ft_int86().
  26.  * 
  27.  *    Rev 1.0   01 Apr 1991 01:02:16   GLENN
  28.  * Nanforum Toolkit
  29.  *
  30.  */
  31.  
  32.  
  33. /*  $DOC$
  34.  *  $FUNCNAME$
  35.  *     FT_SETTIME()
  36.  *  $CATEGORY$
  37.  *     DOS/BIOS
  38.  *  $ONELINER$
  39.  *     Set the DOS system time
  40.  *  $SYNTAX$
  41.  *     FT_SETTIME( <cTime> ) -> <lResult>
  42.  *  $ARGUMENTS$
  43.  *     <cTime> is a string in the form <hh:mm:ss> that you want to set
  44.  *     the current DOS system time to.
  45.  *
  46.  *     Use 24-hour time.  It is up to you to send in a valid time.  If
  47.  *     DOS doesn't think it is valid, it won't reset the time anyway.
  48.  *  $RETURNS$
  49.  *     <lResult> is simply the result of FT_INT86(), passed back
  50.  *     to your program.  
  51.  *
  52.  *  $DESCRIPTION$
  53.  *     FT_SETTIME() uses NANFOR.LIB's FT_INT86() function to invoke
  54.  *     the DOS Set Time service (Interrupt 33, service 45).  
  55.  *     
  56.  *  $EXAMPLES$
  57.  *
  58.  *  The following program takes a time string from the command line and sets
  59.  *  the DOS system time:
  60.  *
  61.  *   FUNCTION main( cTime )
  62.  *
  63.  *      cTime := iif( cTime == nil, time(), cTime )
  64.  *      QOut( "Setting time to: " + cTime  + "... " )
  65.  *      FT_SETTIME( cTime )
  66.  *      Qout( "Time is now: " + time() )
  67.  *
  68.  *   RETURN ( nil )
  69.  *
  70.  *  $END$
  71.  */
  72.  
  73. #include "FTINT86.CH"
  74.  
  75. #define DOS        33
  76. #define SETTIME    45
  77.  
  78. #define SECS( ts )  ( val( substr( ts, 7    ) ) )
  79. #define HRS( ts )   ( val( substr( ts, 1, 2 ) ) )
  80. #define MINS( ts )  ( val( substr( ts, 4, 2 ) ) )
  81.  
  82. #ifdef FT_TEST
  83.   FUNCTION MAIN( cTime )
  84.     cTime := iif( cTime == nil, time(), cTime )
  85.     QOut( "Setting time to: " + cTime  + "... " )
  86.     FT_SETTIME( cTime )
  87.     Qout( "Time is now: " + time() )
  88.   return ( nil )
  89. #endif
  90.  
  91. function FT_SETTIME( cTime )
  92.   local aRegs[ INT86_MAX_REGS ]
  93.  
  94.   cTime := iif( cTime == nil, time(), cTime )
  95.  
  96.   //            -------- High Byte ------      ----- Low Byte -------
  97.  
  98.   aRegs[ AX ] = SETTIME       * ( 2 ^ 8 )
  99.   aRegs[ CX ] = HRS( cTime  ) * ( 2 ^ 8 )   +    MINS( cTime )
  100.   aRegs[ DX ] = SECS( cTime ) * ( 2 ^ 8 )
  101.  
  102. return( FT_INT86( DOS, aRegs ) )
  103.