From fac6c4d3b86f9b79af743e7a45e956b0bb5e5253 Mon Sep 17 00:00:00 2001 From: Camden Dixie O'Brien Date: Sun, 1 Mar 2026 18:02:02 +0000 Subject: [PATCH] Implement TYPE and ." --- prelude.f | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/prelude.f b/prelude.f index 3583f42..32e4a9d 100644 --- a/prelude.f +++ b/prelude.f @@ -101,6 +101,45 @@ 2DROP ; +: TYPE ( addr len -- ) + BEGIN + DUP 0= IF 2DROP EXIT THEN + SWAP DUP C@ EMIT 1+ + SWAP 1- + AGAIN +; + +: C, HERE @ C! 1 HERE +! ; + +: ." + STATE @ IF + LIT BRANCH , \ Compile BRANCH for jumping over string data + HERE @ 0 , \ Compile placeholder offset and push offset cell address + 0 BEGIN + KEY + DUP CHAR " = IF + DROP + HERE @ ALIGN HERE ! \ Pad to alignment + SWAP DUP HERE @ SWAP - \ Compute offset + OVER ! \ Update branch offset to skip data + 4+ LIT LIT , , \ Append LIT + LIT LIT , , \ Append LIT + LIT TYPE , \ Append TYPE + EXIT + THEN + C, 1+ \ Write byte and increment length + AGAIN + ELSE + BEGIN + KEY + DUP CHAR " = IF DROP EXIT THEN + EMIT + AGAIN + THEN +; IMMEDIATE + +CHAR . EMIT + \ Set SYSREADY high to indicate prelude has finished and enable user \ input on the JS side.