aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2015-11-10 21:30:20 -0500
committerFranklin Wei <git@fwei.tk>2015-11-10 21:30:20 -0500
commitdc371f18db2fe07fd0be9e096666fbe9d07c8817 (patch)
tree8341b457e8bbe56a052dd3836dff915c6198c24d /src
parente80a3b45ae14ecdf6b222031aa3f01de9ecdb55e (diff)
downloadducky-dc371f18db2fe07fd0be9e096666fbe9d07c8817.zip
ducky-dc371f18db2fe07fd0be9e096666fbe9d07c8817.tar.gz
ducky-dc371f18db2fe07fd0be9e096666fbe9d07c8817.tar.bz2
ducky-dc371f18db2fe07fd0be9e096666fbe9d07c8817.tar.xz
fix repeat
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) = {