A GUI for the Propeller
Dr_Acula
Posts: 5,484
A quick update on the crazy GUI project for the propeller. See below for a screenshot.
We now have:
* Button
* Check box
* Radio button
* Textbox
* Label
* Multiline text box with scrollbar
* Mouse
* Different fonts (MS Sans Serif and Courier New 10. More on the way)
* Loading and reloading cogs from within code
* Support for a 20x4 LCD display (this involves starting a cog, pausing Catalina and then restarting the C code)
The cog code was previously being loaded from an SD card, but it works out a bit quicker to include the cog code in the program as an array declaration. Also, this makes the code below completely self contained - no need to put any extra files on an SD card.
Apologies for my style of C programming and some of the lines not being commented.
This is a work in progress, next step is to get more things working when you click on them.
Code below has been split over two posts as the program is too big for the forum!
We now have:
* Button
* Check box
* Radio button
* Textbox
* Label
* Multiline text box with scrollbar
* Mouse
* Different fonts (MS Sans Serif and Courier New 10. More on the way)
* Loading and reloading cogs from within code
* Support for a 20x4 LCD display (this involves starting a cog, pausing Catalina and then restarting the C code)
The cog code was previously being loaded from an SD card, but it works out a bit quicker to include the cog code in the program as an array declaration. Also, this makes the code below completely self contained - no need to put any extra files on an SD card.
Apologies for my style of C programming and some of the lines not being commented.
This is a work in progress, next step is to get more things working when you click on them.
Code below has been split over two posts as the program is too big for the forum!
// GUI demonstration in catalina C // compile with catalina -lcx -D PLUGIN -lm -x5 -M 256k -d DRACBLADE -D SHARED_XMM -D HIRES_VGA myprog.c // compile using XMM #include <stdio.h> #include <string.h> // cogjects - can load from the sd card OR can include here in the external ram array declarations char lcddisplay[90]; // buffer for LCD display 80 chars plus the column,row data, in external ram int click_area[100][5] = {0}; // list of buttons, text boxes, radio etc where a mouseclick does something x1,y1,x2,y2,objectnumber and initialize to zero with the {0} char lineoftext[80]; // general purpose string buffer char richtext[20][80]; // large text buffer, cols, rows // unsigned long screen_external[4800] ; // external memory for a screen buffer unsigned long cogject_color[512] = // external memory for color vga driver source cog_kye160120.spin { 0xa0bc8df0, 0x08bc7c46, 0x80fc8c04, 0x08bc7e46, 0x80fc8c04, 0x08bc7646, 0x80fc8c04, 0x08bc7846, 0x80fc8c04, 0x08bc7a46, 0xa0bffc3c, 0xa0bff43d, 0x58fff00d, 0xa0bc8bf0, 0xa0fc8678, 0xa0fc8404, 0xa0bffe35, 0xa0fc8028, 0x08bc8245, 0x80fc8a04, 0x68bc823a, 0xfc7c82e4, 0xe4fc8012, 0xa0bffe34, 0xfc3c7037, 0x84fc8aa0, 0xe4fc8410, 0x80fc8aa0, 0xe4fc860f, 0x80fc8801, 0x003c883f, 0xa0fc800b, 0xa0bffe36, 0xfc7c7000, 0xa0bffe34, 0xfc3c7037, 0xe4fc8020, 0xa0fc8004, 0xa0bffe36, 0xfc7c7200, 0xa0bffe34, 0xfc3c7237, 0xe4fc8026, 0xa0fc801f, 0xa0bffe36, 0xfc7c7000, 0xa0bffe34, 0xfc3c7037, 0xe4fc802c, 0x02bc823e, 0x7cbfec3b, 0x5c7c000d, 0x000100a0, 0x00004010, 0x00000280, 0x00003ffc, 0x01030103, 0x00020002, 0x03030303, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }; unsigned long cogject_gray[512] = // external memory for gray vga driver, source cog_vga_320_240_gray.spin { 0xa0bccbf0, 0x08bcb265, 0x80fcca04, 0x08bcb665, 0x80fcca04, 0x08bcb865, 0x80fcca04, 0x08bc9c65, 0x80fcca04, 0x08bc9e65, 0x80fcca04, 0x08bca065, 0x80fcca04, 0x08bca265, 0x80fcca04, 0x08bca465, 0x80fcca04, 0x08bca665, 0x80fcca04, 0x08bca865, 0x80fcca04, 0x08bcaa65, 0x80fcca04, 0x08bcac65, 0x80fcca04, 0x08bcae65, 0x80fcca04, 0x08bcb065, 0x80fcca04, 0x08bcb465, 0xa0bffc4f, 0xa0bff450, 0x58fff00d, 0xa0bcbc59, 0xa0bcc054, 0xa0bcbe52, 0xa0bffe55, 0xa0bcba57, 0x08bcc25e, 0x80fcbc04, 0xfc3cc461, 0xe4fcba26, 0xa0bffe56, 0xfc3c964a, 0x84bcbc58, 0xe4fcbe24, 0x80bcbc58, 0xe4fcc023, 0x08bcc45a, 0x68bcc44d, 0x80fcc601, 0x003cc65c, 0xa0fcba0b, 0xa0bffe49, 0xfc7c9600, 0xa0bffe56, 0xfc3c964a, 0xe4fcba35, 0xa0fcba04, 0xa0bffe49, 0xfc7c9800, 0xa0bffe56, 0xfc3c984a, 0xe4fcba3b, 0xa0fcba1f, 0xa0bffe49, 0xfc7c9600, 0xa0bffe56, 0xfc3c964a, 0xe4fcba41, 0x02bcbc5b, 0x7cbfec4e, 0x5c7c0021, 0x00000280, 0x00003ffc, 0x01030103, 0x00020002, 0x03030303, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }; unsigned long cogject_mouse[512] = // source cog_mouse.spin { 0xa0bd3bf0, 0x80fd3a14, 0x08bd4a9d, 0x80fd3a04, 0x08bd4c9d, 0xa0fd3201, 0x2cbd32a5, 0xa0fd3401, 0x2cbd34a6, 0x617d4a20, 0x70bcba96, 0x70bcce96, 0x70fcf201, 0x70fd1001, 0x617d4c20, 0x70bcb496, 0x70bcc096, 0x70fd0e01, 0x54fc28a0, 0xa0fd3a05, 0xa0fc0000, 0x80bc2896, 0xe4fd3a14, 0xa0ffec00, 0xa0ffee00, 0xa0fd3601, 0x54fc3aa0, 0xa0bd3bf0, 0xa0fd3c05, 0x083c009d, 0x80bc3a96, 0x80fd3a04, 0xe4fd3c1d, 0x617d3601, 0xa0f138ff, 0x5cf0e45a, 0xa0fd3600, 0x5cfd0473, 0x867d38aa, 0x5c68003e, 0xa0bd469c, 0x5cfd0473, 0x617d4610, 0x70bd3898, 0x80bd409c, 0x5cfd0473, 0x617d4620, 0x70bd3898, 0x80bd429c, 0x60fd4607, 0x857d4802, 0x5c70001a, 0x5cfd0473, 0x867d4803, 0x61693810, 0x68e14608, 0x61693820, 0x68e14610, 0x2cfd381c, 0x38fd381c, 0x84bd449c, 0x5c7c001a, 0x5cfd0473, 0x50fc9a64, 0x5cfca84b, 0x50fc9ac8, 0x5cfca84b, 0x28fd3801, 0x80fd3801, 0xa0bd489c, 0x50fcaec8, 0x5cfcb255, 0xa0fd38f4, 0x5cfce45a, 0x5c7c001a, 0x50fcaec8, 0x5cfcb255, 0x50fcae02, 0x5cfcb255, 0x50fcae50, 0x5cfcb255, 0xa0fd38f2, 0x5cfce45a, 0x5cfd0473, 0x5c7c0000, 0xa0fd38f3, 0x5cfce45a, 0xa0fd3800, 0x5cfce45a, 0x5c7c0000, 0x68bfec9a, 0x50fd220d, 0x5cfd2a90, 0x68bfec99, 0x50fd2212, 0x5cfd2a90, 0x6cbfec9a, 0x617d38ff, 0x74fd3900, 0x68bd3896, 0xa0fd3a0a, 0x5cfd1683, 0x29fd3801, 0x74bfec99, 0xa0bd128d, 0x5cfd1684, 0xe4fd3a65, 0xa0bd128e, 0x5cfd1684, 0xa0bd128f, 0x5cfd1684, 0x5cfd0475, 0x867d38fa, 0x5c540017, 0x5c7c0000, 0x617d4c20, 0xf43d349a, 0xa0fd3a0b, 0x5cfd1683, 0x50fd2210, 0x5cfd2a90, 0x613d33f2, 0x30fd3801, 0xa0bd128d, 0x5cfd1684, 0xe4fd3a76, 0x28fd3816, 0x617d39ff, 0x5c4c0017, 0x60fd38ff, 0x5c7c0000, 0xa0bd128c, 0xa0bd3c97, 0x50fd2212, 0x5cfd2a90, 0x613d35f2, 0x623d33f2, 0xe4c13c85, 0xec7d3c17, 0x5c7c0000, 0xe4f13c85, 0xe4cd3c85, 0xe4f53c85, 0xe4ed3c85, 0x08fd3e00, 0x28fd3e00, 0x48fd3e03, 0x80bd3ff1, 0xf8fd3e00, 0x5c7c0000, 0x00000200, 0x000009c4, 0xffffff00 }; unsigned long cogject_lcd[512] = // lcdplug.spin = source { 0x0cfd0601, 0x2cfd0602, 0x80bd07f0, 0x08bd0283, 0x60bd027d, 0x08bd1081, 0x083d0a81, 0xa0fd0808, 0x2cfd0818, 0x68bd0881, 0x083d0883, 0x0abd0681, 0x5c68000b, 0xa0bd0488, 0x08bd0682, 0x863d0687, 0x5c68001e, 0xa0bd0883, 0x28fd0808, 0x60bd088b, 0xa0bd0c83, 0x60bd0c8b, 0x867d0800, 0x5ce8f872, 0x867d0801, 0x5ce8d033, 0x867d0802, 0x5ce8e269, 0x80fd0404, 0x5c7c000e, 0xa0bfec85, 0x083d0a81, 0x5c7c0020, 0x68fd0602, 0x5cfc642c, 0xa0bd01f1, 0x80bd008f, 0xf8fd0000, 0x64fd0602, 0x5cfc642c, 0xa0bd01f1, 0x80bd008f, 0xf8fd0000, 0x5c7c0000, 0xa0bfec8c, 0x60fd06ff, 0x68bd068d, 0xa0bfe883, 0x68ffe900, 0xa0bfec85, 0x5c7c0000, 0xa0bd0685, 0x5cfc642c, 0xa0bd01f1, 0x80bd007f, 0xf8fd0000, 0xa0fd060c, 0x5cfc5621, 0xa0fd060c, 0x5cfc5621, 0xa0fd060c, 0x5cfc5621, 0xa0fd0608, 0x5cfc5621, 0xa0fd0608, 0x5cfc5621, 0xa0fd0620, 0x5cfc5621, 0xa0fd0c0e, 0xa0bd0686, 0x28fd0602, 0x60fd063c, 0x5cfc5621, 0xa0bd0686, 0x2cfd0602, 0x60fd063c, 0x5cfc5621, 0xa0fd0c01, 0xa0bd0686, 0x28fd0602, 0x60fd063c, 0x5cfc5621, 0xa0bd0686, 0x2cfd0602, 0x60fd063c, 0x5cfc5621, 0xa0fd0c0d, 0xa0bd0686, 0x28fd0602, 0x60fd063c, 0x5cfc5621, 0xa0bd0686, 0x2cfd0602, 0x60fd063c, 0x5cfc5621, 0xa0fd0c80, 0xa0bd0686, 0x28fd0602, 0x60fd063c, 0x5cfc5621, 0xa0bd0686, 0x2cfd0602, 0x60fd063c, 0x5cfc5621, 0x5c7c0000, 0xa0bd0686, 0x28fd0602, 0x60fd063c, 0x5cfc5621, 0xa0bd0686, 0x2cfd0602, 0x60fd063c, 0x5cfc5621, 0x5c7c0000, 0xa0bd0686, 0x28fd0602, 0x60fd063c, 0x68fd0601, 0x5cfc5621, 0xa0bd0686, 0x2cfd0602, 0x60fd063c, 0x68fd0601, 0x5cfc5621, 0x5c7c0000, 0x00ffffff, 0x09896800, 0x00f42400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00001000, 0x12345678, 0x000000ff, 0x00000fff, 0x00000a00, 0x00000002, 0x00004e20 }; // MS Sans Serif font - 128 rows, one for each ascii character 0 to 127 // first long is 0000HHWW where HH is the height in hex and WW is the width in hex (HH is always 0c for this font) unsigned long sans_serif_font[1664] = { 0x00000c00,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c00,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, 0x00000c00,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c00,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c00,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c00,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000c05,0x00000000, 0x00000009, 0x00000009, 0x00000009, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c07,0x00000000, 0x00000012, 0x00000012, 0x0000003f, 0x00000012, 0x00000012, 0x00000012, 0x0000003f, 0x00000012, 0x00000012, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000004, 0x0000000e, 0x00000015, 0x00000014, 0x0000000c, 0x00000006, 0x00000005, 0x00000015, 0x0000000e, 0x00000004, 0x00000000, 0x00000c08,0x00000000, 0x00000030, 0x00000049, 0x00000032, 0x00000004, 0x00000008, 0x00000010, 0x00000026, 0x00000049, 0x00000006, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000008, 0x00000014, 0x00000014, 0x00000008, 0x00000008, 0x00000015, 0x00000012, 0x00000012, 0x0000000d, 0x00000000, 0x00000000, 0x00000c02,0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000001, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000001, 0x00000c03,0x00000000, 0x00000002, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000002, 0x00000c04,0x00000000, 0x00000005, 0x00000002, 0x00000005, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, 0x00000004, 0x0000001f, 0x00000004, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000c05,0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000002, 0x00000002, 0x00000004, 0x00000004, 0x00000008, 0x00000008, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x0000000e, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x0000000e, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000004, 0x0000001c, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x0000000e, 0x00000011, 0x00000001, 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x0000001f, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x0000000e, 0x00000011, 0x00000001, 0x00000001, 0x00000006, 0x00000001, 0x00000001, 0x00000011, 0x0000000e, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000002, 0x00000006, 0x00000006, 0x0000000a, 0x0000000a, 0x00000012, 0x0000001f, 0x00000002, 0x00000002, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x0000001f, 0x00000010, 0x00000010, 0x0000001e, 0x00000011, 0x00000001, 0x00000001, 0x00000011, 0x0000000e, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x0000000e, 0x00000011, 0x00000010, 0x00000010, 0x0000001e, 0x00000011, 0x00000011, 0x00000011, 0x0000000e, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x0000001f, 0x00000001, 0x00000002, 0x00000002, 0x00000004, 0x00000004, 0x00000008, 0x00000008, 0x00000008, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x0000000e, 0x00000011, 0x00000011, 0x00000011, 0x0000000e, 0x00000011, 0x00000011, 0x00000011, 0x0000000e, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x0000000e, 0x00000011, 0x00000011, 0x00000011, 0x0000000f, 0x00000001, 0x00000001, 0x00000011, 0x0000000e, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x00000008, 0x00000004, 0x00000002, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000001f, 0x00000000, 0x0000001f, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000010, 0x00000008, 0x00000004, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x0000000e, 0x00000011, 0x00000001, 0x00000001, 0x00000002, 0x00000004, 0x00000004, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000c0b,0x00000000, 0x00000078, 0x00000186, 0x00000102, 0x00000239, 0x00000249, 0x00000249, 0x00000237, 0x00000100, 0x00000180, 0x0000007c, 0x00000000, 0x00000c07,0x00000000, 0x00000008, 0x00000008, 0x00000014, 0x00000014, 0x00000022, 0x00000022, 0x0000003e, 0x00000041, 0x00000041, 0x00000000, 0x00000000, 0x00000c07,0x00000000, 0x0000003c, 0x00000022, 0x00000022, 0x00000022, 0x0000003c, 0x00000022, 0x00000022, 0x00000022, 0x0000003c, 0x00000000, 0x00000000, 0x00000c07,0x00000000, 0x0000001e, 0x00000021, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000021, 0x0000001e, 0x00000000, 0x00000000, 0x00000c08,0x00000000, 0x00000078, 0x00000044, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x00000044, 0x00000078, 0x00000000, 0x00000000, 0x00000c07,0x00000000, 0x0000003e, 0x00000020, 0x00000020, 0x00000020, 0x0000003c, 0x00000020, 0x00000020, 0x00000020, 0x0000003e, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x0000001f, 0x00000010, 0x00000010, 0x00000010, 0x0000001e, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000000, 0x00000000, 0x00000c08,0x00000000, 0x0000003c, 0x00000042, 0x00000040, 0x00000040, 0x0000004e, 0x00000042, 0x00000042, 0x00000046, 0x0000003a, 0x00000000, 0x00000000, 0x00000c08,0x00000000, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x0000007e, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000000, 0x00000000, 0x00000c05,0x00000000, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000012, 0x00000012, 0x0000000c, 0x00000000, 0x00000000, 0x00000c07,0x00000000, 0x00000022, 0x00000024, 0x00000028, 0x00000030, 0x00000030, 0x00000028, 0x00000024, 0x00000022, 0x00000021, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x0000001f, 0x00000000, 0x00000000, 0x00000c09,0x00000000, 0x00000082, 0x00000082, 0x000000c6, 0x000000c6, 0x000000aa, 0x000000aa, 0x00000092, 0x00000092, 0x00000082, 0x00000000, 0x00000000, 0x00000c08,0x00000000, 0x00000042, 0x00000062, 0x00000062, 0x00000052, 0x00000052, 0x0000004a, 0x00000046, 0x00000046, 0x00000042, 0x00000000, 0x00000000, 0x00000c08,0x00000000, 0x0000003c, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x0000003c, 0x00000000, 0x00000000, 0x00000c07,0x00000000, 0x0000003e, 0x00000021, 0x00000021, 0x00000021, 0x0000003e, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000000, 0x00000000, 0x00000c08,0x00000000, 0x0000003c, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x0000004a, 0x00000046, 0x0000003c, 0x00000002, 0x00000000, 0x00000c08,0x00000000, 0x0000007c, 0x00000042, 0x00000042, 0x00000042, 0x0000007c, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x00000000, 0x00000000, 0x00000c07,0x00000000, 0x0000001c, 0x00000022, 0x00000020, 0x00000020, 0x0000001c, 0x00000002, 0x00000002, 0x00000022, 0x0000001c, 0x00000000, 0x00000000, 0x00000c07,0x00000000, 0x0000003e, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000000, 0x00000000, 0x00000c08,0x00000000, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x00000042, 0x0000003c, 0x00000000, 0x00000000, 0x00000c07,0x00000000, 0x00000041, 0x00000041, 0x00000022, 0x00000022, 0x00000022, 0x00000014, 0x00000014, 0x00000008, 0x00000008, 0x00000000, 0x00000000, 0x00000c0b,0x00000000, 0x00000401, 0x00000401, 0x00000222, 0x00000222, 0x00000222, 0x00000154, 0x00000154, 0x00000088, 0x00000088, 0x00000000, 0x00000000, 0x00000c07,0x00000000, 0x00000041, 0x00000041, 0x00000022, 0x00000014, 0x00000008, 0x00000014, 0x00000022, 0x00000041, 0x00000041, 0x00000000, 0x00000000, 0x00000c07,0x00000000, 0x00000041, 0x00000041, 0x00000022, 0x00000014, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000000, 0x00000000, 0x00000c07,0x00000000, 0x0000007f, 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x00000020, 0x00000040, 0x0000007f, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000003, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000003, 0x00000c05,0x00000000, 0x00000008, 0x00000008, 0x00000008, 0x00000004, 0x00000004, 0x00000002, 0x00000002, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000003, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000003, 0x00000c06,0x00000004, 0x0000000a, 0x00000011, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000003f, 0x00000c03,0x00000000, 0x00000002, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000e, 0x00000001, 0x0000000f, 0x00000011, 0x00000011, 0x0000000f, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000010, 0x00000010, 0x00000010, 0x0000001e, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x0000001e, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000e, 0x00000011, 0x00000010, 0x00000010, 0x00000011, 0x0000000e, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x0000000f, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x0000000f, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000e, 0x00000011, 0x0000001f, 0x00000010, 0x00000011, 0x0000000e, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000001, 0x00000002, 0x00000002, 0x00000003, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000f, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x0000000f, 0x00000001, 0x0000001e, 0x00000c06,0x00000000, 0x00000010, 0x00000010, 0x00000010, 0x00000016, 0x00000019, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x00000000, 0x00000000, 0x00000c02,0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000c02,0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000c06,0x00000000, 0x00000010, 0x00000010, 0x00000010, 0x00000012, 0x00000014, 0x00000018, 0x00000014, 0x00000012, 0x00000011, 0x00000000, 0x00000000, 0x00000c02,0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000c08,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000076, 0x00000049, 0x00000049, 0x00000049, 0x00000049, 0x00000049, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000016, 0x00000019, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000e, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x0000000e, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000001e, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x0000001e, 0x00000010, 0x00000010, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000f, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x0000000f, 0x00000001, 0x00000001, 0x00000c03,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000000, 0x00000000, 0x00000c05,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00000009, 0x00000004, 0x00000002, 0x00000009, 0x00000006, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000002, 0x00000002, 0x00000003, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000001, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x00000013, 0x0000000d, 0x00000000, 0x00000000, 0x00000c06,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000011, 0x00000011, 0x0000000a, 0x0000000a, 0x00000004, 0x00000004, 0x00000000, 0x00000000, 0x00000c08,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000049, 0x00000049, 0x00000055, 0x00000055, 0x00000022, 0x00000022, 0x00000000, 0x00000000, 0x00000c05,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000009, 0x00000009, 0x00000006, 0x00000006, 0x00000009, 0x00000009, 0x00000000, 0x00000000, 0x00000c05,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000009, 0x00000009, 0x00000009, 0x00000009, 0x00000006, 0x00000004, 0x00000004, 0x00000018, 0x00000c05,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000f, 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x0000000f, 0x00000000, 0x00000000, 0x00000c04,0x00000001, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000004, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000001, 0x00000000, 0x00000c02,0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000c04,0x00000004, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000001, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000004, 0x00000000, 0x00000c07,0x00000000, 0x00000000, 0x00000019, 0x00000026, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000c03,0x00000000, 0x00000000, 0x00000007, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0x00000007, 0x00000000, 0x00000000, }; // 128 rows, one for each ascii character 0 to 127 // first long is 0000HHWW where HH is the height in hex and WW is the width in hex unsigned long courier10_font[2048] = { 0x00000f00,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f00,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f00,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f00,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f00,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f00,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x0000006c, 0x0000006c, 0x00000048, 0x00000048, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000024, 0x00000024, 0x00000048, 0x000000fc, 0x00000048, 0x00000048, 0x000000fc, 0x00000048, 0x00000090, 0x00000090, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000010, 0x00000038, 0x00000048, 0x00000040, 0x00000030, 0x00000008, 0x00000048, 0x00000070, 0x00000010, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000040, 0x000000a0, 0x00000040, 0x00000018, 0x000000e0, 0x00000010, 0x00000028, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000001c, 0x00000020, 0x00000020, 0x00000030, 0x00000054, 0x00000048, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000008, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000008, 0x00000008, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000040, 0x00000040, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000040, 0x00000040, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000010, 0x0000007c, 0x00000010, 0x00000028, 0x00000028, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000010, 0x000000fe, 0x00000010, 0x00000010, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000030, 0x00000020, 0x00000060, 0x00000040, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000fc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000030, 0x00000030, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000008, 0x00000008, 0x00000010, 0x00000010, 0x00000020, 0x00000020, 0x00000040, 0x00000040, 0x00000080, 0x00000080, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000078, 0x00000084, 0x00000084, 0x00000084, 0x00000084, 0x00000084, 0x00000084, 0x00000078, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000010, 0x00000070, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x0000007c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000070, 0x00000088, 0x00000008, 0x00000010, 0x00000020, 0x00000040, 0x00000088, 0x000000f8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000070, 0x00000088, 0x00000008, 0x00000030, 0x00000008, 0x00000008, 0x00000088, 0x00000070, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000018, 0x00000028, 0x00000048, 0x00000048, 0x000000fc, 0x00000008, 0x00000008, 0x0000001c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x0000007c, 0x00000040, 0x00000040, 0x00000078, 0x00000004, 0x00000004, 0x00000084, 0x00000078, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x0000001c, 0x00000020, 0x00000040, 0x00000078, 0x00000044, 0x00000044, 0x00000044, 0x00000038, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000fc, 0x00000084, 0x00000004, 0x00000008, 0x00000008, 0x00000010, 0x00000010, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000078, 0x00000084, 0x00000084, 0x00000078, 0x00000084, 0x00000084, 0x00000084, 0x00000078, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000078, 0x00000084, 0x00000084, 0x00000084, 0x0000007c, 0x00000004, 0x00000008, 0x000000f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000030, 0x00000030, 0x00000000, 0x00000000, 0x00000030, 0x00000030, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000030, 0x00000030, 0x00000000, 0x00000000, 0x00000030, 0x00000060, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, 0x00000018, 0x00000020, 0x000000c0, 0x00000020, 0x00000018, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000fc, 0x00000000, 0x000000fc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000080, 0x00000060, 0x00000010, 0x0000000c, 0x00000010, 0x00000060, 0x00000080, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000038, 0x00000044, 0x00000004, 0x00000004, 0x00000008, 0x00000010, 0x00000000, 0x00000030, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000070, 0x00000088, 0x00000088, 0x00000098, 0x000000a8, 0x000000a8, 0x00000098, 0x00000080, 0x00000088, 0x00000070, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000030, 0x00000010, 0x00000028, 0x00000028, 0x00000028, 0x00000038, 0x00000044, 0x000000ee, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000f8, 0x00000044, 0x00000044, 0x00000078, 0x00000044, 0x00000044, 0x00000044, 0x000000f8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x0000003c, 0x00000044, 0x00000080, 0x00000080, 0x00000080, 0x00000080, 0x00000044, 0x00000038, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000f0, 0x00000048, 0x00000044, 0x00000044, 0x00000044, 0x00000044, 0x00000048, 0x000000f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000fc, 0x00000044, 0x00000050, 0x00000070, 0x00000050, 0x00000040, 0x00000044, 0x000000fc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000fc, 0x00000044, 0x00000050, 0x00000070, 0x00000050, 0x00000040, 0x00000040, 0x000000e0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x0000003c, 0x00000044, 0x00000080, 0x00000080, 0x0000008e, 0x00000084, 0x00000044, 0x00000038, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000ee, 0x00000044, 0x00000044, 0x0000007c, 0x00000044, 0x00000044, 0x00000044, 0x000000ee, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x0000007c, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x0000007c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x0000003c, 0x00000008, 0x00000008, 0x00000008, 0x00000088, 0x00000088, 0x00000088, 0x00000070, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000ee, 0x00000044, 0x00000048, 0x00000050, 0x00000070, 0x00000048, 0x00000044, 0x000000e6, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000e0, 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000044, 0x00000044, 0x000000fc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000ee, 0x0000006c, 0x0000006c, 0x00000054, 0x00000054, 0x00000044, 0x00000044, 0x000000ee, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000001ce, 0x000000c4, 0x000000a4, 0x000000a4, 0x00000094, 0x00000094, 0x0000008c, 0x000001cc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000038, 0x00000044, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000044, 0x00000038, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000f8, 0x00000044, 0x00000044, 0x00000044, 0x00000078, 0x00000040, 0x00000040, 0x000000e0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000038, 0x00000044, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000044, 0x00000038, 0x0000003e, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000f8, 0x00000044, 0x00000044, 0x00000044, 0x00000078, 0x00000048, 0x00000044, 0x000000e2, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000074, 0x0000008c, 0x00000080, 0x00000078, 0x00000004, 0x00000004, 0x000000c4, 0x000000b8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000092, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000038, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000ee, 0x00000044, 0x00000044, 0x00000044, 0x00000044, 0x00000044, 0x00000044, 0x00000038, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000001ce, 0x00000084, 0x00000084, 0x00000048, 0x00000048, 0x00000048, 0x00000030, 0x00000030, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000ee, 0x00000044, 0x00000044, 0x00000054, 0x00000054, 0x00000054, 0x00000054, 0x00000028, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000ee, 0x00000044, 0x00000028, 0x00000010, 0x00000010, 0x00000028, 0x00000044, 0x000000ee, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000ee, 0x00000044, 0x00000028, 0x00000028, 0x00000010, 0x00000010, 0x00000010, 0x00000038, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x0000007c, 0x00000044, 0x00000008, 0x00000010, 0x00000010, 0x00000020, 0x00000044, 0x0000007c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000038, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000038, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000080, 0x00000080, 0x00000040, 0x00000040, 0x00000020, 0x00000020, 0x00000020, 0x00000010, 0x00000010, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000e0, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x000000e0, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000020, 0x00000020, 0x00000050, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001fe, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000078, 0x00000084, 0x0000007c, 0x00000084, 0x0000008c, 0x00000076, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000180, 0x00000080, 0x000000b8, 0x000000c4, 0x00000084, 0x00000084, 0x000000c4, 0x000001b8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000074, 0x0000008c, 0x00000080, 0x00000080, 0x00000084, 0x00000078, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x0000000c, 0x00000004, 0x00000074, 0x0000008c, 0x00000084, 0x00000084, 0x0000008c, 0x00000076, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000078, 0x00000084, 0x000000fc, 0x00000080, 0x00000080, 0x0000007c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x0000001c, 0x00000020, 0x000000fc, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x000000fc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000076, 0x0000008c, 0x00000084, 0x00000084, 0x0000008c, 0x00000074, 0x00000004, 0x00000078, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000c0, 0x00000040, 0x00000058, 0x00000064, 0x00000044, 0x00000044, 0x00000044, 0x000000ee, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0x00000070, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x0000007c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0x00000078, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x000000f0, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x000000c0, 0x00000040, 0x0000005e, 0x00000048, 0x00000070, 0x00000050, 0x00000048, 0x000000ce, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000030, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x0000007c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001a4, 0x000000da, 0x00000092, 0x00000092, 0x00000092, 0x000001da, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000d8, 0x00000064, 0x00000044, 0x00000044, 0x00000044, 0x000000ee, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000078, 0x00000084, 0x00000084, 0x00000084, 0x00000084, 0x00000078, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000d8, 0x00000064, 0x00000044, 0x00000044, 0x00000044, 0x00000078, 0x00000040, 0x000000e0, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000076, 0x0000008c, 0x00000084, 0x00000084, 0x0000008c, 0x00000074, 0x00000004, 0x0000000e, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000dc, 0x00000060, 0x00000040, 0x00000040, 0x00000040, 0x000000f8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000007c, 0x00000084, 0x00000078, 0x00000004, 0x00000084, 0x000000f8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0x000000f8, 0x00000040, 0x00000040, 0x00000040, 0x00000044, 0x00000038, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000cc, 0x00000044, 0x00000044, 0x00000044, 0x0000004c, 0x00000036, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001ce, 0x00000084, 0x00000048, 0x00000048, 0x00000030, 0x00000030, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000ee, 0x00000044, 0x00000054, 0x00000054, 0x00000054, 0x00000028, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000cc, 0x00000048, 0x00000030, 0x00000030, 0x00000048, 0x000000cc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000ee, 0x00000044, 0x00000044, 0x00000028, 0x00000028, 0x00000010, 0x00000010, 0x00000070, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000007c, 0x00000048, 0x00000010, 0x00000020, 0x00000044, 0x0000007c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000010, 0x00000020, 0x00000020, 0x00000020, 0x00000040, 0x00000020, 0x00000020, 0x00000020, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000040, 0x00000020, 0x00000020, 0x00000020, 0x00000010, 0x00000020, 0x00000020, 0x00000020, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0x00000f09,0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000064, 0x00000098, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000f08,0x00000000, 0x00000000, 0x00000000, 0x000000fe, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x00000082, 0x000000fe, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
Comments
There are some spare cogs as some things are loading cogs, doing specific tasks then unloading cogs to free up the cog. So there is lots of spare capacity.
Some code is not as fast as one would like, but for every bit of slow C code, there would be a faster solution in pasm. Eg rendering the text in a text box could be done in pasm by passing a pointer to the text, and a pointer to the font, and the x and y coordinates. Load a cog, render the text, then unload the cog.
Multiple reloads of cogs are a different way of using the propeller. I'm still getting used to using the propeller in this way. It is quite powerful, eg at the beginning the program starts with a white on blue text driver, unloads those 2 video cog drivers and loads in a 64 color graphics driver for a brief 2 second demo, then unloads that and loads in the gray screen driver.
Everyone: This was great when Drac showed me this working at Easter when I was over there. He has now added some other features. This is the beginning of a real Prop hosted computer (for those of us who are bent this way)
So was all that Latin the result of brain crash from having to type in all those Hex numbers ??? I remember typing in pages and pages of Hex into a C64, and then wondering why !
I have just thought, now that I have upgraded the KBD Dracblade to 3 latches, I could try it on that one (minus the LCD bits)
The Latin goes back to the 1500's and was used then for the same reason it is used here - to demonstrate a font without the words themselves being distracting. http://www.lipsum.com/ (the text itself is over 2000 years old). Plus I like Latin. Lots of medical words are Latin (or Greek) in origin.
Next project is writing the code to display a window, then restore the pixels that were behind the window.
Any board with external memory and a display ought to work. And any help with this little project would be most appreciated!
Ross.
unsigned long pingroup = 2; // pins 16 to 23
and ditto for the mouse.
But as you point out, mouse and keyboard at the same time is not possible. And a GUI probably needs both, though maybe a mouse only solution might be possible in some applications.
This also highlights something very clever with Catalina and external memory. The memory buffer for a 320x240 gray scale screen is 19200 bytes and with all the C stack code, there is no room left to store the background, which could be up to another 19200 bytes in size.
No matter - in Catalina you can define arrays at the beginning of the program, and these end up in external ram. Store the background to an array in external ram, then when it is finished with that window, restore the background.
There are a few little traps along the way - eg I need to blank the mouse prior to drawing the window and restoring the background. But overall this seems to be working very well.
Who knows, soon we might be able to load and save that text as a .txt file on the sd card...
And this describes the patent. If you just kept a full screen buffer for the full background and a separate buffer for the contents of each window, but no separate buffers for the area behind a window you can avoid the patent.
Ah, ok, well there are other ways to do this, eg by storing the data in a higher level tokenized form.
Mind you, I always thought patents did not apply when the idea was obvious. Storing the pixels seems obvious, but maybe that is just me. So I'm off to the patent office now to register a patent on the wheel. Or more particularly, my special three sided wheel. It has one less bump per revolution than the old four sided one. *grin*
Yea, I dislike software patents as well. 99% of them seem to be something obvious.
Though this is the reason that no one uses this very simple method in GUIs that are widely available. I find it interesting that this patent (as I understand) was filed the same week that rumors began that Apple was going to be using this in Copland OS to improve speed. If it is a software wheel, you just might get away with it .
(and a patent on backing store is silly, given it's been done since the early days of computing)
I'll bet that patent isn't just backing store. That would be very basic and obvious. Bet they've got a data structure or something that facilitates doing that in a fast way, which would not be obvious.
I would be interested to know the date the patent was filed because the ProDos for the Apple //e used a form of text windowing and I bet they stored the pixels it replaced. Also, Apple had their GUI for Lisa well before Microsoft was into windows (and Bill had access to their source) and remember, Apple borrowed these ideas from Xerox Parc IIRC. Seems to me that if the patent is for what has been described, it was already being used. There was also the Perc that had a windowing system and mouse.
Is there no expiry date on a software patent?
Do not quote me: I think that the patent was filed in 1997.
As far as Lisa, Macintosh System Software/Mac OS, GEM, X, AmigaDOS/Amiga OS, all versions of MS-Windows, etc:
None of these used this method, most of them redraw any field that was under or overlapped by the window in question. In some cases the contents of the background, and the contents of all Windows, Menus, Icons, Sprites were stored in buffers in memory so as to speed up the redraw process, though no buffer for the area behind a window. I do note one exception (that I know of), that preceded the MS-Patent, that is that DR-GEM would save the area under a menu before it drew the menu and then redraw it (and it treated static [no tittle] dialog boxes as menus, in this regard [though only one was allowed at any given time]).
Sad, but dead on...
I must thank you. You have inspired me to work on my first PropBASIC program some more (a simple memory efficient windowing system [GUI] using LMM). So when I am board (happens often when trying to solve a problem on another project) I will continue to work on that. The idea is something along the lines of DR-GEM 1.3, with a look more like TOS 4.0.x GEM, though with a limit of 15 open windows, and 1 menu (the desktop counts as a window). For this I am using simple rectangular bounds checking to see what needs to be redrawn (this was common in earlier GUIs as it saves memory).
That is good to know, because that is how it is working. One full screen buffer for the entire background so that will avoid the patent. It is simpler too if there is only one 'layer' of windows.
@davidsaunders, your LMM idea sounds interesting. I'm writing in C because it is simpler for me to 'think' in C, but there is a lot of scope for speeding up code by moving portions to assembly/LMM.