diff options
| author | Franklin Wei <git@fwei.tk> | 2015-11-10 21:30:20 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2015-11-10 21:30:20 -0500 |
| commit | dc371f18db2fe07fd0be9e096666fbe9d07c8817 (patch) | |
| tree | 8341b457e8bbe56a052dd3836dff915c6198c24d | |
| parent | e80a3b45ae14ecdf6b222031aa3f01de9ecdb55e (diff) | |
| download | ducky-dc371f18db2fe07fd0be9e096666fbe9d07c8817.zip ducky-dc371f18db2fe07fd0be9e096666fbe9d07c8817.tar.gz ducky-dc371f18db2fe07fd0be9e096666fbe9d07c8817.tar.bz2 ducky-dc371f18db2fe07fd0be9e096666fbe9d07c8817.tar.xz | |
fix repeat
| -rw-r--r-- | src/vm.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -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) = { |