// Simple application to display default Visual 1050 font definitions 
// using PixelToaster, available at http://www.pixeltoaster.com/

#include <cstdio>
#include "PixelToaster.h"

using namespace PixelToaster;

// 256 8x12 characters
static unsigned char v1050_font[] = 
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x38,0x38,0x00,0x00,0x00,0x10,0x10,0x00,0x38,0x00,0x00,0x00,0x24,0x00,0x00,0x00,
0x78,0x9B,0x88,0x3B,0xE0,0x00,0x00,0x02,0xA2,0x48,0xA8,0x8D,0x20,0x74,0x20,0x65,
0xA9,0xD0,0x4C,0x00,0xD0,0x00,0x00,0xA9,0x81,0xD0,0xA9,0x1B,0x00,0x1C,0xF6,0x00,
0xE6,0xA9,0x00,0xD0,0xD0,0xD0,0xA9,0xAA,0xBA,0x00,0xE7,0x4D,0x2E,0x20,0x00,0xE7,
0x20,0xE7,0x3B,0x00,0xE7,0x54,0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x10,
0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x7A,0x20,0xFA,0x29,0xB9,0x91,0x60,0x60,0x20,0xFA,0xD0,0x0A,0x05,0x07,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7C,0x44,0x00,0x00,0x00,0x7C,0x7C,0x00,0x44,0x40,0x40,0x00,0x00,0x00,0x00,0x00,
0xA9,0xFF,0xA2,0x8A,0x85,0x85,0xD0,0xC5,0xFF,0xB9,0xC8,0x01,0x45,0x6F,0x53,0x64,
0x00,0x06,0xC6,0x49,0xED,0x00,0x00,0x32,0x1B,0xEF,0x00,0xD0,0xC5,0xC8,0xA9,0xB9,
0x1B,0x00,0x85,0x32,0x2B,0xE1,0x20,0x55,0xF6,0x98,0x68,0x65,0x20,0x48,0x98,0x68,
0x4E,0xA9,0xF8,0x98,0x68,0x65,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x54,0x50,0x78,0x78,0x40,0x18,0x10,0x48,0x50,0x10,0x00,0x00,0x10,0x10,
0xFF,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x00,0x10,0x04,0x20,0x02,0x00,0x00,0x00,
0x7A,0xFA,0xB9,0x91,0x20,0xFA,0x33,0x98,0x20,0xEE,0xA2,0xF0,0x0A,0xAC,0x60,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0x24,0x24,0x10,0x31,0x30,0x40,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x01,
0x3C,0x08,0x3C,0x3C,0x40,0x7E,0x3E,0x7E,0x3C,0x3C,0x00,0x00,0x04,0x00,0x20,0x3C,
0x3C,0x3C,0x7C,0x3C,0x78,0x7E,0x7E,0x3C,0x42,0x7C,0x0F,0x42,0x40,0x42,0x42,0x3C,
0x7C,0x3C,0x7C,0x3C,0x7F,0x42,0x42,0x42,0x41,0x41,0x7F,0x1C,0x40,0x38,0x44,0x00,
0x04,0x00,0x40,0x00,0x02,0x00,0x1C,0x00,0x40,0x08,0x08,0x40,0x30,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x10,0x60,0x00,0x00,
0x00,0x3F,0x10,0x08,0x7E,0x3C,0x01,0x18,0x00,0x00,0x10,0x38,0x10,0x00,0x18,0x00,
0x7C,0x44,0x44,0x08,0x1C,0x10,0x10,0x10,0x7C,0x42,0x42,0x00,0x00,0x00,0x04,0x10,
0x20,0x8D,0x05,0xD0,0x01,0x04,0x02,0x00,0x9A,0x6E,0x4C,0x90,0x50,0x74,0x79,0x2E,
0x95,0x8A,0xF7,0xFF,0xF0,0x00,0x00,0x4C,0xE6,0xA9,0x85,0x02,0x1B,0xC0,0x00,0xBA,
0xD0,0xC5,0x1B,0xAD,0xE6,0xA9,0x85,0x26,0xA2,0x48,0xA8,0x6D,0x20,0x61,0x48,0xA8,
0x55,0x99,0xA2,0x48,0xA8,0x73,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x10,0x28,0x50,0x40,0x40,0x40,0x24,0x10,0x68,0x50,0x10,0x00,0x00,0x10,0x10,
0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x00,0x10,0x08,0x10,0x7C,0x00,0x1C,0x00,
0xFA,0x20,0xFA,0x25,0xB9,0x91,0x20,0x48,0xEE,0xFA,0x00,0x20,0x0A,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0x24,0x24,0x3C,0x32,0x48,0x00,0x08,0x10,0x10,0x10,0x00,0x00,0x00,0x02,
0x42,0x18,0x42,0x42,0x44,0x40,0x40,0x04,0x42,0x42,0x30,0x30,0x08,0x00,0x10,0x42,
0x42,0x42,0x42,0x42,0x44,0x40,0x40,0x42,0x42,0x10,0x02,0x44,0x40,0x66,0x62,0x42,
0x42,0x42,0x42,0x42,0x08,0x42,0x42,0x42,0x22,0x22,0x02,0x10,0x20,0x08,0x00,0x00,
0x00,0x00,0x40,0x00,0x02,0x00,0x22,0x00,0x40,0x00,0x00,0x40,0x10,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x10,0x00,0x7E,
0x00,0x7A,0x48,0x12,0x40,0x42,0x02,0x18,0x10,0x08,0x10,0x40,0x38,0x00,0x18,0x7F,
0x38,0x38,0x38,0x3E,0x22,0x10,0x10,0x10,0x44,0x44,0x44,0x00,0x00,0x00,0x00,0x00,
0x8D,0x01,0xCA,0xF3,0xA9,0xAA,0xE6,0xD0,0x20,0xF6,0x4F,0x4C,0x52,0x61,0x73,0x24,
0x00,0xD0,0xA0,0xB5,0x25,0x00,0x00,0xBA,0x1B,0x00,0x1C,0xE6,0xD0,0x02,0x85,0xF7,
0x02,0x1B,0xA9,0x00,0x1B,0x00,0x1C,0x25,0xFF,0xB9,0xC8,0x6F,0x20,0x6C,0xB9,0xC8,
0x4D,0x8D,0xFF,0xB9,0xC8,0x74,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x38,0x54,0x70,0x70,0x40,0x40,0x24,0x7C,0x58,0x50,0x10,0x00,0x00,0x10,0x10,
0x00,0xFF,0x00,0x00,0x00,0x10,0x10,0x10,0x00,0x10,0x10,0x08,0x24,0x02,0x22,0x00,
0x4C,0x9C,0x91,0x20,0xFA,0x2F,0xB9,0x20,0xFA,0x85,0x81,0xEE,0x0A,0x38,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0x24,0x7E,0x50,0x04,0x48,0x00,0x10,0x08,0x54,0x10,0x00,0x00,0x00,0x04,
0x46,0x28,0x04,0x02,0x44,0x7C,0x40,0x08,0x42,0x42,0x30,0x30,0x10,0x7E,0x08,0x02,
0x4E,0x42,0x42,0x40,0x42,0x40,0x40,0x40,0x42,0x10,0x02,0x48,0x40,0x5A,0x52,0x42,
0x42,0x42,0x42,0x40,0x08,0x42,0x42,0x42,0x14,0x14,0x04,0x10,0x10,0x08,0x00,0x00,
0x00,0x3C,0x5C,0x3E,0x3A,0x3C,0x20,0x3A,0x5C,0x18,0x18,0x48,0x10,0x76,0x5C,0x3C,
0x5C,0x3A,0x5C,0x3E,0x7E,0x42,0x42,0x41,0x44,0x42,0x7C,0x08,0x10,0x10,0x00,0x7E,
0x00,0x7A,0x24,0x24,0x40,0x42,0x04,0x18,0x20,0x04,0x10,0x38,0x54,0x00,0x00,0x08,
0x00,0x00,0x44,0x48,0x20,0x10,0x10,0x7C,0x00,0x48,0x48,0x08,0x00,0x3E,0x04,0x10,
0x00,0x80,0xB9,0x98,0x00,0x18,0x01,0xE8,0x46,0xC9,0xF6,0x6B,0x4F,0x6C,0x74,0x00,
0x8A,0xF8,0x00,0x00,0x00,0x00,0x00,0xF6,0xD0,0xC5,0xA1,0x1C,0xE7,0xD0,0x1B,0x8D,
0xE6,0xD0,0x20,0xA0,0xD0,0xC5,0xC8,0xA9,0x9A,0xE3,0x4C,0x72,0x20,0x74,0x1F,0x4C,
0x3A,0x03,0x9A,0x5B,0x4C,0x20,0x2E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7C,0x28,0x5E,0x5E,0x40,0x7E,0x18,0x10,0x48,0x5E,0x10,0x00,0x00,0x10,0x10,
0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x00,0x10,0x20,0x04,0x24,0x04,0x20,0x00,
0x8F,0xE8,0x21,0xB9,0x91,0x20,0xFA,0x88,0xF0,0xAA,0xAA,0xFA,0x85,0xE9,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0x00,0x24,0x38,0x08,0x30,0x00,0x10,0x08,0x38,0x7C,0x00,0x7E,0x00,0x08,
0x4A,0x08,0x08,0x1C,0x7E,0x02,0x7C,0x10,0x3C,0x3E,0x00,0x00,0x20,0x00,0x04,0x04,
0x52,0x7E,0x7C,0x40,0x42,0x78,0x78,0x4E,0x7E,0x10,0x02,0x50,0x40,0x42,0x4A,0x42,
0x7C,0x42,0x7C,0x3C,0x08,0x42,0x42,0x42,0x08,0x08,0x08,0x10,0x08,0x08,0x00,0x00,
0x00,0x02,0x62,0x40,0x46,0x42,0x78,0x44,0x62,0x08,0x08,0x50,0x10,0x49,0x62,0x42,
0x62,0x46,0x62,0x40,0x10,0x42,0x42,0x49,0x28,0x42,0x08,0x30,0x00,0x0C,0x00,0x7E,
0x00,0x3A,0x12,0x48,0x70,0x4C,0x08,0x00,0x7E,0x7E,0x10,0x44,0x10,0x04,0x7E,0x70,
0x00,0x00,0x44,0x48,0x70,0x10,0x7C,0x10,0x00,0x50,0x52,0x14,0x00,0x40,0x04,0x20,
0xA0,0xE8,0x9C,0xD0,0x85,0xA1,0xA5,0xA5,0xEF,0x24,0xA9,0xF6,0x4D,0x20,0x65,0x55,
0xD0,0x4C,0xA2,0xD9,0x00,0x00,0x00,0xA2,0x02,0x1B,0x1B,0xA9,0xA9,0xBB,0xA9,0x00,
0x1C,0xE9,0x85,0x29,0x02,0x1B,0xC0,0x34,0x20,0xF7,0xD1,0x79,0x20,0x65,0xF8,0x0D,
0x20,0x90,0x20,0xF8,0x49,0x69,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x38,0x54,0x54,0x50,0x7E,0x10,0x00,0x10,0x08,0x24,0xF0,0xF0,0x1F,0x1F,0xFF,
0x00,0x00,0xFF,0x00,0x00,0x1F,0xF0,0xFF,0xFF,0x10,0x10,0x08,0x24,0x7E,0x70,0x00,
0xE8,0xC6,0x20,0xFA,0x2B,0xB9,0x91,0xE9,0x23,0x20,0xE6,0x60,0xAC,0x30,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0x00,0x7E,0x14,0x10,0x4A,0x00,0x10,0x08,0x54,0x10,0x00,0x00,0x00,0x10,
0x52,0x08,0x10,0x02,0x04,0x02,0x42,0x20,0x42,0x02,0x00,0x00,0x10,0x7E,0x08,0x08,
0x4C,0x42,0x42,0x40,0x42,0x40,0x40,0x42,0x42,0x10,0x02,0x68,0x40,0x42,0x46,0x42,
0x40,0x4A,0x48,0x02,0x08,0x42,0x44,0x5A,0x14,0x08,0x10,0x10,0x04,0x08,0x00,0x00,
0x00,0x3E,0x42,0x40,0x42,0x7E,0x20,0x44,0x42,0x08,0x08,0x68,0x10,0x49,0x42,0x42,
0x42,0x42,0x40,0x3C,0x10,0x42,0x44,0x49,0x10,0x44,0x10,0x08,0x10,0x10,0x00,0x7E,
0x10,0x0A,0x24,0x24,0x40,0x42,0x50,0x00,0x20,0x04,0x54,0x38,0x10,0x0C,0x00,0x10,
0x00,0x00,0x38,0x48,0x20,0x10,0x10,0x10,0x00,0x2C,0x26,0x22,0x00,0x40,0x04,0x40,
0xA2,0xE0,0xF6,0xED,0x02,0x00,0x03,0x04,0x20,0xF0,0x99,0x46,0x20,0x74,0x6D,0xAA,
0xF8,0xBF,0x20,0xD8,0x00,0x00,0x00,0x00,0xE6,0xD0,0xD9,0x20,0x20,0xF0,0x20,0xA0,
0xA9,0xA9,0x1C,0x03,0xE6,0xD0,0x02,0x4C,0x46,0xC9,0xF7,0x20,0x53,0x64,0xC9,0xF8,
0x24,0xA5,0x46,0xC9,0xF8,0x6E,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x10,0x28,0x04,0x1C,0x12,0x1C,0x00,0x00,0x08,0x04,0x00,0x10,0x10,0x00,0x10,
0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x08,0x10,0x24,0x10,0x20,0x10,
0x20,0xAA,0xB9,0x91,0x20,0xFA,0x35,0x85,0xA8,0xEE,0xAA,0x20,0x20,0xC9,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x24,0x78,0x26,0x44,0x00,0x08,0x10,0x10,0x10,0x30,0x00,0x30,0x20,
0x62,0x08,0x20,0x42,0x04,0x42,0x42,0x20,0x42,0x02,0x30,0x30,0x08,0x00,0x10,0x00,
0x40,0x42,0x42,0x42,0x44,0x40,0x40,0x42,0x42,0x10,0x42,0x44,0x40,0x42,0x42,0x42,
0x40,0x44,0x44,0x42,0x08,0x42,0x28,0x66,0x22,0x08,0x20,0x10,0x02,0x08,0x00,0x00,
0x00,0x42,0x62,0x40,0x46,0x40,0x20,0x38,0x42,0x08,0x08,0x44,0x10,0x49,0x42,0x42,
0x62,0x46,0x40,0x02,0x10,0x46,0x28,0x49,0x28,0x28,0x20,0x08,0x10,0x10,0x00,0x7E,
0x00,0x0A,0x48,0x12,0x4B,0x52,0x20,0x00,0x10,0x08,0x38,0x04,0x10,0x1C,0x18,0x60,
0x00,0x00,0x44,0x3E,0x22,0x00,0x00,0x00,0x00,0x52,0x4A,0x7F,0x00,0x40,0x04,0x42,
0x00,0x0C,0x95,0xA9,0xA9,0x65,0xC5,0xD0,0xC8,0x09,0x8D,0x61,0x68,0x65,0x20,0xFF,
0xA2,0xF6,0xCA,0xF6,0x00,0x00,0x00,0xA0,0x1C,0xE9,0xB8,0xC5,0x85,0x05,0x85,0xB9,
0x80,0x20,0xA1,0x09,0x1C,0xDB,0xD0,0xBA,0xEF,0x24,0x36,0x45,0x79,0x2E,0x24,0x45,
0x68,0x1F,0xEF,0x24,0x53,0x20,0xA9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x54,0x04,0x10,0x1E,0x10,0x00,0x7C,0x0E,0x04,0x00,0x10,0x10,0x00,0x10,
0x00,0x00,0x00,0xFF,0x00,0x10,0x10,0x00,0x10,0x10,0x04,0x20,0x24,0x7E,0x22,0x00,
0xB9,0xD0,0xFA,0x27,0xB9,0x91,0x20,0xAD,0x20,0xFA,0xD0,0x88,0x88,0x11,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0x00,0x24,0x10,0x46,0x3A,0x00,0x04,0x20,0x00,0x00,0x30,0x00,0x30,0x40,
0x3C,0x7E,0x7E,0x3C,0x04,0x3C,0x3C,0x20,0x3C,0x7C,0x30,0x30,0x04,0x00,0x20,0x08,
0x3E,0x42,0x7C,0x3C,0x78,0x7E,0x40,0x3C,0x42,0x7C,0x3C,0x42,0x7E,0x42,0x42,0x3C,
0x40,0x3A,0x42,0x3C,0x08,0x3C,0x10,0x42,0x41,0x08,0x7F,0x1C,0x01,0x38,0x00,0x00,
0x00,0x3E,0x5C,0x3E,0x3A,0x3C,0x20,0x40,0x42,0x1C,0x08,0x42,0x38,0x49,0x42,0x3C,
0x5C,0x3A,0x40,0x7C,0x0E,0x3A,0x10,0x36,0x44,0x10,0x7E,0x06,0x10,0x60,0x00,0x00,
0x00,0x0A,0x10,0x08,0x4C,0x4C,0x00,0x00,0x00,0x00,0x10,0x38,0x10,0x3C,0x18,0x00,
0x00,0x00,0x00,0x08,0x7C,0x00,0x00,0x7C,0x00,0x04,0x1E,0x00,0x00,0x3E,0x04,0x3C,
0x8E,0xD0,0x00,0x00,0x00,0x04,0x01,0x03,0xE0,0x20,0x03,0x69,0x61,0x73,0x68,0x62,
0x20,0xA9,0xB9,0xD0,0x20,0x00,0x00,0x00,0xA9,0xA9,0xF7,0x1C,0x1B,0xA9,0x1C,0xB8,
0xC5,0x8D,0x1B,0x24,0xA9,0xA9,0xA4,0xF6,0x20,0xF0,0x35,0x72,0x73,0x20,0xF0,0x52,
0xA5,0x8D,0x20,0xF0,0x65,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x04,0x10,0x14,0x10,0x00,0x00,0x00,0x04,0x00,0x10,0x10,0x00,0x10,
0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x7E,0x7E,0x00,0x40,0x7C,0x00,
0xFA,0xF6,0x91,0x20,0xFA,0x31,0xB9,0x68,0xEE,0xD0,0x02,0xE9,0xE9,0x90,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
0x40,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x02,0x00,0x00,0x08,0x00,0x00,
0x00,0xF2,0xD5,0x85,0x85,0x85,0xD0,0x4C,0xA0,0xC4,0x90,0x6C,0x73,0x74,0x61,0xA2,
0xCA,0x31,0xD8,0x26,0x00,0x00,0x00,0xB9,0x20,0x20,0xD0,0xD0,0xA9,0x33,0xA2,0xF7,
0x1C,0x00,0xD9,0xD9,0x80,0x00,0x4C,0xA9,0xC8,0x30,0x30,0x72,0x74,0x24,0x15,0x52,
0x1F,0x01,0xC8,0x21,0x6C,0x72,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,
0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
0x85,0x60,0x23,0xB9,0x91,0x20,0xFA,0xA8,0xFA,0x13,0xE6,0x20,0x20,0x03,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
0x40,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x02,0x00,0x00,0x30,0x00,0x00,
0x80,0xA0,0x00,0x00,0x03,0x04,0xEE,0xA1,0x00,0xE7,0xA9,0x65,0x68,0x2E,0x6C,0x20,
0xB5,0x85,0xF6,0xC8,0x00,0x00,0x00,0xB8,0xC5,0x85,0x21,0xED,0x00,0x4C,0x00,0x81,
0xD0,0xA0,0xB8,0xBA,0xC5,0x85,0x3E,0x35,0xE0,0x20,0x32,0x6F,0x65,0x68,0x20,0x4F,
0x20,0x90,0xE0,0x20,0x66,0x6F,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,
0x00,0x00,0x00,0x00,0xFF,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
0xAA,0xA0,0x20,0xFA,0x2D,0xB9,0x91,0xA5,0x85,0x20,0xAB,0x03,0x03,0x38,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,
0x40,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xBD,0x04,0xD0,0xA9,0xA9,0xE6,0xA5,0xF6,0x98,0x68,0x30,0x64,0x20,0x20,0x74,0xCA,
0x00,0x1F,0x95,0x8A,0x00,0x00,0x00,0xF7,0x1C,0x1B,0xE6,0xA9,0x85,0xBA,0xA0,0x1B,
0xEF,0xA9,0xF7,0xF7,0x1C,0x1B,0xF8,0x4C,0xA0,0xC4,0x20,0x72,0x6D,0xA0,0xC4,0x52,
0xC4,0x4C,0xA0,0xC4,0x2D,0x67,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,
0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x00,0xB9,0x91,0x20,0xFA,0x37,0xAD,0xAB,0xEE,0x88,0xFB,0xFB,0xE9,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

