nodejs.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/env node
  2. "use strict";
  3. var fs = require("fs");
  4. var V86Starter = require("../build/libv86.js").V86Starter;
  5. function readfile(path)
  6. {
  7. return new Uint8Array(fs.readFileSync(path)).buffer;
  8. }
  9. var bios = readfile(__dirname + "/../bios/seabios.bin");
  10. var linux = readfile(__dirname + "/../images/linux.iso");
  11. process.stdin.setRawMode(true);
  12. process.stdin.resume();
  13. process.stdin.setEncoding("utf8");
  14. var boot_start = Date.now();
  15. var booted = false;
  16. console.log("Now booting, please stand by ...");
  17. var emulator = new V86Starter({
  18. bios: { buffer: bios },
  19. cdrom: { buffer: linux },
  20. autostart: true,
  21. });
  22. emulator.add_listener("serial0-output-char", function(chr)
  23. {
  24. if(!booted)
  25. {
  26. var now = Date.now();
  27. console.log("Took %dms to boot", now - boot_start);
  28. booted = true;
  29. }
  30. process.stdout.write(chr);
  31. });
  32. process.stdin.on("data", function(c)
  33. {
  34. if(c === "\u0003")
  35. {
  36. // ctrl c
  37. emulator.stop();
  38. process.stdin.pause();
  39. }
  40. else
  41. {
  42. emulator.serial0_send(c);
  43. }
  44. });