Interestingly the VM seems to have internet access via a DigitalOcean instance:
> Access to Internet is possible inside the emulator. It uses the websocket VPN offered by Benjamin Burns (see his blog[0]). The bandwidth is capped to 40 kB/s and at most two connections are allowed per public IP address. Please don't abuse the service.
Yes, the emulated computer emulates a network device. This sends the Ethernet frames via web sockets to the proxy server. On the proxy server, the frames are written to a TAP device. Then some firewall rules do the rest.
Most port 80 TCP traffic can't be done straight from the browser. E.g. it won't let you write arbitrary headers.
Cross-domain requests won't work for the majority of sites.
And non-HTTP requests can't be done at all from the browser, it would be a pretty limited "network interface" if all it could do was call out to XMLHTTPRequest.
I love the projects this person works on, usually full or close to full implementations in very small amounts of code.
The one I first learned about was Tiny C Compiler. It is discontinued now, but it is an about 100K compiler,linker,assembler that can compile many programs like the links browser. https://bellard.org/tcc/
If that is too large, you can go with the project that inspired it, the Obfuscated Tiny C Compiler, a 2048 byte compiler that supports a subset of C. https://bellard.org/otcc/
The fact that I was able just now to run an X session on a RISC-V VM & direct the Dillio browser to Google - I did not even know these things were possible today. Pretty excited.
>In the technical notes, an archive is given which explains how to build the various binary images.
The readable source code of the JS PC emulator itself is not yet available. At this point, any mirroring or redistribution of the code needs my explicit permission.
For tinyemu, my understanding is most of the code is in x86_machine.c , the actual cpu stuff is provided by kvm, the readme states:
>5) x86 emulator A small x86 emulator is included. It is not really an emulator because it uses the Linux KVM API to run the x86 code at near native performance.
> The x86 emulator uses the same set of VirtIO devices as the RISCV emulator and is able to run many operating systems.
>The x86 emulator accepts a Linux kernel image (bzImage). No BIOS image
is necessary.
> The x86 emulator comes from my JS/Linux project (2011) which was one
of the first emulator running Linux fully implemented in
Javascript. It is provided to allow easy access to the x86 images
hosted at https://bellard.org/jslinux
> Access to Internet is possible inside the emulator. It uses the websocket VPN offered by Benjamin Burns (see his blog[0]). The bandwidth is capped to 40 kB/s and at most two connections are allowed per public IP address. Please don't abuse the service.
[0] http://www.benjamincburns.com/2013/11/10/jor1k-ethmac-suppor...