JNEXT
Skip to content

Call stack

The chain of calls that led to the current instruction: depth number, the type (CALL, RST, INT or NMI), the caller address, and the target. Most recent call first. With a MAP file loaded the target column shows the symbol name instead of the address. With a source map loaded, Called from shows the source line each call was made from (The Source Debugger); for an INT or NMI frame that is the line the interrupt interrupted. Code fetched from a ROM or an overlay has a line only if the source map names that memory. Caller memory and Target memory name the memory each end ran in, as it was when the call was made, so a bank switch since does not change them; a call whose target has not been fetched yet shows the memory predicted for it (which memory an address is in).

A frame ends when a RET returns to where its call (or interrupt) came from; any other RET ends the frames whose return address it has passed on the stack; an esxDOS call JNEXT services itself ends its RST frame. A routine that discards its return address and leaves by a jump keeps its frame until a later RET ends it.

Call tracking runs while the debugger is open, and while a remote client or a script is attached and the source map carries C variable records, so the stack is built from that moment, not retroactively.

Clicking a row chooses the C frame the Variables tab shows: row N is frame N + 1 (the frame the CPU is in has no row here), and the row follows the frame chosen in the Variables tab.