You could use function pointers as a sort of CallBack feature that can simulate multi threading...
Type TTimer Field BoundObject:Object Field Clock Field Interval Field NextTick Field Enabled = True Field TickCallback(Sender:TTimer) Function Create:TTimer(Interval, BoundObject:Object = null) Local o:TTimer = New TTimer o.BoundObject = BoundObject o.Interval = Interval o.Clock = MilliSecs() o.NextTick = o.Clock + o.Interval Return o End Function Method Update() If Enabled Then If MilliSecs() > NextTick Then Clock = MilliSecs() NextTick = Clock + Interval If TickCallback <> Null Then TickCallback(Self) End If End If End Method End Type Function TimerCallback(Sender:TTimer) Print "Tick!" End Function Local T:TTimer = TTimer.Create(1000) T.TickCallback = TimerCallback While Not Keyhit(Key_Escape) Cls T.Update() Flip Flushmem Wend