diff options
| -rw-r--r-- | jefs.s | 29 |
1 files changed, 27 insertions, 2 deletions
@@ -45,7 +45,7 @@ %endmacro %assign smudge_mask 0x1 -%assign immemdiate_mask 0x2 +%assign immediate_mask 0x2 %assign false 0x0 %assign true 0xffffffffffffffff @@ -71,6 +71,19 @@ _start: ; init mov r14, wstack ; point SP to top + ; EXPAND BRK + xor rdi, rdi ; brk syscall called with 0 gives the current brk + mov rax, __NR_brk + syscall + mov qword [here], rax + mov qword [h0], rax + + add rax, 0x9c400 ; 640kb, entirely arbitrary + mov rdi, rax + mov rax, __NR_brk + syscall ; if this fails, have fun + mov qword [hend], rax + call interpret mov rdi, 0 mov rax, __NR_exit @@ -212,9 +225,21 @@ defword ">cfa", to_cfa, 0 pspush r11 ret +defword "compile,", compile_comma, 0 + ret + +defword ":", colon, 0 + ret + +defword ";", semicolon, immediate_mask + ret + defvar ">in", to_in, 0, 0 -defvar "latest", latest, 0, lfa_latest defvar "state", state, 0, interpreting +defvar "here", here, 0, 0 +defvar "h0", h0, 0, 0 ; beginning of user memory area +defvar "hend", hend, 0, 0 ; ending of user memory area +defvar "latest", latest, 0, lfa_latest initfile: incbin "jefs.fs" |
