(/nestprompt)
(Redefines prompt to append a !, opens a new keystream for execution,
and then restores prompt when stream is terminated)
( (.keystream .readline .pop .dup .length 0 .eq (.pop .exit)(.cvx .exec)/ifelse).cvx .loop )
/xdef

(
.stkundflw)((**Stack Underflow - attempt to retrieve argument from empty stack.) = (stack contains:) = /pstk .stop ) .cvx .def
(
.undefkey)((**Undefined symbol: ).print = (stack contains:) = /pstk .stop ) .cvx .def
(
.longname) ((**Long File Name --file name passed to .run or .bytestream is too long (256 chars). ) = (stack contains:) = /pstk .stop ).cvx .def
(
.badname)
((**Bad File Name -- attempt to create stream with given name.) = (stack contains:) = /pstk .stop).cvx .def
(
.typechk)
((**Type Error -- bad arguments on stack --) = (stack contains:) = /pstk .stop ).cvx .def
(
.dictfull)
(( **Dictionary Full --an attempt to define entry into full dictionary.) = (stack contains:) = /pstk .stop).cvx .def
(
.syntaxerr)
((**Syntax Error-- an isolated right paren has been found by the scanner.) = (stack contains:) = /pstk .stop).cvx .def
(
.overflow)
((**Numeric Overflow-- numeric overflow has occurred in scanning a number.) = (stack contains:) = /pstk .stop).cvx .def
(
.stkovrflw)
((**Stack Overflow-- This error may come from various parts of the JaM machine. When error occurs, all stacks are stored into arrays and put on operand stack in the order: opstack, dictstack, execstk.) = (stack contains:) = /pstk .stop).cvx .def
(
.rangechk)
((**Range Error -- some operation is attempting to index out of bounds.) = (stack contains:) = /pstk .stop).cvx .def

(/execstk)
((execcution stack contains:) = .execstk .dup .length 2 .sub -1 0 (2 .copy .aget == .pop).cvx .for .pop ).cvx .def