b325e5d36134bf33f7ca7c380ee16d7be233712c
[brainmess.git] / js / context.js
1 var Context = function(prog, inputNode, output) {
2     var tape = new Tape();
3     return {
4         enableInput: function() { 
5             inputNode.disabled=false; 
6             inputNode.value="";
7         },
8         disableInput: function() {
9             inputNode.disabled = true;
10         },
11         endOfProgram: function() { return prog.endOfProgram(); },
12         fetch: function() { return prog.fetch(); },
13         forward: function() { tape.forward(); },
14         backward: function() { tape.backward(); },
15         inc: function() { tape.inc(); },
16         dec: function() { tape.dec(); },
17         testAndJumpForward: function() {
18             if (tape.get() === 0) prog.jumpForward();
19         },
20         testAndJumpBackward: function() {
21             if (tape.get() !== 0) prog.jumpBackward();
22         },
23         input: function(charCode) { 
24             tape.set(charCode);
25         },
26         output: function() {
27             output(tape.get());
28         }
29     };
30 }
31