summaryrefslogtreecommitdiff
path: root/04b/in03
diff options
context:
space:
mode:
Diffstat (limited to '04b/in03')
-rw-r--r--04b/in0331
1 files changed, 31 insertions, 0 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