|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
#######
#
# E-scripts on uxn.
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
# An introduction to eev can be found here:
#
# (find-eev-quick-intro)
# http://anggtwu.net/eev-intros/find-eev-quick-intro.html
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://anggtwu.net/e/uxn.e>
# or at <http://anggtwu.net/e/uxn.e.html>.
# See also <http://anggtwu.net/emacs.html>,
# <http://anggtwu.net/.emacs[.html]>,
# <http://anggtwu.net/.zshrc[.html]>,
# <http://anggtwu.net/escripts.html>,
# and <http://anggtwu.net/>.
#
#######
# «.2026aug22-irc-modal» (to "2026aug22-irc-modal")
# «.uxn11» (to "uxn11")
# «.uxn12» (to "uxn12")
# «.uf9» (to "uf9")
# «.uf9-if» (to "uf9-if")
# «.uxntal-mode» (to "uxntal-mode")
# «.modal» (to "modal")
# «.ronin» (to "ronin")
# «.untrusem-talks» (to "untrusem-talks")
# «.adelie» (to "adelie")
#####
#
# 2026aug22-irc-modal
# 2026aug22
#
#####
# «2026aug22-irc-modal» (to ".2026aug22-irc-modal")
*** edrx JOIN
*** TOPIC A simple tree/term rewriting language based on delimited
string rewriting. |
https://wryl.tech/projects/modal.html |
https://wiki.xxiivv.com/site/modal |
https://git.sr.ht/~rabbits/modal
(wryl!sid553797@user/meow/Wryl on Fri May 24 03:11:31
2024)
*** NAMES aw000000 casuallyblue drakonis edrx jgardner neauoire
NyxBot smlavine
<edrx> hi! untrusem told me to take a look at modal, but he's not
here at the channel ATM...
<edrx> I'm the author of this,
<https://anggtwu.net/eepitch.html#test-blocks>, and I am
saying that I am temporarily with a very short attention
span because of this -
<https://anggtwu.net/2026-eepitch-svg.html#accusations>...
*** untrusem JOIN
<edrx> but that's not totally bad... I am starting to adapt things
that I was trying to learn to a style - reminiscent of Forth
- based on factoring things into small words. the page about
SVG that I mentioned above has two sections about that:
<edrx> the third screenshot here -
https://anggtwu.net/2026-eepitch-svg.html#pict2e - shows and
example, and it has a short movie.
<edrx> so, question...
<edrx> I saw that to run modal I will need to compile several
unx-related tools before. what is the recommended order? I
will try to write a (kind of) script that clones and
compiles them, and then runs modal in emacs...
<untrusem> devine is here okay, but june is not, you will have more
luck in #general on irc.nouveau.community or in #uxn in
libera
<untrusem> edrx: I can help you with uxn tools btw
<edrx> untrusem: please
<untrusem> hop on #uxn btw
(edrx)
https://wryl.tech/projects/modal.html
https://wiki.xxiivv.com/site/modal
https://git.sr.ht/~rabbits/modal
https://100r.co/site/uxn.html
(defun mo2 () (interactive) (find-libera-2a "#modal"))
(defun mo3 () (interactive) (find-libera-2a "#modal"))
(defun u2 () (interactive) (find-libera-2a "#uxn"))
(defun u3 () (interactive) (find-libera-3a "#uxn"))
#####
#
# uxn11
# 2026aug22
#
#####
# «uxn11» (to ".uxn11")
# (find-git-links "https://git.sr.ht/~rabbits/uxn11" "uxn11")
# (code-c-d "uxn11" "~/usrc/uxn11/")
# (find-angg "UXN/uxn11/makefile.edrx")
# (find-uxn11file "")
# (find-uxn11sh "find * | sort")
# (find-uxn11file "README.md")
# (find-uxn11file "makefile")
# (find-debpkg-links "libsdl2-dev")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -Rfv ~/usrc/uxn11/
rm -Rfv ~/usrc/drifblim/
rm -Rfv ~/usrc/uxn-utils/
rm -Rfv ~/usrc/m_pc/
cd ~/usrc/
git clone https://git.sr.ht/~rabbits/uxn11
git clone https://git.sr.ht/~rabbits/drifblim
git clone https://git.sr.ht/~rabbits/uxn-utils
git clone https://git.sr.ht/~rabbits/m_pc
cd ~/usrc/uxn11/
git clean -dfx
cp -v ~/UXN/uxn11/makefile.edrx .
make -f makefile.edrx grab
make -f makefile.edrx bin/uxn11
make -f makefile.edrx bin/uxn11-debug
make -f makefile.edrx bin/uxncli
make -f makefile.edrx tests
make -f makefile.edrx test
# (find-angg "UXN/uxn11/makefile.edrx")
# (find-uxn11file "")
# (find-uxn11sh "find * | sort")
# (find-fline "~/LOGS/2026aug26.uxn" "alias uxnasm=")
uxnasm () { ~/usrc/uxn11/bin/uxncli ~/usrc/uxn11/bin/drifblim.rom $*; }
cd ~/usrc/uxn11/bin/
#####
#
# uxn12
# 2026aug28
#
#####
# «uxn12» (to ".uxn12")
# (find-git-links "https://srcdump.net/pita/uxn12" "uxn12")
# (find-fline "~/LOGS/2026aug28.eev" "uxn12 is another program like uxn11 but for wayland")
#####
#
# uf9
# 2026aug26
#
#####
# «uf9» (to ".uf9")
# (find-angg ".emacs" "uf9")
# http://www.call-with-current-continuation.org/uf/uf.html
# http://www.call-with-current-continuation.org/uf/README
# http://www.call-with-current-continuation.org/articles/forth.txt
# ^ Which leads us to compactness, not only on the syntactic level, but on the abstraction level.
# http://www.call-with-current-continuation.org/software.html
# http://www.call-with-current-continuation.org/uf/uf.rom
# http://www.call-with-current-continuation.org/uf/uf-9.tgz
# (find-untgz-links "http://www.call-with-current-continuation.org/uf/uf-9.tgz" "uf9")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -Rv ~/usrc/uf-9/
tar -C ~/usrc/ -xvzf \
$S/http/www.call-with-current-continuation.org/uf/uf-9.tgz
cd ~/usrc/uf-9/
# (code-c-d "uf9" "~/usrc/uf-9/")
# (find-uf9file "")
# (find-uf9file "kernel.tal")
# (find-uf9file "uf.f")
# (find-uf9file "examples/")
# (find-uf9file "README")
# (find-uf9file "README" "uxnasm kernel.tal kernel.rom")
# (find-uf9file "README" "uxncli kernel.rom <uf.f")
cd ~/usrc/uf-9/
uxncli () { ~/usrc/uxn11/bin/uxncli $*; }
uxnasm () { ~/usrc/uxn11/bin/uxncli ~/usrc/uxn11/bin/drifblim.rom $*; }
uxnasm kernel.tal kernel.rom
uxncli kernel.rom < uf.f
uxncli uf.rom
1 2 + .
words
see words
bye
** (find-uf9file "GLOSSARY")
** (find-uf9file "uf.f")
** (find-uf9file "")
** (find-uf9file "examples/bounce.f")
# (find-uf9file "uf.f" "save uf0.rom")
# (find-uf9file "uf.f" "save uf.rom")
# (find-uf9file "uf.f" "save ufx.rom")
* (eepitch-uf9)
* (eepitch-kill)
* (eepitch-uf9)
: yesno if s" yes" type cr
else s" no" type cr
then ;
42 yesno \ yes
0 yesno \ no
# «uf9-if» (to ".uf9-if")
# (find-uf9file "GLOSSARY" "\nif ")
# (find-uf9file "uf.f" ": if ")
# (find-uf9file "kernel.tal" "( `type` -")
#####
#
# uxntal-mode
# 2026aug26
#
#####
# «uxntal-mode» (to ".uxntal-mode")
# https://git.sr.ht/~rabbits/uxn
# https://wiki.xxiivv.com/site/uxntal.html
# https://wiki.xxiivv.com/site/uxntal_opcodes.html#modes
# (find-epackage-links 'uxntal-mode "uxntalmode" t)
# (find-epackages 'uxntal-mode)
# (find-epackage 'uxntal-mode)
# (code-c-d "uxntalmode" "~/.emacs.d/elpa/uxntal-mode-20240327.153/")
# (find-uxntalmodefile "")
# (find-uxntalmodefile "uxntal-mode.el" "(defun uxntal-explain-word ")
# (find-efunction-links 'uxntal-mode)
# (find-efunction 'uxntal-mode)
(find-eppm '
(define-derived-mode uxntal-mode prog-mode "Uxntal"
"Major mode for editing Uxntal files."
(set-syntax-table (uxntal-create-syntax-table uxntal-mode-strict-comments))
(uxntal-setup-compile-command)
(add-hook 'uxntal-mode-hook
(lambda ()
(set (make-local-variable 'font-lock-defaults) '(uxntal-font-lock-keywords-1 nil nil))
(set (make-local-variable 'comment-start) "( ")
(set (make-local-variable 'comment-end) " )")
(set (make-local-variable 'comment-quote-nested) nil)
(set (make-local-variable 'indent-line-function) #'uxntal-indent-line)
(set (make-local-variable 'imenu-generic-expression) uxntal-imenu-generic-expression))))
)
# (find-evariable-links 'uxntal-mode-map)
(require 'uxntal-mode)
;; (find-efunction 'uxntal-explain-word)
;; (find-eaproposv "uxntal-.*-re")
;; (find-fline "~/LOGS/2026aug26.uxn" "uxntal-explain-word")
;; (find-esetkey-links (kbd "C-c d") 'uxntal-explain-word)
(define-key uxntal-mode-map (kbd "C-c d") 'uxntal-explain-word)
.( no)
: yesno
1 2 +
words
see words
: square ( a -- a^2 ) dup * ;
: cube ( a -- a^3 ) dup square * ;
5 cube .
see cube
' cube .
' cube @ .
' cube c@ .
see while
see if
see [if]
bye
#####
#
# modal
# 2026aug25
#
#####
# «modal» (to ".modal")
# (find-angggrep "grep --color=auto -nH --null -e modal LOGS/2026*")
# https://wiki.xxiivv.com/site/modal.html
# (find-extra-file-links "/tmp/modal.pdf" "modal")
# (code-pdf-page "modal" "/tmp/modal.pdf")
# (code-pdf-text "modal" "/tmp/modal.pdf")
# (find-modalpage)
# (find-modaltext)
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
export PATH=$HOME/usrc/uxn11/bin:$PATH
wget http://wiki.xxiivv.com/etc/modal.tal.txt
mv modal.tal.txt modal.tal
uxncli bin/drifblim.rom modal.tal modal.rom
uxncli bin/modal.rom
uxncli modal.rom
<> (a) (b)
(a)
(a)
(b)
untrusem told me this:
<>.?~(?~ ..)..
^ this is all you need to make a repl in modal
(defun eepitch-modal () (interactive)
(eepitch-comint "modal" "~/usrc/uxn11/bin/uxncli ~/usrc/uxn11/modal.rom"))
* (eepitch-modal)
* (eepitch-kill)
* (eepitch-modal)
** <> (Let's learn Modal!) This is a comment
** <> (hello) (good bye) This is a rule
** (hello) world This is the input
** (good bye) world This is the result
<> (Let's learn Modal!)
<> (hello) (good bye)
(hello) world
(good bye) world
* (eepitch-modal)
* (eepitch-kill)
* (eepitch-modal)
<> (a bat) (a black cat)
<> (a person) (a bat)
(I am (a person))
(I am (a bat))
(I am (a black cat))
* (eepitch-modal)
* (eepitch-kill)
* (eepitch-modal)
<> (Welcome to the Modal playground,
Click the Rewrite button to evaluate the program.
Select other examples with the dropdown.)
<> (equal ?a ?a) (Bool True)
<> (equal ?a ?b) (Bool False)
<> (Rules are made of a left and a right side.
They are tested in from first to last, from left to right.
When a match occurs, the lhs is replaced by the rhs.
Wildcards prefixed with ? will always match.
Rules without a right-hand side are comments.
Printing is done with the ?: wildcard.)
<> (print-bool (Bool ?:)) (done.)
(print-bool (equal baz baz))
* (eepitch-modal)
* (eepitch-kill)
* (eepitch-modal)
<> (a) (b)
(a)
#####
#
# ronin
# 2026aug25
#
#####
# «ronin» (to ".ronin")
# (find-fline "~/LOGS/2026aug25.uxn" "<neauoire> http://wiki.xxiivv.com/site/ronin")
# http://wiki.xxiivv.com/site/ronin
# https://github.com/Hundredrabbits/Ronin
# (find-git-links "https://github.com/Hundredrabbits/Ronin" "ronin")
# (code-c-d "ronin" "~/usrc/Ronin/")
# (find-roninfile "")
https://github.com/Hundredrabbits/Ronin
#####
#
# untrusem-talks
# 2026aug28
#
#####
# «untrusem-talks» (to ".untrusem-talks")
# (find-git-links "https://codeberg.org/untrusem/Talks" "Talks")
# (code-c-d "Talks" "~/usrc/Talks/")
# (find-Talksfile "")
# (find-Talksfile "readme.org")
#####
#
# adelie
# 2026aug28
#
#####
# «adelie» (to ".adelie")
# https://100r.co/site/adelie.html
# (find-fline "~/LOGS/2026aug28.eev" "uxn12 ~/roms/adelie.rom <slides.txt>")
<neauoire> uxncli modal.rom
<neauoire> voila!
<neauoire> if you want to eval a modal file:
<neauoire> cat hello.modal | uxncli modal.rom
# make |& tee om
make bin/uxn11 bin/m_pc.rom bin/perifs.rom |& tee om
gcc -DNDEBUG -O2 -g0 -s etc/alt/uxncli11.c -lutil -o bin/uxncli
cd ~/usrc/uxn11/
bin/uxncli
laf ~/bin/uxn*
http://wiki.xxiivv.com/etc/modal.tal.txt
cmp bin/drifblim.rom /tmp/drifblim.rom
make bin/uxn11 bin/m_pc.rom bin/perifs.rom
gcc -DNDEBUG -O2 -g0 -s etc/alt/uxncli11.c -lutil -o bin/uxncli
cd ~/usrc/uxn11/
git clean -dfx
cd ~/usrc/uxn11/
make bin/drifblim.rom
# (find-es "uxn" "uxn11")
# (find-status "libsdl2-dev")
# (find-vldifile "libsdl2-dev.list")
# (find-udfile "libsdl2-dev/")
(eepitch-shell)
(eepitch-kill)
(eepitch-shell)
rm -Rfv ~/usrc/modal/
cd ~/usrc/
git clone https://git.sr.ht/~rabbits/modal
cd ~/usrc/modal/
make
uxncli ./bin/modal.rom
https://git.sr.ht/~rabbits/uxncli
# (find-fline "~/LOGS/2026aug21.emacs" "https://wiki.xxiivv.com/site/modal.html")
# Local Variables:
# coding: utf-8-unix
# End: