Sent: Thursday, May 29, 2003 11:18 PM
Subject: Re: [ql-users] QL S*Basic : Time wait routine.

Methinks you need one of Simon Goodwin's timers out of DIY Toolkit - if I can find them, I will send them across direct....

Any other solutions??
 
I would like a copy too.  I have been investigating a problem with the FT_BAS program used to set the timing in Qlay & QL2K with regard to which I have written to Jimmy as follows:

Running FT_BAS over 300sec to set the value for "Vitesse" have helped for my fast (Athlon 1000) machine running Windows ME but there is still considerable variation in the "Vitesse" figure for my Pentium 166 running Windows 95.  This, I am sure, occurs in part because there is no consistency in the initial value of "t" which may be read at the beginning of a clock second or close to the end when it is just about to increment, i.e. almost a second later, which means that PAUSE d*50 (3000) can appear to vary from 59 to 60 seconds.
 
This problem can be demonstrated with the following program which counts the number of zeros which can be printed before the clock moves on.
 
100 WMON
110 REPeat loop
120    t=DATE
130    FOR n=1 TO 100000
140       d=DATE-t
150       IF d>0 THEN EXIT n
160       PRINT d;
170    END FOR n
180    PRINT#2,n
190    PAUSE RND(50)
200 END REPeat loop
 
You will see that it varies a lot.
 
I am currently working on a version of FT_BAS which will overcome this problem. This only really makes a difference for slower machines but would enable faster ones to be set more accurately too.  I seem to recall that there is a system variable that increments every 20milliseconds (1/50th second) and using this would therefore be more accurate, but for the moment I can't remember details.

This is FT_BAS for the benefit of those not using Qlay or QL2K:
 
100 CLS
110 d=60
120 PRINT 'Wait ';d;' seconds for -f test'
130 t=DATE
140 PAUSE d*50
150 e=DATE-t
160 PRINT 'Delay should be ';d;' seconds'
170 PRINT 'Actual delay is ';e;' seconds'
180 IF e-d>1:PRINT 'Divide -f by ';e/d
190 IF d-e>1:PRINT 'Multiply -f with ';d/e
200 IF ABS(d-e)<2:PRINT 'Current value of -f is about right'
It is required to set a machine specific value (-f, in "Vitesse") to make the time-dependant functions of the emulator accurate.
 
Regards
 
Stephen
 

---
--
Outgoing mail is probably Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.484 / Virus Database: 282 - Release Date: 28/05/2003

Reply via email to