From fc0d3ed9cfebd853db2a2ab26993a186a29180b1 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Sat, 25 Feb 2023 10:09:33 -0500 Subject: [PATCH] implement leave --- compat.txt | 2 +- core.fth | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/compat.txt b/compat.txt index 7685f8c..a4c6326 100644 --- a/compat.txt +++ b/compat.txt @@ -88,7 +88,7 @@ yes 6.1.1710 IMMEDIATE (as "imm") yes 6.1.1720 INVERT yes 6.1.1730 J yes 6.1.1750 KEY - 6.1.1760 LEAVE +yes 6.1.1760 LEAVE yes 6.1.1780 LITERAL yes 6.1.1800 LOOP yes 6.1.1805 LSHIFT diff --git a/core.fth b/core.fth index 0f00ba8..bcdd577 100644 --- a/core.fth +++ b/core.fth @@ -73,11 +73,14 @@ : until ['] _jmp0 , , drop ; imm : again postpone repeat ; imm -: do postpone 2>r here ; imm +: do ['] _lit , here 0 , ['] >r , postpone 2>r here ; imm : unloop postpone 2r> ['] 2drop , ; imm +: leave postpone unloop postpone 2r> + ['] drop , ['] >r , ['] exit , ; imm : +loop postpone 2r> ['] rot , ['] + , ['] 2dup , postpone 2>r ['] - , ['] 0= , ['] _jmp0 , , - postpone unloop ; imm + postpone unloop + here swap ! ['] r> , ['] drop , ; imm : loop 1 postpone literal postpone +loop ; imm : i postpone r@ ; imm : j postpone 2r> postpone r@ ['] -rot , postpone 2>r ; imm