Files
c0db/public/vm/index.js
2015-04-22 00:14:46 -04:00

58 lines
1.4 KiB
JavaScript

parser = require("./bytecode-parser");
c0vm = require("./c0vm.js");
c0ffi = require("./c0ffi.js");
// console.log("Reading in sample bytecode file:");
// console.log(parser.getBytes("../test/test.bc0"));
// console.log("That was the sample bytecode file" +
// " -- it probably took up your whole terminal screen.");
// var file = parser.parse("../test/test.bc0");
// console.log(file);
// console.log(file.function_pool[0].code);
// UI interaction functions
function print(arg) {
// $("#output").append(arg);
$("#output").val($("#output").val() + arg);
}
callbacks = c0ffi.default_callbacks;
// conio
callbacks[c0ffi.NATIVE_PRINT] = function(args) {
print(args[0]);
return 0;
}
callbacks[c0ffi.NATIVE_PRINTLN] = function(args) {
print(args[0]);
print("\n");
}
callbacks[c0ffi.NATIVE_PRINTBOOL] = function(args) {
if (args[0])
print("false");
else
print("true");
}
callbacks[c0ffi.NATIVE_PRINTCHAR] = function(args) {
print(String.fromCharCode(args[0]));
}
callbacks[c0ffi.NATIVE_READLINE] = function(args) {
return prompt("","");
}
callbacks[c0ffi.NATIVE_PRINTINT] = function(args) {
print(args[0]);
}
console.log(callbacks);
$("#run").click(function() {
var input = $("#bytecode").val().replace(/(\r\n|\n|\r)/gm,"");
$("#output").val("");
var file = parser.parse($("#bytecode").val());
print(c0vm.execute(file, callbacks));
});