From eb1f48ad9c90ae3b1ee8104c8fd656213ae3987d Mon Sep 17 00:00:00 2001 From: Aaron Gutierrez Date: Wed, 22 Apr 2015 00:14:46 -0400 Subject: [PATCH] Finished conio, most of string library, changed output and bytecode to textarea --- public/vm/c0ffi.js | 59 ++++++++++++++++++++++++---------------- public/vm/c0vm.js | 6 ++++ public/vm/index.js | 6 ++-- public/vm/vm.js | 68 ++++++++++++++++++++++++++++------------------ views/index.jade | 2 +- 5 files changed, 87 insertions(+), 54 deletions(-) diff --git a/public/vm/c0ffi.js b/public/vm/c0ffi.js index d8b1412..a9ef1a0 100644 --- a/public/vm/c0ffi.js +++ b/public/vm/c0ffi.js @@ -80,33 +80,36 @@ exports.NATIVE_FILE_READLINE = 68 exports.NATIVE_IMAGE_CLONE = 69 exports.NATIVE_IMAGE_CREATE = 70 exports.NATIVE_IMAGE_DATA = 71 -exports.NATIVE_IMAGE_DESTROY = 72 -exports.NATIVE_IMAGE_HEIGHT = 73 -exports.NATIVE_IMAGE_LOAD = 74 -exports.NATIVE_IMAGE_SAVE = 75 -exports.NATIVE_IMAGE_SUBIMAGE = 76 -exports.NATIVE_IMAGE_WIDTH = 77 +exports.NATIVE_IMAGE_HEIGHT = 72 +exports.NATIVE_IMAGE_LOAD = 73 +exports.NATIVE_IMAGE_SAVE = 74 +exports.NATIVE_IMAGE_SUBIMAGE = 75 +exports.NATIVE_IMAGE_WIDTH = 76 /* parse */ -exports.NATIVE_PARSE_BOOL = 78 -exports.NATIVE_PARSE_INT = 79 +exports.NATIVE_INT_TOKENS = 77 +exports.NATIVE_NUM_TOKENS = 78 +exports.NATIVE_PARSE_BOOL = 79 +exports.NATIVE_PARSE_INT = 80 +exports.NATIVE_PARSE_INTS = 81 +exports.NATIVE_PARSE_TOKENS = 82 /* string */ -exports.NATIVE_CHAR_CHR = 80 -exports.NATIVE_CHAR_ORD = 81 -exports.NATIVE_STRING_CHARAT = 82 -exports.NATIVE_STRING_COMPARE = 83 -exports.NATIVE_STRING_EQUAL = 84 -exports.NATIVE_STRING_FROM_CHARARRAY = 85 -exports.NATIVE_STRING_FROMBOOL = 86 -exports.NATIVE_STRING_FROMCHAR = 87 -exports.NATIVE_STRING_FROMINT = 88 -exports.NATIVE_STRING_JOIN = 89 -exports.NATIVE_STRING_LENGTH = 90 -exports.NATIVE_STRING_SUB = 91 -exports.NATIVE_STRING_TERMINATED = 92 -exports.NATIVE_STRING_TO_CHARARRAY = 93 -exports.NATIVE_STRING_TOLOWER = 94 +exports.NATIVE_CHAR_CHR = 83 +exports.NATIVE_CHAR_ORD = 84 +exports.NATIVE_STRING_CHARAT = 85 +exports.NATIVE_STRING_COMPARE = 86 +exports.NATIVE_STRING_EQUAL = 87 +exports.NATIVE_STRING_FROM_CHARARRAY = 88 +exports.NATIVE_STRING_FROMBOOL = 89 +exports.NATIVE_STRING_FROMCHAR = 90 +exports.NATIVE_STRING_FROMINT = 91 +exports.NATIVE_STRING_JOIN = 92 +exports.NATIVE_STRING_LENGTH = 93 +exports.NATIVE_STRING_SUB = 94 +exports.NATIVE_STRING_TERMINATED = 95 +exports.NATIVE_STRING_TO_CHARARRAY = 96 +exports.NATIVE_STRING_TOLOWER = 97 callbacks = {}; callbacks[exports.NATIVE_STRING_LENGTH] = @@ -150,4 +153,14 @@ callbacks[exports.NATIVE_CHAR_ORD] = return args[0]; }; +callbacks[exports.NATIVE_STRING_COMPARE] = function(args) { + if (args[0] < args[1]) return -1; + if (args[0] > args[1]) return 1; + return 0; +} + +callbacks[exports.NATIVE_STRING_EQUAL] = function(args) { + return args[0] === args[1]; +} + exports.default_callbacks = callbacks; diff --git a/public/vm/c0vm.js b/public/vm/c0vm.js index d2f9b72..9f47047 100755 --- a/public/vm/c0vm.js +++ b/public/vm/c0vm.js @@ -525,6 +525,12 @@ function execute(file, callbacks, v) { return run_vm(state); } +function push(v) { + console.log("Pretend I pushed " + v); +} + + exports.execute = execute; exports.initialize_vm = initialize_vm; exports.run_vm = run_vm; +exports.push = push; diff --git a/public/vm/index.js b/public/vm/index.js index 0941090..4b9d8ce 100644 --- a/public/vm/index.js +++ b/public/vm/index.js @@ -38,11 +38,11 @@ callbacks[c0ffi.NATIVE_PRINTBOOL] = function(args) { 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]); - return 0; } console.log(callbacks); diff --git a/public/vm/vm.js b/public/vm/vm.js index 37ce26a..2c76175 100644 --- a/public/vm/vm.js +++ b/public/vm/vm.js @@ -240,33 +240,36 @@ exports.NATIVE_FILE_READLINE = 68 exports.NATIVE_IMAGE_CLONE = 69 exports.NATIVE_IMAGE_CREATE = 70 exports.NATIVE_IMAGE_DATA = 71 -exports.NATIVE_IMAGE_DESTROY = 72 -exports.NATIVE_IMAGE_HEIGHT = 73 -exports.NATIVE_IMAGE_LOAD = 74 -exports.NATIVE_IMAGE_SAVE = 75 -exports.NATIVE_IMAGE_SUBIMAGE = 76 -exports.NATIVE_IMAGE_WIDTH = 77 +exports.NATIVE_IMAGE_HEIGHT = 72 +exports.NATIVE_IMAGE_LOAD = 73 +exports.NATIVE_IMAGE_SAVE = 74 +exports.NATIVE_IMAGE_SUBIMAGE = 75 +exports.NATIVE_IMAGE_WIDTH = 76 /* parse */ -exports.NATIVE_PARSE_BOOL = 78 -exports.NATIVE_PARSE_INT = 79 +exports.NATIVE_INT_TOKENS = 77 +exports.NATIVE_NUM_TOKENS = 78 +exports.NATIVE_PARSE_BOOL = 79 +exports.NATIVE_PARSE_INT = 80 +exports.NATIVE_PARSE_INTS = 81 +exports.NATIVE_PARSE_TOKENS = 82 /* string */ -exports.NATIVE_CHAR_CHR = 80 -exports.NATIVE_CHAR_ORD = 81 -exports.NATIVE_STRING_CHARAT = 82 -exports.NATIVE_STRING_COMPARE = 83 -exports.NATIVE_STRING_EQUAL = 84 -exports.NATIVE_STRING_FROM_CHARARRAY = 85 -exports.NATIVE_STRING_FROMBOOL = 86 -exports.NATIVE_STRING_FROMCHAR = 87 -exports.NATIVE_STRING_FROMINT = 88 -exports.NATIVE_STRING_JOIN = 89 -exports.NATIVE_STRING_LENGTH = 90 -exports.NATIVE_STRING_SUB = 91 -exports.NATIVE_STRING_TERMINATED = 92 -exports.NATIVE_STRING_TO_CHARARRAY = 93 -exports.NATIVE_STRING_TOLOWER = 94 +exports.NATIVE_CHAR_CHR = 83 +exports.NATIVE_CHAR_ORD = 84 +exports.NATIVE_STRING_CHARAT = 85 +exports.NATIVE_STRING_COMPARE = 86 +exports.NATIVE_STRING_EQUAL = 87 +exports.NATIVE_STRING_FROM_CHARARRAY = 88 +exports.NATIVE_STRING_FROMBOOL = 89 +exports.NATIVE_STRING_FROMCHAR = 90 +exports.NATIVE_STRING_FROMINT = 91 +exports.NATIVE_STRING_JOIN = 92 +exports.NATIVE_STRING_LENGTH = 93 +exports.NATIVE_STRING_SUB = 94 +exports.NATIVE_STRING_TERMINATED = 95 +exports.NATIVE_STRING_TO_CHARARRAY = 96 +exports.NATIVE_STRING_TOLOWER = 97 callbacks = {}; callbacks[exports.NATIVE_STRING_LENGTH] = @@ -310,6 +313,12 @@ callbacks[exports.NATIVE_CHAR_ORD] = return args[0]; }; +callbacks[exports.NATIVE_STRING_COMPARE] = function(args) { + if (args[0] < args[1]) return -1; + if (args[0] > args[1]) return 1; + return 0; +} + exports.default_callbacks = callbacks; },{}],4:[function(require,module,exports){ @@ -840,9 +849,15 @@ function execute(file, callbacks, v) { return run_vm(state); } +function push(v) { + console.log("Pretend I pushed " + v); +} + + exports.execute = execute; exports.initialize_vm = initialize_vm; exports.run_vm = run_vm; +exports.push = push; },{"./opcodes":6}],5:[function(require,module,exports){ parser = require("./bytecode-parser"); @@ -885,12 +900,11 @@ callbacks[c0ffi.NATIVE_PRINTBOOL] = function(args) { 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]); - return 0; } console.log(callbacks); diff --git a/views/index.jade b/views/index.jade index 0e2e974..29d2f5f 100644 --- a/views/index.jade +++ b/views/index.jade @@ -23,7 +23,7 @@ block body .col-md-6 p.lbl. Bytecode - textarea#bytecode.panel.panel-default.code.sh_c. + textarea.code.formControl.sh_c(rows="12" id="bytecode")   .row .col-md-12