diff --git a/MEMORY.md b/MEMORY.md new file mode 100644 index 0000000..d1b55e5 --- /dev/null +++ b/MEMORY.md @@ -0,0 +1,18 @@ +# Memory Map + +To not have to allocate a ton of things at run time the Standard Library uses a static memory map for some purposes + +## Overview + +| Address Range | Use | +| ---- | ---- | +| `0x0:0x15` | Reset Vector | +| `0x16:0xFF` | Zero | +| `0x100:(user code end)` | User Code | +| `(User code end + 1):0xFFFF` | Library Code | +| `0xXXF0_0000:0xXXFF_FFFF` | Stack | + +## Zero Page +Some values are needed not often enough to get their own special register, but often enough that it makes sense to keep them at a quickly accessible location. +This is what the zero page is for. its position in memory allows us to load them into a register with a single instruction. +