X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=stdio.asm;h=467952ba2f8a4b7f9716a3a2b3f22b69372ea7e4;hb=a0aa0a5825ce306120666fd5425308a8ec9314f8;hp=1926880f1e2e57b53e7fa74e0f5881111c14a8bf;hpb=6a3b3b67e53e5d59085a9b9f50f13df50554b8f7;p=rrq%2Frrqforth.git diff --git a/stdio.asm b/stdio.asm index 1926880..467952b 100644 --- a/stdio.asm +++ b/stdio.asm @@ -206,12 +206,12 @@ p_read_stream_char.CHAR: ;; Read next word from the given stream into the PAD pushr rsi pop rax + pushr rax ; the stream push qword p_pad_DFA push qword 0 - push rax p_read_word_skipblanks: - DOFORTH p_dup, p_read_stream_char + DOFORTH p_Rget, p_read_stream_char pop rbx cmp bl,0 jl p_read_word_nomore @@ -220,12 +220,12 @@ p_read_word_skipblanks: cmp bl,'#' je p_read_word_skipline p_read_word_readword: - ;; ( buffer length stream ) - mov rax,qword [rsp+16] - mov rcx,qword [rsp+8] + ;; ( buffer length ) + mov rax,qword [rsp+8] + mov rcx,qword [rsp] mov [rax+rcx],bl - inc qword [rsp+8] - DOFORTH p_dup, p_read_stream_char + inc qword [rsp] + DOFORTH p_Rget, p_read_stream_char ; ( -- buffer length char ) pop rbx cmp bl,0 jl p_read_word_nomore @@ -233,7 +233,14 @@ p_read_word_readword: jg p_read_word_readword p_read_word_nomore: - pop rax + xor rbx,rbx + mov rax,qword [rsp+8] + mov rcx,qword [rsp] + mov [rax+rcx],bl ; add NUL ending + inc qword [rsp] + DOFORTH p_str2temp + dec qword [rsp] + popr rax popr rsi next @@ -275,7 +282,6 @@ p_double_quote_endstream: inc qword [rsp] DOFORTH p_str2temp dec qword [rsp] - add qword [rsp+8],8 ; adjust pointer popr rsi next