So #uxn is pretty cool. Weekend plans include building a few tiny things in it then start designing a language that compiles to #uxntal just for fun.
I've only barely gotten in to it but I'm wondering if it's possible to get around the color limit with some tricky timing. I remember reading that you could display more colors on the NES by switching the palette between scanlines
Implementing structural editing in #uxntal. I remember having lots of fun with THINK Pascal when the IDE was reformatting my program automatically and I've been meaning to have this as part of my workflow now.
For speed-critical loops in #uxntal, consider this pattern:
Use the return-stack to juggle the function pointer and if you can, flatten your boundaries to a single byte(so 0..0x10, becomes 0x0f).
@wim_v12e aaah, then yes, nothing to worry about there then.
I'm not sure if you've seen @bellinitte's padding mod to #uxntal (https://merveilles.town/@bellinitte/110141437531968122) but you miiight be able to make use of this somehow.
Made a little companion REPL to Left, select a bit of code and press ctrl+p to have it assembled and evaluated in the Bicycle window. It's a good way to learn how #uxntal translates to bytes, and vice-versa.
Understanding enums in #uxntal. Or, the recurring "why is the device page overlapping the zero-page" question.
Added a few notes to the #uxntal page on how to quote/unquote opcodes and functions. "Quoting" here means to defer an operation, as in in, evaluating it later. It's doubles as a little introduction to Uxn's self-modification patterns.
http://wiki.xxiivv.com/site/uxntal_immediate.html
:uxn:
Learning to adapt my workflow to the BSDs has given me some of this fun feeling back, and also playing with #uxn, the not-quite-retro #permacomputing 16-bit virtual machine and assembler.
I stayed up until 6am configuring #OpenBSD on my old #stinkpad a couple nights in a row a few months ago 😅
#BSD gives me the feeling of using old Sun workstations 30 years ago (but modern).
uxn gives me the feeling of late 8-bit and early 16-bit home micros.
#uxn #permacomputing #openbsd #stinkpad #bsd #freebsd #netbsd #runbsd #uxntal
Made a #NotepadPlusPlus language configuration file for #uxntal to make programming it easier: https://pastebin.com/hWyw6pMp
#uxn
Learned how the #uxn color palette works and then modified hex values in the writing app 'Left' to display in dark mode! This is fun! 😀
Every few months I rewrite the #uxntal assembler, and each time I find new and better ways to do certain things.
The whole assembler is now 1752 bytes, or 433 lines of #uxntal.
https://git.sr.ht/~rabbits/drifblim/tree/main/item/src/drifblim.tal
I understand it correctly, the #uxn virtual machine is essentially separate from the #varvara computer. In the sense that you could write a _different_ computer/front-end for #uxn, that still uses #uxntal but may have different capabilities than Varvara, using different ports.
I made a little utility to learn the system colors and it definitely helped.
https://nivethan.dev/toys/uxn-tools/system-colors.html
These little side projects are fun.
Day 3 on #uxn. I think this day is much better as a first day. It might throw you into the deep end but I think I liked learning conditionals and jumps far more than bits and bytes. It did help that I already knew how stacks and ops worked.
I've been working on implementing callable words in #uxntal.
Instead of the typical PUSH->POP->JSR sequence each time you want to run a routine, these tokens are not pushing to the stack - they'll run immediately.
They'll be impractical for doing pointer arithmetic, but save 1 byte for every subroutine call, and will save millions of cycles in a project of the size of a text editor or drawing software.
They don't break compatibility with old roms, and make source files a bit more readable.