From 707095c84b6f795109c7bb2efae0d52bca893126 Mon Sep 17 00:00:00 2001 From: IgorCielniak Date: Mon, 12 Jan 2026 14:54:48 +0100 Subject: [PATCH] added tostr --- toint.sl => typeconversion.sl | 49 +++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) rename toint.sl => typeconversion.sl (55%) diff --git a/toint.sl b/typeconversion.sl similarity index 55% rename from toint.sl rename to typeconversion.sl index efb9c81..d6ce9a4 100644 --- a/toint.sl +++ b/typeconversion.sl @@ -1,5 +1,6 @@ import stdlib.sl import io.sl +import mem.sl word digitsN>num # ( d_{n-1} ... d0 n -- value ), digits bottom=MSD, top=LSD, length on top (MSD-most significant digit, LSD-least significant digit) 0 swap # place accumulator below length @@ -34,6 +35,50 @@ word toint rdrop end -word main - "1234" toint 1 + puti cr +word count_digits + 0 + swap + while dup 0 > do + 10 / swap 1 + swap + end + drop +end + +word tostr + dup + count_digits + 2dup >r alloc + nip swap rot swap + for + dup 10 % swap 10 / + end + drop + + r> + 1 swap dup + for + dup + 2 + pick + 2 pick + 2 + pick + 3 pick rot + + swap 48 + c! + drop + swap + 1 + + swap + end + + swap 0 + + pick 1 + + over for + rot drop + end drop + swap 1 + swap puts +end + +word main + "1234" toint 1 + dup puti cr + tostr + puts end