aboutsummaryrefslogtreecommitdiff
path: root/code/src
diff options
context:
space:
mode:
authortslil clingman <>2021-09-29 14:33:21 -0400
committertslil clingman <>2021-09-29 14:33:21 -0400
commit328474f555ab0958e0921c7d04d8d7dbb1789bc4 (patch)
tree422a4afe050471fde632d6075a983f7d588ea829 /code/src
Diffstat (limited to 'code/src')
-rw-r--r--code/src/TinyI2CMaster.c133
-rw-r--r--code/src/TinyI2CMaster.h71
-rw-r--r--code/src/font.h109
-rw-r--r--code/src/main.c133
-rw-r--r--code/src/raw/0.xpm276
-rw-r--r--code/src/raw/1.xpm276
-rw-r--r--code/src/raw/2.xpm276
-rw-r--r--code/src/raw/3.xpm276
-rw-r--r--code/src/raw/4.xpm276
-rw-r--r--code/src/raw/5.xpm276
-rw-r--r--code/src/raw/6.xpm276
-rw-r--r--code/src/raw/7.xpm276
-rw-r--r--code/src/raw/8.xpm276
-rw-r--r--code/src/raw/9.xpm276
-rw-r--r--code/src/raw/process.awk21
15 files changed, 3227 insertions, 0 deletions
diff --git a/code/src/TinyI2CMaster.c b/code/src/TinyI2CMaster.c
new file mode 100644
index 0000000..3ec6b64
--- /dev/null
+++ b/code/src/TinyI2CMaster.c
@@ -0,0 +1,133 @@
+/* Tiny I2C
+
+ David Johnson-Davies - www.technoblogy.com - 14th April 2018
+
+ CC BY 4.0
+ Licensed under a Creative Commons Attribution 4.0 International license:
+ http://creativecommons.org/licenses/by/4.0/
+*/
+
+#include "TinyI2CMaster.h"
+
+// Constants
+// Prepare register value to: Clear flags, and set USI to shift 8 bits i.e. count 16 clock edges.
+static const uint8_t USISR_8bit = 1<<USISIF | 1<<USIOIF | 1<<USIPF | 1<<USIDC | 0x0<<USICNT0;
+// Prepare register value to: Clear flags, and set USI to shift 1 bit i.e. count 2 clock edges.
+static const uint8_t USISR_1bit = 1<<USISIF | 1<<USIOIF | 1<<USIPF | 1<<USIDC | 0xE<<USICNT0;
+
+
+// Minimal Tiny I2C Routines **********************************************
+
+uint8_t i2c_transfer (uint8_t data) {
+ USISR = data; // Set USISR according to data.
+ // Prepare clocking.
+ data = 0<<USISIE | 0<<USIOIE | // Interrupts disabled
+ 1<<USIWM1 | 0<<USIWM0 | // Set USI in Two-wire mode.
+ 1<<USICS1 | 0<<USICS0 | 1<<USICLK | // Software clock strobe as source.
+ 1<<USITC; // Toggle Clock Port.
+ do {
+ DELAY_T2TWI;
+ USICR = data; // Generate positive SCL edge.
+ while (!(PIN_USI_CL & 1<<PIN_USI_SCL)); // Wait for SCL to go high.
+ DELAY_T4TWI;
+ USICR = data; // Generate negative SCL edge.
+ } while (!(USISR & 1<<USIOIF)); // Check for transfer complete.
+
+ DELAY_T2TWI;
+ data = USIDR; // Read out data.
+ USIDR = 0xFF; // Release SDA.
+ DDR_USI |= (1<<PIN_USI_SDA); // Enable SDA as output.
+
+ return data; // Return the data from the USIDR
+}
+
+void i2c_init () {
+ PORT_USI |= 1<<PIN_USI_SDA; // Enable pullup on SDA.
+ PORT_USI_CL |= 1<<PIN_USI_SCL; // Enable pullup on SCL.
+
+ DDR_USI_CL |= 1<<PIN_USI_SCL; // Enable SCL as output.
+ DDR_USI |= 1<<PIN_USI_SDA; // Enable SDA as output.
+
+ USIDR = 0xFF; // Preload data register with "released level" data.
+ USICR = 0<<USISIE | 0<<USIOIE | // Disable Interrupts.
+ 1<<USIWM1 | 0<<USIWM0 | // Set USI in Two-wire mode.
+ 1<<USICS1 | 0<<USICS0 | 1<<USICLK | // Software stobe as counter clock source
+ 0<<USITC;
+ USISR = 1<<USISIF | 1<<USIOIF | 1<<USIPF | 1<<USIDC | // Clear flags,
+ 0x0<<USICNT0; // and reset counter.
+}
+
+uint8_t i2c_read (void) {
+ if ((I2Ccount != 0) && (I2Ccount != -1)) I2Ccount--;
+
+ /* Read a byte */
+ DDR_USI &= ~(1<<PIN_USI_SDA); // Enable SDA as input.
+ uint8_t data = i2c_transfer(USISR_8bit);
+
+ /* Prepare to generate ACK (or NACK in case of End Of Transmission) */
+ if (I2Ccount == 0) USIDR = 0xFF; else USIDR = 0x00;
+ i2c_transfer(USISR_1bit); // Generate ACK/NACK.
+
+ return data; // Read successfully completed
+}
+
+uint8_t i2c_readLast (void) {
+ I2Ccount = 0;
+ return i2c_read();
+}
+
+uint8_t i2c_write (uint8_t data) {
+ /* Write a byte */
+ PORT_USI_CL &= ~(1<<PIN_USI_SCL); // Pull SCL LOW.
+ USIDR = data; // Setup data.
+ i2c_transfer(USISR_8bit); // Send 8 bits on bus.
+
+ /* Clock and verify (N)ACK from slave */
+ DDR_USI &= ~(1<<PIN_USI_SDA); // Enable SDA as input.
+ if (i2c_transfer(USISR_1bit) & 1<<TWI_NACK_BIT) return 0;
+
+ return 1; // Write successfully completed
+}
+
+// Start transmission by sending address
+uint8_t i2c_start (uint8_t address, int8_t readcount) {
+ if (readcount != 0) { I2Ccount = readcount; readcount = 1; }
+ uint8_t addressRW = address<<1 | readcount;
+
+ /* Release SCL to ensure that (repeated) Start can be performed */
+ PORT_USI_CL |= 1<<PIN_USI_SCL; // Release SCL.
+ while (!(PIN_USI_CL & 1<<PIN_USI_SCL)); // Verify that SCL becomes high.
+#ifdef TWI_FAST_MODE
+ DELAY_T4TWI;
+#else
+ DELAY_T2TWI;
+#endif
+
+ /* Generate Start Condition */
+ PORT_USI &= ~(1<<PIN_USI_SDA); // Force SDA LOW.
+ DELAY_T4TWI;
+ PORT_USI_CL &= ~(1<<PIN_USI_SCL); // Pull SCL LOW.
+ PORT_USI |= 1<<PIN_USI_SDA; // Release SDA.
+
+ if (!(USISR & 1<<USISIF)) return 0;
+
+ /*Write address */
+ PORT_USI_CL &= ~(1<<PIN_USI_SCL); // Pull SCL LOW.
+ USIDR = addressRW; // Setup data.
+ i2c_transfer(USISR_8bit); // Send 8 bits on bus.
+
+ /* Clock and verify (N)ACK from slave */
+ DDR_USI &= ~(1<<PIN_USI_SDA); // Enable SDA as input.
+ if (i2c_transfer(USISR_1bit) & 1<<TWI_NACK_BIT) return 0; // No ACK
+
+ return 1; // Start successfully completed
+}
+
+void i2c_stop (void) {
+ PORT_USI &= ~(1<<PIN_USI_SDA); // Pull SDA low.
+ PORT_USI_CL |= 1<<PIN_USI_SCL; // Release SCL.
+ while (!(PIN_USI_CL & 1<<PIN_USI_SCL)); // Wait for SCL to go high.
+ DELAY_T4TWI;
+ PORT_USI |= 1<<PIN_USI_SDA; // Release SDA.
+ DELAY_T2TWI;
+}
diff --git a/code/src/TinyI2CMaster.h b/code/src/TinyI2CMaster.h
new file mode 100644
index 0000000..f131936
--- /dev/null
+++ b/code/src/TinyI2CMaster.h
@@ -0,0 +1,71 @@
+/* Tiny I2C
+
+ David Johnson-Davies - www.technoblogy.com - 14th April 2018
+
+ CC BY 4.0
+ Licensed under a Creative Commons Attribution 4.0 International license:
+ http://creativecommons.org/licenses/by/4.0/
+*/
+
+#ifndef TinyI2CMaster_h
+#define TinyI2CMaster_h
+
+#include <stdint.h>
+#include <avr/io.h>
+#include <util/delay.h>
+
+// ATTiny84 specifics
+
+/* #define DDR_USI_CL DDR_USI */
+/* #define DDR_USI DDRB */
+
+/* #define PORT_USI_SDA PORTB0 */
+/* #define PORT_USI_SCL PORTB2 */
+/* #define PORT_USI_CL PORT_USI */
+/* #define PORT_USI PORTB */
+
+/* #define PIN_USI_SDA PINB0 */
+/* #define PIN_USI_SCL PINB2 */
+/* #define PIN_USI_CL PIN_USI */
+/* #define PIN_USI PINB */
+
+// ATTiny24 specifics
+#define DDR_USI_CL DDR_USI
+#define DDR_USI DDRA
+
+#define PORT_USI_SDA PORTA6
+#define PORT_USI_SCL PORTA4
+#define PORT_USI_CL PORT_USI
+#define PORT_USI PORTA
+
+#define PIN_USI_SCL PINA4
+#define PIN_USI_SDA PINA6
+#define USI_START_VECTOR USI_START_vect
+#define USI_OVERFLOW_VECTOR USI_OVF_vect
+#define PIN_USI_CL PIN_USI
+#define PIN_USI PINA
+
+// Defines
+#define TWI_FAST_MODE
+
+#ifdef TWI_FAST_MODE // TWI FAST mode timing limits. SCL = 100-400kHz
+#define DELAY_T2TWI (_delay_us(2)) // >1.3us
+#define DELAY_T4TWI (_delay_us(1)) // >0.6us
+#else // TWI STANDARD mode timing limits. SCL <= 100kHz
+#define DELAY_T2TWI (_delay_us(5)) // >4.7us
+#define DELAY_T4TWI (_delay_us(4)) // >4.0us
+#endif
+
+#define TWI_NACK_BIT 0 // Bit position for (N)ACK bit.
+
+void i2c_init(void);
+uint8_t i2c_read(void);
+uint8_t i2c_readLast(void);
+uint8_t i2c_write(uint8_t data);
+uint8_t i2c_start(uint8_t address, int8_t readcount);
+void i2c_stop(void);
+
+static int8_t I2Ccount;
+uint8_t transfer(uint8_t data);
+
+#endif
diff --git a/code/src/font.h b/code/src/font.h
new file mode 100644
index 0000000..08300f7
--- /dev/null
+++ b/code/src/font.h
@@ -0,0 +1,109 @@
+/*
+ Copyright 2021, tslil clingman
+
+ This program is free software: you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation, either version 3 of the License.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+#include <avr/pgmspace.h>
+
+/*
+ 4x4 pixel blocks and 64x64 pixel blocks means 16x16 resolution
+ These are packed 8 into a byte, so 2 * 16 * 10 = 320 bytes
+
+ The packing is as follows: b7 b6 b5 b4 b3 b2 b1 b0
+
+ --> b0 b2 b4 b6
+ b1 b3 b5 b7
+*/
+
+
+PROGMEM const uint8_t font[320] = {
+0x0, 0x50, 0x5, 0x0,
+0x40, 0xA, 0xA0, 0x1,
+0x90, 0x0, 0x0, 0x6,
+0x30, 0x0, 0x0, 0xC,
+0x30, 0x0, 0x0, 0xC,
+0x60, 0x0, 0x0, 0x9,
+0x80, 0x5, 0x50, 0x2,
+0x0, 0xA0, 0xA, 0x0,
+0x0, 0x0, 0x1, 0x0,
+0x0, 0x90, 0x3, 0x0,
+0x0, 0x8, 0x3, 0x0,
+0x0, 0x0, 0x3, 0x0,
+0x0, 0x0, 0x3, 0x0,
+0x0, 0x0, 0x3, 0x0,
+0x0, 0x0, 0x3, 0x0,
+0x0, 0x0, 0x2, 0x0,
+0x0, 0x50, 0x1, 0x0,
+0x0, 0x8, 0x18, 0x0,
+0x0, 0x0, 0x60, 0x0,
+0x0, 0x0, 0xC0, 0x0,
+0x0, 0x0, 0x90, 0x0,
+0x0, 0x0, 0x24, 0x0,
+0x0, 0xA4, 0x2, 0x0,
+0x0, 0xA8, 0xAA, 0x0,
+0x0, 0x50, 0x5, 0x0,
+0x0, 0x0, 0x60, 0x0,
+0x0, 0x0, 0x90, 0x0,
+0x0, 0xA0, 0x1A, 0x0,
+0x0, 0x0, 0xC0, 0x0,
+0x0, 0x0, 0xC0, 0x0,
+0x0, 0x0, 0x90, 0x0,
+0x0, 0xA0, 0xA, 0x0,
+0x0, 0x0, 0x4, 0x0,
+0x0, 0x40, 0xE, 0x0,
+0x0, 0x90, 0xC, 0x0,
+0x0, 0x24, 0xC, 0x0,
+0x0, 0x9, 0xC, 0x0,
+0x0, 0xAA, 0x2E, 0x0,
+0x0, 0x0, 0xC, 0x0,
+0x0, 0x0, 0x8, 0x0,
+0x0, 0x0, 0x0, 0x0,
+0x0, 0xD0, 0xAA, 0x0,
+0x0, 0x70, 0x15, 0x0,
+0x0, 0x0, 0xC0, 0x0,
+0x0, 0x0, 0x0, 0x3,
+0x0, 0x0, 0x0, 0x3,
+0x0, 0x0, 0xC0, 0x0,
+0x0, 0xA0, 0x2A, 0x0,
+0x0, 0x0, 0x0, 0x0,
+0x0, 0x40, 0xA, 0x0,
+0x0, 0x24, 0x0, 0x0,
+0x0, 0x53, 0x15, 0x0,
+0x0, 0xB, 0x80, 0x1,
+0x0, 0x3, 0x0, 0x3,
+0x0, 0x6, 0x40, 0x2,
+0x0, 0xA0, 0x2A, 0x0,
+0x0, 0x55, 0x55, 0x0,
+0x0, 0x3, 0x90, 0x0,
+0x0, 0x0, 0x30, 0x0,
+0x0, 0x0, 0xC, 0x0,
+0x0, 0x0, 0x9, 0x0,
+0x0, 0x0, 0x3, 0x0,
+0x0, 0xC0, 0x0, 0x0,
+0x0, 0x80, 0x0, 0x0,
+0x0, 0x50, 0x5, 0x0,
+0x0, 0xC, 0x30, 0x0,
+0x0, 0xC, 0x30, 0x0,
+0x0, 0xA5, 0x5A, 0x0,
+0xC0, 0x0, 0x0, 0x3,
+0xC0, 0x0, 0x0, 0x3,
+0x80, 0x1, 0x40, 0x2,
+0x0, 0xA8, 0x2A, 0x0,
+0x0, 0x0, 0x0, 0x0,
+0x0, 0xA4, 0x1A, 0x0,
+0x0, 0x3, 0xC0, 0x0,
+0x0, 0x3, 0xC0, 0x0,
+0x0, 0x58, 0xB5, 0x0,
+0x0, 0x0, 0x24, 0x0,
+0x0, 0x40, 0x2, 0x0,
+0x0, 0x80, 0x0, 0x0};
diff --git a/code/src/main.c b/code/src/main.c
new file mode 100644
index 0000000..de2d35f
--- /dev/null
+++ b/code/src/main.c
@@ -0,0 +1,133 @@
+/*
+ Copyright 2021, tslil clingman
+
+ This program is free software: you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation, either version 3 of the License.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+#include <stdint.h>
+#include <avr/pgmspace.h>
+#include <util/delay.h>
+
+#include "TinyI2CMaster.h"
+
+#include "font.h"
+
+#define DISP1_ADDR 0x3C
+#define DISP2_ADDR 0x3D
+#define RTC_ADDR 0x68
+
+// -----------------------------------------------------------------------------
+// SSD1306 driver
+
+#define INIT_LEN 7
+PROGMEM const uint8_t init[INIT_LEN] = {0xAE, // display off
+ 0x8D, // charge pump
+ 0x14,
+ 0xAF, // display on
+ 0x20,
+ 0xA6, // Normal display
+ 0x02 // page address mode
+};
+
+void disp_init(const uint8_t addr, const uint8_t upside_down) {
+ i2c_start(addr,0);
+ i2c_write(0x00);
+ for (uint8_t k = 0; k<INIT_LEN; k++)
+ i2c_write(pgm_read_byte(&init[k]));
+ if (upside_down) {
+ i2c_write(0xA1);
+ i2c_write(0xC8);
+ }
+ i2c_stop();
+}
+
+void disp_draw_digit(const uint8_t addr, const uint8_t d, const uint8_t off) {
+ for (uint8_t y=0; y<8; y++, i2c_stop()) {
+ // Set cursor
+ i2c_start(addr,0);
+ i2c_write(0x00);
+ // Page select
+ i2c_write(0xB0|y); // 0<y<8 anyway
+ // Column select specialised to halves of screen
+ i2c_write(0); // 0..15, lower bits
+ i2c_write(0x10|off); // 0x10 .. 0x14, upper bits
+ // Prepare to draw
+ i2c_start(addr,0);
+ i2c_write(0x40);
+ for (uint8_t x=0; x<4; x++) {
+ // Read the byte
+ uint8_t b = pgm_read_byte(&font[d*32+(y*4+x)]);
+ // Unpack and draw it
+ for (uint8_t j=0; j<4; j++, b>>=2)
+ for (uint8_t l=0; l<4; l++)
+ i2c_write(((b&1)?0xF0:0x00)|
+ ((b&2)?0x0F:0x00));
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+// Interface
+
+uint8_t bcd_to_dec(uint8_t k) { return (((k)/16)*10) + ((k)%16); }
+
+uint8_t dec_to_bcd(uint8_t k) { return (((k)/10)*16) + ((k)%10); }
+
+int main(void) {
+ // Init screens
+ i2c_init();
+ disp_init(DISP1_ADDR,1);
+ disp_init(DISP2_ADDR,0);
+ // Setup input pullups
+ DDRA = ~(_BV(DDA0) | _BV(DDA1));
+ PORTA = _BV(DDA0) | _BV(DDA1);
+ // Tracking state
+ uint8_t input = 0, hours = 99, minutes = 99;
+ while(1) {
+ // Increase hours?
+ if (!(PINA&_BV(DDA0))) {
+ if ((hours+=1)>23) hours=0;
+ input = 1;
+ }
+ // Increase minutes?
+ if (!(PINA&_BV(DDA1))) {
+ if ((minutes+=1)>59) minutes=0;
+ input = 1;
+ }
+ // Store changes
+ if (input) {
+ input = 0;
+ i2c_start(RTC_ADDR,0);
+ i2c_write(0);
+ i2c_write(0); // Seconds
+ i2c_write(dec_to_bcd(minutes));
+ i2c_write(dec_to_bcd(hours));
+ i2c_stop();
+ }
+ // Draw minutes
+ disp_draw_digit(DISP1_ADDR, (minutes/10)%10, 0);
+ disp_draw_digit(DISP1_ADDR, (minutes%10), 4);
+ // Draw hours
+ disp_draw_digit(DISP2_ADDR, (hours/10)%10, 0);
+ disp_draw_digit(DISP2_ADDR, (hours%10), 4);
+ // Poll for update
+ i2c_start(RTC_ADDR,0);
+ i2c_write(1);
+ i2c_start(RTC_ADDR,2);
+ minutes = bcd_to_dec(i2c_read());
+ hours = bcd_to_dec(i2c_read());
+ i2c_stop();
+ // Delay
+ _delay_ms(100);
+ }
+ return 0;
+}
diff --git a/code/src/raw/0.xpm b/code/src/raw/0.xpm
new file mode 100644
index 0000000..52eb27d
--- /dev/null
+++ b/code/src/raw/0.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char *xpm_xpm[] = {
+"16 16 256 2",
+"AA c #000000",
+"BA c #FF0000",
+"CA c #00FF00",
+"DA c #FFFF00",
+"EA c #0000FF",
+"FA c #FF00FF",
+"GA c #00FFFF",
+"HA c #FFFFFF",
+"IA c #DBDBDB",
+"JA c #B6B6B6",
+"KA c #929292",
+"LA c #6D6D6D",
+"MA c #494949",
+"NA c #242424",
+"OA c #DB0000",
+"PA c #B60000",
+"QA c #920000",
+"RA c #6D0000",
+"SA c #490000",
+"TA c #240000",
+"UA c #00DB00",
+"VA c #00B600",
+"WA c #009200",
+"XA c #006D00",
+"YA c #004900",
+"ZA c #002400",
+"aA c #DBDB00",
+"bA c #B6B600",
+"cA c #929200",
+"dA c #6D6D00",
+"eA c #494900",
+"fA c #242400",
+"gA c #0000DB",
+"hA c #0000B6",
+"iA c #000092",
+"jA c #00006D",
+"kA c #000049",
+"lA c #000024",
+"mA c #DB00DB",
+"nA c #B600B6",
+"oA c #920092",
+"pA c #6D006D",
+"qA c #490049",
+"rA c #240024",
+"sA c #00DBDB",
+"tA c #00B6B6",
+"uA c #009292",
+"vA c #006D6D",
+"wA c #004949",
+"xA c #002424",
+"yA c #FFDBDB",
+"zA c #DBB6B6",
+"0A c #B69292",
+"1A c #926D6D",
+"2A c #6D4949",
+"3A c #492424",
+"4A c #FFB6B6",
+"5A c #DB9292",
+"6A c #B66D6D",
+"7A c #924949",
+"8A c #6D2424",
+"9A c #FF9292",
+"+A c #DB6D6D",
+"/A c #B64949",
+"AB c #922424",
+"BB c #FF6D6D",
+"CB c #DB4949",
+"DB c #B62424",
+"EB c #FF4949",
+"FB c #DB2424",
+"GB c #FF2424",
+"HB c #DBFFDB",
+"IB c #B6DBB6",
+"JB c #92B692",
+"KB c #6D926D",
+"LB c #496D49",
+"MB c #244924",
+"NB c #B6FFB6",
+"OB c #92DB92",
+"PB c #6DB66D",
+"QB c #499249",
+"RB c #246D24",
+"SB c #92FF92",
+"TB c #6DDB6D",
+"UB c #49B649",
+"VB c #249224",
+"WB c #6DFF6D",
+"XB c #49DB49",
+"YB c #24B624",
+"ZB c #49FF49",
+"aB c #24DB24",
+"bB c #24FF24",
+"cB c #DBDBFF",
+"dB c #B6B6DB",
+"eB c #9292B6",
+"fB c #6D6D92",
+"gB c #49496D",
+"hB c #242449",
+"iB c #B6B6FF",
+"jB c #9292DB",
+"kB c #6D6DB6",
+"lB c #494992",
+"mB c #24246D",
+"nB c #9292FF",
+"oB c #6D6DDB",
+"pB c #4949B6",
+"qB c #242492",
+"rB c #6D6DFF",
+"sB c #4949DB",
+"tB c #2424B6",
+"uB c #4949FF",
+"vB c #2424DB",
+"wB c #2424FF",
+"xB c #FFFFDB",
+"yB c #DBDBB6",
+"zB c #B6B692",
+"0B c #92926D",
+"1B c #6D6D49",
+"2B c #494924",
+"3B c #FFFFB6",
+"4B c #DBDB92",
+"5B c #B6B66D",
+"6B c #929249",
+"7B c #6D6D24",
+"8B c #FFFF92",
+"9B c #DBDB6D",
+"+B c #B6B649",
+"/B c #929224",
+"AC c #FFFF6D",
+"BC c #DBDB49",
+"CC c #B6B624",
+"DC c #FFFF49",
+"EC c #DBDB24",
+"FC c #FFFF24",
+"GC c #FFDBFF",
+"HC c #DBB6DB",
+"IC c #B692B6",
+"JC c #926D92",
+"KC c #6D496D",
+"LC c #492449",
+"MC c #FFB6FF",
+"NC c #DB92DB",
+"OC c #B66DB6",
+"PC c #924992",
+"QC c #6D246D",
+"RC c #FF92FF",
+"SC c #DB6DDB",
+"TC c #B649B6",
+"UC c #922492",
+"VC c #FF6DFF",
+"WC c #DB49DB",
+"XC c #B624B6",
+"YC c #FF49FF",
+"ZC c #DB24DB",
+"aC c #FF24FF",
+"bC c #DBFFFF",
+"cC c #B6DBDB",
+"dC c #92B6B6",
+"eC c #6D9292",
+"fC c #496D6D",
+"gC c #244949",
+"hC c #B6FFFF",
+"iC c #92DBDB",
+"jC c #6DB6B6",
+"kC c #499292",
+"lC c #246D6D",
+"mC c #92FFFF",
+"nC c #6DDBDB",
+"oC c #49B6B6",
+"pC c #249292",
+"qC c #6DFFFF",
+"rC c #49DBDB",
+"sC c #24B6B6",
+"tC c #49FFFF",
+"uC c #24DBDB",
+"vC c #24FFFF",
+"wC c #FFDBB6",
+"xC c #DBB692",
+"yC c #B6926D",
+"zC c #926D49",
+"0C c #6D4924",
+"1C c #492400",
+"2C c #FFB692",
+"3C c #DB926D",
+"4C c #B66D49",
+"5C c #924924",
+"6C c #6D2400",
+"7C c #FFB6DB",
+"8C c #DB92B6",
+"9C c #B66D92",
+"+C c #92496D",
+"/C c #6D2449",
+"AD c #490024",
+"BD c #FF92B6",
+"CD c #DB6D92",
+"DD c #B6496D",
+"ED c #922449",
+"FD c #6D0024",
+"GD c #DBB6FF",
+"HD c #B692DB",
+"ID c #926DB6",
+"JD c #6D4992",
+"KD c #49246D",
+"LD c #240049",
+"MD c #B692FF",
+"ND c #926DDB",
+"OD c #6D49B6",
+"PD c #492492",
+"QD c #24006D",
+"RD c #B6DBFF",
+"SD c #92B6DB",
+"TD c #6D92B6",
+"UD c #496D92",
+"VD c #24496D",
+"WD c #002449",
+"XD c #92B6FF",
+"YD c #6D92DB",
+"ZD c #496DB6",
+"aD c #244992",
+"bD c #00246D",
+"cD c #B6FFDB",
+"dD c #92DBB6",
+"eD c #6DB692",
+"fD c #49926D",
+"gD c #246D49",
+"hD c #004924",
+"iD c #92FFB6",
+"jD c #6DDB92",
+"kD c #49B66D",
+"lD c #249249",
+"mD c #006D24",
+"nD c #DBFFB6",
+"oD c #B6DB92",
+"pD c #92B66D",
+"qD c #6D9249",
+"rD c #496D24",
+"sD c #244900",
+"tD c #B6FF92",
+"uD c #92DB6D",
+"vD c #6DB649",
+"wD c #499224",
+"xD c #246D00",
+"yD c #FFB600",
+"zD c #DB9200",
+"0D c #B66D00",
+"1D c #924900",
+"2D c #FF00B6",
+"3D c #DB0092",
+"4D c #B6006D",
+"5D c #920049",
+"6D c #00B6FF",
+"7D c #0092DB",
+"8D c #006DB6",
+"9D c #004992",
+"+D c #000000",
+"/D c #000000",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAHAAAAAAAAAAAAA",
+"AAAAAAAAHAHAAAAAAAAAHAHAAAAAAAAA",
+"AAAAAAHAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAHAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAHAAAAAAAAAAAAAAAAAAAAAHAAAAA",
+"AAAAHAAAAAAAAAAAAAAAAAAAAAHAAAAA",
+"AAAAHAAAAAAAAAAAAAAAAAAAAAHAAAAA",
+"AAAAHAAAAAAAAAAAAAAAAAAAAAHAAAAA",
+"AAAAHAAAAAAAAAAAAAAAAAAAAAHAAAAA",
+"AAAAHAAAAAAAAAAAAAAAAAAAAAHAAAAA",
+"AAAAAAHAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAHAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAAAHAHAAAAAAAAAHAHAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+};
diff --git a/code/src/raw/1.xpm b/code/src/raw/1.xpm
new file mode 100644
index 0000000..5aee7bb
--- /dev/null
+++ b/code/src/raw/1.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char *xpm_xpm[] = {
+"16 16 256 2",
+"AA c #000000",
+"BA c #FF0000",
+"CA c #00FF00",
+"DA c #FFFF00",
+"EA c #0000FF",
+"FA c #FF00FF",
+"GA c #00FFFF",
+"HA c #FFFFFF",
+"IA c #DBDBDB",
+"JA c #B6B6B6",
+"KA c #929292",
+"LA c #6D6D6D",
+"MA c #494949",
+"NA c #242424",
+"OA c #DB0000",
+"PA c #B60000",
+"QA c #920000",
+"RA c #6D0000",
+"SA c #490000",
+"TA c #240000",
+"UA c #00DB00",
+"VA c #00B600",
+"WA c #009200",
+"XA c #006D00",
+"YA c #004900",
+"ZA c #002400",
+"aA c #DBDB00",
+"bA c #B6B600",
+"cA c #929200",
+"dA c #6D6D00",
+"eA c #494900",
+"fA c #242400",
+"gA c #0000DB",
+"hA c #0000B6",
+"iA c #000092",
+"jA c #00006D",
+"kA c #000049",
+"lA c #000024",
+"mA c #DB00DB",
+"nA c #B600B6",
+"oA c #920092",
+"pA c #6D006D",
+"qA c #490049",
+"rA c #240024",
+"sA c #00DBDB",
+"tA c #00B6B6",
+"uA c #009292",
+"vA c #006D6D",
+"wA c #004949",
+"xA c #002424",
+"yA c #FFDBDB",
+"zA c #DBB6B6",
+"0A c #B69292",
+"1A c #926D6D",
+"2A c #6D4949",
+"3A c #492424",
+"4A c #FFB6B6",
+"5A c #DB9292",
+"6A c #B66D6D",
+"7A c #924949",
+"8A c #6D2424",
+"9A c #FF9292",
+"+A c #DB6D6D",
+"/A c #B64949",
+"AB c #922424",
+"BB c #FF6D6D",
+"CB c #DB4949",
+"DB c #B62424",
+"EB c #FF4949",
+"FB c #DB2424",
+"GB c #FF2424",
+"HB c #DBFFDB",
+"IB c #B6DBB6",
+"JB c #92B692",
+"KB c #6D926D",
+"LB c #496D49",
+"MB c #244924",
+"NB c #B6FFB6",
+"OB c #92DB92",
+"PB c #6DB66D",
+"QB c #499249",
+"RB c #246D24",
+"SB c #92FF92",
+"TB c #6DDB6D",
+"UB c #49B649",
+"VB c #249224",
+"WB c #6DFF6D",
+"XB c #49DB49",
+"YB c #24B624",
+"ZB c #49FF49",
+"aB c #24DB24",
+"bB c #24FF24",
+"cB c #DBDBFF",
+"dB c #B6B6DB",
+"eB c #9292B6",
+"fB c #6D6D92",
+"gB c #49496D",
+"hB c #242449",
+"iB c #B6B6FF",
+"jB c #9292DB",
+"kB c #6D6DB6",
+"lB c #494992",
+"mB c #24246D",
+"nB c #9292FF",
+"oB c #6D6DDB",
+"pB c #4949B6",
+"qB c #242492",
+"rB c #6D6DFF",
+"sB c #4949DB",
+"tB c #2424B6",
+"uB c #4949FF",
+"vB c #2424DB",
+"wB c #2424FF",
+"xB c #FFFFDB",
+"yB c #DBDBB6",
+"zB c #B6B692",
+"0B c #92926D",
+"1B c #6D6D49",
+"2B c #494924",
+"3B c #FFFFB6",
+"4B c #DBDB92",
+"5B c #B6B66D",
+"6B c #929249",
+"7B c #6D6D24",
+"8B c #FFFF92",
+"9B c #DBDB6D",
+"+B c #B6B649",
+"/B c #929224",
+"AC c #FFFF6D",
+"BC c #DBDB49",
+"CC c #B6B624",
+"DC c #FFFF49",
+"EC c #DBDB24",
+"FC c #FFFF24",
+"GC c #FFDBFF",
+"HC c #DBB6DB",
+"IC c #B692B6",
+"JC c #926D92",
+"KC c #6D496D",
+"LC c #492449",
+"MC c #FFB6FF",
+"NC c #DB92DB",
+"OC c #B66DB6",
+"PC c #924992",
+"QC c #6D246D",
+"RC c #FF92FF",
+"SC c #DB6DDB",
+"TC c #B649B6",
+"UC c #922492",
+"VC c #FF6DFF",
+"WC c #DB49DB",
+"XC c #B624B6",
+"YC c #FF49FF",
+"ZC c #DB24DB",
+"aC c #FF24FF",
+"bC c #DBFFFF",
+"cC c #B6DBDB",
+"dC c #92B6B6",
+"eC c #6D9292",
+"fC c #496D6D",
+"gC c #244949",
+"hC c #B6FFFF",
+"iC c #92DBDB",
+"jC c #6DB6B6",
+"kC c #499292",
+"lC c #246D6D",
+"mC c #92FFFF",
+"nC c #6DDBDB",
+"oC c #49B6B6",
+"pC c #249292",
+"qC c #6DFFFF",
+"rC c #49DBDB",
+"sC c #24B6B6",
+"tC c #49FFFF",
+"uC c #24DBDB",
+"vC c #24FFFF",
+"wC c #FFDBB6",
+"xC c #DBB692",
+"yC c #B6926D",
+"zC c #926D49",
+"0C c #6D4924",
+"1C c #492400",
+"2C c #FFB692",
+"3C c #DB926D",
+"4C c #B66D49",
+"5C c #924924",
+"6C c #6D2400",
+"7C c #FFB6DB",
+"8C c #DB92B6",
+"9C c #B66D92",
+"+C c #92496D",
+"/C c #6D2449",
+"AD c #490024",
+"BD c #FF92B6",
+"CD c #DB6D92",
+"DD c #B6496D",
+"ED c #922449",
+"FD c #6D0024",
+"GD c #DBB6FF",
+"HD c #B692DB",
+"ID c #926DB6",
+"JD c #6D4992",
+"KD c #49246D",
+"LD c #240049",
+"MD c #B692FF",
+"ND c #926DDB",
+"OD c #6D49B6",
+"PD c #492492",
+"QD c #24006D",
+"RD c #B6DBFF",
+"SD c #92B6DB",
+"TD c #6D92B6",
+"UD c #496D92",
+"VD c #24496D",
+"WD c #002449",
+"XD c #92B6FF",
+"YD c #6D92DB",
+"ZD c #496DB6",
+"aD c #244992",
+"bD c #00246D",
+"cD c #B6FFDB",
+"dD c #92DBB6",
+"eD c #6DB692",
+"fD c #49926D",
+"gD c #246D49",
+"hD c #004924",
+"iD c #92FFB6",
+"jD c #6DDB92",
+"kD c #49B66D",
+"lD c #249249",
+"mD c #006D24",
+"nD c #DBFFB6",
+"oD c #B6DB92",
+"pD c #92B66D",
+"qD c #6D9249",
+"rD c #496D24",
+"sD c #244900",
+"tD c #B6FF92",
+"uD c #92DB6D",
+"vD c #6DB649",
+"wD c #499224",
+"xD c #246D00",
+"yD c #FFB600",
+"zD c #DB9200",
+"0D c #B66D00",
+"1D c #924900",
+"2D c #FF00B6",
+"3D c #DB0092",
+"4D c #B6006D",
+"5D c #920049",
+"6D c #00B6FF",
+"7D c #0092DB",
+"8D c #006DB6",
+"9D c #004992",
+"+D c #000000",
+"/D c #000000",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAHAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAHAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAHAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+};
diff --git a/code/src/raw/2.xpm b/code/src/raw/2.xpm
new file mode 100644
index 0000000..d44da73
--- /dev/null
+++ b/code/src/raw/2.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char *xpm_xpm[] = {
+"16 16 256 2",
+"AA c #000000",
+"BA c #FF0000",
+"CA c #00FF00",
+"DA c #FFFF00",
+"EA c #0000FF",
+"FA c #FF00FF",
+"GA c #00FFFF",
+"HA c #FFFFFF",
+"IA c #DBDBDB",
+"JA c #B6B6B6",
+"KA c #929292",
+"LA c #6D6D6D",
+"MA c #494949",
+"NA c #242424",
+"OA c #DB0000",
+"PA c #B60000",
+"QA c #920000",
+"RA c #6D0000",
+"SA c #490000",
+"TA c #240000",
+"UA c #00DB00",
+"VA c #00B600",
+"WA c #009200",
+"XA c #006D00",
+"YA c #004900",
+"ZA c #002400",
+"aA c #DBDB00",
+"bA c #B6B600",
+"cA c #929200",
+"dA c #6D6D00",
+"eA c #494900",
+"fA c #242400",
+"gA c #0000DB",
+"hA c #0000B6",
+"iA c #000092",
+"jA c #00006D",
+"kA c #000049",
+"lA c #000024",
+"mA c #DB00DB",
+"nA c #B600B6",
+"oA c #920092",
+"pA c #6D006D",
+"qA c #490049",
+"rA c #240024",
+"sA c #00DBDB",
+"tA c #00B6B6",
+"uA c #009292",
+"vA c #006D6D",
+"wA c #004949",
+"xA c #002424",
+"yA c #FFDBDB",
+"zA c #DBB6B6",
+"0A c #B69292",
+"1A c #926D6D",
+"2A c #6D4949",
+"3A c #492424",
+"4A c #FFB6B6",
+"5A c #DB9292",
+"6A c #B66D6D",
+"7A c #924949",
+"8A c #6D2424",
+"9A c #FF9292",
+"+A c #DB6D6D",
+"/A c #B64949",
+"AB c #922424",
+"BB c #FF6D6D",
+"CB c #DB4949",
+"DB c #B62424",
+"EB c #FF4949",
+"FB c #DB2424",
+"GB c #FF2424",
+"HB c #DBFFDB",
+"IB c #B6DBB6",
+"JB c #92B692",
+"KB c #6D926D",
+"LB c #496D49",
+"MB c #244924",
+"NB c #B6FFB6",
+"OB c #92DB92",
+"PB c #6DB66D",
+"QB c #499249",
+"RB c #246D24",
+"SB c #92FF92",
+"TB c #6DDB6D",
+"UB c #49B649",
+"VB c #249224",
+"WB c #6DFF6D",
+"XB c #49DB49",
+"YB c #24B624",
+"ZB c #49FF49",
+"aB c #24DB24",
+"bB c #24FF24",
+"cB c #DBDBFF",
+"dB c #B6B6DB",
+"eB c #9292B6",
+"fB c #6D6D92",
+"gB c #49496D",
+"hB c #242449",
+"iB c #B6B6FF",
+"jB c #9292DB",
+"kB c #6D6DB6",
+"lB c #494992",
+"mB c #24246D",
+"nB c #9292FF",
+"oB c #6D6DDB",
+"pB c #4949B6",
+"qB c #242492",
+"rB c #6D6DFF",
+"sB c #4949DB",
+"tB c #2424B6",
+"uB c #4949FF",
+"vB c #2424DB",
+"wB c #2424FF",
+"xB c #FFFFDB",
+"yB c #DBDBB6",
+"zB c #B6B692",
+"0B c #92926D",
+"1B c #6D6D49",
+"2B c #494924",
+"3B c #FFFFB6",
+"4B c #DBDB92",
+"5B c #B6B66D",
+"6B c #929249",
+"7B c #6D6D24",
+"8B c #FFFF92",
+"9B c #DBDB6D",
+"+B c #B6B649",
+"/B c #929224",
+"AC c #FFFF6D",
+"BC c #DBDB49",
+"CC c #B6B624",
+"DC c #FFFF49",
+"EC c #DBDB24",
+"FC c #FFFF24",
+"GC c #FFDBFF",
+"HC c #DBB6DB",
+"IC c #B692B6",
+"JC c #926D92",
+"KC c #6D496D",
+"LC c #492449",
+"MC c #FFB6FF",
+"NC c #DB92DB",
+"OC c #B66DB6",
+"PC c #924992",
+"QC c #6D246D",
+"RC c #FF92FF",
+"SC c #DB6DDB",
+"TC c #B649B6",
+"UC c #922492",
+"VC c #FF6DFF",
+"WC c #DB49DB",
+"XC c #B624B6",
+"YC c #FF49FF",
+"ZC c #DB24DB",
+"aC c #FF24FF",
+"bC c #DBFFFF",
+"cC c #B6DBDB",
+"dC c #92B6B6",
+"eC c #6D9292",
+"fC c #496D6D",
+"gC c #244949",
+"hC c #B6FFFF",
+"iC c #92DBDB",
+"jC c #6DB6B6",
+"kC c #499292",
+"lC c #246D6D",
+"mC c #92FFFF",
+"nC c #6DDBDB",
+"oC c #49B6B6",
+"pC c #249292",
+"qC c #6DFFFF",
+"rC c #49DBDB",
+"sC c #24B6B6",
+"tC c #49FFFF",
+"uC c #24DBDB",
+"vC c #24FFFF",
+"wC c #FFDBB6",
+"xC c #DBB692",
+"yC c #B6926D",
+"zC c #926D49",
+"0C c #6D4924",
+"1C c #492400",
+"2C c #FFB692",
+"3C c #DB926D",
+"4C c #B66D49",
+"5C c #924924",
+"6C c #6D2400",
+"7C c #FFB6DB",
+"8C c #DB92B6",
+"9C c #B66D92",
+"+C c #92496D",
+"/C c #6D2449",
+"AD c #490024",
+"BD c #FF92B6",
+"CD c #DB6D92",
+"DD c #B6496D",
+"ED c #922449",
+"FD c #6D0024",
+"GD c #DBB6FF",
+"HD c #B692DB",
+"ID c #926DB6",
+"JD c #6D4992",
+"KD c #49246D",
+"LD c #240049",
+"MD c #B692FF",
+"ND c #926DDB",
+"OD c #6D49B6",
+"PD c #492492",
+"QD c #24006D",
+"RD c #B6DBFF",
+"SD c #92B6DB",
+"TD c #6D92B6",
+"UD c #496D92",
+"VD c #24496D",
+"WD c #002449",
+"XD c #92B6FF",
+"YD c #6D92DB",
+"ZD c #496DB6",
+"aD c #244992",
+"bD c #00246D",
+"cD c #B6FFDB",
+"dD c #92DBB6",
+"eD c #6DB692",
+"fD c #49926D",
+"gD c #246D49",
+"hD c #004924",
+"iD c #92FFB6",
+"jD c #6DDB92",
+"kD c #49B66D",
+"lD c #249249",
+"mD c #006D24",
+"nD c #DBFFB6",
+"oD c #B6DB92",
+"pD c #92B66D",
+"qD c #6D9249",
+"rD c #496D24",
+"sD c #244900",
+"tD c #B6FF92",
+"uD c #92DB6D",
+"vD c #6DB649",
+"wD c #499224",
+"xD c #246D00",
+"yD c #FFB600",
+"zD c #DB9200",
+"0D c #B66D00",
+"1D c #924900",
+"2D c #FF00B6",
+"3D c #DB0092",
+"4D c #B6006D",
+"5D c #920049",
+"6D c #00B6FF",
+"7D c #0092DB",
+"8D c #006DB6",
+"9D c #004992",
+"+D c #000000",
+"/D c #000000",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAHAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAHAHAHAHAHAHAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+};
diff --git a/code/src/raw/3.xpm b/code/src/raw/3.xpm
new file mode 100644
index 0000000..ed44508
--- /dev/null
+++ b/code/src/raw/3.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char *xpm_xpm[] = {
+"16 16 256 2",
+"AA c #000000",
+"BA c #FF0000",
+"CA c #00FF00",
+"DA c #FFFF00",
+"EA c #0000FF",
+"FA c #FF00FF",
+"GA c #00FFFF",
+"HA c #FFFFFF",
+"IA c #DBDBDB",
+"JA c #B6B6B6",
+"KA c #929292",
+"LA c #6D6D6D",
+"MA c #494949",
+"NA c #242424",
+"OA c #DB0000",
+"PA c #B60000",
+"QA c #920000",
+"RA c #6D0000",
+"SA c #490000",
+"TA c #240000",
+"UA c #00DB00",
+"VA c #00B600",
+"WA c #009200",
+"XA c #006D00",
+"YA c #004900",
+"ZA c #002400",
+"aA c #DBDB00",
+"bA c #B6B600",
+"cA c #929200",
+"dA c #6D6D00",
+"eA c #494900",
+"fA c #242400",
+"gA c #0000DB",
+"hA c #0000B6",
+"iA c #000092",
+"jA c #00006D",
+"kA c #000049",
+"lA c #000024",
+"mA c #DB00DB",
+"nA c #B600B6",
+"oA c #920092",
+"pA c #6D006D",
+"qA c #490049",
+"rA c #240024",
+"sA c #00DBDB",
+"tA c #00B6B6",
+"uA c #009292",
+"vA c #006D6D",
+"wA c #004949",
+"xA c #002424",
+"yA c #FFDBDB",
+"zA c #DBB6B6",
+"0A c #B69292",
+"1A c #926D6D",
+"2A c #6D4949",
+"3A c #492424",
+"4A c #FFB6B6",
+"5A c #DB9292",
+"6A c #B66D6D",
+"7A c #924949",
+"8A c #6D2424",
+"9A c #FF9292",
+"+A c #DB6D6D",
+"/A c #B64949",
+"AB c #922424",
+"BB c #FF6D6D",
+"CB c #DB4949",
+"DB c #B62424",
+"EB c #FF4949",
+"FB c #DB2424",
+"GB c #FF2424",
+"HB c #DBFFDB",
+"IB c #B6DBB6",
+"JB c #92B692",
+"KB c #6D926D",
+"LB c #496D49",
+"MB c #244924",
+"NB c #B6FFB6",
+"OB c #92DB92",
+"PB c #6DB66D",
+"QB c #499249",
+"RB c #246D24",
+"SB c #92FF92",
+"TB c #6DDB6D",
+"UB c #49B649",
+"VB c #249224",
+"WB c #6DFF6D",
+"XB c #49DB49",
+"YB c #24B624",
+"ZB c #49FF49",
+"aB c #24DB24",
+"bB c #24FF24",
+"cB c #DBDBFF",
+"dB c #B6B6DB",
+"eB c #9292B6",
+"fB c #6D6D92",
+"gB c #49496D",
+"hB c #242449",
+"iB c #B6B6FF",
+"jB c #9292DB",
+"kB c #6D6DB6",
+"lB c #494992",
+"mB c #24246D",
+"nB c #9292FF",
+"oB c #6D6DDB",
+"pB c #4949B6",
+"qB c #242492",
+"rB c #6D6DFF",
+"sB c #4949DB",
+"tB c #2424B6",
+"uB c #4949FF",
+"vB c #2424DB",
+"wB c #2424FF",
+"xB c #FFFFDB",
+"yB c #DBDBB6",
+"zB c #B6B692",
+"0B c #92926D",
+"1B c #6D6D49",
+"2B c #494924",
+"3B c #FFFFB6",
+"4B c #DBDB92",
+"5B c #B6B66D",
+"6B c #929249",
+"7B c #6D6D24",
+"8B c #FFFF92",
+"9B c #DBDB6D",
+"+B c #B6B649",
+"/B c #929224",
+"AC c #FFFF6D",
+"BC c #DBDB49",
+"CC c #B6B624",
+"DC c #FFFF49",
+"EC c #DBDB24",
+"FC c #FFFF24",
+"GC c #FFDBFF",
+"HC c #DBB6DB",
+"IC c #B692B6",
+"JC c #926D92",
+"KC c #6D496D",
+"LC c #492449",
+"MC c #FFB6FF",
+"NC c #DB92DB",
+"OC c #B66DB6",
+"PC c #924992",
+"QC c #6D246D",
+"RC c #FF92FF",
+"SC c #DB6DDB",
+"TC c #B649B6",
+"UC c #922492",
+"VC c #FF6DFF",
+"WC c #DB49DB",
+"XC c #B624B6",
+"YC c #FF49FF",
+"ZC c #DB24DB",
+"aC c #FF24FF",
+"bC c #DBFFFF",
+"cC c #B6DBDB",
+"dC c #92B6B6",
+"eC c #6D9292",
+"fC c #496D6D",
+"gC c #244949",
+"hC c #B6FFFF",
+"iC c #92DBDB",
+"jC c #6DB6B6",
+"kC c #499292",
+"lC c #246D6D",
+"mC c #92FFFF",
+"nC c #6DDBDB",
+"oC c #49B6B6",
+"pC c #249292",
+"qC c #6DFFFF",
+"rC c #49DBDB",
+"sC c #24B6B6",
+"tC c #49FFFF",
+"uC c #24DBDB",
+"vC c #24FFFF",
+"wC c #FFDBB6",
+"xC c #DBB692",
+"yC c #B6926D",
+"zC c #926D49",
+"0C c #6D4924",
+"1C c #492400",
+"2C c #FFB692",
+"3C c #DB926D",
+"4C c #B66D49",
+"5C c #924924",
+"6C c #6D2400",
+"7C c #FFB6DB",
+"8C c #DB92B6",
+"9C c #B66D92",
+"+C c #92496D",
+"/C c #6D2449",
+"AD c #490024",
+"BD c #FF92B6",
+"CD c #DB6D92",
+"DD c #B6496D",
+"ED c #922449",
+"FD c #6D0024",
+"GD c #DBB6FF",
+"HD c #B692DB",
+"ID c #926DB6",
+"JD c #6D4992",
+"KD c #49246D",
+"LD c #240049",
+"MD c #B692FF",
+"ND c #926DDB",
+"OD c #6D49B6",
+"PD c #492492",
+"QD c #24006D",
+"RD c #B6DBFF",
+"SD c #92B6DB",
+"TD c #6D92B6",
+"UD c #496D92",
+"VD c #24496D",
+"WD c #002449",
+"XD c #92B6FF",
+"YD c #6D92DB",
+"ZD c #496DB6",
+"aD c #244992",
+"bD c #00246D",
+"cD c #B6FFDB",
+"dD c #92DBB6",
+"eD c #6DB692",
+"fD c #49926D",
+"gD c #246D49",
+"hD c #004924",
+"iD c #92FFB6",
+"jD c #6DDB92",
+"kD c #49B66D",
+"lD c #249249",
+"mD c #006D24",
+"nD c #DBFFB6",
+"oD c #B6DB92",
+"pD c #92B66D",
+"qD c #6D9249",
+"rD c #496D24",
+"sD c #244900",
+"tD c #B6FF92",
+"uD c #92DB6D",
+"vD c #6DB649",
+"wD c #499224",
+"xD c #246D00",
+"yD c #FFB600",
+"zD c #DB9200",
+"0D c #B66D00",
+"1D c #924900",
+"2D c #FF00B6",
+"3D c #DB0092",
+"4D c #B6006D",
+"5D c #920049",
+"6D c #00B6FF",
+"7D c #0092DB",
+"8D c #006DB6",
+"9D c #004992",
+"+D c #000000",
+"/D c #000000",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+};
diff --git a/code/src/raw/4.xpm b/code/src/raw/4.xpm
new file mode 100644
index 0000000..aac84c3
--- /dev/null
+++ b/code/src/raw/4.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char *xpm_xpm[] = {
+"16 16 256 2",
+"AA c #000000",
+"BA c #FF0000",
+"CA c #00FF00",
+"DA c #FFFF00",
+"EA c #0000FF",
+"FA c #FF00FF",
+"GA c #00FFFF",
+"HA c #FFFFFF",
+"IA c #DBDBDB",
+"JA c #B6B6B6",
+"KA c #929292",
+"LA c #6D6D6D",
+"MA c #494949",
+"NA c #242424",
+"OA c #DB0000",
+"PA c #B60000",
+"QA c #920000",
+"RA c #6D0000",
+"SA c #490000",
+"TA c #240000",
+"UA c #00DB00",
+"VA c #00B600",
+"WA c #009200",
+"XA c #006D00",
+"YA c #004900",
+"ZA c #002400",
+"aA c #DBDB00",
+"bA c #B6B600",
+"cA c #929200",
+"dA c #6D6D00",
+"eA c #494900",
+"fA c #242400",
+"gA c #0000DB",
+"hA c #0000B6",
+"iA c #000092",
+"jA c #00006D",
+"kA c #000049",
+"lA c #000024",
+"mA c #DB00DB",
+"nA c #B600B6",
+"oA c #920092",
+"pA c #6D006D",
+"qA c #490049",
+"rA c #240024",
+"sA c #00DBDB",
+"tA c #00B6B6",
+"uA c #009292",
+"vA c #006D6D",
+"wA c #004949",
+"xA c #002424",
+"yA c #FFDBDB",
+"zA c #DBB6B6",
+"0A c #B69292",
+"1A c #926D6D",
+"2A c #6D4949",
+"3A c #492424",
+"4A c #FFB6B6",
+"5A c #DB9292",
+"6A c #B66D6D",
+"7A c #924949",
+"8A c #6D2424",
+"9A c #FF9292",
+"+A c #DB6D6D",
+"/A c #B64949",
+"AB c #922424",
+"BB c #FF6D6D",
+"CB c #DB4949",
+"DB c #B62424",
+"EB c #FF4949",
+"FB c #DB2424",
+"GB c #FF2424",
+"HB c #DBFFDB",
+"IB c #B6DBB6",
+"JB c #92B692",
+"KB c #6D926D",
+"LB c #496D49",
+"MB c #244924",
+"NB c #B6FFB6",
+"OB c #92DB92",
+"PB c #6DB66D",
+"QB c #499249",
+"RB c #246D24",
+"SB c #92FF92",
+"TB c #6DDB6D",
+"UB c #49B649",
+"VB c #249224",
+"WB c #6DFF6D",
+"XB c #49DB49",
+"YB c #24B624",
+"ZB c #49FF49",
+"aB c #24DB24",
+"bB c #24FF24",
+"cB c #DBDBFF",
+"dB c #B6B6DB",
+"eB c #9292B6",
+"fB c #6D6D92",
+"gB c #49496D",
+"hB c #242449",
+"iB c #B6B6FF",
+"jB c #9292DB",
+"kB c #6D6DB6",
+"lB c #494992",
+"mB c #24246D",
+"nB c #9292FF",
+"oB c #6D6DDB",
+"pB c #4949B6",
+"qB c #242492",
+"rB c #6D6DFF",
+"sB c #4949DB",
+"tB c #2424B6",
+"uB c #4949FF",
+"vB c #2424DB",
+"wB c #2424FF",
+"xB c #FFFFDB",
+"yB c #DBDBB6",
+"zB c #B6B692",
+"0B c #92926D",
+"1B c #6D6D49",
+"2B c #494924",
+"3B c #FFFFB6",
+"4B c #DBDB92",
+"5B c #B6B66D",
+"6B c #929249",
+"7B c #6D6D24",
+"8B c #FFFF92",
+"9B c #DBDB6D",
+"+B c #B6B649",
+"/B c #929224",
+"AC c #FFFF6D",
+"BC c #DBDB49",
+"CC c #B6B624",
+"DC c #FFFF49",
+"EC c #DBDB24",
+"FC c #FFFF24",
+"GC c #FFDBFF",
+"HC c #DBB6DB",
+"IC c #B692B6",
+"JC c #926D92",
+"KC c #6D496D",
+"LC c #492449",
+"MC c #FFB6FF",
+"NC c #DB92DB",
+"OC c #B66DB6",
+"PC c #924992",
+"QC c #6D246D",
+"RC c #FF92FF",
+"SC c #DB6DDB",
+"TC c #B649B6",
+"UC c #922492",
+"VC c #FF6DFF",
+"WC c #DB49DB",
+"XC c #B624B6",
+"YC c #FF49FF",
+"ZC c #DB24DB",
+"aC c #FF24FF",
+"bC c #DBFFFF",
+"cC c #B6DBDB",
+"dC c #92B6B6",
+"eC c #6D9292",
+"fC c #496D6D",
+"gC c #244949",
+"hC c #B6FFFF",
+"iC c #92DBDB",
+"jC c #6DB6B6",
+"kC c #499292",
+"lC c #246D6D",
+"mC c #92FFFF",
+"nC c #6DDBDB",
+"oC c #49B6B6",
+"pC c #249292",
+"qC c #6DFFFF",
+"rC c #49DBDB",
+"sC c #24B6B6",
+"tC c #49FFFF",
+"uC c #24DBDB",
+"vC c #24FFFF",
+"wC c #FFDBB6",
+"xC c #DBB692",
+"yC c #B6926D",
+"zC c #926D49",
+"0C c #6D4924",
+"1C c #492400",
+"2C c #FFB692",
+"3C c #DB926D",
+"4C c #B66D49",
+"5C c #924924",
+"6C c #6D2400",
+"7C c #FFB6DB",
+"8C c #DB92B6",
+"9C c #B66D92",
+"+C c #92496D",
+"/C c #6D2449",
+"AD c #490024",
+"BD c #FF92B6",
+"CD c #DB6D92",
+"DD c #B6496D",
+"ED c #922449",
+"FD c #6D0024",
+"GD c #DBB6FF",
+"HD c #B692DB",
+"ID c #926DB6",
+"JD c #6D4992",
+"KD c #49246D",
+"LD c #240049",
+"MD c #B692FF",
+"ND c #926DDB",
+"OD c #6D49B6",
+"PD c #492492",
+"QD c #24006D",
+"RD c #B6DBFF",
+"SD c #92B6DB",
+"TD c #6D92B6",
+"UD c #496D92",
+"VD c #24496D",
+"WD c #002449",
+"XD c #92B6FF",
+"YD c #6D92DB",
+"ZD c #496DB6",
+"aD c #244992",
+"bD c #00246D",
+"cD c #B6FFDB",
+"dD c #92DBB6",
+"eD c #6DB692",
+"fD c #49926D",
+"gD c #246D49",
+"hD c #004924",
+"iD c #92FFB6",
+"jD c #6DDB92",
+"kD c #49B66D",
+"lD c #249249",
+"mD c #006D24",
+"nD c #DBFFB6",
+"oD c #B6DB92",
+"pD c #92B66D",
+"qD c #6D9249",
+"rD c #496D24",
+"sD c #244900",
+"tD c #B6FF92",
+"uD c #92DB6D",
+"vD c #6DB649",
+"wD c #499224",
+"xD c #246D00",
+"yD c #FFB600",
+"zD c #DB9200",
+"0D c #B66D00",
+"1D c #924900",
+"2D c #FF00B6",
+"3D c #DB0092",
+"4D c #B6006D",
+"5D c #920049",
+"6D c #00B6FF",
+"7D c #0092DB",
+"8D c #006DB6",
+"9D c #004992",
+"+D c #000000",
+"/D c #000000",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAHAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAHAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAHAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAHAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAHAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAHAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAHAAAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAHAHAHAHAHAHAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+};
diff --git a/code/src/raw/5.xpm b/code/src/raw/5.xpm
new file mode 100644
index 0000000..afc4375
--- /dev/null
+++ b/code/src/raw/5.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char *xpm_xpm[] = {
+"16 16 256 2",
+"AA c #000000",
+"BA c #FF0000",
+"CA c #00FF00",
+"DA c #FFFF00",
+"EA c #0000FF",
+"FA c #FF00FF",
+"GA c #00FFFF",
+"HA c #FFFFFF",
+"IA c #DBDBDB",
+"JA c #B6B6B6",
+"KA c #929292",
+"LA c #6D6D6D",
+"MA c #494949",
+"NA c #242424",
+"OA c #DB0000",
+"PA c #B60000",
+"QA c #920000",
+"RA c #6D0000",
+"SA c #490000",
+"TA c #240000",
+"UA c #00DB00",
+"VA c #00B600",
+"WA c #009200",
+"XA c #006D00",
+"YA c #004900",
+"ZA c #002400",
+"aA c #DBDB00",
+"bA c #B6B600",
+"cA c #929200",
+"dA c #6D6D00",
+"eA c #494900",
+"fA c #242400",
+"gA c #0000DB",
+"hA c #0000B6",
+"iA c #000092",
+"jA c #00006D",
+"kA c #000049",
+"lA c #000024",
+"mA c #DB00DB",
+"nA c #B600B6",
+"oA c #920092",
+"pA c #6D006D",
+"qA c #490049",
+"rA c #240024",
+"sA c #00DBDB",
+"tA c #00B6B6",
+"uA c #009292",
+"vA c #006D6D",
+"wA c #004949",
+"xA c #002424",
+"yA c #FFDBDB",
+"zA c #DBB6B6",
+"0A c #B69292",
+"1A c #926D6D",
+"2A c #6D4949",
+"3A c #492424",
+"4A c #FFB6B6",
+"5A c #DB9292",
+"6A c #B66D6D",
+"7A c #924949",
+"8A c #6D2424",
+"9A c #FF9292",
+"+A c #DB6D6D",
+"/A c #B64949",
+"AB c #922424",
+"BB c #FF6D6D",
+"CB c #DB4949",
+"DB c #B62424",
+"EB c #FF4949",
+"FB c #DB2424",
+"GB c #FF2424",
+"HB c #DBFFDB",
+"IB c #B6DBB6",
+"JB c #92B692",
+"KB c #6D926D",
+"LB c #496D49",
+"MB c #244924",
+"NB c #B6FFB6",
+"OB c #92DB92",
+"PB c #6DB66D",
+"QB c #499249",
+"RB c #246D24",
+"SB c #92FF92",
+"TB c #6DDB6D",
+"UB c #49B649",
+"VB c #249224",
+"WB c #6DFF6D",
+"XB c #49DB49",
+"YB c #24B624",
+"ZB c #49FF49",
+"aB c #24DB24",
+"bB c #24FF24",
+"cB c #DBDBFF",
+"dB c #B6B6DB",
+"eB c #9292B6",
+"fB c #6D6D92",
+"gB c #49496D",
+"hB c #242449",
+"iB c #B6B6FF",
+"jB c #9292DB",
+"kB c #6D6DB6",
+"lB c #494992",
+"mB c #24246D",
+"nB c #9292FF",
+"oB c #6D6DDB",
+"pB c #4949B6",
+"qB c #242492",
+"rB c #6D6DFF",
+"sB c #4949DB",
+"tB c #2424B6",
+"uB c #4949FF",
+"vB c #2424DB",
+"wB c #2424FF",
+"xB c #FFFFDB",
+"yB c #DBDBB6",
+"zB c #B6B692",
+"0B c #92926D",
+"1B c #6D6D49",
+"2B c #494924",
+"3B c #FFFFB6",
+"4B c #DBDB92",
+"5B c #B6B66D",
+"6B c #929249",
+"7B c #6D6D24",
+"8B c #FFFF92",
+"9B c #DBDB6D",
+"+B c #B6B649",
+"/B c #929224",
+"AC c #FFFF6D",
+"BC c #DBDB49",
+"CC c #B6B624",
+"DC c #FFFF49",
+"EC c #DBDB24",
+"FC c #FFFF24",
+"GC c #FFDBFF",
+"HC c #DBB6DB",
+"IC c #B692B6",
+"JC c #926D92",
+"KC c #6D496D",
+"LC c #492449",
+"MC c #FFB6FF",
+"NC c #DB92DB",
+"OC c #B66DB6",
+"PC c #924992",
+"QC c #6D246D",
+"RC c #FF92FF",
+"SC c #DB6DDB",
+"TC c #B649B6",
+"UC c #922492",
+"VC c #FF6DFF",
+"WC c #DB49DB",
+"XC c #B624B6",
+"YC c #FF49FF",
+"ZC c #DB24DB",
+"aC c #FF24FF",
+"bC c #DBFFFF",
+"cC c #B6DBDB",
+"dC c #92B6B6",
+"eC c #6D9292",
+"fC c #496D6D",
+"gC c #244949",
+"hC c #B6FFFF",
+"iC c #92DBDB",
+"jC c #6DB6B6",
+"kC c #499292",
+"lC c #246D6D",
+"mC c #92FFFF",
+"nC c #6DDBDB",
+"oC c #49B6B6",
+"pC c #249292",
+"qC c #6DFFFF",
+"rC c #49DBDB",
+"sC c #24B6B6",
+"tC c #49FFFF",
+"uC c #24DBDB",
+"vC c #24FFFF",
+"wC c #FFDBB6",
+"xC c #DBB692",
+"yC c #B6926D",
+"zC c #926D49",
+"0C c #6D4924",
+"1C c #492400",
+"2C c #FFB692",
+"3C c #DB926D",
+"4C c #B66D49",
+"5C c #924924",
+"6C c #6D2400",
+"7C c #FFB6DB",
+"8C c #DB92B6",
+"9C c #B66D92",
+"+C c #92496D",
+"/C c #6D2449",
+"AD c #490024",
+"BD c #FF92B6",
+"CD c #DB6D92",
+"DD c #B6496D",
+"ED c #922449",
+"FD c #6D0024",
+"GD c #DBB6FF",
+"HD c #B692DB",
+"ID c #926DB6",
+"JD c #6D4992",
+"KD c #49246D",
+"LD c #240049",
+"MD c #B692FF",
+"ND c #926DDB",
+"OD c #6D49B6",
+"PD c #492492",
+"QD c #24006D",
+"RD c #B6DBFF",
+"SD c #92B6DB",
+"TD c #6D92B6",
+"UD c #496D92",
+"VD c #24496D",
+"WD c #002449",
+"XD c #92B6FF",
+"YD c #6D92DB",
+"ZD c #496DB6",
+"aD c #244992",
+"bD c #00246D",
+"cD c #B6FFDB",
+"dD c #92DBB6",
+"eD c #6DB692",
+"fD c #49926D",
+"gD c #246D49",
+"hD c #004924",
+"iD c #92FFB6",
+"jD c #6DDB92",
+"kD c #49B66D",
+"lD c #249249",
+"mD c #006D24",
+"nD c #DBFFB6",
+"oD c #B6DB92",
+"pD c #92B66D",
+"qD c #6D9249",
+"rD c #496D24",
+"sD c #244900",
+"tD c #B6FF92",
+"uD c #92DB6D",
+"vD c #6DB649",
+"wD c #499224",
+"xD c #246D00",
+"yD c #FFB600",
+"zD c #DB9200",
+"0D c #B66D00",
+"1D c #924900",
+"2D c #FF00B6",
+"3D c #DB0092",
+"4D c #B6006D",
+"5D c #920049",
+"6D c #00B6FF",
+"7D c #0092DB",
+"8D c #006DB6",
+"9D c #004992",
+"+D c #000000",
+"/D c #000000",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAHAHAHAHAHAAAAAAAAA",
+"AAAAAAAAAAAAHAHAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAHAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAHAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+};
diff --git a/code/src/raw/6.xpm b/code/src/raw/6.xpm
new file mode 100644
index 0000000..4f41c84
--- /dev/null
+++ b/code/src/raw/6.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char *xpm_xpm[] = {
+"16 16 256 2",
+"AA c #000000",
+"BA c #FF0000",
+"CA c #00FF00",
+"DA c #FFFF00",
+"EA c #0000FF",
+"FA c #FF00FF",
+"GA c #00FFFF",
+"HA c #FFFFFF",
+"IA c #DBDBDB",
+"JA c #B6B6B6",
+"KA c #929292",
+"LA c #6D6D6D",
+"MA c #494949",
+"NA c #242424",
+"OA c #DB0000",
+"PA c #B60000",
+"QA c #920000",
+"RA c #6D0000",
+"SA c #490000",
+"TA c #240000",
+"UA c #00DB00",
+"VA c #00B600",
+"WA c #009200",
+"XA c #006D00",
+"YA c #004900",
+"ZA c #002400",
+"aA c #DBDB00",
+"bA c #B6B600",
+"cA c #929200",
+"dA c #6D6D00",
+"eA c #494900",
+"fA c #242400",
+"gA c #0000DB",
+"hA c #0000B6",
+"iA c #000092",
+"jA c #00006D",
+"kA c #000049",
+"lA c #000024",
+"mA c #DB00DB",
+"nA c #B600B6",
+"oA c #920092",
+"pA c #6D006D",
+"qA c #490049",
+"rA c #240024",
+"sA c #00DBDB",
+"tA c #00B6B6",
+"uA c #009292",
+"vA c #006D6D",
+"wA c #004949",
+"xA c #002424",
+"yA c #FFDBDB",
+"zA c #DBB6B6",
+"0A c #B69292",
+"1A c #926D6D",
+"2A c #6D4949",
+"3A c #492424",
+"4A c #FFB6B6",
+"5A c #DB9292",
+"6A c #B66D6D",
+"7A c #924949",
+"8A c #6D2424",
+"9A c #FF9292",
+"+A c #DB6D6D",
+"/A c #B64949",
+"AB c #922424",
+"BB c #FF6D6D",
+"CB c #DB4949",
+"DB c #B62424",
+"EB c #FF4949",
+"FB c #DB2424",
+"GB c #FF2424",
+"HB c #DBFFDB",
+"IB c #B6DBB6",
+"JB c #92B692",
+"KB c #6D926D",
+"LB c #496D49",
+"MB c #244924",
+"NB c #B6FFB6",
+"OB c #92DB92",
+"PB c #6DB66D",
+"QB c #499249",
+"RB c #246D24",
+"SB c #92FF92",
+"TB c #6DDB6D",
+"UB c #49B649",
+"VB c #249224",
+"WB c #6DFF6D",
+"XB c #49DB49",
+"YB c #24B624",
+"ZB c #49FF49",
+"aB c #24DB24",
+"bB c #24FF24",
+"cB c #DBDBFF",
+"dB c #B6B6DB",
+"eB c #9292B6",
+"fB c #6D6D92",
+"gB c #49496D",
+"hB c #242449",
+"iB c #B6B6FF",
+"jB c #9292DB",
+"kB c #6D6DB6",
+"lB c #494992",
+"mB c #24246D",
+"nB c #9292FF",
+"oB c #6D6DDB",
+"pB c #4949B6",
+"qB c #242492",
+"rB c #6D6DFF",
+"sB c #4949DB",
+"tB c #2424B6",
+"uB c #4949FF",
+"vB c #2424DB",
+"wB c #2424FF",
+"xB c #FFFFDB",
+"yB c #DBDBB6",
+"zB c #B6B692",
+"0B c #92926D",
+"1B c #6D6D49",
+"2B c #494924",
+"3B c #FFFFB6",
+"4B c #DBDB92",
+"5B c #B6B66D",
+"6B c #929249",
+"7B c #6D6D24",
+"8B c #FFFF92",
+"9B c #DBDB6D",
+"+B c #B6B649",
+"/B c #929224",
+"AC c #FFFF6D",
+"BC c #DBDB49",
+"CC c #B6B624",
+"DC c #FFFF49",
+"EC c #DBDB24",
+"FC c #FFFF24",
+"GC c #FFDBFF",
+"HC c #DBB6DB",
+"IC c #B692B6",
+"JC c #926D92",
+"KC c #6D496D",
+"LC c #492449",
+"MC c #FFB6FF",
+"NC c #DB92DB",
+"OC c #B66DB6",
+"PC c #924992",
+"QC c #6D246D",
+"RC c #FF92FF",
+"SC c #DB6DDB",
+"TC c #B649B6",
+"UC c #922492",
+"VC c #FF6DFF",
+"WC c #DB49DB",
+"XC c #B624B6",
+"YC c #FF49FF",
+"ZC c #DB24DB",
+"aC c #FF24FF",
+"bC c #DBFFFF",
+"cC c #B6DBDB",
+"dC c #92B6B6",
+"eC c #6D9292",
+"fC c #496D6D",
+"gC c #244949",
+"hC c #B6FFFF",
+"iC c #92DBDB",
+"jC c #6DB6B6",
+"kC c #499292",
+"lC c #246D6D",
+"mC c #92FFFF",
+"nC c #6DDBDB",
+"oC c #49B6B6",
+"pC c #249292",
+"qC c #6DFFFF",
+"rC c #49DBDB",
+"sC c #24B6B6",
+"tC c #49FFFF",
+"uC c #24DBDB",
+"vC c #24FFFF",
+"wC c #FFDBB6",
+"xC c #DBB692",
+"yC c #B6926D",
+"zC c #926D49",
+"0C c #6D4924",
+"1C c #492400",
+"2C c #FFB692",
+"3C c #DB926D",
+"4C c #B66D49",
+"5C c #924924",
+"6C c #6D2400",
+"7C c #FFB6DB",
+"8C c #DB92B6",
+"9C c #B66D92",
+"+C c #92496D",
+"/C c #6D2449",
+"AD c #490024",
+"BD c #FF92B6",
+"CD c #DB6D92",
+"DD c #B6496D",
+"ED c #922449",
+"FD c #6D0024",
+"GD c #DBB6FF",
+"HD c #B692DB",
+"ID c #926DB6",
+"JD c #6D4992",
+"KD c #49246D",
+"LD c #240049",
+"MD c #B692FF",
+"ND c #926DDB",
+"OD c #6D49B6",
+"PD c #492492",
+"QD c #24006D",
+"RD c #B6DBFF",
+"SD c #92B6DB",
+"TD c #6D92B6",
+"UD c #496D92",
+"VD c #24496D",
+"WD c #002449",
+"XD c #92B6FF",
+"YD c #6D92DB",
+"ZD c #496DB6",
+"aD c #244992",
+"bD c #00246D",
+"cD c #B6FFDB",
+"dD c #92DBB6",
+"eD c #6DB692",
+"fD c #49926D",
+"gD c #246D49",
+"hD c #004924",
+"iD c #92FFB6",
+"jD c #6DDB92",
+"kD c #49B66D",
+"lD c #249249",
+"mD c #006D24",
+"nD c #DBFFB6",
+"oD c #B6DB92",
+"pD c #92B66D",
+"qD c #6D9249",
+"rD c #496D24",
+"sD c #244900",
+"tD c #B6FF92",
+"uD c #92DB6D",
+"vD c #6DB649",
+"wD c #499224",
+"xD c #246D00",
+"yD c #FFB600",
+"zD c #DB9200",
+"0D c #B66D00",
+"1D c #924900",
+"2D c #FF00B6",
+"3D c #DB0092",
+"4D c #B6006D",
+"5D c #920049",
+"6D c #00B6FF",
+"7D c #0092DB",
+"8D c #006DB6",
+"9D c #004992",
+"+D c #000000",
+"/D c #000000",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAHAAAHAHAHAHAHAAAAAAAAAAA",
+"AAAAAAAAHAHAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAHAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAAAHAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAAAHAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAAAHAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAAAAAHAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAHAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+};
diff --git a/code/src/raw/7.xpm b/code/src/raw/7.xpm
new file mode 100644
index 0000000..395d6c0
--- /dev/null
+++ b/code/src/raw/7.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char *xpm_xpm[] = {
+"16 16 256 2",
+"AA c #000000",
+"BA c #FF0000",
+"CA c #00FF00",
+"DA c #FFFF00",
+"EA c #0000FF",
+"FA c #FF00FF",
+"GA c #00FFFF",
+"HA c #FFFFFF",
+"IA c #DBDBDB",
+"JA c #B6B6B6",
+"KA c #929292",
+"LA c #6D6D6D",
+"MA c #494949",
+"NA c #242424",
+"OA c #DB0000",
+"PA c #B60000",
+"QA c #920000",
+"RA c #6D0000",
+"SA c #490000",
+"TA c #240000",
+"UA c #00DB00",
+"VA c #00B600",
+"WA c #009200",
+"XA c #006D00",
+"YA c #004900",
+"ZA c #002400",
+"aA c #DBDB00",
+"bA c #B6B600",
+"cA c #929200",
+"dA c #6D6D00",
+"eA c #494900",
+"fA c #242400",
+"gA c #0000DB",
+"hA c #0000B6",
+"iA c #000092",
+"jA c #00006D",
+"kA c #000049",
+"lA c #000024",
+"mA c #DB00DB",
+"nA c #B600B6",
+"oA c #920092",
+"pA c #6D006D",
+"qA c #490049",
+"rA c #240024",
+"sA c #00DBDB",
+"tA c #00B6B6",
+"uA c #009292",
+"vA c #006D6D",
+"wA c #004949",
+"xA c #002424",
+"yA c #FFDBDB",
+"zA c #DBB6B6",
+"0A c #B69292",
+"1A c #926D6D",
+"2A c #6D4949",
+"3A c #492424",
+"4A c #FFB6B6",
+"5A c #DB9292",
+"6A c #B66D6D",
+"7A c #924949",
+"8A c #6D2424",
+"9A c #FF9292",
+"+A c #DB6D6D",
+"/A c #B64949",
+"AB c #922424",
+"BB c #FF6D6D",
+"CB c #DB4949",
+"DB c #B62424",
+"EB c #FF4949",
+"FB c #DB2424",
+"GB c #FF2424",
+"HB c #DBFFDB",
+"IB c #B6DBB6",
+"JB c #92B692",
+"KB c #6D926D",
+"LB c #496D49",
+"MB c #244924",
+"NB c #B6FFB6",
+"OB c #92DB92",
+"PB c #6DB66D",
+"QB c #499249",
+"RB c #246D24",
+"SB c #92FF92",
+"TB c #6DDB6D",
+"UB c #49B649",
+"VB c #249224",
+"WB c #6DFF6D",
+"XB c #49DB49",
+"YB c #24B624",
+"ZB c #49FF49",
+"aB c #24DB24",
+"bB c #24FF24",
+"cB c #DBDBFF",
+"dB c #B6B6DB",
+"eB c #9292B6",
+"fB c #6D6D92",
+"gB c #49496D",
+"hB c #242449",
+"iB c #B6B6FF",
+"jB c #9292DB",
+"kB c #6D6DB6",
+"lB c #494992",
+"mB c #24246D",
+"nB c #9292FF",
+"oB c #6D6DDB",
+"pB c #4949B6",
+"qB c #242492",
+"rB c #6D6DFF",
+"sB c #4949DB",
+"tB c #2424B6",
+"uB c #4949FF",
+"vB c #2424DB",
+"wB c #2424FF",
+"xB c #FFFFDB",
+"yB c #DBDBB6",
+"zB c #B6B692",
+"0B c #92926D",
+"1B c #6D6D49",
+"2B c #494924",
+"3B c #FFFFB6",
+"4B c #DBDB92",
+"5B c #B6B66D",
+"6B c #929249",
+"7B c #6D6D24",
+"8B c #FFFF92",
+"9B c #DBDB6D",
+"+B c #B6B649",
+"/B c #929224",
+"AC c #FFFF6D",
+"BC c #DBDB49",
+"CC c #B6B624",
+"DC c #FFFF49",
+"EC c #DBDB24",
+"FC c #FFFF24",
+"GC c #FFDBFF",
+"HC c #DBB6DB",
+"IC c #B692B6",
+"JC c #926D92",
+"KC c #6D496D",
+"LC c #492449",
+"MC c #FFB6FF",
+"NC c #DB92DB",
+"OC c #B66DB6",
+"PC c #924992",
+"QC c #6D246D",
+"RC c #FF92FF",
+"SC c #DB6DDB",
+"TC c #B649B6",
+"UC c #922492",
+"VC c #FF6DFF",
+"WC c #DB49DB",
+"XC c #B624B6",
+"YC c #FF49FF",
+"ZC c #DB24DB",
+"aC c #FF24FF",
+"bC c #DBFFFF",
+"cC c #B6DBDB",
+"dC c #92B6B6",
+"eC c #6D9292",
+"fC c #496D6D",
+"gC c #244949",
+"hC c #B6FFFF",
+"iC c #92DBDB",
+"jC c #6DB6B6",
+"kC c #499292",
+"lC c #246D6D",
+"mC c #92FFFF",
+"nC c #6DDBDB",
+"oC c #49B6B6",
+"pC c #249292",
+"qC c #6DFFFF",
+"rC c #49DBDB",
+"sC c #24B6B6",
+"tC c #49FFFF",
+"uC c #24DBDB",
+"vC c #24FFFF",
+"wC c #FFDBB6",
+"xC c #DBB692",
+"yC c #B6926D",
+"zC c #926D49",
+"0C c #6D4924",
+"1C c #492400",
+"2C c #FFB692",
+"3C c #DB926D",
+"4C c #B66D49",
+"5C c #924924",
+"6C c #6D2400",
+"7C c #FFB6DB",
+"8C c #DB92B6",
+"9C c #B66D92",
+"+C c #92496D",
+"/C c #6D2449",
+"AD c #490024",
+"BD c #FF92B6",
+"CD c #DB6D92",
+"DD c #B6496D",
+"ED c #922449",
+"FD c #6D0024",
+"GD c #DBB6FF",
+"HD c #B692DB",
+"ID c #926DB6",
+"JD c #6D4992",
+"KD c #49246D",
+"LD c #240049",
+"MD c #B692FF",
+"ND c #926DDB",
+"OD c #6D49B6",
+"PD c #492492",
+"QD c #24006D",
+"RD c #B6DBFF",
+"SD c #92B6DB",
+"TD c #6D92B6",
+"UD c #496D92",
+"VD c #24496D",
+"WD c #002449",
+"XD c #92B6FF",
+"YD c #6D92DB",
+"ZD c #496DB6",
+"aD c #244992",
+"bD c #00246D",
+"cD c #B6FFDB",
+"dD c #92DBB6",
+"eD c #6DB692",
+"fD c #49926D",
+"gD c #246D49",
+"hD c #004924",
+"iD c #92FFB6",
+"jD c #6DDB92",
+"kD c #49B66D",
+"lD c #249249",
+"mD c #006D24",
+"nD c #DBFFB6",
+"oD c #B6DB92",
+"pD c #92B66D",
+"qD c #6D9249",
+"rD c #496D24",
+"sD c #244900",
+"tD c #B6FF92",
+"uD c #92DB6D",
+"vD c #6DB649",
+"wD c #499224",
+"xD c #246D00",
+"yD c #FFB600",
+"zD c #DB9200",
+"0D c #B66D00",
+"1D c #924900",
+"2D c #FF00B6",
+"3D c #DB0092",
+"4D c #B6006D",
+"5D c #920049",
+"6D c #00B6FF",
+"7D c #0092DB",
+"8D c #006DB6",
+"9D c #004992",
+"+D c #000000",
+"/D c #000000",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAHAHAHAHAHAHAHAHAAAAAAAAA",
+"AAAAAAAAHAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAHAAAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+};
diff --git a/code/src/raw/8.xpm b/code/src/raw/8.xpm
new file mode 100644
index 0000000..ef0827f
--- /dev/null
+++ b/code/src/raw/8.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char *xpm_xpm[] = {
+"16 16 256 2",
+"AA c #000000",
+"BA c #FF0000",
+"CA c #00FF00",
+"DA c #FFFF00",
+"EA c #0000FF",
+"FA c #FF00FF",
+"GA c #00FFFF",
+"HA c #FFFFFF",
+"IA c #DBDBDB",
+"JA c #B6B6B6",
+"KA c #929292",
+"LA c #6D6D6D",
+"MA c #494949",
+"NA c #242424",
+"OA c #DB0000",
+"PA c #B60000",
+"QA c #920000",
+"RA c #6D0000",
+"SA c #490000",
+"TA c #240000",
+"UA c #00DB00",
+"VA c #00B600",
+"WA c #009200",
+"XA c #006D00",
+"YA c #004900",
+"ZA c #002400",
+"aA c #DBDB00",
+"bA c #B6B600",
+"cA c #929200",
+"dA c #6D6D00",
+"eA c #494900",
+"fA c #242400",
+"gA c #0000DB",
+"hA c #0000B6",
+"iA c #000092",
+"jA c #00006D",
+"kA c #000049",
+"lA c #000024",
+"mA c #DB00DB",
+"nA c #B600B6",
+"oA c #920092",
+"pA c #6D006D",
+"qA c #490049",
+"rA c #240024",
+"sA c #00DBDB",
+"tA c #00B6B6",
+"uA c #009292",
+"vA c #006D6D",
+"wA c #004949",
+"xA c #002424",
+"yA c #FFDBDB",
+"zA c #DBB6B6",
+"0A c #B69292",
+"1A c #926D6D",
+"2A c #6D4949",
+"3A c #492424",
+"4A c #FFB6B6",
+"5A c #DB9292",
+"6A c #B66D6D",
+"7A c #924949",
+"8A c #6D2424",
+"9A c #FF9292",
+"+A c #DB6D6D",
+"/A c #B64949",
+"AB c #922424",
+"BB c #FF6D6D",
+"CB c #DB4949",
+"DB c #B62424",
+"EB c #FF4949",
+"FB c #DB2424",
+"GB c #FF2424",
+"HB c #DBFFDB",
+"IB c #B6DBB6",
+"JB c #92B692",
+"KB c #6D926D",
+"LB c #496D49",
+"MB c #244924",
+"NB c #B6FFB6",
+"OB c #92DB92",
+"PB c #6DB66D",
+"QB c #499249",
+"RB c #246D24",
+"SB c #92FF92",
+"TB c #6DDB6D",
+"UB c #49B649",
+"VB c #249224",
+"WB c #6DFF6D",
+"XB c #49DB49",
+"YB c #24B624",
+"ZB c #49FF49",
+"aB c #24DB24",
+"bB c #24FF24",
+"cB c #DBDBFF",
+"dB c #B6B6DB",
+"eB c #9292B6",
+"fB c #6D6D92",
+"gB c #49496D",
+"hB c #242449",
+"iB c #B6B6FF",
+"jB c #9292DB",
+"kB c #6D6DB6",
+"lB c #494992",
+"mB c #24246D",
+"nB c #9292FF",
+"oB c #6D6DDB",
+"pB c #4949B6",
+"qB c #242492",
+"rB c #6D6DFF",
+"sB c #4949DB",
+"tB c #2424B6",
+"uB c #4949FF",
+"vB c #2424DB",
+"wB c #2424FF",
+"xB c #FFFFDB",
+"yB c #DBDBB6",
+"zB c #B6B692",
+"0B c #92926D",
+"1B c #6D6D49",
+"2B c #494924",
+"3B c #FFFFB6",
+"4B c #DBDB92",
+"5B c #B6B66D",
+"6B c #929249",
+"7B c #6D6D24",
+"8B c #FFFF92",
+"9B c #DBDB6D",
+"+B c #B6B649",
+"/B c #929224",
+"AC c #FFFF6D",
+"BC c #DBDB49",
+"CC c #B6B624",
+"DC c #FFFF49",
+"EC c #DBDB24",
+"FC c #FFFF24",
+"GC c #FFDBFF",
+"HC c #DBB6DB",
+"IC c #B692B6",
+"JC c #926D92",
+"KC c #6D496D",
+"LC c #492449",
+"MC c #FFB6FF",
+"NC c #DB92DB",
+"OC c #B66DB6",
+"PC c #924992",
+"QC c #6D246D",
+"RC c #FF92FF",
+"SC c #DB6DDB",
+"TC c #B649B6",
+"UC c #922492",
+"VC c #FF6DFF",
+"WC c #DB49DB",
+"XC c #B624B6",
+"YC c #FF49FF",
+"ZC c #DB24DB",
+"aC c #FF24FF",
+"bC c #DBFFFF",
+"cC c #B6DBDB",
+"dC c #92B6B6",
+"eC c #6D9292",
+"fC c #496D6D",
+"gC c #244949",
+"hC c #B6FFFF",
+"iC c #92DBDB",
+"jC c #6DB6B6",
+"kC c #499292",
+"lC c #246D6D",
+"mC c #92FFFF",
+"nC c #6DDBDB",
+"oC c #49B6B6",
+"pC c #249292",
+"qC c #6DFFFF",
+"rC c #49DBDB",
+"sC c #24B6B6",
+"tC c #49FFFF",
+"uC c #24DBDB",
+"vC c #24FFFF",
+"wC c #FFDBB6",
+"xC c #DBB692",
+"yC c #B6926D",
+"zC c #926D49",
+"0C c #6D4924",
+"1C c #492400",
+"2C c #FFB692",
+"3C c #DB926D",
+"4C c #B66D49",
+"5C c #924924",
+"6C c #6D2400",
+"7C c #FFB6DB",
+"8C c #DB92B6",
+"9C c #B66D92",
+"+C c #92496D",
+"/C c #6D2449",
+"AD c #490024",
+"BD c #FF92B6",
+"CD c #DB6D92",
+"DD c #B6496D",
+"ED c #922449",
+"FD c #6D0024",
+"GD c #DBB6FF",
+"HD c #B692DB",
+"ID c #926DB6",
+"JD c #6D4992",
+"KD c #49246D",
+"LD c #240049",
+"MD c #B692FF",
+"ND c #926DDB",
+"OD c #6D49B6",
+"PD c #492492",
+"QD c #24006D",
+"RD c #B6DBFF",
+"SD c #92B6DB",
+"TD c #6D92B6",
+"UD c #496D92",
+"VD c #24496D",
+"WD c #002449",
+"XD c #92B6FF",
+"YD c #6D92DB",
+"ZD c #496DB6",
+"aD c #244992",
+"bD c #00246D",
+"cD c #B6FFDB",
+"dD c #92DBB6",
+"eD c #6DB692",
+"fD c #49926D",
+"gD c #246D49",
+"hD c #004924",
+"iD c #92FFB6",
+"jD c #6DDB92",
+"kD c #49B66D",
+"lD c #249249",
+"mD c #006D24",
+"nD c #DBFFB6",
+"oD c #B6DB92",
+"pD c #92B66D",
+"qD c #6D9249",
+"rD c #496D24",
+"sD c #244900",
+"tD c #B6FF92",
+"uD c #92DB6D",
+"vD c #6DB649",
+"wD c #499224",
+"xD c #246D00",
+"yD c #FFB600",
+"zD c #DB9200",
+"0D c #B66D00",
+"1D c #924900",
+"2D c #FF00B6",
+"3D c #DB0092",
+"4D c #B6006D",
+"5D c #920049",
+"6D c #00B6FF",
+"7D c #0092DB",
+"8D c #006DB6",
+"9D c #004992",
+"+D c #000000",
+"/D c #000000",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAHAAAAAAAAAAAAA",
+"AAAAAAAAAAHAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAHAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAHAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAHAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAHAAAAAAAAAAAAA",
+"AAAAAAAAHAHAAAAAAAAAHAHAAAAAAAAA",
+"AAAAAAHAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAHAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAHAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAHAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAHAAAAAAAAAAAAAAAAAHAAAAAAA",
+"AAAAAAAAHAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAHAHAHAHAHAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+};
diff --git a/code/src/raw/9.xpm b/code/src/raw/9.xpm
new file mode 100644
index 0000000..951a794
--- /dev/null
+++ b/code/src/raw/9.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char *xpm_xpm[] = {
+"16 16 256 2",
+"AA c #000000",
+"BA c #FF0000",
+"CA c #00FF00",
+"DA c #FFFF00",
+"EA c #0000FF",
+"FA c #FF00FF",
+"GA c #00FFFF",
+"HA c #FFFFFF",
+"IA c #DBDBDB",
+"JA c #B6B6B6",
+"KA c #929292",
+"LA c #6D6D6D",
+"MA c #494949",
+"NA c #242424",
+"OA c #DB0000",
+"PA c #B60000",
+"QA c #920000",
+"RA c #6D0000",
+"SA c #490000",
+"TA c #240000",
+"UA c #00DB00",
+"VA c #00B600",
+"WA c #009200",
+"XA c #006D00",
+"YA c #004900",
+"ZA c #002400",
+"aA c #DBDB00",
+"bA c #B6B600",
+"cA c #929200",
+"dA c #6D6D00",
+"eA c #494900",
+"fA c #242400",
+"gA c #0000DB",
+"hA c #0000B6",
+"iA c #000092",
+"jA c #00006D",
+"kA c #000049",
+"lA c #000024",
+"mA c #DB00DB",
+"nA c #B600B6",
+"oA c #920092",
+"pA c #6D006D",
+"qA c #490049",
+"rA c #240024",
+"sA c #00DBDB",
+"tA c #00B6B6",
+"uA c #009292",
+"vA c #006D6D",
+"wA c #004949",
+"xA c #002424",
+"yA c #FFDBDB",
+"zA c #DBB6B6",
+"0A c #B69292",
+"1A c #926D6D",
+"2A c #6D4949",
+"3A c #492424",
+"4A c #FFB6B6",
+"5A c #DB9292",
+"6A c #B66D6D",
+"7A c #924949",
+"8A c #6D2424",
+"9A c #FF9292",
+"+A c #DB6D6D",
+"/A c #B64949",
+"AB c #922424",
+"BB c #FF6D6D",
+"CB c #DB4949",
+"DB c #B62424",
+"EB c #FF4949",
+"FB c #DB2424",
+"GB c #FF2424",
+"HB c #DBFFDB",
+"IB c #B6DBB6",
+"JB c #92B692",
+"KB c #6D926D",
+"LB c #496D49",
+"MB c #244924",
+"NB c #B6FFB6",
+"OB c #92DB92",
+"PB c #6DB66D",
+"QB c #499249",
+"RB c #246D24",
+"SB c #92FF92",
+"TB c #6DDB6D",
+"UB c #49B649",
+"VB c #249224",
+"WB c #6DFF6D",
+"XB c #49DB49",
+"YB c #24B624",
+"ZB c #49FF49",
+"aB c #24DB24",
+"bB c #24FF24",
+"cB c #DBDBFF",
+"dB c #B6B6DB",
+"eB c #9292B6",
+"fB c #6D6D92",
+"gB c #49496D",
+"hB c #242449",
+"iB c #B6B6FF",
+"jB c #9292DB",
+"kB c #6D6DB6",
+"lB c #494992",
+"mB c #24246D",
+"nB c #9292FF",
+"oB c #6D6DDB",
+"pB c #4949B6",
+"qB c #242492",
+"rB c #6D6DFF",
+"sB c #4949DB",
+"tB c #2424B6",
+"uB c #4949FF",
+"vB c #2424DB",
+"wB c #2424FF",
+"xB c #FFFFDB",
+"yB c #DBDBB6",
+"zB c #B6B692",
+"0B c #92926D",
+"1B c #6D6D49",
+"2B c #494924",
+"3B c #FFFFB6",
+"4B c #DBDB92",
+"5B c #B6B66D",
+"6B c #929249",
+"7B c #6D6D24",
+"8B c #FFFF92",
+"9B c #DBDB6D",
+"+B c #B6B649",
+"/B c #929224",
+"AC c #FFFF6D",
+"BC c #DBDB49",
+"CC c #B6B624",
+"DC c #FFFF49",
+"EC c #DBDB24",
+"FC c #FFFF24",
+"GC c #FFDBFF",
+"HC c #DBB6DB",
+"IC c #B692B6",
+"JC c #926D92",
+"KC c #6D496D",
+"LC c #492449",
+"MC c #FFB6FF",
+"NC c #DB92DB",
+"OC c #B66DB6",
+"PC c #924992",
+"QC c #6D246D",
+"RC c #FF92FF",
+"SC c #DB6DDB",
+"TC c #B649B6",
+"UC c #922492",
+"VC c #FF6DFF",
+"WC c #DB49DB",
+"XC c #B624B6",
+"YC c #FF49FF",
+"ZC c #DB24DB",
+"aC c #FF24FF",
+"bC c #DBFFFF",
+"cC c #B6DBDB",
+"dC c #92B6B6",
+"eC c #6D9292",
+"fC c #496D6D",
+"gC c #244949",
+"hC c #B6FFFF",
+"iC c #92DBDB",
+"jC c #6DB6B6",
+"kC c #499292",
+"lC c #246D6D",
+"mC c #92FFFF",
+"nC c #6DDBDB",
+"oC c #49B6B6",
+"pC c #249292",
+"qC c #6DFFFF",
+"rC c #49DBDB",
+"sC c #24B6B6",
+"tC c #49FFFF",
+"uC c #24DBDB",
+"vC c #24FFFF",
+"wC c #FFDBB6",
+"xC c #DBB692",
+"yC c #B6926D",
+"zC c #926D49",
+"0C c #6D4924",
+"1C c #492400",
+"2C c #FFB692",
+"3C c #DB926D",
+"4C c #B66D49",
+"5C c #924924",
+"6C c #6D2400",
+"7C c #FFB6DB",
+"8C c #DB92B6",
+"9C c #B66D92",
+"+C c #92496D",
+"/C c #6D2449",
+"AD c #490024",
+"BD c #FF92B6",
+"CD c #DB6D92",
+"DD c #B6496D",
+"ED c #922449",
+"FD c #6D0024",
+"GD c #DBB6FF",
+"HD c #B692DB",
+"ID c #926DB6",
+"JD c #6D4992",
+"KD c #49246D",
+"LD c #240049",
+"MD c #B692FF",
+"ND c #926DDB",
+"OD c #6D49B6",
+"PD c #492492",
+"QD c #24006D",
+"RD c #B6DBFF",
+"SD c #92B6DB",
+"TD c #6D92B6",
+"UD c #496D92",
+"VD c #24496D",
+"WD c #002449",
+"XD c #92B6FF",
+"YD c #6D92DB",
+"ZD c #496DB6",
+"aD c #244992",
+"bD c #00246D",
+"cD c #B6FFDB",
+"dD c #92DBB6",
+"eD c #6DB692",
+"fD c #49926D",
+"gD c #246D49",
+"hD c #004924",
+"iD c #92FFB6",
+"jD c #6DDB92",
+"kD c #49B66D",
+"lD c #249249",
+"mD c #006D24",
+"nD c #DBFFB6",
+"oD c #B6DB92",
+"pD c #92B66D",
+"qD c #6D9249",
+"rD c #496D24",
+"sD c #244900",
+"tD c #B6FF92",
+"uD c #92DB6D",
+"vD c #6DB649",
+"wD c #499224",
+"xD c #246D00",
+"yD c #FFB600",
+"zD c #DB9200",
+"0D c #B66D00",
+"1D c #924900",
+"2D c #FF00B6",
+"3D c #DB0092",
+"4D c #B6006D",
+"5D c #920049",
+"6D c #00B6FF",
+"7D c #0092DB",
+"8D c #006DB6",
+"9D c #004992",
+"+D c #000000",
+"/D c #000000",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAHAAAAAAAAAAAAA",
+"AAAAAAAAAAHAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAHAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAHAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAHAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAHAAAAAAAAAAAAAHAAAAAAAAA",
+"AAAAAAAAAAHAAAAAAAAAHAHAAAAAAAAA",
+"AAAAAAAAAAAAHAHAHAHAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAA",
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+};
diff --git a/code/src/raw/process.awk b/code/src/raw/process.awk
new file mode 100644
index 0000000..0f1f0e9
--- /dev/null
+++ b/code/src/raw/process.awk
@@ -0,0 +1,21 @@
+BEGIN { lm=0; }
+
+/^\"A.*A\"/ {
+ if (lm==0) {
+ len = split($0,upper,"");
+ lm = 1;
+ } else {
+ len = split($0,lower,"");
+ lm = 0;
+ for (k=0; k<4; k++) {
+ byte = 0;
+ for (j=0; j<4; j++) {
+ i=(2*(k*4+j)+2);
+ if (upper[i]=="H") byte+=(2^(2*j+1));
+ if (lower[i]=="H") byte+=(2^(2*j));
+ }
+ printf("0x%X, ", byte);
+ }
+ print "";
+ }
+}