[OpenBIOS] MS word

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Mon Apr 30 14:23:12 CEST 2012


On 29/04/12 02:34, Tarl Neustaedter wrote:

>> The MS word is suppose to wait a specified amount of milliseconds
>> before allowing a program to continue. Yet when a simple line of code
>> like this is run: "1000 MS ." hi" ", the message is printed
>> immediately. This happens no matter how high the top value on the
>> stack is. Is this a bug or am I missing something?
>
> Looks like a bug. A common one, since there is no generally accepted way
> of measuring delay inside the Forth engine - we seem to always hand-code
> a platform-specific method in Openboot (these days we use the "stick"
> register to measure real time, and have a property to correlate the
> counter to real nanoseconds).
>
> We've several times had bugs where under some conditions, the
> measurement of real time differed from virtual time by orders of
> magnitude - both ways.

It's even worse than that in OpenBIOS:

0 value dummy-msecs

: get-msecs    ( -- n )
   dummy-msecs dup 1+ to dummy-msecs
   ;

: ms    ( n -- )
   get-msecs +
   begin dup get-msecs < until
   drop
   ;

Effectively we just increment the counter every time we call get-msecs, 
and then just exit after n iterations. If you want something near a 
concept of real time, I guess you'd have to implement get-msecs for your 
platform by reading a hardware counter/timer of some description.


HTH,

Mark.



More information about the OpenBIOS mailing list