タイマーを使ってみるのはいかがでしょうか。優先順位が低いので大分適当なタイマーですが大雑把な挙動なら満足できるかと思います。
具体的な利点や仕組みはちょくとさんのサイトをご覧ください。
http://chokuto.ifdef.jp/advanced/usertimer.html
以下は一例
#include "user32.as"
#include "hpi_exprogctrl.hsp"
#define global TIMER_ID_A 10
#define global TIMER_ID_B 20
create_a
stop
#deffunc create_a
screen 0, 320, 240, 0, 0, 0
title "ルーチンA用のウィンドウです"
settimer hwnd, TIMER_ID_A, 700, deffptr(call_a)
Aの値 = 1
mes "Aの値="+Aの値
return
#deffunc call_a
Aの値 *= 2
gsel 0
redraw 0
color 255, 255, 255
boxf 0, 0, 127, 511
color
pos 0, 0
mes "Aの値="+Aの値
redraw 1
if (Aの値>=10) & (フラグ=0) : create_b : フラグ+
return
#deffunc create_b
screen 1, 320, 240, 0, 320, 0
title "ルーチンB用のウィンドウです"
settimer hwnd, TIMER_ID_B, 1400, deffptr(call_b)
Bの値 = 1
mes "Bの値="+Bの値
return
#deffunc call_b
Bの値 *= 7
gsel 1
redraw 0
color 255, 255, 255
boxf 0, 0, 127, 31
color
pos 0, 0
mes "Bの値="+Bの値
redraw 1
if Bの値>=10000 {
mes "ルーチンBの値が10000を超えました"
title "ルーチンBを終了します"
killtimer hwnd, TIMER_ID_B
}
return