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 BASIC180D-7FFF: available for more applications (1900is 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.