summaryrefslogtreecommitdiff
path: root/jefs.s
diff options
context:
space:
mode:
authorkitty <nepeta@canaglie.net>2026-02-19 02:10:08 +1100
committerkitty <nepeta@canaglie.net>2026-02-19 02:10:08 +1100
commit1c528d56a86e2a1a5b32e15963844e64bd50fab2 (patch)
tree73f1e6291f9102f78da4d9e7fbd7942dddd95643 /jefs.s
parent1909b754b3728459ce1643619d8b771a435644e1 (diff)
fucking oops
Diffstat (limited to 'jefs.s')
-rw-r--r--jefs.s86
1 files changed, 86 insertions, 0 deletions
diff --git a/jefs.s b/jefs.s
index 5d5496c..0da6e44 100644
--- a/jefs.s
+++ b/jefs.s
@@ -64,6 +64,9 @@ section .bss exec
wstack_b: resq 2047
wstack: resq 1
+padmem: resb 256
+padmem_e:
+
umem: resb 0x9c400
umem_e:
@@ -683,6 +686,24 @@ defword "over", over, 0
pspush r11
ret
+defword "rot", rot, 0
+ pspop r11
+ pspop r12
+ pspop r13
+ pspush r12
+ pspush r11
+ pspush r13
+ ret
+
+defword "-rot", dash_rot, 0
+ pspop r11
+ pspop r12
+ pspop r13
+ pspush r11
+ pspush r13
+ pspush r12
+ ret
+
defword "r>", from_r, 0
pop r11
pspush r11
@@ -768,6 +789,7 @@ defword "=", equals, 0
sete r13b
movzx r11, r13b
neg r11
+ pspush r11
ret
defword "<>", less_greater, 0
@@ -777,6 +799,7 @@ defword "<>", less_greater, 0
setne r13b
movzx r11, r13b
neg r11
+ pspush r11
ret
defword "<", less, 0
@@ -786,6 +809,7 @@ defword "<", less, 0
setl r13b
movzx r11, r13b
neg r11
+ pspush r11
ret
defword ">", greater, 0
@@ -795,6 +819,7 @@ defword ">", greater, 0
setg r13b
movzx r11, r13b
neg r11
+ pspush r11
ret
defword "<=", lesseq, 0
@@ -804,6 +829,7 @@ defword "<=", lesseq, 0
setle r13b
movzx r11, r13b
neg r11
+ pspush r11
ret
defword ">=", greatereq, 0
@@ -813,6 +839,61 @@ defword ">=", greatereq, 0
setge r13b
movzx r11, r13b
neg r11
+ pspush r11
+ ret
+
+defword "0=", zero_equals, 0
+ pspop r11
+ test r11, r11
+ sete r13b
+ movzx r11, r13b
+ neg r11
+ pspush r11
+ ret
+
+defword "0<>", zero_less_greater, 0
+ pspop r11
+ test r11, r11
+ setne r13b
+ movzx r11, r13b
+ neg r11
+ pspush r11
+ ret
+
+defword "0<", zero_less, 0
+ pspop r11
+ test r11, r11
+ setl r13b
+ movzx r11, r13b
+ neg r11
+ pspush r11
+ ret
+
+defword "0>", zero_greater, 0
+ pspop r11
+ test r11, r11
+ setg r13b
+ movzx r11, r13b
+ neg r11
+ pspush r11
+ ret
+
+defword "0<=", zero_lesseq, 0
+ pspop r11
+ test r11, r11
+ setle r13b
+ movzx r11, r13b
+ neg r11
+ pspush r11
+ ret
+
+defword "0>=", zero_greatereq, 0
+ pspop r11
+ test r11, r11
+ setge r13b
+ movzx r11, r13b
+ neg r11
+ pspush r11
ret
; }}}
@@ -983,6 +1064,11 @@ defvar "here", here, 0, umem
defvar "h0", h0, 0, umem ; beginning of user memory area
defvar "hend", hend, 0, umem_e ; ending of user memory area
defvar "base", base, 0, 10
+; PNO uses pad going from high to low memory, but if anything else ever needs
+; to use pad it might want to go the opposite way. so we support both.
+; 'dap' is 'pad' backwards in case u couldn't figure it out.
+defvar "pad", pad, 0, padmem
+defvar "dap", dap, 0, padmem_e
defvar "latest", latest, 0, lfa_latest
initfile: