aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuchen Pei <me@ypei.me>2018-01-17 14:49:06 +0100
committerYuchen Pei <me@ypei.me>2018-01-17 14:49:06 +0100
commitee04ea4cf4e679b53180bcbbef8705078457af33 (patch)
tree24890a5d1868beb1e66c885ec6675a80ee44c441
parent92a5b522d7ee885e42279233039e1ae9394bfb0b (diff)
finished Output
-rw-r--r--projects/12/Output.jack58
-rw-r--r--projects/12/OutputTest/Main.vm254
-rw-r--r--projects/12/OutputTest/Output.jack298
-rw-r--r--projects/12/OutputTest/Output.vm1821
4 files changed, 2426 insertions, 5 deletions
diff --git a/projects/12/Output.jack b/projects/12/Output.jack
index 082734c..a0cb284 100644
--- a/projects/12/Output.jack
+++ b/projects/12/Output.jack
@@ -180,6 +180,10 @@ class Output {
* and erases the character displayed there. */
function void moveCursor(int i, int j) {
var int x, y;
+ let x = cursorI * 8;
+ let y = cursorJ * 11;
+ do Screen.setColor(false);
+ do Screen.drawRectangle(x, y, x + 7, y + 10);
let x = j * 8;
let y = i * 11;
do Screen.setColor(true);
@@ -194,15 +198,19 @@ class Output {
function void printChar(char c) {
var int k, x, y, addr;
var Array cm;
- if (c = 8) {
- do Output.backspace();
+ if (c = 8) { //backspace
+ do Output.backSpace();
+ return;
+ }
+ if (c = 10) { //newline
+ do Output.println();
return;
}
let k = 0;
let x = cursorI / 2;
- let y = cursorI - (x * 2); // y = 0: lsb, y = 1: msb
+ let y = cursorI - (x * 2); // y = 0: lsb, y = 1: msb
let addr = cursorJ * 352 + x + 16384;
- let cm = getMap(c);
+ let cm = Output.getMap(c);
while (k < 11) {
if (y = 0){
do Memory.poke(addr, Memory.peek(addr) & (-128) + cm[k]);
@@ -212,7 +220,7 @@ class Output {
let k = k + 1;
let addr = addr + 32;
}
- if (cursorJ = 31) {
+ if (cursorJ = 63) {
do Output.moveCursor(cursorI + 1, 0);
} else {
do Output.moveCursor(cursorI, cursorJ + 1);
@@ -223,18 +231,58 @@ class Output {
/** displays the given string starting at the cursor location,
* and advances the cursor appropriately. */
function void printString(String s) {
+ var int i;
+ var int n;
+ let i = 0;
+ let n = s.length();
+ while (i < n) {
+ do Output.printChar(s.charAt(i));
+ let i = i + 1;
+ }
+ return;
}
/** Displays the given integer starting at the cursor location,
* and advances the cursor appropriately. */
function void printInt(int i) {
+ var int n, k;
+ var String s;
+ if (i = 0) {
+ do Output.printChar(48);
+ return;
+ }
+ let n = i;
+ if (i < 0) {
+ do Output.printChar(45);
+ let n = -n;
+ }
+ let s = "";
+ while (n > 0) {
+ let k = n / 10;
+ do s.appendChar(48 + n - (k * 10));
+ let n = k;
+ }
+ let k = s.length();
+ while (k > 0) {
+ do Output.printChar(s.charAt(k));
+ let k = k - 1;
+ }
+ return;
}
/** Advances the cursor to the beginning of the next line. */
function void println() {
+ do Output.moveCursor(cursorI, 0);
+ return;
}
/** Moves the cursor one column back. */
function void backSpace() {
+ if (cursorJ > 0) {
+ do Output.moveCursor(cursorI - 1, 63);
+ } else {
+ do Output.moveCursor(cursorI, cursorJ - 1);
+ }
+ return;
}
}
diff --git a/projects/12/OutputTest/Main.vm b/projects/12/OutputTest/Main.vm
new file mode 100644
index 0000000..0a4c951
--- /dev/null
+++ b/projects/12/OutputTest/Main.vm
@@ -0,0 +1,254 @@
+function Main.main 1
+push constant 1
+call String.new 1
+pop local 0
+push local 0
+call String.doubleQuote 0
+call String.appendChar 2
+pop temp 0
+push constant 0
+push constant 63
+call Output.moveCursor 2
+pop temp 0
+push constant 66
+call Output.printChar 1
+pop temp 0
+push constant 22
+push constant 0
+call Output.moveCursor 2
+pop temp 0
+push constant 67
+call Output.printChar 1
+pop temp 0
+push constant 22
+push constant 63
+call Output.moveCursor 2
+pop temp 0
+push constant 68
+call Output.printChar 1
+pop temp 0
+push constant 65
+call Output.printChar 1
+pop temp 0
+push constant 2
+push constant 0
+call Output.moveCursor 2
+pop temp 0
+push constant 10
+call String.new 1
+push constant 48
+call String.appendChar 2
+push constant 49
+call String.appendChar 2
+push constant 50
+call String.appendChar 2
+push constant 51
+call String.appendChar 2
+push constant 52
+call String.appendChar 2
+push constant 53
+call String.appendChar 2
+push constant 54
+call String.appendChar 2
+push constant 55
+call String.appendChar 2
+push constant 56
+call String.appendChar 2
+push constant 57
+call String.appendChar 2
+call Output.printString 1
+pop temp 0
+call Output.println 0
+pop temp 0
+push constant 53
+call String.new 1
+push constant 65
+call String.appendChar 2
+push constant 66
+call String.appendChar 2
+push constant 67
+call String.appendChar 2
+push constant 68
+call String.appendChar 2
+push constant 69
+call String.appendChar 2
+push constant 70
+call String.appendChar 2
+push constant 71
+call String.appendChar 2
+push constant 72
+call String.appendChar 2
+push constant 73
+call String.appendChar 2
+push constant 74
+call String.appendChar 2
+push constant 75
+call String.appendChar 2
+push constant 76
+call String.appendChar 2
+push constant 77
+call String.appendChar 2
+push constant 78
+call String.appendChar 2
+push constant 79
+call String.appendChar 2
+push constant 80
+call String.appendChar 2
+push constant 81
+call String.appendChar 2
+push constant 82
+call String.appendChar 2
+push constant 83
+call String.appendChar 2
+push constant 84
+call String.appendChar 2
+push constant 85
+call String.appendChar 2
+push constant 86
+call String.appendChar 2
+push constant 87
+call String.appendChar 2
+push constant 88
+call String.appendChar 2
+push constant 89
+call String.appendChar 2
+push constant 90
+call String.appendChar 2
+push constant 32
+call String.appendChar 2
+push constant 97
+call String.appendChar 2
+push constant 98
+call String.appendChar 2
+push constant 99
+call String.appendChar 2
+push constant 100
+call String.appendChar 2
+push constant 101
+call String.appendChar 2
+push constant 102
+call String.appendChar 2
+push constant 103
+call String.appendChar 2
+push constant 104
+call String.appendChar 2
+push constant 105
+call String.appendChar 2
+push constant 106
+call String.appendChar 2
+push constant 107
+call String.appendChar 2
+push constant 108
+call String.appendChar 2
+push constant 109
+call String.appendChar 2
+push constant 110
+call String.appendChar 2
+push constant 111
+call String.appendChar 2
+push constant 112
+call String.appendChar 2
+push constant 113
+call String.appendChar 2
+push constant 114
+call String.appendChar 2
+push constant 115
+call String.appendChar 2
+push constant 116
+call String.appendChar 2
+push constant 117
+call String.appendChar 2
+push constant 118
+call String.appendChar 2
+push constant 119
+call String.appendChar 2
+push constant 120
+call String.appendChar 2
+push constant 121
+call String.appendChar 2
+push constant 122
+call String.appendChar 2
+call Output.printString 1
+pop temp 0
+call Output.println 0
+pop temp 0
+push constant 30
+call String.new 1
+push constant 33
+call String.appendChar 2
+push constant 35
+call String.appendChar 2
+push constant 36
+call String.appendChar 2
+push constant 37
+call String.appendChar 2
+push constant 38
+call String.appendChar 2
+push constant 39
+call String.appendChar 2
+push constant 40
+call String.appendChar 2
+push constant 41
+call String.appendChar 2
+push constant 42
+call String.appendChar 2
+push constant 43
+call String.appendChar 2
+push constant 44
+call String.appendChar 2
+push constant 45
+call String.appendChar 2
+push constant 46
+call String.appendChar 2
+push constant 47
+call String.appendChar 2
+push constant 58
+call String.appendChar 2
+push constant 59
+call String.appendChar 2
+push constant 60
+call String.appendChar 2
+push constant 61
+call String.appendChar 2
+push constant 62
+call String.appendChar 2
+push constant 63
+call String.appendChar 2
+push constant 64
+call String.appendChar 2
+push constant 91
+call String.appendChar 2
+push constant 93
+call String.appendChar 2
+push constant 94
+call String.appendChar 2
+push constant 95
+call String.appendChar 2
+push constant 96
+call String.appendChar 2
+push constant 123
+call String.appendChar 2
+push constant 124
+call String.appendChar 2
+push constant 125
+call String.appendChar 2
+push constant 126
+call String.appendChar 2
+call Output.printString 1
+pop temp 0
+push local 0
+call Output.printString 1
+pop temp 0
+call Output.println 0
+pop temp 0
+push constant 12345
+neg
+call Output.printInt 1
+pop temp 0
+call Output.backSpace 0
+pop temp 0
+push constant 6789
+call Output.printInt 1
+pop temp 0
+push constant 0
+return
diff --git a/projects/12/OutputTest/Output.jack b/projects/12/OutputTest/Output.jack
new file mode 100644
index 0000000..369c0d3
--- /dev/null
+++ b/projects/12/OutputTest/Output.jack
@@ -0,0 +1,298 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/12/Output.jack
+
+/**
+ * A library of functions for writing text on the screen.
+ * The Hack physical screen consists of 512 rows of 256 pixels each.
+ * The library uses a fixed font, in which each character is displayed
+ * within a frame which is 11 pixels high (including 1 pixel for inter-line
+ * spacing) and 8 pixels wide (including 2 pixels for inter-character spacing).
+ * The resulting grid accommodates 23 rows (indexed 0..22, top to bottom)
+ * of 64 characters each (indexed 0..63, left to right). The top left
+ * character position on the screen is indexed (0,0). A cursor, implemented
+ * as a small filled square, indicates where the next character will be displayed.
+ */
+class Output {
+
+ // Character map for displaying characters
+ static Array charMaps;
+ static int cursorI, cursorJ;
+
+ /** Initializes the screen, and locates the cursor at the screen's top-left. */
+ function void init() {
+ do Output.initMap();
+ do Output.moveCursor(0, 0);
+ return;
+ }
+
+ // Initializes the character map array
+ function void initMap() {
+ var int i;
+
+ let charMaps = Array.new(127);
+
+ // Black square, used for displaying non-printable characters.
+ do Output.create(0,63,63,63,63,63,63,63,63,63,0,0);
+
+ // Assigns the bitmap for each character in the charachter set.
+ // The first parameter is the character index, the next 11 numbers
+ // are the values of each row in the frame that represents this character.
+ do Output.create(32,0,0,0,0,0,0,0,0,0,0,0); //
+ do Output.create(33,12,30,30,30,12,12,0,12,12,0,0); // !
+ do Output.create(34,54,54,20,0,0,0,0,0,0,0,0); // "
+ do Output.create(35,0,18,18,63,18,18,63,18,18,0,0); // #
+ do Output.create(36,12,30,51,3,30,48,51,30,12,12,0); // $
+ do Output.create(37,0,0,35,51,24,12,6,51,49,0,0); // %
+ do Output.create(38,12,30,30,12,54,27,27,27,54,0,0); // &
+ do Output.create(39,12,12,6,0,0,0,0,0,0,0,0); // '
+ do Output.create(40,24,12,6,6,6,6,6,12,24,0,0); // (
+ do Output.create(41,6,12,24,24,24,24,24,12,6,0,0); // )
+ do Output.create(42,0,0,0,51,30,63,30,51,0,0,0); // *
+ do Output.create(43,0,0,0,12,12,63,12,12,0,0,0); // +
+ do Output.create(44,0,0,0,0,0,0,0,12,12,6,0); // ,
+ do Output.create(45,0,0,0,0,0,63,0,0,0,0,0); // -
+ do Output.create(46,0,0,0,0,0,0,0,12,12,0,0); // .
+ do Output.create(47,0,0,32,48,24,12,6,3,1,0,0); // /
+
+ do Output.create(48,12,30,51,51,51,51,51,30,12,0,0); // 0
+ do Output.create(49,12,14,15,12,12,12,12,12,63,0,0); // 1
+ do Output.create(50,30,51,48,24,12,6,3,51,63,0,0); // 2
+ do Output.create(51,30,51,48,48,28,48,48,51,30,0,0); // 3
+ do Output.create(52,16,24,28,26,25,63,24,24,60,0,0); // 4
+ do Output.create(53,63,3,3,31,48,48,48,51,30,0,0); // 5
+ do Output.create(54,28,6,3,3,31,51,51,51,30,0,0); // 6
+ do Output.create(55,63,49,48,48,24,12,12,12,12,0,0); // 7
+ do Output.create(56,30,51,51,51,30,51,51,51,30,0,0); // 8
+ do Output.create(57,30,51,51,51,62,48,48,24,14,0,0); // 9
+
+ do Output.create(58,0,0,12,12,0,0,12,12,0,0,0); // :
+ do Output.create(59,0,0,12,12,0,0,12,12,6,0,0); // ;
+ do Output.create(60,0,0,24,12,6,3,6,12,24,0,0); // <
+ do Output.create(61,0,0,0,63,0,0,63,0,0,0,0); // =
+ do Output.create(62,0,0,3,6,12,24,12,6,3,0,0); // >
+ do Output.create(64,30,51,51,59,59,59,27,3,30,0,0); // @
+ do Output.create(63,30,51,51,24,12,12,0,12,12,0,0); // ?
+
+ do Output.create(65,12,12,30,30,51,51,63,51,51,0,0); // A
+ do Output.create(66,31,51,51,51,31,51,51,51,31,0,0); // B
+ do Output.create(67,28,54,35,3,3,3,35,54,28,0,0); // C
+ do Output.create(68,15,27,51,51,51,51,51,27,15,0,0); // D
+ do Output.create(69,63,51,35,11,15,11,35,51,63,0,0); // E
+ do Output.create(70,63,51,35,11,15,11,3,3,3,0,0); // F
+ do Output.create(71,28,54,35,3,59,51,51,54,44,0,0); // G
+ do Output.create(72,51,51,51,51,63,51,51,51,51,0,0); // H
+ do Output.create(73,30,12,12,12,12,12,12,12,30,0,0); // I
+ do Output.create(74,60,24,24,24,24,24,27,27,14,0,0); // J
+ do Output.create(75,51,51,51,27,15,27,51,51,51,0,0); // K
+ do Output.create(76,3,3,3,3,3,3,35,51,63,0,0); // L
+ do Output.create(77,33,51,63,63,51,51,51,51,51,0,0); // M
+ do Output.create(78,51,51,55,55,63,59,59,51,51,0,0); // N
+ do Output.create(79,30,51,51,51,51,51,51,51,30,0,0); // O
+ do Output.create(80,31,51,51,51,31,3,3,3,3,0,0); // P
+ do Output.create(81,30,51,51,51,51,51,63,59,30,48,0);// Q
+ do Output.create(82,31,51,51,51,31,27,51,51,51,0,0); // R
+ do Output.create(83,30,51,51,6,28,48,51,51,30,0,0); // S
+ do Output.create(84,63,63,45,12,12,12,12,12,30,0,0); // T
+ do Output.create(85,51,51,51,51,51,51,51,51,30,0,0); // U
+ do Output.create(86,51,51,51,51,51,30,30,12,12,0,0); // V
+ do Output.create(87,51,51,51,51,51,63,63,63,18,0,0); // W
+ do Output.create(88,51,51,30,30,12,30,30,51,51,0,0); // X
+ do Output.create(89,51,51,51,51,30,12,12,12,30,0,0); // Y
+ do Output.create(90,63,51,49,24,12,6,35,51,63,0,0); // Z
+
+ do Output.create(91,30,6,6,6,6,6,6,6,30,0,0); // [
+ do Output.create(92,0,0,1,3,6,12,24,48,32,0,0); // \
+ do Output.create(93,30,24,24,24,24,24,24,24,30,0,0); // ]
+ do Output.create(94,8,28,54,0,0,0,0,0,0,0,0); // ^
+ do Output.create(95,0,0,0,0,0,0,0,0,0,63,0); // _
+ do Output.create(96,6,12,24,0,0,0,0,0,0,0,0); // `
+
+ do Output.create(97,0,0,0,14,24,30,27,27,54,0,0); // a
+ do Output.create(98,3,3,3,15,27,51,51,51,30,0,0); // b
+ do Output.create(99,0,0,0,30,51,3,3,51,30,0,0); // c
+ do Output.create(100,48,48,48,60,54,51,51,51,30,0,0); // d
+ do Output.create(101,0,0,0,30,51,63,3,51,30,0,0); // e
+ do Output.create(102,28,54,38,6,15,6,6,6,15,0,0); // f
+ do Output.create(103,0,0,30,51,51,51,62,48,51,30,0); // g
+ do Output.create(104,3,3,3,27,55,51,51,51,51,0,0); // h
+ do Output.create(105,12,12,0,14,12,12,12,12,30,0,0); // i
+ do Output.create(106,48,48,0,56,48,48,48,48,51,30,0); // j
+ do Output.create(107,3,3,3,51,27,15,15,27,51,0,0); // k
+ do Output.create(108,14,12,12,12,12,12,12,12,30,0,0); // l
+ do Output.create(109,0,0,0,29,63,43,43,43,43,0,0); // m
+ do Output.create(110,0,0,0,29,51,51,51,51,51,0,0); // n
+ do Output.create(111,0,0,0,30,51,51,51,51,30,0,0); // o
+ do Output.create(112,0,0,0,30,51,51,51,31,3,3,0); // p
+ do Output.create(113,0,0,0,30,51,51,51,62,48,48,0); // q
+ do Output.create(114,0,0,0,29,55,51,3,3,7,0,0); // r
+ do Output.create(115,0,0,0,30,51,6,24,51,30,0,0); // s
+ do Output.create(116,4,6,6,15,6,6,6,54,28,0,0); // t
+ do Output.create(117,0,0,0,27,27,27,27,27,54,0,0); // u
+ do Output.create(118,0,0,0,51,51,51,51,30,12,0,0); // v
+ do Output.create(119,0,0,0,51,51,51,63,63,18,0,0); // w
+ do Output.create(120,0,0,0,51,30,12,12,30,51,0,0); // x
+ do Output.create(121,0,0,0,51,51,51,62,48,24,15,0); // y
+ do Output.create(122,0,0,0,63,27,12,6,51,63,0,0); // z
+
+ do Output.create(123,56,12,12,12,7,12,12,12,56,0,0); // {
+ do Output.create(124,12,12,12,12,12,12,12,12,12,0,0); // |
+ do Output.create(125,7,12,12,12,56,12,12,12,7,0,0); // }
+ do Output.create(126,38,45,25,0,0,0,0,0,0,0,0); // ~
+
+ return;
+ }
+
+ // Creates the character map array of the given character index, using the given values.
+ function void create(int index, int a, int b, int c, int d, int e,
+ int f, int g, int h, int i, int j, int k) {
+ var Array map;
+
+ let map = Array.new(11);
+ let charMaps[index] = map;
+
+ let map[0] = a;
+ let map[1] = b;
+ let map[2] = c;
+ let map[3] = d;
+ let map[4] = e;
+ let map[5] = f;
+ let map[6] = g;
+ let map[7] = h;
+ let map[8] = i;
+ let map[9] = j;
+ let map[10] = k;
+
+ return;
+ }
+
+ // Returns the character map (array of size 11) of the given character.
+ // If the given character is invalid or non-printable, returns the
+ // character map of a black square.
+ function Array getMap(char c) {
+ if ((c < 32) | (c > 126)) {
+ let c = 0;
+ }
+ return charMaps[c];
+ }
+
+ /** Moves the cursor to the j-th column of the i-th row,
+ * and erases the character displayed there. */
+ function void moveCursor(int i, int j) {
+ var int x, y;
+ let x = cursorJ * 8;
+ let y = cursorI * 11;
+ do Screen.setColor(false);
+ do Screen.drawRectangle(x, y, x + 7, y + 10);
+ let x = j * 8;
+ let y = i * 11;
+ do Screen.setColor(true);
+ do Screen.drawRectangle(x, y, x + 7, y + 10);
+ let cursorI = i;
+ let cursorJ = j;
+ return;
+ }
+
+ /** Displays the given character at the cursor location,
+ * and advances the cursor one column forward. */
+ function void printChar(char c) {
+ var int k, x, y, addr;
+ var Array cm;
+ if (c = 8) {
+ do Output.backSpace();
+ return;
+ }
+ if (cursorI = 22) {
+ if (c = 10) {
+ return;
+ }
+ if (cursorJ = 63) {
+ return;
+ }
+ }
+ if (c = 10) {
+ do Output.println();
+ }
+ let k = 0;
+ let x = cursorJ / 2;
+ let y = cursorJ - (x * 2); // y = 0: lsb, y = 1: msb
+ let addr = cursorI * 352 + x + 16384;
+ let cm = Output.getMap(c);
+ if (cursorJ = 63) {
+ do Output.moveCursor(cursorI + 1, 0);
+ } else {
+ do Output.moveCursor(cursorI, cursorJ + 1);
+ }
+ while (k < 11) {
+ if (y = 0){
+ do Memory.poke(addr, Memory.peek(addr) & (-128) + cm[k]);
+ } else {
+ do Memory.poke(addr, Memory.peek(addr) & 255 + (cm[k] * 256));
+ }
+ let k = k + 1;
+ let addr = addr + 32;
+ }
+ return;
+ }
+
+ /** displays the given string starting at the cursor location,
+ * and advances the cursor appropriately. */
+ function void printString(String s) {
+ var int i;
+ var int n;
+ let i = 0;
+ let n = s.length();
+ while (i < n) {
+ do Output.printChar(s.charAt(i));
+ let i = i + 1;
+ }
+ return;
+ }
+
+ /** Displays the given integer starting at the cursor location,
+ * and advances the cursor appropriately. */
+ function void printInt(int i) {
+ var int n, k, j;
+ var Array s;
+ if (i = 0) {
+ do Output.printChar(48);
+ return;
+ }
+ let n = i;
+ if (i < 0) {
+ do Output.printChar(45);
+ let n = -n;
+ }
+ let s = Array.new(5);
+ let j = 0;
+ while (n > 0) {
+ let k = n / 10;
+ let s[j] = 48 + n - (k * 10);
+ let n = k;
+ let j = j + 1;
+ }
+ while (j > 0) {
+ let j = j - 1;
+ do Output.printChar(s[j]);
+ }
+ //do Output.printString(s);
+ return;
+ }
+
+ /** Advances the cursor to the beginning of the next line. */
+ function void println() {
+ do Output.moveCursor(cursorI + 1, 0);
+ return;
+ }
+
+ /** Moves the cursor one column back. */
+ function void backSpace() {
+ if (cursorJ > 0) {
+ do Output.moveCursor(cursorI, cursorJ - 1);
+ } else {
+ do Output.moveCursor(cursorI - 1, 63);
+ }
+ return;
+ }
+}
diff --git a/projects/12/OutputTest/Output.vm b/projects/12/OutputTest/Output.vm
new file mode 100644
index 0000000..8d6e74c
--- /dev/null
+++ b/projects/12/OutputTest/Output.vm
@@ -0,0 +1,1821 @@
+function Output.init 0
+call Output.initMap 0
+pop temp 0
+push constant 0
+push constant 0
+call Output.moveCursor 2
+pop temp 0
+push constant 0
+return
+function Output.initMap 1
+push constant 127
+call Array.new 1
+pop static 0
+push constant 0
+push constant 63
+push constant 63
+push constant 63
+push constant 63
+push constant 63
+push constant 63
+push constant 63
+push constant 63
+push constant 63
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 32
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 33
+push constant 12
+push constant 30
+push constant 30
+push constant 30
+push constant 12
+push constant 12
+push constant 0
+push constant 12
+push constant 12
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 34
+push constant 54
+push constant 54
+push constant 20
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 35
+push constant 0
+push constant 18
+push constant 18
+push constant 63
+push constant 18
+push constant 18
+push constant 63
+push constant 18
+push constant 18
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 36
+push constant 12
+push constant 30
+push constant 51
+push constant 3
+push constant 30
+push constant 48
+push constant 51
+push constant 30
+push constant 12
+push constant 12
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 37
+push constant 0
+push constant 0
+push constant 35
+push constant 51
+push constant 24
+push constant 12
+push constant 6
+push constant 51
+push constant 49
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 38
+push constant 12
+push constant 30
+push constant 30
+push constant 12
+push constant 54
+push constant 27
+push constant 27
+push constant 27
+push constant 54
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 39
+push constant 12
+push constant 12
+push constant 6
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 40
+push constant 24
+push constant 12
+push constant 6
+push constant 6
+push constant 6
+push constant 6
+push constant 6
+push constant 12
+push constant 24
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 41
+push constant 6
+push constant 12
+push constant 24
+push constant 24
+push constant 24
+push constant 24
+push constant 24
+push constant 12
+push constant 6
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 42
+push constant 0
+push constant 0
+push constant 0
+push constant 51
+push constant 30
+push constant 63
+push constant 30
+push constant 51
+push constant 0
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 43
+push constant 0
+push constant 0
+push constant 0
+push constant 12
+push constant 12
+push constant 63
+push constant 12
+push constant 12
+push constant 0
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 44
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 12
+push constant 12
+push constant 6
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 45
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 63
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 46
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 12
+push constant 12
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 47
+push constant 0
+push constant 0
+push constant 32
+push constant 48
+push constant 24
+push constant 12
+push constant 6
+push constant 3
+push constant 1
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 48
+push constant 12
+push constant 30
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 30
+push constant 12
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 49
+push constant 12
+push constant 14
+push constant 15
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 63
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 50
+push constant 30
+push constant 51
+push constant 48
+push constant 24
+push constant 12
+push constant 6
+push constant 3
+push constant 51
+push constant 63
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 51
+push constant 30
+push constant 51
+push constant 48
+push constant 48
+push constant 28
+push constant 48
+push constant 48
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 52
+push constant 16
+push constant 24
+push constant 28
+push constant 26
+push constant 25
+push constant 63
+push constant 24
+push constant 24
+push constant 60
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 53
+push constant 63
+push constant 3
+push constant 3
+push constant 31
+push constant 48
+push constant 48
+push constant 48
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 54
+push constant 28
+push constant 6
+push constant 3
+push constant 3
+push constant 31
+push constant 51
+push constant 51
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 55
+push constant 63
+push constant 49
+push constant 48
+push constant 48
+push constant 24
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 56
+push constant 30
+push constant 51
+push constant 51
+push constant 51
+push constant 30
+push constant 51
+push constant 51
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 57
+push constant 30
+push constant 51
+push constant 51
+push constant 51
+push constant 62
+push constant 48
+push constant 48
+push constant 24
+push constant 14
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 58
+push constant 0
+push constant 0
+push constant 12
+push constant 12
+push constant 0
+push constant 0
+push constant 12
+push constant 12
+push constant 0
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 59
+push constant 0
+push constant 0
+push constant 12
+push constant 12
+push constant 0
+push constant 0
+push constant 12
+push constant 12
+push constant 6
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 60
+push constant 0
+push constant 0
+push constant 24
+push constant 12
+push constant 6
+push constant 3
+push constant 6
+push constant 12
+push constant 24
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 61
+push constant 0
+push constant 0
+push constant 0
+push constant 63
+push constant 0
+push constant 0
+push constant 63
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 62
+push constant 0
+push constant 0
+push constant 3
+push constant 6
+push constant 12
+push constant 24
+push constant 12
+push constant 6
+push constant 3
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 64
+push constant 30
+push constant 51
+push constant 51
+push constant 59
+push constant 59
+push constant 59
+push constant 27
+push constant 3
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 63
+push constant 30
+push constant 51
+push constant 51
+push constant 24
+push constant 12
+push constant 12
+push constant 0
+push constant 12
+push constant 12
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 65
+push constant 12
+push constant 12
+push constant 30
+push constant 30
+push constant 51
+push constant 51
+push constant 63
+push constant 51
+push constant 51
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 66
+push constant 31
+push constant 51
+push constant 51
+push constant 51
+push constant 31
+push constant 51
+push constant 51
+push constant 51
+push constant 31
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 67
+push constant 28
+push constant 54
+push constant 35
+push constant 3
+push constant 3
+push constant 3
+push constant 35
+push constant 54
+push constant 28
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 68
+push constant 15
+push constant 27
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 27
+push constant 15
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 69
+push constant 63
+push constant 51
+push constant 35
+push constant 11
+push constant 15
+push constant 11
+push constant 35
+push constant 51
+push constant 63
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 70
+push constant 63
+push constant 51
+push constant 35
+push constant 11
+push constant 15
+push constant 11
+push constant 3
+push constant 3
+push constant 3
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 71
+push constant 28
+push constant 54
+push constant 35
+push constant 3
+push constant 59
+push constant 51
+push constant 51
+push constant 54
+push constant 44
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 72
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 63
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 73
+push constant 30
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 74
+push constant 60
+push constant 24
+push constant 24
+push constant 24
+push constant 24
+push constant 24
+push constant 27
+push constant 27
+push constant 14
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 75
+push constant 51
+push constant 51
+push constant 51
+push constant 27
+push constant 15
+push constant 27
+push constant 51
+push constant 51
+push constant 51
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 76
+push constant 3
+push constant 3
+push constant 3
+push constant 3
+push constant 3
+push constant 3
+push constant 35
+push constant 51
+push constant 63
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 77
+push constant 33
+push constant 51
+push constant 63
+push constant 63
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 78
+push constant 51
+push constant 51
+push constant 55
+push constant 55
+push constant 63
+push constant 59
+push constant 59
+push constant 51
+push constant 51
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 79
+push constant 30
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 80
+push constant 31
+push constant 51
+push constant 51
+push constant 51
+push constant 31
+push constant 3
+push constant 3
+push constant 3
+push constant 3
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 81
+push constant 30
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 63
+push constant 59
+push constant 30
+push constant 48
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 82
+push constant 31
+push constant 51
+push constant 51
+push constant 51
+push constant 31
+push constant 27
+push constant 51
+push constant 51
+push constant 51
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 83
+push constant 30
+push constant 51
+push constant 51
+push constant 6
+push constant 28
+push constant 48
+push constant 51
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 84
+push constant 63
+push constant 63
+push constant 45
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 85
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 86
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 30
+push constant 30
+push constant 12
+push constant 12
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 87
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 63
+push constant 63
+push constant 63
+push constant 18
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 88
+push constant 51
+push constant 51
+push constant 30
+push constant 30
+push constant 12
+push constant 30
+push constant 30
+push constant 51
+push constant 51
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 89
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 30
+push constant 12
+push constant 12
+push constant 12
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 90
+push constant 63
+push constant 51
+push constant 49
+push constant 24
+push constant 12
+push constant 6
+push constant 35
+push constant 51
+push constant 63
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 91
+push constant 30
+push constant 6
+push constant 6
+push constant 6
+push constant 6
+push constant 6
+push constant 6
+push constant 6
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 92
+push constant 0
+push constant 0
+push constant 1
+push constant 3
+push constant 6
+push constant 12
+push constant 24
+push constant 48
+push constant 32
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 93
+push constant 30
+push constant 24
+push constant 24
+push constant 24
+push constant 24
+push constant 24
+push constant 24
+push constant 24
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 94
+push constant 8
+push constant 28
+push constant 54
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 95
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 63
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 96
+push constant 6
+push constant 12
+push constant 24
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 97
+push constant 0
+push constant 0
+push constant 0
+push constant 14
+push constant 24
+push constant 30
+push constant 27
+push constant 27
+push constant 54
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 98
+push constant 3
+push constant 3
+push constant 3
+push constant 15
+push constant 27
+push constant 51
+push constant 51
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 99
+push constant 0
+push constant 0
+push constant 0
+push constant 30
+push constant 51
+push constant 3
+push constant 3
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 100
+push constant 48
+push constant 48
+push constant 48
+push constant 60
+push constant 54
+push constant 51
+push constant 51
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 101
+push constant 0
+push constant 0
+push constant 0
+push constant 30
+push constant 51
+push constant 63
+push constant 3
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 102
+push constant 28
+push constant 54
+push constant 38
+push constant 6
+push constant 15
+push constant 6
+push constant 6
+push constant 6
+push constant 15
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 103
+push constant 0
+push constant 0
+push constant 30
+push constant 51
+push constant 51
+push constant 51
+push constant 62
+push constant 48
+push constant 51
+push constant 30
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 104
+push constant 3
+push constant 3
+push constant 3
+push constant 27
+push constant 55
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 105
+push constant 12
+push constant 12
+push constant 0
+push constant 14
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 106
+push constant 48
+push constant 48
+push constant 0
+push constant 56
+push constant 48
+push constant 48
+push constant 48
+push constant 48
+push constant 51
+push constant 30
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 107
+push constant 3
+push constant 3
+push constant 3
+push constant 51
+push constant 27
+push constant 15
+push constant 15
+push constant 27
+push constant 51
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 108
+push constant 14
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 109
+push constant 0
+push constant 0
+push constant 0
+push constant 29
+push constant 63
+push constant 43
+push constant 43
+push constant 43
+push constant 43
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 110
+push constant 0
+push constant 0
+push constant 0
+push constant 29
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 111
+push constant 0
+push constant 0
+push constant 0
+push constant 30
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 112
+push constant 0
+push constant 0
+push constant 0
+push constant 30
+push constant 51
+push constant 51
+push constant 51
+push constant 31
+push constant 3
+push constant 3
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 113
+push constant 0
+push constant 0
+push constant 0
+push constant 30
+push constant 51
+push constant 51
+push constant 51
+push constant 62
+push constant 48
+push constant 48
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 114
+push constant 0
+push constant 0
+push constant 0
+push constant 29
+push constant 55
+push constant 51
+push constant 3
+push constant 3
+push constant 7
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 115
+push constant 0
+push constant 0
+push constant 0
+push constant 30
+push constant 51
+push constant 6
+push constant 24
+push constant 51
+push constant 30
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 116
+push constant 4
+push constant 6
+push constant 6
+push constant 15
+push constant 6
+push constant 6
+push constant 6
+push constant 54
+push constant 28
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 117
+push constant 0
+push constant 0
+push constant 0
+push constant 27
+push constant 27
+push constant 27
+push constant 27
+push constant 27
+push constant 54
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 118
+push constant 0
+push constant 0
+push constant 0
+push constant 51
+push constant 51
+push constant 51
+push constant 51
+push constant 30
+push constant 12
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 119
+push constant 0
+push constant 0
+push constant 0
+push constant 51
+push constant 51
+push constant 51
+push constant 63
+push constant 63
+push constant 18
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 120
+push constant 0
+push constant 0
+push constant 0
+push constant 51
+push constant 30
+push constant 12
+push constant 12
+push constant 30
+push constant 51
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 121
+push constant 0
+push constant 0
+push constant 0
+push constant 51
+push constant 51
+push constant 51
+push constant 62
+push constant 48
+push constant 24
+push constant 15
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 122
+push constant 0
+push constant 0
+push constant 0
+push constant 63
+push constant 27
+push constant 12
+push constant 6
+push constant 51
+push constant 63
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 123
+push constant 56
+push constant 12
+push constant 12
+push constant 12
+push constant 7
+push constant 12
+push constant 12
+push constant 12
+push constant 56
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 124
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 12
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 125
+push constant 7
+push constant 12
+push constant 12
+push constant 12
+push constant 56
+push constant 12
+push constant 12
+push constant 12
+push constant 7
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 126
+push constant 38
+push constant 45
+push constant 25
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+push constant 0
+call Output.create 12
+pop temp 0
+push constant 0
+return
+function Output.create 1
+push constant 11
+call Array.new 1
+pop local 0
+push argument 0
+push static 0
+add
+push local 0
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 0
+push local 0
+add
+push argument 1
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 1
+push local 0
+add
+push argument 2
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 2
+push local 0
+add
+push argument 3
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 3
+push local 0
+add
+push argument 4
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 4
+push local 0
+add
+push argument 5
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 5
+push local 0
+add
+push argument 6
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 6
+push local 0
+add
+push argument 7
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 7
+push local 0
+add
+push argument 8
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 8
+push local 0
+add
+push argument 9
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 9
+push local 0
+add
+push argument 10
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 10
+push local 0
+add
+push argument 11
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 0
+return
+function Output.getMap 0
+push argument 0
+push constant 32
+lt
+push argument 0
+push constant 126
+gt
+or
+if-goto IF_TRUE0
+goto IF_FALSE0
+label IF_TRUE0
+push constant 0
+pop argument 0
+label IF_FALSE0
+push argument 0
+push static 0
+add
+pop pointer 1
+push that 0
+return
+function Output.moveCursor 2
+push static 2
+push constant 8
+call Math.multiply 2
+pop local 0
+push static 1
+push constant 11
+call Math.multiply 2
+pop local 1
+push constant 0
+call Screen.setColor 1
+pop temp 0
+push local 0
+push local 1
+push local 0
+push constant 7
+add
+push local 1
+push constant 10
+add
+call Screen.drawRectangle 4
+pop temp 0
+push argument 1
+push constant 8
+call Math.multiply 2
+pop local 0
+push argument 0
+push constant 11
+call Math.multiply 2
+pop local 1
+push constant 0
+not
+call Screen.setColor 1
+pop temp 0
+push local 0
+push local 1
+push local 0
+push constant 7
+add
+push local 1
+push constant 10
+add
+call Screen.drawRectangle 4
+pop temp 0
+push argument 0
+pop static 1
+push argument 1
+pop static 2
+push constant 0
+return
+function Output.printChar 5
+push argument 0
+push constant 8
+eq
+if-goto IF_TRUE0
+goto IF_FALSE0
+label IF_TRUE0
+call Output.backSpace 0
+pop temp 0
+push constant 0
+return
+label IF_FALSE0
+push static 1
+push constant 22
+eq
+if-goto IF_TRUE1
+goto IF_FALSE1
+label IF_TRUE1
+push argument 0
+push constant 10
+eq
+if-goto IF_TRUE2
+goto IF_FALSE2
+label IF_TRUE2
+push constant 0
+return
+label IF_FALSE2
+push static 2
+push constant 63
+eq
+if-goto IF_TRUE3
+goto IF_FALSE3
+label IF_TRUE3
+push constant 0
+return
+label IF_FALSE3
+label IF_FALSE1
+push argument 0
+push constant 10
+eq
+if-goto IF_TRUE4
+goto IF_FALSE4
+label IF_TRUE4
+call Output.println 0
+pop temp 0
+label IF_FALSE4
+push constant 0
+pop local 0
+push static 2
+push constant 2
+call Math.divide 2
+pop local 1
+push static 2
+push local 1
+push constant 2
+call Math.multiply 2
+sub
+pop local 2
+push static 1
+push constant 352
+call Math.multiply 2
+push local 1
+add
+push constant 16384
+add
+pop local 3
+push argument 0
+call Output.getMap 1
+pop local 4
+push static 2
+push constant 63
+eq
+if-goto IF_TRUE5
+goto IF_FALSE5
+label IF_TRUE5
+push static 1
+push constant 1
+add
+push constant 0
+call Output.moveCursor 2
+pop temp 0
+goto IF_END5
+label IF_FALSE5
+push static 1
+push static 2
+push constant 1
+add
+call Output.moveCursor 2
+pop temp 0
+label IF_END5
+label WHILE_EXP0
+push local 0
+push constant 11
+lt
+not
+if-goto WHILE_END0
+push local 2
+push constant 0
+eq
+if-goto IF_TRUE6
+goto IF_FALSE6
+label IF_TRUE6
+push local 3
+push local 3
+call Memory.peek 1
+push constant 128
+neg
+and
+push local 0
+push local 4
+add
+pop pointer 1
+push that 0
+add
+call Memory.poke 2
+pop temp 0
+goto IF_END6
+label IF_FALSE6
+push local 3
+push local 3
+call Memory.peek 1
+push constant 255
+and
+push local 0
+push local 4
+add
+pop pointer 1
+push that 0
+push constant 256
+call Math.multiply 2
+add
+call Memory.poke 2
+pop temp 0
+label IF_END6
+push local 0
+push constant 1
+add
+pop local 0
+push local 3
+push constant 32
+add
+pop local 3
+goto WHILE_EXP0
+label WHILE_END0
+push constant 0
+return
+function Output.printString 2
+push constant 0
+pop local 0
+push argument 0
+call String.length 1
+pop local 1
+label WHILE_EXP0
+push local 0
+push local 1
+lt
+not
+if-goto WHILE_END0
+push argument 0
+push local 0
+call String.charAt 2
+call Output.printChar 1
+pop temp 0
+push local 0
+push constant 1
+add
+pop local 0
+goto WHILE_EXP0
+label WHILE_END0
+push constant 0
+return
+function Output.printInt 4
+push argument 0
+push constant 0
+eq
+if-goto IF_TRUE0
+goto IF_FALSE0
+label IF_TRUE0
+push constant 48
+call Output.printChar 1
+pop temp 0
+push constant 0
+return
+label IF_FALSE0
+push argument 0
+pop local 0
+push argument 0
+push constant 0
+lt
+if-goto IF_TRUE1
+goto IF_FALSE1
+label IF_TRUE1
+push constant 45
+call Output.printChar 1
+pop temp 0
+push local 0
+neg
+pop local 0
+label IF_FALSE1
+push constant 5
+call Array.new 1
+pop local 3
+push constant 0
+pop local 2
+label WHILE_EXP0
+push local 0
+push constant 0
+gt
+not
+if-goto WHILE_END0
+push local 0
+push constant 10
+call Math.divide 2
+pop local 1
+push local 2
+push local 3
+add
+push constant 48
+push local 0
+add
+push local 1
+push constant 10
+call Math.multiply 2
+sub
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push local 1
+pop local 0
+push local 2
+push constant 1
+add
+pop local 2
+goto WHILE_EXP0
+label WHILE_END0
+label WHILE_EXP1
+push local 2
+push constant 0
+gt
+not
+if-goto WHILE_END1
+push local 2
+push constant 1
+sub
+pop local 2
+push local 2
+push local 3
+add
+pop pointer 1
+push that 0
+call Output.printChar 1
+pop temp 0
+goto WHILE_EXP1
+label WHILE_END1
+push constant 0
+return
+function Output.println 0
+push static 1
+push constant 1
+add
+push constant 0
+call Output.moveCursor 2
+pop temp 0
+push constant 0
+return
+function Output.backSpace 0
+push static 2
+push constant 0
+gt
+if-goto IF_TRUE0
+goto IF_FALSE0
+label IF_TRUE0
+push static 1
+push static 2
+push constant 1
+sub
+call Output.moveCursor 2
+pop temp 0
+goto IF_END0
+label IF_FALSE0
+push static 1
+push constant 1
+sub
+push constant 63
+call Output.moveCursor 2
+pop temp 0
+label IF_END0
+push constant 0
+return