popr rsi
next
+;;; ========================================
+;;; Copy line to PAD
+;;; READ-STREAM-LINE ( stream -- n )
+
+ WORD p_read_stream_line,'READ-STREAM-LINE'
+ ;; ( stream -- n )
+ ;; Read stream until next newline
+ dq p_gtR, p_pad
+p_read_stream_line_loop:
+ dq p_Rget, p_read_stream_char
+ dq p_dup, p_0less
+ BRANCH 1,p_read_stream_line_done
+ dq p_dup, p_nl, p_equal
+ BRANCH 1,p_read_stream_line_done
+ dq p_over, p_Cput, p_literal,1, p_plus
+ BRANCH ,p_read_stream_line_loop
+p_read_stream_line_done:
+ dq p_drop, p_literal,0, p_over, p_Cput
+ dq p_pad, p_minus, p_Rgt, p_drop, p_return
+
+
;;; ========================================
;;; Stream reading
;;; READ-STREAM-CHAR ( stream -- ch )
next
p_read_word_skipline:
- DOFORTH p_dup, p_read_stream_char
+ DOFORTH p_Rget, p_read_stream_char
pop rbx
cmp bl,0
jl p_read_word_nomore
lea rdi,[p_pad_DFA]
add rdi,qword [rsp]
mov byte [rdi],0
- ;; copy PAD string into new temp object
+ ;; copy PAD string + NUL into new temp object
inc qword [rsp]
DOFORTH p_str2temp
dec qword [rsp]