Skip to main content

in reply to Devine Lu Linvega

I'm not sure I understand what's happening here. Is there a tutorial online that I can read?
in reply to Vertigo #$FF

@vertigo there isn't, unfortunately, but I'll document it soon. It's kind of an emulation of unix pipes to pass data between programs.
in reply to leah & glitches & bits, oh my!

Haha, in a very superficial way yes, although it's not parallel, it follows the VERY sequential puredata bang paradigm of flow-based programming where events are triggered one after the other when a message is received, but it is an orchestrator of all these different CPUs that leverage Uxn's superwide IO bandwidth.

I'm not sure tho if I could really do like a transputer and distribute atomic tasks from within one of the runtimes.

This entry was edited (1 year ago)
in reply to Devine Lu Linvega

@millihertz @vertigo This looks super promising! Can you please tell me more about that "superwide IO bandwidth", though? I've started implementing opcodes for CSP (Communicating Sequential Processes) channels & buffers in my cooperative multitasking VM. For exchanging larger data blocks between tasks/processes & devices, I've also been thinking about using (managed) shared memory regions and/or DMA-like approaches (controlled via CSP channels to a virtual DMA controller)... Hoping to share some progress soon!
in reply to Karsten Schmidt

so, linux pipes are stdin/out/err, I wanted a system that was a bit more like named pipes, so you could do "I'm sending a cursor change, or a sprite, etc.. " that hooks directly to the application's event system, imagine a kind of POKE(), that triggers vectors.

The uxn programs are written to respond to these events normally, but being able to trigger these from other programs is what is going on in this video.

There's 256 bytes of io, instead of just 3.

This entry was edited (1 year ago)
in reply to Devine Lu Linvega

in reply to Karsten Schmidt

@toxi your message passing/event handling is all synchronous & depth-first, correct?

yup, events happen immediately. It's a single user system. Right now there's a tiny bit of detection that handles what the system thinks the rom is trying to do so you don't have to hand-pick the ports to connect to. Like, if the rom has a vector event registered at the mouse device, then it's a mouse event, etc..

in reply to Devine Lu Linvega

@toxi
Are all these diff apps running at the same time sharing the same 64KB?

They each have one page of 64kb per rom.
https://wiki.xxiivv.com/site/varvara.html

Are you giving each process a virtual screen device/memory region (of desired window size), then composite everything externally (i.e. via the emulator)?

Pretty much, each instance has its own cached screen buffer, so I can only redraw what changed. Ask me anything! But, I'm a total newb with this stuff tho, mileage may vary.

https://git.sr.ht/~rabbits/porporo/tree/main/item/src/porporo.c

in reply to Devine Lu Linvega

Thanks for this & the links!!! I did not know about Vavara using paging, yet another crossover! 😀 Also know I really should do some more RTFM, but: 1) I've only recently reanimated this old 2015 VM project of mine (rewriting/updating it in Zig) and 2) I've intentionally stayed away from Uxn to not get too side-tracked and influenced too much by Vavara's design decisions. Though the more I see about it, the more I realize you too have been integrating some of the same great concepts from older retro's & micro's like 6502's zero-page, hardware/device/coprocessor control registers/ports, bank switching... I remember how magical the latter felt on my Atari XL (with handsoldered 256KB RAM ext) and without it I couldn't even fit the Assembly source code for my game into the main RAM...

Looking v. forward to see where you're taking this all! 🤌

in reply to Karsten Schmidt

@toxi likewise, I think it's a good idea to stay away from Uxn in this case. It's unlikely that our needs will overlap, you already know all this stuff and uxn is an educational platform, plus, I think you can come up with a brilliant design that will likely inspire me in return.

You might want to have a look at Maxime's UVM, it's not stack machine programming proper, but has lots of good idea and the scope is a bit more modern.
https://github.com/maximecb/uvm

in reply to Devine Lu Linvega

Oh, this is all totally educational for me too! Maybe at some point for others as well... 🤷‍♂️ There's a lot to be gained from cross-pollinating ideas in this space and there's obviously some conceptual overlap (also w/ some shared goals), even though I've been aiming for configurable specs (but also aiming to keep lowest common denominator for those as low as feasible)...
in reply to Karsten Schmidt

@toxi Totally enjoying the ride here, too. I’m working on something in this space that I hope to talk more about soon…
in reply to radioactive isosoph

@zvava *cough* those are, huh, many.. screens! yes, that's it, those are many screens.

Lo, thar be cookies on this site to keep track of your login. By clicking 'okay', you are CONSENTING to this.