new memory and project layout

This commit is contained in:
Joppe Blondel
2026-10-01 12:17:47 +02:00
parent 9b1fcac8ee
commit d19ffc70a1
10 changed files with 397 additions and 272 deletions
+26
View File
@@ -0,0 +1,26 @@
# ROM applications
Applications in this directory execute directly from ROM; the reset bootstrap
does not copy them. Each application must have its own non-overlapping `ORG`
below `8000` and should include `bios.inc` from the project's `include`
directory instead of accessing the UART hardware directly.
The current allocation is:
- `1000-180C`: Tiny BASIC
- `180D-7FFF`: available for more applications (`1900` is the next convenient
aligned origin)
The resident BIOS and monitor own high RAM at `C000-FFFF`. Tiny BASIC owns
`8000-BFFF` for its workspace and stack. A future application may reuse Tiny
BASIC's lower-RAM allocation because ROM applications run one at a time, but it
must leave `C000-FFFF` untouched.
Applications using the interrupt-driven console must leave interrupt mode 2,
the `I` register, and the BIOS UART/CTC configuration intact. They may return
normally if they preserve the caller's stack, or jump to `BIOS_MONITOR` for a
non-returning monitor warm start after replacing the stack pointer.
To add an application, add its assembler target and ROM offset to the Makefile,
overlay its binary in the `monitor.prog.bin` recipe, and add a monitor command
or use `G address` to launch it.