On Fri, Dec 29, 2017 at 10:30:17PM -0500, Programmingkid wrote:
On Dec 29, 2017, at 8:01 PM, BALATON Zoltan <balaton@eik.bme.hu> wrote:
I've tried to implement it the way I've suggested and came up with the
patch below, but it does not seem to work. I think this is because the
arithmetic in get-msec overflows and does not get the right values. Could
it be it works in SLOF because that runs on 64bit? Or is something needed
to tell Forth to use 64bit values on PPC32? Any ideas?
I continuously printed the tb@ word's value by using this program:
decimal
begin
tb@ . .
cr
again
The tbu value looks right. The tbl value is a problem. When it prints it sometimes prints as a negative value.
You should use U. . printf("or'ed value: %" PRId64 "\n", (uint64_t)((tbu << 32) | tbl)); // should be 8,294,967,296
And that should be (uint64_t)tbu << 32 (note where the cast is done).Segher
Maybe not on topic, but 1000 ms and 1000000 us, return the correct time on SLOF.
I would think this is related to having the correct timebase, but maybe I misunderstand how these things work.