# hence Virtual CPU with Assembler and Emulator. ## Architecture ### Memory mapping | Start | End | Name | Description | | -------- | -------- | --------------- | ------------------------------------------------------------ | | `0x0000` | `0x8000` | `PRG` (Program) | ROM of program binary | | `0x8000` | `0x9fff` | `ST` (Stack) | RAM used as stack | | `0xa000` | `0xbfff` | `MEM` (Memory) | Generic RAM | | `0xc000` | | `OUT` (Out) | Writes value as decimal number to standard output when trying to be overwritten | | `0xc001` | | `CHR` (Char) | Writes value as UTF-8 char to standard output when trying to be overwritten | | `0xc002` | | `KEY` (Key) | Waits for key press and returns UTF-8 value of it when trying to be read from | ### Registers | Hex | Name | Description | | ----- | ---------------------- | ------------------------------ | | `0x1` | `PC` (Program counter) | Address of current instruction | | `0x2` | `OPC` | Opcode of current instruction | | | | | ***TODO***