From dc371f18db2fe07fd0be9e096666fbe9d07c8817 Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Tue, 10 Nov 2015 21:30:20 -0500 Subject: fix repeat --- src/vm.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') 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) = { -- cgit v1.1