Skip to content

Atom Book 1 — Assembler Reference105

Limits and Capacities ​

Source projects ​

LimitValue
Ordered source parts1 through 255
Bytes in one source part0 through 65,535
Node project-relative path255 ASCII bytes
Node retained project-relative paths65,536 bytes
One Node INCBIN file0 through 65,535 bytes
CP/M %DEFINE values32
CP/M %DEFINE name17 characters
CP/M conditional nesting16 levels
CP/M active INCBIN statements32

%INCLUDE adds each dependency once, so the part limit applies to distinct files in the resolved project rather than to the number of %INCLUDE lines. The total source may exceed 65,535 bytes as long as no individual part exceeds that size.

The Node host keeps immutable source snapshots outside emulated Z80 memory and returns bytes to the assembler as requested. CP/M reads each part through a 128-byte random-record cache. Neither host needs to fit a complete multipart source tree in Z80 RAM.

CP/M uses current-drive 8.3 names instead of project-relative paths.

Output profiles ​

Atom currently produces one flat output image in bank zero.

ProfileOutput capacityPlacement
Node genericAt most 65,535 bytesSource ORG within the flat 16-bit range
Node cpm22At most 65,279 bytesLoad and entry at $0100
CP/M 2.265,280 bytes$0100 through $FFFF

The Node defaults reserve a range ending just before $FFFF. The programming API accepts an explicit range ending at $10000, with capacity still limited to 65,535 bytes. CP/M output can use the final address. Its image limit is independent of the RAM available to load and run that program. The CP/M guide gives the minimum memory requirement and disk-space constraints.

Symbols and forward references ​

Host configurationSimultaneous symbolsSimultaneous unresolved references
Node command3,0401,170
CP/M 2.21,536585

Global symbols remain for the entire build. Private symbols are discarded when the next global label begins, so only the current private scope counts towards the simultaneous-symbol limit. An unresolved reference stops consuming pending space as soon as its symbol is declared and its output bytes are patched.

Names contain one through eight significant characters. A private name has a separate leading period, so it may occupy nine source characters. Atom rejects longer names rather than shortening them.

Expressions and fields ​

LimitValue
Value-stack entries16
Operator-stack entries16
Concrete final expression−32,768 through 65,535
Shift count0 through 23
Forward affine addend−128 through 127
Relative displacement−128 through 127
Immediate byte and port0 through 255
IX/IY displacement−128 through 127
Encoded instruction length1 through 4 bytes

RST accepts 0, 8, 16, 24, 32, 40, 48, or 56. IM accepts 0, 1, or 2. The directive and instruction references describe where a value is checked, truncated, or deferred until a forward symbol is declared.