From db552a4dcacc5d82f00e595be4ca3faae75a3ddb Mon Sep 17 00:00:00 2001 From: pommicket Date: Thu, 6 Jan 2022 14:02:30 -0500 Subject: string --- 04b/in03 | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to '04b/in03') diff --git a/04b/in03 b/04b/in03 index b07874d..66bc3a6 100644 --- a/04b/in03 +++ b/04b/in03 @@ -140,6 +140,13 @@ call :string= D=A ?D!0:handle_byte +I=:line +J=:"string" +C=x20 +call :string= +D=A +?D!0:handle_string + ; set delimiter to newline C=xa @@ -227,6 +234,27 @@ align :byte reserve d1 +:handle_string + I=:line + ; 7 = length of "string " + I+=d7 + J=I + ; find end of string + :string_loop + C=1J + D=xa + ?C=D:string_loop_end + J+=d1 + !:string_loop + :string_loop_end + ; get length of string + D=J + D-=I + ; output fd + J=d4 + syscall x1 + !:read_line + :handle_call J=I ; just use the rvalue function call code @@ -1586,6 +1614,9 @@ align :"byte" str byte x20 +:"string" + str string + x20 :"function" str function xa -- cgit v1.2.3