# KOS_OP_PUSH_PROMPT - **Style**: CONST. Arg = prompt_id (constant pool index, post-compile). - **Stack**: The prompt owns a fresh operand segment (so the reset body has an isolated stack), resolves the PROMPT extent at the push site and records the region's closing pc on the node (POP_SHIFT resumes at that pc + 1), then pushes the prompt node onto the dynamic chain. - **Pushes:** KOS_DYN_PROMPT (static extent KOS_EXT_PROMPT; PUSH_SHIFT captures up to this prompt). PROMPT owns the segment for the delimited region; SHIFT does not create one. - **Invariants**: PUSH_SHIFT captures up to this prompt. An exception unwinding past a PROMPT drops the segment and unlinks the node in one step. - **Compiler form:** Pre-compile arg may be prompt id value or symbol; post-compile arg = pool index. **Example:** reset (push prompt). Pool: 0 = prompt_id. | index | opcode | arg | arg view | comment | |------:|------------|-----|----------|---------| | 0 | PUSH_PROMPT| 0 | 0 (pid) | push prompt (owning its segment) onto chain | | 1 | … | … | … | body before shift (continuation prefix) | | 2 | PUSH_SHIFT | 0 | 0 (pid) | capture k; enter shift block with k on stack | | 3 | … | … | … | shift body (k available) | | 4 | POP_SHIFT | 0 | 0 | return from shift without invoking | | 5 | … | … | … | continuation (body after shift) | | 6 | POP_PROMPT | 0 | 0 | drop segment; pop prompt |