TimeGetTimeを使えばWindowsが起動してからの時間がミリ秒単位で返るので、
それを利用するのはどうでしょうか。
#include "winmm.as"
//TimeGetTimeを実行すると、statにWindowsが起動してからの時間がミリ秒単位で入る
min=3 //何分待つか
sec=0 //何秒待つか
w_time=(min*60+sec)*1000 //待ち時間を秒に直したあと、さらに1000をかけてミリ秒に直す
button gosub "開始",*start
repeat
flag=0 //タイマーがONになっているフラグ
repeat
if flag {
TimeGetTime : r=e_time-stat //残り時間
if r<=0 : break
r/=1000 //rを1000で割って「秒」に直す
title strf("残り %02d:%02d",r/60,r\60)
}
await 33 //秒間30ループ
loop
dialog "時間になりました"
loop
*start
TimeGetTime
e_time=stat+w_time //目標となる時間
flag=1
return