Files
z80_monitor/apps
2026-10-01 12:44:11 +02:00
..
2026-10-01 12:44:11 +02:00
2026-10-01 12:17:47 +02:00

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.

Use BIOS_BANK and BIOS_ROM_DISABLE for the write-only banking latch rather than writing port 00 directly. The BIOS keeps the ROM-disable state when the RAM bank selection changes. A ROM application must not expect a normal RET after it maps out the ROM containing its return address.

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.