home.social

#uxn — Public Fediverse posts

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

fetched live
  1. made a little #uxn 88x31 button for my website

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

  3. 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.

  4. 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.

  5. 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

  6. 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

  7. 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 )

  8. 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 )

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

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

  11. 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 )

  12. 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 )

  13. 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
  14. 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
  15. 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

  16. 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.

  17. 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.

  18. 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

  19. 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

  20. @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 ;)

  21. @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 ;)

  22. 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!)

  23. @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.

  24. @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.

  25. 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 :>

  26. 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 :>

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

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

  29. 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
  30. 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
  31. 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

  32. 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

  33. I made an article at #Uxnomicon documenting the API of Zen, my tny #Uxntal testing framework:

    uxnomicon.miraheze.org/wiki/Ze

    I hope it might be helpful for others as it has been to me!

    : )

    #uxn #varvara #TDD

  34. #Uxntal #testing #framework in 760 bytes.

    paste.sr.ht/~ismael-vc/2f2d41f

    I have called it Zental, in the images you can see it testing itself (the failed tests are expected).

    Usage: paste.sr.ht/~ismael-vc/82d44be

    Just create a routine under the @ test scope, ie:

    @ test/foo ( -> )
    /verbose
    { "some 20 "set } /set
    { "some 20 "subset } /subset
    #01 #0101 EQU /assert
    /end-subset
    /end-set
    /summary
    BRK

    ~zen.tal

    I'll put it in a repo soon. :3

    #uxn #varvara #TDD

  35. 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

  36. 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

  37. 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

  38. 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

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

    should i...?

  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. 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

  43. With #discord 's newest security ai thing, I can no longer send the art I draw to my friends. Because, noodle in #uxn makes heavy use of grids and checkered lines to add depth. So now that can get me banned. Yay.

  44. 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

  45. 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

  46. @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. 😄

  47. @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!

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

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

    : )

  49. 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

  50. If you ever need a relocatable #Uxntal routine's byte code (not the source but the ASCII hexdump), yet your code needs to embed an absolute address, ie. in system expansion commands or device vectors.

    This will do the trick

    %:PC ( -- pc+3* ) { [ LITr 00 JSRr ] }
    |9 @ offset2>>
    %<< ( -- offset* 0 ) { :PC ;offset2>> ADD2 #00 }
    %>> ( offset* 0 rel -- abs* ) { ADD2 }

    [
    @ foo ( -- )
    ( ... )
    << ,on-console >> .Console/vector DEO2
    ( ... )
    JMP2r

    @ on-console ( -> )
    ( ... )
    BRK
    ]

    #uxn #varvara 3 : )

  51. Woke up today with an intense wanting to implement openfirmware for #Uxn. So I did.
    git.sr.ht/~rabbits/m_pc

  52. I have a plan to make #Uxntal tutorials for people from other programming languages.

    Since I don't have much time for planning, starting now, I'll be dumping examples, exercises, etc. as they pique my interest and later I'll order them.

    So I'll start with log/mem in uxntal and log_mem in python:

    uxnomicon.miraheze.org/wiki/Ux

    They even have the exact same bug!
    Can you find it? ; P

    I'm working on fixing it and making log/mem accept a length to dump and an extended ram bank as well.

    #uxn #varvara