#uxn — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #uxn, aggregated by home.social.
-
-
-
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.
-
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.
-
I made some progress on the "Uxntal Koans":
https://git.sr.ht/~ismael-vc/uxntal-koans
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 cleanInstead 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!
-
Zental testing framework in 1 KiB for Uxntal, version 1.0.0!
Code:
https://git.sr.ht/~ismael-vc/zentalDocs and examples:
https://uxnomicon.miraheze.org/wiki/ZentalI 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
-
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 )
-
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 )
-
I just realized that I can pipe ANY streamable image data.... so I accidently also made a #uxn webcam!
-
I just realized that I can pipe ANY streamable image data.... so I accidently also made a #uxn webcam!
-
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 )
-
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 )
-
CW: cursed code, not screen-reader friendly
-
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 ( -- ) JMP2rmakes organizing OOP stuff a lot easier!
#uxntal #uxn #0018 #0018 -
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
-
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.
-
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.
-
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
-
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
-
hexdump -C needed a spa day, so I gave it a massage:
https://paste.sr.ht/~ismael-vc/a074bf4e12d557fce43da4a13cfd038baf275f09
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!)
-
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.
-
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.
-
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 :>
-
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 :>
-
Live coding Zen an Uxntal testing library:
https://www.youtube.com/watch?v=YEp6Vhtfta0
#uxn #uxntal #varvara #TDD #virtualmachine #fantasycomputer #assemblylanguage
-
Live coding Zen an Uxntal testing library:
https://www.youtube.com/watch?v=YEp6Vhtfta0
#uxn #uxntal #varvara #TDD #virtualmachine #fantasycomputer #assemblylanguage
-
...and just like that we're passing all of opctest.rom's #uxn tests! 🧙♂️
-
...and just like that we're passing all of opctest.rom's #uxn tests! 🧙♂️
-
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
-
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
-
I made an article at #Uxnomicon documenting the API of Zen, my tny #Uxntal testing framework:
https://uxnomicon.miraheze.org/wiki/Zental
I hope it might be helpful for others as it has been to me!
: )
-
#Uxntal #testing #framework in 760 bytes.
https://paste.sr.ht/~ismael-vc/2f2d41f245481d121632654f86effbcdf25457ac
I have called it Zental, in the images you can see it testing itself (the failed tests are expected).
Usage: https://paste.sr.ht/~ismael-vc/82d44be228adaf7be199e2e2bca77bd1c36ad729
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
-
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.
-
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.
-
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
-
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
-
poll: i need a cv/portfolio for something #uxn related i want to apply for.
should i...?
-
poll: i need a cv/portfolio for something #uxn related i want to apply for.
should i...?
-
Today I have implemented malloc in 76 bytes in #Uxntal .
https://paste.sr.ht/~ismael-vc/21de76cd6c103a469ff06f33696a95c49bf87508
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.
-
Today I have implemented malloc in 76 bytes in #Uxntal .
https://paste.sr.ht/~ismael-vc/21de76cd6c103a469ff06f33696a95c49bf87508
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.
-
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.
https://git.sr.ht/~sporeball/utilities/tree/master/item/font8
-
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. 😄
-
@angelwood I made a fully relocatable version of your #uxn catmon!
https://paste.sr.ht/~ismael-vc/cee33d730feeca600529704131badc104bee5332
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 ] DEO0100:a001-0e17-a080-0f17-
Exit:
0100! -
-
-
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.
-
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
] -
Woke up today with an intense wanting to implement openfirmware for #Uxn. So I did.
https://git.sr.ht/~rabbits/m_pc -
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:
https://uxnomicon.miraheze.org/wiki/Uxntal_for_Python_users
They even have the exact same bug!
Can you find it? ; PI'm working on fixing it and making log/mem accept a length to dump and an extended ram bank as well.