aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/vm.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/vm.c b/src/vm.c
index a1cd7f2..e4acc04 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -111,6 +111,7 @@ static void init_globals(void)
current_line = 0;
stack_pointer = 0;
want_quit = false;
+ repeats_left = 0;
}
static inline void push(imm_t n)
@@ -432,6 +433,19 @@ void inc_line_pointer(void)
++current_line;
vars[0].val = current_line;
+ if(repeats_left > 0)
+ {
+ --repeats_left;
+ if(repeats_left)
+ jump(repeat_line);
+ else
+ {
+ if(current_line + 2 > num_lines)
+ want_quit = true;
+ else
+ jump(current_line + 2);
+ }
+ }
}
static void (*instr_tab[0x100])(void) = {