7 ms·
uxn: a portable 8-bit virtual computer
- edu 5y agoI’m always amazed at the quality and quantity of the projects that 100r are capable of building! Kudos to them!
- progre 5y agoThose two are a huge inspiration for sure! I can recommend their youtube channel: https://m.youtube.com/channel/UCzdg4pZb-viC3EdA1zxRl4A https://m.youtube.com/channel/UCzdg4pZb-viC3EdA1zxRl4A
- Y_Y 5y ago> 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 5y agoI 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 5y agoThe 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.
- jokab 5y agoThey built uxn to replace Electron
- nameless912 5y agoI 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 5y agoIt'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).
- kubb 5y agoThis 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.
- analognoise 5y agoCounterpoint: 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 5y agoSometimes naivete is what allows a person to create something that no one else thought was possible.
- ddingus 5y agoI 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!
- tomcooks 5y agoI can't find in the text where they're pretending a personal crusade of any kind, let alone any virtue signaling aside from not wasting too much solar battery on tech. Why are you giving so much importance to something you despise so much? They live rent free in your head?
- ilaksh 5y agoIf 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 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://github.com/runvnc/sq/blob/master/sq2.c https://portal.mozz.us/gemini/biomimetic.me/subleq.gmi 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.
- nemo1618 5y agoThe mascot looks like something Renée French would draw. :)
- baruchel 5y agoI was not aware of that, but a quick look shows that the officiel mascot of Plan 9 actually was drawn by Renée French (see http://glenda.cat-v.org/ http://glenda.cat-v.org/ ). I don't know whether the specific mascot for the uxn project also comes from her or not, but we know that Devine and Rek use the Plan 9 OS (see https://100r.co/site/about_us.html https://100r.co/site/about_us.html ).
- AnIdiotOnTheNet 5y ago> 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.
- milkey_mouse 5y ago> 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/ https://urbit.org/docs/nock/definition/ As one might imagine, a naïve 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 naïve implementation.
- AnIdiotOnTheNet 5y ago> As one might imagine, a naïve 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.
- fsiefken 5y agonice, 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/ http://www.fuzix.org/ Someone got it running on the RPi Pico http://cowlark.com/2021-02-16-fuzix-pi-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/ https://spectrum.mit.edu/winter-2007/less-is-more/
- entaloneralie 5y agoUxn running on the Pi Pico: https://twitter.com/hundredrabbits/status/1392192734899761152 https://twitter.com/hundredrabbits/status/139219273489976115... Here's how fast it renders animations on a Memory Display: https://merveilles.town/@alderwick/106222101764116637 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/examples/gui/animation.usm https://git.sr.ht/~rabbits/uxn/tree/master/item/projects/exa...
- retrac 5y agoSlightly 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/software/asma.usm 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.
- makz 5y agoThe pico-8 of computers
- nynx 5y agoThis 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 5y agoThe 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 https://www.patreon.com/100.
- ddingus 5y agoThis 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.
- anthk 5y ago>This machine might make a great target for micro controllers and or other smaller scale systems. - V3, perfectly. Infocom games and Puny Inform ones. The best would be the 12th release of Curses in v3 format. - A V5 game would run pretty slow on a C64 for example, you'll need a Turbo Chameleon to run the games at acceptable speed. As acceptable I mean max 4-5 sec lag. - V8 games like Anchorhead are a "no-no" under an 8bit machine. Using telnet/serial against a 16 and more bit machine would be the sanest option.
- ddingus 5y agoDepends on the 8-Bit machine doesn't it? I have an Apple //e Platinum running at 16 megahertz. Might do V8 fine. :D
- anthk 5y agoI tried with Vice, REU, Turbo @18mhz and Ozmoo. Running Anchorhead was impossible, and even V5 games such as Vicious Cycles ran borderlinely unusable. I mean, playable over a lag of 8-10 seconds after inputting the command, but it gets tedious fast.
- ddingus 5y agoBummer. Well, a whole lot remains interesting, thanks for the data points!
- samirsd 5y agolove the design
- TeaDude 5y agoThis is very cool. I've always wanted a "virtual platform" that can run on even the creakiest of hardware. I especially like that it uses ASM instead of some embedded language. Some people think of the Pico-8 as this but it's actually got pretty high minimum specs! Higher than the GBA! (Which is my typical "runs anywhere" platform of choice) Maybe the graphics are a bit too limited though? 2bpp for the entire screen is a tough sell (Wassup my Apple ][ and Amstrad CPC fans) The sound limitations are pretty cool and remind me of the Amiga. As for the ASM specs, I'll have to wait and see what more experienced programmers have to say on that one. I remember people picking over the DCPU 16's ASM and there having to be revisions.
- peter_d_sherman 5y ago>"Uxn is a portable 8-bit virtual computer capable of running simple tools and games programmable in its own little assembly language." [...] "Why Create A Small Virtual Computer? We want to produce lasting versions of our tools and games, and by using simpler systems(the UxnVM is only 200 lines of C) we can build more resilient software due to their lack of dependencies, and support older hardware when possible. The Uxn emulator is extremely simple, and can be ported to an unsupported system fairly easily."
- rewgs 5y agoGreat to see hundred rabbits on the front page of hn! I read everything they post -- most recently they inspired me to go down a long plan 9 rabbit hole. I so completely admire their skill, dedication to sustainable living, aesthetic. They're on a completely different level of hip.