COBOLD
Specs
COBOLD (also known as YipYap) is an programming language for Kobolds.
COBOLD is primarily used in yipping and yapping.
Syntax
COBOLD programs MUST start with yip yap.
Followed by a list of instructions separated by spaces.
Comments start with owo and continue until
the end of the line.
Execution model
The COBOLD execution model consists of the following items:
- Hold Register
hold- An unsigned 8-bit register used to perform most operations
- Stack Memory
memory - An array of unsigned 8-bit integers that grows as needed, initialized with a single 0 value
- Stack Pointer
stack- A register representing an index within Stack Memory. If this register grows past the end of the Stack Memory, new elements are allocated.
- Stack Value
*stackmemory[stack]- The value in memory pointed by the Stack Pointer.
Instructions
| Token | Pseudocode | Description |
|---|---|---|
| yip | stack++
|
Increase stack position |
| yap | stack--
|
Decrease stack position |
| yip? | if (!hold) goto next yap!
|
Jump after the next yip! if hold is zero |
| yap? | hold = min(*stack, hold)
|
Set hold to the stack value if it's less than hold |
| yip! | hold -= *stack
|
Subtract the stack value from hold |
| yap! | goto prev yip?
|
Jump to the previous yip? |
| Yip | print(chr(hold))
|
Output hold as character |
| Yap | hold += *stack
|
Add stack value to hold |
| Yip! | print(hold)
|
Output hold as a number |
| Yap! | return
|
Returns from a function to its invocation |
| Yip? | func() {}
|
Defines a function whose name is the next token |
| Yap? | func()
|
Invoke the function represented by the next token |
| yipyip | hold = *stack
|
Assign the stack value to hold |
| yipyap | swap(hold, *stack)
|
Swap hold and stack value |
| yapyip | hold++
|
Increase hold value by 1 |
| yapyap | hold--
|
Decrease hold value by 1 |
Playground
Here you can execute and debug COBOLD scripts. Note that since this is a debug view loading a program takes some time and execution is rather slow. For running the code faster, you should use the python script.
Initializing virtual machine, please wait...