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_powerdown
  12. vesa_blank
  13. vesa_unblank
  14. set_vesa_blanking
  15. tga_console_init
  16. tga_init_video
  17. tga_clear_screen
  18. 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         origin = video_mem_start = (unsigned long)vc_scrbuf[currcons];
 332         scr_end = video_mem_end = video_mem_start + video_screen_size;
 333         pos = origin + y*video_size_row + (x<<1);
 334 }
 335 
 336 void
 337 set_scrmem(int currcons, long offset)
     /* [previous][next][first][last][top][bottom][index][help] */
 338 {
 339         if (video_mem_term - video_mem_base < offset + video_screen_size)
 340           offset = 0;   /* strange ... */
 341         memcpyw((unsigned short *)(video_mem_base + offset),
 342                 (unsigned short *) origin, video_screen_size);
 343         video_mem_start = video_mem_base;
 344         video_mem_end = video_mem_term;
 345         origin = video_mem_base + offset;
 346         scr_end = origin + video_screen_size;
 347         pos = origin + y*video_size_row + (x<<1);
 348 }
 349 
 350 /*
 351  * PIO_FONT support.
 352  *
 353  * for now, we will use/allow *only* our built-in font...
 354  */
 355 int
 356 set_get_font(char * arg, int set, int ch512)
     /* [previous][next][first][last][top][bottom][index][help] */
 357 {
 358         return -EINVAL;
 359 }
 360 
 361 /*
 362  * Adjust the screen to fit a font of a certain height
 363  *
 364  * Returns < 0 for error, 0 if nothing changed, and the number
 365  * of lines on the adjusted console if changed.
 366  *
 367  * for now, we only support the built-in font...
 368  */
 369 int
 370 con_adjust_height(unsigned long fontheight)
     /* [previous][next][first][last][top][bottom][index][help] */
 371 {
 372         return -EINVAL;
 373 }
 374 
 375 /* NOTE:
 376  * this is here, and not in console.c, because the VGA version
 377  * tests the controller type to see if color can be done. We *KNOW*
 378  * that we can do color on the TGA... :-)
 379  *
 380  * FIXME? maybe the init codes for VGA and TGA could set
 381  * a flag for (in)ability to do colormap set/get???
 382  */
 383 
 384 int
 385 set_get_cmap(unsigned char * arg, int set) {
     /* [previous][next][first][last][top][bottom][index][help] */
 386         int i;
 387 
 388         i = verify_area(set ? VERIFY_READ : VERIFY_WRITE, (void *)arg, 16*3);
 389         if (i)
 390                 return i;
 391 
 392         for (i=0; i<16; i++) {
 393                 if (set) {
 394                         default_red[i] = get_user(arg++) ;
 395                         default_grn[i] = get_user(arg++) ;
 396                         default_blu[i] = get_user(arg++) ;
 397                 } else {
 398                         put_user (default_red[i], arg++) ;
 399                         put_user (default_grn[i], arg++) ;
 400                         put_user (default_blu[i], arg++) ;
 401                 }
 402         }
 403         if (set) {
 404                 for (i=0; i<MAX_NR_CONSOLES; i++)
 405                     if (vc_cons_allocated(i)) {
 406                         int j, k ;
 407                         for (j=k=0; j<16; j++) {
 408                             vc_cons[i].d->vc_palette[k++] = default_red[j];
 409                             vc_cons[i].d->vc_palette[k++] = default_grn[j];
 410                             vc_cons[i].d->vc_palette[k++] = default_blu[j];
 411                         }
 412                     }
 413                 set_palette() ;
 414         }
 415 
 416         return 0;
 417 }
 418 
 419 /*
 420  * dummy routines for the VESA blanking code, which is VGA only,
 421  * so we don't have to carry that stuff around for the TGA...
 422  */
 423 void vesa_powerdown(void)
     /* [previous][next][first][last][top][bottom][index][help] */
 424 {
 425 }
 426 void vesa_blank(void)
     /* [previous][next][first][last][top][bottom][index][help] */
 427 {
 428 }
 429 void vesa_unblank(void)
     /* [previous][next][first][last][top][bottom][index][help] */
 430 {
 431 }
 432 void set_vesa_blanking(const unsigned long arg)
     /* [previous][next][first][last][top][bottom][index][help] */
 433 {
 434 }
 435 
 436 /*
 437  * video init code, called from within the PCI bus probing code;
 438  * when TGA console is configured, at the end of the probing code,
 439  * we call here to look for a TGA device, and proceed...
 440  */
 441 void
 442 tga_console_init(void)
     /* [previous][next][first][last][top][bottom][index][help] */
 443 {
 444         unsigned char pci_bus, pci_devfn;
 445         int status;
 446         
 447         /*
 448          * first, find the TGA among the PCI devices...
 449          */
 450         status = pcibios_find_device (PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TGA,
 451                                       0, &pci_bus, &pci_devfn);
 452         if (status == PCIBIOS_DEVICE_NOT_FOUND) {
 453                 /* PANIC!!! */
 454                 printk("tga_console_init: TGA not found!!! :-(\n");
 455                 return;
 456         }
 457 
 458         /*
 459          * read BASE_REG_0 for memory address
 460          */
 461         pcibios_read_config_dword(pci_bus, pci_devfn,
 462                                   PCI_BASE_ADDRESS_0, &tga_mem_base);
 463         tga_mem_base &= ~15;
 464 #ifdef DEBUG
 465         printk("tga_console_init: mem_base 0x%x\n", tga_mem_base);
 466 #endif /* DEBUG */
 467 
 468         tga_type = (readl((unsigned long)tga_mem_base) >> 12) & 0x0f;
 469         if (tga_type != 0 && tga_type != 1 && tga_type != 3) {
 470           printk("TGA type (0x%x) unrecognized!\n", tga_type);
 471           return;
 472         }
 473         tga_init_video();
 474         tga_clear_screen();
 475 
 476         /*
 477          * FINALLY, we can register TGA as console (whew!)
 478          */
 479         register_console(console_print);
 480 }
 481 
 482 unsigned char PLLbits[7] = { 0x80, 0x04, 0x00, 0x24, 0x44, 0x80, 0xb8 };
 483 
 484 const unsigned long bt485_cursor_source[64] = {
 485   0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,
 486   0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,
 487   0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,
 488   0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,0x00000000000000ff,
 489   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 490   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 491   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 492 };
 493 
 494 const unsigned int bt463_cursor_source[256] = {
 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   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 510   0xffff0000, 0x00000000, 0x00000000, 0x00000000,
 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   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 522   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 523 };
 524 
 525 void
 526 tga_init_video()
     /* [previous][next][first][last][top][bottom][index][help] */
 527 {
 528         int i, j, temp;
 529         unsigned char *cbp;
 530 
 531         tga_regs_base = ((unsigned long)tga_mem_base + TGA_REGS_OFFSET);
 532         tga_fb_base =
 533           ((unsigned long)tga_mem_base + fb_offset_presets[tga_type]);
 534 
 535         /* first, disable video timing */
 536         TGA_WRITE_REG(0x03, TGA_VALID_REG); /* SCANNING and BLANK */
 537 
 538         /* write the DEEP register */
 539         while (TGA_READ_REG(TGA_CMD_STAT_REG) & 1) /* wait for not busy */
 540           continue;
 541 
 542         mb();
 543         TGA_WRITE_REG(deep_presets[tga_type], TGA_DEEP_REG);
 544         while (TGA_READ_REG(TGA_CMD_STAT_REG) & 1) /* wait for not busy */
 545           continue;
 546         mb();
 547 
 548         /* write some more registers */
 549         TGA_WRITE_REG(rasterop_presets[tga_type], TGA_RASTEROP_REG);
 550         TGA_WRITE_REG(mode_presets[tga_type], TGA_MODE_REG);
 551         TGA_WRITE_REG(base_addr_presets[tga_type], TGA_BASE_ADDR_REG);
 552 
 553         /* write the PLL for 640x480 @ 60Hz */
 554         for (i = 0; i <= 6; i++) {
 555           for (j = 0; j <= 7; j++) {
 556             temp = (PLLbits[i] >> (7-j)) & 1;
 557             if (i == 6 && j == 7)
 558               temp |= 2;
 559             TGA_WRITE_REG(temp, TGA_CLOCK_REG);
 560           }
 561         }
 562 
 563         /* write some more registers */
 564         TGA_WRITE_REG(0xffffffff, TGA_PLANEMASK_REG);
 565         TGA_WRITE_REG(0xffffffff, TGA_PIXELMASK_REG);
 566         TGA_WRITE_REG(0x12345678, TGA_BLOCK_COLOR0_REG);
 567         TGA_WRITE_REG(0x12345678, TGA_BLOCK_COLOR1_REG);
 568 
 569         /* init video timing regs for 640x480 @ 60 Hz */
 570         TGA_WRITE_REG(0x018608a0, TGA_HORIZ_REG);
 571         TGA_WRITE_REG(0x084251e0, TGA_VERT_REG);
 572 
 573         if (tga_type == 0) { /* 8-plane */
 574 
 575           tga_bpp = 1;
 576 
 577           /* init BT485 RAMDAC registers */
 578           BT485_WRITE(0xa2, BT485_CMD_0);
 579           BT485_WRITE(0x01, BT485_ADDR_PAL_WRITE);
 580           BT485_WRITE(0x14, BT485_CMD_3); /* cursor 64x64 */
 581           BT485_WRITE(0x40, BT485_CMD_1);
 582           BT485_WRITE(0x22, BT485_CMD_2); /* WIN cursor type */
 583           BT485_WRITE(0xff, BT485_PIXEL_MASK);
 584 
 585           /* fill palette registers */
 586           BT485_WRITE(0x00, BT485_ADDR_PAL_WRITE);
 587           TGA_WRITE_REG(BT485_DATA_PAL, TGA_RAMDAC_SETUP_REG);
 588 
 589           for (i = 0; i < 16; i++) {
 590             j = color_table[i];
 591             TGA_WRITE_REG(default_red[j]|(BT485_DATA_PAL<<8),
 592                           TGA_RAMDAC_REG);
 593             TGA_WRITE_REG(default_grn[j]|(BT485_DATA_PAL<<8),
 594                           TGA_RAMDAC_REG);
 595             TGA_WRITE_REG(default_blu[j]|(BT485_DATA_PAL<<8),
 596                           TGA_RAMDAC_REG);
 597           }
 598           for (i = 0; i < 240*3; i += 4) {
 599             TGA_WRITE_REG(0x55|(BT485_DATA_PAL<<8), TGA_RAMDAC_REG);
 600             TGA_WRITE_REG(0x00|(BT485_DATA_PAL<<8), TGA_RAMDAC_REG);
 601             TGA_WRITE_REG(0x00|(BT485_DATA_PAL<<8), TGA_RAMDAC_REG);
 602             TGA_WRITE_REG(0x00|(BT485_DATA_PAL<<8), TGA_RAMDAC_REG);
 603           }       
 604 
 605           /* initialize RAMDAC cursor colors */
 606           BT485_WRITE(0, BT485_ADDR_CUR_WRITE);
 607 
 608           BT485_WRITE(0xaa, BT485_DATA_CUR); /* overscan WHITE */
 609           BT485_WRITE(0xaa, BT485_DATA_CUR); /* overscan WHITE */
 610           BT485_WRITE(0xaa, BT485_DATA_CUR); /* overscan WHITE */
 611 
 612           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 1 BLACK */
 613           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 1 BLACK */
 614           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 1 BLACK */
 615 
 616           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 2 BLACK */
 617           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 2 BLACK */
 618           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 2 BLACK */
 619 
 620           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 3 BLACK */
 621           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 3 BLACK */
 622           BT485_WRITE(0x00, BT485_DATA_CUR); /* color 3 BLACK */
 623 
 624           /* initialize RAMDAC cursor RAM */
 625           BT485_WRITE(0x00, BT485_ADDR_PAL_WRITE);
 626           cbp = (unsigned char *)bt485_cursor_source;
 627           for (i = 0; i < 512; i++) {
 628             BT485_WRITE(*cbp++, BT485_CUR_RAM);
 629           }
 630           for (i = 0; i < 512; i++) {
 631             BT485_WRITE(0xff, BT485_CUR_RAM);
 632           }
 633 
 634         } else { /* 24-plane or 24plusZ */
 635 
 636           tga_bpp = 4;
 637 
 638           TGA_WRITE_REG(0x01, TGA_VALID_REG); /* SCANNING */
 639 
 640           /*
 641            * init some registers
 642            */
 643           BT463_WRITE(BT463_REG_ACC, BT463_CMD_REG_0, 0x40);
 644           BT463_WRITE(BT463_REG_ACC, BT463_CMD_REG_1, 0x08);
 645           BT463_WRITE(BT463_REG_ACC, BT463_CMD_REG_2, 0x40);
 646 
 647           BT463_WRITE(BT463_REG_ACC, BT463_READ_MASK_0, 0xff);
 648           BT463_WRITE(BT463_REG_ACC, BT463_READ_MASK_1, 0xff);
 649           BT463_WRITE(BT463_REG_ACC, BT463_READ_MASK_2, 0xff);
 650           BT463_WRITE(BT463_REG_ACC, BT463_READ_MASK_3, 0x0f);
 651 
 652           BT463_WRITE(BT463_REG_ACC, BT463_BLINK_MASK_0, 0x00);
 653           BT463_WRITE(BT463_REG_ACC, BT463_BLINK_MASK_1, 0x00);
 654           BT463_WRITE(BT463_REG_ACC, BT463_BLINK_MASK_2, 0x00);
 655           BT463_WRITE(BT463_REG_ACC, BT463_BLINK_MASK_3, 0x00);
 656 
 657           /*
 658            * fill the palette
 659            */
 660           BT463_LOAD_ADDR(0x0000);
 661           TGA_WRITE_REG((BT463_PALETTE<<2), TGA_RAMDAC_REG);
 662 
 663           for (i = 0; i < 16; i++) {
 664             j = color_table[i];
 665             TGA_WRITE_REG(default_red[j]|(BT463_PALETTE<<10),
 666                           TGA_RAMDAC_REG);
 667             TGA_WRITE_REG(default_grn[j]|(BT463_PALETTE<<10),
 668                           TGA_RAMDAC_REG);
 669             TGA_WRITE_REG(default_blu[j]|(BT463_PALETTE<<10),
 670                           TGA_RAMDAC_REG);
 671           }
 672           for (i = 0; i < 512*3; i += 4) {
 673             TGA_WRITE_REG(0x55|(BT463_PALETTE<<10), TGA_RAMDAC_REG);
 674             TGA_WRITE_REG(0x00|(BT463_PALETTE<<10), TGA_RAMDAC_REG);
 675             TGA_WRITE_REG(0x00|(BT463_PALETTE<<10), TGA_RAMDAC_REG);
 676             TGA_WRITE_REG(0x00|(BT463_PALETTE<<10), TGA_RAMDAC_REG);
 677           }       
 678 
 679           /*
 680            * fill window type table after start of vertical retrace
 681            */
 682           while (!(TGA_READ_REG(TGA_INTR_STAT_REG) & 0x01))
 683             continue;
 684           TGA_WRITE_REG(0x01, TGA_INTR_STAT_REG);
 685           mb();
 686           while (!(TGA_READ_REG(TGA_INTR_STAT_REG) & 0x01))
 687             continue;
 688           TGA_WRITE_REG(0x01, TGA_INTR_STAT_REG);
 689 
 690           BT463_LOAD_ADDR(BT463_WINDOW_TYPE_BASE);
 691           TGA_WRITE_REG((BT463_REG_ACC<<2), TGA_RAMDAC_SETUP_REG);
 692           
 693           for (i = 0; i < 16; i++) {
 694             TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 695             TGA_WRITE_REG(0x01|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 696             TGA_WRITE_REG(0x80|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 697           }
 698 
 699           /*
 700            * init cursor colors
 701            */
 702           BT463_LOAD_ADDR(BT463_CUR_CLR_0);
 703 
 704           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG); /* background */
 705           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG); /* background */
 706           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG); /* background */
 707 
 708           TGA_WRITE_REG(0xff|(BT463_REG_ACC<<10), TGA_RAMDAC_REG); /* foreground */
 709           TGA_WRITE_REG(0xff|(BT463_REG_ACC<<10), TGA_RAMDAC_REG); /* foreground */
 710           TGA_WRITE_REG(0xff|(BT463_REG_ACC<<10), TGA_RAMDAC_REG); /* foreground */
 711 
 712           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 713           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 714           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 715 
 716           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 717           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 718           TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
 719 
 720           /*
 721            * finally, init the cursor shape
 722            */
 723           temp = tga_fb_base - 1024; /* this assumes video starts at base
 724                                        and base is beyond memory start*/
 725 
 726           for (i = 0; i < 256; i++) {
 727             writel(bt463_cursor_source[i], temp + i*4);
 728           }
 729           TGA_WRITE_REG(temp & 0x000fffff, TGA_CURSOR_BASE_REG);
 730         }
 731 
 732         /* finally, enable video scan & cursor
 733            (and pray for the monitor... :-) */
 734         TGA_WRITE_REG(0x05, TGA_VALID_REG); /* SCANNING and CURSOR */
 735 
 736         /* oh, and set the globals describing the resolution... :-) */
 737         tga_fb_width = 640 * tga_bpp;
 738         tga_fb_height = 480;
 739         tga_fb_stride = tga_fb_width / sizeof(int);
 740 }
 741 
 742 void
 743 tga_clear_screen()
     /* [previous][next][first][last][top][bottom][index][help] */
 744 {
 745     register int i, j;
 746     register unsigned int *dst;
 747 
 748     dst = (unsigned int *) ((unsigned long)tga_fb_base);
 749     for (i = 0; i < tga_fb_height; i++, dst += tga_fb_stride) {
 750       for (j = 0; j < tga_fb_stride; j++) {
 751         writel(0, (dst+j));
 752       }
 753     }
 754 
 755     /* also clear out the "shadow" screen memory */
 756     memset((char *)video_mem_base, 0, (video_mem_term - video_mem_base));
 757 }
 758 
 759 /*
 760  * tga_blitc
 761  *
 762  * Displays an ASCII character at a specified character cell
 763  *  position.
 764  *
 765  * Called from scr_writew() when the destination is
 766  *  the "shadow" screen
 767  */
 768 static unsigned int
 769 fontmask_bits[16] = {
 770     0x00000000,
 771     0xff000000,
 772     0x00ff0000,
 773     0xffff0000,
 774     0x0000ff00,
 775     0xff00ff00,
 776     0x00ffff00,
 777     0xffffff00,
 778     0x000000ff,
 779     0xff0000ff,
 780     0x00ff00ff,
 781     0xffff00ff,
 782     0x0000ffff,
 783     0xff00ffff,
 784     0x00ffffff,
 785     0xffffffff
 786 };
 787 
 788 int
 789 tga_blitc(unsigned int charattr, unsigned long addr)
     /* [previous][next][first][last][top][bottom][index][help] */
 790 {
 791   int row, col, temp, c, attrib;
 792   register unsigned int fgmask, bgmask, data, rowbits;
 793   register unsigned int *dst;
 794   register unsigned char *font_row;
 795   register int i, j, stride;
 796 
 797   c = charattr & 0x00ff;
 798   attrib = (charattr >> 8) & 0x00ff;
 799 
 800   /*
 801    * extract foreground and background indices
 802    * NOTE: we always treat blink/underline bits as color for now...
 803    */
 804   fgmask = attrib & 0x0f;
 805   bgmask = (attrib >> 4) & 0x0f;
 806 
 807   i = (c & 0xff) << 4; /* NOTE: assumption of 16 bytes per character bitmap */
 808 
 809   /*
 810    * calculate (row,col) from addr and video_mem_base
 811    */
 812   temp = (addr - video_mem_base) >> 1;
 813   col = temp % 80;
 814   row = (temp - col) / 80;
 815 
 816   /*
 817    * calculate destination address
 818    */
 819   dst = (unsigned int *) ( (unsigned long)tga_fb_base
 820                            + ( row * tga_fb_width * TGA_F_HEIGHT_PADDED )
 821                            + ( col * TGA_F_WIDTH * tga_bpp) );
 822 
 823   font_row = (unsigned char *)&tga_builtin_font[i];
 824   stride = tga_fb_stride;
 825 
 826   if (tga_type == 0) { /* 8-plane */
 827 
 828     fgmask = fgmask << 8 | fgmask;
 829     fgmask |= fgmask << 16;
 830     bgmask = bgmask << 8 | bgmask;
 831     bgmask |= bgmask << 16;
 832 
 833     for ( j = 0; j < TGA_F_HEIGHT_PADDED; j++ ) {
 834       if (j < TGA_F_HEIGHT) {
 835         rowbits = font_row[j];
 836       } else {
 837         /* dup the last n rows only if char > 0x7f */
 838         if (c & 0x80)
 839           rowbits = font_row[j-(TGA_F_HEIGHT_PADDED-TGA_F_HEIGHT)];
 840         else
 841           rowbits = 0;
 842       }
 843       data = fontmask_bits[(rowbits>>4)&0xf];
 844       data = (data & fgmask) | (~data & bgmask);
 845       writel(data, dst);
 846       data = fontmask_bits[rowbits&0xf];
 847       data = (data & fgmask) | (~data & bgmask);
 848       writel(data, (dst+1));
 849       dst += stride;
 850     }
 851   } else { /* 24-plane */
 852 
 853     fgmask = (default_red[fgmask] << 16) |
 854              (default_grn[fgmask] <<  8) |
 855              (default_blu[fgmask] <<  0);
 856     bgmask = (default_red[bgmask] << 16) |
 857              (default_grn[bgmask] <<  8) |
 858              (default_blu[bgmask] <<  0);
 859 
 860     for ( i = 0; i < TGA_F_HEIGHT_PADDED; i++ ) {
 861       if (i < TGA_F_HEIGHT) {
 862         rowbits = font_row[i];
 863       } else {
 864         /* dup the last n rows only if char > 0x7f */
 865         if (c & 0x80)
 866           rowbits = font_row[i-(TGA_F_HEIGHT_PADDED-TGA_F_HEIGHT)];
 867         else
 868           rowbits = 0;
 869       }
 870       data = 1 << (TGA_F_WIDTH - 1);
 871       for (j = 0; j < TGA_F_WIDTH; j++, data >>= 1) {
 872         if (rowbits & data)
 873           writel(fgmask, (dst+j));
 874         else
 875           writel(bgmask, (dst+j));
 876       }
 877       dst += stride;
 878     }
 879   }
 880   return (0);
 881 }
 882 
 883 /*
 884  * font table of displayable characters.
 885  */
 886 char  tga_builtin_font[]={
 887 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 888 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd, 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00,
 889 0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xc3, 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00,
 890 0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00,
 891 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
 892 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 893 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 894 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 895 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
 896 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
 897 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff,
 898 0x00, 0x00, 0x1e, 0x0e, 0x1a, 0x32, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00,
 899 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
 900 0x00, 0x00, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x30, 0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00,
 901 0x00, 0x00, 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x67, 0xe7, 0xe6, 0xc0, 0x00, 0x00, 0x00,
 902 0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, 0x3c, 0xdb, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
 903 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
 904 0x00, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0xfe, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
 905 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
 906 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
 907 0x00, 0x00, 0x7f, 0xdb, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00,
 908 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00,
 909 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00,
 910 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
 911 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
 912 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
 913 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 914 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 915 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 916 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 917 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, 0x7c, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
 918 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
 919 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 920 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
 921 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 922 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00,
 923 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00,
 924 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, 0x30, 0x60, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x00,
 925 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
 926 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 927 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00,
 928 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
 929 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 930 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 931 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00,
 932 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 933 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
 934 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
 935 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xce, 0xde, 0xf6, 0xe6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 936 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
 937 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
 938 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 939 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00,
 940 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 941 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 942 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00,
 943 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 944 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00,
 945 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
 946 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
 947 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00,
 948 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 949 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00,
 950 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
 951 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xde, 0xde, 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00,
 952 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
 953 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00,
 954 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,
 955 0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00,
 956 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00,
 957 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
 958 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00,
 959 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
 960 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 961 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00,
 962 0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
 963 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00,
 964 0x00, 0x00, 0xc3, 0xe7, 0xff, 0xff, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00,
 965 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
 966 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 967 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
 968 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x0c, 0x0e, 0x00, 0x00,
 969 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
 970 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 971 0x00, 0x00, 0xff, 0xdb, 0x99, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 972 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 973 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
 974 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
 975 0x00, 0x00, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18, 0x3c, 0x66, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00,
 976 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 977 0x00, 0x00, 0xff, 0xc3, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc1, 0xc3, 0xff, 0x00, 0x00, 0x00, 0x00,
 978 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00,
 979 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
 980 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00,
 981 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 982 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
 983 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 984 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
 985 0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00,
 986 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 987 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
 988 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 989 0x00, 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
 990 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00,
 991 0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
 992 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 993 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00,
 994 0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
 995 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
 996 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00,
 997 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
 998 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
 999 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00,
1000 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00,
1001 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
1002 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1003 0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00,
1004 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1005 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
1006 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0x66, 0x00, 0x00, 0x00, 0x00,
1007 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0xc3, 0x00, 0x00, 0x00, 0x00,
1008 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00,
1009 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
1010 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00,
1011 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
1012 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00,
1013 0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1014 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
1015 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x0c, 0x06, 0x7c, 0x00, 0x00,
1016 0x00, 0x00, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1017 0x00, 0x0c, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1018 0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1019 0x00, 0x00, 0xcc, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1020 0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1021 0x00, 0x38, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1022 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x60, 0x60, 0x66, 0x3c, 0x0c, 0x06, 0x3c, 0x00, 0x00, 0x00,
1023 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1024 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1025 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1026 0x00, 0x00, 0x66, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
1027 0x00, 0x18, 0x3c, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
1028 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
1029 0x00, 0xc6, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
1030 0x38, 0x6c, 0x38, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
1031 0x18, 0x30, 0x60, 0x00, 0xfe, 0x66, 0x60, 0x7c, 0x60, 0x60, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00,
1032 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x1b, 0x7e, 0xd8, 0xdc, 0x77, 0x00, 0x00, 0x00, 0x00,
1033 0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00,
1034 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1035 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1036 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1037 0x00, 0x30, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1038 0x00, 0x60, 0x30, 0x18, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1039 0x00, 0x00, 0xc6, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00,
1040 0x00, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1041 0x00, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1042 0x00, 0x18, 0x18, 0x7e, 0xc3, 0xc0, 0xc0, 0xc0, 0xc3, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
1043 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00,
1044 0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
1045 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x62, 0x66, 0x6f, 0x66, 0x66, 0x66, 0xf3, 0x00, 0x00, 0x00, 0x00,
1046 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0x70, 0x00, 0x00,
1047 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1048 0x00, 0x0c, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
1049 0x00, 0x18, 0x30, 0x60, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1050 0x00, 0x18, 0x30, 0x60, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
1051 0x00, 0x00, 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
1052 0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
1053 0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1054 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1055 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
1056 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
1057 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
1058 0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xce, 0x9b, 0x06, 0x0c, 0x1f, 0x00, 0x00,
1059 0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xce, 0x96, 0x3e, 0x06, 0x06, 0x00, 0x00,
1060 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
1061 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8, 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1062 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1063 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44,
1064 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa,
1065 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77,
1066 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1067 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1068 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1069 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1070 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1071 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1072 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1073 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1074 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1075 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1076 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1077 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1078 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1079 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1080 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1081 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1082 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1083 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1084 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1085 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1086 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1087 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1088 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1089 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1090 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1091 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1092 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1093 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1094 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1095 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1096 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1097 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1098 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1099 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1100 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1101 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1102 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
1103 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1104 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1106 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1107 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1108 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
1109 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
1110 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1111 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0xd8, 0xd8, 0xd8, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00,
1112 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0x00, 0x00, 0x00, 0x00,
1113 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
1114 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00,
1115 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x60, 0x30, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
1116 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00,
1117 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00,
1118 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
1119 0x00, 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
1120 0x00, 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00,
1121 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00,
1122 0x00, 0x00, 0x1e, 0x30, 0x18, 0x0c, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,
1123 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1124 0x00, 0x00, 0x00, 0x03, 0x06, 0x7e, 0xdb, 0xdb, 0xf3, 0x7e, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
1125 0x00, 0x00, 0x1c, 0x30, 0x60, 0x60, 0x7c, 0x60, 0x60, 0x60, 0x30, 0x1c, 0x00, 0x00, 0x00, 0x00,
1126 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
1127 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
1128 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
1129 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
1130 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
1131 0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1132 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00,
1133 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
1134 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1135 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1136 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1137 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1138 0x00, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x6c, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00,
1139 0x00, 0xd8, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1140 0x00, 0x70, 0xd8, 0x30, 0x60, 0xc8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1141 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
1142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1143 };

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