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