Hello everyone,
Sorry for being quiet on the mailing list this month, it has been
pretty busy but I've got lots of very exciting things to tell you so,
have a seat.
First, Charlie had an AMAZING idea yesterday, that goes something like this:
> What if you could pad by/to a label's position.
https://merveilles.town/@bellinitte/110141437531968122
That's it. That's the idea. But if you're like me an use lots of
structs and enums in your projects, it's kind of a pain to nest them
into each other, but this tiny change allows for things like:
|0 @pos &x $2 &y $2 &size
|0 @player &name $2 &position $pos/size &hp $1 &mp $1
I've started migrating Oquonie to nested enums and it's a big little
change. The implementation in drifblim was one byte longer:
https://git.sr.ht/~rabbits/drifblim/commit/a9446ceeb63246671229496fb67d9fe828e533ed
I've also implemented it in the html5 playground, if you'd like to try
it out in the browser: https://wiki.xxiivv.com/etc/uxnrepl/index.html
So thanks Charlie, this made my day! I'll add it to Bicycle later tonight.
..
I've rewritten bicycle as a companion application to Left, and I'm
glad to see that a few people picked it up, it's a good way to learn
uxntal, or to make Left into a sort of REPL. It's a cute little(6kb)
rom, I hope you try it out:
https://git.sr.ht/~rabbits/bicycle
I made a LOT of little programs over the past few months to help with
my day to day experiments, and I've collected them all in a repo. It's
all a bit too advanced to be in the uxn repositor, but if you're
feeling adventurous, you might pick up a trick or two. The most useful
ones that I use everyday are hx, loader, meta, etc..:
https://git.sr.ht/~rabbits/uxn-utils/tree
I've rewritten the opcodetest.rom btw, so if you're implementing a uxn
core, that's for you.
There's a new uxn core, based on a different paradigm. It's quite a
bit faster, it's also quite a bit longer to write :/ But it exposes
some interesting symmetries and microcode possibilities with uxn which
I haven't had time to explore yet. I've been using it for a month in
pretty complicated projects without any issue, it's shockingly faster
on the playdate for some reason..?:
https://git.sr.ht/~rabbits/uxn/tree/main/item/src/uxn.c
Rek and I are ALMOST done with Oquonie, we're fine tuning the last
little bits. The game is adorned by the 100r splash which was animated
by Alderwick <3 It'll be nice to get this out. We've started calling
porting the project to Uxn, to "cast it in amber". It'll be nice to
test the theories that have inspired uxn in the first place and see if
we can still run the game in 5 years, 10 years, 30 years.
..
Before I leave, there's one thing that's been on my mind, I'm going to
put it here, but don't freak out, I'm not 100% sure that it is even
feasible yet and I realize that saying this one right after talking
about casting things in amber is doing a total disfavor to the idea
*cough* but let's carry on. So, you know how: #0012 NIP makes a byte
from a short, now imagine if #12 NIPk made a short from a byte:
- If for destructive opcodes(NIP/POP), their keep mode distance(see
new core's SET) were flipped around.
- And a null byte was written just beyond the stack pointer.
- It would mean that these two opcodes, which, let's be honest, NOBODY
has ever used ever, would do this:
- #12 NIPk -> #0012 ( NIPk would become the mirror image of NIP, it
would transform a byte into a short, think of all the #00 SWP that
could be removed that way )
- #12 POPk -> #00 ( it would erase the byte and put a zero in its place )
So like I said, I'm not sure if this is a possible change yet, but if
you have ideas on this, let me know.
I think that's it for uxn things.
Now if you're in this list because you like Uxny-type newsletter but
can't be bothered with actually using the thing, which I totally get.
Here's something cool that might interest you and has almost(almost)
nothing to do with Uxn:
https://github.com/inpla/inpla
Inpla is an interaction nets playground with a very fun syntax. The
author wrote this amazing paper, and I've collected a bunch of notes
and papers on the topic on here:
https://wiki.xxiivv.com/site/interaction_nets.html
That's all folks! Stay awesome, build cool things like nobody's watching
> > What if you could pad by/to a label's position.
>
> https://merveilles.town/@bellinitte/110141437531968122
>
> |0 @pos &x $2 &y $2 &size
> |0 @player &name $2 &position $pos/size &hp $1 &mp $1
This is awesome, will make it a lot easier to deal with complex data
structures!
>
> Rek and I are ALMOST done with Oquonie, we're fine tuning the last
> little bits. The game is adorned by the 100r splash which was animated
> by Alderwick <3 It'll be nice to get this out. We've started calling
> porting the project to Uxn, to "cast it in amber". It'll be nice to
> test the theories that have inspired uxn in the first place and see if
> we can still run the game in 5 years, 10 years, 30 years.
Exciting! I agree, think it's a great test of the ideas.
> - If for destructive opcodes(NIP/POP), their keep mode distance(see
> new core's SET) were flipped around.
> - And a null byte was written just beyond the stack pointer.
> - It would mean that these two opcodes, which, let's be honest, NOBODY
> has ever used ever, would do this:
> - #12 NIPk -> #0012 ( NIPk would become the mirror image of NIP, it
> would transform a byte into a short, think of all the #00 SWP that
> could be removed that way )
> - #12 POPk -> #00 ( it would erase the byte and put a zero in its place )
I for one, like it! If the implementation is feasible, it would make lots of
code a fair bit cleaner and smaller!
Cheers,
Derek