§ Способ подключения
Вызвать
screen([id элемента canvas])
для назначения рабочей области. Если дополнительно добавить параметр (factor), то каждый пиксель будет в n раз больше. Если не задать id элемента, то будет выбран #canvas.
1screen()(2);
2for (var y = -120; y < 120; y++)
3for (var x = -160; x < 160; x++)
4 pset(160 + x, 120 + y, dos(x + y));
§ Набор функции для рисования
Файл canvas2d.js
1var canvas = {
2 element: null,
3 context: null,
4 width: null,
5 height: null,
6 img: null,
7 factor: 1,
8 refresh: 1,
9 dos: [
10 0x000000, 0x0000aa, 0x00aa00, 0x00aaaa, 0xaa0000, 0xaa00aa, 0xaa5500, 0xaaaaaa,
11 0x555555, 0x5555ff, 0x55ff55, 0x55ffff, 0xff5555, 0xff55ff, 0xffff55, 0xffffff,
12 0x000000, 0x141414, 0x202020, 0x2c2c2c, 0x383838, 0x454545, 0x515151, 0x616161,
13 0x717171, 0x828282, 0x929292, 0xa2a2a2, 0xb6b6b6, 0xcbcbcb, 0xe3e3e3, 0xffffff,
14 0x0000ff, 0x4100ff, 0x7d00ff, 0xbe00ff, 0xff00ff, 0xff00be, 0xff007d, 0xff0041,
15 0xff0000, 0xff4100, 0xff7d00, 0xffbe00, 0xffff00, 0xbeff00, 0x7dff00, 0x41ff00,
16 0x00ff00, 0x00ff41, 0x00ff7d, 0x00ffbe, 0x00ffff, 0x00beff, 0x007dff, 0x0041ff,
17 0x7d7dff, 0x9e7dff, 0xbe7dff, 0xdf7dff, 0xff7dff, 0xff7ddf, 0xff7dbe, 0xff7d9e,
18 0xff7d7d, 0xff9e7d, 0xffbe7d, 0xffdf7d, 0xffff7d, 0xdfff7d, 0xbeff7d, 0x9eff7d,
19 0x7dff7d, 0x7dff9e, 0x7dffbe, 0x7dffdf, 0x7dffff, 0x7ddfff, 0x7dbeff, 0x7d9eff,
20 0xb6b6ff, 0xc7b6ff, 0xdbb6ff, 0xebb6ff, 0xffb6ff, 0xffb6eb, 0xffb6db, 0xffb6c7,
21 0xffb6b6, 0xffc7b6, 0xffdbb6, 0xffebb6, 0xffffb6, 0xebffb6, 0xdbffb6, 0xc7ffb6,
22 0xb6ffb6, 0xb6ffc7, 0xb6ffdb, 0xb6ffeb, 0xb6ffff, 0xb6ebff, 0xb6dbff, 0xb6c7ff,
23 0x000071, 0x1c0071, 0x380071, 0x550071, 0x710071, 0x710055, 0x710038, 0x71001c,
24 0x710000, 0x711c00, 0x713800, 0x715500, 0x717100, 0x557100, 0x387100, 0x1c7100,
25 0x007100, 0x00711c, 0x007138, 0x007155, 0x007171, 0x005571, 0x003871, 0x001c71,
26 0x383871, 0x453871, 0x553871, 0x613871, 0x713871, 0x713861, 0x713855, 0x713845,
27 0x713838, 0x714538, 0x715538, 0x716138, 0x717138, 0x617138, 0x557138, 0x457138,
28 0x387138, 0x387145, 0x387155, 0x387161, 0x387171, 0x386171, 0x385571, 0x384571,
29 0x515171, 0x595171, 0x615171, 0x695171, 0x715171, 0x715169, 0x715161, 0x715159,
30 0x715151, 0x715951, 0x716151, 0x716951, 0x717151, 0x697151, 0x617151, 0x597151,
31 0x517151, 0x517159, 0x517161, 0x517169, 0x517171, 0x516971, 0x516171, 0x515971,
32 0x000041, 0x100041, 0x200041, 0x300041, 0x410041, 0x410030, 0x410020, 0x410010,
33 0x410000, 0x411000, 0x412000, 0x413000, 0x414100, 0x304100, 0x204100, 0x104100,
34 0x004100, 0x004110, 0x004120, 0x004130, 0x004141, 0x003041, 0x002041, 0x001041,
35 0x202041, 0x282041, 0x302041, 0x382041, 0x412041, 0x412038, 0x412030, 0x412028,
36 0x412020, 0x412820, 0x413020, 0x413820, 0x414120, 0x384120, 0x304120, 0x284120,
37 0x204120, 0x204128, 0x204130, 0x204138, 0x204141, 0x203841, 0x203041, 0x202841,
38 0x2c2c41, 0x302c41, 0x342c41, 0x3c2c41, 0x412c41, 0x412c3c, 0x412c34, 0x412c30,
39 0x412c2c, 0x41302c, 0x41342c, 0x413c2c, 0x41412c, 0x3c412c, 0x34412c, 0x30412c,
40 0x2c412c, 0x2c4130, 0x2c4134, 0x2c413c, 0x2c4141, 0x2c3c41, 0x2c3441, 0x2c3041,
41 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000
42 ]
43};
44
45
46function screen(id) {
47
48 var id = arguments.length == 0 ? "canvas" : arguments[0];
49 var el = document.getElementById(id);
50
51 canvas.element = el;
52 canvas.context = el.getContext('2d');
53 canvas.width = el.width;
54 canvas.height = el.height;
55 canvas.img = canvas.context.getImageData(0, 0, el.width, el.height);
56
57 refresh();
58
59
60 return function(e) { canvas.factor = e; }
61}
62
63
64function palette(i, r, g, b) {
65 canvas.dos[i] = (Math.floor(r)*65536 + Math.floor(g)*256 + Math.floor(b));
66}
67
68
69function flush() { canvas.context.putImageData(canvas.img, 0, 0); }
70
71
72function dos(id) { return canvas.dos[id & 255]; }
73
74
75function refresh() {
76
77 if (canvas.refresh) flush();
78
79 canvas.refresh = 0;
80 setTimeout("refresh()", 25);
81}
82
83
84
85
86
87
88function pset(x, y, c) {
89
90 x = Math.floor(x);
91 y = Math.floor(y);
92 f = canvas.factor;
93 canvas.refresh = 1;
94
95 for (var i = f*y; i < f*y + f; i++)
96 for (var j = f*x; j < f*x + f; j++) {
97
98 if (j >= 0 && i >= 0 && j < canvas.width && i < canvas.height) {
99
100 var p = 4*(j + i * canvas.width);
101 canvas.img.data[p ] = (c >> 16) & 0xff;
102 canvas.img.data[p + 1] = (c >> 8) & 0xff;
103 canvas.img.data[p + 2] = (c ) & 0xff;
104 canvas.img.data[p + 3] = ((c >> 24) & 0xff) ^ 0xff;
105 }
106 }
107};
108
109
110function block(x1, y1, x2, y2, c) {
111
112 for (var y = y1; y <= y2; y++) {
113 for (var x = x1; x <= x2; x++) {
114 pset(x, y, c);
115 }
116 }
117};
118
119
120function line(x1, y1, x2, y2, c) {
121
122 x1 = Math.floor(x1); y1 = Math.floor(y1);
123 x2 = Math.floor(x2); y2 = Math.floor(y2);
124
125 var deltax = Math.abs(x2 - x1);
126 var deltay = Math.abs(y2 - y1);
127 var signx = x1 < x2 ? 1 : -1;
128 var signy = y1 < y2 ? 1 : -1;
129
130 var error = deltax - deltay;
131 var error2;
132
133 pset(x2, y2, c);
134 while (x1 !== x2 || y1 !== y2)
135 {
136 pset(x1, y1, c);
137 error2 = error * 2;
138
139 if (error2 > -deltay) {
140 error -= deltay;
141 x1 += signx;
142 }
143
144 if (error2 < deltax) {
145 error += deltax;
146 y1 += signy;
147 }
148 }
149};
§ Файл шрифтов
1var $cursor = {
2 x: 0,
3 y: 0,
4 height: 16,
5 fr: 0xffffff,
6 bg: 0x000000
7};
8
9var dosfont8x16 = [
10
11 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
12 [0, 0, 126, 129, 165, 165, 165, 129, 129, 189, 153, 129, 126, 0, 0, 0],
13 [0, 0, 126, 255, 219, 219, 219, 255, 255, 195, 231, 255, 126, 0, 0, 0],
14 [0, 0, 108, 254, 254, 254, 254, 254, 254, 124, 56, 16, 0, 0, 0, 0],
15 [0, 0, 0, 0, 16, 56, 124, 254, 124, 56, 16, 0, 0, 0, 0, 0],
16 [0, 0, 0, 24, 60, 60, 231, 231, 231, 24, 24, 60, 0, 0, 0, 0],
17 [0, 0, 0, 24, 60, 126, 255, 255, 126, 24, 24, 60, 0, 0, 0, 0],
18 [0, 0, 0, 0, 0, 24, 60, 60, 24, 0, 0, 0, 0, 0, 0, 0],
19 [255, 255, 255, 255, 255, 255, 231, 195, 195, 231, 255, 255, 255, 255, 255, 255],
20 [0, 0, 0, 0, 0, 60, 102, 66, 66, 102, 60, 0, 0, 0, 0, 0],
21 [255, 255, 255, 255, 195, 153, 189, 189, 153, 195, 255, 255, 255, 255, 255, 255],
22 [0, 0, 0, 30, 14, 26, 50, 120, 204, 204, 204, 120, 0, 0, 0, 0],
23 [0, 0, 0, 60, 102, 102, 102, 60, 24, 126, 24, 24, 0, 0, 0, 0],
24 [0, 0, 0, 63, 51, 63, 48, 48, 48, 112, 240, 224, 0, 0, 0, 0],
25 [0, 0, 0, 127, 99, 127, 99, 99, 99, 103, 231, 230, 192, 0, 0, 0],
26 [0, 0, 0, 24, 24, 219, 60, 231, 60, 219, 24, 24, 0, 0, 0, 0],
27 [0, 0, 0, 128, 192, 224, 248, 254, 248, 224, 192, 128, 0, 0, 0, 0],
28 [0, 0, 0, 2, 6, 14, 62, 254, 62, 14, 6, 2, 0, 0, 0, 0],
29 [0, 0, 0, 24, 60, 126, 24, 24, 24, 24, 24, 24, 126, 60, 24, 0],
30 [0, 0, 0, 102, 102, 102, 102, 102, 102, 0, 102, 102, 0, 0, 0, 0],
31 [0, 0, 0, 127, 219, 219, 219, 123, 27, 27, 27, 27, 0, 0, 0, 0],
32 [0, 0, 124, 198, 96, 56, 108, 198, 198, 108, 56, 12, 198, 124, 0, 0],
33 [0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 254, 254, 0, 0, 0, 0],
34 [0, 0, 0, 24, 60, 126, 24, 24, 24, 126, 60, 24, 126, 0, 0, 0],
35 [0, 0, 0, 24, 60, 126, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0],
36 [0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 126, 60, 24, 0],
37 [0, 0, 0, 0, 0, 24, 12, 254, 12, 24, 0, 0, 0, 0, 0, 0],
38 [0, 0, 0, 0, 0, 48, 96, 254, 96, 48, 0, 0, 0, 0, 0, 0],
39 [0, 0, 0, 0, 0, 0, 192, 192, 192, 254, 0, 0, 0, 0, 0, 0],
40 [0, 0, 0, 0, 0, 40, 108, 254, 108, 40, 0, 0, 0, 0, 0, 0],
41 [0, 0, 0, 0, 16, 56, 56, 124, 124, 254, 254, 0, 0, 0, 0, 0],
42 [0, 0, 0, 254, 124, 56, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0],
43 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
44 [0, 0, 24, 60, 60, 60, 60, 24, 24, 24, 0, 0, 24, 0, 0, 0],
45 [0, 102, 102, 102, 102, 102, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0],
46 [0, 0, 108, 108, 108, 254, 108, 108, 108, 254, 108, 108, 108, 0, 0, 0],
47 [24, 24, 24, 124, 198, 194, 192, 124, 6, 134, 198, 124, 24, 24, 24, 0],
48 [0, 0, 0, 0, 0, 194, 198, 12, 24, 48, 102, 198, 0, 0, 0, 0],
49 [0, 0, 56, 108, 108, 108, 56, 118, 220, 204, 204, 204, 118, 0, 0, 0],
50 [0, 48, 48, 48, 48, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
51 [0, 0, 12, 24, 48, 48, 48, 48, 48, 48, 48, 24, 12, 0, 0, 0],
52 [0, 0, 48, 24, 12, 12, 12, 12, 12, 12, 12, 24, 48, 0, 0, 0],
53 [0, 0, 0, 0, 102, 102, 60, 255, 60, 102, 102, 0, 0, 0, 0, 0],
54 [0, 0, 0, 0, 24, 24, 24, 126, 24, 24, 24, 0, 0, 0, 0, 0],
55 [0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, 48, 0, 0],
56 [0, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0],
57 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0],
58 [0, 0, 0, 2, 6, 12, 24, 48, 96, 192, 128, 0, 0, 0, 0, 0],
59 [0, 0, 124, 198, 198, 206, 222, 246, 246, 230, 198, 198, 124, 0, 0, 0],
60 [0, 0, 24, 24, 56, 120, 24, 24, 24, 24, 24, 24, 126, 0, 0, 0],
61 [0, 0, 124, 198, 198, 6, 6, 12, 24, 48, 96, 198, 254, 0, 0, 0],
62 [0, 0, 124, 198, 6, 6, 6, 60, 6, 6, 6, 198, 124, 0, 0, 0],
63 [0, 0, 12, 28, 60, 108, 204, 204, 254, 12, 12, 12, 30, 0, 0, 0],
64 [0, 0, 254, 192, 192, 192, 252, 6, 6, 6, 6, 198, 124, 0, 0, 0],
65 [0, 0, 56, 96, 192, 192, 252, 198, 198, 198, 198, 198, 124, 0, 0, 0],
66 [0, 0, 254, 198, 198, 6, 6, 12, 24, 48, 48, 48, 48, 0, 0, 0],
67 [0, 0, 124, 198, 198, 198, 198, 124, 198, 198, 198, 198, 124, 0, 0, 0],
68 [0, 0, 124, 198, 198, 198, 198, 198, 126, 6, 6, 12, 120, 0, 0, 0],
69 [0, 0, 0, 24, 24, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0],
70 [0, 0, 0, 24, 24, 0, 0, 0, 0, 24, 24, 24, 24, 48, 0, 0],
71 [0, 0, 0, 6, 12, 24, 48, 96, 48, 24, 12, 6, 0, 0, 0, 0],
72 [0, 0, 0, 0, 0, 0, 126, 0, 0, 126, 0, 0, 0, 0, 0, 0],
73 [0, 0, 0, 96, 48, 24, 12, 6, 12, 24, 48, 96, 0, 0, 0, 0],
74 [0, 0, 124, 198, 198, 198, 12, 24, 24, 24, 0, 24, 24, 0, 0, 0],
75 [0, 0, 124, 198, 198, 198, 222, 222, 222, 220, 192, 192, 124, 0, 0, 0],
76 [0, 0, 16, 56, 108, 198, 198, 198, 254, 198, 198, 198, 198, 0, 0, 0],
77 [0, 0, 252, 102, 102, 102, 102, 124, 102, 102, 102, 102, 252, 0, 0, 0],
78 [0, 0, 124, 198, 198, 192, 192, 192, 192, 198, 198, 198, 124, 0, 0, 0],
79 [0, 0, 252, 102, 102, 102, 102, 102, 102, 102, 102, 102, 252, 0, 0, 0],
80 [0, 0, 254, 102, 98, 96, 104, 120, 104, 104, 98, 102, 254, 0, 0, 0],
81 [0, 0, 254, 102, 98, 96, 104, 120, 104, 104, 96, 96, 240, 0, 0, 0],
82 [0, 0, 124, 198, 198, 192, 192, 192, 222, 198, 198, 198, 124, 0, 0, 0],
83 [0, 0, 198, 198, 198, 198, 198, 254, 198, 198, 198, 198, 198, 0, 0, 0],
84 [0, 0, 60, 24, 24, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0],
85 [0, 0, 30, 12, 12, 12, 12, 12, 12, 12, 204, 204, 120, 0, 0, 0],
86 [0, 0, 230, 102, 102, 108, 108, 120, 108, 108, 102, 102, 230, 0, 0, 0],
87 [0, 0, 240, 96, 96, 96, 96, 96, 96, 96, 98, 102, 254, 0, 0, 0],
88 [0, 0, 198, 198, 238, 254, 254, 214, 198, 198, 198, 198, 198, 0, 0, 0],
89 [0, 0, 198, 198, 230, 246, 254, 222, 206, 198, 198, 198, 198, 0, 0, 0],
90 [0, 0, 124, 198, 198, 198, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0],
91 [0, 0, 252, 102, 102, 102, 102, 102, 124, 96, 96, 96, 240, 0, 0, 0],
92 [0, 0, 124, 198, 198, 198, 198, 198, 198, 214, 222, 124, 12, 0, 0, 0],
93 [0, 0, 252, 102, 102, 102, 102, 124, 108, 102, 102, 102, 230, 0, 0, 0],
94 [0, 0, 124, 198, 198, 198, 96, 56, 12, 198, 198, 198, 124, 0, 0, 0],
95 [0, 0, 126, 126, 90, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0],
96 [0, 0, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0],
97 [0, 0, 198, 198, 198, 198, 198, 198, 198, 198, 108, 56, 16, 0, 0, 0],
98 [0, 0, 198, 198, 198, 198, 198, 214, 214, 254, 124, 108, 108, 0, 0, 0],
99 [0, 0, 198, 198, 198, 108, 56, 56, 56, 108, 198, 198, 198, 0, 0, 0],
100 [0, 0, 102, 102, 102, 102, 102, 60, 24, 24, 24, 24, 60, 0, 0, 0],
101 [0, 0, 254, 198, 198, 140, 24, 48, 96, 194, 198, 198, 254, 0, 0, 0],
102 [0, 0, 60, 48, 48, 48, 48, 48, 48, 48, 48, 48, 60, 0, 0, 0],
103 [0, 0, 0, 128, 192, 224, 112, 56, 28, 14, 6, 2, 0, 0, 0, 0],
104 [0, 0, 60, 12, 12, 12, 12, 12, 12, 12, 12, 12, 60, 0, 0, 0],
105 [16, 16, 56, 108, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
106 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0],
107 [48, 48, 48, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
108 [0, 0, 0, 0, 0, 120, 204, 12, 124, 204, 204, 204, 118, 0, 0, 0],
109 [0, 0, 224, 96, 96, 96, 120, 108, 102, 102, 102, 102, 124, 0, 0, 0],
110 [0, 0, 0, 0, 0, 124, 198, 198, 192, 192, 198, 198, 124, 0, 0, 0],
111 [0, 0, 28, 12, 12, 12, 60, 108, 204, 204, 204, 204, 118, 0, 0, 0],
112 [0, 0, 0, 0, 0, 124, 198, 198, 254, 192, 198, 198, 124, 0, 0, 0],
113 [0, 0, 56, 108, 100, 96, 240, 96, 96, 96, 96, 96, 240, 0, 0, 0],
114 [0, 0, 0, 0, 0, 118, 204, 204, 204, 204, 204, 124, 12, 204, 120, 0],
115 [0, 0, 224, 96, 96, 108, 118, 102, 102, 102, 102, 102, 230, 0, 0, 0],
116 [0, 0, 24, 24, 0, 56, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0],
117 [0, 0, 6, 6, 0, 14, 6, 6, 6, 6, 6, 6, 102, 102, 60, 0],
118 [0, 0, 224, 96, 96, 102, 102, 108, 120, 108, 102, 102, 230, 0, 0, 0],
119 [0, 0, 56, 24, 24, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0],
120 [0, 0, 0, 0, 0, 236, 254, 214, 214, 214, 198, 198, 198, 0, 0, 0],
121 [0, 0, 0, 0, 0, 220, 102, 102, 102, 102, 102, 102, 102, 0, 0, 0],
122 [0, 0, 0, 0, 0, 124, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0],
123 [0, 0, 0, 0, 0, 220, 102, 102, 102, 102, 102, 102, 124, 96, 240, 0],
124 [0, 0, 0, 0, 0, 118, 204, 204, 204, 204, 204, 204, 124, 12, 30, 0],
125 [0, 0, 0, 0, 0, 220, 118, 102, 96, 96, 96, 96, 240, 0, 0, 0],
126 [0, 0, 0, 0, 0, 124, 198, 198, 112, 28, 198, 198, 124, 0, 0, 0],
127 [0, 0, 16, 48, 48, 252, 48, 48, 48, 48, 48, 54, 28, 0, 0, 0],
128 [0, 0, 0, 0, 0, 204, 204, 204, 204, 204, 204, 204, 118, 0, 0, 0],
129 [0, 0, 0, 0, 0, 102, 102, 102, 102, 102, 102, 60, 24, 0, 0, 0],
130 [0, 0, 0, 0, 0, 198, 198, 198, 214, 214, 254, 108, 108, 0, 0, 0],
131 [0, 0, 0, 0, 0, 198, 198, 108, 56, 56, 108, 198, 198, 0, 0, 0],
132 [0, 0, 0, 0, 0, 198, 198, 198, 198, 198, 198, 126, 6, 12, 248, 0],
133 [0, 0, 0, 0, 0, 254, 198, 204, 24, 48, 102, 198, 254, 0, 0, 0],
134 [0, 14, 24, 24, 24, 24, 24, 112, 112, 24, 24, 24, 24, 24, 14, 0],
135 [0, 0, 24, 24, 24, 24, 24, 0, 24, 24, 24, 24, 24, 0, 0, 0],
136 [0, 112, 24, 24, 24, 24, 24, 14, 14, 24, 24, 24, 24, 24, 112, 0],
137 [0, 0, 118, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
138 [0, 0, 0, 0, 16, 56, 108, 198, 198, 198, 198, 254, 0, 0, 0, 0],
139 [0, 0, 16, 56, 108, 198, 198, 198, 254, 198, 198, 198, 198, 0, 0, 0],
140 [0, 0, 254, 102, 98, 96, 124, 102, 102, 102, 102, 102, 252, 0, 0, 0],
141 [0, 0, 252, 102, 102, 102, 124, 102, 102, 102, 102, 102, 252, 0, 0, 0],
142 [0, 0, 254, 102, 98, 96, 96, 96, 96, 96, 96, 96, 240, 0, 0, 0],
143 [0, 0, 62, 102, 102, 102, 102, 102, 102, 102, 102, 102, 255, 195, 195, 0],
144 [0, 0, 254, 102, 102, 98, 104, 120, 104, 98, 102, 102, 254, 0, 0, 0],
145 [0, 0, 214, 214, 214, 124, 56, 124, 214, 214, 214, 214, 214, 0, 0, 0],
146 [0, 0, 124, 198, 6, 6, 6, 60, 6, 6, 6, 198, 124, 0, 0, 0],
147 [0, 0, 198, 198, 206, 222, 254, 246, 230, 198, 198, 198, 198, 0, 0, 0],
148 [56, 56, 198, 198, 206, 222, 254, 246, 230, 198, 198, 198, 198, 0, 0, 0],
149 [0, 0, 230, 102, 108, 108, 120, 108, 108, 102, 102, 102, 230, 0, 0, 0],
150 [0, 0, 62, 102, 102, 102, 102, 102, 102, 102, 102, 102, 230, 0, 0, 0],
151 [0, 0, 198, 238, 254, 254, 214, 198, 198, 198, 198, 198, 198, 0, 0, 0],
152 [0, 0, 198, 198, 198, 198, 254, 198, 198, 198, 198, 198, 198, 0, 0, 0],
153 [0, 0, 124, 198, 198, 198, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0],
154 [0, 0, 254, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 0, 0, 0],
155 [0, 0, 252, 102, 102, 102, 102, 102, 124, 96, 96, 96, 240, 0, 0, 0],
156 [0, 0, 124, 198, 198, 192, 192, 192, 192, 198, 198, 198, 124, 0, 0, 0],
157 [0, 0, 126, 126, 90, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0],
158 [0, 0, 198, 198, 198, 198, 198, 126, 6, 6, 6, 198, 124, 0, 0, 0],
159 [0, 0, 24, 126, 219, 219, 219, 219, 219, 219, 219, 126, 24, 0, 0, 0],
160 [0, 0, 198, 198, 198, 108, 56, 56, 56, 108, 198, 198, 198, 0, 0, 0],
161 [0, 0, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 254, 6, 6, 0],
162 [0, 0, 198, 198, 198, 198, 198, 198, 126, 6, 6, 6, 6, 0, 0, 0],
163 [0, 0, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 254, 0, 0, 0],
164 [0, 0, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 254, 3, 3, 0],
165 [0, 0, 248, 240, 176, 48, 60, 54, 54, 54, 54, 54, 124, 0, 0, 0],
166 [0, 0, 198, 198, 198, 198, 246, 222, 222, 222, 222, 222, 246, 0, 0, 0],
167 [0, 0, 240, 96, 96, 96, 124, 102, 102, 102, 102, 102, 252, 0, 0, 0],
168 [0, 0, 120, 204, 134, 134, 38, 62, 38, 134, 134, 204, 120, 0, 0, 0],
169 [0, 0, 156, 182, 182, 182, 182, 246, 182, 182, 182, 182, 156, 0, 0, 0],
170 [0, 0, 126, 204, 204, 204, 204, 124, 108, 204, 204, 206, 206, 0, 0, 0],
171 [0, 0, 0, 0, 0, 120, 204, 12, 124, 204, 204, 204, 118, 0, 0, 0],
172 [0, 0, 0, 28, 48, 96, 124, 102, 102, 102, 102, 102, 60, 0, 0, 0],
173 [0, 0, 0, 0, 0, 252, 102, 102, 124, 102, 102, 102, 252, 0, 0, 0],
174 [0, 0, 0, 0, 0, 254, 98, 96, 96, 96, 96, 96, 240, 0, 0, 0],
175 [0, 0, 0, 0, 0, 62, 102, 102, 102, 102, 102, 102, 255, 195, 195, 0],
176 [0, 0, 0, 0, 0, 124, 198, 198, 254, 192, 192, 198, 124, 0, 0, 0],
177 [0, 0, 0, 0, 0, 214, 214, 214, 124, 124, 214, 214, 214, 0, 0, 0],
178 [0, 0, 0, 0, 0, 60, 102, 102, 12, 6, 102, 102, 60, 0, 0, 0],
179 [0, 0, 0, 0, 0, 198, 206, 222, 254, 246, 230, 198, 198, 0, 0, 0],
180 [0, 0, 56, 56, 0, 198, 206, 222, 254, 246, 230, 198, 198, 0, 0, 0],
181 [0, 0, 0, 0, 0, 230, 102, 108, 120, 108, 102, 102, 230, 0, 0, 0],
182 [0, 0, 0, 0, 0, 62, 102, 102, 102, 102, 102, 102, 230, 0, 0, 0],
183 [0, 0, 0, 0, 0, 198, 238, 254, 254, 214, 198, 198, 198, 0, 0, 0],
184 [0, 0, 0, 0, 0, 198, 198, 198, 254, 198, 198, 198, 198, 0, 0, 0],
185 [0, 0, 0, 0, 0, 124, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0],
186 [0, 0, 0, 0, 0, 254, 198, 198, 198, 198, 198, 198, 198, 0, 0, 0],
187
188 [68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17],
189 [170, 85, 170, 85, 170, 85, 170, 85, 170, 85, 170, 85, 170, 85, 170, 85],
190 [119, 221, 119, 221, 119, 221, 119, 221, 119, 221, 119, 221, 119, 221, 119, 221],
191 [24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24],
192 [24, 24, 24, 24, 24, 24, 24, 24, 248, 24, 24, 24, 24, 24, 24, 24],
193 [24, 24, 24, 24, 24, 24, 248, 24, 248, 24, 24, 24, 24, 24, 24, 24],
194 [54, 54, 54, 54, 54, 54, 54, 54, 246, 54, 54, 54, 54, 54, 54, 54],
195 [0, 0, 0, 0, 0, 0, 0, 0, 254, 54, 54, 54, 54, 54, 54, 54],
196 [0, 0, 0, 0, 0, 0, 248, 24, 248, 24, 24, 24, 24, 24, 24, 24],
197 [54, 54, 54, 54, 54, 54, 246, 6, 246, 54, 54, 54, 54, 54, 54, 54],
198 [54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54],
199 [0, 0, 0, 0, 0, 0, 254, 6, 246, 54, 54, 54, 54, 54, 54, 54],
200 [54, 54, 54, 54, 54, 54, 246, 6, 254, 0, 0, 0, 0, 0, 0, 0],
201 [54, 54, 54, 54, 54, 54, 54, 54, 254, 0, 0, 0, 0, 0, 0, 0],
202 [24, 24, 24, 24, 24, 24, 248, 24, 248, 0, 0, 0, 0, 0, 0, 0],
203 [0, 0, 0, 0, 0, 0, 0, 0, 248, 24, 24, 24, 24, 24, 24, 24],
204 [24, 24, 24, 24, 24, 24, 24, 24, 31, 0, 0, 0, 0, 0, 0, 0],
205 [24, 24, 24, 24, 24, 24, 24, 24, 255, 0, 0, 0, 0, 0, 0, 0],
206 [0, 0, 0, 0, 0, 0, 0, 0, 255, 24, 24, 24, 24, 24, 24, 24],
207 [24, 24, 24, 24, 24, 24, 24, 24, 31, 24, 24, 24, 24, 24, 24, 24],
208 [0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0],
209 [24, 24, 24, 24, 24, 24, 24, 24, 255, 24, 24, 24, 24, 24, 24, 24],
210 [24, 24, 24, 24, 24, 24, 31, 24, 31, 24, 24, 24, 24, 24, 24, 24],
211 [54, 54, 54, 54, 54, 54, 54, 54, 55, 54, 54, 54, 54, 54, 54, 54],
212 [54, 54, 54, 54, 54, 54, 55, 48, 63, 0, 0, 0, 0, 0, 0, 0],
213 [0, 0, 0, 0, 0, 0, 63, 48, 55, 54, 54, 54, 54, 54, 54, 54],
214 [54, 54, 54, 54, 54, 54, 247, 0, 255, 0, 0, 0, 0, 0, 0, 0],
215 [0, 0, 0, 0, 0, 0, 255, 0, 247, 54, 54, 54, 54, 54, 54, 54],
216 [54, 54, 54, 54, 54, 54, 55, 48, 55, 54, 54, 54, 54, 54, 54, 54],
217 [0, 0, 0, 0, 0, 0, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0],
218 [54, 54, 54, 54, 54, 54, 247, 0, 247, 54, 54, 54, 54, 54, 54, 54],
219 [24, 24, 24, 24, 24, 24, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0],
220 [54, 54, 54, 54, 54, 54, 54, 54, 255, 0, 0, 0, 0, 0, 0, 0],
221 [0, 0, 0, 0, 0, 0, 255, 0, 255, 24, 24, 24, 24, 24, 24, 24],
222 [0, 0, 0, 0, 0, 0, 0, 0, 255, 54, 54, 54, 54, 54, 54, 54],
223 [54, 54, 54, 54, 54, 54, 54, 54, 63, 0, 0, 0, 0, 0, 0, 0],
224 [24, 24, 24, 24, 24, 24, 31, 24, 31, 0, 0, 0, 0, 0, 0, 0],
225 [0, 0, 0, 0, 0, 0, 31, 24, 31, 24, 24, 24, 24, 24, 24, 24],
226 [0, 0, 0, 0, 0, 0, 0, 0, 63, 54, 54, 54, 54, 54, 54, 54],
227 [54, 54, 54, 54, 54, 54, 54, 54, 255, 54, 54, 54, 54, 54, 54, 54],
228 [24, 24, 24, 24, 24, 24, 255, 24, 255, 24, 24, 24, 24, 24, 24, 24],
229 [24, 24, 24, 24, 24, 24, 24, 24, 248, 0, 0, 0, 0, 0, 0, 0],
230 [0, 0, 0, 0, 0, 0, 0, 0, 31, 24, 24, 24, 24, 24, 24, 24],
231 [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
232 [0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255],
233 [240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240],
234 [15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15],
235 [255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0],
236
237
238 [0, 0, 0, 0, 0, 220, 102, 102, 102, 102, 102, 124, 96, 96, 240, 0],
239 [0, 0, 0, 0, 0, 124, 198, 198, 192, 192, 198, 198, 124, 0, 0, 0],
240 [0, 0, 0, 0, 0, 126, 90, 24, 24, 24, 24, 24, 60, 0, 0, 0],
241 [0, 0, 0, 0, 0, 198, 198, 198, 198, 198, 198, 126, 6, 12, 248, 0],
242 [0, 0, 0, 0, 0, 24, 126, 219, 219, 219, 219, 219, 126, 24, 24, 0],
243 [0, 0, 0, 0, 0, 198, 198, 108, 56, 56, 108, 198, 198, 0, 0, 0],
244 [0, 0, 0, 0, 0, 204, 204, 204, 204, 204, 204, 204, 254, 6, 6, 0],
245 [0, 0, 0, 0, 0, 198, 198, 198, 198, 126, 6, 6, 6, 0, 0, 0],
246 [0, 0, 0, 0, 0, 214, 214, 214, 214, 214, 214, 214, 254, 0, 0, 0],
247 [0, 0, 0, 0, 0, 214, 214, 214, 214, 214, 214, 214, 254, 3, 3, 0],
248 [0, 0, 0, 0, 0, 248, 176, 60, 54, 54, 54, 54, 124, 0, 0, 0],
249 [0, 0, 0, 0, 0, 198, 198, 246, 222, 222, 222, 222, 246, 0, 0, 0],
250 [0, 0, 0, 0, 0, 240, 96, 96, 124, 102, 102, 102, 252, 0, 0, 0],
251 [0, 0, 0, 0, 0, 60, 102, 6, 30, 6, 102, 102, 60, 0, 0, 0],
252 [0, 0, 0, 0, 0, 156, 182, 182, 246, 182, 182, 182, 156, 0, 0, 0],
253 [0, 0, 0, 0, 0, 126, 204, 204, 204, 124, 108, 204, 206, 0, 0, 0],
254
255
256 [0, 0, 0, 0, 254, 0, 0, 254, 0, 0, 254, 0, 0, 0, 0, 0],
257 [0, 0, 0, 0, 24, 24, 126, 24, 24, 0, 0, 255, 0, 0, 0, 0],
258 [0, 0, 0, 48, 24, 12, 6, 12, 24, 48, 0, 126, 0, 0, 0, 0],
259 [0, 0, 0, 12, 24, 48, 96, 48, 24, 12, 0, 126, 0, 0, 0, 0],
260 [0, 0, 0, 14, 27, 27, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24],
261 [24, 24, 24, 24, 24, 24, 24, 24, 24, 216, 216, 112, 0, 0, 0, 0],
262 [0, 0, 0, 0, 24, 24, 0, 126, 0, 24, 24, 0, 0, 0, 0, 0],
263 [0, 0, 0, 0, 0, 118, 220, 0, 118, 220, 0, 0, 0, 0, 0, 0],
264 [0, 56, 108, 108, 108, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
265 [0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 0, 0, 0, 0],
266 [0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0],
267 [0, 15, 12, 12, 12, 12, 12, 236, 108, 60, 28, 12, 0, 0, 0, 0],
268 [0, 0, 216, 108, 108, 108, 108, 108, 0, 0, 0, 0, 0, 0, 0, 0],
269 [0, 0, 112, 216, 48, 96, 200, 248, 0, 0, 0, 0, 0, 0, 0, 0],
270 [0, 0, 0, 0, 60, 60, 60, 60, 60, 60, 60, 60, 0, 0, 0, 0],
271 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
272];
273
274var dosfont8x8 = [
275
276 [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
277 [0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e],
278 [0x7e, 0xff, 0xdb, 0xff, 0xc3, 0xe7, 0xff, 0x7e],
279 [0x6c, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00],
280 [0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00],
281 [0x38, 0x7c, 0x38, 0xfe, 0xfe, 0x7c, 0x38, 0x7c],
282 [0x10, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x7c],
283 [0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00],
284 [0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff],
285 [0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00],
286 [0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff],
287 [0x0f, 0x07, 0x0f, 0x7d, 0xcc, 0xcc, 0xcc, 0x78],
288 [0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18],
289 [0x3f, 0x33, 0x3f, 0x30, 0x30, 0x70, 0xf0, 0xe0],
290 [0x7f, 0x63, 0x7f, 0x63, 0x63, 0x67, 0xe6, 0xc0],
291 [0x99, 0x5a, 0x3c, 0xe7, 0xe7, 0x3c, 0x5a, 0x99],
292 [0x80, 0xe0, 0xf8, 0xfe, 0xf8, 0xe0, 0x80, 0x00],
293 [0x02, 0x0e, 0x3e, 0xfe, 0x3e, 0x0e, 0x02, 0x00],
294 [0x18, 0x3c, 0x7e, 0x18, 0x18, 0x7e, 0x3c, 0x18],
295 [0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00],
296 [0x7f, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x00],
297 [0x3e, 0x63, 0x38, 0x6c, 0x6c, 0x38, 0xcc, 0x78],
298 [0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x00],
299 [0x18, 0x3c, 0x7e, 0x18, 0x7e, 0x3c, 0x18, 0xff],
300 [0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00],
301 [0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00],
302 [0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00],
303 [0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00],
304 [0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00],
305 [0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00],
306 [0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x00, 0x00],
307 [0x00, 0xff, 0xff, 0x7e, 0x3c, 0x18, 0x00, 0x00],
308 [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
309 [0x30, 0x78, 0x78, 0x30, 0x30, 0x00, 0x30, 0x00],
310 [0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00],
311 [0x6c, 0x6c, 0xfe, 0x6c, 0xfe, 0x6c, 0x6c, 0x00],
312 [0x30, 0x7c, 0xc0, 0x78, 0x0c, 0xf8, 0x30, 0x00],
313 [0x00, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xc6, 0x00],
314 [0x38, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0x76, 0x00],
315 [0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00],
316 [0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00],
317 [0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00],
318 [0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00],
319 [0x00, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x00, 0x00],
320 [0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x60],
321 [0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00],
322 [0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00],
323 [0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00],
324 [0x7c, 0xc6, 0xce, 0xde, 0xf6, 0xe6, 0x7c, 0x00],
325 [0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x00],
326 [0x78, 0xcc, 0x0c, 0x38, 0x60, 0xcc, 0xfc, 0x00],
327 [0x78, 0xcc, 0x0c, 0x38, 0x0c, 0xcc, 0x78, 0x00],
328 [0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x1e, 0x00],
329 [0xfc, 0xc0, 0xf8, 0x0c, 0x0c, 0xcc, 0x78, 0x00],
330 [0x38, 0x60, 0xc0, 0xf8, 0xcc, 0xcc, 0x78, 0x00],
331 [0xfc, 0xcc, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x00],
332 [0x78, 0xcc, 0xcc, 0x78, 0xcc, 0xcc, 0x78, 0x00],
333 [0x78, 0xcc, 0xcc, 0x7c, 0x0c, 0x18, 0x70, 0x00],
334 [0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00],
335 [0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x60],
336 [0x18, 0x30, 0x60, 0xc0, 0x60, 0x30, 0x18, 0x00],
337 [0x00, 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00],
338 [0x60, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0x00],
339 [0x78, 0xcc, 0x0c, 0x18, 0x30, 0x00, 0x30, 0x00],
340 [0x7c, 0xc6, 0xde, 0xde, 0xde, 0xc0, 0x78, 0x00],
341 [0x30, 0x78, 0xcc, 0xcc, 0xfc, 0xcc, 0xcc, 0x00],
342 [0xfc, 0x66, 0x66, 0x7c, 0x66, 0x66, 0xfc, 0x00],
343 [0x3c, 0x66, 0xc0, 0xc0, 0xc0, 0x66, 0x3c, 0x00],
344 [0xf8, 0x6c, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00],
345 [0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00],
346 [0xfe, 0x62, 0x68, 0x78, 0x68, 0x60, 0xf0, 0x00],
347 [0x3c, 0x66, 0xc0, 0xc0, 0xce, 0x66, 0x3e, 0x00],
348 [0xcc, 0xcc, 0xcc, 0xfc, 0xcc, 0xcc, 0xcc, 0x00],
349 [0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00],
350 [0x1e, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78, 0x00],
351 [0xe6, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0xe6, 0x00],
352 [0xf0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00],
353 [0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00],
354 [0xc6, 0xe6, 0xf6, 0xde, 0xce, 0xc6, 0xc6, 0x00],
355 [0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00],
356 [0xfc, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00],
357 [0x78, 0xcc, 0xcc, 0xcc, 0xdc, 0x78, 0x1c, 0x00],
358 [0xfc, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0xe6, 0x00],
359 [0x78, 0xcc, 0xe0, 0x70, 0x1c, 0xcc, 0x78, 0x00],
360 [0xfc, 0xb4, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00],
361 [0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xfc, 0x00],
362 [0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x30, 0x00],
363 [0xc6, 0xc6, 0xc6, 0xd6, 0xfe, 0xee, 0xc6, 0x00],
364 [0xc6, 0xc6, 0x6c, 0x38, 0x38, 0x6c, 0xc6, 0x00],
365 [0xcc, 0xcc, 0xcc, 0x78, 0x30, 0x30, 0x78, 0x00],
366 [0xfe, 0xc6, 0x8c, 0x18, 0x32, 0x66, 0xfe, 0x00],
367 [0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x00],
368 [0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x02, 0x00],
369 [0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00],
370 [0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00],
371 [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff],
372 [0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00],
373 [0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00],
374 [0xe0, 0x60, 0x60, 0x7c, 0x66, 0x66, 0xdc, 0x00],
375 [0x00, 0x00, 0x78, 0xcc, 0xc0, 0xcc, 0x78, 0x00],
376 [0x1c, 0x0c, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00],
377 [0x00, 0x00, 0x78, 0xcc, 0xfc, 0xc0, 0x78, 0x00],
378 [0x38, 0x6c, 0x60, 0xf0, 0x60, 0x60, 0xf0, 0x00],
379 [0x00, 0x00, 0x76, 0xcc, 0xcc, 0x7c, 0x0c, 0xf8],
380 [0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0xe6, 0x00],
381 [0x30, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00],
382 [0x0c, 0x00, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78],
383 [0xe0, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0xe6, 0x00],
384 [0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00],
385 [0x00, 0x00, 0xcc, 0xfe, 0xfe, 0xd6, 0xc6, 0x00],
386 [0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0x00],
387 [0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0x78, 0x00],
388 [0x00, 0x00, 0xdc, 0x66, 0x66, 0x7c, 0x60, 0xf0],
389 [0x00, 0x00, 0x76, 0xcc, 0xcc, 0x7c, 0x0c, 0x1e],
390 [0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0xf0, 0x00],
391 [0x00, 0x00, 0x7c, 0xc0, 0x78, 0x0c, 0xf8, 0x00],
392 [0x10, 0x30, 0x7c, 0x30, 0x30, 0x34, 0x18, 0x00],
393 [0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00],
394 [0x00, 0x00, 0xcc, 0xcc, 0xcc, 0x78, 0x30, 0x00],
395 [0x00, 0x00, 0xc6, 0xd6, 0xfe, 0xfe, 0x6c, 0x00],
396 [0x00, 0x00, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0x00],
397 [0x00, 0x00, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xf8],
398 [0x00, 0x00, 0xfc, 0x98, 0x30, 0x64, 0xfc, 0x00],
399 [0x1c, 0x30, 0x30, 0xe0, 0x30, 0x30, 0x1c, 0x00],
400 [0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00],
401 [0xe0, 0x30, 0x30, 0x1c, 0x30, 0x30, 0xe0, 0x00],
402 [0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
403 [0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00],
404 [0x1e, 0x36, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x00],
405 [0x7c, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x7c, 0x00],
406 [0x7c, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x7c, 0x00],
407 [0x7e, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00],
408 [0x38, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xfe, 0xc6],
409 [0x7e, 0x60, 0x60, 0x7c, 0x60, 0x60, 0x7e, 0x00],
410 [0xdb, 0xdb, 0x7e, 0x3c, 0x7e, 0xdb, 0xdb, 0x00],
411 [0x3c, 0x66, 0x06, 0x1c, 0x06, 0x66, 0x3c, 0x00],
412 [0x66, 0x66, 0x6e, 0x7e, 0x76, 0x66, 0x66, 0x00],
413 [0x3c, 0x66, 0x6e, 0x7e, 0x76, 0x66, 0x66, 0x00],
414 [0x66, 0x6c, 0x78, 0x70, 0x78, 0x6c, 0x66, 0x00],
415 [0x1e, 0x36, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00],
416 [0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00],
417 [0x66, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x00],
418 [0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00],
419 [0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00],
420 [0x7c, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x00],
421 [0x3c, 0x66, 0x60, 0x60, 0x60, 0x66, 0x3c, 0x00],
422 [0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00],
423 [0x66, 0x66, 0x66, 0x3e, 0x06, 0x66, 0x3c, 0x00],
424 [0x7e, 0xdb, 0xdb, 0xdb, 0x7e, 0x18, 0x18, 0x00],
425 [0x66, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0x66, 0x00],
426 [0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x03],
427 [0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x06, 0x00],
428 [0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x00],
429 [0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x03],
430 [0xe0, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x7c, 0x00],
431 [0xc6, 0xc6, 0xc6, 0xf6, 0xde, 0xde, 0xf6, 0x00],
432 [0x60, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x7c, 0x00],
433 [0x78, 0x8c, 0x06, 0x3e, 0x06, 0x8c, 0x78, 0x00],
434 [0xce, 0xdb, 0xdb, 0xfb, 0xdb, 0xdb, 0xce, 0x00],
435 [0x3e, 0x66, 0x66, 0x66, 0x3e, 0x36, 0x66, 0x00],
436 [0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00],
437 [0x00, 0x3c, 0x60, 0x3c, 0x66, 0x66, 0x3c, 0x00],
438 [0x00, 0x00, 0x7c, 0x66, 0x7c, 0x66, 0x7c, 0x00],
439 [0x00, 0x00, 0x7e, 0x60, 0x60, 0x60, 0x60, 0x00],
440 [0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x6c, 0xfe, 0xc6],
441 [0x00, 0x00, 0x3c, 0x66, 0x7e, 0x60, 0x3c, 0x00],
442 [0x00, 0x00, 0xdb, 0x7e, 0x3c, 0x7e, 0xdb, 0x00],
443 [0x00, 0x00, 0x3c, 0x66, 0x0c, 0x66, 0x3c, 0x00],
444 [0x00, 0x00, 0x66, 0x6e, 0x7e, 0x76, 0x66, 0x00],
445 [0x00, 0x18, 0x66, 0x6e, 0x7e, 0x76, 0x66, 0x00],
446 [0x00, 0x00, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0x00],
447 [0x00, 0x00, 0x1e, 0x36, 0x66, 0x66, 0x66, 0x00],
448 [0x00, 0x00, 0xc6, 0xfe, 0xfe, 0xd6, 0xc6, 0x00],
449 [0x00, 0x00, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x00],
450 [0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x00],
451 [0x00, 0x00, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00],
452 [0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44],
453 [0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa],
454 [0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77],
455 [0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18],
456 [0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18],
457 [0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18],
458 [0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x36],
459 [0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x36],
460 [0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18],
461 [0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36],
462 [0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36],
463 [0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36],
464 [0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00],
465 [0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x00],
466 [0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00],
467 [0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18],
468 [0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00],
469 [0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00],
470 [0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18],
471 [0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18],
472 [0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00],
473 [0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18],
474 [0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18],
475 [0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36],
476 [0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00],
477 [0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36],
478 [0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00],
479 [0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36],
480 [0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36],
481 [0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00],
482 [0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36],
483 [0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00],
484 [0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00, 0x00],
485 [0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18],
486 [0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36],
487 [0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00, 0x00],
488 [0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00],
489 [0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18],
490 [0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36, 0x36],
491 [0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x36],
492 [0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18],
493 [0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00],
494 [0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18],
495 [0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff],
496 [0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff],
497 [0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0],
498 [0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f],
499 [0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00],
500 [0x00, 0x00, 0x7c, 0x66, 0x66, 0x7c, 0x60, 0x00],
501 [0x00, 0x00, 0x3c, 0x66, 0x60, 0x66, 0x3c, 0x00],
502 [0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00],
503 [0x00, 0x00, 0x66, 0x66, 0x3e, 0x06, 0x3c, 0x00],
504 [0x00, 0x00, 0x7e, 0xdb, 0xdb, 0x7e, 0x18, 0x00],
505 [0x00, 0x00, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0x00],
506 [0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x03],
507 [0x00, 0x00, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x00],
508 [0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x00],
509 [0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x03],
510 [0x00, 0x00, 0xe0, 0x60, 0x7c, 0x66, 0x7c, 0x00],
511 [0x00, 0x00, 0xc6, 0xc6, 0xf6, 0xde, 0xf6, 0x00],
512 [0x00, 0x00, 0x60, 0x60, 0x7c, 0x66, 0x7c, 0x00],
513 [0x00, 0x00, 0x7c, 0x06, 0x3e, 0x06, 0x7c, 0x00],
514 [0x00, 0x00, 0xce, 0xdb, 0xfb, 0xdb, 0xce, 0x00],
515 [0x00, 0x00, 0x3e, 0x66, 0x3e, 0x36, 0x66, 0x00],
516 [0x6c, 0xfe, 0x80, 0xf8, 0x80, 0x80, 0xfe, 0x00],
517 [0x6c, 0x00, 0x7c, 0x82, 0xfe, 0x80, 0x7e, 0x00],
518 [0x3c, 0x62, 0xc0, 0xf8, 0xc0, 0x62, 0x3c, 0x00],
519 [0x00, 0x00, 0x3e, 0x60, 0x7c, 0x60, 0x3e, 0x00],
520 [0x48, 0x78, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00],
521 [0x50, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00],
522 [0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18],
523 [0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00],
524 [0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00],
525 [0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00],
526 [0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00],
527 [0x03, 0x02, 0x06, 0x04, 0xcc, 0x68, 0x38, 0x10],
528 [0x8b, 0xcb, 0xe8, 0xb8, 0x98, 0x88, 0x88, 0x00],
529 [0x30, 0x48, 0x10, 0x20, 0x78, 0x00, 0x00, 0x00],
530 [0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00],
531 [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
532];
533
534
535function printc(ch) {
536
537 var x = $cursor.x * 8,
538 y = $cursor.y * $cursor.height;
539
540 for (var i = 0; i < $cursor.height; i++) {
541
542 var font = $cursor.height == 8 ? dosfont8x8 : dosfont8x16;
543 var mask = font[ch.charCodeAt(0) & 255][i];
544 for (var j = 0; j < 8; j++) {
545
546 cl = mask & (1 << (7-j)) ? $cursor.fr : $cursor.bg;
547 if (cl >= 0) pset(x + j, y + i, cl);
548 }
549 }
550}
551
552
553function printf(s) {
554
555 for (var i = 0; i < s.length; i++) {
556
557 printc(s.substr(i, 1));
558 $cursor.x++;
559
560 if (8 * canvas.factor * $cursor.x >= canvas.width) {
561 $cursor.x = 0;
562 $cursor.y++;
563 }
564 }
565}
566
567
568function fstyle(h) { $cursor.height = h; }
569
570
571function locate(x, y) {
572
573 $cursor.x = x;
574 $cursor.y = y;
575}