home *** CD-ROM | disk | FTP | other *** search
- \ TIMER.SEQ Time measurment words for PF.
-
- : GETDATE ( --- Y MD ) 0 0 42 OS2 DROP ;
-
- : SETDATE ( NM Y --- ) SWAP 43 OS2 NIP NIP 255 =
- IF CR ." Invalid DATE " THEN ;
-
- : GETTIME ( --- HM Sh ) 0 0 44 OS2 DROP ;
-
- : SETTIME ( HM Sh --- ) SWAP 45 OS2 NIP NIP 255 =
- IF CR ." Invalid TIME " THEN ;
-
- : .## ( N1 --- ) \ Print two low digits of n1.
- 0 <# # # #> TYPE ;
-
- : <.HM> ( D1 --- N1 )
- SWAP 0 256 UM/MOD .## ." :" .## ;
-
- : <.SH> ( N1 --- )
- ." :" 0 256 UM/MOD .## ." ." .## ;
-
- : <.TIME> BASE @ >R DECIMAL SWAP 0 256 UM/MOD .## ." :" .##
- ." :" 0 256 UM/MOD .## ." ." .##
- R> BASE ! SPACE ;
-
- : .TIME GETTIME <.TIME> ;
-
- : <.DATE> ( D1 --- )
- BASE @ >R DECIMAL
- 0 256 UM/MOD .## ." /" .## ." /" 1900 - .##
- R> BASE ! ;
-
- : .DATE GETDATE <.DATE> ;
-
- VARIABLE STIME 0 ,
- VARIABLE TTIME 0 ,
-
- : T>B 0 256 UM/MOD 100 * + SWAP 0 SWAP
- 0 256 UM/MOD >R 6000 *D D+ R> 1000 * 360 *D D+ ;
-
- : B>T 0 100 UM/MOD >R 100 UM/MOD SWAP TTIME C!
- R> 60 UM/MOD SWAP TTIME 1+ C!
- 60 /MOD TTIME 3 + C!
- TTIME 2+ C! ;
-
- : TIME-RESET GETTIME T>B STIME 2! ; \ RESET TIMER
-
- : TIME-ELAPSED GETTIME T>B STIME 2@ D- ; ( - D1 ) \ BINARY
-
- : B>SEC ( D1 - N1 ) \ CONVERT DOUBLE BINARY TO
- 0 100 UM/MOD DROP \ SECONDS, OVERFLOW AT 18 HRS
- 100 UM/MOD NIP ;
-
- : .ELAPSED CR ." Elapsed time = " TIME-ELAPSED B>T TTIME 2@ <.TIME> ;
-
- : TIMER TIME-RESET INTERPRET .ELAPSED ;
-
- : SEC-ELAPSED ( --- N1 ) \ RETURN ELAPSED SECONDS < 18 HRS
- TIME-ELAPSED B>SEC ; ( -- N1 )
-
- : 10TH-ELAPSED ( --- N1 )
- TIME-ELAPSED 0 100 UM/MOD DROP 10 UM/MOD NIP ;
-
- DEFER PAUSE-FUNC ' NOOP IS PAUSE-FUNC
-
- : SECONDS ( N1 --- ) \ PAUSE FOR N1 SECONDS
- STIME 2@ >R >R >R TIME-RESET
- BEGIN PAUSE PAUSE-FUNC
- R@ SEC-ELAPSED > 0=
- UNTIL R> DROP R> R> STIME 2! ;
-
- : TENTHS ( N1 --- ) \ PAUSE FOR N1 SECONDS
- STIME 2@ >R >R >R TIME-RESET
- BEGIN PAUSE PAUSE-FUNC
- R@ 10TH-ELAPSED > 0=
- UNTIL R> DROP R> R> STIME 2! ;
-
- : MINUTES ( N1 --- ) \ PAUSE FOR N1 MINUTES
- 0 MAX 0 ?DO 60 SECONDS LOOP ;
-
- : HOURS ( N1 --- ) \ PAUSE FOR N1 HOURS
- 0 MAX 0 ?DO 60 MINUTES LOOP ;
-