X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=forth.jl.git;a=blobdiff_plain;f=src%2Flib.4th;h=c145b61e5c0d3f10223c4b7b7dba9e0e139c3578;hp=68bb77b429a30192a50aca5d95913f5402738a2e;hb=4b2f52917ce00e4af92d2a3a86e199d21748da5b;hpb=d0d02a9174dd0a8e4e0c37dc2d990d692ee9a73d diff --git a/src/lib.4th b/src/lib.4th index 68bb77b..c145b61 100644 --- a/src/lib.4th +++ b/src/lib.4th @@ -32,8 +32,9 @@ : LITERAL IMMEDIATE ['] LIT , , ; -: CHAR BL WORD 1+ @ ; +: ' BL WORD FIND >CFA ; +: CHAR BL WORD 1+ @ ; : [CHAR] IMMEDIATE CHAR ['] LIT , , @@ -147,11 +148,16 @@ ; : +LOOP IMMEDIATE + + trace + ['] DUP , \ Store copy of increment ['] R> , ['] SWAP , ['] R> , ['] SWAP , ['] R> , ['] SWAP , ['] + , ['] 2DUP , ['] - , ['] SWAP , ['] >R , ['] SWAP , ['] >R , ['] SWAP , ['] >R , + trace + \ Condition differently depending on sign of increment ['] SWAP , ['] 0>= , [COMPILE] IF ['] 0<= , @@ -159,12 +165,16 @@ ['] 0> , [COMPILE] THEN + trace + \ Branch back to begining of loop kernel ['] 0BRANCH , HERE @ - , \ Clean up ['] RDROP , ['] RDROP , ['] RDROP , + trace + \ Record address of loop end for any LEAVEs to use HERE @ SWAP !