slow_death
Posts: 5
Joined: Wed Aug 08, 2012 7:32 pm

print char to screen

Thu Aug 09, 2012 1:58 am

Does anyone have any sugestions on were to begin just standard i/o to the screen - with the video
or hdmi? just print a char.. ?

User avatar
jackokring
Posts: 816
Joined: Tue Jul 31, 2012 8:27 am
Location: London, UK
Contact: ICQ

Re: print char to screen

Thu Aug 09, 2012 2:58 am

after logging in

Code: Select all

echo "my favourite words"
Cheers Jacko
Pi[NFA]=B256R0USB CL4SD8GB Raspbian Stock.
Pi[Work]=A+256 CL4SD8GB Raspbian Stock.
My favourite constant 1.65056745028

slow_death
Posts: 5
Joined: Wed Aug 08, 2012 7:32 pm

Re: print char to screen

Thu Aug 09, 2012 4:44 am

are u referring to the command line in Linux..

to print to screen there should be an address or method to gain access..
an example would be vga..

in a lower level arm or c...

is there a set mode? for text io versus graphics?

tufty
Posts: 1456
Joined: Sun Sep 11, 2011 2:32 pm

Re: print char to screen

Thu Aug 09, 2012 6:04 am

You'll need a framebuffer driver, blitting code and a bitmap font. In short, you need to do it all yourself, and no, there is no 'text mode'.

User avatar
Cycl0ne
Posts: 102
Joined: Mon Jun 25, 2012 8:03 am

Re: print char to screen

Thu Aug 09, 2012 9:05 am

as tufty said, you need some basic graphic routines. i can post some here in about 2-3 weeks when im finished. still fiddling with some layered graphics.

romell
Posts: 25
Joined: Mon Jul 23, 2012 6:57 pm

Re: print char to screen

Thu Aug 09, 2012 11:29 am

Do you have anything running in bare metal at the moment? Otherwise I suggest that you first look at this: http://www.raspberrypi.org/phpBB3/viewt ... 72&t=10850 thread to get you started.

Then you need to set up a framebuffer according to the specs here: https://github.com/raspberrypi/firmware/wiki/Mailboxes. You can choose if you want to do it via the framebuffer channel (1) or the property tags channel (8). The first is probably easier, but the latter is the currently supported method.

When you have the framebuffer set up, you have to manually plot your characters from for example a bitmap font.

Good luck :)

User avatar
Cycl0ne
Posts: 102
Joined: Mon Jun 25, 2012 8:03 am

Re: print char to screen

Thu Aug 09, 2012 12:48 pm

Code says more than 1000words ;)

Here the mailbox "things":

Code: Select all

#define BCM2708_PERI_BASE                 0x20000000
#define GPUCORE_MAILBOX                   (BCM2708_PERI_BASE + 0xB880)

#define GPUCORE_MAILBOX_READ_REGISTER     0x00
#define GPUCORE_MAILBOX_WRITE_REGISTER    0x20
#define GPUCORE_MAILBOX_STATUS_REGISTER   0x18
#define GPUCORE_MAILBOX_CONFIG_REGISTER   0x1C

struct DriverBase
{
	struct bcm2835framebuffer	fb;
	APTR						memory;
	APTR						GfxBase;
};

struct bcm2835framebuffer {
   unsigned int width;        // width in pixels
   unsigned int height;       // height in pixels
   unsigned int vwidth;       // == width
   unsigned int vheight;      // == height
   unsigned int pitch;        // set by GPU
   unsigned int depth;        // == 24
   unsigned int x;            // == 0 (offset)
   unsigned int y;            // == 0 (offset)
   unsigned int fbaddr;       // set by GPU
   unsigned int fbsize;       // set by GPU
};

typedef struct vc_mailbox_tag {
   unsigned int id;
   unsigned int value_buffer_size;
   union {
      struct {
         unsigned int value_length  : 31;
         unsigned int type          : 1;     // 0 = request, 1 = response
      } bits;
      unsigned int word;
   } ctrl;
   VUINT32 value_buffer;     // The first (of possibly many) values
   unsigned int value_buffer2;     // The first (of possibly many) values
} vc_mailbox_tag;

typedef struct vc_mailbox_hdr {
   unsigned int size;            // Size in bytes including header, end tag and padding
   unsigned int type;            // requests: 0x0 = process request, responses: 0x80000000 = success, 0x80000001 = error
} vc_mailbox_hdr;

typedef struct vc_mailbox_ftr {
   unsigned int end_tag;         // always 0x00000000
   unsigned char padding;
} vc_mailbox_ftr;


unsigned int read_mm_reg32(unsigned int base, unsigned int reg) {
   memory_barrier(); //Make sure we read the right thing
   return *(volatile unsigned int *)(base + reg);
}

void write_mm_reg32(unsigned int base, unsigned int reg, unsigned int value) {
   *(volatile unsigned int *)(base + reg) = value;
   memory_barrier(); //Make sure the write is visible elsewhere (see ReadMmReg32 for note on how necessary this is)
}

void mbox_write_gen(unsigned int channel, unsigned int v)
{
   while (read_mm_reg32(GPUCORE_MAILBOX, GPUCORE_MAILBOX_STATUS_REGISTER) & MAILBOX_STATUS_FULL);
   write_mm_reg32(GPUCORE_MAILBOX, GPUCORE_MAILBOX_WRITE_REGISTER, channel | (v & 0xFFFFFFF0));
}

unsigned int mbox_read_gen(unsigned int channel)
{
  unsigned int r = 0;

   do {
      while (read_mm_reg32(GPUCORE_MAILBOX, GPUCORE_MAILBOX_STATUS_REGISTER) & MAILBOX_STATUS_EMPTY); //wait for data
      r = read_mm_reg32(GPUCORE_MAILBOX, GPUCORE_MAILBOX_READ_REGISTER); //Read the data
   } while ((r & 0xF) != channel); //Loop until we received something from the frame buffer channel

   return r & 0xFFFFFFF0;
}

unsigned int arm_to_vc(void *p) {
   return ((unsigned int)p) + 0x40000000;
}

void *vc_to_arm(unsigned int p) {
   return (void *)(p - 0x40000000);
}

and here the initialisation of the videocore:

Code: Select all

UINT8 *OpenDriver(struct DriverBase *dbase, UINT32 size_x, UINT32 size_y, UINT32 bpp)
{
	struct GfxBase *GfxBase = dbase->GfxBase;
	unsigned int buffer_size = sizeof(vc_mailbox_hdr) + sizeof(vc_mailbox_ftr) + (sizeof(vc_mailbox_tag)*7) + 16;
	APTR memory = (unsigned char *)AllocVec(buffer_size, MEMF_CLEAR|MEMF_FAST);
	unsigned char *vc_mailbox_buf = (UINT8*) ALIGN(memory);
	unsigned int response;

	DPrintF("memory: %x size: %d\n", vc_mailbox_buf, buffer_size);
	
	vc_mailbox_hdr *hdr  = (vc_mailbox_hdr *)vc_mailbox_buf;
	vc_mailbox_tag *tag1 = (vc_mailbox_tag *)(((UINT8*) hdr) + sizeof(vc_mailbox_hdr));
	vc_mailbox_tag *tag2 = (vc_mailbox_tag *)(((UINT8*) tag1) + sizeof(vc_mailbox_tag));
	vc_mailbox_tag *tag3 = (vc_mailbox_tag *)(((UINT8*) tag2) + sizeof(vc_mailbox_tag));
	vc_mailbox_tag *tag4 = (vc_mailbox_tag *)(((UINT8*) tag3) + sizeof(vc_mailbox_tag));
	vc_mailbox_tag *tag5 = (vc_mailbox_tag *)(((UINT8*) tag4) + sizeof(vc_mailbox_tag));
	vc_mailbox_tag *tag6 = (vc_mailbox_tag *)(((UINT8*) tag5) + sizeof(vc_mailbox_tag));
	vc_mailbox_tag *tag7 = (vc_mailbox_tag *)(((UINT8*) tag6) + sizeof(vc_mailbox_tag));
	vc_mailbox_ftr *ftr  = (vc_mailbox_ftr *)(((UINT8*) tag7) + sizeof(vc_mailbox_tag));

	DPrintF("Tag: %x %d\n", tag1, sizeof(vc_mailbox_tag));
	DPrintF("Tag: %x\n", tag2);
	DPrintF("Tag: %x\n", tag3);
	DPrintF("Tag: %x\n", tag4);
	DPrintF("Tag: %x\n", tag5);
	DPrintF("Tag: %x\n", tag6);
	DPrintF("Tag: %x\n", tag7);
	
	hdr->size = buffer_size;
	hdr->type = VCBUF_PROCESS_REQUEST;
	ftr->end_tag = 0x00000000;

	tag1->id = VCTAG_SET_BPP; // VCTAG_GET_FIRMWARE_VERSION;
	tag1->value_buffer_size = sizeof(unsigned int)*2;
	tag1->ctrl.bits.value_length = 0;
	tag1->ctrl.bits.type = VCTAG_REQUEST;
	tag1->value_buffer = bpp;
	tag1->value_buffer2 = 0;

	tag2->id = VCTAG_SET_PHYS_WIDTHHEIGHT;
	tag2->value_buffer_size = sizeof(unsigned int)*2;
	tag2->ctrl.bits.value_length = 0;
	tag2->ctrl.bits.type = VCTAG_REQUEST;
	tag2->value_buffer = size_x;
	tag2->value_buffer2 = size_y;

	tag3->id = VCTAG_SET_VIRT_WIDTHHEIGHT;
	tag3->value_buffer_size = sizeof(unsigned int)*2;
	tag3->ctrl.bits.value_length = 0;
	tag3->ctrl.bits.type = VCTAG_REQUEST;
	tag3->value_buffer = size_x;
	tag3->value_buffer2 = size_y;

	tag4->id = VCTAG_SET_ALPHA;
	tag4->value_buffer_size = sizeof(unsigned int)*2;
	tag4->ctrl.bits.value_length = 0;
	tag4->ctrl.bits.type = VCTAG_REQUEST;
	tag4->value_buffer = 0;
	tag4->value_buffer2 = 0;

	tag5->id = VCTAG_SET_VIRT_OFFSET;
	tag5->value_buffer_size = sizeof(unsigned int)*2;
	tag5->ctrl.bits.value_length = 0;
	tag5->ctrl.bits.type = VCTAG_REQUEST;
	tag5->value_buffer = 0;
	tag5->value_buffer2 = 0;

	tag6->id = VCTAG_SET_PIXELORDER;
	tag6->value_buffer_size = sizeof(unsigned int)*2;
	tag6->ctrl.bits.value_length = 0;
	tag6->ctrl.bits.type = VCTAG_REQUEST;
	tag6->value_buffer = 1;
	tag6->value_buffer2 = 0;

	tag7->id = VCTAG_ALLOCATE_BUFFER;
	tag7->value_buffer_size = sizeof(unsigned int)*2;
	tag7->ctrl.bits.value_length = 0;
	tag7->ctrl.bits.type = VCTAG_REQUEST;
	tag7->value_buffer = 0;
	tag7->value_buffer2 = 0;

//	hexdump (SysBase,vc_mailbox_buf ,buffer_size);

	
	mbox_write_gen(MAILBOX_CHANNEL_ARM_TO_VC, arm_to_vc((void *)vc_mailbox_buf));
	mbox_read_gen(MAILBOX_CHANNEL_ARM_TO_VC);
	response = tag1->value_buffer;
	DPrintF("Response HDR: %x\n", hdr->type);
	DPrintF("Response: %x %d \n", tag1->ctrl.word, response);

	DPrintF("Response: %x %d x %d \n", tag2->ctrl.word, tag2->value_buffer, tag2->value_buffer2);
	DPrintF("Response: %x %d x %d \n", tag3->ctrl.word, tag3->value_buffer, tag3->value_buffer2);
	DPrintF("Response: %x %d x %d \n", tag4->ctrl.word, tag4->value_buffer, tag4->value_buffer2);
	DPrintF("Response: %x %d x %d \n", tag5->ctrl.word, tag5->value_buffer, tag5->value_buffer2);
	DPrintF("Response: %x %d x %d \n", tag6->ctrl.word, tag6->value_buffer, tag6->value_buffer2);
	DPrintF("Response: %x %x x %x \n", tag7->ctrl.word, tag7->value_buffer, tag7->value_buffer2);

//	hexdump (SysBase,vc_mailbox_buf ,buffer_size);

	struct bcm2835framebuffer *fb = (APTR)&dbase->fb;
	fb->width = tag2->value_buffer;
	fb->height = tag2->value_buffer2;
	fb->vwidth = tag3->value_buffer;
	fb->vheight = tag3->value_buffer2;
	fb->pitch = 0;
	fb->depth = tag1->value_buffer;
	fb->x = tag5->value_buffer;
	fb->y = tag5->value_buffer2;
	fb->fbaddr = arm_to_vc((APTR)tag7->value_buffer);
	fb->fbsize = tag7->value_buffer2;

	DPrintF("GFX BCM Driver finished\n");
	//for(;;);

	FreeVec(memory);
	return (UINT8*)fb->fbaddr;
}
driverbase.fb = framebuffer infos:
i fill the old struct with values:
unsigned int width; // width in pixels
unsigned int height; // height in pixels
unsigned int vwidth; // == width
unsigned int vheight; // == height
unsigned int pitch; // set by GPU
unsigned int depth; // == 24
unsigned int x; // == 0 (offset)
unsigned int y; // == 0 (offset)
unsigned int fbaddr; // set by GPU
unsigned int fbsize; // set by GPU

