/* * File......: SETTIME.PRG * Author....: Glenn Scott * CIS ID....: 71620,1521 * * This is an original work by Glenn Scott and is placed in the * public domain. * * Modification history: * --------------------- * * Rev 1.3 15 Aug 1991 23:06:08 GLENN * Forest Belt proofread/edited/cleaned up doc * * Rev 1.2 14 Jun 1991 19:53:00 GLENN * Minor edit to file header * * Rev 1.1 12 Jun 1991 02:34:58 GLENN * Documentation mods: change documented return value form "n" to "l" in * accordance with the new return value from ft_int86(). * * Rev 1.0 01 Apr 1991 01:02:16 GLENN * Nanforum Toolkit * */ /* $DOC$ * $FUNCNAME$ * FT_SETTIME() * $CATEGORY$ * DOS/BIOS * $ONELINER$ * Set the DOS system time * $SYNTAX$ * FT_SETTIME( ) -> * $ARGUMENTS$ * is a string in the form that you want to set * the current DOS system time to. * * Use 24-hour time. It is up to you to send in a valid time. If * DOS doesn't think it is valid, it won't reset the time anyway. * $RETURNS$ * is simply the result of FT_INT86(), passed back * to your program. * * $DESCRIPTION$ * FT_SETTIME() uses NANFOR.LIB's FT_INT86() function to invoke * the DOS Set Time service (Interrupt 33, service 45). * * $EXAMPLES$ * * The following program takes a time string from the command line and sets * the DOS system time: * * FUNCTION main( cTime ) * * cTime := iif( cTime == nil, time(), cTime ) * QOut( "Setting time to: " + cTime + "... " ) * FT_SETTIME( cTime ) * Qout( "Time is now: " + time() ) * * RETURN ( nil ) * * $END$ */ #include "ftint86.ch" #define DOS 33 #define SETTIME 45 #define SECS( ts ) ( val( substr( ts, 7 ) ) ) #define HRS( ts ) ( val( substr( ts, 1, 2 ) ) ) #define MINS( ts ) ( val( substr( ts, 4, 2 ) ) ) #ifdef FT_TEST FUNCTION MAIN( cTime ) cTime := iif( cTime == nil, time(), cTime ) QOut( "Setting time to: " + cTime + "... " ) FT_SETTIME( cTime ) Qout( "Time is now: " + time() ) return ( nil ) #endif function FT_SETTIME( cTime ) local aRegs[ INT86_MAX_REGS ] cTime := iif( cTime == nil, time(), cTime ) // -------- High Byte ------ ----- Low Byte ------- aRegs[ AX ] = SETTIME * ( 2 ^ 8 ) aRegs[ CX ] = HRS( cTime ) * ( 2 ^ 8 ) + MINS( cTime ) aRegs[ DX ] = SECS( cTime ) * ( 2 ^ 8 ) return( FT_INT86( DOS, aRegs ) )