index.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. <!doctype html>
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  3. <title>v86</title>
  4. <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
  5. <meta name="description" content="Run KolibriOS, Linux or Windows 98 in your browser">
  6. <script src="build/v86_all.js"></script>
  7. <link rel="stylesheet" href="v86.css">
  8. <div>
  9. <div id="boot_options">
  10. <div id="filter">
  11. Family:
  12. <label><input id=filter_linux type=checkbox> Linux</label>
  13. <label><input id=filter_bsd type=checkbox> BSD</label>
  14. <label title="Microsoft Windows"><input id=filter_windows type=checkbox> Windows</label>
  15. <label><input id=filter_unix type=checkbox> Unix-like</label>
  16. <label><input id=filter_dos type=checkbox> DOS</label>
  17. <label><input id=filter_custom type=checkbox> Custom</label>
  18. <!--<label><input type=checkbox> Hobby OS</label>-->
  19. UI:
  20. <label title="Graphical desktop"><input id=filter_graphical type=checkbox> Graphical</label>
  21. <label title="Text-based or serial console only"><input id=filter_text type=checkbox> Text</label>
  22. Medium:
  23. <label title="Boots from floppy disk"><input id=filter_floppy type=checkbox> Floppy</label>
  24. <label title="Boots from CD-ROM"><input id=filter_cd type=checkbox> CD</label>
  25. <label title="Boots from hard disk"><input id=filter_hd type=checkbox> HD</label>
  26. Size:
  27. <label title="Fits it bootsector"><input id=filter_bootsector type=checkbox> 512 B</label>
  28. <label><input id=filter_lt5mb type=checkbox> &lt;5 MB</label>
  29. <label><input id=filter_gt5mb type=checkbox> &gt;5 MB</label>
  30. Status:
  31. <label title="Most recent release is younger than 10 years"><input id=filter_modern type=checkbox> Modern</label>
  32. <label title="No release in 10 years"><input id=filter_historic type=checkbox> Historic</label>
  33. License:
  34. <label><input id=filter_opensource type=checkbox> Open-Source</label>
  35. <label><input id=filter_proprietary type=checkbox> Proprietary</label>
  36. Arch:
  37. <label><input id=filter_16bit type=checkbox> 16-bit</label>
  38. <label><input id=filter_32bit type=checkbox> 32-bit</label>
  39. <!--<label><input type=checkbox> Microkernel</label>-->
  40. <!--<label title="Uses a saved memory dump to skip the boot process"><input type=checkbox> skip boot process</label>-->
  41. <!--<label title="Supports networking (in v86)"><input type=checkbox> networking</label>
  42. <label title="Supports audio output (in v86)"><input type=checkbox> audio</label>
  43. <label title="Supports the serial console (in v86)"><input type=checkbox> serial</label>
  44. <label title="Supports filesharing using virtio-9p (in v86)"><input type=checkbox> 9pfs</label>-->
  45. Lang:
  46. <label title="Written in assembly language"><input id=filter_asm type=checkbox> ASM</label>
  47. <label title="Written in C"><input id=filter_c type=checkbox> C</label>
  48. <label title="Written in C++"><input id=filter_cpp type=checkbox> C++</label>
  49. <label title="Written in other languages"><input id=filter_other_lang type=checkbox> Other</label>
  50. <!--<label><input type=checkbox> contains: games</label>
  51. <label><input type=checkbox> contains: demos</label>
  52. <label><input type=checkbox> contains: compilers</label>
  53. <label><input type=checkbox> contains: web browsers</label>-->
  54. <div style="text-align: right; float: right"><a href="#setup">Skip to custom settings</a></div>
  55. <br style="clear: both">
  56. </div>
  57. <hr>
  58. <table id="oses">
  59. <thead>
  60. <tr>
  61. <th>Name</th>
  62. <th>Size</th>
  63. <th>UI</th>
  64. <th>Family</th>
  65. <th>Arch</th>
  66. <th>Status</th>
  67. <th>Source</th>
  68. <th>Lang</th>
  69. <th>Medium</th>
  70. <th>Notes</th>
  71. </tr>
  72. </thead>
  73. <tr id="start_archlinux"><td><a href="?profile=archlinux">Arch Linux</a> <td>15+ MB</td>
  74. <td><span class=tui_icon></span></td> <td>Linux</td> <td>32-bit</td> <td>Modern</td> <td>Open-source</td> <td>C</td> <td>9pfs</td> <td>Xorg, Firefox, various compilers and more</td></tr>
  75. <tr id="start_dsl"><td><a href="?profile=dsl">Damn Small Linux</a> <td>50 MB</td>
  76. <td><span class=gui_icon></span></td> <td>Linux</td> <td>32-bit</td> <td>Historic</td> <td>Open-source</td> <td>C</td> <td>CD</td> <td>4.11.rc2 with Firefox 2.0</td></tr>
  77. <tr id="start_buildroot"><td><a href="?profile=buildroot">Buildroot Linux</a> <td>4.9 MB</td>
  78. <td><span class=tui_icon></span></td> <td>Linux</td> <td>32-bit</td> <td>Modern</td> <td>Open-source</td> <td>C</td> <td>bzImage</td> <td>Lua, ping, curl, telnet</td></tr>
  79. <tr id="start_freebsd"><td><a href="?profile=freebsd">FreeBSD</a> <td>16+ MB</td>
  80. <td><span class=tui_icon></span></td> <td>BSD</td> <td>32-bit</td> <td>Modern</td> <td>Open-source</td> <td>C</td> <td>HD</td> <td>FreeBSD 12.0</td></tr>
  81. <tr id="start_openbsd"><td><a href="?profile=openbsd">OpenBSD</a> <td>11+ MB</td>
  82. <td><span class=tui_icon></span></td> <td>BSD</td> <td>32-bit</td> <td>Modern</td> <td>Open-source</td> <td>C</td> <td>HD</td> <td>OpenBSD 6.6</td></tr>
  83. <tr id="start_fiwix"><td><a href="?profile=fiwix">FiwixOS</a> <td>15+ MB</td>
  84. <td><span class=tui_icon></span></td> <td>Unix-like</td> <td>32-bit</td> <td>Modern</td> <td>Open-source</td> <td>C</td> <td>HD</td> <td>With Doom</td></tr>
  85. <tr id="start_serenity"><td><a href="?profile=serenity">SerenityOS</a> <td>16+ MB</td>
  86. <td><span class=gui_icon></span></td> <td>Unix-like</td> <td>32-bit</td> <td>Modern</td> <td>Open-source</td> <td>C++</td> <td>HD</td> <td>Web browser, various games and demos</td></tr>
  87. <tr id="start_haiku"><td><a href="?profile=haiku">Haiku</a> <td>41+ MB</td>
  88. <td><span class=gui_icon></span></td> <td>BeOS</td> <td>32-bit</td> <td>Modern</td> <td>Open-source</td> <td>C++</td> <td>HD</td> <td>Networking (WebPositive), OCaml, 2048, NetHack</td></tr>
  89. <tr id="start_tinyaros"><td><a href="?profile=tinyaros">Tiny Aros</a> <td>17+ MB</td>
  90. <td><span class=gui_icon></span></td> <td>AmigaOS</td> <td>32-bit</td> <td>Modern</td> <td>Open-source</td> <td>C</td> <td>CD</td> <td>AmigaOS-like graphical OS</td></tr>
  91. <tr id="start_reactos"><td><a href="?profile=reactos">ReactOS</a> <td>17+ MB</td>
  92. <td><span class=gui_icon></span></td> <td>Windows-like</td> <td>32-bit</td> <td>Modern</td> <td>Open-source</td> <td>C++</td> <td>HD</td> <td>QtWeb, LBreakout2, OpenTTD, Bochs, TCC</td></tr>
  93. <tr id="start_windows1"><td><a href="?profile=windows1">Windows 1.01</a> <td>0.7 MB</td>
  94. <td><span class=gui_icon></span></td> <td>Windows</td> <td>16-bit</td> <td>Historic</td> <td>Proprietary</td> <td>ASM, C</td> <td>Floppy</td> <td>Reversi, Paint</td></tr>
  95. <tr id="start_windows95"><td><a href="?profile=windows95">Windows 95</a> <td>19+ MB</td>
  96. <td><span class=gui_icon></span></td> <td>Windows</td> <td>32-bit</td> <td>Historic</td> <td>Proprietary</td> <td>ASM, C</td> <td>HD</td> <td>Age of Empires, FASM, POV-Ray, Hover!</td></tr>
  97. <tr id="start_windows2000"><td><a href="?profile=windows2000">Windows 2000</a> <td>23+ MB</td>
  98. <td><span class=gui_icon></span></td> <td>Windows</td> <td>32-bit</td> <td>Historic</td> <td>Proprietary</td> <td>C++</td> <td>HD</td> <td>IE 5, Pinball</td></tr>
  99. <tr id="start_msdos"><td><a href="?profile=msdos">MS-DOS 6.22</a> <td>2.4+ MB</td>
  100. <td><span class=tui_icon></span></td> <td>DOS</td> <td>16-bit</td> <td>Historic</td> <td>Proprietary</td> <td>ASM</td> <td>HD</td> <td>Doom, Sim City, OCaml 1.0, Turbo C and more</td></tr>
  101. <tr id="start_freedos"><td><a href="?profile=freedos">FreeDOS</a> <td>0.6 MB</td>
  102. <td><span class=tui_icon></span></td> <td>DOS</td> <td>16-bit</td> <td>Modern</td> <td>Open-source</td> <td>ASM, C</td> <td>Floppy</td> <td>nasm, vim, debug.com, Rogue, various demos</td></tr>
  103. <tr id="start_kolibrios"><td><a href="?profile=kolibrios">KolibriOS</a> <td>1.3 MB</td>
  104. <td><span class=gui_icon></span></td> <td>Custom</td> <td>32-bit</td> <td>Modern</td> <td>Open-source</td> <td>ASM</td> <td>Floppy</td> <td>Various apps, games and demos</td></tr>
  105. <tr id="start_qnx"><td><a href="?profile=qnx">QNX 4.05</a> <td>1.4 MB</td>
  106. <td><span class=gui_icon></span></td> <td>Custom</td> <td>32-bit</td> <td>Historic</td> <td>Proprietary</td> <td>C</td> <td>Floppy</td> <td>1999 demo disk</td></tr>
  107. </table>
  108. <hr>
  109. <h4 id="setup">Setup</h4>
  110. <table>
  111. <tr>
  112. <td width="350"><label for="cdrom_image">CD image</label></td>
  113. <td>
  114. <input type="file" id="cdrom_image">
  115. </td>
  116. </tr>
  117. <tr>
  118. <td><label for="floppy_image">Floppy disk image</label></td>
  119. <td> <input type="file" id="floppy_image"><br></td>
  120. </tr>
  121. <tr>
  122. <td><label for="hda_image">Hard disk image</label></td>
  123. <td><input type="file" id="hda_image"><br></td>
  124. </tr>
  125. <!--
  126. <tr>
  127. <td><label for="multiboot_image">Multiboot kernel image (experimental)</td>
  128. <td><input type="file" id="multiboot_image"><br></td>
  129. </tr>
  130. -->
  131. <tr>
  132. <td><label for="bzimage">Kernel image (bzimage)</label></td>
  133. <td><input type="file" id="bzimage"><br></td>
  134. </tr>
  135. <tr>
  136. <td><label for="initrd">initrd</label></td>
  137. <td><input type="file" id="initrd"><br></td>
  138. </tr>
  139. <tr>
  140. <td><label for="bios">BIOS</label></td>
  141. <td> <input type="file" id="bios"><br></td>
  142. </tr>
  143. <tr>
  144. <td colspan="2"><small>Disk images are not uploaded to the server</small><hr></td>
  145. </tr>
  146. <tr>
  147. <td><label for="memory_size">Memory size</label></td>
  148. <td>
  149. <input id="memory_size" type="number" value="128" min="16" max="2048" step="16"> MB<br>
  150. </td>
  151. </tr>
  152. <tr>
  153. <td><label for="vga_memory_size">Video Memory size</label></td>
  154. <td>
  155. <input id="vga_memory_size" type="number" value="8" min="1" max="128" step="1"> MB<br>
  156. </td>
  157. </tr>
  158. <tr>
  159. <td><label for="relay_url">Networking proxy</label><br>
  160. Presets: <a id="network_none">none</a>, <a id="network_relay">public relay</a>, <a id="network_wisp">wisp</a>, <a id="network_fetch">fetch</a></td>
  161. <td>
  162. <input id="relay_url" type="text" value="wss://relay.widgetry.org/">
  163. </td>
  164. </tr>
  165. <tr>
  166. <td colspan="2"><hr></td>
  167. </tr>
  168. <tr>
  169. <td><label for="disable_audio">Disable audio</label></td>
  170. <td>
  171. <input id="disable_audio" type="checkbox"><br>
  172. </td>
  173. </tr>
  174. <tr>
  175. <td><label for="acpi">Enable ACPI (experimental)</label></td>
  176. <td>
  177. <input id="acpi" type="checkbox"><br>
  178. </td>
  179. </tr>
  180. <tr>
  181. <td colspan="2"><hr></td>
  182. </tr>
  183. <tr>
  184. <td><label for="boot_order">Boot order</label></td>
  185. <td>
  186. <select id="boot_order">
  187. <option value="0">Auto</option>
  188. <option value="213">CD / Floppy / Hard Disk</option>
  189. <option value="123">CD / Hard Disk / Floppy</option>
  190. <option value="231">Floppy / CD / Hard Disk</option>
  191. <option value="321">Floppy / Hard Disk / CD</option>
  192. <option value="312">Hard Disk / Floppy / CD</option>
  193. <option value="132">Hard Disk / CD / Floppy</option>
  194. </select>
  195. </td>
  196. </tr>
  197. </table>
  198. <br>
  199. <button id="start_emulation">Start Emulation</button>
  200. </div>
  201. <div id="runtime_options" style="display: none">
  202. <input type="button" value="Pause" id="run">
  203. <input type="button" value="Reset" id="reset">
  204. <input type="button" value="Exit" id="exit">
  205. <input type="button" value="Send Ctrl-Alt-Del" id="ctrlaltdel">
  206. <input type="button" value="Send Alt-Tab" id="alttab">
  207. <input type="button" value="Get floppy image" id="get_fda_image">
  208. <input type="button" value="Get second floppy image" id="get_fdb_image">
  209. <input type="button" value="Get hard disk image" id="get_hda_image">
  210. <input type="button" value="Get second hard disk image" id="get_hdb_image">
  211. <input type="button" value="Get CD-ROM image" id="get_cdrom_image">
  212. <input type="button" value="Insert floppy image" id="change_fda_image">
  213. <input type="button" value="Save State" id="save_state">
  214. <input type="button" value="Load State" id="load_state"> <input type="file" style="display: none" id="load_state_input">
  215. <input type="button" value="Memory Dump" id="memory_dump">
  216. <input type="button" value="Capture network traffic" id="capture_network_traffic" title="In wireshark: file -> import from hex -> tick direction indication, timestamp %s.%f">
  217. <input type="button" value="Disable mouse" id="toggle_mouse">
  218. <input type="button" value="Lock mouse" id="lock_mouse">
  219. <input type="button" value="Go fullscreen" id="fullscreen">
  220. <input type="button" value="Take screenshot" id="take_screenshot">
  221. <input type="button" value="Mute" id="mute">
  222. <label>
  223. Scale:
  224. <input type="number" min="0.25" step="0.25" value="1.0" id="scale" style="width: 50px">
  225. </label>
  226. <br><br>
  227. </div>
  228. <pre style="display: none" id="loading"></pre>
  229. </div>
  230. <div id="screen_container" style="display: none">
  231. <div id="screen"></div>
  232. <canvas id="vga"></canvas>
  233. <div style="position: absolute; top: 0; z-index: 10">
  234. <textarea class="phone_keyboard"></textarea>
  235. </div>
  236. </div>
  237. <div id="runtime_infos" style="display: none">
  238. Running: <span id="running_time">0s</span> <br>
  239. Speed: <span id="speed">0</span> mIPS<br>
  240. Avg speed: <span id="avg_speed">0</span> mIPS<br>
  241. <br>
  242. <div id="info_storage" style="display: none">
  243. <b>IDE device<span id="ide_type"></span></b><br>
  244. Sectors read: <span id="info_storage_sectors_read">0</span><br>
  245. Bytes read: <span id="info_storage_bytes_read">0</span><br>
  246. Sectors written: <span id="info_storage_sectors_written">0</span><br>
  247. Bytes written: <span id="info_storage_bytes_written">0</span><br>
  248. Status: <span id="info_storage_status"></span><br>
  249. <br>
  250. </div>
  251. <div id="info_filesystem" style="display: none">
  252. <b>9p Filesystem</b><br>
  253. Bytes read: <span id="info_filesystem_bytes_read">0</span><br>
  254. Bytes written: <span id="info_filesystem_bytes_written">0</span><br>
  255. <div style="white-space: nowrap; overflow-x: hidden">Last file: <span id="info_filesystem_last_file"></span></div>
  256. Status: <span id="info_filesystem_status"></span><br>
  257. <br>
  258. </div>
  259. <div id="info_network" style="display: none">
  260. <b>Network</b><br>
  261. Bytes received: <span id="info_network_bytes_received">0</span><br>
  262. Bytes transmitted: <span id="info_network_bytes_transmitted">0</span><br>
  263. <br>
  264. </div>
  265. <b>VGA</b><br>
  266. Mode: <span id="info_vga_mode"></span><br>
  267. Resolution: <span id="info_res">-</span><br>
  268. <br>
  269. Mouse: <span id="info_mouse_enabled">No</span><br>
  270. <div id="description" style="display: none"><br></div>
  271. </div>
  272. <div id="filesystem_panel" style="display: none">
  273. <label>
  274. Send files to emulator<br>
  275. <input type="file" id="filesystem_send_file" multiple>
  276. </label>
  277. <br><br>
  278. <label>
  279. Get file from emulator<br>
  280. <input type="text" id="filesystem_get_file" placeholder="Absolute path">
  281. </label>
  282. </div>
  283. <br style="clear: both"><br>
  284. <div id="terminal"></div>
  285. <br style="clear: both">
  286. <code>Version: <a href="https://github.com/copy/v86/commits/98e7110c2">98e7110c2</a> (Feb 16, 2021 12:02)</code>
  287. <hr>
  288. <a href="debug.html">Enable debug</a>
  289. &mdash;
  290. <a href="https://github.com/copy/v86/blob/master/Readme.md">Readme</a>
  291. &mdash;
  292. <a href="https://github.com/copy/v86">Project on Github</a>
  293. &mdash;
  294. <a href="https://github.com/copy/v86#compatibility">Compatibility</a>