This source file includes following definitions.
- set_palette
- __set_origin
- hide_cursor
- set_cursor
- con_type_init
- get_scrmem
- set_scrmem
- set_get_font
- con_adjust_height
- set_get_cmap
- vesa_powerdown
- vesa_blank
- vesa_unblank
- set_vesa_blanking
- tga_console_init
- tga_init_video
- tga_clear_screen
- tga_blitc
1
2
3
4
5
6
7
8
9
10
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
44
45
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
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
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
125
126
127
128
129
130
131
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)
205 {
206 int i, j;
207
208 if (tga_type == 0) {
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)
233 {
234
235
236
237 }
238
239
240
241
242 void
243 hide_cursor(void)
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);
252 }
253
254 restore_flags(flags);
255 }
256
257 void
258 set_cursor(int currcons)
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) {
277
278 xt = col * TGA_F_WIDTH + 64;
279 yt = row * TGA_F_HEIGHT_PADDED + 64;
280
281
282 BT485_WRITE(0x22, BT485_CMD_2);
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);
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)
305 {
306 can_do_color = 1;
307
308
309
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
324
325
326 void
327 get_scrmem(int currcons)
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)
339 {
340 if (video_mem_term - video_mem_base < offset + video_screen_size)
341 offset = 0;
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
353
354
355
356 int
357 set_get_font(char * arg, int set, int ch512)
358 {
359 return -EINVAL;
360 }
361
362
363
364
365
366
367
368
369
370 int
371 con_adjust_height(unsigned long fontheight)
372 {
373 return -EINVAL;
374 }
375
376
377
378
379
380
381
382
383
384
385 int
386 set_get_cmap(unsigned char * arg, int set) {
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
422
423
424 void vesa_powerdown(void)
425 {
426 }
427 void vesa_blank(void)
428 {
429 }
430 void vesa_unblank(void)
431 {
432 }
433 void set_vesa_blanking(const unsigned long arg)
434 {
435 }
436
437
438
439
440
441
442 void
443 tga_console_init(void)
444 {
445 unsigned char pci_bus, pci_devfn;
446 int status;
447
448
449
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
455 printk("tga_console_init: TGA not found!!! :-(\n");
456 return;
457 }
458
459
460
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
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
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()
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
537 TGA_WRITE_REG(0x03, TGA_VALID_REG);
538
539
540 while (TGA_READ_REG(TGA_CMD_STAT_REG) & 1)
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)
546 continue;
547 mb();
548
549
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
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
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
571 TGA_WRITE_REG(0x018608a0, TGA_HORIZ_REG);
572 TGA_WRITE_REG(0x084251e0, TGA_VERT_REG);
573
574 if (tga_type == 0) {
575
576 tga_bpp = 1;
577
578
579 BT485_WRITE(0xa2, BT485_CMD_0);
580 BT485_WRITE(0x01, BT485_ADDR_PAL_WRITE);
581 BT485_WRITE(0x14, BT485_CMD_3);
582 BT485_WRITE(0x40, BT485_CMD_1);
583 BT485_WRITE(0x22, BT485_CMD_2);
584 BT485_WRITE(0xff, BT485_PIXEL_MASK);
585
586
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
607 BT485_WRITE(0, BT485_ADDR_CUR_WRITE);
608
609 BT485_WRITE(0xaa, BT485_DATA_CUR);
610 BT485_WRITE(0xaa, BT485_DATA_CUR);
611 BT485_WRITE(0xaa, BT485_DATA_CUR);
612
613 BT485_WRITE(0x00, BT485_DATA_CUR);
614 BT485_WRITE(0x00, BT485_DATA_CUR);
615 BT485_WRITE(0x00, BT485_DATA_CUR);
616
617 BT485_WRITE(0x00, BT485_DATA_CUR);
618 BT485_WRITE(0x00, BT485_DATA_CUR);
619 BT485_WRITE(0x00, BT485_DATA_CUR);
620
621 BT485_WRITE(0x00, BT485_DATA_CUR);
622 BT485_WRITE(0x00, BT485_DATA_CUR);
623 BT485_WRITE(0x00, BT485_DATA_CUR);
624
625
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 {
636
637 tga_bpp = 4;
638
639 TGA_WRITE_REG(0x01, TGA_VALID_REG);
640
641
642
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
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
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
702
703 BT463_LOAD_ADDR(BT463_CUR_CLR_0);
704
705 TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
706 TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
707 TGA_WRITE_REG(0x00|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
708
709 TGA_WRITE_REG(0xff|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
710 TGA_WRITE_REG(0xff|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
711 TGA_WRITE_REG(0xff|(BT463_REG_ACC<<10), TGA_RAMDAC_REG);
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
723
724 temp = tga_fb_base - 1024;
725
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
734
735 TGA_WRITE_REG(0x05, TGA_VALID_REG);
736
737
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()
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
757 memset((char *)video_mem_base, 0, (video_mem_term - video_mem_base));
758 }
759
760
761
762
763
764
765
766
767
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)
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
803
804
805 fgmask = attrib & 0x0f;
806 bgmask = (attrib >> 4) & 0x0f;
807
808 i = (c & 0xff) << 4;
809
810
811
812
813 temp = (addr - video_mem_base) >> 1;
814 col = temp % 80;
815 row = (temp - col) / 80;
816
817
818
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) {
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
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 {
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
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
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 };