§ Способ подключения

Вызвать screen([id элемента canvas]) для назначения рабочей области. Если дополнительно добавить параметр (factor), то каждый пиксель будет в n раз больше. Если не задать id элемента, то будет выбран #canvas.
screen()(2);
for (var y = -120; y < 120; y++)
for (var x = -160; x < 160; x++)
    pset(160 + x, 120 + y, dos(x + y));

§ Набор функции для рисования

Файл canvas2d.js
var canvas = {
    element: null,
    context: null,
    width: null,
    height: null,
    img: null,
    factor: 1,
    refresh: 1,
    dos: [
        0x000000, 0x0000aa, 0x00aa00, 0x00aaaa, 0xaa0000, 0xaa00aa, 0xaa5500, 0xaaaaaa, // 0
        0x555555, 0x5555ff, 0x55ff55, 0x55ffff, 0xff5555, 0xff55ff, 0xffff55, 0xffffff, // 8
        0x000000, 0x141414, 0x202020, 0x2c2c2c, 0x383838, 0x454545, 0x515151, 0x616161, // 10
        0x717171, 0x828282, 0x929292, 0xa2a2a2, 0xb6b6b6, 0xcbcbcb, 0xe3e3e3, 0xffffff, // 18
        0x0000ff, 0x4100ff, 0x7d00ff, 0xbe00ff, 0xff00ff, 0xff00be, 0xff007d, 0xff0041, // 20
        0xff0000, 0xff4100, 0xff7d00, 0xffbe00, 0xffff00, 0xbeff00, 0x7dff00, 0x41ff00, // 28
        0x00ff00, 0x00ff41, 0x00ff7d, 0x00ffbe, 0x00ffff, 0x00beff, 0x007dff, 0x0041ff, // 30
        0x7d7dff, 0x9e7dff, 0xbe7dff, 0xdf7dff, 0xff7dff, 0xff7ddf, 0xff7dbe, 0xff7d9e, // 38
        0xff7d7d, 0xff9e7d, 0xffbe7d, 0xffdf7d, 0xffff7d, 0xdfff7d, 0xbeff7d, 0x9eff7d, // 40
        0x7dff7d, 0x7dff9e, 0x7dffbe, 0x7dffdf, 0x7dffff, 0x7ddfff, 0x7dbeff, 0x7d9eff, // 48
        0xb6b6ff, 0xc7b6ff, 0xdbb6ff, 0xebb6ff, 0xffb6ff, 0xffb6eb, 0xffb6db, 0xffb6c7, // 50
        0xffb6b6, 0xffc7b6, 0xffdbb6, 0xffebb6, 0xffffb6, 0xebffb6, 0xdbffb6, 0xc7ffb6, // 58
        0xb6ffb6, 0xb6ffc7, 0xb6ffdb, 0xb6ffeb, 0xb6ffff, 0xb6ebff, 0xb6dbff, 0xb6c7ff, // 60
        0x000071, 0x1c0071, 0x380071, 0x550071, 0x710071, 0x710055, 0x710038, 0x71001c, // 68
        0x710000, 0x711c00, 0x713800, 0x715500, 0x717100, 0x557100, 0x387100, 0x1c7100, // 70
        0x007100, 0x00711c, 0x007138, 0x007155, 0x007171, 0x005571, 0x003871, 0x001c71, // 78
        0x383871, 0x453871, 0x553871, 0x613871, 0x713871, 0x713861, 0x713855, 0x713845, // 80
        0x713838, 0x714538, 0x715538, 0x716138, 0x717138, 0x617138, 0x557138, 0x457138, // 88
        0x387138, 0x387145, 0x387155, 0x387161, 0x387171, 0x386171, 0x385571, 0x384571, // 90
        0x515171, 0x595171, 0x615171, 0x695171, 0x715171, 0x715169, 0x715161, 0x715159, // 98
        0x715151, 0x715951, 0x716151, 0x716951, 0x717151, 0x697151, 0x617151, 0x597151, // A0
        0x517151, 0x517159, 0x517161, 0x517169, 0x517171, 0x516971, 0x516171, 0x515971, // A8
        0x000041, 0x100041, 0x200041, 0x300041, 0x410041, 0x410030, 0x410020, 0x410010, // B0
        0x410000, 0x411000, 0x412000, 0x413000, 0x414100, 0x304100, 0x204100, 0x104100, // B8
        0x004100, 0x004110, 0x004120, 0x004130, 0x004141, 0x003041, 0x002041, 0x001041, // C0
        0x202041, 0x282041, 0x302041, 0x382041, 0x412041, 0x412038, 0x412030, 0x412028, // C8
        0x412020, 0x412820, 0x413020, 0x413820, 0x414120, 0x384120, 0x304120, 0x284120, // D0
        0x204120, 0x204128, 0x204130, 0x204138, 0x204141, 0x203841, 0x203041, 0x202841, // D8
        0x2c2c41, 0x302c41, 0x342c41, 0x3c2c41, 0x412c41, 0x412c3c, 0x412c34, 0x412c30, // E0
        0x412c2c, 0x41302c, 0x41342c, 0x413c2c, 0x41412c, 0x3c412c, 0x34412c, 0x30412c, // E8
        0x2c412c, 0x2c4130, 0x2c4134, 0x2c413c, 0x2c4141, 0x2c3c41, 0x2c3441, 0x2c3041, // F0
        0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000  // F8
    ]
};

// Создать текущую рабочую область
function screen(id) {

    var id = arguments.length == 0 ? "canvas" : arguments[0];
    var el = document.getElementById(id);

    canvas.element = el;
    canvas.context = el.getContext('2d');
    canvas.width   = el.width;
    canvas.height  = el.height;
    canvas.img     = canvas.context.getImageData(0, 0, el.width, el.height);

    refresh();

    // В случае необходимости использовать factor
    return function(e) { canvas.factor = e; }
}

// Палитра
function palette(i, r, g, b) {
    canvas.dos[i] = (Math.floor(r)*65536 + Math.floor(g)*256 + Math.floor(b));
}

// Выгрузить данные
function flush() { canvas.context.putImageData(canvas.img, 0, 0); }

// Цвет VGA ДОС
function dos(id) { return canvas.dos[id & 255]; }

// Наблюдатель изменений в картинке
function refresh() {

    if (canvas.refresh) flush();

    canvas.refresh = 0;
    setTimeout("refresh()", 25);
}

// -------------------------------------------------------
// ФУНКЦИИ РИСОВАНИЯ
// -------------------------------------------------------

// Нарисовать пиксель на экране
function pset(x, y, c) {

    x = Math.floor(x);
    y = Math.floor(y);
    f = canvas.factor;
    canvas.refresh = 1;

    for (var i = f*y; i < f*y + f; i++)
    for (var j = f*x; j < f*x + f; j++) {

        if (j >= 0 && i >= 0 && j < canvas.width && i < canvas.height) {

            var p = 4*(j + i * canvas.width);
            canvas.img.data[p    ] =  (c >> 16) & 0xff;
            canvas.img.data[p + 1] =  (c >>  8) & 0xff;
            canvas.img.data[p + 2] =  (c      ) & 0xff;
            canvas.img.data[p + 3] = ((c >> 24) & 0xff) ^ 0xff;
        }
    }
};

