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

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