summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkitty <nepeta@canaglie.net>2026-02-08 21:10:12 +1100
committerkitty <nepeta@canaglie.net>2026-02-08 21:10:12 +1100
commite307b0599a43ec086215d0873f75f60ff0750bac (patch)
treea8d2a83154e153c9b0338a8abb3d1a7f80419db5
parentb980b334870f27d9084889beab172ed13e0238d1 (diff)
expand brk and assign it as HERE
-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"