home *** CD-ROM | disk | FTP | other *** search
- S0 = "CdT" ; values are: EST, CST, MST, PST, EDT, CDT, MDT, PDT
- ;
- ; ----- COM-AND set DOS clock
- ;
- ; This script dials the US Naval Observatory and sets the DOS clock
- ; with the time obtained. NOTE: If you change this script, please
- ; do not connect to the Observatory longer than absolutely required.
- ; Courteous usage will most likely retain this service.
- ;
- ; S0 should be set with your timezone (EST, CST, MST, or PST)... if
- ; left blank, this script will look for an EBL variable &ZONE... if
- ; that is not found, this script will ask for it.
- ;
- ; Note that this script, as supplied, only invokes DOS's TIME command
- ; to set the clock. If you have a hardware clock, the TIME command of
- ; DOS will not necessarily change the hardware clock (and thus last
- ; accross a power off).
- ;
- ; The value in S0, if supplied, establishes the timezone. You must
- ; manually decide (for now) if daylight savings is used in your area.
- ;
- ; ------------------------------------------------------------
- ; Script: John Poindexter, commenced 2/89
- ; Modified for scheduler 4/93
- ; ------------------------------------------------------------
- ;
- ; If the value in S0 is null, look for EBL's &ZONE
- ; .. This script does not require EBL if the above is set.
- ;
- LEGEND "SETTIME v1.0"
- IF NULL S0 ; If value not set above
- EBL S0 &ZONE ; .. Ask EBL if it knows the zone
- ELSE ; If set above
- SET SUCCESS ON ; .. Fake EBL good completion
- ENDIF
- ;
- ; If no EBL and no value, open a window and ask
- ;
- IF FAILED ; No zone in script, and no EBL
- WOPEN 10,1, 13,77 (contrast) Exit
- ATSAY 11, 3 (contrast) "Enter your timezone (EST, EDT, CST, CDT, ...)"
- ATSAY 12, 3 (contrast) "->"
- ATSAY 13,26 (contrast) " Press ESC to exit"
- ATGET 12,6 (contrast) 3 S0
- WCLOSE ; Restore screen under
- IF NULL S0 GOTO Exit ; Null entry terminates script
- ENDIF
- ;
- ; Using the Zone value, look up the hour offset
- ;
- S1 = "E5C6M7P8" ; Time zone letters and time difference from GMT.
- FIND S1 S0(0:0) N0 ; Case insensitive table lookup
- IF NOT FOUND ; Unknown zone character
- MESSAGE "^M^JYou need to include your time zone in S1 in script.^M^J"
- GOTO EXIT
- ENDIF
- ;
- ; COmpute the hour offset (allowing for DAYLIGHT Savings)
- ;
- S1 = S1(N0+1:N0+1) ; Take hour offset from table
- ATOI S1 N0 ; COnvert to binary (w/o error message)
- IF FIND S0 "D" ; Look for daylight savings time
- N0 = N0 - 1 ; Adjust for daylight savings
- ENDIF
- ;
- ; Set-up to dial the Naval Observatory
- ;
- SET FLAG(0) OFF ; Flag indicates wrap to previous day
- ON ESCAPE GOSUB UNAVAILABLE
-
- IF FIND "_DDOVER" "OFF" SET BAUD 1200 ; Set parms for USNO (1200...)
- SET PARITY NONE ; .. (n,8,1)
- SET DATA 8 ; ..
- SET STOP 1 ; ..
- SET MDEL 30 ; Slow it down
- ;
- ; Dial the Naval Observatory
- ;
- N99 = 1
- LOOP:
- LEGEND "SETTIME v1.0 dialing attempt #"*N99
- TRANSMIT "_MESCa"&"!"; Wake up the modem
- PAUSE 1
- TRANSMIT "_DPREf"&"1-202-653-0351"&"_DSUFf"&"" ; Dialing command
-
- WAITFOR "_MCONn"&"" 45 ; Remember to trim trailing blanks
- IF NOT WAITFOR ; DIAL failed
- TRANSMIT "_MESCa"&"!"
- TRANSMIT "_MHANg"&""
- INC N99 ; COunt the try
- IF N99 GT 10 GOTO Unavailable
- GOTO LOOP
- ENDIF
- ;
- ; Read the UTC
- ;
- GET_TIME:
- WAITFOR "*" 30
- RGET S0
- RGET S0
- MESSAGE S0
- IF NOT FIND S0(17:19) "UTC"
- GOTO GET_TIME
- ENDIF
- ;
- ; Extract the time from the message
- ;
- ATOI S0(10:11) N1 ; Extract hour #
- IF LT N1 N0 ; Test for negative after adjust
- N1 = N1 + 24 ; Ensure positive hour number after adjust
- SET FLAG(0) ON ; .. and flag the fact
- ENDIF
- ;
- ; And give the TIME to DOS
- ;
- TIME S3 1 ; Save current clock
- N1 = N1 - N0 ; Adjust for timezone
- S1 = "TIME "*N1&":"&S0(12:13)&":"&S0(14:15)
- DOS S1 ; Tell DOS to set the clock
- MESSAGE S1 ; Display on screen too
- CLOG "* SETTIME clock change from:" *S3*" to "*S1(5:79)
- HANGUP
- GOTO Exit
- ;
- ; Failed DIAL
- ;
- UNAVAILABLE:
- HANGUP
- MESSAGE "^M^JUnable to reach the Naval Observatory.^M^J"
- GOTO Exit
- ;
- ; General exit (modem not connected yet)
- ;
- EXIT:
- IF ISSC "$$$SCHED" EXECUTE "$$$SCHED"
- IF FCALLED FRETURN ; Return if called
- EXIT