         [ 2drop ] if
     ] if-zero ;
 
-: (run-loop) ( loop -- )
-    dup running?>>
-    [ [ MAX-FRAMES-TO-SKIP ?tick ] [ redraw ] [ yield (run-loop) ] tri ]
-    [ drop ] if ;
-
-: run-loop ( loop -- )
-    dup game-loop
-    [ [ (run-loop) ] [ game-loop-error ] recover ]
-    with-variable ;
-
 : benchmark-micros ( loop -- micros )
     system-micros swap benchmark-time>> - ;
 

    drop ;

: <game-loop*> ( tick-interval-micros tick-delegate draw-delegate -- loop )
    system-micros f f 0 0 system-micros 0 0
    game-loop boa ;

: <game-loop> ( tick-interval-micros delegate -- loop )

    { frame-number integer }
    { benchmark-time integer }
    { benchmark-tick-number integer }
    { benchmark-frame-number integer }
    alarm ;

GENERIC: tick* ( delegate -- )
GENERIC: draw* ( tick-slice delegate -- )
