X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=compile.asm;h=defb1acaa5dcfc25e59eac9acbe315c216b5c450;hb=a0aa0a5825ce306120666fd5425308a8ec9314f8;hp=53dbaecdd9ddb233439e5931984a8bc1e8304883;hpb=60057839785134cd60545fa503c31ab50d4056d2;p=rrq%2Frrqforth.git diff --git a/compile.asm b/compile.asm index 53dbaec..defb1ac 100644 --- a/compile.asm +++ b/compile.asm @@ -18,7 +18,7 @@ mov qword [rbx+24],rcx ; PFA (length) pop rsi ; chars* (source) lea rdi,[rbx+32] ; (dest) - ;; clear DF + cld p_create_COPY: movsb dec rcx @@ -60,8 +60,8 @@ p_quote_end: WORD p_comma,',' ;; ( v -- ) ;; Put cell value onto the heap and advance "HERE" - dq p_here, p_put, p_literal, 8, p_here, p_put_plus, p_exit - + dq p_here, p_literal, 8, p_get_n_increment, p_put, p_exit + WORD p_Ccomma,'C,' ;; ( c -- ) ;; Put byte value onto the heap and advance "HERE" @@ -193,6 +193,8 @@ p_number_ALPHA: cmp al,'Z' jg p_number_alpha sub al,'A'-10 + cmp rax,qword [p_base_DFA] + jge p_number_BAD jmp p_number_CONSUME p_number_alpha: cmp al,'a' @@ -200,6 +202,8 @@ p_number_alpha: cmp al,'z' jg p_number_BAD sub al,'a'-10 + cmp rax,qword [p_base_DFA] + jge p_number_BAD jmp p_number_CONSUME p_number_BAD: push qword 0 @@ -316,9 +320,10 @@ p_evaluate_stream_BAD: dq 15000 WORD p_open_file,'OPEN-FILE',fasm - ;; ( chaz* -- fd ) + ;; ( chaz* n -- fd ) ;; Open the nominated file pushr rsi + add rsp,8 ; drop n ... assuming NUL-ended string push qword 0 push qword 0 DOFORTH sys_open @@ -326,7 +331,7 @@ p_evaluate_stream_BAD: next WORD p_load_file,'LOAD-FILE' - ;; ( chaz* -- ) + ;; ( chaz* n -- ) dq p_open_file dq p_dup, p_0less BRANCH 1,p_load_file_badfile