[HN Gopher] uxn: a portable 8-bit virtual computer ___________________________________________________________________ uxn: a portable 8-bit virtual computer Author : bpierre Score : 143 points Date : 2021-05-17 17:35 UTC (5 hours ago) (HTM) web link (100r.co) (TXT) w3m dump (100r.co) | makz wrote: | The pico-8 of computers | fsiefken wrote: | nice, i like the aesthetic and the minimalist mindset. i get that | small is beautiful and constraints are useful to get to the | essence, but I was thinking that fuzix would be more versatile on | 8/16 bit chips while easy to virtualize - or would it be less | power efficient or needlessly complex? http://www.fuzix.org/ | | Someone got it running on the RPi Pico | http://cowlark.com/2021-02-16-fuzix-pi-pico/ | | There also is mruby, version 3 can load applications in just 100 | Kb. | | How would these projects compare or differ with the minimalism | and design goals of uxn? | | less is more from MIT https://spectrum.mit.edu/winter-2007/less- | is-more/ | entaloneralie wrote: | Uxn running on the Pi Pico: | https://twitter.com/hundredrabbits/status/139219273489976115... | | Here's how fast it renders animations on a Memory Display: | https://merveilles.town/@alderwick/106222101764116637 | | The DVD bounce program is 317 bytes long when assembled: | https://git.sr.ht/~rabbits/uxn/tree/master/item/projects/exa... | retrac wrote: | Slightly different targets, from what I can tell. Uxn starts | with a virtual machine spec and builds up from there. The | proposed language is simple, and a self-hosted translator | wouldn't be too much work. Kind of reminds me of Forth. (Edit: | Oh! There already is a self-hosting assembler: | https://git.sr.ht/~rabbits/uxn/tree/master/item/projects/sof... | ) | | FUZIX assumes you have a machine of some kind already, and a C | compiler for it. I suppose if someone wrote a C compiler | targeting Uxn, one could port FUZIX to it in principle. | AnIdiotOnTheNet wrote: | > We want to produce lasting versions of our tools and games, and | by using simpler systems(Uxn has only 32 instructions) we can | build more resilient software due to their lack of dependencies, | and support older hardware when possible. | | Lately I've been thinking a lot along similar lines, but have | come to a wildly different conclusion about how to do it. Of | course, they are explicitly limiting their use-cases so that's to | be expected. I generally agree with the idea of a VM that is | simple to implement, but I think the result shouldn't look like | real hardware with memory addresses and registers and a stack and | all that, it should be more abstract and leave more | implementation details up to the interpreter/jit. | | Regardless, it makes me slightly less gloomy about the future of | computing whenever I see more people coming to similar | conclusions. | miloignis wrote: | When you said a VM that doesn't look like real hardware, I | thought maybe something like WebAssembly! Maybe even that's too | HW-y though? (stack, no registers, structured control flow, | interaction with outside world only through function calls) | milkey_mouse wrote: | > I generally agree with the idea of a VM that is simple to | implement, but... shouldn't look like real hardware | | You might appreciate appreciate Urbit's Nock, a "functional | assembly language" based on combinator calculus which can be | specified in ~40 lines of text, and implemented in ~100 lines | of code: | | https://urbit.org/docs/nock/definition/ | | As one might imagine, a naive implementation of this spec would | be extremely slow (for example, decrementing _n_ requires | incrementing another variable _m_ in a loop until _m+1==n_ , | which is O(n)). A regular JIT can make even the braindead | implementation decently fast, but in practice, specific | implementations are recognized by the interpreter and replaced | with faster ones. The benefit of this approach is that the code | itself is rigorously specified by the combinator definition, | and you can point the finger at the interpreter if the output | from the optimized version differs from the naive | implementation. | AnIdiotOnTheNet wrote: | > As one might imagine, a naive implementation of this spec | would be extremely slow (for example, decrementing n requires | incrementing another variable m in a loop until m+1==n, which | is O(n)). | | Yeah, see that seems to go way too far, but then again this | stood out as similar to ideas I've had: | | > The algorithm for decrementing an atom is to count up to | it, an O(n) operation. But if the interpreter knows it's | running a decrement formula, it can use the CPU to decrement | directly. | | I had basically the same idea, only since my ideas still look | a lot more like an instruction set it was in the form of | explicit annotations to identify functions that could be | replaced with a specialized instruction if available. | | I'll have to look into this thing. Thanks. | Y_Y wrote: | > As it stands today, most software is built with extreme short- | sightedness, designed to be run on disposable electronics and | near impossible to maintain, we decided to not participate in | this race to the bottom. | | This is a cool project, but it doesn't seem to me like it | demonstrates great foresight or maintainability. The compromises | that areade in commercial hardware and software aren't only made | just to be evil, but also to make things affordable and useful | and widely available. | qsort wrote: | I agree, the motivations are razor thin. | | And don't get me wrong, it's awesome. It's a tiny stack machine | complete with its own language! And graphic capabilities! | | If the page just said "I made it just for the heck of it" I | wouldn't like it any less. | rogerclark wrote: | The best things are made by people who make them for specific | reasons, even if you don't agree with or understand those | reasons. Good art is made by including aspects that you want | and rejecting those you do not want. In the case of Hundred | Rabbits, their entire body of work would not exist without | these motivations. | | And really, I doubt that many people make things "just for | the heck of it". In reality, they probably have motivations | but don't, won't, or can't articulate them. | nameless912 wrote: | I would take a look at the rest of 100rabbits' site. Their | whole ethos is artistic, interesting, and anti-commercial. | Really fascinating stuff and might put this project into more | context. | karmakaze wrote: | It's certainly interesting and fulfills a purpose. I just don't | think the stated reasons are as solid. | | > Uxn has only 32 instructions | | A 6502 has about 30 mnemonics (if you consider the A/X/Y forms | together as register addressing modes rather than | instructions). | ilaksh wrote: | If you are interested in something really simplistic to get into | and slightly related, check out SUBLEQ and High Level Subleq. The | C code can be like a one-liner if you want. (Although if you | handle a few basic things with output buffering and spread it out | a little its more like 13 lines | https://github.com/runvnc/sq/blob/master/sq.c). This one might | work better, don't remember | https://github.com/runvnc/sq/blob/master/sq2.c | | https://portal.mozz.us/gemini/biomimetic.me/subleq.gmi | | All it does is output characters to STDOUT, but you can do really | interesting things with that micro VM and and an ANSI graphics | terminal. Also started messing with Tektronix vector graphics | which xterm supports. | samirsd wrote: | love the design | ddingus wrote: | This whole thing feels like the INFOCOM way of doing things. | | Everyone probably knows, but INFOCOM did the Zork type text | adventure games. They chose to author to a virtual machine, which | could be ported to many machines once, making all their games | playable across a ton of machines. | | Today, their software is very accessible. Porting a Z machine is | not a super heavy lift. Once done, the library of interactive | fiction games is available. | | This machine might make a great target for micro controllers and | or other smaller scale systems. Could be fun, and a source of | smaller scale software for people to explore, build on. | | Damn cool! First I've read about this. | kubb wrote: | This is oddly cool a hip, alternative and artistic kind of way. | The philosophical motivations for their projects sound dreamlike | to me, almost like ideological activism, enough that it'd make | you feel that the work that you're doing gives your life some | sort of unique meaning. I envy this lifestyle of adventure and | creative expression, an idea for a more fulfilling human | experience that I somehow know I can never have, but I don't | really understand why. | tomxor wrote: | Agreed, I view projects like this as important experiments and | inspiration for the wider community. It's good to have people | around that are willing to try out implementing lofty and | idealogical ideas - even if it ultimately fails at it's | intended goals directly, they occasionally spawn the most | uniquely valuable unintentional gifts to civilisation. | analognoise wrote: | Counterpoint: Dreamlike hipsterism is utility 0 navel gazing; | there's nothing inherently transcendent about computing. You'd | do more for the world at a local food bank; it's slacktivism | and virtue signaling of the worst kind to see electronic | baubles as transcendent or somehow worthy of permanence, the | kind of naivete the bubble of Web 1.0 popping should have | destroyed, or the misinformation campaigns of the last | election, or the latest data breach should have destroyed. | | If you want artistic sensibility, fine. But pretending a | personal crusade to make permanent computers you can build as | an undergrad sophomore is somehow a noble cause is pretending | your hobby is cosmic in importance and utterly delusional. | | It's like people who bloviate about GPL licenses: you can tell | they've never gone to bed hungry. | tommica wrote: | Sometimes naivete is what allows a person to create something | that no one else thought was possible. | ddingus wrote: | I agree, and through that dynamic, we have a rich field of | exploration / experimentation to draw from. | | Just look at all the lessons to be learned from systems of | the past. And what can actually be done on them! | nemo1618 wrote: | The mascot looks like something Renee French would draw. :) | edu wrote: | I'm always amazed at the quality and quantity of the projects | that 100r are capable of building! | | Kudos to them! | progre wrote: | Those two are a huge inspiration for sure! I can recommend | their youtube channel: https://m.youtube.com/channel/UCzdg4pZb- | viC3EdA1zxRl4A | nynx wrote: | This is beautiful in a way. It reminds me of a future long past. | | In a similar vein, wasm has been used for archival purposes. It's | likely that a wasm binary compiled today will be able to run many | decades in the future, perhaps on architectures not even dreamt | of yet. | fra wrote: | The Hundred Rabbit folks are talented and inspiring. I've loved | following along their journey, and some of the software they've | produced is seriously impressive (check out Orca!). | | They've got a Patreon, which I've happily supported for a while | https://www.patreon.com/100. ___________________________________________________________________ (page generated 2021-05-17 23:00 UTC)