| Crates.io | volerup |
| lib.rs | volerup |
| version | 0.1.0 |
| created_at | 2025-12-16 22:05:06.213755+00 |
| updated_at | 2025-12-16 22:05:06.213755+00 |
| description | This is a Ratatui app to simulate a CPU with the Vole Machine Language for education and fun. |
| homepage | |
| repository | https://codeberg.org/dawe/volerup |
| max_upload_size | |
| id | 1988835 |
| size | 730,370 |
TUI application simulating a CPU using Vole machine language from the book Computer Science: An Overview by Glenn Brookshear and Dennis Brylow.
volerup [path_to_file]
r: Load the program into memory and reset the state of the CPU
p: Do a fetch, decode, execute cycle
P: Run loaded program to completion
Tab: Switch focus to the next control
↑ / ↓: Scroll up/down
?: Toggle the help screen with the list of CPU instructions
Esc / q: Quit the program
An example program that stores 0x34 into memory cell 23.
0x14
0x02
0x34
0x17
0xC0
0x00
The simulated CPU has 16 general-purpose registers, each can hold 1 byte.
The main memory consists 256 cells, each can hold 1 byte.
A Vole instruction is 2 two bytes long.
The first 4 bits identify the opcode for the instruction.
The last 12 bits define the operands.
0x1RXY - LOAD memory cell XY into register R
0x2RXY - LOAD value XY into register R
0x3RXY - STORE value in register R in memory cell XY
0x40RS - MOVE register R to register S
0x5RST - ADD registers R and S as integers, store the result in register T
0x6RST - ADD registers R and S as floats, store the result in register T
0x7RST - OR registers R and S, store the result in register T
0x8RST - AND registers R and S, store the result in register T
0x9RST - XOR registers R and S, store the result in register T
0xAR0X - ROTATE register R X times to the right
0xBRXY - JUMP to instruction at memory cell XY if register R equals register 0
0xC000 - HALT the execution
If you focus on the Program listing, you can edit the instructions.
You can add comments to your code with //.
Load the program into memory to run it.
