diff --git a/forge/sf.lisp b/forge/sf.lisp
index f151f60..9663d27 100644
--- a/forge/sf.lisp
+++ b/forge/sf.lisp
@@ -127,10 +127,12 @@
(defpackage :sf-builtin
(:use :common-lisp)
(:local-nicknames (:f :scopes/forge/sf)
- (:iter :scopes/util/iter))
+ (:iter :scopes/util/iter)
+ (:util :scopes/util))
(:export #:add #:mul #:dup #:swp
+ #:ptr #:get #:put
#:in #:next
- #:call #:comp
+ #:call #:call-if #:call-while #:comp
#:))
(in-package :sf-builtin)
@@ -156,10 +158,16 @@
(f:reg 'dup #'(lambda () (f:pushd (f:peekd))))
(f:reg 'swp #'(lambda () (let ((a (f:popd)) (b (f:popd))) (f:pushd a) (f:pushd b))))
+(f:reg 'ptr #'(lambda () (f:pushd (util:ptr (f:popd)))))
+(f:reg 'get #'(lambda () (f:pushd (aref (f:popd)))))
+(f:reg 'put #'(lambda () (setf (aref (f:popd)) (f:popd))))
+
(f:reg 'in #'(lambda () (f:pushd (iter:next-value f:*input*))))
(f:reg 'next #'f:next)
(f:reg 'call #'(lambda () (f:call (popd))))
+(f:reg 'call-if #'call-if)
+(f:reg 'call-while #'call-while)
(f:reg 'comp #'(lambda () (f:comp-item (popd))))
(f:reg '