This project was made for educational reasons.
The initial heap size is 16kb which allows for memory addresses to be 4 hexadecimal digits long.
| Register Name | Alias | Size | Description |
|---|---|---|---|
| Accumulator A | AA | 8bit | Accumulator A |
| Accumulator B | AB | 8bit | Accumulator A |
| Register C | C | 16bit | General purpose |
| Index X | IX | 8bit | General purpose index register |
| Index Y | IY | 8bit | General purpose index register |
| Instruction Pointer | IP | 16bit | Next instruction address to be executed |
| Stack pointer | SP | 16bit | Next empty pointer on the call stack |
| Address | Name | Description |
|---|---|---|
0xF000 - 0xFF00 |
Call stack | 3840 bytes reserved for the call stack. |
| Type | Size | Description |
|---|---|---|
MEM_ADDR |
16bits | Address in memory |
Generic instructions are regular instructions that tell the
machine to perform an operation.
Generic instructions range from 0x00 <= X < 0xF0.
| Code | Name | Description | Argument(s) |
|---|---|---|---|
0x00 |
Terminate |
Meta instructions or flags are special instructions that
instruct the machine to change the way it operates.
Meta instructions range from 0xF0 <= X <= 0xFF.
| Code | Name | Description | Argument(s) |
|---|---|---|---|
0xF0 |
INITIAL_INSTRUCTION_POINTER | Instructs the loader at which address to put the rest of the instruction set. This can only be used to head an instruction set. The stack pointer is automatically adjusted. | MEM_ADDR |