# Levels

Any command or program can be interrupted during execution
by pressing the active level pushing key, (usually the BREAK or ESC
key). When a command or program is interrupted, the system stops execution
and saves all parameters so that execution can be resumed exactly
where it was interrupted. When a process is interrupted at the normal
system level, the system prompts with two colons. At this point the
command or program is said to be pushed one level.

Up to 16 levels can be pushed. The number of colons in
the prompt indicates the number of levels pushed. (The normal system
level is considered level 1).

Pressing ENTER at the higher-level
TCL prompt returns to the previous level and continues execution of
the process at that level.

The end command
terminates the current process and returns control to the previous
level.

Levels are a function of the D3 virtual machine and should
not be confused with spawning a child process (as would occur in the
UNIX engine). The current virtual task is suspended, a new virtual
workspace is established, and TCL is activated as the current user.

In D3, each new level grabs a minimum of 4 frames (user control
blocks). Since workspace is floating, new workspace is allocated as
required. When a level wraps up and returns, all workspace associated
with that level is returned to overflow.

## See also

- [brk-debug command](https://d3codex.com/tcl/brk-debug-command/)
- [brk-level command](https://d3codex.com/tcl/brk-level-command/)
- [esc-data command](https://d3codex.com/tcl/esc-data-command/)
- [esc-level command](https://d3codex.com/tcl/esc-level-command/)
- [esc-toggle command](https://d3codex.com/tcl/esc-toggle-command/)
- [Level pushing](https://d3codex.com/tcl/level-pushing/)
- [Prompt characters](https://d3codex.com/definitions/prompt-characters/)

---
Source: https://d3codex.com/definitions/levels/ - part of the D3Codex reference.
