summaryrefslogtreecommitdiff
path: root/04b
diff options
context:
space:
mode:
Diffstat (limited to '04b')
-rw-r--r--04b/in0331
-rw-r--r--04b/in04b17
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 @@
; <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