summaryrefslogtreecommitdiff
path: root/jefs.s
diff options
context:
space:
mode:
Diffstat (limited to 'jefs.s')
-rw-r--r--jefs.s29
1 files changed, 27 insertions, 2 deletions
diff --git a/jefs.s b/jefs.s
index 18e07f2..75ed89e 100644
--- a/jefs.s
+++ b/jefs.s
@@ -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"