FBADDR = Address of the Framebuffer

----

this code is a mixture of mine + valtonias have fun.

User avatar
Cycl0ne
Posts: 102
Joined: Mon Jun 25, 2012 8:03 am

Re: print char to screen

Thu Aug 09, 2012 1:38 pm

Here a Rom Font 8x8 to play with.

Code: Select all

/* ROM 8x8 Font bios mode 10 */
static unsigned short rom8x8_bits[] = {

/* Character   (0x00):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,

/* Character  (0x01):
   ht=8, width=8
   +--------+
   | ****** |
   |*      *|
   |* *  * *|
   |*      *|
   |* **** *|
   |*  **  *|
   |*      *|
   | ****** |
   +--------+ */
0x7e00,
0x8100,
0xa500,
0x8100,
0xbd00,
0x9900,
0x8100,
0x7e00,

/* Character  (0x02):
   ht=8, width=8
   +--------+
   | *****  |
   |******* |
   |** * ** |
   |* *** * |
   |**   ** |
   |******* |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0xfe00,
0xd600,
0xba00,
0xc600,
0xfe00,
0x7c00,
0x0000,

/* Character  (0x03):
   ht=8, width=8
   +--------+
   |**   ** |
   |*** *** |
   |******* |
   |******* |
   | *****  |
   |  ***   |
   |   *    |
   |        |
   +--------+ */
0xc600,
0xee00,
0xfe00,
0xfe00,
0x7c00,
0x3800,
0x1000,
0x0000,

/* Character  (0x04):
   ht=8, width=8
   +--------+
   |   *    |
   |  ***   |
   | *****  |
   |******* |
   | *****  |
   |  ***   |
   |   *    |
   |        |
   +--------+ */
0x1000,
0x3800,
0x7c00,
0xfe00,
0x7c00,
0x3800,
0x1000,
0x0000,

/* Character  (0x05):
   ht=8, width=8
   +--------+
   |   *    |
   |  ***   |
   |   *    |
   |*** *** |
   |*** *** |
   |   *    |
   |  ***   |
   |        |
   +--------+ */
0x1000,
0x3800,
0x1000,
0xee00,
0xee00,
0x1000,
0x3800,
0x0000,

/* Character  (0x06):
   ht=8, width=8
   +--------+
   |  ***   |
   | *****  |
   |******* |
   |******* |
   | ** **  |
   |   *    |
   |  ***   |
   |        |
   +--------+ */
0x3800,
0x7c00,
0xfe00,
0xfe00,
0x6c00,
0x1000,
0x3800,
0x0000,

/* Character  (0x07):
   ht=8, width=8
   +--------+
   |        |
   |   **   |
   |  ****  |
   | ****** |
   |  ****  |
   |   **   |
   |        |
   |        |
   +--------+ */
0x0000,
0x1800,
0x3c00,
0x7e00,
0x3c00,
0x1800,
0x0000,
0x0000,

/* Character  (0x08):
   ht=8, width=8
   +--------+
   |********|
   |***  ***|
   |**    **|
   |*      *|
   |**    **|
   |***  ***|
   |********|
   |********|
   +--------+ */
0xff00,
0xe700,
0xc300,
0x8100,
0xc300,
0xe700,
0xff00,
0xff00,

/* Character 	 (0x09):
   ht=8, width=8
   +--------+
   |        |
   |   **   |
   |  ****  |
   | **  ** |
   | **  ** |
   |  ****  |
   |   **   |
   |        |
   +--------+ */
0x0000,
0x1800,
0x3c00,
0x6600,
0x6600,
0x3c00,
0x1800,
0x0000,

/* Character 
 (0x0a):
   ht=8, width=8
   +--------+
   |********|
   |***  ***|
   |**    **|
   |*  **  *|
   |*  **  *|
   |**    **|
   |***  ***|
   |********|
   +--------+ */
0xff00,
0xe700,
0xc300,
0x9900,
0x9900,
0xc300,
0xe700,
0xff00,

/* Character  (0x0b):
   ht=8, width=8
   +--------+
   |   **** |
   |    *** |
   |   **** |
   |  ** ** |
   | ****   |
   |**  **  |
   |**  **  |
   | ****   |
   +--------+ */
0x1e00,
0x0e00,
0x1e00,
0x3600,
0x7800,
0xcc00,
0xcc00,
0x7800,

/* Character  (0x0c):
   ht=8, width=8
   +--------+
   | ****** |
   |**    **|
   |**    **|
   | ****** |
   |   **   |
   | ****** |
   |   **   |
   |   **   |
   +--------+ */
0x7e00,
0xc300,
0xc300,
0x7e00,
0x1800,
0x7e00,
0x1800,
0x1800,

/* Character  (0x0d):
   ht=8, width=8
   +--------+
   |   **** |
   |   ** * |
   |   **** |
   |   **   |
   |   **   |
   | ***    |
   |****    |
   | **     |
   +--------+ */
0x1e00,
0x1a00,
0x1e00,
0x1800,
0x1800,
0x7000,
0xf000,
0x6000,

/* Character  (0x0e):
   ht=8, width=8
   +--------+
   |  ***** |
   |  ***** |
   |  ** ** |
   |  ** ** |
   |**** ** |
   | **  ** |
   |   **** |
   |    **  |
   +--------+ */
0x3e00,
0x3e00,
0x3600,
0x3600,
0xf600,
0x6600,
0x1e00,
0x0c00,

/* Character  (0x0f):
   ht=8, width=8
   +--------+
   |** ** **|
   |  ****  |
   | **  ** |
   |***  ***|
   | **  ** |
   |  ****  |
   |** ** **|
   |        |
   +--------+ */
0xdb00,
0x3c00,
0x6600,
0xe700,
0x6600,
0x3c00,
0xdb00,
0x0000,

/* Character  (0x10):
   ht=8, width=8
   +--------+
   |*       |
   |**      |
   |****    |
   |*****   |
   |****    |
   |**      |
   |*       |
   |        |
   +--------+ */
0x8000,
0xc000,
0xf000,
0xf800,
0xf000,
0xc000,
0x8000,
0x0000,

/* Character  (0x11):
   ht=8, width=8
   +--------+
   |      * |
   |     ** |
   |   **** |
   |  ***** |
   |   **** |
   |     ** |
   |      * |
   |        |
   +--------+ */
0x0200,
0x0600,
0x1e00,
0x3e00,
0x1e00,
0x0600,
0x0200,
0x0000,

/* Character  (0x12):
   ht=8, width=8
   +--------+
   |   **   |
   |  ****  |
   | ****** |
   |   **   |
   | ****** |
   |  ****  |
   |   **   |
   |        |
   +--------+ */
0x1800,
0x3c00,
0x7e00,
0x1800,
0x7e00,
0x3c00,
0x1800,
0x0000,

/* Character  (0x13):
   ht=8, width=8
   +--------+
   | **  ** |
   | **  ** |
   | **  ** |
   | **  ** |
   | **  ** |
   |        |
   | **  ** |
   |        |
   +--------+ */
0x6600,
0x6600,
0x6600,
0x6600,
0x6600,
0x0000,
0x6600,
0x0000,

/* Character  (0x14):
   ht=8, width=8
   +--------+
   | *******|
   |** ** **|
   | **** **|
   |  *** **|
   |   ** **|
   |   ** **|
   |   ** **|
   |        |
   +--------+ */
0x7f00,
0xdb00,
0x7b00,
0x3b00,
0x1b00,
0x1b00,
0x1b00,
0x0000,

/* Character  (0x15):
   ht=8, width=8
   +--------+
   |  ****  |
   | **  ** |
   |  ***   |
   | ** **  |
   | ** **  |
   |  ***   |
   |**  **  |
   | ****   |
   +--------+ */
0x3c00,
0x6600,
0x3800,
0x6c00,
0x6c00,
0x3800,
0xcc00,
0x7800,

/* Character  (0x16):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |******* |
   |******* |
   |******* |
   |        |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0xfe00,
0xfe00,
0xfe00,
0x0000,

/* Character  (0x17):
   ht=8, width=8
   +--------+
   |   **   |
   |  ****  |
   | ****** |
   |   **   |
   | ****** |
   |  ****  |
   |   **   |
   | ****** |
   +--------+ */
0x1800,
0x3c00,
0x7e00,
0x1800,
0x7e00,
0x3c00,
0x1800,
0x7e00,

/* Character  (0x18):
   ht=8, width=8
   +--------+
   |   **   |
   |  ****  |
   | ****** |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |        |
   +--------+ */
0x1800,
0x3c00,
0x7e00,
0x1800,
0x1800,
0x1800,
0x1800,
0x0000,

/* Character  (0x19):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   | ****** |
   |  ****  |
   |   **   |
   |        |
   +--------+ */
0x1800,
0x1800,
0x1800,
0x1800,
0x7e00,
0x3c00,
0x1800,
0x0000,

/* Character -> (0x1a):
   ht=8, width=8
   +--------+
   |        |
   |   **   |
   |   ***  |
   |******* |
   |   ***  |
   |   **   |
   |        |
   |        |
   +--------+ */
0x0000,
0x1800,
0x1c00,
0xfe00,
0x1c00,
0x1800,
0x0000,
0x0000,

/* Character  (0x1b):
   ht=8, width=8
   +--------+
   |        |
   |  **    |
   | ***    |
   |******* |
   | ***    |
   |  **    |
   |        |
   |        |
   +--------+ */
0x0000,
0x3000,
0x7000,
0xfe00,
0x7000,
0x3000,
0x0000,
0x0000,

/* Character  (0x1c):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |**      |
   |**      |
   |**      |
   |******* |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0xc000,
0xc000,
0xc000,
0xfe00,
0x0000,
0x0000,

/* Character  (0x1d):
   ht=8, width=8
   +--------+
   |        |
   |  *  *  |
   | **  ** |
   |********|
   | **  ** |
   |  *  *  |
   |        |
   |        |
   +--------+ */
0x0000,
0x2400,
0x6600,
0xff00,
0x6600,
0x2400,
0x0000,
0x0000,

/* Character  (0x1e):
   ht=8, width=8
   +--------+
   |        |
   |   *    |
   |  ***   |
   | *****  |
   | *****  |
   |******* |
   |        |
   |        |
   +--------+ */
0x0000,
0x1000,
0x3800,
0x7c00,
0x7c00,
0xfe00,
0x0000,
0x0000,

/* Character  (0x1f):
   ht=8, width=8
   +--------+
   |        |
   |******* |
   | *****  |
   | *****  |
   |  ***   |
   |   *    |
   |        |
   |        |
   +--------+ */
0x0000,
0xfe00,
0x7c00,
0x7c00,
0x3800,
0x1000,
0x0000,
0x0000,

/* Character   (0x20):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,

/* Character ! (0x21):
   ht=8, width=8
   +--------+
   |   **   |
   |  ****  |
   |  ****  |
   |   **   |
   |   **   |
   |        |
   |   **   |
   |        |
   +--------+ */
0x1800,
0x3c00,
0x3c00,
0x1800,
0x1800,
0x0000,
0x1800,
0x0000,

/* Character " (0x22):
   ht=8, width=8
   +--------+
   | ** **  |
   | ** **  |
   | ** **  |
   |        |
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0x6c00,
0x6c00,
0x6c00,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,

/* Character # (0x23):
   ht=8, width=8
   +--------+
   | ** **  |
   | ** **  |
   |******* |
   | ** **  |
   |******* |
   | ** **  |
   | ** **  |
   |        |
   +--------+ */
0x6c00,
0x6c00,
0xfe00,
0x6c00,
0xfe00,
0x6c00,
0x6c00,
0x0000,

/* Character $ (0x24):
   ht=8, width=8
   +--------+
   |   **   |
   | ****** |
   |**      |
   | *****  |
   |     ** |
   |******  |
   |   **   |
   |        |
   +--------+ */
0x1800,
0x7e00,
0xc000,
0x7c00,
0x0600,
0xfc00,
0x1800,
0x0000,

/* Character % (0x25):
   ht=8, width=8
   +--------+
   |        |
   |**   ** |
   |    **  |
   |   **   |
   |  **    |
   | **     |
   |**   ** |
   |        |
   +--------+ */
0x0000,
0xc600,
0x0c00,
0x1800,
0x3000,
0x6000,
0xc600,
0x0000,

/* Character & (0x26):
   ht=8, width=8
   +--------+
   |  ***   |
   | ** **  |
   |  ***   |
   | *** ** |
   |**  **  |
   |**  **  |
   | *** ** |
   |        |
   +--------+ */
0x3800,
0x6c00,
0x3800,
0x7600,
0xcc00,
0xcc00,
0x7600,
0x0000,

/* Character ' (0x27):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |  **    |
   |        |
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0x1800,
0x1800,
0x3000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,

/* Character ( (0x28):
   ht=8, width=8
   +--------+
   |   **   |
   |  **    |
   | **     |
   | **     |
   | **     |
   |  **    |
   |   **   |
   |        |
   +--------+ */
0x1800,
0x3000,
0x6000,
0x6000,
0x6000,
0x3000,
0x1800,
0x0000,

/* Character ) (0x29):
   ht=8, width=8
   +--------+
   | **     |
   |  **    |
   |   **   |
   |   **   |
   |   **   |
   |  **    |
   | **     |
   |        |
   +--------+ */
0x6000,
0x3000,
0x1800,
0x1800,
0x1800,
0x3000,
0x6000,
0x0000,

/* Character * (0x2a):
   ht=8, width=8
   +--------+
   |        |
   |*** *** |
   | *****  |
   |******* |
   | *****  |
   |*** *** |
   |        |
   |        |
   +--------+ */
0x0000,
0xee00,
0x7c00,
0xfe00,
0x7c00,
0xee00,
0x0000,
0x0000,

/* Character + (0x2b):
   ht=8, width=8
   +--------+
   |        |
   |   **   |
   |   **   |
   | ****** |
   |   **   |
   |   **   |
   |        |
   |        |
   +--------+ */
0x0000,
0x1800,
0x1800,
0x7e00,
0x1800,
0x1800,
0x0000,
0x0000,

/* Character , (0x2c):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |   **   |
   |   **   |
   |  **    |
   |        |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0x1800,
0x1800,
0x3000,
0x0000,

/* Character - (0x2d):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |******* |
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0x0000,
0xfe00,
0x0000,
0x0000,
0x0000,
0x0000,

/* Character . (0x2e):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |        |
   |  ***   |
   |  ***   |
   |        |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x3800,
0x3800,
0x0000,

/* Character / (0x2f):
   ht=8, width=8
   +--------+
   |     ** |
   |    **  |
   |   **   |
   |  **    |
   | **     |
   |**      |
   |*       |
   |        |
   +--------+ */
0x0600,
0x0c00,
0x1800,
0x3000,
0x6000,
0xc000,
0x8000,
0x0000,

/* Character 0 (0x30):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |**  *** |
   |** **** |
   |**** ** |
   |***  ** |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0xc600,
0xce00,
0xde00,
0xf600,
0xe600,
0x7c00,
0x0000,

/* Character 1 (0x31):
   ht=8, width=8
   +--------+
   |   **   |
   | ****   |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   | ****** |
   |        |
   +--------+ */
0x1800,
0x7800,
0x1800,
0x1800,
0x1800,
0x1800,
0x7e00,
0x0000,

/* Character 2 (0x32):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |    **  |
   |   **   |
   |  **    |
   | **  ** |
   |******* |
   |        |
   +--------+ */
0x7c00,
0xc600,
0x0c00,
0x1800,
0x3000,
0x6600,
0xfe00,
0x0000,

/* Character 3 (0x33):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |     ** |
   |  ****  |
   |     ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0xc600,
0x0600,
0x3c00,
0x0600,
0xc600,
0x7c00,
0x0000,

/* Character 4 (0x34):
   ht=8, width=8
   +--------+
   |    **  |
   |   ***  |
   |  ****  |
   | ** **  |
   |******* |
   |    **  |
   |    **  |
   |        |
   +--------+ */
0x0c00,
0x1c00,
0x3c00,
0x6c00,
0xfe00,
0x0c00,
0x0c00,
0x0000,

/* Character 5 (0x35):
   ht=8, width=8
   +--------+
   |******* |
   |**      |
   |******  |
   |     ** |
   |     ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0xfe00,
0xc000,
0xfc00,
0x0600,
0x0600,
0xc600,
0x7c00,
0x0000,

/* Character 6 (0x36):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |**      |
   |******  |
   |**   ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0xc600,
0xc000,
0xfc00,
0xc600,
0xc600,
0x7c00,
0x0000,

/* Character 7 (0x37):
   ht=8, width=8
   +--------+
   |******* |
   |**   ** |
   |     ** |
   |    **  |
   |   **   |
   |   **   |
   |   **   |
   |        |
   +--------+ */
0xfe00,
0xc600,
0x0600,
0x0c00,
0x1800,
0x1800,
0x1800,
0x0000,

/* Character 8 (0x38):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |**   ** |
   | *****  |
   |**   ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0xc600,
0xc600,
0x7c00,
0xc600,
0xc600,
0x7c00,
0x0000,

/* Character 9 (0x39):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |**   ** |
   | ****** |
   |     ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0xc600,
0xc600,
0x7e00,
0x0600,
0xc600,
0x7c00,
0x0000,

/* Character : (0x3a):
   ht=8, width=8
   +--------+
   |        |
   |   ***  |
   |   ***  |
   |        |
   |        |
   |   ***  |
   |   ***  |
   |        |
   +--------+ */
0x0000,
0x1c00,
0x1c00,
0x0000,
0x0000,
0x1c00,
0x1c00,
0x0000,

/* Character ; (0x3b):
   ht=8, width=8
   +--------+
   |        |
   |   **   |
   |   **   |
   |        |
   |        |
   |   **   |
   |   **   |
   |  **    |
   +--------+ */
0x0000,
0x1800,
0x1800,
0x0000,
0x0000,
0x1800,
0x1800,
0x3000,

/* Character < (0x3c):
   ht=8, width=8
   +--------+
   |    **  |
   |   **   |
   |  **    |
   | **     |
   |  **    |
   |   **   |
   |    **  |
   |        |
   +--------+ */
0x0c00,
0x1800,
0x3000,
0x6000,
0x3000,
0x1800,
0x0c00,
0x0000,

/* Character = (0x3d):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |******* |
   |        |
   |        |
   |******* |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0xfe00,
0x0000,
0x0000,
0xfe00,
0x0000,
0x0000,

/* Character > (0x3e):
   ht=8, width=8
   +--------+
   | **     |
   |  **    |
   |   **   |
   |    **  |
   |   **   |
   |  **    |
   | **     |
   |        |
   +--------+ */
0x6000,
0x3000,
0x1800,
0x0c00,
0x1800,
0x3000,
0x6000,
0x0000,

/* Character ? (0x3f):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |     ** |
   |    **  |
   |   **   |
   |        |
   |   **   |
   |        |
   +--------+ */
0x7c00,
0xc600,
0x0600,
0x0c00,
0x1800,
0x0000,
0x1800,
0x0000,

/* Character @ (0x40):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |**   ** |
   |** **** |
   |** ***  |
   |**      |
   | ****** |
   |        |
   +--------+ */
0x7c00,
0xc600,
0xc600,
0xde00,
0xdc00,
0xc000,
0x7e00,
0x0000,

/* Character A (0x41):
   ht=8, width=8
   +--------+
   |  ***   |
   | ** **  |
   |**   ** |
   |**   ** |
   |******* |
   |**   ** |
   |**   ** |
   |        |
   +--------+ */
0x3800,
0x6c00,
0xc600,
0xc600,
0xfe00,
0xc600,
0xc600,
0x0000,

/* Character B (0x42):
   ht=8, width=8
   +--------+
   |******  |
   | **  ** |
   | **  ** |
   | *****  |
   | **  ** |
   | **  ** |
   |******  |
   |        |
   +--------+ */
0xfc00,
0x6600,
0x6600,
0x7c00,
0x6600,
0x6600,
0xfc00,
0x0000,

/* Character C (0x43):
   ht=8, width=8
   +--------+
   |  ****  |
   | **  ** |
   |**      |
   |**      |
   |**      |
   | **  ** |
   |  ****  |
   |        |
   +--------+ */
0x3c00,
0x6600,
0xc000,
0xc000,
0xc000,
0x6600,
0x3c00,
0x0000,

/* Character D (0x44):
   ht=8, width=8
   +--------+
   |*****   |
   | ** **  |
   | **  ** |
   | **  ** |
   | **  ** |
   | ** **  |
   |*****   |
   |        |
   +--------+ */
0xf800,
0x6c00,
0x6600,
0x6600,
0x6600,
0x6c00,
0xf800,
0x0000,

/* Character E (0x45):
   ht=8, width=8
   +--------+
   |******* |
   |**    * |
   |**      |
   |*****   |
   |**      |
   |**    * |
   |******* |
   |        |
   +--------+ */
0xfe00,
0xc200,
0xc000,
0xf800,
0xc000,
0xc200,
0xfe00,
0x0000,

/* Character F (0x46):
   ht=8, width=8
   +--------+
   |******* |
   | **   * |
   | **     |
   | *****  |
   | **     |
   | **     |
   |****    |
   |        |
   +--------+ */
0xfe00,
0x6200,
0x6000,
0x7c00,
0x6000,
0x6000,
0xf000,
0x0000,

/* Character G (0x47):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |**      |
   |**      |
   |** **** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0xc600,
0xc000,
0xc000,
0xde00,
0xc600,
0x7c00,
0x0000,

/* Character H (0x48):
   ht=8, width=8
   +--------+
   |**   ** |
   |**   ** |
   |**   ** |
   |******* |
   |**   ** |
   |**   ** |
   |**   ** |
   |        |
   +--------+ */
0xc600,
0xc600,
0xc600,
0xfe00,
0xc600,
0xc600,
0xc600,
0x0000,

/* Character I (0x49):
   ht=8, width=8
   +--------+
   |  ****  |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |  ****  |
   |        |
   +--------+ */
0x3c00,
0x1800,
0x1800,
0x1800,
0x1800,
0x1800,
0x3c00,
0x0000,

/* Character J (0x4a):
   ht=8, width=8
   +--------+
   |  ****  |
   |   **   |
   |   **   |
   |   **   |
   |** **   |
   |** **   |
   | ***    |
   |        |
   +--------+ */
0x3c00,
0x1800,
0x1800,
0x1800,
0xd800,
0xd800,
0x7000,
0x0000,

/* Character K (0x4b):
   ht=8, width=8
   +--------+
   |**   ** |
   |**  **  |
   |** **   |
   |****    |
   |** **   |
   |**  **  |
   |**   ** |
   |        |
   +--------+ */
0xc600,
0xcc00,
0xd800,
0xf000,
0xd800,
0xcc00,
0xc600,
0x0000,

/* Character L (0x4c):
   ht=8, width=8
   +--------+
   |****    |
   | **     |
   | **     |
   | **     |
   | **     |
   | **   * |
   |******* |
   |        |
   +--------+ */
0xf000,
0x6000,
0x6000,
0x6000,
0x6000,
0x6200,
0xfe00,
0x0000,

/* Character M (0x4d):
   ht=8, width=8
   +--------+
   |**   ** |
   |*** *** |
   |******* |
   |** * ** |
   |** * ** |
   |**   ** |
   |**   ** |
   |        |
   +--------+ */
0xc600,
0xee00,
0xfe00,
0xd600,
0xd600,
0xc600,
0xc600,
0x0000,

/* Character N (0x4e):
   ht=8, width=8
   +--------+
   |**   ** |
   |***  ** |
   |***  ** |
   |**** ** |
   |** **** |
   |**  *** |
   |**   ** |
   |        |
   +--------+ */
0xc600,
0xe600,
0xe600,
0xf600,
0xde00,
0xce00,
0xc600,
0x0000,

/* Character O (0x4f):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |**   ** |
   |**   ** |
   |**   ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0xc600,
0xc600,
0xc600,
0xc600,
0xc600,
0x7c00,
0x0000,

/* Character P (0x50):
   ht=8, width=8
   +--------+
   |******  |
   | **  ** |
   | **  ** |
   | *****  |
   | **     |
   | **     |
   |****    |
   |        |
   +--------+ */
0xfc00,
0x6600,
0x6600,
0x7c00,
0x6000,
0x6000,
0xf000,
0x0000,

/* Character Q (0x51):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |**   ** |
   |**   ** |
   |**   ** |
   |** * ** |
   | *****  |
   |     ** |
   +--------+ */
0x7c00,
0xc600,
0xc600,
0xc600,
0xc600,
0xd600,
0x7c00,
0x0600,

/* Character R (0x52):
   ht=8, width=8
   +--------+
   |******  |
   |**   ** |
   |**   ** |
   |******  |
   |** **   |
   |**  **  |
   |**   ** |
   |        |
   +--------+ */
0xfc00,
0xc600,
0xc600,
0xfc00,
0xd800,
0xcc00,
0xc600,
0x0000,

/* Character S (0x53):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |**      |
   | *****  |
   |     ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0xc600,
0xc000,
0x7c00,
0x0600,
0xc600,
0x7c00,
0x0000,

/* Character T (0x54):
   ht=8, width=8
   +--------+
   | ****** |
   | * ** * |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |  ****  |
   |        |
   +--------+ */
0x7e00,
0x5a00,
0x1800,
0x1800,
0x1800,
0x1800,
0x3c00,
0x0000,

/* Character U (0x55):
   ht=8, width=8
   +--------+
   |**   ** |
   |**   ** |
   |**   ** |
   |**   ** |
   |**   ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0xc600,
0xc600,
0xc600,
0xc600,
0xc600,
0xc600,
0x7c00,
0x0000,

/* Character V (0x56):
   ht=8, width=8
   +--------+
   |**   ** |
   |**   ** |
   |**   ** |
   |**   ** |
   | ** **  |
   |  ***   |
   |   *    |
   |        |
   +--------+ */
0xc600,
0xc600,
0xc600,
0xc600,
0x6c00,
0x3800,
0x1000,
0x0000,

/* Character W (0x57):
   ht=8, width=8
   +--------+
   |**   ** |
   |**   ** |
   |** * ** |
   |** * ** |
   |******* |
   |*** *** |
   |**   ** |
   |        |
   +--------+ */
0xc600,
0xc600,
0xd600,
0xd600,
0xfe00,
0xee00,
0xc600,
0x0000,

/* Character X (0x58):
   ht=8, width=8
   +--------+
   |**   ** |
   | ** **  |
   |  ***   |
   |  ***   |
   |  ***   |
   | ** **  |
   |**   ** |
   |        |
   +--------+ */
0xc600,
0x6c00,
0x3800,
0x3800,
0x3800,
0x6c00,
0xc600,
0x0000,

/* Character Y (0x59):
   ht=8, width=8
   +--------+
   | **  ** |
   | **  ** |
   | **  ** |
   |  ****  |
   |   **   |
   |   **   |
   |  ****  |
   |        |
   +--------+ */
0x6600,
0x6600,
0x6600,
0x3c00,
0x1800,
0x1800,
0x3c00,
0x0000,

/* Character Z (0x5a):
   ht=8, width=8
   +--------+
   |******* |
   |*    ** |
   |    **  |
   |   **   |
   |  **    |
   | **   * |
   |******* |
   |        |
   +--------+ */
0xfe00,
0x8600,
0x0c00,
0x1800,
0x3000,
0x6200,
0xfe00,
0x0000,

/* Character [ (0x5b):
   ht=8, width=8
   +--------+
   | *****  |
   | **     |
   | **     |
   | **     |
   | **     |
   | **     |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0x6000,
0x6000,
0x6000,
0x6000,
0x6000,
0x7c00,
0x0000,

/* Character \ (0x5c):
   ht=8, width=8
   +--------+
   |**      |
   | **     |
   |  **    |
   |   **   |
   |    **  |
   |     ** |
   |      * |
   |        |
   +--------+ */
0xc000,
0x6000,
0x3000,
0x1800,
0x0c00,
0x0600,
0x0200,
0x0000,

/* Character ] (0x5d):
   ht=8, width=8
   +--------+
   | *****  |
   |    **  |
   |    **  |
   |    **  |
   |    **  |
   |    **  |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0x0c00,
0x0c00,
0x0c00,
0x0c00,
0x0c00,
0x7c00,
0x0000,

/* Character ^ (0x5e):
   ht=8, width=8
   +--------+
   |   *    |
   |  ***   |
   | ** **  |
   |**   ** |
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0x1000,
0x3800,
0x6c00,
0xc600,
0x0000,
0x0000,
0x0000,
0x0000,

/* Character _ (0x5f):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |        |
   |        |
   |        |
   |********|
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0xff00,

/* Character ` (0x60):
   ht=8, width=8
   +--------+
   |  **    |
   |  **    |
   |   **   |
   |        |
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0x3000,
0x3000,
0x1800,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,

/* Character a (0x61):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | ****   |
   |    **  |
   | *****  |
   |**  **  |
   | ****** |
   |        |
   +--------+ */
0x0000,
0x0000,
0x7800,
0x0c00,
0x7c00,
0xcc00,
0x7e00,
0x0000,

/* Character b (0x62):
   ht=8, width=8
   +--------+
   |***     |
   | **     |
   | *****  |
   | **  ** |
   | **  ** |
   | **  ** |
   |******  |
   |        |
   +--------+ */
0xe000,
0x6000,
0x7c00,
0x6600,
0x6600,
0x6600,
0xfc00,
0x0000,

/* Character c (0x63):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | *****  |
   |**   ** |
   |**      |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x0000,
0x0000,
0x7c00,
0xc600,
0xc000,
0xc600,
0x7c00,
0x0000,

/* Character d (0x64):
   ht=8, width=8
   +--------+
   |   ***  |
   |    **  |
   | *****  |
   |**  **  |
   |**  **  |
   |**  **  |
   | ****** |
   |        |
   +--------+ */
0x1c00,
0x0c00,
0x7c00,
0xcc00,
0xcc00,
0xcc00,
0x7e00,
0x0000,

/* Character e (0x65):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | *****  |
   |**   ** |
   |******* |
   |**      |
   | *****  |
   |        |
   +--------+ */
0x0000,
0x0000,
0x7c00,
0xc600,
0xfe00,
0xc000,
0x7c00,
0x0000,

/* Character f (0x66):
   ht=8, width=8
   +--------+
   |   ***  |
   |  ** ** |
   |  **    |
   |******  |
   |  **    |
   |  **    |
   | ****   |
   |        |
   +--------+ */
0x1c00,
0x3600,
0x3000,
0xfc00,
0x3000,
0x3000,
0x7800,
0x0000,

/* Character g (0x67):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | *** ** |
   |**  *** |
   |**   ** |
   | ****** |
   |     ** |
   | *****  |
   +--------+ */
0x0000,
0x0000,
0x7600,
0xce00,
0xc600,
0x7e00,
0x0600,
0x7c00,

/* Character h (0x68):
   ht=8, width=8
   +--------+
   |***     |
   | **     |
   | *****  |
   | **  ** |
   | **  ** |
   | **  ** |
   |***  ** |
   |        |
   +--------+ */
0xe000,
0x6000,
0x7c00,
0x6600,
0x6600,
0x6600,
0xe600,
0x0000,

/* Character i (0x69):
   ht=8, width=8
   +--------+
   |   **   |
   |        |
   |  ***   |
   |   **   |
   |   **   |
   |   **   |
   |  ****  |
   |        |
   +--------+ */
0x1800,
0x0000,
0x3800,
0x1800,
0x1800,
0x1800,
0x3c00,
0x0000,

/* Character j (0x6a):
   ht=8, width=8
   +--------+
   |    **  |
   |        |
   |   ***  |
   |    **  |
   |    **  |
   |    **  |
   |**  **  |
   | ****   |
   +--------+ */
0x0c00,
0x0000,
0x1c00,
0x0c00,
0x0c00,
0x0c00,
0xcc00,
0x7800,

/* Character k (0x6b):
   ht=8, width=8
   +--------+
   |***     |
   | **     |
   | **  ** |
   | ** **  |
   | ****   |
   | ** **  |
   |***  ** |
   |        |
   +--------+ */
0xe000,
0x6000,
0x6600,
0x6c00,
0x7800,
0x6c00,
0xe600,
0x0000,

/* Character l (0x6c):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   ***  |
   |        |
   +--------+ */
0x1800,
0x1800,
0x1800,
0x1800,
0x1800,
0x1800,
0x1c00,
0x0000,

/* Character m (0x6d):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | ** **  |
   |******* |
   |** * ** |
   |** * ** |
   |**   ** |
   |        |
   +--------+ */
0x0000,
0x0000,
0x6c00,
0xfe00,
0xd600,
0xd600,
0xc600,
0x0000,

/* Character n (0x6e):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |** ***  |
   | **  ** |
   | **  ** |
   | **  ** |
   | **  ** |
   |        |
   +--------+ */
0x0000,
0x0000,
0xdc00,
0x6600,
0x6600,
0x6600,
0x6600,
0x0000,

/* Character o (0x6f):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | *****  |
   |**   ** |
   |**   ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x0000,
0x0000,
0x7c00,
0xc600,
0xc600,
0xc600,
0x7c00,
0x0000,

/* Character p (0x70):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |** ***  |
   | **  ** |
   | **  ** |
   | *****  |
   | **     |
   |****    |
   +--------+ */
0x0000,
0x0000,
0xdc00,
0x6600,
0x6600,
0x7c00,
0x6000,
0xf000,

/* Character q (0x71):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | *** ** |
   |**  **  |
   |**  **  |
   | *****  |
   |    **  |
   |   **** |
   +--------+ */
0x0000,
0x0000,
0x7600,
0xcc00,
0xcc00,
0x7c00,
0x0c00,
0x1e00,

/* Character r (0x72):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |** ***  |
   | **  ** |
   | **     |
   | **     |
   |****    |
   |        |
   +--------+ */
0x0000,
0x0000,
0xdc00,
0x6600,
0x6000,
0x6000,
0xf000,
0x0000,

/* Character s (0x73):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | *****  |
   |**      |
   | *****  |
   |     ** |
   | *****  |
   |        |
   +--------+ */
0x0000,
0x0000,
0x7c00,
0xc000,
0x7c00,
0x0600,
0x7c00,
0x0000,

/* Character t (0x74):
   ht=8, width=8
   +--------+
   |  **    |
   |  **    |
   |******  |
   |  **    |
   |  **    |
   |  ** ** |
   |   ***  |
   |        |
   +--------+ */
0x3000,
0x3000,
0xfc00,
0x3000,
0x3000,
0x3600,
0x1c00,
0x0000,

/* Character u (0x75):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |**  **  |
   |**  **  |
   |**  **  |
   |**  **  |
   | *** ** |
   |        |
   +--------+ */
0x0000,
0x0000,
0xcc00,
0xcc00,
0xcc00,
0xcc00,
0x7600,
0x0000,

/* Character v (0x76):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |**   ** |
   |**   ** |
   | ** **  |
   |  ***   |
   |   *    |
   |        |
   +--------+ */
0x0000,
0x0000,
0xc600,
0xc600,
0x6c00,
0x3800,
0x1000,
0x0000,

/* Character w (0x77):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |**   ** |
   |**   ** |
   |** * ** |
   |******* |
   | ** **  |
   |        |
   +--------+ */
0x0000,
0x0000,
0xc600,
0xc600,
0xd600,
0xfe00,
0x6c00,
0x0000,

/* Character x (0x78):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |**   ** |
   | ** **  |
   |  ***   |
   | ** **  |
   |**   ** |
   |        |
   +--------+ */
0x0000,
0x0000,
0xc600,
0x6c00,
0x3800,
0x6c00,
0xc600,
0x0000,

/* Character y (0x79):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |**   ** |
   |**   ** |
   |**  *** |
   | *** ** |
   |     ** |
   | *****  |
   +--------+ */
0x0000,
0x0000,
0xc600,
0xc600,
0xce00,
0x7600,
0x0600,
0x7c00,

/* Character z (0x7a):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |******  |
   |*  **   |
   |  **    |
   | **  *  |
   |******  |
   |        |
   +--------+ */
0x0000,
0x0000,
0xfc00,
0x9800,
0x3000,
0x6400,
0xfc00,
0x0000,

/* Character { (0x7b):
   ht=8, width=8
   +--------+
   |    *** |
   |   **   |
   |   **   |
   | ***    |
   |   **   |
   |   **   |
   |    *** |
   |        |
   +--------+ */
0x0e00,
0x1800,
0x1800,
0x7000,
0x1800,
0x1800,
0x0e00,
0x0000,

/* Character | (0x7c):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   **   |
   |        |
   |   **   |
   |   **   |
   |   **   |
   |        |
   +--------+ */
0x1800,
0x1800,
0x1800,
0x0000,
0x1800,
0x1800,
0x1800,
0x0000,

/* Character } (0x7d):
   ht=8, width=8
   +--------+
   | ***    |
   |   **   |
   |   **   |
   |    *** |
   |   **   |
   |   **   |
   | ***    |
   |        |
   +--------+ */
0x7000,
0x1800,
0x1800,
0x0e00,
0x1800,
0x1800,
0x7000,
0x0000,

/* Character ~ (0x7e):
   ht=8, width=8
   +--------+
   | *** ** |
   |** ***  |
   |        |
   |        |
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0x7600,
0xdc00,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,

/* Character  (0x7f):
   ht=8, width=8
   +--------+
   |        |
   |   *    |
   |  ***   |
   |  ***   |
   | ** **  |
   | ** **  |
   |******* |
   |        |
   +--------+ */
0x0000,
0x1000,
0x3800,
0x3800,
0x6c00,
0x6c00,
0xfe00,
0x0000,

/* Character € (0x80):
   ht=8, width=8
   +--------+
   |  ****  |
   | **  ** |
   |**      |
   | **  ** |
   |  ****  |
   |   **   |
   |**  **  |
   | ****   |
   +--------+ */
0x3c00,
0x6600,
0xc000,
0x6600,
0x3c00,
0x1800,
0xcc00,
0x7800,

/* Character  (0x81):
   ht=8, width=8
   +--------+
   |        |
   |**   ** |
   |        |
   |**   ** |
   |**   ** |
   |**  *** |
   | *** ** |
   |        |
   +--------+ */
0x0000,
0xc600,
0x0000,
0xc600,
0xc600,
0xce00,
0x7600,
0x0000,

/* Character ‚ (0x82):
   ht=8, width=8
   +--------+
   |    *** |
   |        |
   | *****  |
   |**   ** |
   |******* |
   |**      |
   | *****  |
   |        |
   +--------+ */
0x0e00,
0x0000,
0x7c00,
0xc600,
0xfe00,
0xc000,
0x7c00,
0x0000,

/* Character ƒ (0x83):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   | ****   |
   |    **  |
   | *****  |
   |**  **  |
   | ****** |
   |        |
   +--------+ */
0x7c00,
0xc600,
0x7800,
0x0c00,
0x7c00,
0xcc00,
0x7e00,
0x0000,

/* Character „ (0x84):
   ht=8, width=8
   +--------+
   |**   ** |
   |        |
   | ****   |
   |    **  |
   | *****  |
   |**  **  |
   | ****** |
   |        |
   +--------+ */
0xc600,
0x0000,
0x7800,
0x0c00,
0x7c00,
0xcc00,
0x7e00,
0x0000,

/* Character … (0x85):
   ht=8, width=8
   +--------+
   |***     |
   |        |
   | ****   |
   |    **  |
   | *****  |
   |**  **  |
   | ****** |
   |        |
   +--------+ */
0xe000,
0x0000,
0x7800,
0x0c00,
0x7c00,
0xcc00,
0x7e00,
0x0000,

/* Character † (0x86):
   ht=8, width=8
   +--------+
   |  ***   |
   |  ***   |
   | ****   |
   |    **  |
   | *****  |
   |**  **  |
   | ****** |
   |        |
   +--------+ */
0x3800,
0x3800,
0x7800,
0x0c00,
0x7c00,
0xcc00,
0x7e00,
0x0000,

/* Character ‡ (0x87):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | *****  |
   |**      |
   | *****  |
   |   **   |
   | ** **  |
   |  ***   |
   +--------+ */
0x0000,
0x0000,
0x7c00,
0xc000,
0x7c00,
0x1800,
0x6c00,
0x3800,

/* Character ˆ (0x88):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   | *****  |
   |**   ** |
   |******* |
   |**      |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0xc600,
0x7c00,
0xc600,
0xfe00,
0xc000,
0x7c00,
0x0000,

/* Character ‰ (0x89):
   ht=8, width=8
   +--------+
   |**   ** |
   |        |
   | *****  |
   |**   ** |
   |******* |
   |**      |
   | *****  |
   |        |
   +--------+ */
0xc600,
0x0000,
0x7c00,
0xc600,
0xfe00,
0xc000,
0x7c00,
0x0000,

/* Character Š (0x8a):
   ht=8, width=8
   +--------+
   |***     |
   |        |
   | *****  |
   |**   ** |
   |******* |
   |**      |
   | *****  |
   |        |
   +--------+ */
0xe000,
0x0000,
0x7c00,
0xc600,
0xfe00,
0xc000,
0x7c00,
0x0000,

/* Character ‹ (0x8b):
   ht=8, width=8
   +--------+
   | **  ** |
   |        |
   |  ***   |
   |   **   |
   |   **   |
   |   **   |
   |  ****  |
   |        |
   +--------+ */
0x6600,
0x0000,
0x3800,
0x1800,
0x1800,
0x1800,
0x3c00,
0x0000,

/* Character Π(0x8c):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |  ***   |
   |   **   |
   |   **   |
   |   **   |
   |  ****  |
   |        |
   +--------+ */
0x7c00,
0xc600,
0x3800,
0x1800,
0x1800,
0x1800,
0x3c00,
0x0000,

/* Character  (0x8d):
   ht=8, width=8
   +--------+
   |***     |
   |        |
   |  ***   |
   |   **   |
   |   **   |
   |   **   |
   |  ****  |
   |        |
   +--------+ */
0xe000,
0x0000,
0x3800,
0x1800,
0x1800,
0x1800,
0x3c00,
0x0000,

/* Character Ž (0x8e):
   ht=8, width=8
   +--------+
   |**   ** |
   |  ***   |
   | ** **  |
   |**   ** |
   |******* |
   |**   ** |
   |**   ** |
   |        |
   +--------+ */
0xc600,
0x3800,
0x6c00,
0xc600,
0xfe00,
0xc600,
0xc600,
0x0000,

/* Character  (0x8f):
   ht=8, width=8
   +--------+
   |  ***   |
   |  ***   |
   |        |
   | *****  |
   |**   ** |
   |******* |
   |**   ** |
   |        |
   +--------+ */
0x3800,
0x3800,
0x0000,
0x7c00,
0xc600,
0xfe00,
0xc600,
0x0000,

/* Character  (0x90):
   ht=8, width=8
   +--------+
   |    *** |
   |        |
   |******* |
   |**      |
   |*****   |
   |**      |
   |******* |
   |        |
   +--------+ */
0x0e00,
0x0000,
0xfe00,
0xc000,
0xf800,
0xc000,
0xfe00,
0x0000,

/* Character ‘ (0x91):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | ** **  |
   |*  ** * |
   | ****** |
   |** **   |
   | ** *** |
   |        |
   +--------+ */
0x0000,
0x0000,
0x6c00,
0x9a00,
0x7e00,
0xd800,
0x6e00,
0x0000,

/* Character ’ (0x92):
   ht=8, width=8
   +--------+
   | ****** |
   |** **   |
   |** **   |
   |******* |
   |** **   |
   |** **   |
   |** **** |
   |        |
   +--------+ */
0x7e00,
0xd800,
0xd800,
0xfe00,
0xd800,
0xd800,
0xde00,
0x0000,

/* Character “ (0x93):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |        |
   | *****  |
   |**   ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x7c00,
0xc600,
0x0000,
0x7c00,
0xc600,
0xc600,
0x7c00,
0x0000,

/* Character ” (0x94):
   ht=8, width=8
   +--------+
   |        |
   |**   ** |
   |        |
   | *****  |
   |**   ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x0000,
0xc600,
0x0000,
0x7c00,
0xc600,
0xc600,
0x7c00,
0x0000,

/* Character • (0x95):
   ht=8, width=8
   +--------+
   |        |
   |***     |
   |        |
   | *****  |
   |**   ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x0000,
0xe000,
0x0000,
0x7c00,
0xc600,
0xc600,
0x7c00,
0x0000,

/* Character – (0x96):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |        |
   |**   ** |
   |**   ** |
   |**  *** |
   | *** ** |
   |        |
   +--------+ */
0x7c00,
0xc600,
0x0000,
0xc600,
0xc600,
0xce00,
0x7600,
0x0000,

/* Character — (0x97):
   ht=8, width=8
   +--------+
   |        |
   |***     |
   |        |
   |**   ** |
   |**   ** |
   |**  *** |
   | *** ** |
   |        |
   +--------+ */
0x0000,
0xe000,
0x0000,
0xc600,
0xc600,
0xce00,
0x7600,
0x0000,

/* Character ˜ (0x98):
   ht=8, width=8
   +--------+
   |        |
   |**   ** |
   |        |
   |**   ** |
   |**  *** |
   | *** ** |
   |     ** |
   | *****  |
   +--------+ */
0x0000,
0xc600,
0x0000,
0xc600,
0xce00,
0x7600,
0x0600,
0x7c00,

/* Character ™ (0x99):
   ht=8, width=8
   +--------+
   |**   ** |
   |  ***   |
   | ** **  |
   |**   ** |
   |**   ** |
   | ** **  |
   |  ***   |
   |        |
   +--------+ */
0xc600,
0x3800,
0x6c00,
0xc600,
0xc600,
0x6c00,
0x3800,
0x0000,

/* Character š (0x9a):
   ht=8, width=8
   +--------+
   |**   ** |
   |        |
   |**   ** |
   |**   ** |
   |**   ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0xc600,
0x0000,
0xc600,
0xc600,
0xc600,
0xc600,
0x7c00,
0x0000,

/* Character › (0x9b):
   ht=8, width=8
   +--------+
   |        |
   |   **   |
   | ****** |
   |** **   |
   |** **   |
   | ****** |
   |   **   |
   |        |
   +--------+ */
0x0000,
0x1800,
0x7e00,
0xd800,
0xd800,
0x7e00,
0x1800,
0x0000,

/* Character œ (0x9c):
   ht=8, width=8
   +--------+
   |  ***   |
   | ** **  |
   | **     |
   |****    |
   | **  ** |
   |**** ** |
   | ** **  |
   |        |
   +--------+ */
0x3800,
0x6c00,
0x6000,
0xf000,
0x6600,
0xf600,
0x6c00,
0x0000,

/* Character  (0x9d):
   ht=8, width=8
   +--------+
   |**    **|
   | **  ** |
   |  ****  |
   | ****** |
   |   **   |
   |  ****  |
   |   **   |
   |        |
   +--------+ */
0xc300,
0x6600,
0x3c00,
0x7e00,
0x1800,
0x3c00,
0x1800,
0x0000,

/* Character ž (0x9e):
   ht=8, width=8
   +--------+
   |******  |
   |**   ** |
   |******  |
   |**  **  |
   |** **** |
   |**  **  |
   |**  *** |
   |        |
   +--------+ */
0xfc00,
0xc600,
0xfc00,
0xcc00,
0xde00,
0xcc00,
0xce00,
0x0000,

/* Character Ÿ (0x9f):
   ht=8, width=8
   +--------+
   |    **  |
   |   **** |
   |   **   |
   | ****** |
   |   **   |
   |   **   |
   |** **   |
   | ***    |
   +--------+ */
0x0c00,
0x1e00,
0x1800,
0x7e00,
0x1800,
0x1800,
0xd800,
0x7000,

/* Character   (0xa0):
   ht=8, width=8
   +--------+
   |    *** |
   |        |
   | ****   |
   |    **  |
   | *****  |
   |**  **  |
   | ****** |
   |        |
   +--------+ */
0x0e00,
0x0000,
0x7800,
0x0c00,
0x7c00,
0xcc00,
0x7e00,
0x0000,

/* Character ¡ (0xa1):
   ht=8, width=8
   +--------+
   |   ***  |
   |        |
   |  ***   |
   |   **   |
   |   **   |
   |   **   |
   |  ****  |
   |        |
   +--------+ */
0x1c00,
0x0000,
0x3800,
0x1800,
0x1800,
0x1800,
0x3c00,
0x0000,

/* Character ¢ (0xa2):
   ht=8, width=8
   +--------+
   |        |
   |    *** |
   |        |
   | *****  |
   |**   ** |
   |**   ** |
   | *****  |
   |        |
   +--------+ */
0x0000,
0x0e00,
0x0000,
0x7c00,
0xc600,
0xc600,
0x7c00,
0x0000,

/* Character £ (0xa3):
   ht=8, width=8
   +--------+
   |        |
   |    *** |
   |        |
   |**  **  |
   |**  **  |
   |** ***  |
   | *** ** |
   |        |
   +--------+ */
0x0000,
0x0e00,
0x0000,
0xcc00,
0xcc00,
0xdc00,
0x7600,
0x0000,

/* Character ¤ (0xa4):
   ht=8, width=8
   +--------+
   |        |
   |******  |
   |        |
   |* ****  |
   | **  ** |
   | **  ** |
   |***  ** |
   |        |
   +--------+ */
0x0000,
0xfc00,
0x0000,
0xbc00,
0x6600,
0x6600,
0xe600,
0x0000,

/* Character ¥ (0xa5):
   ht=8, width=8
   +--------+
   |******* |
   |        |
   |**   ** |
   |***  ** |
   |**** ** |
   |**  *** |
   |**   ** |
   |        |
   +--------+ */
0xfe00,
0x0000,
0xc600,
0xe600,
0xf600,
0xce00,
0xc600,
0x0000,

/* Character ¦ (0xa6):
   ht=8, width=8
   +--------+
   |  ***   |
   | ** **  |
   |  ***** |
   |        |
   | ****** |
   |        |
   |        |
   |        |
   +--------+ */
0x3800,
0x6c00,
0x3e00,
0x0000,
0x7e00,
0x0000,
0x0000,
0x0000,

/* Character § (0xa7):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   | *****  |
   |        |
   | *****  |
   |        |
   |        |
   |        |
   +--------+ */
0x7c00,
0xc600,
0x7c00,
0x0000,
0x7c00,
0x0000,
0x0000,
0x0000,

/* Character ¨ (0xa8):
   ht=8, width=8
   +--------+
   |   **   |
   |        |
   |   **   |
   |  **    |
   | **     |
   | **  ** |
   |  ****  |
   |        |
   +--------+ */
0x1800,
0x0000,
0x1800,
0x3000,
0x6000,
0x6600,
0x3c00,
0x0000,

/* Character © (0xa9):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   | *****  |
   | **     |
   | **     |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x7c00,
0x6000,
0x6000,
0x0000,
0x0000,

/* Character ª (0xaa):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   | *****  |
   |    **  |
   |    **  |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x7c00,
0x0c00,
0x0c00,
0x0000,
0x0000,

/* Character « (0xab):
   ht=8, width=8
   +--------+
   |**      |
   |**  **  |
   |** **   |
   |  **    |
   | *****  |
   |  ** ** |
   |    **  |
   |  ***** |
   +--------+ */
0xc000,
0xcc00,
0xd800,
0x3000,
0x7c00,
0x3600,
0x0c00,
0x3e00,

/* Character ¬ (0xac):
   ht=8, width=8
   +--------+
   |**      |
   |**  **  |
   |** **   |
   |  **    |
   | ** **  |
   |  ****  |
   | ****** |
   |    **  |
   +--------+ */
0xc000,
0xcc00,
0xd800,
0x3000,
0x6c00,
0x3c00,
0x7e00,
0x0c00,

/* Character ­ (0xad):
   ht=8, width=8
   +--------+
   |   **   |
   |        |
   |   **   |
   |   **   |
   |  ****  |
   |  ****  |
   |   **   |
   |        |
   +--------+ */
0x1800,
0x0000,
0x1800,
0x1800,
0x3c00,
0x3c00,
0x1800,
0x0000,

/* Character ® (0xae):
   ht=8, width=8
   +--------+
   |        |
   |  ** ** |
   | ** **  |
   |** **   |
   | ** **  |
   |  ** ** |
   |        |
   |        |
   +--------+ */
0x0000,
0x3600,
0x6c00,
0xd800,
0x6c00,
0x3600,
0x0000,
0x0000,

/* Character ¯ (0xaf):
   ht=8, width=8
   +--------+
   |        |
   |** **   |
   | ** **  |
   |  ** ** |
   | ** **  |
   |** **   |
   |        |
   |        |
   +--------+ */
0x0000,
0xd800,
0x6c00,
0x3600,
0x6c00,
0xd800,
0x0000,
0x0000,

/* Character ° (0xb0):
   ht=8, width=8
   +--------+
   |  *   * |
   |*   *   |
   |  *   * |
   |*   *   |
   |  *   * |
   |*   *   |
   |  *   * |
   |*   *   |
   +--------+ */
0x2200,
0x8800,
0x2200,
0x8800,
0x2200,
0x8800,
0x2200,
0x8800,

/* Character ± (0xb1):
   ht=8, width=8
   +--------+
   | * * * *|
   |* * * * |
   | * * * *|
   |* * * * |
   | * * * *|
   |* * * * |
   | * * * *|
   |* * * * |
   +--------+ */
0x5500,
0xaa00,
0x5500,
0xaa00,
0x5500,
0xaa00,
0x5500,
0xaa00,

/* Character ² (0xb2):
   ht=8, width=8
   +--------+
   |** *** *|
   | *** ***|
   |** *** *|
   | *** ***|
   |** *** *|
   | *** ***|
   |** *** *|
   | *** ***|
   +--------+ */
0xdd00,
0x7700,
0xdd00,
0x7700,
0xdd00,
0x7700,
0xdd00,
0x7700,

/* Character ³ (0xb3):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x1800,
0x1800,
0x1800,
0x1800,
0x1800,
0x1800,
0x1800,
0x1800,

/* Character ´ (0xb4):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |*****   |
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x1800,
0x1800,
0x1800,
0x1800,
0xf800,
0x1800,
0x1800,
0x1800,

/* Character µ (0xb5):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |*****   |
   |   **   |
   |*****   |
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x1800,
0x1800,
0xf800,
0x1800,
0xf800,
0x1800,
0x1800,
0x1800,

/* Character ¶ (0xb6):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |**** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x3600,
0x3600,
0x3600,
0x3600,
0xf600,
0x3600,
0x3600,
0x3600,

/* Character · (0xb7):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |******* |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0xfe00,
0x3600,
0x3600,
0x3600,

User avatar
Cycl0ne
Posts: 102
Joined: Mon Jun 25, 2012 8:03 am

Re: print char to screen

Thu Aug 09, 2012 1:38 pm

second part:

Code: Select all


/* Character ¸ (0xb8):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |*****   |
   |   **   |
   |*****   |
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x0000,
0x0000,
0xf800,
0x1800,
0xf800,
0x1800,
0x1800,
0x1800,

/* Character ¹ (0xb9):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |**** ** |
   |     ** |
   |**** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x3600,
0x3600,
0xf600,
0x0600,
0xf600,
0x3600,
0x3600,
0x3600,

/* Character º (0xba):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x3600,
0x3600,
0x3600,
0x3600,
0x3600,
0x3600,
0x3600,
0x3600,

/* Character » (0xbb):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |******* |
   |     ** |
   |**** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x0000,
0x0000,
0xfe00,
0x0600,
0xf600,
0x3600,
0x3600,
0x3600,

/* Character ¼ (0xbc):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |**** ** |
   |     ** |
   |******* |
   |        |
   |        |
   |        |
   +--------+ */
0x3600,
0x3600,
0xf600,
0x0600,
0xfe00,
0x0000,
0x0000,
0x0000,

/* Character ½ (0xbd):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |******* |
   |        |
   |        |
   |        |
   +--------+ */
0x3600,
0x3600,
0x3600,
0x3600,
0xfe00,
0x0000,
0x0000,
0x0000,

/* Character ¾ (0xbe):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |*****   |
   |   **   |
   |*****   |
   |        |
   |        |
   |        |
   +--------+ */
0x1800,
0x1800,
0xf800,
0x1800,
0xf800,
0x0000,
0x0000,
0x0000,

/* Character ¿ (0xbf):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |*****   |
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0xf800,
0x1800,
0x1800,
0x1800,

/* Character À (0xc0):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   *****|
   |        |
   |        |
   |        |
   +--------+ */
0x1800,
0x1800,
0x1800,
0x1800,
0x1f00,
0x0000,
0x0000,
0x0000,

/* Character Á (0xc1):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |********|
   |        |
   |        |
   |        |
   +--------+ */
0x1800,
0x1800,
0x1800,
0x1800,
0xff00,
0x0000,
0x0000,
0x0000,

/* Character  (0xc2):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |********|
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0xff00,
0x1800,
0x1800,
0x1800,

/* Character à (0xc3):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   *****|
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x1800,
0x1800,
0x1800,
0x1800,
0x1f00,
0x1800,
0x1800,
0x1800,

/* Character Ä (0xc4):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |********|
   |        |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0xff00,
0x0000,
0x0000,
0x0000,

/* Character Å (0xc5):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |********|
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x1800,
0x1800,
0x1800,
0x1800,
0xff00,
0x1800,
0x1800,
0x1800,

/* Character Æ (0xc6):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   *****|
   |   **   |
   |   *****|
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x1800,
0x1800,
0x1f00,
0x1800,
0x1f00,
0x1800,
0x1800,
0x1800,

/* Character Ç (0xc7):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ** ***|
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x3600,
0x3600,
0x3600,
0x3600,
0x3700,
0x3600,
0x3600,
0x3600,

/* Character È (0xc8):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |  ** ***|
   |  **    |
   |  ******|
   |        |
   |        |
   |        |
   +--------+ */
0x3600,
0x3600,
0x3700,
0x3000,
0x3f00,
0x0000,
0x0000,
0x0000,

/* Character É (0xc9):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |  ******|
   |  **    |
   |  ** ***|
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x0000,
0x0000,
0x3f00,
0x3000,
0x3700,
0x3600,
0x3600,
0x3600,

/* Character Ê (0xca):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |**** ***|
   |        |
   |********|
   |        |
   |        |
   |        |
   +--------+ */
0x3600,
0x3600,
0xf700,
0x0000,
0xff00,
0x0000,
0x0000,
0x0000,

/* Character Ë (0xcb):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |********|
   |        |
   |**** ***|
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x0000,
0x0000,
0xff00,
0x0000,
0xf700,
0x3600,
0x3600,
0x3600,

/* Character Ì (0xcc):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |  ** ***|
   |  **    |
   |  ** ***|
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x3600,
0x3600,
0x3700,
0x3000,
0x3700,
0x3600,
0x3600,
0x3600,

/* Character Í (0xcd):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |********|
   |        |
   |********|
   |        |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0xff00,
0x0000,
0xff00,
0x0000,
0x0000,
0x0000,

/* Character Î (0xce):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |**** ***|
   |        |
   |**** ***|
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x3600,
0x3600,
0xf700,
0x0000,
0xf700,
0x3600,
0x3600,
0x3600,

/* Character Ï (0xcf):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |********|
   |        |
   |********|
   |        |
   |        |
   |        |
   +--------+ */
0x1800,
0x1800,
0xff00,
0x0000,
0xff00,
0x0000,
0x0000,
0x0000,

/* Character Ð (0xd0):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |********|
   |        |
   |        |
   |        |
   +--------+ */
0x3600,
0x3600,
0x3600,
0x3600,
0xff00,
0x0000,
0x0000,
0x0000,

/* Character Ñ (0xd1):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |********|
   |        |
   |********|
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x0000,
0x0000,
0xff00,
0x0000,
0xff00,
0x1800,
0x1800,
0x1800,

/* Character Ò (0xd2):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |********|
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0xff00,
0x3600,
0x3600,
0x3600,

/* Character Ó (0xd3):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ******|
   |        |
   |        |
   |        |
   +--------+ */
0x3600,
0x3600,
0x3600,
0x3600,
0x3f00,
0x0000,
0x0000,
0x0000,

/* Character Ô (0xd4):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   *****|
   |   **   |
   |   *****|
   |        |
   |        |
   |        |
   +--------+ */
0x1800,
0x1800,
0x1f00,
0x1800,
0x1f00,
0x0000,
0x0000,
0x0000,

/* Character Õ (0xd5):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |   *****|
   |   **   |
   |   *****|
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x0000,
0x0000,
0x1f00,
0x1800,
0x1f00,
0x1800,
0x1800,
0x1800,

/* Character Ö (0xd6):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |  ******|
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0x3f00,
0x3600,
0x3600,
0x3600,

/* Character × (0xd7):
   ht=8, width=8
   +--------+
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |  ** ** |
   |********|
   |  ** ** |
   |  ** ** |
   |  ** ** |
   +--------+ */
0x3600,
0x3600,
0x3600,
0x3600,
0xff00,
0x3600,
0x3600,
0x3600,

/* Character Ø (0xd8):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |********|
   |   **   |
   |********|
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x1800,
0x1800,
0xff00,
0x1800,
0xff00,
0x1800,
0x1800,
0x1800,

/* Character Ù (0xd9):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |*****   |
   |        |
   |        |
   |        |
   +--------+ */
0x1800,
0x1800,
0x1800,
0x1800,
0xf800,
0x0000,
0x0000,
0x0000,

/* Character Ú (0xda):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |   *****|
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0x1f00,
0x1800,
0x1800,
0x1800,

/* Character Û (0xdb):
   ht=8, width=8
   +--------+
   |********|
   |********|
   |********|
   |********|
   |********|
   |********|
   |********|
   |********|
   +--------+ */
0xff00,
0xff00,
0xff00,
0xff00,
0xff00,
0xff00,
0xff00,
0xff00,

/* Character Ü (0xdc):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |********|
   |********|
   |********|
   |********|
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0xff00,
0xff00,
0xff00,
0xff00,

/* Character Ý (0xdd):
   ht=8, width=8
   +--------+
   |****    |
   |****    |
   |****    |
   |****    |
   |****    |
   |****    |
   |****    |
   |****    |
   +--------+ */
0xf000,
0xf000,
0xf000,
0xf000,
0xf000,
0xf000,
0xf000,
0xf000,

/* Character Þ (0xde):
   ht=8, width=8
   +--------+
   |    ****|
   |    ****|
   |    ****|
   |    ****|
   |    ****|
   |    ****|
   |    ****|
   |    ****|
   +--------+ */
0x0f00,
0x0f00,
0x0f00,
0x0f00,
0x0f00,
0x0f00,
0x0f00,
0x0f00,

/* Character ß (0xdf):
   ht=8, width=8
   +--------+
   |********|
   |********|
   |********|
   |********|
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0xff00,
0xff00,
0xff00,
0xff00,
0x0000,
0x0000,
0x0000,
0x0000,

/* Character à (0xe0):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | **  ** |
   |** ***  |
   |** **   |
   |** ***  |
   | **  ** |
   |        |
   +--------+ */
0x0000,
0x0000,
0x6600,
0xdc00,
0xd800,
0xdc00,
0x6600,
0x0000,

/* Character á (0xe1):
   ht=8, width=8
   +--------+
   |        |
   | ****   |
   |**  **  |
   |*****   |
   |**  **  |
   |**   ** |
   |**  **  |
   |        |
   +--------+ */
0x0000,
0x7800,
0xcc00,
0xf800,
0xcc00,
0xc600,
0xcc00,
0x0000,

/* Character â (0xe2):
   ht=8, width=8
   +--------+
   |        |
   |******* |
   | **   * |
   | **     |
   | **     |
   | **     |
   |***     |
   |        |
   +--------+ */
0x0000,
0xfe00,
0x6200,
0x6000,
0x6000,
0x6000,
0xe000,
0x0000,

/* Character ã (0xe3):
   ht=8, width=8
   +--------+
   |        |
   |******* |
   | ** **  |
   | ** **  |
   | ** **  |
   | ** **  |
   | ** **  |
   |        |
   +--------+ */
0x0000,
0xfe00,
0x6c00,
0x6c00,
0x6c00,
0x6c00,
0x6c00,
0x0000,

/* Character ä (0xe4):
   ht=8, width=8
   +--------+
   |******* |
   |**   ** |
   | **     |
   |  **    |
   | **     |
   |**   ** |
   |******* |
   |        |
   +--------+ */
0xfe00,
0xc600,
0x6000,
0x3000,
0x6000,
0xc600,
0xfe00,
0x0000,

/* Character å (0xe5):
   ht=8, width=8
   +--------+
   |        |
   | ****** |
   |** **   |
   |**  **  |
   |**  **  |
   |** **   |
   | ***    |
   |        |
   +--------+ */
0x0000,
0x7e00,
0xd800,
0xcc00,
0xcc00,
0xd800,
0x7000,
0x0000,

/* Character æ (0xe6):
   ht=8, width=8
   +--------+
   |        |
   | **  ** |
   | **  ** |
   | **  ** |
   | **  ** |
   | *****  |
   |**      |
   |        |
   +--------+ */
0x0000,
0x6600,
0x6600,
0x6600,
0x6600,
0x7c00,
0xc000,
0x0000,

/* Character ç (0xe7):
   ht=8, width=8
   +--------+
   |        |
   | *** ** |
   |** ***  |
   |   **   |
   |   **   |
   |   **   |
   |  ***   |
   |        |
   +--------+ */
0x0000,
0x7600,
0xdc00,
0x1800,
0x1800,
0x1800,
0x3800,
0x0000,

/* Character è (0xe8):
   ht=8, width=8
   +--------+
   |******* |
   |  ***   |
   | ** **  |
   |**   ** |
   | ** **  |
   |  ***   |
   |******* |
   |        |
   +--------+ */
0xfe00,
0x3800,
0x6c00,
0xc600,
0x6c00,
0x3800,
0xfe00,
0x0000,

/* Character é (0xe9):
   ht=8, width=8
   +--------+
   |  ***   |
   | ** **  |
   |**   ** |
   |******* |
   |**   ** |
   | ** **  |
   |  ***   |
   |        |
   +--------+ */
0x3800,
0x6c00,
0xc600,
0xfe00,
0xc600,
0x6c00,
0x3800,
0x0000,

/* Character ê (0xea):
   ht=8, width=8
   +--------+
   |  ***   |
   | ** **  |
   |**   ** |
   |**   ** |
   | ** **  |
   | ** **  |
   |*** *** |
   |        |
   +--------+ */
0x3800,
0x6c00,
0xc600,
0xc600,
0x6c00,
0x6c00,
0xee00,
0x0000,

/* Character ë (0xeb):
   ht=8, width=8
   +--------+
   |  ***** |
   | **     |
   |  ***   |
   | **  ** |
   |**   ** |
   |**  **  |
   | ****   |
   |        |
   +--------+ */
0x3e00,
0x6000,
0x3800,
0x6600,
0xc600,
0xcc00,
0x7800,
0x0000,

/* Character ì (0xec):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | ****** |
   |** ** **|
   |** ** **|
   | ****** |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0x7e00,
0xdb00,
0xdb00,
0x7e00,
0x0000,
0x0000,

/* Character í (0xed):
   ht=8, width=8
   +--------+
   |     ** |
   | *****  |
   |** **** |
   |**** ** |
   |***  ** |
   | *****  |
   |**      |
   |        |
   +--------+ */
0x0600,
0x7c00,
0xde00,
0xf600,
0xe600,
0x7c00,
0xc000,
0x0000,

/* Character î (0xee):
   ht=8, width=8
   +--------+
   |  ***   |
   | **     |
   |**      |
   |*****   |
   |**      |
   | **     |
   |  ***   |
   |        |
   +--------+ */
0x3800,
0x6000,
0xc000,
0xf800,
0xc000,
0x6000,
0x3800,
0x0000,

/* Character ï (0xef):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |**   ** |
   |**   ** |
   |**   ** |
   |**   ** |
   |**   ** |
   |        |
   +--------+ */
0x7c00,
0xc600,
0xc600,
0xc600,
0xc600,
0xc600,
0xc600,
0x0000,

/* Character ð (0xf0):
   ht=8, width=8
   +--------+
   |        |
   |******* |
   |        |
   |******* |
   |        |
   |******* |
   |        |
   |        |
   +--------+ */
0x0000,
0xfe00,
0x0000,
0xfe00,
0x0000,
0xfe00,
0x0000,
0x0000,

/* Character ñ (0xf1):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   | ****** |
   |   **   |
   |   **   |
   |        |
   | ****** |
   |        |
   +--------+ */
0x1800,
0x1800,
0x7e00,
0x1800,
0x1800,
0x0000,
0x7e00,
0x0000,

/* Character ò (0xf2):
   ht=8, width=8
   +--------+
   |  **    |
   |   **   |
   |    **  |
   |   **   |
   |  **    |
   |        |
   | ****** |
   |        |
   +--------+ */
0x3000,
0x1800,
0x0c00,
0x1800,
0x3000,
0x0000,
0x7e00,
0x0000,

/* Character ó (0xf3):
   ht=8, width=8
   +--------+
   |    **  |
   |   **   |
   |  **    |
   |   **   |
   |    **  |
   |        |
   | ****** |
   |        |
   +--------+ */
0x0c00,
0x1800,
0x3000,
0x1800,
0x0c00,
0x0000,
0x7e00,
0x0000,

/* Character ô (0xf4):
   ht=8, width=8
   +--------+
   |    **  |
   |   **** |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   +--------+ */
0x0c00,
0x1e00,
0x1800,
0x1800,
0x1800,
0x1800,
0x1800,
0x1800,

/* Character õ (0xf5):
   ht=8, width=8
   +--------+
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   |   **   |
   | ****   |
   |  **    |
   |        |
   +--------+ */
0x1800,
0x1800,
0x1800,
0x1800,
0x1800,
0x7800,
0x3000,
0x0000,

/* Character ö (0xf6):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |   **   |
   |        |
   | ****** |
   |        |
   |   **   |
   |        |
   +--------+ */
0x0000,
0x0000,
0x1800,
0x0000,
0x7e00,
0x0000,
0x1800,
0x0000,

/* Character ÷ (0xf7):
   ht=8, width=8
   +--------+
   |        |
   | *** ** |
   |** ***  |
   |        |
   | *** ** |
   |** ***  |
   |        |
   |        |
   +--------+ */
0x0000,
0x7600,
0xdc00,
0x0000,
0x7600,
0xdc00,
0x0000,
0x0000,

/* Character ø (0xf8):
   ht=8, width=8
   +--------+
   | *****  |
   |**   ** |
   |**   ** |
   | *****  |
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0x7c00,
0xc600,
0xc600,
0x7c00,
0x0000,
0x0000,
0x0000,
0x0000,

/* Character ù (0xf9):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |   **   |
   |   **   |
   |        |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x1800,
0x1800,
0x0000,
0x0000,
0x0000,

/* Character ú (0xfa):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |   **   |
   |        |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0x1800,
0x0000,
0x0000,
0x0000,

/* Character û (0xfb):
   ht=8, width=8
   +--------+
   |   *****|
   |   **   |
   |   **   |
   |   **   |
   |*****   |
   |  ***   |
   |   **   |
   |        |
   +--------+ */
0x1f00,
0x1800,
0x1800,
0x1800,
0xf800,
0x3800,
0x1800,
0x0000,

/* Character ü (0xfc):
   ht=8, width=8
   +--------+
   |** **   |
   | ** **  |
   | ** **  |
   | ** **  |
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0xd800,
0x6c00,
0x6c00,
0x6c00,
0x0000,
0x0000,
0x0000,
0x0000,

/* Character ý (0xfd):
   ht=8, width=8
   +--------+
   | ***    |
   |** **   |
   |  **    |
   |*****   |
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0x7000,
0xd800,
0x3000,
0xf800,
0x0000,
0x0000,
0x0000,
0x0000,

/* Character þ (0xfe):
   ht=8, width=8
   +--------+
   |        |
   |        |
   | *****  |
   | *****  |
   | *****  |
   | *****  |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0x7c00,
0x7c00,
0x7c00,
0x7c00,
0x0000,
0x0000,

/* Character ÿ (0xff):
   ht=8, width=8
   +--------+
   |        |
   |        |
   |        |
   |        |
   |        |
   |        |
   |        |
   |        |
   +--------+ */
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,

};

User avatar
DexOS
Posts: 876
Joined: Wed May 16, 2012 6:32 pm
Contact: Website

Re: print char to screen

Thu Aug 09, 2012 6:38 pm

You could try DexBasic, if you like basic or assembly coding
http://www.dex-os.com/DexBasic/DexBasic.htm

It has a set of easy to use functions and more are being added each week.

Hello world example

Code: Select all

include 'DexBasic\DexBasic.inc'  

print "Hello World!"        ; prints hello with ending line break
sync                        ; write screen buffer to screen
end                         ; end program, just loop over and over again

align 4                           
ProgramSize:                ; this label = size of this program
ScreenBuffer:               ; off screen buffer address           
Batteries not included, Some assembly required.

slow_death
Posts: 5
Joined: Wed Aug 08, 2012 7:32 pm

Re: print char to screen

Thu Aug 09, 2012 11:57 pm

Thanks for all the responces.
I will start with just clearing the screen and writing a few pixels..
and see what happens..

if there are any other examples or good links - please let me know..

working on learning more about the mailbox ...

Return to “Bare metal, Assembly language”