38 ms·
Show HN: My x86 emulator written in JavaScript
- agilebyte 13y ago125 kB compressed JS 262 kB uncompressed JS 9765 lines of uncompressed JS Wow.
- staunch 13y agoThis may as well be magic as far as I'm concerned. When I first saw http://bellard.org/jslinux/ http://bellard.org/jslinux/ I just about shat myself. This is definitely another level of awesome. Well done.
- ghayes 13y agoThis really is extremely well done [and I'd like to see the unminified source]. The next feature I'd want to see is networking support. I love the idea to be able to run my entire dev setup in an emulated browser session [e.g. ruby, rails, redis]. That would be a game changer on how I'd develop.
- javanix 13y agoAt 2000 kIPS you may have a few generations of javascript engines to go before we get there. That's not meant to take away from this project - it truly is amazing what can be interpreted in the browser now.
- tekacs 13y agoJust for reference's sake this does vary a fair bit by computer and browser - mine never drops below ~8kIPS and runs mostly at ~15kIPS (and up to ~23kIPS). Whilst this is nothing like the several orders of magnitude required for more capable interactive behaviour, it does make my load times noticeably faster than those claimed on the page. :) (I'm Chrome on Linux, i7 4th Gen, incidentally)
- deleted 13y ago[deleted]
- kuschku 13y agoI'm getting here > speed 1640kIPS on the old Nexus 7, don't you mean 8kkIPS? (This value was the average while booting Linux)
- Hello71 13y agopsst, the SI prefix for 10^6 is M
- antsar 13y agoYou mean to say, 10^7 isn't KKK?
- tekacs 13y agoAbsolutely so, yes. Thanks. :) 8 - 23 MIPS ain't so bad, right?
- wnesensohn 13y agoFor reference, that's about as fast as a Motorola 68030 @50MHz [1] which was used in the AppleIIx, and while that was no slouch when it was released, you wouldn't want to run a modern development environment on such a machine either ;) [1] http://en.wikipedia.org/wiki/Motorola_68030 http://en.wikipedia.org/wiki/Motorola_68030
- dkersten 13y agoA little faster than an Arduino and a little slower than a PIC24. Not too bad.
- gngeal 13y agoDynamic translation of x86 sequences could give you some boost, as could use of asm.js.
- Dylan16807 13y agoSome things would do badly at that speed. But serving basic web queries would be fine, and give you a better feel for what is slow when milliseconds spent processing turn into actual seconds.
- chris_mahan 13y agoAbsolutely. This would be awesome.
- RaphiePS 13y agoI think it would be really cool to link this up with some of the Chrome App API's (TCP/UDP networking, serial). Then you could distribute lightweight programs without bothering with Emscripten or Native Client.
- rrrene 13y ago> That would be a game changer on how I'd develop. Why? I'm honestly curious since I can't imagine any big advantages over more "classic" setups ...
- vidarh 13y agoGo to any machine with a browser, log in, and have your dev environment pop up in the same state it was when you left it somewhere else, yet all running locally rather over some VNC connection or potentially laggy ssh connection. Log out, and have the state persisted.
- stonewhite 13y agoMust plug http://www.koding.com http://www.koding.com here. It is a "social" development platform supporting rails, mysql etc.
- benjamincburns 13y agoI'm presently working on networking (OpenCores ethmac) support for the jor1k[1] OpenRisc emulator. The plan is to push ethernet frames out over a web socket, and pipe them into a tun interface on the server via a node/python/C/whatever backend. From there, do whatever you want using your OS' standard networking tools (if you have specific needs for the server-side of this which go beyond using your os' standard tools, please let me know). If you're interested in this, please do make plenty of noise at me to finish. I've got a flight back to the East coast from Portland on Sunday, so I'm hoping I can get most of the browser code finished by then. After that I'm going to be somewhat distracted through the end of January, as I'm moving from Charleston, SC to Christchurch, New Zealand. I could use a bit of motivation to get this done. 1: http://s-macke.github.io/jor1k/ http://s-macke.github.io/jor1k/
- s-macke 13y agoI am really looking forward. If you have any wishes for an image with some tools, please let me know. Lynx, elinks, dillo, ssh, netcat, telnet ... whatever you want. Then I have to think about a demo. Maybe we can allow very limited access to some websites.
- benjamincburns 13y agoI think the biggest thing I'm overlooking right now is randomized MAC generation. I need to take a look at whether or not the ethoc driver will attempt to read the MAC from hardware before loading its own. If so, I can randomize MACs in my ethmac.js, or even make a backend service assign them to guarantee uniqueness. Otherwise I think it'd be great to get an image together with all of those tools, especially Lynx. It'd be great if I could make the HN submission to the demo page via the emulator itself. However for now if I can get an ICMP echo I'll be happy. I think when it's ready I'm going to set up a full-access reCaptcha-protected demo on DigitalOcean or AWS and see what happens. If people don't abuse it and if the bill isn't too bad, I'll leave it up. If not, I'll worry about how to do a restricted demo. It would be nice to get a network-friendly game in there, though. Another great demo that we'd have difficulty with is browser-in-browser. Chrome-in-chrome, firefox-in-firefox. That would, however, be the ultimate sandbox. Anyway, get in touch with me via e-mail or better yet, Skype (see profile). We can coordinate better there.
- benatkin 13y agoOr PHP. Ruby's interestingness to performance ratio is not high.
- _ak 13y agoWith emscripten, anything is possible nowadays. And it blows your mind.
- facorreia 13y agoAnything has been possible since 1999. Anything at all. http://www.zombo.com http://www.zombo.com
- NIL8 13y agoI can't stop laughing. That was so weird and funny that I almost forgot what I was doing here on HN.
- Mithrandir 13y agoRelevant xkcd: http://xkcd.com/855/ http://xkcd.com/855/
- chubot 13y agoWait how does this differ from JSLinux? Aren't they doing the same thing? Also, this isn't just an x86 emulator, right? If it can boot linux, it's emulating the entire PC platform, not just x86. Very impressive of course. But I am interested in a comparison vs jslinux (also not open source).
- g3 13y agoYes, it's very similar to the jslinux project. However, I added more hardware (it can boot a real bios: seabios). Also, I'll make this open source.
- why-el 13y agoKeep us updated when you do. :)
- tectonic 13y agoVery much looking forward to the open source release!
- chii 13y agogreat to hear you are opensourcing this! I had a quick look at the minified source. its pretty hard to decipher (method names have been renamed too), unlike traditional minification which you can recover by just reformatting.
- annnnd 13y agoAFAIK most of minificators also shortened variable / function names - are there any that don't do this? (take a look at minified jquery.js for instance)
- jhgaylor 13y agoCss get minified by removing whitespace because the keywords are important.. Javascript can have some magic done to it to reduce character count because only the consistency of the keywords matters.
- acqq 13y agoI just ran Bellard's JSLinux (#) on my retina iPad with iOS 7. It works! Booting took 15 sec. Claims 20 bogoMips. And I can type the commands in it and execute them: First I tap to the edit box on the right, the keyboard rolls in, then I tap in the "console." The commands work. I just don't know how I'd type ctrl-Keys without the physical keyboard. Copy.sh ends with unimplemented GP handler however for anything I've tried. #) JSLinux: the PC emulator is written in Javascript with the emulated hardware: 32 bit x86 compatible CPU, 8259 Programmble Interrupt Controller, 8254 Programmble Interrupt Timer, 16450 UART, Real Time Clock, IDE interface and hard disk. http://bellard.org/jslinux/tech.html http://bellard.org/jslinux/tech.html
- hardwaresofton 13y agoPretty awesome, I for one don't think the constant stream of "x, rewritten completely in javascript" is tiring (this is not meant to be sarcastic). [EDIT] - This post doesn't seem to say enough when I look back at it. Wanted to add this: Seeing posts like this really excites me (and inspires me) about the future of web programming, and programming in general. Anyone that's excited about programming has to get excited about abstraction, and it doesn't get much more abstract that cross-coded/implemented virtualized systems like this. Even if you hate javascript. Every step people take in blurring lines between systems like this should be exciting, given the large amount of abstraction that had to go into creating something like this.
- malladye 13y agohow does it work?
- samspenc 13y agoYeah! Especially X - that's a pretty amazing X implementation!
- tjdetwiler 13y agoIt's not an X implementation, it's VESA emulation (disclaimer: this is a guess).
- g3 13y agoGood guess, that's correct
- haliphax 13y agoVery, very awesome. Kudos!
- dman 13y agoIs there a non minified version of the javascript emulator file that is publicly available?
- g3 13y agoI'll put it online soon. I haven't figured licensing out yet and need to write some technical notes
- dman 13y agoAwesome - congrats on a very impressive hack.
- ElDiablo666 13y agoI would like you to consider GPLv3+. Thanks and congrats on amazing work!
- chrismorgan 13y agoIn a case like this, the more important licensing question is that of the x86 instruction set; I do not know what the strict licensing situation would be with that—it's quite possible (probable, actually) that this is technically illegal. For the software part, why would you advocate GPLv3+ over permissive licenses like MIT/BSD/Apache?
- pgeorgi 13y agoI'd love to be able to use this to host a coreboot showcase. Open Source licensing would certainly help there. ... Since you're using seabios, I guess its bringup is relatively close to qemu's?
- klepra 13y agoThat's awesome, I quit! :)
- tharshan09 13y agoCould you give some tips or links on how to go about emulating an architecture? I would like to know how to go about emulating an architecture much less complicated like PIC.
- McGlockenshire 13y agoThis is awesome. You might want to consider re-ordering the font list in the console though. Consolas isn't perfectly fixed-width apparently, and it made Rogue rather puzzling to play.
- sillysaurus2 13y agoConsoles isn't perfectly fixed width? That sucks. Till now it was my go-to fixed width font. I assumed something named consolas would be a font suitable for consoles. Which font do you like to use?
- McGlockenshire 13y agoI use Consolas every day. I'm on Linux, so that might also impact something. Perhaps the line drawing characters are extra-small or something? Fire up Rogue and try it out...
- mzs 13y agoI tried the freedos image, says something about 400kips and then down to 0. Nothing ever shows. FF 17.0.9 ESR on 1386 freebsd 8.3
- g3 13y agoI'm testing in Firefox 24. If you could tell me what the error console outputs, I'll try to fix it.
- mzs 13y agoThanks, it's under the error tab: ReferenceError: requestAnimationFrame is not defined http://copy.sh/v24/v86_all.js http://copy.sh/v24/v86_all.js Line: 239
- mschuster91 13y agoUpdate to a newer Firefox. Your FF is dead old and doesnt support the new HTML5 methods... and @author, maybe add a polyfill?
- greglindahl 13y agoFF 24 is the latest stable. FF's docs say they added this function in FF 4.0, which was several years ago. So it's a bit more complicated than you make it out to be. EDIT: I thought FF24 wasn't working, turns out I was confused between my Linux desktop's and Mac laptop's FF versions. Sorry!
- bzbarsky 13y agoIt's actually not all that complicated. Firefox 4 added mozRequestAnimationFrame. Firefox 23 added the unprefixed version. It's documented in the browser compatibility table at https://developer.mozilla.org/en-US/docs/Web/API/window.requestAnimationFrame https://developer.mozilla.org/en-US/docs/Web/API/window.requ... (note that "moz" next to the 4.0).
- zenocon 13y agono network interfaces :( boo. rm -rf or halt -f are fun. this is great work. would love to see source un-minified.
- rfnslyr 13y agoUse http://jsbeautifier.org/ http://jsbeautifier.org/?
- zenocon 13y agoYea, Chrome DevTools has a pretty print option too, but if they ran it through something like closure compiler it renames all the vars. Would like to browse source on github or comparable -- also see the history :)
- g3 13y agoNetworking is on the todo list. I couldn't host the traffic, though.
- chii 13y agoi suppose you could try adding something to do the networking part via webrtc as the channel?
- Tobu 13y agoNothing in the web platform lets you use raw (or TCP/UDP/etc) sockets. At most you could do VPN-style networking and use a bridge to talk to the rest of the internet; that bridge needs someone to host it.
- chii 13y agodamn. at least i found http://www.w3.org/TR/webrtc/#peer-to-peer-data-api http://www.w3.org/TR/webrtc/#peer-to-peer-data-api which looks like its a standard to allow for peer to peer data transfer.
- abeiz 13y agoWow, very impressive! What are your plans for this? Any plans to open source?
- g3 13y agoIt will be open-source. I don't know how to deal with licensing yet.
- Tobu 13y ago1. Pick a license. You'll probably want something compatible with Qemu (GPL2+). 2. Ship a COPYING file, add a header to your files: https://github.com/osterman/copyright-header https://github.com/osterman/copyright-header
- bovermyer 13y ago...wow. Just, wow. You, my friend, are awesome.
- JoshTriplett 13y agoVery impressive. Interesting bug: I can't seem to type '-', '=', '+', or '_' into the Linux image. Missing '-' in particular makes it hard to run commands with options. Elaborate workaround: /root% eval eq$(dmesg | grep 'e820 update' | sed 's/.*) \(.\).*/\1\1/') /root% echo $eq = /root% eval dash$eq$(uname bad 2>&1 | grep Usage: | sed 's/.*\[\(.\).*/\1/') /root% echo $dash - /root% uname ${dash}a Linux (none) 2.6.34.14 #44 Tue Oct 15 20:50:15 CEST 2013 i586 GNU/Linux The first command grabs an '=' from dmesg and sets "eq" to it (without typing '='), and then the second command grabs a '-' from the usage message of uname and sets "dash" to that (without typing '-'). The last shows how to use ${dash} in a command.
- Sheepshow 13y agoThis is the most soul-crushing category of bug, the kind which keeps me up all night, drinking. Build a skyscraper, and lock the keys inside for the ribbon cutting. Sorry pal you lost your funding Land on Mars, see an alien, but your camera is out of batteries and everybody back on Earth thinks you're a quack. Successfully perform open-heart surgery on a desert island, but muck up the stitches and cause a scar. Your patient will hold it against you the rest of his life (which you saved).
- to3m 13y agoThe soul-crushing bugs are the ones where you run a program, and nothing actually goes actively wrong, but the program overall just doesn't behave quite like it does on the real hardware. Simple defects where a key is being ignored on certain systems are usually quite easy to fix ;)
- r4pha 13y agoThis is beyond awesome! I'd love to read about your thought process while writing it, I guess a lot of people (including myself) would learn a lot from it. How long did it take to write?
- g3 13y agoI got Freedos working about 2 years ago, but then stopped working on it. I picked it up again earlier this year. Approximately 3 months of full time work. I'm considering writing some articles, just need to find some free time.
- urs2102 13y agoThis is incredible! At this point, it's definitely JS magic, because I'm struggling to fathom how this even exists.
- zerr 13y agoI know it is oversimplification, but in essence, isn't writing an emulator just mundane following and reading specs? a lot of specs...
- smackfu 13y agoYes, following the specs will give you a correct emulator. The trick is in writing a fast and accurate one.
- lxe 13y agoYou should un-minify and open-source this.
- elwell 13y agogithub link?
- scosman 13y agowow
- bcoates 13y agoAnyone know what format the floppies are expecting? It won't accept a DOS 6.22 install disk from MSDN, maybe it doesn't like DMF? Also, swapping disks during the install might be an issue, I don't see a button...
- g3 13y agoIt expects one of the standard formats (720k, 1440k or 2880k). I'll add switching disks some time in the future.
- WalterBright 13y agoIt rejected my 360Kb images :-(
- swamy_g 13y agoDude, this is Grade-A stuff.
- s-macke 13y agog3: Probably you have seen my emulator. http://s-macke.github.io/jor1k/ http://s-macke.github.io/jor1k/ It does more or less the same, but emulates a different CPU. Your emulator is impressive and especially fast. I think it took a long time for you to optimize it. I tried to start TinyCore, but it stops after decompressing the kernel. So still some work to do ;)
- s-macke 13y agoI saw the source and I have some tips for you: Avoid the UInt32 Arrays and the >>> operator. They could be transformed by the JIT compiler into doubles and slow everything down. This does not happen with the Int32 Arrays and the >> operator. There is a plug-in called JIT-Inspector which give you this information. Unfortunately it does no longer work in Firefox 24. Firefox 22 was the last working version. Additionally worker threads gave me an incredible speed boost in Firefox. The whole GUI stuff is then separated. Especially the costly canvas update.
- kevingadd 13y agoDo you have any documentation to support the stuff about UInt32? The old Firefox JIT had some limitations like this but I'm not aware of anything like that in the current one (which has been shipping for multiple versions). Is it a v8 limitation similar to the 31-bit 'small integer' limitation?
- s-macke 13y agoIndeed at the moment I have nothing to support it. Half a year ago I had dozens of examples. Now it is more or less experience. In v8 I had two weeks ago some strange deoptimizations behavior in my code. It was almost gone after I exchanged two >>> operations. So in my experience it is still better to avoid such cases. No one knows really how the JIT compiler are working. What makes it worse. The behavior is changing every 6 weeks. And don't forget: Out there is more than Firefox and Chrome ;)
- 13y ago
- chris_mahan 13y agoI'm totally impressed.
- aray 13y agoPlan 9 iso [0] CD image fails Unimplemented: #GP handler Execution stopped [0] http://plan9.bell-labs.com/wiki/plan9/download/ http://plan9.bell-labs.com/wiki/plan9/download/
- dbancajas 13y agoI want to write an emulator as a learning experience. Any tips how should I start?
- JoshTriplett 13y agoThere are two sensible approaches: interpretation or dynamic translation. If you want to write one as a learning experience for how the platform you're emulating works and how an emulator could work in principle, you probably want to write an interpreter: find out how the platform boots, build something to start reading and interpreting instructions, start adding emulated hardware devices, and you'll get an increasingly functional interpreter. For a start, you could ignore emulation of devices, and just write a CPU core that interprets instructions. If you want to learn how modern (but still non-hardware-assisted) emulation works, read about how qemu's dynamic code translator and other JIT compilers work, and build a CPU emulator based on that.
- ghewgill 13y agoCanonical place to start: http://stackoverflow.com/questions/448673/how-do-emulators-work-and-how-are-they-written http://stackoverflow.com/questions/448673/how-do-emulators-w...
- dave84 13y agoI'm not the OP but check out the book: "The Elements of Computing Systems: Building a Modern Computer from First Principles" It's quite comprehensive, not exactly about writing an emulator, but it should give you what you need.
- joelanders 13y agohttps://practicingruby.com/articles/low-level-computing?u=64aa43222f https://practicingruby.com/articles/low-level-computing?u=64...
- revelation 13y agoYou want to write an emulator, but you probably don't want to write one for x86. A nice architecture would be 8 bit AVR microprocessors, for example.
- michaelmcmillan 13y agoI can't believe this
- Aardwolf 13y agoWould have been fun if it included some interface to execute assembler code on it directly in some way (without booting an OS). In any case, super awesome! Great work :) EDIT: Whoa, the dos one has games on it! Can you make Wolf3D work? :)
- Pitarou 13y agoI doubt it, but nethack might be worth a shot.
- arjn 13y agoLove it and would like to learn more. Are there any docs you could make available ?
- bumbledraven 13y agohttps://news.ycombinator.com/item?id=6221724 https://news.ycombinator.com/item?id=6221724 g3 62 days ago | link | parent | on: Show HN: Virtual Machines in the Browser Just give me one more month, I'm almost there ... The last month always takes at least 60 days. Strong work!
- hayksaakian 13y agoCool, I tried the linux gui OS and games worked. sudoku and snake worked really well, but pong seemed to graphically expensive
- eliben 13y agoCool project. Can you elaborate on the difference between this and JSLinux?
- mirsadm 13y agoThe amazing thing is it works (slowly) on my Nexus 4. Great work!
- batuhanicoz 13y agoThis is so cool! I have one problem with it though, it doesn't seem to support my keyboard. For example when I try "*", it writes "-". I'm using a Turkish Q keyboard and Chromium on OS X Mavericks GM.
- g3 13y agoIt should be the US keyboard layout, because that's what the operating systems in the emulator use.
- Aardwolf 13y agoI know keyboard codes in web browsers are a nightmare, but, afaik it is possible to get the intended ascii/unicode character code value of the key, so the emulator could translate that to the US keyboard equivalent to fix this issue.
- agumonkey 13y agowaiting for docker.js
- sramsay 13y agoJust when you thought "I've written an x in JavaScript" can't get any more insane . . . Still, this wins the Nobel Prize for awesome.
- TeMPOraL 13y agoI'm still waiting for "Show HN: I built a self-modifying general AI in JavaScript". (@Eliezer, how's the work going? ;))
- zzx375 13y agoWhat else is there to say? Swung for downtown and knocked it into the ocean.
- _-_-_- 13y ago@g3 this is super-mega awesome. 3 questions: 1. I know it is already available via the page, but would you please open-source it so others could contribute? 2. Thought I appreciate the apps being shown in the canvas in the resolution they are supposed to use, a full-screen option would be incredible. That way I could play space invaders the way it was meant to be played, in FreeDOS, in a JS emulator, in Firefox, on a mac. (That's just so wrong, it's right.) 3. Is that your real hair? (Sorry, just had to throw in a Real Genius quote.)
- cokernel_hacker 13y agocute. /% cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 5 model : 1 model name : Pentium 60/66 stepping : 3 cpu MHz : 1.301 cache size : 256 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu pse tsc cx8 pge cmov bogomips : 2.60 clflush size : 32 cache_alignment : 32 address sizes : 32 bits physical, 32 bits virtual power management: Heh, 1.3 MHz on a Pentium 60.
- pyrrhotech 13y agoMan, shit like this makes me feel dumb. How does this work?
- seldo 13y agoSeems very like http://bellard.org/jslinux/ http://bellard.org/jslinux/ from a while back.
- tnhu 13y agoThis is a superb work! Beyond my imagination.
- jordwalke 13y agoTwo things: 1. How can we help? How can I support you? 2. Please open source this.
- mambodog 13y agoIf like this you might also be interested in my port of the PCE Emulator to the browser: http://jamesfriend.com.au/pce-js/ http://jamesfriend.com.au/pce-js/ At the moment I've only uploaded a demo of the Mac Plus emulator (classic 68k mac) but I'll upload IBM PC and Atari ST demos soon also.
- nwh 13y agoThat's very nice too, though aren't you going to be running into some legal issues by distributing their ROMs?
- mambodog 13y agoPotentially, but I feel that the historical significance of these systems and the value of making them available to a newer generation of creators outweighs the technical infringement of copyright. It's basically abandonware, after all. I feel very strongly about the importance of learning from the past, and not making the same mistakes over and over due to lack of historical perspective. I was particularly inspired by Bret Victor's talk at the DBX conference[1]. That's what motivated me to make this available in the most accessible way possible. [1] http://worrydream.com/dbx/ http://worrydream.com/dbx/
- nwh 13y agoI respect that. I'm very impressed with the speed of that emulator too.
- Narishma 13y agoI don't know about the other games, but Wolfenstein 3D is definitely not abandonware. You can still buy it on Steam, XBLA, PSN and other places.
- Aardwolf 13y agoThat image has the free shareware version of Wolf3D. It has only episode 1 and is free to distribute to anyone.
- shurcooL 13y agoHas anyone had success running this on an iOS device? There are hints of it working on my iPad mini under Chrome, but with Safari it gives a "Unimplemented: #GP handler".
- general_failure 13y agoNow and then I see a project which is soul crushing to me when I compare myself with other programmers. This is one of them.
- runn1ng 13y agoIt actually boots on Chrome. On Android. Then it usually dies for low memory - and I can't enter anything at all without keyboard (which doesn't pop up) - but still. The fact that I can boot up a x86 emulator in javascript in browser on ARM mobile phone is crazy.
- pcwalton 13y agoWorks for me on Firefox for Android, no crashes yet.
- mvanotti 13y agoI'm trying to run a custom basic x86 kernel (it was an assignment for my Computer Architecture course). But I can't get it to work =/. (This image works with bochs and in a virtual machine without problems). It seems that it can get to protected mode, enable interruptions, enable paging, but it fails loading the tasks =/ This is the error that I'm getting: Unimplemented: load system segment descriptor, type = 9 Execution stopped Here's a screenshot: http://i.imgur.com/DdCt8jX.png http://i.imgur.com/DdCt8jX.png
- tectonic 13y agoThis guy is awesome. Check out a Game of Life Turing Machine: http://copy.sh/life/?pattern=turingmachine http://copy.sh/life/?pattern=turingmachine
- elwell 13y agohow do you use it to perform a calculation? or what should i be asking?
- deleted 13y ago[deleted]
- buremba 13y agoIf you add networking support to this amazing project, I think some crazy development environment tools are waiting for us.
- cattt 13y agoI can't sleep over the awesomeness of your emulator. I love you and happy birthday <3
- Tarang 13y agoI've been waiting ages for this ever since I saw jslinux. This is freaking brilliant. Looking at the source its been minified. How big is it before that? Are you planning on going open source? Was kind of blown away to see the single js file do all this. Would love to see the method's names to understand how it works
- x0054 13y agoThis is quite amazing. Could someone post a blog post on the details behind how this works. I am not a JavaScrip programer, and this looks like black magic to me at the moment.
- walke 13y agoVery cool! Great job!
- mVChr 13y agoMy second computer was an IBM XT 8086. That was the first time I played and fell in love with Rogue. Every time I grab a copy of Rogue nowadays for nostalgia's sake I'm left disappointed because I can never find the version of Rogue that I played as a kid. My friend, your emulator has that version of Rogue. The kid inside me thanks you greatly.
- sambecket 13y agothis is beyond cool... logs off to think in some startup with this :)
- etfb 13y agoWhen I first saw DOOM running on a bog-standard 386, I declared it to be utter nonsense. I'm no fool! I know what's possible and what's impossible, and that was clearly the latter. Sure, I knew it wasn't impossible, and in fact was true and real and a testament to the brilliance of Carmack et al, but it was still nonsense. Brilliant, astonishing nonsense. I declare your x86 emulator similar nonsense, for all the same reasons. I take my hat off to you. Well done indeed!
- etfb 13y agoMy gods. It runs on my phone. In a web browser. Now, if only I knew how to make the onscreen keyboard pop up...
- etfb 13y agoHmmm... could you add a simple edit field, <input type="text">, that sent anything typed in it directly to the emulated console? That would make it work on a phone browser.
- ck2 13y agoThe FreeDOS feels only half the speed of a TRS-80 This is jaw dropping. Imagine next generation javascript.
- jbobes 13y agoVery cool! Btw, this is what I'm working on http://cloud306.com http://cloud306.com It's kind of similar, but not really.
- LionRoar 13y agoA program listing as screensaver (KolibriOS). Now, that is cool.
- iso-8859-1 13y agoHere's a list of virtual machines in JavaScript: https://gist.github.com/ysangkok/5606032 https://gist.github.com/ysangkok/5606032
- api 13y agoI know this sounds like crazy pants, but I would actually use this in the real world if it were a NodeJS module. Not for anything compute-intensive or serious, but for creating very secure very isolated VMs to run web apps or other services in an insecure environment. It could also be a great way to take a LAMP stack app and rapidly deploy it in certain cases. Again not for high performance, but for... I can think of a few things personally and I'm sure others can too. (Though honestly performance wouldn't be that bad...) Then add the ability to go back and forth between client and server, and virtual networking, and you might have a commercial "virtual DOS LAN with nodes in a browser as a service" startup. What for? Supporting legacy DOS crap: point of sale systems, etc. "Run your legacy DOS stuff in your browser with persistence in the cloud." You'd be surprised how much legacy DOS crap is out there.
- g3 13y agoThe project is made with both browser and nodejs support in mind. There are still some issues to resolve, but I will definitely release a node version this year.
- dancecodes 13y agoits HTML5 and SSE?
- dancecodes 13y agoYes its HTML5. Saw header <!doctype html> ...
- senorsmile 13y agoI got a kernel panic trying to boot tinycore linux: Decompressing Linux... Parsing ELF... done. Booting the kernel. init[1]: segfault at b8e8e089 ip 08071929 sp bfb81b08 error 4 in busybox[8048000 +7c000] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b atkbd serio0: Spurious ACK on isa0060/serio0. Some program might be trying to ac cess hardware directly.
- g3 13y agoBoth bugs are fixed now.
- schmatz 13y agoI can just imagine the posts in a few years: "Look at my JavaScript GPU emulator!"
- tomw1808 13y agoGreat work, but I think there is a bug. I was trying to install this http://goo.gl/WC9oas http://goo.gl/WC9oas but after inserting the last disk the only thing I see is a blue screen.
- krallin 13y agoDoesn't quite exactly work on a non QWERTY keyboard : ( Still awesome, though!
- dancecodes 13y agoVery interesting. Great job! No xhr queries detected in firebug and firefox console. Its is done without AJAX? How its working? Thanks.
- dancecodes 13y agowireshark says like "encrypted allert" saw https packets
- dancecodes 13y agonow waiting release for support lxc containers :)
- constablebrew 13y agoI really want to make this run Node...