commit | 818a6c211fab73b85b287fef910e6efb8d75ec1c | [log] [download] |
---|---|---|
author | Ernest Wong <ewon521@gmail.com> | Wed Nov 15 08:57:03 2017 +1300 |
committer | Fabian <copy@copy.sh> | Sat Dec 16 22:51:40 2017 -0600 |
tree | 08579946e8553400456551f7428ddaf740c3b961 | |
parent | 5c0e87b3e96b58eeb790a96053f860260f3e1ad0 [diff] |
Wrap PIT counter value - always After restore_state, the pit.counter_start_time can be larger than the current timestamp, leading to negative diff values, and as a result, when get_counter_value is called, it can return values larger than 16 bit integers. Thus, when ISA ports 0x40, 0x41, or 0x42 are read, the high-byte that counter_write returns can be larger than 8-bit. Ultimately, this error is caught by the asserts in io.js. By always applying a positive modulo to the counter value, it is always ensured that the counter value is between zero and the reload value.
Using v86 for your own purposes is as easy as:
var emulator = new V86Starter({ screen_container: document.getElementById("screen_container"), bios: { url: "../../bios/seabios.bin", }, vga_bios: { url: "../../bios/vgabios.bin", }, cdrom: { url: "../../images/linux.iso", }, autostart: true, });
See API.
v86 emulates an x86-compatible CPU and hardware. Here's a list of emulated hardware:
The disk images are not included in this repository. You can download them directly from the website using:
wget -P images/ https://copy.sh/v86/images/{linux.iso,linux3.iso,kolibri.img,windows101.img,os8.dsk,freedos722.img,openbsd.img}
.
A testsuite is available in tests/full/
. Run it using node tests/full/run.js
.
make build/v86_all.js
.index.html
locally, make sure to serve it from a local webserver. You can use make run
to serve the files using Python's SimpleHTTPServer.wget -P images/ https://copy.sh/v86/images/{linux.iso,linux3.iso,kolibri.img,windows101.img,os8.dsk,freedos722.img,openbsd.img}
.Short summary:
# grab the main repo git clone https://github.com/copy/v86.git && cd v86 # grab the disk images wget -P images/ https://copy.sh/v86/images/{linux.iso,linux3.iso,kolibri.img,windows101.img,os8.dsk,freedos722.img,openbsd.img} # grab closure compiler wget -P closure-compiler https://dl.google.com/closure-compiler/compiler-latest.zip unzip -d closure-compiler closure-compiler/compiler-latest.zip *.jar # build the library make build/libv86.js # run the tests ./tests/full/run.js
Here's an overview of the operating systems supported in v86:
udev
and X
fail, but you get a terminal.You can get some infos on the disk images here: https://github.com/copy/images.
Simplified BSD License, see LICENSE, unless otherwise noted.
Shoot me an email to copy@copy.sh
. Please don't tell about bugs via mail, create a bug report on GitHub instead.
Fabian Hemmer (http://copy.sh/, copy@copy.sh
)