// Нарисовать блок на экране
function block(x1, y1, x2, y2, c) {

    for (var y = y1; y <= y2; y++) {
        for (var x = x1; x <= x2; x++) {
            pset(x, y, c);
        }
    }
};

// Нарисовать линию на экране
function line(x1, y1, x2, y2, c) {

    x1 = Math.floor(x1); y1 = Math.floor(y1);
    x2 = Math.floor(x2); y2 = Math.floor(y2);

    var deltax = Math.abs(x2 - x1);
    var deltay = Math.abs(y2 - y1);
    var signx  = x1 < x2 ? 1 : -1;
    var signy  = y1 < y2 ? 1 : -1;

    var error = deltax - deltay;
    var error2;

    pset(x2, y2, c);
    while (x1 !== x2 || y1 !== y2)
    {
        pset(x1, y1, c);
        error2 = error * 2;

        if (error2 > -deltay) {
            error -= deltay;
            x1 += signx;
        }

        if (error2 < deltax) {
            error += deltax;
            y1 += signy;
        }
    }
};

§ Файл шрифтов

var $cursor = {
    x: 0,
    y: 0,
    height: 16,
    fr: 0xffffff,
    bg: 0x000000
};

var dosfont8x16 = [

    /* $00 */ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    /* $01 */ [0, 0, 126, 129, 165, 165, 165, 129, 129, 189, 153, 129, 126, 0, 0, 0],
    /* $02 */ [0, 0, 126, 255, 219, 219, 219, 255, 255, 195, 231, 255, 126, 0, 0, 0],
    /* $03 */ [0, 0, 108, 254, 254, 254, 254, 254, 254, 124, 56, 16, 0, 0, 0, 0],
    /* $04 */ [0, 0, 0, 0, 16, 56, 124, 254, 124, 56, 16, 0, 0, 0, 0, 0],
    /* $05 */ [0, 0, 0, 24, 60, 60, 231, 231, 231, 24, 24, 60, 0, 0, 0, 0],
    /* $06 */ [0, 0, 0, 24, 60, 126, 255, 255, 126, 24, 24, 60, 0, 0, 0, 0],
    /* $07 */ [0, 0, 0, 0, 0, 24, 60, 60, 24, 0, 0, 0, 0, 0, 0, 0],
    /* $08 */ [255, 255, 255, 255, 255, 255, 231, 195, 195, 231, 255, 255, 255, 255, 255, 255],
    /* $09 */ [0, 0, 0, 0, 0, 60, 102, 66, 66, 102, 60, 0, 0, 0, 0, 0],
    /* $0A */ [255, 255, 255, 255, 195, 153, 189, 189, 153, 195, 255, 255, 255, 255, 255, 255],
    /* $0B */ [0, 0, 0, 30, 14, 26, 50, 120, 204, 204, 204, 120, 0, 0, 0, 0],
    /* $0C */ [0, 0, 0, 60, 102, 102, 102, 60, 24, 126, 24, 24, 0, 0, 0, 0],
    /* $0D */ [0, 0, 0, 63, 51, 63, 48, 48, 48, 112, 240, 224, 0, 0, 0, 0],
    /* $0E */ [0, 0, 0, 127, 99, 127, 99, 99, 99, 103, 231, 230, 192, 0, 0, 0],
    /* $0F */ [0, 0, 0, 24, 24, 219, 60, 231, 60, 219, 24, 24, 0, 0, 0, 0],
    /* $10 */ [0, 0, 0, 128, 192, 224, 248, 254, 248, 224, 192, 128, 0, 0, 0, 0],
    /* $11 */ [0, 0, 0, 2, 6, 14, 62, 254, 62, 14, 6, 2, 0, 0, 0, 0],
    /* $12 */ [0, 0, 0, 24, 60, 126, 24, 24, 24, 24, 24, 24, 126, 60, 24, 0],
    /* $13 */ [0, 0, 0, 102, 102, 102, 102, 102, 102, 0, 102, 102, 0, 0, 0, 0],
    /* $14 */ [0, 0, 0, 127, 219, 219, 219, 123, 27, 27, 27, 27, 0, 0, 0, 0],
    /* $15 */ [0, 0, 124, 198, 96, 56, 108, 198, 198, 108, 56, 12, 198, 124, 0, 0],
    /* $16 */ [0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 254, 254, 0, 0, 0, 0],
    /* $17 */ [0, 0, 0, 24, 60, 126, 24, 24, 24, 126, 60, 24, 126, 0, 0, 0],
    /* $18 */ [0, 0, 0, 24, 60, 126, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0],
    /* $19 */ [0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 126, 60, 24, 0],
    /* $1A */ [0, 0, 0, 0, 0, 24, 12, 254, 12, 24, 0, 0, 0, 0, 0, 0],
    /* $1B */ [0, 0, 0, 0, 0, 48, 96, 254, 96, 48, 0, 0, 0, 0, 0, 0],
    /* $1C */ [0, 0, 0, 0, 0, 0, 192, 192, 192, 254, 0, 0, 0, 0, 0, 0],
    /* $1D */ [0, 0, 0, 0, 0, 40, 108, 254, 108, 40, 0, 0, 0, 0, 0, 0],
    /* $1E */ [0, 0, 0, 0, 16, 56, 56, 124, 124, 254, 254, 0, 0, 0, 0, 0],
    /* $1F */ [0, 0, 0, 254, 124, 56, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    /* $20   */ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    /* $21 ! */ [0, 0, 24, 60, 60, 60, 60, 24, 24, 24, 0, 0, 24, 0, 0, 0],
    /* $22 " */ [0, 102, 102, 102, 102, 102, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    /* $23 # */ [0, 0, 108, 108, 108, 254, 108, 108, 108, 254, 108, 108, 108, 0, 0, 0],
    /* $24 $ */ [24, 24, 24, 124, 198, 194, 192, 124, 6, 134, 198, 124, 24, 24, 24, 0],
    /* $25 % */ [0, 0, 0, 0, 0, 194, 198, 12, 24, 48, 102, 198, 0, 0, 0, 0],
    /* $26 & */ [0, 0, 56, 108, 108, 108, 56, 118, 220, 204, 204, 204, 118, 0, 0, 0],
    /* $27 ' */ [0, 48, 48, 48, 48, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    /* $28 ( */ [0, 0, 12, 24, 48, 48, 48, 48, 48, 48, 48, 24, 12, 0, 0, 0],
    /* $29 ) */ [0, 0, 48, 24, 12, 12, 12, 12, 12, 12, 12, 24, 48, 0, 0, 0],
    /* $2A * */ [0, 0, 0, 0, 102, 102, 60, 255, 60, 102, 102, 0, 0, 0, 0, 0],
    /* $2B + */ [0, 0, 0, 0, 24, 24, 24, 126, 24, 24, 24, 0, 0, 0, 0, 0],
    /* $2C , */ [0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, 48, 0, 0],
    /* $2D - */ [0, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0],
    /* $2E . */ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0],
    /* $2F / */ [0, 0, 0, 2, 6, 12, 24, 48, 96, 192, 128, 0, 0, 0, 0, 0],
    /* $30 0 */ [0, 0, 124, 198, 198, 206, 222, 246, 246, 230, 198, 198, 124, 0, 0, 0],
    /* $31 1 */ [0, 0, 24, 24, 56, 120, 24, 24, 24, 24, 24, 24, 126, 0, 0, 0],
    /* $32 2 */ [0, 0, 124, 198, 198, 6, 6, 12, 24, 48, 96, 198, 254, 0, 0, 0],
    /* $33 3 */ [0, 0, 124, 198, 6, 6, 6, 60, 6, 6, 6, 198, 124, 0, 0, 0],
    /* $34 4 */ [0, 0, 12, 28, 60, 108, 204, 204, 254, 12, 12, 12, 30, 0, 0, 0],
    /* $35 5 */ [0, 0, 254, 192, 192, 192, 252, 6, 6, 6, 6, 198, 124, 0, 0, 0],
    /* $36 6 */ [0, 0, 56, 96, 192, 192, 252, 198, 198, 198, 198, 198, 124, 0, 0, 0],
    /* $37 7 */ [0, 0, 254, 198, 198, 6, 6, 12, 24, 48, 48, 48, 48, 0, 0, 0],
    /* $38 8 */ [0, 0, 124, 198, 198, 198, 198, 124, 198, 198, 198, 198, 124, 0, 0, 0],
    /* $39 9 */ [0, 0, 124, 198, 198, 198, 198, 198, 126, 6, 6, 12, 120, 0, 0, 0],
    /* $3A : */ [0, 0, 0, 24, 24, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0],
    /* $3B ; */ [0, 0, 0, 24, 24, 0, 0, 0, 0, 24, 24, 24, 24, 48, 0, 0],
    /* $3C < */ [0, 0, 0, 6, 12, 24, 48, 96, 48, 24, 12, 6, 0, 0, 0, 0],
    /* $3D = */ [0, 0, 0, 0, 0, 0, 126, 0, 0, 126, 0, 0, 0, 0, 0, 0],
    /* $3E > */ [0, 0, 0, 96, 48, 24, 12, 6, 12, 24, 48, 96, 0, 0, 0, 0],
    /* $3F ? */ [0, 0, 124, 198, 198, 198, 12, 24, 24, 24, 0, 24, 24, 0, 0, 0],
    /* $40 @ */ [0, 0, 124, 198, 198, 198, 222, 222, 222, 220, 192, 192, 124, 0, 0, 0],
    /* $41 A */ [0, 0, 16, 56, 108, 198, 198, 198, 254, 198, 198, 198, 198, 0, 0, 0],
    /* $42 B */ [0, 0, 252, 102, 102, 102, 102, 124, 102, 102, 102, 102, 252, 0, 0, 0],
    /* $43 C */ [0, 0, 124, 198, 198, 192, 192, 192, 192, 198, 198, 198, 124, 0, 0, 0],
    /* $44 D */ [0, 0, 252, 102, 102, 102, 102, 102, 102, 102, 102, 102, 252, 0, 0, 0],
    /* $45 E */ [0, 0, 254, 102, 98, 96, 104, 120, 104, 104, 98, 102, 254, 0, 0, 0],
    /* $46 F */ [0, 0, 254, 102, 98, 96, 104, 120, 104, 104, 96, 96, 240, 0, 0, 0],
    /* $47 G */ [0, 0, 124, 198, 198, 192, 192, 192, 222, 198, 198, 198, 124, 0, 0, 0],
    /* $48 H */ [0, 0, 198, 198, 198, 198, 198, 254, 198, 198, 198, 198, 198, 0, 0, 0],
    /* $49 I */ [0, 0, 60, 24, 24, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0],
    /* $4A J */ [0, 0, 30, 12, 12, 12, 12, 12, 12, 12, 204, 204, 120, 0, 0, 0],
    /* $4B K */ [0, 0, 230, 102, 102, 108, 108, 120, 108, 108, 102, 102, 230, 0, 0, 0],
    /* $4C L */ [0, 0, 240, 96, 96, 96, 96, 96, 96, 96, 98, 102, 254, 0, 0, 0],
    /* $4D M */ [0, 0, 198, 198, 238, 254, 254, 214, 198, 198, 198, 198, 198, 0, 0, 0],
    /* $4E N */ [0, 0, 198, 198, 230, 246, 254, 222, 206, 198, 198, 198, 198, 0, 0, 0],
    /* $4F O */ [0, 0, 124, 198, 198, 198, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0],
    /* $50 P */ [0, 0, 252, 102, 102, 102, 102, 102, 124, 96, 96, 96, 240, 0, 0, 0],
    /* $51 Q */ [0, 0, 124, 198, 198, 198, 198, 198, 198, 214, 222, 124, 12, 0, 0, 0],
    /* $52 R */ [0, 0, 252, 102, 102, 102, 102, 124, 108, 102, 102, 102, 230, 0, 0, 0],
    /* $53 S */ [0, 0, 124, 198, 198, 198, 96, 56, 12, 198, 198, 198, 124, 0, 0, 0],
    /* $54 T */ [0, 0, 126, 126, 90, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0],
    /* $55 U */ [0, 0, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0],
    /* $56 V */ [0, 0, 198, 198, 198, 198, 198, 198, 198, 198, 108, 56, 16, 0, 0, 0],
    /* $57 W */ [0, 0, 198, 198, 198, 198, 198, 214, 214, 254, 124, 108, 108, 0, 0, 0],
    /* $58 X */ [0, 0, 198, 198, 198, 108, 56, 56, 56, 108, 198, 198, 198, 0, 0, 0],
    /* $59 Y */ [0, 0, 102, 102, 102, 102, 102, 60, 24, 24, 24, 24, 60, 0, 0, 0],
    /* $5A Z */ [0, 0, 254, 198, 198, 140, 24, 48, 96, 194, 198, 198, 254, 0, 0, 0],
    /* $5B [ */ [0, 0, 60, 48, 48, 48, 48, 48, 48, 48, 48, 48, 60, 0, 0, 0],
    /* $5C \ */ [0, 0, 0, 128, 192, 224, 112, 56, 28, 14, 6, 2, 0, 0, 0, 0],
    /* $5D ] */ [0, 0, 60, 12, 12, 12, 12, 12, 12, 12, 12, 12, 60, 0, 0, 0],
    /* $5E ^ */ [16, 16, 56, 108, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    /* $5F _ */ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0],
    /* $60 ` */ [48, 48, 48, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    /* $61 a */ [0, 0, 0, 0, 0, 120, 204, 12, 124, 204, 204, 204, 118, 0, 0, 0],
    /* $62 b */ [0, 0, 224, 96, 96, 96, 120, 108, 102, 102, 102, 102, 124, 0, 0, 0],
    /* $63 c */ [0, 0, 0, 0, 0, 124, 198, 198, 192, 192, 198, 198, 124, 0, 0, 0],
    /* $64 d */ [0, 0, 28, 12, 12, 12, 60, 108, 204, 204, 204, 204, 118, 0, 0, 0],
    /* $65 e */ [0, 0, 0, 0, 0, 124, 198, 198, 254, 192, 198, 198, 124, 0, 0, 0],
    /* $66 f */ [0, 0, 56, 108, 100, 96, 240, 96, 96, 96, 96, 96, 240, 0, 0, 0],
    /* $67 g */ [0, 0, 0, 0, 0, 118, 204, 204, 204, 204, 204, 124, 12, 204, 120, 0],
    /* $68 h */ [0, 0, 224, 96, 96, 108, 118, 102, 102, 102, 102, 102, 230, 0, 0, 0],
    /* $69 i */ [0, 0, 24, 24, 0, 56, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0],
    /* $6A j */ [0, 0, 6, 6, 0, 14, 6, 6, 6, 6, 6, 6, 102, 102, 60, 0],
    /* $6B k */ [0, 0, 224, 96, 96, 102, 102, 108, 120, 108, 102, 102, 230, 0, 0, 0],
    /* $6C l */ [0, 0, 56, 24, 24, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0],
    /* $6D m */ [0, 0, 0, 0, 0, 236, 254, 214, 214, 214, 198, 198, 198, 0, 0, 0],
    /* $6E n */ [0, 0, 0, 0, 0, 220, 102, 102, 102, 102, 102, 102, 102, 0, 0, 0],
    /* $6F o */ [0, 0, 0, 0, 0, 124, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0],
    /* $70 p */ [0, 0, 0, 0, 0, 220, 102, 102, 102, 102, 102, 102, 124, 96, 240, 0],
    /* $71 q */ [0, 0, 0, 0, 0, 118, 204, 204, 204, 204, 204, 204, 124, 12, 30, 0],
    /* $72 r */ [0, 0, 0, 0, 0, 220, 118, 102, 96, 96, 96, 96, 240, 0, 0, 0],
    /* $73 s */ [0, 0, 0, 0, 0, 124, 198, 198, 112, 28, 198, 198, 124, 0, 0, 0],
    /* $74 t */ [0, 0, 16, 48, 48, 252, 48, 48, 48, 48, 48, 54, 28, 0, 0, 0],
    /* $75 u */ [0, 0, 0, 0, 0, 204, 204, 204, 204, 204, 204, 204, 118, 0, 0, 0],
    /* $76 v */ [0, 0, 0, 0, 0, 102, 102, 102, 102, 102, 102, 60, 24, 0, 0, 0],
    /* $77 w */ [0, 0, 0, 0, 0, 198, 198, 198, 214, 214, 254, 108, 108, 0, 0, 0],
    /* $78 x */ [0, 0, 0, 0, 0, 198, 198, 108, 56, 56, 108, 198, 198, 0, 0, 0],
    /* $79 y  */ [0, 0, 0, 0, 0, 198, 198, 198, 198, 198, 198, 126, 6, 12, 248, 0],
    /* $7A z */ [0, 0, 0, 0, 0, 254, 198, 204, 24, 48, 102, 198, 254, 0, 0, 0],
    /* $7B [ */ [0, 14, 24, 24, 24, 24, 24, 112, 112, 24, 24, 24, 24, 24, 14, 0],
    /* $7C | */ [0, 0, 24, 24, 24, 24, 24, 0, 24, 24, 24, 24, 24, 0, 0, 0],
    /* $7D ] */ [0, 112, 24, 24, 24, 24, 24, 14, 14, 24, 24, 24, 24, 24, 112, 0],
    /* $7E ~ */ [0, 0, 118, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    /* $7F   */ [0, 0, 0, 0, 16, 56, 108, 198, 198, 198, 198, 254, 0, 0, 0, 0],         // Домик непечатаемый
    /* $80 А */ [0, 0, 16, 56, 108, 198, 198, 198, 254, 198, 198, 198, 198, 0, 0, 0],
    /* $81 Б */ [0, 0, 254, 102, 98, 96, 124, 102, 102, 102, 102, 102, 252, 0, 0, 0],
    /* $82 В */ [0, 0, 252, 102, 102, 102, 124, 102, 102, 102, 102, 102, 252, 0, 0, 0],
    /* $83 Г */ [0, 0, 254, 102, 98, 96, 96, 96, 96, 96, 96, 96, 240, 0, 0, 0],
    /* $84 Д */ [0, 0, 62, 102, 102, 102, 102, 102, 102, 102, 102, 102, 255, 195, 195, 0],
    /* $85 Е */ [0, 0, 254, 102, 102, 98, 104, 120, 104, 98, 102, 102, 254, 0, 0, 0],
    /* $86 Ж */ [0, 0, 214, 214, 214, 124, 56, 124, 214, 214, 214, 214, 214, 0, 0, 0],
    /* $87 З */ [0, 0, 124, 198, 6, 6, 6, 60, 6, 6, 6, 198, 124, 0, 0, 0],
    /* $88 И */ [0, 0, 198, 198, 206, 222, 254, 246, 230, 198, 198, 198, 198, 0, 0, 0],
    /* $89 Й */ [56, 56, 198, 198, 206, 222, 254, 246, 230, 198, 198, 198, 198, 0, 0, 0],
    /* $8A К */ [0, 0, 230, 102, 108, 108, 120, 108, 108, 102, 102, 102, 230, 0, 0, 0],
    /* $8B Л */ [0, 0, 62, 102, 102, 102, 102, 102, 102, 102, 102, 102, 230, 0, 0, 0],
    /* $8C М */ [0, 0, 198, 238, 254, 254, 214, 198, 198, 198, 198, 198, 198, 0, 0, 0],
    /* $8D Н */ [0, 0, 198, 198, 198, 198, 254, 198, 198, 198, 198, 198, 198, 0, 0, 0],
    /* $8E О */ [0, 0, 124, 198, 198, 198, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0],
    /* $8F П */ [0, 0, 254, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 0, 0, 0],
    /* $90 Р */ [0, 0, 252, 102, 102, 102, 102, 102, 124, 96, 96, 96, 240, 0, 0, 0],
    /* $91 С */ [0, 0, 124, 198, 198, 192, 192, 192, 192, 198, 198, 198, 124, 0, 0, 0],
    /* $92 Т */ [0, 0, 126, 126, 90, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0],
    /* $93 У */ [0, 0, 198, 198, 198, 198, 198, 126, 6, 6, 6, 198, 124, 0, 0, 0],
    /* $94 Ф */ [0, 0, 24, 126, 219, 219, 219, 219, 219, 219, 219, 126, 24, 0, 0, 0],
    /* $95 Х */ [0, 0, 198, 198, 198, 108, 56, 56, 56, 108, 198, 198, 198, 0, 0, 0],
    /* $96 Ц */ [0, 0, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 254, 6, 6, 0],
    /* $97 Ч */ [0, 0, 198, 198, 198, 198, 198, 198, 126, 6, 6, 6, 6, 0, 0, 0],
    /* $98 Ш */ [0, 0, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 254, 0, 0, 0],
    /* $99 Щ */ [0, 0, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 254, 3, 3, 0],
    /* $9A Ъ */ [0, 0, 248, 240, 176, 48, 60, 54, 54, 54, 54, 54, 124, 0, 0, 0],
    /* $9B Ы */ [0, 0, 198, 198, 198, 198, 246, 222, 222, 222, 222, 222, 246, 0, 0, 0],
    /* $9C Ь */ [0, 0, 240, 96, 96, 96, 124, 102, 102, 102, 102, 102, 252, 0, 0, 0],
    /* $9D Э */ [0, 0, 120, 204, 134, 134, 38, 62, 38, 134, 134, 204, 120, 0, 0, 0],
    /* $9E Ю */ [0, 0, 156, 182, 182, 182, 182, 246, 182, 182, 182, 182, 156, 0, 0, 0],
    /* $9F Я */ [0, 0, 126, 204, 204, 204, 204, 124, 108, 204, 204, 206, 206, 0, 0, 0],
    /* $A0 а */ [0, 0, 0, 0, 0, 120, 204, 12, 124, 204, 204, 204, 118, 0, 0, 0],
    /* $A1 б */ [0, 0, 0, 28, 48, 96, 124, 102, 102, 102, 102, 102, 60, 0, 0, 0],
    /* $A2 в */ [0, 0, 0, 0, 0, 252, 102, 102, 124, 102, 102, 102, 252, 0, 0, 0],
    /* $A3 г */ [0, 0, 0, 0, 0, 254, 98, 96, 96, 96, 96, 96, 240, 0, 0, 0],
    /* $A4 д */ [0, 0, 0, 0, 0, 62, 102, 102, 102, 102, 102, 102, 255, 195, 195, 0],
    /* $A5 е */ [0, 0, 0, 0, 0, 124, 198, 198, 254, 192, 192, 198, 124, 0, 0, 0],
    /* $A6 ж */ [0, 0, 0, 0, 0, 214, 214, 214, 124, 124, 214, 214, 214, 0, 0, 0],
    /* $A7 з */ [0, 0, 0, 0, 0, 60, 102, 102, 12, 6, 102, 102, 60, 0, 0, 0],
    /* $A8 и */ [0, 0, 0, 0, 0, 198, 206, 222, 254, 246, 230, 198, 198, 0, 0, 0],
    /* $A9 й */ [0, 0, 56, 56, 0, 198, 206, 222, 254, 246, 230, 198, 198, 0, 0, 0],
    /* $AA к */ [0, 0, 0, 0, 0, 230, 102, 108, 120, 108, 102, 102, 230, 0, 0, 0],
    /* $AB л */ [0, 0, 0, 0, 0, 62, 102, 102, 102, 102, 102, 102, 230, 0, 0, 0],
    /* $AC м */ [0, 0, 0, 0, 0, 198, 238, 254, 254, 214, 198, 198, 198, 0, 0, 0],
    /* $AD н */ [0, 0, 0, 0, 0, 198, 198, 198, 254, 198, 198, 198, 198, 0, 0, 0],
    /* $AE о */ [0, 0, 0, 0, 0, 124, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0],
    /* $AF п */ [0, 0, 0, 0, 0, 254, 198, 198, 198, 198, 198, 198, 198, 0, 0, 0],
    // Псевдографика $B0-$DF
    /* $B0 */ [68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17],
    /* $B1 */ [170, 85, 170, 85, 170, 85, 170, 85, 170, 85, 170, 85, 170, 85, 170, 85],
    /* $B2 */ [119, 221, 119, 221, 119, 221, 119, 221, 119, 221, 119, 221, 119, 221, 119, 221],
    /* $B3 */ [24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24],
    /* $B4 */ [24, 24, 24, 24, 24, 24, 24, 24, 248, 24, 24, 24, 24, 24, 24, 24],
    /* $B5 */ [24, 24, 24, 24, 24, 24, 248, 24, 248, 24, 24, 24, 24, 24, 24, 24],
    /* $B6 */ [54, 54, 54, 54, 54, 54, 54, 54, 246, 54, 54, 54, 54, 54, 54, 54],
    /* $B7 */ [0, 0, 0, 0, 0, 0, 0, 0, 254, 54, 54, 54, 54, 54, 54, 54],
    /* $B8 */ [0, 0, 0, 0, 0, 0, 248, 24, 248, 24, 24, 24, 24, 24, 24, 24],
    /* $B9 */ [54, 54, 54, 54, 54, 54, 246, 6, 246, 54, 54, 54, 54, 54, 54, 54],
    /* $BA */ [54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54],
    /* $BB */ [0, 0, 0, 0, 0, 0, 254, 6, 246, 54, 54, 54, 54, 54, 54, 54],
    /* $BC */ [54, 54, 54, 54, 54, 54, 246, 6, 254, 0, 0, 0, 0, 0, 0, 0],
    /* $BD */ [54, 54, 54, 54, 54, 54, 54, 54, 254, 0, 0, 0, 0, 0, 0, 0],
    /* $BE */ [24, 24, 24, 24, 24, 24, 248, 24, 248, 0, 0, 0, 0, 0, 0, 0],
    /* $BF */ [0, 0, 0, 0, 0, 0, 0, 0, 248, 24, 24, 24, 24, 24, 24, 24],
    /* $C0 */ [24, 24, 24, 24, 24, 24, 24, 24, 31, 0, 0, 0, 0, 0, 0, 0],
    /* $C1 */ [24, 24, 24, 24, 24, 24, 24, 24, 255, 0, 0, 0, 0, 0, 0, 0],
    /* $C2 */ [0, 0, 0, 0, 0, 0, 0, 0, 255, 24, 24, 24, 24, 24, 24, 24],
    /* $C3 */ [24, 24, 24, 24, 24, 24, 24, 24, 31, 24, 24, 24, 24, 24, 24, 24],
    /* $C4 */ [0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0],
    /* $C5 */ [24, 24, 24, 24, 24, 24, 24, 24, 255, 24, 24, 24, 24, 24, 24, 24],
    /* $C6 */ [24, 24, 24, 24, 24, 24, 31, 24, 31, 24, 24, 24, 24, 24, 24, 24],
    /* $C7 */ [54, 54, 54, 54, 54, 54, 54, 54, 55, 54, 54, 54, 54, 54, 54, 54],
    /* $C8 */ [54, 54, 54, 54, 54, 54, 55, 48, 63, 0, 0, 0, 0, 0, 0, 0],
    /* $C9 */ [0, 0, 0, 0, 0, 0, 63, 48, 55, 54, 54, 54, 54, 54, 54, 54],
    /* $CA */ [54, 54, 54, 54, 54, 54, 247, 0, 255, 0, 0, 0, 0, 0, 0, 0],
    /* $CB */ [0, 0, 0, 0, 0, 0, 255, 0, 247, 54, 54, 54, 54, 54, 54, 54],
    /* $CC */ [54, 54, 54, 54, 54, 54, 55, 48, 55, 54, 54, 54, 54, 54, 54, 54],
    /* $CD */ [0, 0, 0, 0, 0, 0, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0],
    /* $CE */ [54, 54, 54, 54, 54, 54, 247, 0, 247, 54, 54, 54, 54, 54, 54, 54],
    /* $CF */ [24, 24, 24, 24, 24, 24, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0],
    /* $D0 */ [54, 54, 54, 54, 54, 54, 54, 54, 255, 0, 0, 0, 0, 0, 0, 0],
    /* $D1 */ [0, 0, 0, 0, 0, 0, 255, 0, 255, 24, 24, 24, 24, 24, 24, 24],
    /* $D2 */ [0, 0, 0, 0, 0, 0, 0, 0, 255, 54, 54, 54, 54, 54, 54, 54],
    /* $D3 */ [54, 54, 54, 54, 54, 54, 54, 54, 63, 0, 0, 0, 0, 0, 0, 0],
    /* $D4 */ [24, 24, 24, 24, 24, 24, 31, 24, 31, 0, 0, 0, 0, 0, 0, 0],
    /* $D5 */ [0, 0, 0, 0, 0, 0, 31, 24, 31, 24, 24, 24, 24, 24, 24, 24],
    /* $D6 */ [0, 0, 0, 0, 0, 0, 0, 0, 63, 54, 54, 54, 54, 54, 54, 54],
    /* $D7 */ [54, 54, 54, 54, 54, 54, 54, 54, 255, 54, 54, 54, 54, 54, 54, 54],
    /* $D8 */ [24, 24, 24, 24, 24, 24, 255, 24, 255, 24, 24, 24, 24, 24, 24, 24],
    /* $D9 */ [24, 24, 24, 24, 24, 24, 24, 24, 248, 0, 0, 0, 0, 0, 0, 0],
    /* $DA */ [0, 0, 0, 0, 0, 0, 0, 0, 31, 24, 24, 24, 24, 24, 24, 24],
    /* $DB */ [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
    /* $DC */ [0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255],
    /* $DD */ [240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240],
    /* $DE */ [15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15],
    /* $DF */ [255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0],

    // Русский алфавит - второй том
    /* $E0 р */ [0, 0, 0, 0, 0, 220, 102, 102, 102, 102, 102, 124, 96, 96, 240, 0],
    /* $E1 с */ [0, 0, 0, 0, 0, 124, 198, 198, 192, 192, 198, 198, 124, 0, 0, 0],
    /* $E2 т */ [0, 0, 0, 0, 0, 126, 90, 24, 24, 24, 24, 24, 60, 0, 0, 0],
    /* $E3 у */ [0, 0, 0, 0, 0, 198, 198, 198, 198, 198, 198, 126, 6, 12, 248, 0],
    /* $E4 ф */ [0, 0, 0, 0, 0, 24, 126, 219, 219, 219, 219, 219, 126, 24, 24, 0],
    /* $E5 х */ [0, 0, 0, 0, 0, 198, 198, 108, 56, 56, 108, 198, 198, 0, 0, 0],
    /* $E6 ц */ [0, 0, 0, 0, 0, 204, 204, 204, 204, 204, 204, 204, 254, 6, 6, 0],
    /* $E7 ч */ [0, 0, 0, 0, 0, 198, 198, 198, 198, 126, 6, 6, 6, 0, 0, 0],
    /* $E8 ш */ [0, 0, 0, 0, 0, 214, 214, 214, 214, 214, 214, 214, 254, 0, 0, 0],
    /* $E9 щ */ [0, 0, 0, 0, 0, 214, 214, 214, 214, 214, 214, 214, 254, 3, 3, 0],
    /* $EA ъ */ [0, 0, 0, 0, 0, 248, 176, 60, 54, 54, 54, 54, 124, 0, 0, 0],
    /* $EB ы */ [0, 0, 0, 0, 0, 198, 198, 246, 222, 222, 222, 222, 246, 0, 0, 0],
    /* $EC ь */ [0, 0, 0, 0, 0, 240, 96, 96, 124, 102, 102, 102, 252, 0, 0, 0],
    /* $ED э */ [0, 0, 0, 0, 0, 60, 102, 6, 30, 6, 102, 102, 60, 0, 0, 0],
    /* $EE ю */ [0, 0, 0, 0, 0, 156, 182, 182, 246, 182, 182, 182, 156, 0, 0, 0],
    /* $EF я */ [0, 0, 0, 0, 0, 126, 204, 204, 204, 124, 108, 204, 206, 0, 0, 0],

    // Математические спецсимволы
    /* $F0 === */ [0, 0, 0, 0, 254, 0, 0, 254, 0, 0, 254, 0, 0, 0, 0, 0],
    /* $F1 +/- */ [0, 0, 0, 0, 24, 24, 126, 24, 24, 0, 0, 255, 0, 0, 0, 0],
    /* $F2 >=  */ [0, 0, 0, 48, 24, 12, 6, 12, 24, 48, 0, 126, 0, 0, 0, 0],
    /* $F3 <=  */ [0, 0, 0, 12, 24, 48, 96, 48, 24, 12, 0, 126, 0, 0, 0, 0],
    /* $F4 It  */ [0, 0, 0, 14, 27, 27, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24],   // Верхний интеграл
    /* $F5 Id  */ [24, 24, 24, 24, 24, 24, 24, 24, 24, 216, 216, 112, 0, 0, 0, 0], // Нижний
    /* $F6 ./. */ [0, 0, 0, 0, 24, 24, 0, 126, 0, 24, 24, 0, 0, 0, 0, 0],          // Деление
    /* $F7 ~~~ */ [0, 0, 0, 0, 0, 118, 220, 0, 118, 220, 0, 0, 0, 0, 0, 0],        // Не равно
    /* $F8 o   */ [0, 56, 108, 108, 108, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],        // Градус
    /* $F9 .   */ [0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 0, 0, 0, 0],              // Крупная точка
    /* $FA .   */ [0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0],               // Маленькая точка
    /* $FB \/~ */ [0, 15, 12, 12, 12, 12, 12, 236, 108, 60, 28, 12, 0, 0, 0, 0],   // Корневище
    /* $FC n   */ [0, 0, 216, 108, 108, 108, 108, 108, 0, 0, 0, 0, 0, 0, 0, 0],    // Номер
    /* $FD 2   */ [0, 0, 112, 216, 48, 96, 200, 248, 0, 0, 0, 0, 0, 0, 0, 0],      // Квадрат
    /* $FE |   */ [0, 0, 0, 0, 60, 60, 60, 60, 60, 60, 60, 60, 0, 0, 0, 0],        // Прямоугольник
    /* $FF     */ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]                 // Пустая символга
];

var dosfont8x8 = [

    [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
    [0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e],
    [0x7e, 0xff, 0xdb, 0xff, 0xc3, 0xe7, 0xff, 0x7e],
    [0x6c, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00],
    [0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00],
    [0x38, 0x7c, 0x38, 0xfe, 0xfe, 0x7c, 0x38, 0x7c],
    [0x10, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x7c],
    [0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00],
    [0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff],
    [0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00],
    [0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff],
    [0x0f, 0x07, 0x0f, 0x7d, 0xcc, 0xcc, 0xcc, 0x78],
    [0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18],
    [0x3f, 0x33, 0x3f, 0x30, 0x30, 0x70, 0xf0, 0xe0],
    [0x7f, 0x63, 0x7f, 0x63, 0x63, 0x67, 0xe6, 0xc0],
    [0x99, 0x5a, 0x3c, 0xe7, 0xe7, 0x3c, 0x5a, 0x99],
    [0x80, 0xe0, 0xf8, 0xfe, 0xf8, 0xe0, 0x80, 0x00],
    [0x02, 0x0e, 0x3e, 0xfe, 0x3e, 0x0e, 0x02, 0x00],
    [0x18, 0x3c, 0x7e, 0x18, 0x18, 0x7e, 0x3c, 0x18],
    [0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00],
    [0x7f, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x00],
    [0x3e, 0x63, 0x38, 0x6c, 0x6c, 0x38, 0xcc, 0x78],
    [0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x00],
    [0x18, 0x3c, 0x7e, 0x18, 0x7e, 0x3c, 0x18, 0xff],
    [0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00],
    [0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00],
    [0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00],
    [0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00],
    [0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00],
    [0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00],
    [0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x00, 0x00],
    [0x00, 0xff, 0xff, 0x7e, 0x3c, 0x18, 0x00, 0x00],
    [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
    [0x30, 0x78, 0x78, 0x30, 0x30, 0x00, 0x30, 0x00],
    [0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00],
    [0x6c, 0x6c, 0xfe, 0x6c, 0xfe, 0x6c, 0x6c, 0x00],
    [0x30, 0x7c, 0xc0, 0x78, 0x0c, 0xf8, 0x30, 0x00],
    [0x00, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xc6, 0x00],
    [0x38, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0x76, 0x00],
    [0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00],
    [0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00],
    [0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00],
    [0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00],
    [0x00, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x00, 0x00],
    [0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x60],
    [0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00],
    [0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00],
    [0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00],
    [0x7c, 0xc6, 0xce, 0xde, 0xf6, 0xe6, 0x7c, 0x00],
    [0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x00],
    [0x78, 0xcc, 0x0c, 0x38, 0x60, 0xcc, 0xfc, 0x00],
    [0x78, 0xcc, 0x0c, 0x38, 0x0c, 0xcc, 0x78, 0x00],
    [0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x1e, 0x00],
    [0xfc, 0xc0, 0xf8, 0x0c, 0x0c, 0xcc, 0x78, 0x00],
    [0x38, 0x60, 0xc0, 0xf8, 0xcc, 0xcc, 0x78, 0x00],
    [0xfc, 0xcc, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x00],
    [0x78, 0xcc, 0xcc, 0x78, 0xcc, 0xcc, 0x78, 0x00],
    [0x78, 0xcc, 0xcc, 0x7c, 0x0c, 0x18, 0x70, 0x00],
    [0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00],
    [0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x60],
    [0x18, 0x30, 0x60, 0xc0, 0x60, 0x30, 0x18, 0x00],
    [0x00, 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00],
    [0x60, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0x00],
    [0x78, 0xcc, 0x0c, 0x18, 0x30, 0x00, 0x30, 0x00],
    [0x7c, 0xc6, 0xde, 0xde, 0xde, 0xc0, 0x78, 0x00],
    [0x30, 0x78, 0xcc, 0xcc, 0xfc, 0xcc, 0xcc, 0x00],
    [0xfc, 0x66, 0x66, 0x7c, 0x66, 0x66, 0xfc, 0x00],
    [0x3c, 0x66, 0xc0, 0xc0, 0xc0, 0x66, 0x3c, 0x00],
    [0xf8, 0x6c, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00],
    [0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00],
    [0xfe, 0x62, 0x68, 0x78, 0x68, 0x60, 0xf0, 0x00],
    [0x3c, 0x66, 0xc0, 0xc0, 0xce, 0x66, 0x3e, 0x00],
    [0xcc, 0xcc, 0xcc, 0xfc, 0xcc, 0xcc, 0xcc, 0x00],
    [0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00],
    [0x1e, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78, 0x00],
    [0xe6, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0xe6, 0x00],
    [0xf0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00],
    [0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00],
    [0xc6, 0xe6, 0xf6, 0xde, 0xce, 0xc6, 0xc6, 0x00],
    [0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00],
    [0xfc, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00],
    [0x78, 0xcc, 0xcc, 0xcc, 0xdc, 0x78, 0x1c, 0x00],
    [0xfc, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0xe6, 0x00],
    [0x78, 0xcc, 0xe0, 0x70, 0x1c, 0xcc, 0x78, 0x00],
    [0xfc, 0xb4, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00],
    [0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xfc, 0x00],
    [0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x30, 0x00],
    [0xc6, 0xc6, 0xc6, 0xd6, 0xfe, 0xee, 0xc6, 0x00],
    [0xc6, 0xc6, 0x6c, 0x38, 0x38, 0x6c, 0xc6, 0x00],
    [0xcc, 0xcc, 0xcc, 0x78, 0x30, 0x30, 0x78, 0x00],
    [0xfe, 0xc6, 0x8c, 0x18, 0x32, 0x66, 0xfe, 0x00],
    [0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x00],
    [0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x02, 0x00],
    [0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00],
    [0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00],
    [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff],
    [0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00],
    [0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00],
    [0xe0, 0x60, 0x60, 0x7c, 0x66, 0x66, 0xdc, 0x00],
    [0x00, 0x00, 0x78, 0xcc, 0xc0, 0xcc, 0x78, 0x00],
    [0x1c, 0x0c, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00],
    [0x00, 0x00, 0x78, 0xcc, 0xfc, 0xc0, 0x78, 0x00],
    [0x38, 0x6c, 0x60, 0xf0, 0x60, 0x60, 0xf0, 0x00],
    [0x00, 0x00, 0x76, 0xcc, 0xcc, 0x7c, 0x0c, 0xf8],
    [0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0xe6, 0x00],
    [0x30, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00],
    [0x0c, 0x00, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78],
    [0xe0, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0xe6, 0x00],
    [0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00],
    [0x00, 0x00, 0xcc, 0xfe, 0xfe, 0xd6, 0xc6, 0x00],
    [0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0x00],
    [0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0x78, 0x00],
    [0x00, 0x00, 0xdc, 0x66, 0x66, 0x7c, 0x60, 0xf0],
    [0x00, 0x00, 0x76, 0xcc, 0xcc, 0x7c, 0x0c, 0x1e],
    [0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0xf0, 0x00],
    [0x00, 0x00, 0x7c, 0xc0, 0x78, 0x0c, 0xf8, 0x00],
    [0x10, 0x30, 0x7c, 0x30, 0x30, 0x34, 0x18, 0x00],
    [0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00],
    [0x00, 0x00, 0xcc, 0xcc, 0xcc, 0x78, 0x30, 0x00],
    [0x00, 0x00, 0xc6, 0xd6, 0xfe, 0xfe, 0x6c, 0x00],
    [0x00, 0x00, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0x00],
    [0x00, 0x00, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xf8],
    [0x00, 0x00, 0xfc, 0x98, 0x30, 0x64, 0xfc, 0x00],
    [0x1c, 0x30, 0x30, 0xe0, 0x30, 0x30, 0x1c, 0x00],
    [0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00],
    [0xe0, 0x30, 0x30, 0x1c, 0x30, 0x30, 0xe0, 0x00],
    [0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
    [0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00],
    [0x1e, 0x36, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x00],
    [0x7c, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x7c, 0x00],
    [0x7c, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x7c, 0x00],
    [0x7e, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00],
    [0x38, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xfe, 0xc6],
    [0x7e, 0x60, 0x60, 0x7c, 0x60, 0x60, 0x7e, 0x00],
    [0xdb, 0xdb, 0x7e, 0x3c, 0x7e, 0xdb, 0xdb, 0x00],
    [0x3c, 0x66, 0x06, 0x1c, 0x06, 0x66, 0x3c, 0x00],
    [0x66, 0x66, 0x6e, 0x7e, 0x76, 0x66, 0x66, 0x00],
    [0x3c, 0x66, 0x6e, 0x7e, 0x76, 0x66, 0x66, 0x00],
    [0x66, 0x6c, 0x78, 0x70, 0x78, 0x6c, 0x66, 0x00],
    [0x1e, 0x36, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00],
    [0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00],
    [0x66, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x00],
    [0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00],
    [0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00],
    [0x7c, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x00],
    [0x3c, 0x66, 0x60, 0x60, 0x60, 0x66, 0x3c, 0x00],
    [0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00],
    [0x66, 0x66, 0x66, 0x3e, 0x06, 0x66, 0x3c, 0x00],
    [0x7e, 0xdb, 0xdb, 0xdb, 0x7e, 0x18, 0x18, 0x00],
    [0x66, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0x66, 0x00],
    [0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x03],
    [0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x06, 0x00],
    [0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x00],
    [0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x03],
    [0xe0, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x7c, 0x00],
    [0xc6, 0xc6, 0xc6, 0xf6, 0xde, 0xde, 0xf6, 0x00],
    [0x60, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x7c, 0x00],
    [0x78, 0x8c, 0x06, 0x3e, 0x06, 0x8c, 0x78, 0x00],
    [0xce, 0xdb, 0xdb, 0xfb, 0xdb, 0xdb, 0xce, 0x00],
    [0x3e, 0x66, 0x66, 0x66, 0x3e, 0x36, 0x66, 0x00],
    [0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00],
    [0x00, 0x3c, 0x60, 0x3c, 0x66, 0x66, 0x3c, 0x00],
    [0x00, 0x00, 0x7c, 0x66, 0x7c, 0x66, 0x7c, 0x00],
    [0x00, 0x00, 0x7e, 0x60, 0x60, 0x60, 0x60, 0x00],
    [0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x6c, 0xfe, 0xc6],
    [0x00, 0x00, 0x3c, 0x66, 0x7e, 0x60, 0x3c, 0x00],
    [0x00, 0x00, 0xdb, 0x7e, 0x3c, 0x7e, 0xdb, 0x00],
    [0x00, 0x00, 0x3c, 0x66, 0x0c, 0x66, 0x3c, 0x00],
    [0x00, 0x00, 0x66, 0x6e, 0x7e, 0x76, 0x66, 0x00],
    [0x00, 0x18, 0x66, 0x6e, 0x7e, 0x76, 0x66, 0x00],
    [0x00, 0x00, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0x00],
    [0x00, 0x00, 0x1e, 0x36, 0x66, 0x66, 0x66, 0x00],
    [0x00, 0x00, 0xc6, 0xfe, 0xfe, 0xd6, 0xc6, 0x00],
    [0x00, 0x00, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x00],
    [0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x00],
    [0x00, 0x00, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00],
    [0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44],
    [0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa],
    [0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77],
    [0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18],
    [0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18],
    [0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18],
    [0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x36],
    [0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x36],
    [0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18],
    [0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36],
    [0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36],
    [0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36],
    [0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00],
    [0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x00],
    [0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00],
    [0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18],
    [0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00],
    [0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00],
    [0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18],
    [0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18],
    [0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00],
    [0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18],
    [0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18],
    [0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36],
    [0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00],
    [0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36],
    [0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00],
    [0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36],
    [0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36],
    [0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00],
    [0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36],
    [0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00],
    [0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00, 0x00],
    [0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18],
    [0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36],
    [0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00, 0x00],
    [0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00],
    [0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18],
    [0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36, 0x36],
    [0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x36],
    [0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18],
    [0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00],
    [0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18],
    [0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff],
    [0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff],
    [0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0],
    [0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f],
    [0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00],
    [0x00, 0x00, 0x7c, 0x66, 0x66, 0x7c, 0x60, 0x00],
    [0x00, 0x00, 0x3c, 0x66, 0x60, 0x66, 0x3c, 0x00],
    [0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00],
    [0x00, 0x00, 0x66, 0x66, 0x3e, 0x06, 0x3c, 0x00],
    [0x00, 0x00, 0x7e, 0xdb, 0xdb, 0x7e, 0x18, 0x00],
    [0x00, 0x00, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0x00],
    [0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x03],
    [0x00, 0x00, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x00],
    [0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x00],
    [0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x03],
    [0x00, 0x00, 0xe0, 0x60, 0x7c, 0x66, 0x7c, 0x00],
    [0x00, 0x00, 0xc6, 0xc6, 0xf6, 0xde, 0xf6, 0x00],
    [0x00, 0x00, 0x60, 0x60, 0x7c, 0x66, 0x7c, 0x00],
    [0x00, 0x00, 0x7c, 0x06, 0x3e, 0x06, 0x7c, 0x00],
    [0x00, 0x00, 0xce, 0xdb, 0xfb, 0xdb, 0xce, 0x00],
    [0x00, 0x00, 0x3e, 0x66, 0x3e, 0x36, 0x66, 0x00],
    [0x6c, 0xfe, 0x80, 0xf8, 0x80, 0x80, 0xfe, 0x00],
    [0x6c, 0x00, 0x7c, 0x82, 0xfe, 0x80, 0x7e, 0x00],
    [0x3c, 0x62, 0xc0, 0xf8, 0xc0, 0x62, 0x3c, 0x00],
    [0x00, 0x00, 0x3e, 0x60, 0x7c, 0x60, 0x3e, 0x00],
    [0x48, 0x78, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00],
    [0x50, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00],
    [0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18],
    [0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00],
    [0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00],
    [0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00],
    [0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00],
    [0x03, 0x02, 0x06, 0x04, 0xcc, 0x68, 0x38, 0x10],
    [0x8b, 0xcb, 0xe8, 0xb8, 0x98, 0x88, 0x88, 0x00],
    [0x30, 0x48, 0x10, 0x20, 0x78, 0x00, 0x00, 0x00],
    [0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00],
    [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
];

// Печать одного символа
function printc(ch) {

    var x = $cursor.x * 8,
        y = $cursor.y * $cursor.height;

    for (var i = 0; i < $cursor.height; i++) {

        var font = $cursor.height == 8 ? dosfont8x8 : dosfont8x16;
        var mask = font[ch.charCodeAt(0) & 255][i];
        for (var j = 0; j < 8; j++) {

            cl = mask & (1 << (7-j)) ? $cursor.fr : $cursor.bg;
            if (cl >= 0) pset(x + j, y + i, cl);
        }
    }
}

// Печать строки
function printf(s) {

    for (var i = 0; i < s.length; i++) {

        printc(s.substr(i, 1));
        $cursor.x++;

        if (8 * canvas.factor * $cursor.x >= canvas.width) {
            $cursor.x = 0;
            $cursor.y++;
        }
    }
}

// 8 или 16
function fstyle(h) { $cursor.height = h; }

// Установка позиции курсора
function locate(x, y) {

    $cursor.x = x;
    $cursor.y = y;
}