home.social

#uxn — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #uxn, aggregated by home.social.

fetched live
  1. yeyyy we have assert-mem with colors! 🎨

    Do you think it is readable? the test source and the output?

    The implementation just give me time to make it better, but I'm glad this works now.

    Now I only have to fix the stack checking assertion and I think it is complete, and ready fro the uxntal koans. ✅

    I'll have to provide my own copy of drifblim with coloring, because the first exercise will be to fix the syntax of a broken test suite, then to actually fix the tests!

    #uxn #uxntal #varvara

  2. Just finished the stream!

    I implemented some debugging routines inspired by @ show macro in julia, I defined @ show/byte and @ show/short
    ie:

    ( introspection )
    { "@ foo } ;foo show/byte
    { "@ bar } ;bar show/short

    BRK

    ( variables )
    |1335 @ foo [ 42 ]
    |1337 @ bar [ 1337 ]

    ~src/zen.tal

    it get printed like (with colors if enabled)

    |04f8 @ foo 42 ( B )
    |04f9 @ bar 1337 ( .7 )

    #uxn #uxntal #varvara

  3. Zen progress:

    - made all API functions global, no need for /foo member syntax anymore.

    - Made suite, set and subset names optional, just like the assertion message :)

    - Implemented Notchoc's suggestion for aliases!

    TODO next:

    - make an assert-mem method, that uses my dump routine to compare object blobs.

    - implement stacks depth checks and balancing methods, to recover from leaking tests.

    Feedback is welcome.

    #uxn

  4. The evolution of my #uxn testing framework continues, I think the #TDD #DSL (domain specific language) is much more readable, error messages are optional!

    Added suites for extra organization (I had to sacrifice being able to run tests inside other functions for the optional message to work)

    Also added a /no-color option, so it may be used in non terminals (without ANSI escape codes).

  5. The evolution of my #uxn testing framework continues, I think the #TDD #DSL (domain specific language) is much more readable, error messages are optional!

    Added suites for extra organization (I had to sacrifice being able to run tests inside other functions for the optional message to work)

    Also added a /no-color option, so it may be used in non terminals (without ANSI escape codes).

  6. made a little #uxn 88x31 button for my website

  7. made a little #uxn 88x31 button for my website

  8. CW: uxn for 68k macs

    major milestone!

    was just able to run the drifblim assembler ROM and assemble and run a non-trivial #uxn program (print all the prime numbers less than 4096).

    i recorded a video, in case you want to wait in suspense as the assembler runs on an emulated 8 MHz processor.

  9. CW: uxn for 68k macs

    major milestone!

    was just able to run the drifblim assembler ROM and assemble and run a non-trivial #uxn program (print all the prime numbers less than 4096).

    i recorded a video, in case you want to wait in suspense as the assembler runs on an emulated 8 MHz processor.

  10. I made some progress on the "Uxntal Koans":

    git.sr.ht/~ismael-vc/uxntal-ko

    Since this is for the #catjam, I decided to manage my own build tool in Tal with a thin wrapper in Forth, so I just call:

    $ ./bake
    $ ./bake clean

    Instead of:

    $ bin/uxncli bin/bakefile.rom clean

    And the setup has to be done either way outside uxntal; make sure bin dir exists, compile uxncli with subprocess support and assemble the bakefile.tal.

    Once that is done, the rest will be handled 100% by uxn!

    #uxn #uxntal #varvara

  11. Zental testing framework in 1 KiB for Uxntal, version 1.0.0!

    Code:
    git.sr.ht/~ismael-vc/zental

    Docs and examples:
    uxnomicon.miraheze.org/wiki/Ze

    I still have one month before the #catjam ends in which I'll try to implement "Uxntal Koans". 📜

    Inspired by the original "Ruby Koans", an introductory tutorial to the language as a series of test cases the learner has to fix in order to reach enlightenment! 🧘

    I intended to make a TUI game at first but I like the idea of koans better. :P

    #uxn #uxntal #varvara

  12. I spent some more time optimizing my buffers and my glue code.... And now I have music playing WITHIN the #uxn emulator itself!!! ( Instead of controlling MPD like last time )

    Completely unpractical but I HAD to give it a shot. Had to slightly change the how audio was implemented within uxn2 to get this to work, but it is still completely within spec! ( but the patch makes CPU usage 7x its normal counterpart )

  13. I spent some more time optimizing my buffers and my glue code.... And now I have music playing WITHIN the #uxn emulator itself!!! ( Instead of controlling MPD like last time )

    Completely unpractical but I HAD to give it a shot. Had to slightly change the how audio was implemented within uxn2 to get this to work, but it is still completely within spec! ( but the patch makes CPU usage 7x its normal counterpart )

  14. I just realized that I can pipe ANY streamable image data.... so I accidently also made a #uxn webcam!

  15. I just realized that I can pipe ANY streamable image data.... so I accidently also made a #uxn webcam!

  16. my new #uxn music play can now display song infromation & art :)

    ( I even added the ability for the image to be streamed in if the MPD instance is over the network )

  17. my new #uxn music play can now display song infromation & art :)

    ( I even added the ability for the image to be streamed in if the MPD instance is over the network )

  18. CW: cursed code, not screen-reader friendly

    in vanilla uxntal this would look like

    @type
    &Frob $1
    &Knob $1
    &Smob $1
    
    ...
    
    &vtable
    =&frobnicate
    =&knobnicate
    =&smobnicate
    

    much simpler, yes!

    but now the definitions are spread across multiple places, forget splitting entities into their own files…


    #uxntal #uxn
  19. CW: cursed code, not screen-reader friendly

    hacked modifiable labels into uxntal, for spooky action at a distance :P

    |0 @type/Ptr+
    
    ...
    
    @type
    %/[ { >{  ( } ) |&Ptr+ }
    %/] { &Ptr+ |}_ } 
    
    &vtable &vtable/Ptr+
    %/{ { >{ ( } ) |&vtable/Ptr+ }
    %/} { &vtable/Ptr+ |}_ }
    
    &dispatch ( type -- )
      #0018 SFT2 ;&vtable ADD2 LDA2 JMP2
    
    ~frob.tal
    ~knob.tal
    ~smob.tal
    
    ( | frob.tal )
    /[ &Frob $1 /]
    /{ =&frobnicate /}
    &frobnicate ( -- ) JMP2r
    

    makes organizing OOP stuff a lot easier!


    #uxntal #uxn #0018 #0018
  20. If I had Assembly experience and actually understood fourth logic, I would learn #uxn and write a text editor that could run on a spec of dust floating past my field of vision

  21. My Varvara implementation allows to optionally route console input/output not to stdin/stdout but to arbitrary streams (abstracted by #zig reader and writer interfaces).

    This gives me the ability to load an uxntal source file, assemble it in memory with a sandboxed, transient, auxiliary #uxn + Varvara instance that embeds a copy of drifblim, and load the generated ROM into the main uxn+Varvara instance. In just 30 lines.

    I can't accurately put into words how much fun I am having right now.

  22. My Varvara implementation allows to optionally route console input/output not to stdin/stdout but to arbitrary streams (abstracted by #zig reader and writer interfaces).

    This gives me the ability to load an uxntal source file, assemble it in memory with a sandboxed, transient, auxiliary #uxn + Varvara instance that embeds a copy of drifblim, and load the generated ROM into the main uxn+Varvara instance. In just 30 lines.

    I can't accurately put into words how much fun I am having right now.

  23. I know I shouldn't be surprised that it just works as is, but still cool, I can build compile uxn binaries directly inside dos.

    wcl -bt=dos -ml -fe=bin/uxnmol.exe src/uxnmol.c

    wiki.xxiivv.com/etc/uxnmol.c.t
    #uxn

  24. I know I shouldn't be surprised that it just works as is, but still cool, I can build compile uxn binaries directly inside dos.

    wcl -bt=dos -ml -fe=bin/uxnmol.exe src/uxnmol.c

    wiki.xxiivv.com/etc/uxnmol.c.t
    #uxn

  25. @sotolf @tuxjam @thelovebug

    Similar to how #uxn (inspired by #forth) was designed expressly to be as easy to port as possible, with the main emulator (without any i/o) being only about 100 lines of C ;)

  26. @sotolf @tuxjam @thelovebug

    Similar to how #uxn (inspired by #forth) was designed expressly to be as easy to port as possible, with the main emulator (without any i/o) being only about 100 lines of C ;)

  27. hexdump -C needed a spa day, so I gave it a massage:

    paste.sr.ht/~ismael-vc/a074bf4

    :3 #uxn #uxntal #varvara

    Though I'm making my hexdump a tool that can be passed a ROM file as an argument (it was inspired by hexdump -C), it is nice to see that with a little effort is doable as well with the existing tools.

    I also bought the awk pocket reference, so useful.

    (If there is a better way to do this with awk, I'd love to learn!)

  28. @jakehamilton

    Sounds like you're describing #permacomputing, or at least, some elements of it.

    #uxn and #CollapseOS / #DuskOS are worth looking into, if you're not familiar with them already.

  29. @jakehamilton

    Sounds like you're describing #permacomputing, or at least, some elements of it.

    #uxn and #CollapseOS / #DuskOS are worth looking into, if you're not familiar with them already.

  30. I am rewriting my #uxn music player, And the main thing I want in this version is album art! So I just finished writing my glue code to automatically dither, process, and convert any album art (including art embeded inside of audio files) into .icn files at runtime :>

  31. I am rewriting my #uxn music player, And the main thing I want in this version is album art! So I just finished writing my glue code to automatically dither, process, and convert any album art (including art embeded inside of audio files) into .icn files at runtime :>

  32. ...and just like that we're passing all of opctest.rom's #uxn tests! 🧙‍♂️

  33. ...and just like that we're passing all of opctest.rom's #uxn tests! 🧙‍♂️

  34. participating in #Catjam again!

    last year I wanted to make an eco-sim but I didn't have time, so it got squished into a sort of garden demo

    this year I have a solid month ahead of me :)

    time to upgrade hexgarden into an actual game!


    #uxn #Catjam
  35. participating in #Catjam again!

    last year I wanted to make an eco-sim but I didn't have time, so it got squished into a sort of garden demo

    this year I have a solid month ahead of me :)

    time to upgrade hexgarden into an actual game!


    #uxn #Catjam
  36. CW: occ summary

    at the end of the #occ2026 week i managed to push through the "crashing the emulator constantly" phase of System 7 development and get into the "opctest.rom fails in weird ways" phase.

    still need to write up the last couple of days but overall i had a great time and i'm optimistic for the future of the yet-to-be-named mac68k #uxn emulator

  37. CW: occ summary

    at the end of the #occ2026 week i managed to push through the "crashing the emulator constantly" phase of System 7 development and get into the "opctest.rom fails in weird ways" phase.

    still need to write up the last couple of days but overall i had a great time and i'm optimistic for the future of the yet-to-be-named mac68k #uxn emulator

  38. Some days we have no power, others no reception, once in a while we have neither. Today was such a day, the oppressing low skies suffocating the signal and covering our solar panels didn't allow for much virtual fussing.

    But while penciling out storyboards for our #Catjam entry, Rek pointed out that it might be nice to have a Yufo cameo aboard the train. Genius idea! Let's look at the actual state of that ol' thing.

    Written in a haste during the Virtual Pet Jam a few years ago, its codebase was horrendous; Uxn was quite young at the time, the linter in its infancy too. It ran just fine but needed a bit of love if the codebase was ever going to be something worthy of being looked at by anyone.

    So, I spent the little power I had left in my laptop rewriting it all in a more standard Uxntal style, with the typical video game OOP patterns that makes the more recent roms somewhat robust. It runs faster, looks and feel nicer too. I've published a new build with metadata and all the other niceties of modern #Uxn projects.

    If anyone ever asks who that weird antlered creature on the train is, at least we can be proud to point to Yufo.

    rabbits.srht.site/decadv/
    #occ2026

  39. CW: occ day 4

    it doesn't look like much but this screenshot represents a (small) #uxn program running correctly on an emulated mac plus

  40. poll: i need a cv/portfolio for something #uxn related i want to apply for.

    should i...?

  41. Today I have implemented malloc in 76 bytes in #Uxntal .

    paste.sr.ht/~ismael-vc/21de76c

    After fiddling with this all afternoon, I finally have implemented a malloc other than the simple "bump pointer allocator" I was using.

    I'll work on mfree, but that will be for tomorrow.

    I changed the unit size to byte instead of 64 bytes because there is no MMU expecting it in 64 bytes in #Uxn as it was in the PDP, so it makes no sense in Uxn? might bite me later.

    Catmon was indispensable.

    #varvara #unix #pdp

  42. it looks like i brought the two pixel fonts seen earlier in this thread to #uxn shortly after i made them, and then just... didn't push?

    these fonts now live in our "utilities" repository, with a string-drawing routine to help them out.

    git.sr.ht/~sporeball/utilities

  43. alright, i'm officially working on implementing a #uxn environment for 68k macs (system 7 specifically) for #occ2026

    will this work? who knows! but it's something i'll be doing next week.

    plastic-idolatry.com/erik/2026

  44. @golemwire @1Bit

    Yeah, it would have to be its own GUI subsystem, but you're right, I don't really want to reimplement all the basic UNIXy syscalls and such.

    Maybe do my own kind of #uxn, but with baked-in graphics primitives, pure monochrome, a little higher resolution by default, and maybe something like Pascal???

    Basically, I'm talking about re-inventing the #ClassicMacintosh, aren't I. 😄

  45. @angelwood I made a fully relocatable version of your #uxn catmon!

    paste.sr.ht/~ismael-vc/cee33d7

    Still kept at 256 bytes.

    Example:

    0100:ff00<ff00=ff00!0000:0100<0100=0100:a001-0e17-a080-0f17-0100!

    ***

    Copy itself to last page:
    0100:ff00<

    Inspect clone:
    ff00=

    Transfer control to clone:
    ff00!

    Clone clears original:
    0000:0100<

    Inspect it:
    0100=

    Write command:
    ( |0 &success $1 &true )
    [ LIT2 -/true -System/debug ] DEO
    [ LIT2 -/success -System/state ] DEO

    0100:a001-0e17-a080-0f17-

    Exit:
    0100!

  46. I didn't expect this #uxn tal syntax to work!

    I tried with %&:foo at first without luck.

    : )

  47. Maybe time to revisit Sunflower BASIC, now that I have let the last attempt at writing a Tiny BASIC percolate through me a little bit.

    Another BASIC implementation I would like to study is BBC BASIC. I think it may be tokenised, not based on an intermediate language.

    To me, it matters not whether the computer is retro or modern, what is important is communicating the ideas of the program as clearly as possible.

    #uxn #basic #TinyBASIC