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 +++++++++++++++++++++++++++++++ 04b/in04b | 17 +++-------------- 2 files changed, 34 insertions(+), 14 deletions(-) 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 diff --git a/04b/in04b b/04b/in04b index c64aecd..caee4f0 100644 --- a/04b/in04b +++ b/04b/in04b @@ -43,26 +43,15 @@ ; < (left shift) ; > (unsigned right shift) - syscall(1, 1, .str_hw, 14) syscall(0x3c, 42) :str_hw - byte 'H - byte 'e - byte 'l - byte 'l - byte 'o - byte ', - byte 32 - byte 'w - byte 'o - byte 'r - byte 'l - byte 'd - byte '! + string Hello, world! byte 10 + + :syscall function ; I've done some testing, and this should be okay even if -- cgit v1.2.3