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