Compare commits
2 commits
d1a8792b18
...
e70580785f
Author | SHA1 | Date | |
---|---|---|---|
e70580785f | |||
49895f1b11 |
3 changed files with 8 additions and 8 deletions
|
@ -1,13 +1,13 @@
|
||||||
# Stupid Worm Languag
|
# Stupid Worm Languag
|
||||||
- program space is an arbitrary sized grid
|
- program space is an arbitrary sized grid of bytes
|
||||||
- the worm starts where you place the worm head @
|
- the worm starts as just a head `@`
|
||||||
- as it passes over commands, they get moved to the back of the worm
|
- as it passes over commands, they get moved to the back of the worm
|
||||||
- values get pushed to stack (eaten) when passed over, worm body length increases
|
- values get pushed to stack (eaten) when passed over, worm body length increases
|
||||||
- the program gets rearranged every time the worm executes it
|
- the program gets rearranged every time the worm executes it
|
||||||
|
|
||||||
## commands
|
## commands
|
||||||
```
|
```
|
||||||
+- pop 2 values *, push sum/difference (uses the order they are popped, so `0 -` negates the top of the stack)
|
+- pop 2 values, push sum/difference (uses the order they are popped, so `0-` negates the top of the stack)
|
||||||
><^v change direction
|
><^v change direction
|
||||||
0..9 push number to stack
|
0..9 push number to stack
|
||||||
/\ pop stack, reflect to the side if not zero
|
/\ pop stack, reflect to the side if not zero
|
||||||
|
@ -15,5 +15,6 @@
|
||||||
= duplicate top of stack
|
= duplicate top of stack
|
||||||
! pop and write output as ascii char
|
! pop and write output as ascii char
|
||||||
" pop and write output as number
|
" pop and write output as number
|
||||||
|
_ push a space character
|
||||||
|
all other characters are pushed as-is
|
||||||
```
|
```
|
||||||
* pop when stack is empty yields zero
|
|
||||||
|
|
1
programs/hello_world.worm
Normal file
1
programs/hello_world.worm
Normal file
|
@ -0,0 +1 @@
|
||||||
|
!!!!!!!!!!!!!Hello,_world+1_@<
|
|
@ -225,10 +225,8 @@ impl SandWormInterpreter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
b' ' | 0 => dont_push_instruction = true,
|
b' ' | 0 => dont_push_instruction = true,
|
||||||
other => {
|
b'_' => self.worm_in.push(b' '),
|
||||||
self.worm_in.push(other);
|
other => self.worm_in.push(other),
|
||||||
dont_push_instruction = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if !dont_push_instruction {
|
if !dont_push_instruction {
|
||||||
self.worm_out.insert(0, instruction);
|
self.worm_out.insert(0, instruction);
|
||||||
|
|
Loading…
Reference in a new issue