src/core/screenmachine_semantic.asm is the authoritative whole-program entry.
It assembles the complete $7600-$DAFF core from 21 modules in address order.
src/core/screenmachine_core.asm is the independent mechanical preservation
baseline. Both top levels must emit exactly the same 25,856 bytes.
include/spectrum.incinclude/screenmachine_memory.incinclude/screenmachine_state.inc- subsystem ABI includes under
include/ core/screenmachine_semantic.asm- individual modules in the order listed below
api/ public jump-vector table
assets/ immutable extracted screen and palette data
basic/ tokenised BASIC payloads retained by media builders
binary/ frozen binary references and installed templates
core/ mechanical and semantic top-level composition
cursor/ pointer renderer and fixed-point movement
data/ initial UNDO screen and selector/workspace images
drivers/ alternative printer and communications overlays
editor/ screen-editor tools and transactions
editors/ font and pattern/cursor editors
graphics/ raster primitives and drawing tools
include/ platform, memory, state and subsystem ABI contracts
input/ compact text rendering and logical input scanner
main/ top-level executive and terminal reserve
patches/ deterministic D80 template patch data
printer/ generic Centronics front end and support
resources/ language-dependent installed resources
ui/ shared panel, stream and field-editing runtime
| Range | Source | Purpose |
|---|---|---|
$7600-$797E |
editors/glyph_editor_common.asm |
common font/pattern editor runtime |
$797F-$7CD2 |
editors/font_editor.asm |
four-font editor and transforms |
$7CD3-$7FFF |
editors/pattern_cursor_editor.asm |
cursor/pattern editor and bitmap scrolls |
$8000-$9B13 |
data/initial_undo_demo.asm |
initial RS2 SCREEN and separator |
$9B14-$9C3F |
printer/centronics_printer.asm |
generic COPY/DCOPY scheduler |
$9C40-$A6FF |
editor/palette_assets_combine.asm |
palette assets and OR 1 TO 2 |
$A700-$A7FF |
printer/centronics_printer_support.asm |
sampling and Didaktik backend |
$A800-$ABDF |
data/initial_menu_workspace.asm |
menu selector plane and workspace |
$ABE0-$AC21 |
api/public_api.asm |
public jump-vector ABI |
$AC22-$ADDE |
cursor/cursor_engine.asm |
cursor compositor and movement |
$ADDF-$AFFF |
input/text_input_support.asm |
compact text and input support |
$B000-$B3AF |
graphics/raster_core.asm |
point, line, spray, fill and rectangles |
$B3B0-$B8A5 |
editor/screen_editor_shell.asm |
editor shell, palettes and dispatch |
$B8A6-$BE34 |
editor/magnifier_transaction.asm |
magnifier and UNDO transaction |
$BE35-$C2EA |
graphics/drawing_tools.asm |
freehand, line, circle and ellipse |
$C2EB-$C52E |
editor/pattern_colour_tools.asm |
patterns and attribute painting |
$C52F-$CB63 |
editor/window_tools.asm |
copy, resize, mirrors and reflection |
$CB64-$CEF8 |
editor/text_tools.asm |
text composition and font styles |
$CEF9-$D3B7 |
ui/ui_runtime.asm |
panel compositor and field editor |
$D3B8-$DAB5 |
main/main_program.asm |
BASIC bridge and main menu |
$DAB6-$DAFF |
main/core_tail.asm |
terminal zero-filled reserve |
- Keep fixed addresses and exported labels stable unless the complete installed memory model is intentionally changed.
- Treat self-modified operands as state fields with code-generation side effects.
- Preserve routine flag, stack and alternate-register contracts.
- Do not replace typed data with instructions merely because a byte decodes as valid Z80.
- Run the complete build after every source change; independent module equality is not sufficient without the whole-program check.