void load(int width, int height, vector<Pixel> & pixels);

// 1050 screen is 640x300 pixels
#define V1050_SCREEN_HEIGHT 300
#define V1050_SCREEN_WIDTH  640

// 256 8x12 bitmapped fonts
#define V1050_FONT_NUM    256
#define V1050_FONT_HEIGHT 12
#define V1050_FONT_WIDTH  8

// the font is in the video RAM at 0200H - 0DFFH.  This is in 12 
// segments of 256 bytes each.  Each 256 byte segment represents a 
// pixel row for the character at the given offset.
static unsigned char v1050_font_2D[V1050_FONT_NUM][V1050_FONT_HEIGHT];

int main(int argc, char* argv[])
{
    int idx = 0;
    vector<Pixel> pixels;

    for(int y=0; y < V1050_FONT_HEIGHT; y++)
        for(int x=0; x < V1050_FONT_NUM; x++)
            v1050_font_2D[x][y] = v1050_font[idx++];

    Display display("Visual 1050 Font Example", V1050_SCREEN_WIDTH, V1050_SCREEN_HEIGHT);

    load(V1050_SCREEN_WIDTH, V1050_SCREEN_HEIGHT, pixels);

    while(display.open())
    {
        display.update(pixels);
    }

    return 0;
}

void load(int screen_width, int screen_height, vector<Pixel> & pixels)
{
    pixels.resize(screen_width * screen_height);

    int v_offset = 0;
    int h_offset = 0;

    // all bits in the pixels vector are initialized to 0/off so
    // we only need to worry about turning the right bits on.
    //
    // this loops also dumps an ASCII representation of the font
    // bitmap to stdout as well as the virtual display
    for(int f=0; f < V1050_FONT_NUM; f++)
    {
        fprintf(stdout, "[%03d]\n", f);

        // draw these out to the screen on a 16x16 grid
        if(f % 16 == 0)
        {
            h_offset = 0;
            v_offset += V1050_FONT_HEIGHT;
        }

        for(int j=0; j < V1050_FONT_HEIGHT; j++)
        {
            // if you didn't want to build a 2D array you could access
            // the original 1D array as follows:
            // unsigned char c = v1050_font[f + (j * V1050_FONT_NUM)];
            unsigned char c = v1050_font_2D[f][j];

            fprintf(stdout, "0x%02x ", c);

            for(int k=0; k < V1050_FONT_WIDTH; k++)
            {
                if(c & (1 << ((V1050_FONT_WIDTH - 1) -k)))
                {
                    printf("X");
                    int offset = (screen_width * (v_offset + j)) + k + h_offset;
 
                    // monochrome white on black
                    // pixels[offset].b = 1.0;
                    // pixels[offset].g = 1.0;
                    // pixels[offset].r = 1.0;
                    
                    // more 1050'ish green on black
                    pixels[offset].b = 0.0;
                    pixels[offset].g = 255.0;
                    pixels[offset].r = 0.0;
                }
                else
                {
                    fprintf(stdout, ".");
                }
            }

            fprintf(stdout, "\n");
        }

        h_offset += V1050_FONT_WIDTH;
        
        fprintf(stdout, "\n");
    }
}
