root/drivers/char/tga.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. set_palette
  2. __set_origin
  3. hide_cursor
  4. set_cursor
  5. con_type_init
  6. get_scrmem
  7. set_scrmem
  8. set_get_font
  9. con_adjust_height
  10. set_get_cmap
  11. vesa_blank
  12. vesa_unblank
  13. set_vesa_blanking
  14. tga_console_init
  15. tga_init_video
  16. tga_clear_screen
  17. tga_blitc

   1 /*
   2  *  linux/drivers/char/tga.c
   3  *
   4  *  Copyright (C) 1995  Jay Estabrook
   5  */
   6 
   7 /*
   8  *      tga.c
   9  *
  10  * This module exports the console io support for DEC's TGA
  11  */
  12 
  13 #include <linux/sched.h>
  14 #include <linux/timer.h>
  15 #include <linux/interrupt.h>
  16 #include <linux/tty.h>
  17 #include <linux/tty_flip.h>
  18 #include <linux/kernel.h>
  19 #include <linux/string.h>
  20 #include <linux/errno.h>
  21 #include <linux/kd.h>
  22 #include <linux/malloc.h>
  23 #include <linux/major.h>
  24 #include <linux/mm.h>
  25 #include <linux/ioport.h>
  26 #include <linux/bios32.h>
  27 #include <linux/pci.h>
  28 
  29 #include <asm/io.h>
  30 #include <asm/system.h>
  31 #include <asm/segment.h>
  32 #include <asm/bitops.h>
  33 
  34 #include "kbd_kern.h"
  35 #include "vt_kern.h"
  36 #include "consolemap.h"
  37 #include "selection.h"
  38 #include "console_struct.h"
  39 
  40 extern void register_console(void (*proc)(const char *));
  41 extern void console_print(const char *);
  42 
  43 /* TGA hardware description (minimal) */
  44 /*
  45  * Offsets within Memory Space
  46  */
  47 #define TGA_ROM_OFFSET                  0x0000000
  48 #define TGA_REGS_OFFSET                 0x0100000
  49 #define TGA_8PLANE_FB_OFFSET            0x0200000
  50 #define TGA_24PLANE_FB_OFFSET           0x0804000
  51 #define TGA_24PLUSZ_FB_OFFSET           0x1004000
  52 
  53 #define TGA_PLANEMASK_REG               0x0028
  54 #define TGA_MODE_REG                    0x0030
  55 #define TGA_RASTEROP_REG                0x0034
  56 #define TGA_DEEP_REG                    0x0050
  57 #define TGA_PIXELMASK_REG               0x005c
  58 #define TGA_CURSOR_BASE_REG             0x0060
  59 #define TGA_HORIZ_REG                   0x0064
  60 #define TGA_VERT_REG                    0x0068
  61 #define TGA_BASE_ADDR_REG               0x006c
  62 #define TGA_VALID_REG                   0x0070
  63 #define TGA_CURSOR_XY_REG               0x0074
  64 #define TGA_INTR_STAT_REG               0x007c
  65 #define TGA_RAMDAC_SETUP_REG            0x00c0
  66 #define TGA_BLOCK_COLOR0_REG            0x0140
  67 #define TGA_BLOCK_COLOR1_REG            0x0144
  68 #define TGA_CLOCK_REG                   0x01e8
  69 #define TGA_RAMDAC_REG                  0x01f0
  70 #define TGA_CMD_STAT_REG                0x01f8
  71 
  72 /*
  73  * useful defines for managing the BT485 on the 8-plane TGA
  74  */
  75 #define BT485_READ_BIT                  0x01
  76 #define BT485_WRITE_BIT                 0x00
  77 
  78 #define BT485_ADDR_PAL_WRITE            0x00
  79 #define BT485_DATA_PAL                  0x02
  80 #define BT485_PIXEL_MASK                0x04
  81 #define BT485_ADDR_PAL_READ             0x06
  82 #define BT485_ADDR_CUR_WRITE            0x08
  83 #define BT485_DATA_CUR                  0x0a
  84 #define BT485_CMD_0                     0x0c
  85 #define BT485_ADDR_CUR_READ             0x0e
  86 #define BT485_CMD_1                     0x10
  87 #define BT485_CMD_2                     0x12
  88 #define BT485_STATUS                    0x14
  89 #define BT485_CMD_3                     0x14
  90 #define BT485_CUR_RAM                   0x16
  91 #define BT485_CUR_LOW_X                 0x18
  92 #define BT485_CUR_HIGH_X                0x1a
  93 #define BT485_CUR_LOW_Y                 0x1c
  94 #define BT485_CUR_HIGH_Y                0x1e
  95 
  96 /*
  97  * useful defines for managing the BT463 on the 24-plane TGAs
  98  */
  99 #define BT463_ADDR_LO           0x0
 100 #define BT463_ADDR_HI           0x1
 101 #define BT463_REG_ACC           0x2
 102 #define BT463_PALETTE           0x3
 103 
 104 #define BT463_CUR_CLR_0         0x0100
 105 #define BT463_CUR_CLR_1         0x0101
 106 
 107 #define BT463_CMD_REG_0         0x0201
 108 #define BT463_CMD_REG_1         0x0202
 109 #define BT463_CMD_REG_2         0x0203
 110 
 111 #define BT463_READ_MASK_0       0x0205
 112 #define BT463_READ_MASK_1       0x0206
 113 #define BT463_READ_MASK_2       0x0207
 114 #define BT463_READ_MASK_3       0x0208
 115 
 116 #define BT463_BLINK_MASK_0      0x0209
 117 #define BT463_BLINK_MASK_1      0x020a
 118 #define BT463_BLINK_MASK_2      0x020b
 119 #define BT463_BLINK_MASK_3      0x020c
 120 
 121 #define BT463_WINDOW_TYPE_BASE  0x0300
 122 
 123 /*
 124  * built-in font management constants
 125  *
 126  * NOTE: the built-in font is 8x16, and the video resolution
 127  * is 640x480 @ 60Hz.
 128  * This means we could put 30 rows of text on the screen (480/16).
 129  * However, we wish to make then TGA look just like a VGA, as the
 130  * default, so, we pad the character to 8x18, and leave some scan
 131  * lines at the bottom unused.
 132  */
 133 #define TGA_F_WIDTH 8
 134 #define TGA_F_HEIGHT 16
 135 #define TGA_F_HEIGHT_PADDED 18
 136 
 137 int tga_type;
 138 unsigned int tga_mem_base;
 139 unsigned long tga_fb_base;
 140 unsigned long tga_regs_base;
 141 unsigned int tga_bpp, tga_fb_width, tga_fb_height, tga_fb_stride;
 142 
 143 static unsigned int fb_offset_presets[4] = {
 144         TGA_8PLANE_FB_OFFSET,
 145         TGA_24PLANE_FB_OFFSET,
 146         0xffffffff,
 147         TGA_24PLUSZ_FB_OFFSET
 148 };
 149 
 150 static unsigned int deep_presets[4] = {
 151   0x00014000,
 152   0x0001440d,
 153   0xffffffff,
 154   0x0001441d
 155 };
 156 
 157 static unsigned int rasterop_presets[4] = {
 158   0x00000003,
 159   0x00000303,
 160   0xffffffff,
 161   0x00000303
 162 };
 163 
 164 static unsigned int mode_presets[4] = {
 165   0x00002000,
 166   0x00002300,
 167   0xffffffff,
 168   0x00002300
 169 };
 170 
 171 static unsigned int base_addr_presets[4] = {
 172   0x00000000,
 173   0x00000001,
 174   0xffffffff,
 175   0x00000001
 176 };
 177 
 178 #define TGA_WRITE_REG(v,r) \
 179         { writel((v), tga_regs_base+(r)); mb(); }
 180 
 181 #define TGA_READ_REG(r) readl(tga_regs_base+(r))
 182 
 183 #define BT485_WRITE(v,r) \
 184           TGA_WRITE_REG((r),TGA_RAMDAC_SETUP_REG);              \
 185           TGA_WRITE_REG(((v)&0xff)|((r)<<8),TGA_RAMDAC_REG);
 186 
 187 #define BT463_LOAD_ADDR(a) \
 188         TGA_WRITE_REG(BT463_ADDR_LO<<2, TGA_RAMDAC_SETUP_REG); \
 189         TGA_WRITE_REG((BT463_ADDR_LO<<10)|((a)&0xff), TGA_RAMDAC_REG); \
 190         TGA_WRITE_REG(BT463_ADDR_HI<<2, TGA_RAMDAC_SETUP_REG); \
 191         TGA_WRITE_REG((BT463_ADDR_HI<<10)|(((a)>>8)&0xff), TGA_RAMDAC_REG);
 192 
 193 #define BT463_WRITE(m,a,v) \
 194         BT463_LOAD_ADDR((a)); \
 195         TGA_WRITE_REG(((m)<<2),TGA_RAMDAC_SETUP_REG); \
 196         TGA_WRITE_REG(((m)<<10)|((v)&0xff),TGA_RAMDAC_REG);
 197 
 198 extern char tga_builtin_font[];
 199 
 200 void tga_init_video(void);
 201 void tga_clear_screen(void);
 202 
 203 void
 204 set_palette (void)
     /* [previous][next][first][last][top][bottom][index][help] */
 205 {
 206   int i, j;
 207 
 208   if (tga_type == 0) { /* 8-plane */
 209     BT485_WRITE(0x00, BT485_ADDR_PAL_WRITE);
 210     TGA_WRITE_REG(BT485_DATA_PAL, TGA_RAMDAC_SETUP_REG);
 211 
 212     for (i = 0; i < 16; i++) {
 213      j = color_table[i];
 214      TGA_WRITE_REG(default_red[j]|(BT485_DATA_PAL<<8),TGA_RAMDAC_REG);
 215      TGA_WRITE_REG(default_grn[j]|(BT485_DATA_PAL<<8),TGA_RAMDAC_REG);
 216      TGA_WRITE_REG(default_blu[j]|(BT485_DATA_PAL<<8),TGA_RAMDAC_REG);
 217    } 
 218   } else {
 219     BT463_LOAD_ADDR(0x0000);
 220     TGA_WRITE_REG((BT463_PALETTE<<2), TGA_RAMDAC_REG);
 221 
 222     for (i = 0; i < 16; i++) {
 223       j = color_table[i];
 224       TGA_WRITE_REG(default_red[j]|(BT463_PALETTE<<10), TGA_RAMDAC_REG);
 225       TGA_WRITE_REG(default_grn[j]|(BT463_PALETTE<<10), TGA_RAMDAC_REG);
 226       TGA_WRITE_REG(default_blu[j]|(BT463_PALETTE<<10), TGA_RAMDAC_REG);
 227     }
 228   }
 229 }
 230 
 231 void
 232 __set_origin(unsigned short offset)
     /* [previous][next][first][last][top][bottom][index][help] */
 233 {
 234   /*
 235    * should not be called, but if so, do nothing...
 236    */
 237 }
 238 
 239 /*
 240  * Hide the cursor from view, during blanking, usually...
 241  */
 242 void
 243 hide_cursor(void)
     /* [previous][next][first][last][top][bottom][index][help] */
 244 {
 245         unsigned long flags;
 246         save_flags(flags); cli();
 247 
 248         if (tga_type == 0) {
 249           BT485_WRITE(0x20, BT485_CMD_2);
 250         } else {
 251           TGA_WRITE_REG(0x03, TGA_VALID_REG); /* SCANNING and BLANK */
 252         }
 253 
 254         restore_flags(flags);
 255 }
 256 
 257 void
 258 set_cursor(int currcons)
     /* [previous][next][first][last][top][bottom][index][help] */
 259 {
 260   unsigned int idx, xt, yt, row, col;
 261   unsigned long flags;
 262 
 263   if (currcons != fg_console || console_blanked || vcmode == KD_GRAPHICS)
 264     return;
 265 
 266   if (__real_origin != __origin)
 267     __set_origin(__real_origin);
 268 
 269   save_flags(flags); cli();
 270 
 271   if (deccm) {
 272     idx = (pos - video_mem_base) >> 1;
 273     col = idx % 80;
 274     row = (idx - col) / 80;
 275 
 276     if (tga_type == 0) { /* 8-plane */
 277 
 278       xt = col * TGA_F_WIDTH + 64;
 279       yt = row * TGA_F_HEIGHT_PADDED + 64;
 280 
 281       /* make sure it's enabled */
 282       BT485_WRITE(0x22, BT485_CMD_2); /* WIN cursor type */
 283 
 284       BT485_WRITE(xt, BT485_CUR_LOW_X);
 285       BT485_WRITE((xt >> 8), BT485_CUR_HIGH_X);
 286       BT485_WRITE(yt, BT485_CUR_LOW_Y);
 287       BT485_WRITE((yt >> 8), BT485_CUR_HIGH_Y);
 288 
 289     } else {
 290 
 291       xt = col * TGA_F_WIDTH + 144;
 292       yt = row * TGA_F_HEIGHT_PADDED + 35;
 293 
 294       TGA_WRITE_REG(0x05, TGA_VALID_REG); /* SCANNING and CURSOR */
 295       TGA_WRITE_REG(xt | (yt << 12), TGA_CURSOR_XY_REG);
 296     }
 297 
 298   } else
 299     hide_cursor();
 300   restore_flags(flags);
 301 }
 302 
 303 unsigned long
 304 con_type_init(unsigned long kmem_start, const char **display_desc)
     /* [previous][next][first][last][top][bottom][index][help] */
 305 {
 306         can_do_color = 1;
 307 
 308         /*
 309         * fake the screen memory with some CPU memory
 310         */
 311         video_mem_base = kmem_start;
 312         kmem_start += video_screen_size;
 313         video_mem_term = kmem_start;
 314 
 315         video_type = VIDEO_TYPE_TGAC;
 316 
 317         *display_desc = "TGA";
 318 
 319         return kmem_start;
 320 }
 321 
 322 /*
 323  * NOTE: get_scrmem() and set_scrmem() are here only because
 324  * the VGA version of set_scrmem() has some direct VGA references.
 325  */
 326 void
 327 get_scrmem(int currcons)
     /* [previous][next][first][last][top][bottom][index][help] */
 328 {
 329         memcpyw((unsigned short *)vc_scrbuf[currcons],
 330                 (unsigned short *)origin, video_screen_size);
 331         __scrollback_mode = 0 ;
 332         origin = video_mem_start = (unsigned long)vc_scrbuf[currcons];
 333         scr_end = video_mem_end = video_mem_start + video_screen_size;
 334         pos = origin + y*video_size_row + (x<<1);
 335 }
 336 
 337 void
 338 set_scrmem(int currcons, long offset)
     /* [previous][next][first][last][top][bottom][index][help] */
 339 {
 340         if (video_mem_term - video_mem_base < offset + video_screen_size)
 341           offset = 0;   /* strange ... */
 342         memcpyw((unsigned short *)(video_mem_base + offset),
 343                 (unsigned short *) origin, video_screen_size);
 344         video_mem_start = video_mem_base;
 345         video_mem_end = video_mem_term;
 346         origin = video_mem_base + offset;
 347         scr_end = origin + video_screen_size;
 348         pos = origin + y*video_size_row + (x<<1);
 349 }
 350 
 351 /*
 352  * PIO_FONT support.
 353  *
 354  * for now, we will use/allow *only* our built-in font...
 355  */
 356 int
 357 set_get_font(char * arg, int set, int ch512)
     /* [previous][next][first][last][top][bottom][index][help] */
 358 {
 359         return -EINVAL;
 360 }
 361 
 362 /*
 363  * Adjust the screen to fit a font of a certain height
 364  *
 365  * Returns < 0 for error, 0 if nothing changed, and the number
 366  * of lines on the adjusted console if changed.
 367  *
 368  * for now, we only support the built-in font...
 369  */
 370 int
 371 con_adjust_height(unsigned long fontheight)
     /* [previous][next][first][last][top][bottom][index][help] */
 372 {
 373         return -EINVAL;
 374 }
 375 
 376 /* NOTE:
 377  * this is here, and not in console.c, because the VGA version
 378  * tests the controller type to see if color can be done. We *KNOW*
 379  * that we can do color on the TGA... :-)
 380  *
 381  * FIXME? maybe the init codes for VGA and TGA could set
 382  * a flag for (in)ability to do colormap set/get???
 383  */
 384 
 385 int
 386 set_get_cmap(unsigned char * arg, int set) {
     /* [previous][next][first][last][top][bottom][index][help] */
 387         int i;
 388 
 389         i = verify_area(set ? VERIFY_READ : VERIFY_WRITE, (void *)arg, 16*3);
 390         if (i)
 391                 return i;
 392 
 393         for (i=0; i<16; i++) {
 394                 if (set) {
 395                         default_red[i] = get_user(arg++) ;
 396                         default_grn[i] = get_user(arg++) ;
 397                         default_blu[i] = get_user(arg++) ;
 398                 } else {
 399                         put_user (default_red[i], arg++) ;
 400                         put_user (default_grn[i], arg++) ;
 401                         put_user (default_blu[i], arg++) ;
 402                 }
 403         }
 404         if (set) {
 405                 for (i=0; i<MAX_NR_CONSOLES; i++)
 406                     if (vc_cons_allocated(i)) {
 407                         int j, k ;
 408                         for (j=k=0; j<16; j++) {
 409                             vc_cons[i].d->vc_palette[k++] = default_red[j];
 410                             vc_cons[i].d->vc_palette[k++] = default_grn[j];
 411                             vc_cons[i].d->vc_palette[k++] = default_blu[j];
 412                         }
 413                     }
 414                 set_palette() ;
 415         }
 416 
 417         return 0;
 418 }
 419 
 420 /*
 421  * dummy routines for the VESA blanking code, which is VGA only,
 422  * so we don't have to carry that stuff around for the TGA...
 423  */
 424 void vesa_blank(void)
     /* [previous][next][first][last][top][bottom][index][help] */
 425 {
 426 }
 427 void vesa_unblank(void)
     /* [previous][next][first][last][top][bottom][index][help] */
 428 {
 429 }
 430 void set_vesa_blanking(const unsigned long arg)
     /* [previous][next][first][last][top][bottom][index][help] */
 431 {
 432 }
 433 
 434 /*
 435  * video init code, called from withing the PCI bus probing code;
 436  * when TGA console is configured, at the end of the probing code,
 437  * we call here to look for a TGA device, and proceed...
 438  */
 439 void
 440 tga_console_init(void)
     /* [previous][next][first][last][top][bottom][index][help] */
 441 {
 442         unsigned char pci_bus, pci_devfn;
 443         int status;
 444         
 445         /*
 446          * first, find the TGA among the PCI devices...
 447          */
 448         status = pcibios_find_device (PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TGA,
 449                                       0, &pci_bus, &pci_devfn);
 450         if (status == PCIBIOS_DEVICE_NOT_FOUND) {
 451                 /* PANIC!!! */
 452                 printk("tga_console_init: TGA not found!!! :-(\n");
 453                 return;
 454         }
 455 
 456         /*
 457          * read BASE_REG_0 for memory address
 458          */
 459         pcibios_read_config_dword(pci_bus, pci_devfn,
 460                                   PCI_BASE_ADDRESS_0, &tga_mem_base);
 461         tga_mem_base &= ~15;
 462 #ifdef DEBUG
 463         printk("tga_console_init: mem_base 0x%x\n", tga_mem_base);
 464 #endif /* DEBUG */
 465 
 466         tga_type = (readl((unsigned long)tga_mem_base) >> 12) & 0x0f;
 467         if (tga_type != 0 && tga_type != 1 && tga_type != 3) {
 468           printk("TGA type (0x%x) unrecognized!\n", tga_type);
 469           return;
 470         }
 471         tga_init_video();
 472         tga_clear_screen();
 473 
 474         /*
 475          * FINALLY, we can register TGA as console (whew!)
 476          */
 477         register_console(console_print);
 478 }
 479 
 480 unsigned char PLLbits[7] = { 0x80, 0x04, 0x00, 0x24, 0x44, 0x80, 0xb8 };
 481 
 482 const unsigned long bt485_cursor_source[64] = {
 483   0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,
 484   0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,
 485   0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,
 486   0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,
 487   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 488   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 489   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 490 };
 491 
 492 const unsigned int bt463_cursor_source[256] = {
 493   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 494   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 495   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 496   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 497   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 498   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 499   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 500   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 501   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 502   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 503   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 504   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 505   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 506   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 507   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 508   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 509   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 510   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 511   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 512   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 513   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 514   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 515   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 516   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 517   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 518   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 519   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 520   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 521 };
 522 
 523 void
 524 tga_init_video()
     /* [previous][next][first][last][top][bottom][index][help] */
 525 {
 526         int i, j, temp;
 527         unsigned char *cbp;
 528 
 529         tga_regs_base = ((unsigned long)tga_mem_base + TGA_REGS_OFFSET);
 530         tga_fb_base =
 531           ((unsigned long)tga_mem_base + fb_offset_presets[tga_type]);
 532 
 533         /* first, disable video timing */
 534         TGA_WRITE_REG(0x03, TGA_VALID_REG); /* SCANNING and BLANK */
 535 
 536         /* write the DEEP register */
 537         while (TGA_READ_REG(TGA_CMD_STAT_REG) & 1) /* wait for not busy */
 538           continue;
 539 
 540         mb();
 541         TGA_WRITE_REG(deep_presets[tga_type], TGA_DEEP_REG);
 542         while (TGA_READ_REG(TGA_CMD_STAT_REG) & 1) /* wait for not busy */
 543           continue;
 544         mb();
 545 
 546         /* write some more registers */
 547         TGA_WRITE_REG(rasterop_presets[tga_type], TGA_RASTEROP_REG);
 548         TGA_WRITE_REG(mode_presets[tga_type], TGA_MODE_REG);
 549         TGA_WRITE_REG(base_addr_presets[tga_type], TGA_BASE_ADDR_REG);
 550 
 551         /* write the PLL for 640x480 @ 60Hz */
 552         for (i = 0; i <= 6; i++) {
 553           for (j = 0; j <= 7; j++) {
 554             temp = (PLLbits[i] >> (7-j)) & 1;
 555             if (i == 6 && j == 7)
 556               temp |= 2;
 557             TGA_WRITE_REG(temp, TGA_CLOCK_REG);
 558           }
 559         }
 560 
 561         /* write some more registers */
 562         TGA_WRITE_REG(0xffffffff, TGA_PLANEMASK_REG);
 563         TGA_WRITE_REG(0xffffffff, TGA_PIXELMASK_REG);
 564         TGA_WRITE_REG(0x12345678, TGA_BLOCK_COLOR0_REG);
 565         TGA_WRITE_REG(0x12345678, TGA_BLOCK_COLOR1_REG);
 566 
 567         /* init video timeing regs for 640x480 @ 60 Hz */
 568         TGA_WRITE_REG(0x018608a0, TGA_HORIZ_REG);
 569         TGA_WRITE_REG(0x084251e0, TGA_VERT_REG);
 570 
 571         if (tga_type == 0) { /* 8-plane */
 572 
 573           tga_bpp = 1;
 574 
 575           /* init BT485 RAMDAC registers */
 576           BT485_WRITE(0xa2, BT485_CMD_0);
 577           BT485_WRITE(0x01, BT485_ADDR_PAL_WRITE);
 578           BT485_WRITE(0x14, BT485_CMD_3); /* cursor 64x64 */
 579           BT485_WRITE(0x40, BT485_CMD_1);
 580           BT485_WRITE(0x22, BT485_CMD_2); /* WIN cursor type */
 581           BT485_WRITE(0xff, BT485_PIXEL_MASK);
 582 
 583           /* fill palette registers */
 584           BT485_WRITE(0x00, BT485_ADDR_PAL_WRITE);
 585           TGA_WRITE_REG(BT485_DATA_PAL, TGA_RAMDAC_SETUP_REG);
 586 
 587           for (i = 0; i < 16; i++) {
 588             j = color_table[i];
 589             TGA_WRITE_REG(default_red[j]|(BT485_DATA_PAL<<8),
 590                           TGA_RAMDAC_REG);
 591             TGA_WRITE_REG(default_grn[j]|(BT485_DATA_PAL<<8),
 592                           TGA_RAMDAC_REG);
 593             TGA_WRITE_REG(default_blu[j]|(BT485_DATA_PAL<<8),
 594                           TGA_RAMDAC_REG);
 595           }
 596           for (i = 0; i < 240*3; i += 4) {
 597             TGA_WRITE_REG(0x55|(BT485_DATA_PAL<<8), TGA_RAMDAC_REG);
 598             TGA_WRITE_REG(0x00|(BT485_DATA_PAL<<8), TGA_RAMDAC_REG);
 599             TGA_WRITE_REG(0x00|(BT485_DATA_PAL<<8), TGA_RAMDAC_REG);
 600             TGA_WRITE_REG(0x00|(BT485_DATA_PAL<<8), TGA_RAMDAC_REG);
 601           }       
 602 
 603           /* initialize RAMDAC cursor colors */
 604           BT485_WRITE(0, BT485_ADDR_CUR_WRITE);
 605 
 606           BT485_WRITE(0xaa, BT485_DATA_CUR); /* overscan WHITE */
 607           BT485_WRITE(0xaa, BT485_DATA_CUR); /* overscan WHITE */
 608           BT485_WRITE(0xaa, BT485_DATA_CUR); /* overscan WHITE */
 609 
 610           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 1 BLACK */
 611           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 1 BLACK */
 612           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 1 BLACK */
 613 
 614           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 2 BLACK */
 615           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 2 BLACK */
 616           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 2 BLACK */
 617 
 618           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 3 BLACK */
 619           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 3 BLACK */
 620           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 3 BLACK */
 621 
 622           /* initialize RAMDAC cursor RAM */
 623           BT485_WRITE(0x00, BT485_ADDR_PAL_WRITE);
 624           cbp = (unsigned char *)bt485_cursor_source;
 625           for (i = 0; i < 512; i++) {
 626             BT485_WRITE(*cbp++, BT485_CUR_RAM);
 627           }
 628           for (i = 0; i < 512; i++) {
 629             BT485_WRITE(0xff, BT485_CUR_RAM);
 630           }
 631 
 632         } else { /* 24-plane or 24plusZ */
 633 
 634           tga_bpp = 4;
 635 
 636           TGA_WRITE_REG(0x01, TGA_VALID_REG); /* SCANNING */
 637 
 638           /*
 639            * init some registers
 640            */
 641           BT463_WRITE(BT463_REG_ACC, BT463_CMD_REG_0, 0x40);
 642           BT463_WRITE(BT463_REG_ACC, BT463_CMD_REG_1, 0x08);
 643           BT463_WRITE(BT463_REG_ACC, BT463_CMD_REG_2, 0x40);
 644 
 645           BT463_WRITE(BT463_REG_ACC, BT463_READ_MASK_0, 0xff);
 646           BT463_WRITE(BT463_REG_ACC, BT463_READ_MASK_1, 0xff);
 647           BT463_WRITE(BT463_REG_ACC, BT463_READ_MASK_2, 0xff);
 648           BT463_WRITE(BT463_REG_ACC, BT463_READ_MASK_3, 0x0f);
 649 
 650           BT463_WRITE(BT463_REG_ACC, BT463_BLINK_MASK_0, 0x00);
 651           BT463_WRITE(BT463_REG_ACC, BT463_BLINK_MASK_1, 0x00);
 652           BT463_WRITE(BT463_REG_ACC, BT463_BLINK_MASK_2, 0x00);
 653           BT463_WRITE(BT463_REG_ACC, BT463_BLINK_MASK_3, 0x00);
 654 
 655           /*
 656            * fill the palette
 657            */
 658           BT463_LOAD_ADDR(0x0000);
 659           TGA_WRITE_REG((BT463_PALETTE<<2), TGA_RAMDAC_REG);
 660 
 661           for (i = 0; i < 16; i++) {
 662             j = color_table[i];
 663             TGA_WRITE_REG(default_red[j]|(BT463_PALETTE<<10),
 664                           TGA_RAMDAC_REG);
 665             TGA_WRITE_REG(default_grn[j]|(BT463_PALETTE<<10),
 666                           TGA_RAMDAC_REG);
 667             TGA_WRITE_REG(default_blu[j]|(BT463_PALETTE<<10),
 668                           TGA_RAMDAC_REG);
 669           }
 670           for (i = 0; i < 512*3; i += 4) {
 671             TGA_WRITE_REG(0x55|(BT463_PALETTE<<10), TGA_RAMDAC_REG);
 672             TGA_WRITE_REG(0x00|(BT463_PALETTE<<10), TGA_RAMDAC_REG);
 673             TGA_WRITE_REG(0x00|(BT463_PALETTE<<10), TGA_RAMDAC_REG);
 674             TGA_WRITE_REG(0x00|(BT463_PALETTE<<10), TGA_RAMDAC_REG);
 675           }       
 676 
 677           /*
 678            * fill window type table after start of vertical retrace
 679            */
 680           while (!(TGA_READ_REG(TGA_INTR_STAT_REG) & 0x01))
 681             continue;
 682           TGA_WRITE_REG(0x01, TGA_INTR_STAT_REG);
 683           mb();
 684           while (!(TGA_READ_REG(TGA_INTR_STAT_REG) & 0x01))
 685             continue;
 686           TGA_WRITE_REG(0x01, TGA_INTR_STAT_REG);
 687 
 688           BT463_LOAD_ADDR(BT463_WINDOW_TYPE_BASE);
 689           TGA_WRITE_REG((BT463_REG_ACC<<2), TGA_RAMDAC_SETUP_REG);
 690           
 691           for (i = 0; i < 16; i++) {
 692             TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 693             TGA_WRITE_REG(0x01|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 694             TGA_WRITE_REG(0x80|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 695           }
 696 
 697           /*
 698            * init cursor colors
 699            */
 700           BT463_LOAD_ADDR(BT463_CUR_CLR_0);
 701 
 702           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG); /* background */
 703           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG); /* background */
 704           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG); /* background */
 705 
 706           TGA_WRITE_REG(0xff|(BT463_REG_ACC<<10), TGA_RAMDAC_REG); /* foreground */
 707           TGA_WRITE_REG(0xff|(BT463_REG_ACC<<10), TGA_RAMDAC_REG); /* foreground */
 708           TGA_WRITE_REG(0xff|(BT463_REG_ACC<<10), TGA_RAMDAC_REG); /* foreground */
 709 
 710           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 711           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 712           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 713 
 714           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 715           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 716           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 717 
 718           /*
 719            * finally, init the cursor shape
 720            */
 721           temp = tga_fb_base - 1024; /* this assumes video starts at base
 722                                        and base is beyond memory start*/
 723 
 724           for (i = 0; i < 256; i++) {
 725             writel(bt463_cursor_source[i], temp + i*4);
 726           }
 727           TGA_WRITE_REG(temp & 0x000fffff, TGA_CURSOR_BASE_REG);
 728         }
 729 
 730         /* finally, enable video scan & cursor
 731            (and pray for the monitor... :-) */
 732         TGA_WRITE_REG(0x05, TGA_VALID_REG); /* SCANNING and CURSOR */
 733 
 734         /* oh, and set the globals describing the resolution... :-) */
 735         tga_fb_width = 640 * tga_bpp;
 736         tga_fb_height = 480;
 737         tga_fb_stride = tga_fb_width / sizeof(int);
 738 }
 739 
 740 void
 741 tga_clear_screen()
     /* [previous][next][first][last][top][bottom][index][help] */
 742 {
 743     register int i, j;
 744     register unsigned int *dst;
 745 
 746     dst = (unsigned int *) ((unsigned long)tga_fb_base);
 747     for (i = 0; i < tga_fb_height; i++, dst += tga_fb_stride) {
 748       for (j = 0; j < tga_fb_stride; j++) {
 749         writel(0, (dst+j));
 750       }
 751     }
 752 
 753     /* also clear out the "shadow" screen memory */
 754     memset((char *)video_mem_base, 0, (video_mem_term - video_mem_base));
 755 }
 756 
 757 /*
 758  * tga_blitc
 759  *
 760  * Displays an ASCII character at a specified character cell
 761  *  position.
 762  *
 763  * Called from scr_writew() when the destination is
 764  *  the "shadow" screen
 765  */
 766 static unsigned int
 767 fontmask_bits[16] = {
 768     0x00000000,
 769     0xff000000,
 770     0x00ff0000,
 771     0xffff0000,
 772     0x0000ff00,
 773     0xff00ff00,
 774     0x00ffff00,
 775     0xffffff00,
 776     0x000000ff,
 777     0xff0000ff,
 778     0x00ff00ff,
 779     0xffff00ff,
 780     0x0000ffff,
 781     0xff00ffff,
 782     0x00ffffff,
 783     0xffffffff
 784 };
 785 
 786 int
 787 tga_blitc(unsigned int charattr, unsigned long addr)
     /* [previous][next][first][last][top][bottom][index][help] */
 788 {
 789   int row, col, temp, c, attrib;
 790   register unsigned int fgmask, bgmask, data, rowbits;
 791   register unsigned int *dst;
 792   register unsigned char *font_row;
 793   register int i, j, stride;
 794 
 795   c = charattr & 0x00ff;
 796   attrib = (charattr >> 8) & 0x00ff;
 797 
 798   /*
 799    * extract foreground and background indices
 800    * NOTE: we always treat blink/underline bits as color for now...
 801    */
 802   fgmask = attrib & 0x0f;
 803   bgmask = (attrib >> 4) & 0x0f;
 804 
 805   i = (c & 0xff) << 4; /* NOTE: assumption of 16 bytes per character bitmap */
 806 
 807   /*
 808    * calculate (row,col) from addr and video_mem_base
 809    */
 810   temp = (addr - video_mem_base) >> 1;
 811   col = temp % 80;
 812   row = (temp - col) / 80;
 813 
 814   /*
 815    * calculate destination address
 816    */
 817   dst = (unsigned int *) ( (unsigned long)tga_fb_base
 818                            + ( row * tga_fb_width * TGA_F_HEIGHT_PADDED )
 819                            + ( col * TGA_F_WIDTH * tga_bpp) );
 820 
 821   font_row = (unsigned char *)&tga_builtin_font[i];
 822   stride = tga_fb_stride;
 823 
 824   if (tga_type == 0) { /* 8-plane */
 825 
 826     fgmask = fgmask << 8 | fgmask;
 827     fgmask |= fgmask << 16;
 828     bgmask = bgmask << 8 | bgmask;
 829     bgmask |= bgmask << 16;
 830 
 831     for ( j = 0; j < TGA_F_HEIGHT_PADDED; j++ ) {
 832       if (j < TGA_F_HEIGHT) {
 833         rowbits = font_row[j];
 834       } else {
 835         /* dup the last n rows only if char > 0x7f */
 836         if (c & 0x80)
 837           rowbits = font_row[j-(TGA_F_HEIGHT_PADDED-TGA_F_HEIGHT)];
 838         else
 839           rowbits = 0;
 840       }
 841       data = fontmask_bits[(rowbits>>4)&0xf];
 842       data = (data & fgmask) | (~data & bgmask);
 843       writel(data, dst);
 844       data = fontmask_bits[rowbits&0xf];
 845       data = (data & fgmask) | (~data & bgmask);
 846       writel(data, (dst+1));
 847       dst += stride;
 848     }
 849   } else { /* 24-plane */
 850 
 851     fgmask = (default_red[fgmask] << 16) |
 852              (default_grn[fgmask] <<  8) |
 853              (default_blu[fgmask] <<  0);
 854     bgmask = (default_red[bgmask] << 16) |
 855              (default_grn[bgmask] <<  8) |
 856              (default_blu[bgmask] <<  0);
 857 
 858     for ( i = 0; i < TGA_F_HEIGHT_PADDED; i++ ) {
 859       if (i < TGA_F_HEIGHT) {
 860         rowbits = font_row[i];
 861       } else {
 862         /* dup the last n rows only if char > 0x7f */
 863         if (c & 0x80)
 864           rowbits = font_row[i-(TGA_F_HEIGHT_PADDED-TGA_F_HEIGHT)];
 865         else
 866           rowbits = 0;
 867       }
 868       data = 1 << (TGA_F_WIDTH - 1);
 869       for (j = 0; j < TGA_F_WIDTH; j++, data >>= 1) {
 870         if (rowbits & data)
 871           writel(fgmask, (dst+j));
 872         else
 873           writel(bgmask, (dst+j));
 874       }
 875       dst += stride;
 876     }
 877   }
 878   return (0);
 879 }
 880 
 881 /*
 882  * font table of displayable characters.
 883  */
 884 char  tga_builtin_font[]={
 885 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 886 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd, 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00,
 887 0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xc3, 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00,
 888 0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00,
 889 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
 890 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 891 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 892 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 893 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
 894 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
 895 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff,
 896 0x00, 0x00, 0x1e, 0x0e, 0x1a, 0x32, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00,
 897 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
 898 0x00, 0x00, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x30, 0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00,
 899 0x00, 0x00, 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x67, 0xe7, 0xe6, 0xc0, 0x00, 0x00, 0x00,
 900 0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, 0x3c, 0xdb, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
 901 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
 902 0x00, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0xfe, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
 903 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
 904 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
 905 0x00, 0x00, 0x7f, 0xdb, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00,
 906 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00,
 907 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00,
 908 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
 909 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
 910 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
 911 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 912 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 913 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 914 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 915 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, 0x7c, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
 916 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
 917 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 918 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
 919 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 920 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00,
 921 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00,
 922 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, 0x30, 0x60, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x00,
 923 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
 924 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 925 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00,
 926 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
 927 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 928 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 929 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00,
 930 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 931 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
 932 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
 933 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xce, 0xde, 0xf6, 0xe6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 934 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
 935 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
 936 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 937 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00,
 938 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 939 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 940 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00,
 941 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 942 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00,
 943 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
 944 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
 945 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00,
 946 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 947 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00,
 948 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
 949 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xde, 0xde, 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00,
 950 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
 951 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00,
 952 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,
 953 0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00,
 954 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00,
 955 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
 956 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00,
 957 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
 958 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 959 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00,
 960 0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
 961 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00,
 962 0x00, 0x00, 0xc3, 0xe7, 0xff, 0xff, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00,
 963 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
 964 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 965 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
 966 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x0c, 0x0e, 0x00, 0x00,
 967 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
 968 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 969 0x00, 0x00, 0xff, 0xdb, 0x99, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 970 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 971 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
 972 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
 973 0x00, 0x00, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18, 0x3c, 0x66, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00,
 974 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 975 0x00, 0x00, 0xff, 0xc3, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc1, 0xc3, 0xff, 0x00, 0x00, 0x00, 0x00,
 976 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00,
 977 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
 978 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00,
 979 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 980 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
 981 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 982 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
 983 0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00,
 984 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 985 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
 986 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 987 0x00, 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
 988 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00,
 989 0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
 990 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 991 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00,
 992 0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
 993 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 994 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00,
 995 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
 996 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 997 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00,
 998 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00,
 999 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
1000 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1001 0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00,
1002 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1003 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
1004 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0x66, 0x00, 0x00, 0x00, 0x00,
1005 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0xc3, 0x00, 0x00, 0x00, 0x00,
1006 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00,
1007 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
1008 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00,
1009 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
1010 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00,
1011 0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1012 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
1013 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x0c, 0x06, 0x7c, 0x00, 0x00,
1014 0x00, 0x00, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1015 0x00, 0x0c, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1016 0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1017 0x00, 0x00, 0xcc, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1018 0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1019 0x00, 0x38, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1020 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x60, 0x60, 0x66, 0x3c, 0x0c, 0x06, 0x3c, 0x00, 0x00, 0x00,
1021 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1022 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1023 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1024 0x00, 0x00, 0x66, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
1025 0x00, 0x18, 0x3c, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
1026 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
1027 0x00, 0xc6, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
1028 0x38, 0x6c, 0x38, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
1029 0x18, 0x30, 0x60, 0x00, 0xfe, 0x66, 0x60, 0x7c, 0x60, 0x60, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00,
1030 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x1b, 0x7e, 0xd8, 0xdc, 0x77, 0x00, 0x00, 0x00, 0x00,
1031 0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00,
1032 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1033 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1034 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1035 0x00, 0x30, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1036 0x00, 0x60, 0x30, 0x18, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1037 0x00, 0x00, 0xc6, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00,
1038 0x00, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1039 0x00, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1040 0x00, 0x18, 0x18, 0x7e, 0xc3, 0xc0, 0xc0, 0xc0, 0xc3, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
1041 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00,
1042 0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
1043 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x62, 0x66, 0x6f, 0x66, 0x66, 0x66, 0xf3, 0x00, 0x00, 0x00, 0x00,
1044 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0x70, 0x00, 0x00,
1045 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1046 0x00, 0x0c, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
1047 0x00, 0x18, 0x30, 0x60, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1048 0x00, 0x18, 0x30, 0x60, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1049 0x00, 0x00, 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
1050 0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
1051 0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1052 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1053 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1054 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
1055 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
1056 0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xce, 0x9b, 0x06, 0x0c, 0x1f, 0x00, 0x00,
1057 0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xce, 0x96, 0x3e, 0x06, 0x06, 0x00, 0x00,
1058 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
1059 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8, 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1060 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1061 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44,
1062 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa,
1063 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77,
1064 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1065 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1066 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1067 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1068 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1069 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1070 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1071 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1072 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1073 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1074 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1075 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1076 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1077 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1078 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1079 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1080 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1081 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1082 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1083 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1084 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1085 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1086 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1087 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1088 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1089 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1090 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1091 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1092 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1093 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1094 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1095 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1096 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1097 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1098 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1099 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1100 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1101 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1102 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1103 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1104 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1106 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
1107 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
1108 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1109 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0xd8, 0xd8, 0xd8, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00,
1110 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0x00, 0x00, 0x00, 0x00,
1111 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
1112 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00,
1113 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x60, 0x30, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
1114 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00,
1115 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00,
1116 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
1117 0x00, 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
1118 0x00, 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00,
1119 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00,
1120 0x00, 0x00, 0x1e, 0x30, 0x18, 0x0c, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,
1121 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1122 0x00, 0x00, 0x00, 0x03, 0x06, 0x7e, 0xdb, 0xdb, 0xf3, 0x7e, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
1123 0x00, 0x00, 0x1c, 0x30, 0x60, 0x60, 0x7c, 0x60, 0x60, 0x60, 0x30, 0x1c, 0x00, 0x00, 0x00, 0x00,
1124 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
1125 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
1126 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
1127 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
1128 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
1129 0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1130 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00,
1131 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
1132 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1133 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1134 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1135 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1136 0x00, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x6c, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00,
1137 0x00, 0xd8, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1138 0x00, 0x70, 0xd8, 0x30, 0x60, 0xc8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1139 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
1140 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1141 };

/* [previous][next][first][last][top][bottom][index][help] */