summary refs log tree commit diff
path: root/dynamic.e
diff options
context:
space:
mode:
authorIrene Knapp <ireneista@irenes.space>2026-05-28 21:22:58 -0700
committerIrene Knapp <ireneista@irenes.space>2026-05-28 21:22:58 -0700
commit3f83a17851b8e93e4d5dbac94b10a6afd750dbee (patch)
tree8b88024fabaf86783f5c58718dc2fb9c6c79ffda /dynamic.e
parent0f3c90d8c67c7150feed36a1e620a6aa68f987a7 (diff)
move next-newer-entry-in and oldest-entry-in into dynamic.e
it's starting to get concerning how all this stuff needs to go in quine.asm but hopefully the hex transform will fix it

Force-Push: yes
Change-Id: I840e77c96fa0555bc01b9604d09f5ac4903d48bf
Diffstat (limited to 'dynamic.e')
-rw-r--r--dynamic.e13
1 files changed, 13 insertions, 0 deletions
diff --git a/dynamic.e b/dynamic.e
index a260abe..55db683 100644
--- a/dynamic.e
+++ b/dynamic.e
@@ -50,6 +50,12 @@
 : oldest-entry
   latest @ { dup @ } { @ } while ;
 
+~ (dictionary handle -- entry pointer or 0)
+: oldest-entry-in
+  dup
+  dup { { dup @ } { @ } while } if
+  dup 3roll = { drop 0 } if ;
+
 ~ (entry pointer -- entry pointer or 0)
 : next-newer-entry
   latest @
@@ -57,6 +63,13 @@
   { dup { 2dup @ != } if }
   { @ } while swap drop ;
 
+~ (entry pointer, dictionary handle -- entry pointer or 0)
+: next-newer-entry-in
+  @
+  2dup = { 2drop 0 exit } if
+  { dup { 2dup @ != } if }
+  { @ } while swap drop ;
+
 ~ (entry pointer -- pointer)
 : guess-entry-end
   dup entry-flags@ 64 & 64 = { exit } if