diff options
-rw-r--r-- | 04b/in03 | 31 | ||||
-rw-r--r-- | 04b/in04b | 17 |
2 files changed, 34 insertions, 14 deletions
@@ -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 @@ -43,26 +43,15 @@ ; <term> < <term> (left shift) ; <term> > <term> (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 |