From: Ralph Ronnquist Date: Wed, 19 May 2021 07:47:56 +0000 (+1000) Subject: changes to QUIT (the main program).. still testing X-Git-Url: https://git.rrq.au/?a=commitdiff_plain;h=804451765cdb9caf8f75c1fe9a4c0ab01fa244a8;p=rrq%2Frrqforth.git changes to QUIT (the main program).. still testing --- diff --git a/rrqforth.asm b/rrqforth.asm index 3607ea8..db4fe33 100644 --- a/rrqforth.asm +++ b/rrqforth.asm @@ -106,6 +106,10 @@ p_zero_branch_SKIP: add rsi,8 next +;;; Execution semantics for a "fasm" WORD +dofasm: + add rax,8 + jmp rax ;;; Execution semantics for FORTH defition word ;;; At entry, rsi points into the calling definition, at the cell ;;; following the cell indicating this word, rax points to the CFA of @@ -165,28 +169,41 @@ last_forth_word: main: mov rsp,DS_TOP mov rbp,RS_TOP - ;; Initialize STREAM STDIN + cmp qword [p_stdin_DFA],0 + jne p_quit_INITIALIZED + ;; Initialize STDIN push 0 push 10000 DOFORTH p_stream - pop qword [p_stdin_DFA] + pop qword [p_stdin_DFA] ; Assign STDIN +p_quit_INITIALIZED: ;; Initial blurb FORTH dq p_program_version dq p_tell dq p_stdin - dq p_read_word + dq p_clear_stream + dq p_stdin + dq p_evaluate_stream + BRANCH 0,p_quit_ERROR + dq p_false + dq sys_exit +p_quit_ERROR: + dq p_literal_string + STRING 10,'*** Unknown word: ' + dq p_tell + dq p_this_word + dq p_2get + dq p_tell + dq p_literal_string + STRING 10 dq p_tell - dq p_nl - dq p_emit ENDFORTH - - ;; DOFORTH p_words - - push 0 - DOFORTH sys_exit + mov rbp,RS_TOP ; reset the return stack + jmp main + ;; At fasm compilation: reset to make a new word list previous_word = last_wordlists_word include 'syscalls.asm'