Adding stack over/underflow check.
This commit is contained in:
@ -93,9 +93,14 @@ create input-buffer input-limit allot
|
|||||||
: tib-setup input-buffer 'tib ! ;
|
: tib-setup input-buffer 'tib ! ;
|
||||||
: refill tib-setup tib input-limit accept #tib ! 0 >in ! -1 ;
|
: refill tib-setup tib input-limit accept #tib ! 0 >in ! -1 ;
|
||||||
|
|
||||||
|
( Stack Guards )
|
||||||
|
sp0 'stack-cells @ 2 3 */ cells + constant sp-limit
|
||||||
|
: ?stack sp@ sp0 < if ." STACK UNDERFLOW " -1 throw then
|
||||||
|
sp-limit sp@ < if ." STACK OVERFLOW " -1 throw then ;
|
||||||
|
|
||||||
( REPL )
|
( REPL )
|
||||||
: prompt ." ok" cr ;
|
: prompt ." ok" cr ;
|
||||||
: evaluate-buffer begin >in @ #tib @ < while evaluate1 repeat ;
|
: evaluate-buffer begin >in @ #tib @ < while evaluate1 ?stack repeat ;
|
||||||
: evaluate ( a n -- ) 'tib @ >r #tib @ >r >in @ >r
|
: evaluate ( a n -- ) 'tib @ >r #tib @ >r >in @ >r
|
||||||
#tib ! 'tib ! 0 >in ! evaluate-buffer
|
#tib ! 'tib ! 0 >in ! evaluate-buffer
|
||||||
r> >in ! r> #tib ! r> 'tib ! ;
|
r> >in ! r> #tib ! r> 'tib ! ;
|
||||||
|
|||||||
@ -58,7 +58,7 @@ transfer{
|
|||||||
evaluate-buffer aliteral value-bind
|
evaluate-buffer aliteral value-bind
|
||||||
leaving( )leaving leaving leaving,
|
leaving( )leaving leaving leaving,
|
||||||
parse-quote digit $@ raw.s
|
parse-quote digit $@ raw.s
|
||||||
tib-setup input-limit
|
tib-setup input-limit sp-limit ?stack
|
||||||
[SKIP] [SKIP]' raw-ok boot-prompt free.
|
[SKIP] [SKIP]' raw-ok boot-prompt free.
|
||||||
$place zplace BUILTIN_MARK
|
$place zplace BUILTIN_MARK
|
||||||
}transfer
|
}transfer
|
||||||
|
|||||||
Reference in New Issue
Block a user