]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
2200b6
authorToni Wilen <twilen@winuae.net>
Sat, 29 May 2010 14:38:31 +0000 (17:38 +0300)
committerToni Wilen <twilen@winuae.net>
Sat, 29 May 2010 14:38:31 +0000 (17:38 +0300)
33 files changed:
akiko.cpp
audio.cpp
autoconf.cpp
blitter.cpp
cfgfile.cpp
cia.cpp
custom.cpp
debug.cpp
disk.cpp
expansion.cpp
filesys.asm
filesys.cpp
filesys_bootrom.cpp
genblitter.cpp
include/memory.h
include/options.h
include/savestate.h
inputdevice.cpp
main.cpp
memory.cpp
newcpu.cpp
od-win32/caps/CapsAPI.h
od-win32/caps/caps_win32.cpp
od-win32/lib/prowizard_x64.lib
od-win32/mman.cpp
od-win32/prowizard/prowizard.vcxproj
od-win32/resources/resource
od-win32/resources/winuae.rc
od-win32/win32.h
od-win32/win32gui.cpp
od-win32/winuae_msvc10/winuae_msvc.vcxproj
od-win32/winuaechangelog.txt
savestate.cpp

index 74699581f04069c48bbf10c6775c1b576b305a2c..fda832f45c2ec04ada9b8ab7f3ca011966dd41c8 100644 (file)
--- a/akiko.cpp
+++ b/akiko.cpp
@@ -29,8 +29,8 @@
 #include "newcpu.h"
 
 #define AKIKO_DEBUG_NVRAM 0
-#define AKIKO_DEBUG_IO 1
-#define AKIKO_DEBUG_IO_CMD 1
+#define AKIKO_DEBUG_IO 0
+#define AKIKO_DEBUG_IO_CMD 0
 
 // 43 48 49 4E 4F 4E 20 20 4F 2D 36 35 38 2D 32 20 32 34
 #define FIRMWAREVERSION "CHINON  O-658-2 24"
@@ -1788,9 +1788,9 @@ uae_u8 *restore_akiko (uae_u8 *src)
        uae_u32 v;
        int i;
 
-       if (!currprefs.cs_cd32cd) {
-               changed_prefs.cs_cd32c2p = changed_prefs.cs_cd32cd = changed_prefs.cs_cd32nvram = 1;
-               currprefs.cs_cd32c2p = currprefs.cs_cd32cd = currprefs.cs_cd32nvram = 1;
+       if (!currprefs.cs_cd32cd || !cdromok) {
+               changed_prefs.cs_cd32c2p = changed_prefs.cs_cd32cd = changed_prefs.cs_cd32nvram = true;
+               currprefs.cs_cd32c2p = currprefs.cs_cd32cd = currprefs.cs_cd32nvram = true;
                akiko_init ();
        }
 
index 844acd9a328f74c399922a96b2eba257b5aacfde..447485662dd708e0619245a6b2601fdca232a2c2 100644 (file)
--- a/audio.cpp
+++ b/audio.cpp
@@ -221,10 +221,10 @@ static void do_samplerip (struct audio_channel_data *adp)
 {
        struct ripped_sample *rs = ripped_samples, *prev;
        int len = adp->len * 2;
-       uae_u8 *smp = chipmem_bank.xlateaddr (adp->pt);
+       uae_u8 *smp = chipmem_xlate_indirect (adp->pt);
        int cnt = 0, i;
 
-       if (!smp || !chipmem_bank.check (adp->pt, len))
+       if (!smp || !chipmem_check_indirect (adp->pt, len))
                return;
        for (i = 0; i < len; i++) {
                if (smp[i] != 0)
@@ -1644,7 +1644,7 @@ void audio_hsync (int hpos)
                                        write_log (L"%d:>5: LEN=%d PT=%08X\n", nr, cdp->wlen, cdp->pt);
 #endif
                        }
-                       cdp->dat2 = last_custom_value1 = chipmem_agnus_wget (cdp->pt);
+                       cdp->dat2 = last_custom_value1 = chipmem_wget_indirect (cdp->pt);
                        if (cdp->request_word >= 2)
                                handle2 = 1;
                        if (chan_ena) {
index 86af5d93c53aedd40bbe1e1b284569e475aba84b..9c239d2872da02dbde7715bb9d7f76af1cbd84a6 100644 (file)
@@ -197,6 +197,8 @@ static uae_u32 REGPARAM2 nullfunc (TrapContext *context)
 
 static uae_u32 REGPARAM2 getchipmemsize (TrapContext *context)
 {
+       m68k_dreg (regs, 1) = allocated_z3chipmem;
+       m68k_areg (regs, 1) = z3chipmem_start;
        return allocated_chipmem;
 }
 
index 628ef15e685dbe63a44d33f51be3bf075d8737aa..b9da8f9df43c31b95463cecba41a7550d9939f66 100644 (file)
@@ -297,10 +297,10 @@ static void blitter_interrupt (int hpos, int done)
 {
        if (blit_interrupt)
                return;
-       if (!done && (!currprefs.blitter_cycle_exact || (currprefs.chipset_mask & CSMASK_AGA)))
+       if (!done && (!currprefs.blitter_cycle_exact || currprefs.cpu_model >= 68020))
                return;
        blit_interrupt = 1;
-       send_interrupt (6, 3);
+       send_interrupt (6, 3 * CYCLE_UNIT);
        if (debug_dma)
                record_dma_event (DMA_EVENT_BLITIRQ, hpos, vpos);
 }
@@ -325,7 +325,7 @@ STATIC_INLINE void chipmem_agnus_wput2 (uaecptr addr, uae_u32 w)
 {
        last_custom_value1 = w;
 #ifndef BLITTER_DEBUG_NO_D
-       chipmem_agnus_wput (addr, w);
+       chipmem_wput_indirect (addr, w);
 #endif
 }
 
@@ -372,7 +372,7 @@ static void blitter_dofast (void)
                                uae_u32 bltadat, blitahold;
                                uae_u16 bltbdat;
                                if (bltadatptr) {
-                                       blt_info.bltadat = bltadat = chipmem_agnus_wget (bltadatptr);
+                                       blt_info.bltadat = bltadat = chipmem_wget_indirect (bltadatptr);
                                        bltadatptr += 2;
                                } else
                                        bltadat = blt_info.bltadat;
@@ -381,14 +381,14 @@ static void blitter_dofast (void)
                                preva = bltadat;
 
                                if (bltbdatptr) {
-                                       blt_info.bltbdat = bltbdat = chipmem_agnus_wget (bltbdatptr);
+                                       blt_info.bltbdat = bltbdat = chipmem_wget_indirect (bltbdatptr);
                                        bltbdatptr += 2;
                                        blitbhold = (((uae_u32)prevb << 16) | bltbdat) >> blt_info.blitbshift;
                                        prevb = bltbdat;
                                }
 
                                if (bltcdatptr) {
-                                       blt_info.bltcdat = chipmem_agnus_wget (bltcdatptr);
+                                       blt_info.bltcdat = chipmem_wget_indirect (bltcdatptr);
                                        bltcdatptr += 2;
                                }
                                if (dodst)
@@ -471,7 +471,7 @@ static void blitter_dofast_desc (void)
                                uae_u32 bltadat, blitahold;
                                uae_u16 bltbdat;
                                if (bltadatptr) {
-                                       bltadat = blt_info.bltadat = chipmem_agnus_wget (bltadatptr);
+                                       bltadat = blt_info.bltadat = chipmem_wget_indirect (bltadatptr);
                                        bltadatptr -= 2;
                                } else
                                        bltadat = blt_info.bltadat;
@@ -480,14 +480,14 @@ static void blitter_dofast_desc (void)
                                preva = bltadat;
 
                                if (bltbdatptr) {
-                                       blt_info.bltbdat = bltbdat = chipmem_agnus_wget (bltbdatptr);
+                                       blt_info.bltbdat = bltbdat = chipmem_wget_indirect (bltbdatptr);
                                        bltbdatptr -= 2;
                                        blitbhold = (((uae_u32)bltbdat << 16) | prevb) >> blt_info.blitdownbshift;
                                        prevb = bltbdat;
                                }
 
                                if (bltcdatptr) {
-                                       blt_info.bltcdat = blt_info.bltbdat = chipmem_agnus_wget (bltcdatptr);
+                                       blt_info.bltcdat = blt_info.bltbdat = chipmem_wget_indirect (bltcdatptr);
                                        bltcdatptr -= 2;
                                }
                                if (dodst)
@@ -533,7 +533,7 @@ STATIC_INLINE void blitter_read (void)
        if (bltcon0 & 0x200) {
                if (!dmaen (DMA_BLITTER))
                        return;
-               blt_info.bltcdat = chipmem_bank.wget (bltcpt);
+               blt_info.bltcdat = chipmem_wget_indirect (bltcpt);
                last_custom_value1 = blt_info.bltcdat;
        }
        bltstate = BLT_work;
@@ -548,7 +548,7 @@ STATIC_INLINE void blitter_write (void)
                if (!dmaen (DMA_BLITTER))
                        return;
                last_custom_value1 = blt_info.bltddat;
-               chipmem_bank.wput (bltdpt, blt_info.bltddat);
+               chipmem_wput_indirect (bltdpt, blt_info.bltddat);
        }
        bltstate = BLT_next;
 }
@@ -870,14 +870,14 @@ STATIC_INLINE void blitter_dodma (int ch, int hpos)
        switch (ch)
        {
        case 1:
-               blt_info.bltadat = dat = chipmem_agnus_wget (bltapt);
+               blt_info.bltadat = dat = chipmem_wget_indirect (bltapt);
                last_custom_value1 = blt_info.bltadat;
                addr = bltapt;
                bltapt += blit_add;
                reg = 0x74;
                break;
        case 2:
-               blt_info.bltbdat = dat = chipmem_agnus_wget (bltbpt);
+               blt_info.bltbdat = dat = chipmem_wget_indirect (bltbpt);
                last_custom_value1 = blt_info.bltbdat;
                addr = bltbpt;
                bltbpt += blit_add;
@@ -889,7 +889,7 @@ STATIC_INLINE void blitter_dodma (int ch, int hpos)
                reg = 0x72;
                break;
        case 3:
-               blt_info.bltcdat = dat = chipmem_agnus_wget (bltcpt);
+               blt_info.bltcdat = dat = chipmem_wget_indirect (bltcpt);
                last_custom_value1 = blt_info.bltcdat;
                addr = bltcpt;
                bltcpt += blit_add;
@@ -971,7 +971,7 @@ void decide_blitter (int hpos)
        if (blt_delayed_irq > 0 && hsync) {
                blt_delayed_irq--;
                if (!blt_delayed_irq)
-                       send_interrupt (6, 2);
+                       send_interrupt (6, 2 * CYCLE_UNIT);
        }
 
        if (bltstate == BLT_done)
index 0f7e8c3a0017fa4800b6f0f9a886eef636d5c538..9565d6419cabfb410d98c470e8dfb11e33a7360e 100644 (file)
@@ -801,6 +801,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
        cfgfile_write (f, L"mbresmem_size", L"%d", p->mbresmem_high_size / 0x100000);
        cfgfile_write (f, L"z3mem_size", L"%d", p->z3fastmem_size / 0x100000);
        cfgfile_write (f, L"z3mem2_size", L"%d", p->z3fastmem2_size / 0x100000);
+       cfgfile_write (f, L"z3chipmem_size", L"%d", p->z3chipmem_size / 0x100000);
        cfgfile_write (f, L"z3mem_start", L"0x%x", p->z3fastmem_start);
        cfgfile_write (f, L"bogomem_size", L"%d", p->bogomem_size / 0x40000);
        cfgfile_write (f, L"gfxcard_size", L"%d", p->gfxmem_size / 0x100000);
@@ -1766,6 +1767,7 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, TCHAR *option, TCHAR *va
                || cfgfile_intval (option, value, L"mbresmem_size", &p->mbresmem_high_size, 0x100000)
                || cfgfile_intval (option, value, L"z3mem_size", &p->z3fastmem_size, 0x100000)
                || cfgfile_intval (option, value, L"z3mem2_size", &p->z3fastmem2_size, 0x100000)
+               || cfgfile_intval (option, value, L"z3chipmem_size", &p->z3chipmem_size, 0x100000)
                || cfgfile_intval (option, value, L"z3mem_start", &p->z3fastmem_start, 1)
                || cfgfile_intval (option, value, L"bogomem_size", &p->bogomem_size, 0x40000)
                || cfgfile_intval (option, value, L"gfxcard_size", &p->gfxmem_size, 0x100000)
@@ -3597,6 +3599,7 @@ static void buildin_default_prefs (struct uae_prefs *p)
        p->mbresmem_high_size = 0x00000000;
        p->z3fastmem_size = 0x00000000;
        p->z3fastmem2_size = 0x00000000;
+       p->z3chipmem_size = 0x00000000;
        p->gfxmem_size = 0x00000000;
 
        p->cs_rtc = 0;
diff --git a/cia.cpp b/cia.cpp
index 7dd48105e76965583fefe47941e496539393bfd7..0a9060f3f7d63d6fe30338ea4cef91dcf3bb254a 100644 (file)
--- a/cia.cpp
+++ b/cia.cpp
@@ -92,7 +92,7 @@ static void RethinkICRA (void)
 {
        if (ciaaimask & ciaaicr) {
                ciaaicr |= 0x80;
-               send_interrupt (3, 3);
+               send_interrupt (3, 2 * CYCLE_UNIT + CYCLE_UNIT / 2);
        }
 }
 
@@ -100,7 +100,7 @@ static void RethinkICRB (void)
 {
        if (ciabimask & ciabicr) {
                ciabicr |= 0x80;
-               send_interrupt (13, 3);
+               send_interrupt (13, 2 * CYCLE_UNIT + CYCLE_UNIT / 2);
        }
 }
 
index 2005e7ba25220a9eb93217c1e5f890492660c62d..7f1ef72dc84343aa8c637fda96a18d74c0b8b845 100644 (file)
@@ -472,13 +472,13 @@ static void update_mirrors (void)
 
 STATIC_INLINE uae_u8 *pfield_xlateptr (uaecptr plpt, int bytecount)
 {
-       if (!chipmem_bank.check (plpt, bytecount)) {
+       if (!chipmem_check_indirect (plpt, bytecount)) {
                static int count = 0;
                if (!count)
                        count++, write_log (L"Warning: Bad playfield pointer\n");
                return NULL;
        }
-       return chipmem_bank.xlateaddr (plpt);
+       return chipmem_xlate_indirect (plpt);
 }
 
 STATIC_INLINE void docols (struct color_entry *colentry)
@@ -1073,21 +1073,21 @@ STATIC_INLINE void fetch (int nr, int fm, int hpos)
                        bpl1dat_written = 1;
 #ifdef DEBUGGER
                if (debug_dma)
-                       record_dma (0x110 + nr * 2, chipmem_agnus_wget (p), p, hpos, vpos, DMARECORD_BITPLANE);
+                       record_dma (0x110 + nr * 2, chipmem_wget_indirect (p), p, hpos, vpos, DMARECORD_BITPLANE);
 #endif
                switch (fm)
                {
                case 0:
-                       fetched[nr] = bplxdat[nr] = last_custom_value1 = chipmem_agnus_wget (p);
+                       fetched[nr] = bplxdat[nr] = last_custom_value1 = chipmem_wget_indirect (p);
                        break;
 #ifdef AGA
                case 1:
-                       fetched_aga0[nr] = chipmem_lget (p);
+                       fetched_aga0[nr] = chipmem_lget_indirect (p);
                        last_custom_value1 = (uae_u16)fetched_aga0[nr];
                        break;
                case 2:
-                       fetched_aga1[nr] = chipmem_lget (p);
-                       fetched_aga0[nr] = chipmem_lget (p + 4);
+                       fetched_aga1[nr] = chipmem_lget_indirect (p);
+                       fetched_aga0[nr] = chipmem_lget_indirect (p + 4);
                        last_custom_value1 = (uae_u16)fetched_aga0[nr];
                        break;
 #endif
@@ -3119,8 +3119,8 @@ static void immediate_copper (int num)
                        break;
                pos++;
                oldpos = pos;
-               cop_state.i1 = chipmem_agnus_wget (cop_state.ip);
-               cop_state.i2 = chipmem_agnus_wget (cop_state.ip + 2);
+               cop_state.i1 = chipmem_wget_indirect (cop_state.ip);
+               cop_state.i2 = chipmem_wget_indirect (cop_state.ip + 2);
                cop_state.ip += 4;
                if (!(cop_state.i1 & 1)) { // move
                        cop_state.i1 &= 0x1fe;
@@ -3397,7 +3397,7 @@ void send_interrupt (int num, int delay)
 {
        if (use_eventmode (0x8000) && delay > 0) {
                if (!(intreq & (1 << num)))
-                       event2_newevent_xx (-1, delay * CYCLE_UNIT, num, send_interrupt_do);
+                       event2_newevent_xx (-1, delay, num, send_interrupt_do);
        } else {
                send_interrupt_do (num);
        }
@@ -3891,9 +3891,9 @@ static void BLTSIZH (int hpos, uae_u16 v)
        maybe_blit (hpos, 0);
        blt_info.hblitsize = v & 0x7FF;
        if (!blt_info.vblitsize)
-               blt_info.vblitsize = 32768;
+               blt_info.vblitsize = 0x8000;
        if (!blt_info.hblitsize)
-               blt_info.hblitsize = 0x800;
+               blt_info.hblitsize = 0x0800;
        do_blitter (hpos, copper_access);
 }
 
@@ -4330,7 +4330,7 @@ static void update_copper (int until_hpos)
                        alloc_cycle (old_hpos, CYCLE_COPPER);
 #ifdef DEBUGGER
                        if (debug_dma)
-                               record_dma (0x8c, chipmem_agnus_wget (cop_state.ip), cop_state.ip, old_hpos, vpos, DMARECORD_COPPER);
+                               record_dma (0x8c, chipmem_wget_indirect (cop_state.ip), cop_state.ip, old_hpos, vpos, DMARECORD_COPPER);
 #endif
                        cop_state.ip += 2;
                        break;
@@ -4343,7 +4343,7 @@ static void update_copper (int until_hpos)
                        cop_state.state = COP_read1;
                        alloc_cycle (old_hpos, CYCLE_COPPER);
                        if (debug_dma)
-                               record_dma (0x1fe, chipmem_agnus_wget (cop_state.ip), cop_state.ip, old_hpos, vpos, DMARECORD_COPPER);
+                               record_dma (0x1fe, chipmem_wget_indirect (cop_state.ip), cop_state.ip, old_hpos, vpos, DMARECORD_COPPER);
                        // next cycle finally reads from new pointer
                        if (cop_state.strobe == 1)
                                cop_state.ip = cop1lc;
@@ -4364,7 +4364,7 @@ static void update_copper (int until_hpos)
                case COP_read1:
                        if (copper_cant_read (old_hpos, 1))
                                continue;
-                       cop_state.i1 = last_custom_value1 = chipmem_agnus_wget (cop_state.ip);
+                       cop_state.i1 = last_custom_value1 = chipmem_wget_indirect (cop_state.ip);
                        alloc_cycle (old_hpos, CYCLE_COPPER);
 #ifdef DEBUGGER
                        if (debug_dma)
@@ -4377,7 +4377,7 @@ static void update_copper (int until_hpos)
                case COP_read2:
                        if (copper_cant_read (old_hpos, 1))
                                continue;
-                       cop_state.i2 = last_custom_value1 = chipmem_agnus_wget (cop_state.ip);
+                       cop_state.i2 = last_custom_value1 = chipmem_wget_indirect (cop_state.ip);
                        alloc_cycle (old_hpos, CYCLE_COPPER);
                        cop_state.ip += 2;
                        cop_state.saved_i1 = cop_state.i1;
@@ -4663,7 +4663,7 @@ STATIC_INLINE uae_u16 sprite_fetch (struct sprite *s, int dma, int hpos, int cyc
        if (dma) {
                if (cycle && currprefs.cpu_cycle_exact)
                        s->ptxhpos = hpos;
-               data = last_custom_value1 = chipmem_agnus_wget (s->pt);
+               data = last_custom_value1 = chipmem_wget_indirect (s->pt);
                alloc_cycle (hpos, CYCLE_SPRITE);
 #ifdef DEBUGGER
                if (debug_dma)
@@ -4675,7 +4675,7 @@ STATIC_INLINE uae_u16 sprite_fetch (struct sprite *s, int dma, int hpos, int cyc
 }
 STATIC_INLINE uae_u16 sprite_fetch2 (struct sprite *s, int hpos, int cycle, int mode)
 {
-       uae_u16 data = last_custom_value1 = chipmem_agnus_wget (s->pt);
+       uae_u16 data = last_custom_value1 = chipmem_wget_indirect (s->pt);
        s->pt += 2;
        return data;
 }
@@ -5380,10 +5380,10 @@ static void hsync_handler (void)
        // DIP Agnus (8361): vblank interrupt is triggered on line 1!
        if (currprefs.cs_dipagnus) {
                if (vpos == 1)
-                       send_interrupt (5, 1);
+                       send_interrupt (5, 1 * CYCLE_UNIT);
        } else {
                if (vpos == 0)
-                       send_interrupt (5, 1);
+                       send_interrupt (5, 1 * CYCLE_UNIT);
        }
 
 #ifdef CPUEMU_12
index 01b7cee1bedb304f216125b5ecbf13ccff330385..54ec1941029eafd7c0c4d778ab01302849751831 100644 (file)
--- a/debug.cpp
+++ b/debug.cpp
@@ -345,13 +345,13 @@ static uae_u32 readbin (TCHAR **c)
        return readbinx (c);
 }
 
-static TCHAR next_char(TCHAR **c)
+static TCHAR next_char (TCHAR **c)
 {
        ignore_ws (c);
        return *(*c)++;
 }
 
-static TCHAR peek_next_char(TCHAR **c)
+static TCHAR peek_next_char (TCHAR **c)
 {
        TCHAR *pc = *c;
        return pc[1];
@@ -1044,7 +1044,7 @@ static uaecptr decode_copperlist (FILE* file, uaecptr address, int nolines)
 {
        uae_u32 insn;
        while (nolines-- > 0) {
-               insn = (chipmem_agnus_wget (address) << 16) | chipmem_agnus_wget (address + 2);
+               insn = (chipmem_wget_indirect (address) << 16) | chipmem_wget_indirect (address + 2);
                decode_copper_insn (file, insn, address);
                address += 4;
        }
index f0eb267b7efbce87fe11cf8697d03b1c2cfaad60..07393ee556f1e97ccc94d98b1f24e182a39e4cc4 100644 (file)
--- a/disk.cpp
+++ b/disk.cpp
@@ -2681,13 +2681,13 @@ static void disk_doupdate_write (drive * drv, int floppybits)
                                floppy[dr].mfmpos %= drv->tracklen;
                        }
                }
-               if ((dmacon & 0x210) == 0x210 && dskdmaen == 3 && dsklength > 0 && (!(adkcon &0x400) || dma_enable)) {
+               if (dmaen (DMA_DISK) && dskdmaen == 3 && dsklength > 0 && (!(adkcon &0x400) || dma_enable)) {
                        bitoffset++;
                        bitoffset &= 15;
                        if (!bitoffset) {
                                for (dr = 0; dr < MAX_FLOPPY_DRIVES ; dr++) {
                                        drive *drv2 = &floppy[dr];
-                                       uae_u16 w = get_word (dskpt);
+                                       uae_u16 w = chipmem_wget_indirect (dskpt);
 #ifdef CPUEMU_12
                                        diskdma (dskpt, w, 1);
 #endif
@@ -2798,9 +2798,9 @@ static void disk_doupdate_read_nothing (int floppybits)
 
        while (floppybits >= get_floppy_speed()) {
                word <<= 1;
-               if (bitoffset == 15 && dma_enable && dskdmaen == 2 && dsklength >= 0) {
+               if (dmaen (DMA_DISK) && bitoffset == 15 && dma_enable && dskdmaen == 2 && dsklength >= 0) {
                        if (dsklength > 0) {
-                               put_word (dskpt, word);
+                               chipmem_wput_indirect (dskpt, word);
 #ifdef CPUEMU_12
                                diskdma (dskpt, word, 0);
 #endif
@@ -2820,6 +2820,31 @@ static void disk_doupdate_read_nothing (int floppybits)
        }
 }
 
+static bool doreaddma (void)
+{
+       if (dmaen (DMA_DISK) && bitoffset == 15 && dma_enable && dskdmaen == 2 && dsklength >= 0) {
+               if (dsklength > 0) {
+                       chipmem_wput_indirect (dskpt, word);
+#ifdef CPUEMU_12
+                       diskdma (dskpt, word, 0);
+#endif
+                       dskpt += 2;
+               }
+#if 0
+               dma_tab[j++] = word;
+               if (j == MAX_DISK_WORDS_PER_LINE - 1) {
+                       write_log (L"Bug: Disk DMA buffer overflow!\n");
+                       j--;
+               }
+#endif
+               dsklength--;
+               if (dsklength <= 0)
+                       disk_dmafinished ();
+               return true;
+       }
+       return false;
+}
+
 static void disk_doupdate_read (drive * drv, int floppybits)
 {
        int j = 0, k = 1, l = 0;
@@ -2864,37 +2889,22 @@ static void disk_doupdate_read (drive * drv, int floppybits)
                        drv->mfmpos += disk_jitter;
                        drv->mfmpos %= drv->tracklen;
                }
-               if (bitoffset == 15 && dma_enable && dskdmaen == 2 && dsklength >= 0) {
-                       if (dsklength > 0) {
-                               put_word (dskpt, word);
-#ifdef CPUEMU_12
-                               diskdma (dskpt, word, 0);
-#endif
-                               dskpt += 2;
-                       }
-#if 0
-                       dma_tab[j++] = word;
-                       if (j == MAX_DISK_WORDS_PER_LINE - 1) {
-                               write_log (L"Bug: Disk DMA buffer overflow!\n");
-                               j--;
-                       }
-#endif
-                       dsklength--;
-                       if (dsklength <= 0)
-                               disk_dmafinished ();
-               }
+               bool dmadone = doreaddma ();
                if ((bitoffset & 7) == 7) {
                        dskbytr_val = word & 0xff;
                        dskbytr_val |= 0x8000;
                }
                if (word == dsksync) {
-                       if (adkcon & 0x400)
-                               bitoffset = 15;
                        if (dskdmaen) {
                                if (disk_debug_logging && dma_enable == 0)
-                                       write_log (L"Sync match, DMA started at %d\n", drv->mfmpos);
+                                       write_log (L"Sync match, DMA started at %d PC=%08x\n", drv->mfmpos, M68K_GETPC);
                                dma_enable = 1;
                        }
+                       // start DMA immediately if bitoffset is already in sync instead of waiting for next word
+                       if (!dmadone)
+                               doreaddma ();
+                       if (adkcon & 0x400)
+                               bitoffset = 15;
                }
                bitoffset++;
                bitoffset &= 15;
@@ -2940,7 +2950,7 @@ uae_u16 DSKBYTR (int hpos)
        dskbytr_val &= ~0x8000;
        if (word == dsksync)
                v |= 0x1000;
-       if (dskdmaen && (dmacon & 0x210) == 0x210)
+       if (dskdmaen && dmaen (DMA_DISK))
                v |= 0x4000;
        if (dsklen & 0x4000)
                v |= 0x2000;
@@ -3020,8 +3030,6 @@ void DISK_update (int tohpos)
        int didread;
 
        disk_jitter = ((uaerand () >> 4) & 3) + 1;
-       if (disk_jitter > 2)
-               disk_jitter = 1;
        if (cycles <= 0)
                return;
        disk_hpos += cycles;
@@ -3078,6 +3086,7 @@ void DSKLEN (uae_u16 v, int hpos)
        int motormask;
 
        DISK_update (hpos);
+
        if ((v & 0x8000) && (dsklen & 0x8000)) {
                dskdmaen = 2;
                DISK_start ();
@@ -3211,7 +3220,7 @@ void DSKLEN (uae_u16 v, int hpos)
                                                return;
                                }
                                while (dsklength-- > 0) {
-                                       put_word (dskpt, drv->bigmfmbuf[pos >> 4]);
+                                       chipmem_wput_indirect (dskpt, drv->bigmfmbuf[pos >> 4]);
                                        dskpt += 2;
                                        pos += 16;
                                        pos %= drv->tracklen;
@@ -3222,7 +3231,7 @@ void DSKLEN (uae_u16 v, int hpos)
                        } else if (dskdmaen == 3) { /* TURBO write */
 
                                for (i = 0; i < dsklength; i++) {
-                                       uae_u16 w = get_word (dskpt + i * 2);
+                                       uae_u16 w = chipmem_wget_indirect (dskpt + i * 2);
                                        drv->bigmfmbuf[pos >> 4] = w;
 #ifdef AMAX
                                        if (currprefs.amaxromfile[0])
@@ -3238,13 +3247,13 @@ void DSKLEN (uae_u16 v, int hpos)
                if (!done && noselected) {
                        while (dsklength-- > 0) {
                                if (dskdmaen == 3) {
-                                       uae_u16 w = get_word (dskpt);
+                                       uae_u16 w = chipmem_wget_indirect (dskpt);
 #ifdef AMAX
                                        if (currprefs.amaxromfile[0])
                                                amax_diskwrite (w);
 #endif
                                } else {
-                                       put_word (dskpt, 0);
+                                       chipmem_wput_indirect (dskpt, 0);
                                }
                                dskpt += 2;
                        }
@@ -3412,10 +3421,14 @@ end:
 
 void DISK_save_custom (uae_u32 *pdskpt, uae_u16 *pdsklength, uae_u16 *pdsksync, uae_u16 *pdskbytr)
 {
-       if(pdskpt) *pdskpt = dskpt;
-       if(pdsklength) *pdsklength = dsklength;
-       if(pdsksync) *pdsksync = dsksync;
-       if(pdskbytr) *pdskbytr = dskbytr_val;
+       if (pdskpt)
+               *pdskpt = dskpt;
+       if (pdsklength)
+               *pdsklength = dsklength;
+       if (pdsksync)
+               *pdsksync = dsksync;
+       if (pdskbytr)
+               *pdskbytr = dskbytr_val;
 }
 
 #endif /* SAVESTATE || DEBUGGER */
index bd8e18963bf96c1d11f75b95345c924c552209b2..5a1bdd4e535fbe24f32d7205998b49e3663ab7ac 100644 (file)
@@ -285,10 +285,17 @@ static void REGPARAM2 expamem_wput (uaecptr addr, uae_u32 value)
                                p1 = get_word (regs.regs[11] + 0x20);
                                if (expamem[0] & add_memory) {
                                        // Z3 RAM expansion
-                                       if (z3num == 0)
-                                               p2 = z3fastmem_start >> 16;
-                                       else
-                                               p2 = z3fastmem2_start >> 16;
+                                       p2 = 0;
+                                       while (!p2 && z3num < 3) {
+                                               if (z3num == 0 && currprefs.z3fastmem_size)
+                                                       p2 = z3fastmem_start >> 16;
+                                               else if (z3num == 1 && currprefs.z3fastmem2_size)
+                                                       p2 = z3fastmem2_start >> 16;
+                                               else if (z3num == 2 && currprefs.z3chipmem_size)
+                                                       p2 = z3chipmem_start >> 16;
+                                               if (!p2)
+                                                       z3num++;
+                                       }
                                        z3num++;
                                } else {
                                        // Z3 P96 RAM
@@ -695,9 +702,9 @@ static addrbank filesys_bank = {
 *  Z3fastmem Memory
 */
 
-static uae_u32 z3fastmem_mask, z3fastmem2_mask;
-uaecptr z3fastmem_start, z3fastmem2_start;
-static uae_u8 *z3fastmem, *z3fastmem2;
+static uae_u32 z3fastmem_mask, z3fastmem2_mask, z3chipmem_mask;
+uaecptr z3fastmem_start, z3fastmem2_start, z3chipmem_start;
+static uae_u8 *z3fastmem, *z3fastmem2, *z3chipmem;
 
 static uae_u32 REGPARAM2 z3fastmem_lget (uaecptr addr)
 {
@@ -813,6 +820,65 @@ static uae_u8 *REGPARAM2 z3fastmem2_xlate (uaecptr addr)
        addr &= z3fastmem2_mask;
        return z3fastmem2 + addr;
 }
+
+static uae_u32 REGPARAM2 z3chipmem_lget (uaecptr addr)
+{
+       uae_u8 *m;
+       addr -= z3chipmem_start & z3chipmem_mask;
+       addr &= z3chipmem_mask;
+       m = z3chipmem + addr;
+       return do_get_mem_long ((uae_u32 *)m);
+}
+static uae_u32 REGPARAM2 z3chipmem_wget (uaecptr addr)
+{
+       uae_u8 *m;
+       addr -= z3chipmem_start & z3chipmem_mask;
+       addr &= z3chipmem_mask;
+       m = z3chipmem + addr;
+       return do_get_mem_word ((uae_u16 *)m);
+}
+static uae_u32 REGPARAM2 z3chipmem_bget (uaecptr addr)
+{
+       addr -= z3chipmem_start & z3chipmem_mask;
+       addr &= z3chipmem_mask;
+       return z3chipmem[addr];
+}
+static void REGPARAM2 z3chipmem_lput (uaecptr addr, uae_u32 l)
+{
+       uae_u8 *m;
+       addr -= z3chipmem_start & z3chipmem_mask;
+       addr &= z3chipmem_mask;
+       m = z3chipmem + addr;
+       do_put_mem_long ((uae_u32 *)m, l);
+}
+static void REGPARAM2 z3chipmem_wput (uaecptr addr, uae_u32 w)
+{
+       uae_u8 *m;
+       addr -= z3chipmem_start & z3chipmem_mask;
+       addr &= z3chipmem_mask;
+       m = z3chipmem + addr;
+       do_put_mem_word ((uae_u16 *)m, w);
+}
+static void REGPARAM2 z3chipmem_bput (uaecptr addr, uae_u32 b)
+{
+       addr -= z3chipmem_start & z3chipmem_mask;
+       addr &= z3chipmem_mask;
+       z3chipmem[addr] = b;
+}
+static int REGPARAM2 z3chipmem_check (uaecptr addr, uae_u32 size)
+{
+       addr -= z3chipmem_start & z3chipmem_mask;
+       addr &= z3chipmem_mask;
+       return (addr + size) <= allocated_z3chipmem;
+}
+static uae_u8 *REGPARAM2 z3chipmem_xlate (uaecptr addr)
+{
+       addr -= z3chipmem_start & z3chipmem_mask;
+       addr &= z3chipmem_mask;
+       return z3chipmem + addr;
+}
+
+
 addrbank z3fastmem_bank = {
        z3fastmem_lget, z3fastmem_wget, z3fastmem_bget,
        z3fastmem_lput, z3fastmem_wput, z3fastmem_bput,
@@ -825,6 +891,12 @@ addrbank z3fastmem2_bank = {
        z3fastmem2_xlate, z3fastmem2_check, NULL, L"ZorroIII Fast RAM #2",
        z3fastmem2_lget, z3fastmem2_wget, ABFLAG_RAM
 };
+addrbank z3chipmem_bank = {
+       z3chipmem_lget, z3chipmem_wget, z3chipmem_bget,
+       z3chipmem_lput, z3chipmem_wput, z3chipmem_bput,
+       z3chipmem_xlate, z3chipmem_check, NULL, L"ZorroIII FakeChipRAM",
+       z3chipmem_lget, z3chipmem_wget, ABFLAG_RAM
+};
 
 /* Z3-based UAEGFX-card */
 uae_u32 gfxmem_mask; /* for memory.c */
@@ -973,6 +1045,11 @@ static void expamem_map_z3fastmem2 (void)
 {
        expamem_map_z3fastmem_2 (&z3fastmem2_bank, &z3fastmem2_start, currprefs.z3fastmem2_size, allocated_z3fastmem2);
 }
+static void expamem_map_z3chipmem (void)
+{
+       expamem_map_z3fastmem_2 (&z3chipmem_bank, &z3chipmem_start, currprefs.z3chipmem_size, allocated_z3chipmem);
+}
+
 
 static void expamem_init_z3fastmem_2 (addrbank *bank, uae_u32 start, uae_u32 size, uae_u32 allocated)
 {
@@ -1019,6 +1096,10 @@ static void expamem_init_z3fastmem2 (void)
 {
        expamem_init_z3fastmem_2 (&z3fastmem2_bank, z3fastmem2_start, currprefs.z3fastmem2_size, allocated_z3fastmem2);
 }
+static void expamem_init_z3chipmem (void)
+{
+       expamem_init_z3fastmem_2 (&z3chipmem_bank, z3chipmem_start, currprefs.z3chipmem_size, allocated_z3chipmem);
+}
 
 #ifdef PICASSO96
 /*
@@ -1076,7 +1157,7 @@ static void expamem_init_gfxcard (void)
 
 
 #ifdef SAVESTATE
-static size_t fast_filepos, z3_filepos, z3_filepos2, p96_filepos;
+static size_t fast_filepos, z3_filepos, z3_filepos2, z3_fileposchip, p96_filepos;
 #endif
 
 void free_fastmemory (void)
@@ -1092,6 +1173,7 @@ static void allocate_expamem (void)
        currprefs.z3fastmem_size = changed_prefs.z3fastmem_size;
        currprefs.z3fastmem2_size = changed_prefs.z3fastmem2_size;
        currprefs.gfxmem_size = changed_prefs.gfxmem_size;
+       currprefs.z3chipmem_size = changed_prefs.z3chipmem_size;
 
        if (allocated_fastmem != currprefs.fastmem_size) {
                free_fastmemory ();
@@ -1141,6 +1223,24 @@ static void allocate_expamem (void)
                }
                memory_hardreset ();
        }
+       if (allocated_z3chipmem != currprefs.z3chipmem_size) {
+               if (z3chipmem)
+                       mapped_free (z3chipmem);
+               z3chipmem = 0;
+
+               allocated_z3chipmem = currprefs.z3chipmem_size;
+               z3chipmem_mask = allocated_z3chipmem - 1;
+
+               if (allocated_z3chipmem) {
+                       z3chipmem = mapped_malloc (allocated_z3chipmem, L"z3_chip");
+                       if (z3chipmem == 0) {
+                               write_log (L"Out of memory for 32 bit fake chip memory.\n");
+                               allocated_z3chipmem = 0;
+                       }
+               }
+               memory_hardreset ();
+       }
+
 #ifdef PICASSO96
        if (allocated_gfxmem != currprefs.gfxmem_size) {
                if (gfxmemory)
@@ -1163,6 +1263,7 @@ static void allocate_expamem (void)
 
        z3fastmem_bank.baseaddr = z3fastmem;
        z3fastmem2_bank.baseaddr = z3fastmem2;
+       z3chipmem_bank.baseaddr = z3chipmem;
        fastmem_bank.baseaddr = fastmemory;
        gfxmem_bank.baseaddr = gfxmemory;
 
@@ -1183,6 +1284,11 @@ static void allocate_expamem (void)
                        map_banks (&z3fastmem2_bank, z3fastmem2_start >> 16, currprefs.z3fastmem2_size >> 16,
                                allocated_z3fastmem2);
                }
+               if (allocated_z3chipmem > 0) {
+                       restore_ram (z3_fileposchip, z3chipmem);
+                       map_banks (&z3chipmem_bank, z3chipmem_start >> 16, currprefs.z3chipmem_size >> 16,
+                               allocated_z3fastmem2);
+               }
 #ifdef PICASSO96
                if (allocated_gfxmem > 0 && gfxmem_start > 0) {
                        restore_ram (p96_filepos, gfxmemory);
@@ -1274,12 +1380,12 @@ static void expamem_init_a4091 (void)
        ncr_init ();
 }
 
-void p96memstart(void)
+void p96memstart (void)
 {
        /* make sure there is always empty space between Z3 and P96 RAM */
-       p96ram_start = currprefs.z3fastmem_start + ((currprefs.z3fastmem_size + currprefs.z3fastmem2_size + 0xffffff) & ~0xffffff);
-       if (p96ram_start == currprefs.z3fastmem_start + currprefs.z3fastmem_size + currprefs.z3fastmem2_size &&
-               (currprefs.z3fastmem_size + currprefs.z3fastmem2_size < 512 * 1024 * 1024 || currprefs.gfxmem_size < 128 * 1024 * 1024))
+       p96ram_start = currprefs.z3fastmem_start + ((currprefs.z3fastmem_size + currprefs.z3fastmem2_size + currprefs.z3chipmem_size + 0xffffff) & ~0xffffff);
+       if (p96ram_start == currprefs.z3fastmem_start + currprefs.z3fastmem_size + currprefs.z3fastmem2_size + currprefs.z3chipmem_size &&
+               (currprefs.z3fastmem_size + currprefs.z3fastmem2_size + currprefs.z3chipmem_size < 512 * 1024 * 1024 || currprefs.gfxmem_size < 128 * 1024 * 1024))
                p96ram_start += 0x1000000;
 }
 
@@ -1328,6 +1434,15 @@ void expamem_reset (void)
                        map_banks (&z3fastmem2_bank, z3fastmem2_start >> 16, currprefs.z3fastmem2_size >> 16, allocated_z3fastmem2);
                }
        }
+       z3chipmem_start = z3fastmem2_start + currprefs.z3fastmem2_size;
+       if (currprefs.z3fastmem_size || currprefs.z3fastmem2_size)
+               z3chipmem_start += 16 * 1024 * 1024;
+       if (z3chipmem != NULL) {
+               z3num = 0;
+               card_init[cardno] = expamem_init_z3chipmem;
+               card_map[cardno++] = expamem_map_z3chipmem;
+               map_banks (&z3chipmem_bank, z3chipmem_start >> 16, currprefs.z3chipmem_size >> 16, allocated_z3chipmem);
+       }
 #ifdef CDTV
        if (currprefs.cs_cdtvcd) {
                card_init[cardno] = expamem_init_cdtv;
@@ -1419,6 +1534,9 @@ void expansion_init (void)
        allocated_z3fastmem2 = 0;
        z3fastmem2_mask = z3fastmem2_start = 0;
        z3fastmem2 = 0;
+       allocated_z3chipmem = 0;
+       z3chipmem_mask = z3chipmem_start = 0;
+       z3chipmem = 0;
 
        allocate_expamem ();
 
@@ -1444,6 +1562,9 @@ void expansion_cleanup (void)
        if (z3fastmem2)
                mapped_free (z3fastmem2);
        z3fastmem2 = 0;
+       if (z3chipmem)
+               mapped_free (z3chipmem);
+       z3chipmem = 0;
 
 #ifdef PICASSO96
        if (gfxmemory)
@@ -1462,7 +1583,7 @@ void expansion_cleanup (void)
 #endif
 }
 
-void expansion_clear(void)
+void expansion_clear (void)
 {
        if (fastmemory)
                memset (fastmemory, 0, allocated_fastmem);
@@ -1470,6 +1591,8 @@ void expansion_clear(void)
                memset (z3fastmem, 0, allocated_z3fastmem > 0x800000 ? 0x800000 : allocated_z3fastmem);
        if (z3fastmem2)
                memset (z3fastmem2, 0, allocated_z3fastmem2 > 0x800000 ? 0x800000 : allocated_z3fastmem2);
+       if (z3chipmem)
+               memset (z3chipmem, 0, allocated_z3chipmem > 0x800000 ? 0x800000 : allocated_z3chipmem);
        if (gfxmemory)
                memset (gfxmemory, 0, allocated_gfxmem);
 }
@@ -1486,6 +1609,10 @@ uae_u8 *save_fram (int *len)
 
 uae_u8 *save_zram (int *len, int num)
 {
+       if (num < 0) {
+               *len = allocated_z3chipmem;
+               return z3chipmem;
+       }
        *len = num ? allocated_z3fastmem2 : allocated_z3fastmem;
        return num ? z3fastmem2 : z3fastmem;
 }
@@ -1504,7 +1631,10 @@ void restore_fram (int len, size_t filepos)
 
 void restore_zram (int len, size_t filepos, int num)
 {
-       if (num) {
+       if (num == -1) {
+               z3_fileposchip = filepos;
+               changed_prefs.z3chipmem_size = len;
+       } else if (num == 1) {
                z3_filepos2 = filepos;
                changed_prefs.z3fastmem2_size = len;
        } else {
index 4a218e67c0bdb06c462dbb0d525b038100ba3088..6b7ebf2ef1edfc2985338c38567896855fc8c438 100644 (file)
 ; 2007.06.15 uninitialized variable in memory type selection fixed (stupid me) (TW)
 ; 2007.08.09 started implementing removable drive support (TW)
 ; 2007.09.01 ACTION_EXAMINE_ALL (TW)
-; 2007.09.05 fully filesystem device mounting on the fly (TW)
+; 2007.09.05 full filesystem device mounting on the fly (TW)
 ; 2008.01.09 ACTION_EXAMINE_ALL does not anymore return eac_Entries = 0 with continue (fixes some broken programs)
 ; 2008.12.11 mousehack -> tablet driver
 ; 2008.12.25 mousehack cursor sync
 ; 2009.01.20 clipboard sharing
+; 2009.12.27 console hook
 
 AllocMem = -198
 FreeMem = -210
@@ -46,14 +47,16 @@ NRF_MAGIC = $80000000
 our_seglist:
        dc.l 0                                                                  ; 8 /* NextSeg */
 start:
-       bra.w filesys_mainloop  ;12
-       dc.l make_dev-start                     ;16
-       dc.l filesys_init-start ;20
-       dc.l exter_server-start ;24
-       dc.l bootcode-start                     ;28
-       dc.l setup_exter-start  ;32
-       dc.l mh_e-start                                 ;36
-                                                                                                       ;40
+       dc.l 9                                          ;0 12
+       bra.w filesys_mainloop          ;1 16
+       dc.l make_dev-start                     ;2 20
+       dc.l filesys_init-start         ;3 24
+       dc.l exter_server-start         ;4 28
+       dc.l bootcode-start                     ;5 32
+       dc.l setup_exter-start          ;6 36
+       dc.l mh_e-start                         ;7 40
+       dc.l clipboard_init-start       ;8 44
+       ;52
 
 bootcode:
        lea.l doslibname(pc),a1
@@ -64,6 +67,69 @@ bootcode:
        jsr (a0)
        rts
 
+residenthack
+       movem.l d0-d2/a0-a2/a6,-(sp)
+       move.l 4.w,a6
+       cmp.w #37,20(a6)
+       bcs.s .rsh
+       moveq #residentcodeend-residentcodestart,d0
+       move.l d0,d2
+       moveq #1,d1
+       jsr AllocMem(a6)
+       tst.l d0
+       beq.s .rsh
+       move.l d0,a2
+
+       move.l a2,a0
+       lea residentcodestart(pc),a1
+.cp1
+       move.l (a1)+,(a0)+
+       subq.l #4,d2
+       bne.s .cp1
+
+       jsr -$0078(a6) ;Disable
+       move.l a6,a1
+       move.w #-$48,a0 ;InitCode
+       move.l a2,d0
+       jsr -$01a4(a6) ;SetFunction
+       move.l d0,residentcodejump2-residentcodestart+2(a2)
+       lea myafterdos(pc),a0
+       move.l a0,residentcodejump1-residentcodestart+2(a2)
+       jsr -$27C(a6) ;CacheClearU
+       jsr -$007e(a6) ;Enable
+.rsh
+       movem.l (sp)+,d0-d2/a0-a2/a6
+       rts
+       
+myafterdos
+       move.l (sp),a0
+       move.l 2(a0),a0
+       move.l a0,-(sp)
+       jsr (a0) ;jump to original InitCode
+       move.l (sp)+,a0
+       addq.l #4,sp ;remove return address
+       movem.l d0-d7/a1-a6,-(sp)
+       move.l a6,a1
+       move.l a0,d0
+       move.w #-$48,a0 ;InitCode
+       jsr -$01a4(a6) ;SetFunction (restore original)
+       bsr.w clipboard_init
+       bsr.w consolehook
+       movem.l (sp)+,d0-d7/a1-a6
+       rts ;return directly to caller
+
+       cnop 0,4
+residentcodestart:
+       btst #2,d0 ;RTF_AFTERDOS?
+       beq.s resjump
+residentcodejump1
+       jsr $f00000
+resjump
+residentcodejump2
+       jmp $f00000
+       cnop 0,4
+residentcodeend:
+
 filesys_init:
        movem.l d0-d7/a0-a6,-(sp)
        move.l 4.w,a6
@@ -173,6 +239,32 @@ filesys_dev_storeinfo      ; add >2MB chip RAM to memory list
        jsr -618(a6) ; AddMemList
 FSIN_chip_done
 
+       ; patch >8MB Z3 FakeChipRAM memory type to Chip
+       move.w #$FF80,d0
+       bsr.w getrtbase
+       jsr (a0) ; d1 = size, a1 = start address
+       tst.l d1
+       beq.s FSIN_fchip_done
+       move.l a1,a2
+       jsr -$0078(a6) ; Disable
+       lea 322(a6),a0 ; MemHeader
+FSIN_scanfchip:
+       move.l (a0),a0  ; first MemList
+       tst.l (a0)
+       beq.s FSIN_fchip_done
+       move.l 20(a0),d0 ; mh_Lower
+       clr.w d0
+       cmp.l d0,a2
+       bne.s FSIN_scanfchip
+       move.w 14(a0),d0 ; attributes
+       and.w #~4,d0 ; MEMF_FAST
+       or.w #2+1+256,d0 ; MEMF_CHIP | MEMF_PUBLIC | MEMF_LOCAL
+       move.w d0,14(a0)
+       lea fchipname(pc),a1
+       move.l a1,10(a0)
+       jsr -$007e(a6) ; Enable
+FSIN_fchip_done
+
        lea fstaskname(pc),a0
        lea fsmounttask(pc),a1
        moveq #10,d0
@@ -307,6 +399,7 @@ exter_server_exit:
 
 setup_exter:
        movem.l d0-d1/a0-a1,-(sp)
+       bsr.w residenthack
        moveq.l #26,d0
        move.l #$10001,d1
        jsr AllocMem(a6)
@@ -324,10 +417,6 @@ setup_exter:
        beq.s .nomh
        bsr.w mousehack_init
 .nomh
-       cmp.w #36,20(a6)
-       bcs.s .noclip
-       bsr.w clipboard_init
-.noclip
        movem.l (sp)+,d0-d1/a0-a1
        rts
 
@@ -1428,6 +1517,8 @@ createtask:
 .f     movem.l (sp)+,d2/d3/d4/a2/a3/a6
        rts
 
+; mousehack/tablet
+
 mousehack_init:
        lea mhname(pc),a0
        lea mousehack_task(pc),a1
@@ -1493,10 +1584,15 @@ MH_FOO_DELAY = 28
 MH_FOO_DIMS_X = 32
 MH_FOO_DIMS_Y = 36
 MH_FOO_VPXY = 40
-MH_FOO_ALIVE = 44
-MH_FOO_DIMS = 48
+MH_FOO_MOFFSET = 44
+MH_FOO_ALIVE = 48
+MH_FOO_LIMITCNT = 52
+MH_FOO_DIMS = 56
 MH_FOO_DISP = (MH_FOO_DIMS+88)
-MH_FOO_SIZE = (MH_FOO_DISP+48)
+MH_FOO_PREFS = (MH_FOO_DISP+48)
+MH_FOO_SIZE = (MH_FOO_PREFS+102)
+
+PREFS_SIZE = 102
 
 MH_IEV = (MH_FOO+MH_FOO_SIZE) ;InputEvent
 MH_IEH = (MH_IEV+22) ;InputHandler (Interrupt)
@@ -1506,6 +1602,10 @@ MH_IO = (MH_IENTTAGS+16*4*2)
 MH_TM = (MH_IO+4)
 MH_END = (MH_TM+4)
 
+MH_MOUSEHACK = 0
+MH_TABLET = 1
+MH_ACTIVE = 7
+
 TAG_USER   equ $80000000
 TABLETA_Dummy          EQU     TAG_USER+$3A000
 TABLETA_TabletZ                EQU     TABLETA_Dummy+$01
@@ -1519,17 +1619,19 @@ TABLETA_InProximity     EQU     TABLETA_Dummy+$08
 TABLETA_ResolutionX    EQU     TABLETA_Dummy+$09
 TABLETA_ResolutionY    EQU     TABLETA_Dummy+$0A
 
+
 DTAG_DISP EQU $80000000
 DTAG_DIMS EQU $80001000
 DTAG_MNTR EQU $80002000
 DTAG_NAME EQU $80003000
 
 getgfxlimits:
-       movem.l d0-d3/a0-a6,-(sp)
+       movem.l d0-d4/a0-a6,-(sp)
        move.l a0,a5
        sub.l a2,a2
        sub.l a3,a3
        sub.l a4,a4
+       moveq #0,d4
 
        move.l MH_FOO_GFXBASE(a5),a6
        move.l MH_FOO_INTBASE(a5),a0
@@ -1541,10 +1643,20 @@ getgfxlimits:
        move.l a0,a4
        jsr -$318(a6) ;GetVPModeID
        moveq #-1,d1
+       moveq #-1,d2
        cmp.l d0,d1
        beq.s .end
        move.l d0,d3
 
+       ; mouse offset
+       move.l MH_FOO_INTBASE(a5),a6
+       lea MH_FOO_PREFS(a5),a0
+       moveq #PREFS_SIZE,d0
+       jsr -$84(a6) ;GetPrefs
+       lea MH_FOO_PREFS(a5),a0
+       move.w 100(a0),d4
+       move.l MH_FOO_GFXBASE(a5),a6
+
   ; Text Overscan area needed
        sub.l a0,a0
        lea MH_FOO_DIMS(a5),a1
@@ -1563,6 +1675,8 @@ getgfxlimits:
 .end
 
        move.l 28(a4),d0
+       cmp.w MH_FOO_MOFFSET(a5),d4
+       bne.s .dosend
        cmp.l MH_FOO_VPXY(a5),d0
        bne.s .dosend
        cmp.l MH_FOO_DIMS_X(a5),d1
@@ -1573,6 +1687,7 @@ getgfxlimits:
        move.l d0,MH_FOO_VPXY(a5)
        move.l d1,MH_FOO_DIMS_X(a5)
        move.l d2,MH_FOO_DIMS_Y(a5)
+       move.w d4,MH_FOO_MOFFSET(a5)
 
        ; This only for doublescan properties bit..
        sub.l a0,a0
@@ -1588,13 +1703,14 @@ getgfxlimits:
 .nomntr
 
        ;send updated data to native side
+       move.w MH_FOO_MOFFSET(a5),d2
        move.w #$FF38,d0
        moveq #1,d1
        bsr.w getrtbase
        jsr (a0)
 
 .nosend
-       movem.l (sp)+,d0-d3/a0-a6
+       movem.l (sp)+,d0-d4/a0-a6
        rts
 
 mousehack_task:
@@ -1658,7 +1774,7 @@ mhloop
        moveq #0,d0
        jsr -$0228(a6) ;OpenLibrary
        move.l d0,MH_FOO_INTBASE(a3)
-       beq.w mhloop
+       beq.s mhloop
 .intyes
        tst.l MH_FOO_GFXBASE(a3)
        bne.s .gfxyes
@@ -1710,19 +1826,6 @@ mhloop
        move.l d0,MH_TM(a5)
        beq.w mhend
 
-       ; add handler
-;      move.l MH_IO(a5),a1
-;      lea MH_IEH(a5),a2
-;      lea mhhandler(pc),a0
-;      move.l a0,18(a2) ;is_Code
-;      move.b #-1,9(a2) ;ln_pri, less than Intuition
-;      lea mhname(pc),a0
-;      move.l a0,10(a2) ;ln_Name
-;      move.w #9,28(a1) ;IND_ADDHANDLER
-;      move.l a2,40(a1)
-;      move.b #1,30(a1) ;IOF_QUICK
-;      jsr -$01c8(a6) ;DoIO
-
        ;tell native side that mousehack is now active
        move.w #$FF38,d0
        moveq #0,d1
@@ -1732,10 +1835,14 @@ mhloop
 .yestim
 
        cmp.w #36,d7
-       bcs.s .old
+       bcs.s .nodims
+       subq.l #1,MH_FOO_LIMITCNT(a3)
+       bpl.s .nodims
        move.l a3,a0
        bsr.w getgfxlimits
-.old
+       moveq #50,d0
+       move.l d0,MH_FOO_LIMITCNT(a3)
+.nodims
 
        move.l MH_IO(a5),a1
        lea MH_IEV(a5),a2
@@ -1744,13 +1851,24 @@ mhloop
        move.l a2,40(a1)
 
        move.b mh_e(pc),d0
-       bpl.s .nomh
-       cmp.w #36,d7
-       bcs.w mhmode
-       
-.nomh
+       cmp.w #39,d7
+       bcs.w .notablet
+       btst #MH_TABLET,d0
+       beq.w .notablet
+
+       ;IENewTablet
+
+       lea MH_IEPT(a5),a0
+       move.l a0,10(a2) ;ie_Addr
+
        move.b #$13,4(a2) ;ie_Class=IECLASS_NEWPOINTERPOS
+       move.b #3,5(a2) ;ie_SubClass = IESUBCLASS_NEWTABLET
+       clr.l (a0) ;ient_CallBack
+       clr.l 4(a0)
        clr.w 6(a2) ;ie_Code
+       clr.l 8(a0)
+       clr.w 12(a0)
+
        ;IEQUALIFIER_MIDBUTTON=0x1000/IEQUALIFIER_RBUTTON=0x2000/IEQUALIFIER_LEFTBUTTON=0x4000
        move.l mh_buttonbits(pc),d1
        and.w #7,d1
@@ -1759,22 +1877,7 @@ mhloop
        lsl.w #8,d0
        lsl.w #4,d0
        move.w d0,8(a2) ;ie_Qualifier
-       
-       lea MH_IEPT(a5),a0
-       move.l a0,10(a2) ;ie_Addr
 
-       move.b mh_e(pc),d0
-       bmi.w .v37mh
-       cmp.w #39,d7
-       bcs.w .v37
-
-       ;IENewTablet
-
-       move.b #3,5(a2) ;ie_SubClass = IESUBCLASS_NEWTABLET
-       clr.l (a0) ;ient_CallBack
-       clr.l 4(a0)
-       clr.l 8(a0)
-       clr.w 12(a0)
        move.w mh_x(pc),12+2(a0) ;ient_TabletX
        clr.w 16(a0)
        move.w mh_y(pc),16+2(a0) ;ient_TabletY
@@ -1847,31 +1950,8 @@ mhloop
 .noproxi
        clr.l (a1) ;TAG_DONE
 
-       bra.s buttons
-
-.v37mh
-       clr.w 8(a2)
-.v37
-       cmp.w #36,d7
-       bcs.w mhloop
-
-       ;IEPointerTable
-       move.b #2,5(a2) ;ie_SubClass = IESUBCLASS_TABLET
-       move.w mh_maxx(pc),(a0) ;iept_Range.X
-       move.w mh_maxy(pc),2(a0) ;iept_Range.Y
-       move.w mh_x(pc),4(a0) ;iept_Value.X
-       move.w mh_y(pc),6(a0) ;iept_Value.Y
-       move.w mh_pressure(pc),d0
-       asr.w #8,d0
-       move.w d0,8(a0) ;iept_Pressure (-128 to 127)
-
-buttons
        bsr.w mhdoio
        
-       ; mhmode = buttons are handled normally
-       move.b mh_e(pc),d0
-       bmi.w mhloop
-
        ;create mouse button events if button state changed
        move.w #$68,d3 ;IECODE_LBUTTON->IECODE_RBUTTON->IECODE_MBUTTON
        moveq #1,d2
@@ -1903,9 +1983,12 @@ buttons
        cmp.w #8,d2
        bne.s .nextbut
        move.l d4,MH_FOO_BUTTONS(a3)
-       bra.w mhloop
 
-mhmode
+.notablet
+
+       move.b mh_e(pc),d0
+       btst #MH_MOUSEHACK,d0
+       beq.w mhloop
 
        clr.l (a2)
        move.w #$0400,4(a2) ;IECLASS_POINTERPOS
@@ -1965,24 +2048,8 @@ mousehackint:
        lea $dff000,a0
        moveq #0,d0
        rts
-       
-;mhhandler:
-;      movem.l a0/a2,-(sp)
-;      move.l a0,a2
-;.mhl
-;      cmp.b #4,4(a2) ;IECLASS_POINTERPOS
-;      bne.s .mhl1
-;      move.w #$FF38,d0
-;      moveq #3,d1
-;      bsr.w getrtbase
-;      jsr (a0)
-;.mhl1
-;      move.l (a2),d0
-;      move.l d0,a2
-;      bne.s .mhl
-;      movem.l (sp)+,a0/a2
-;      move.l a0,d0
-;      rts
+
+; clipboard sharing
 
 CLIP_WRITE_SIZE = 0
 CLIP_WRITE_ALLOC = (CLIP_WRITE_SIZE+4)
@@ -1994,68 +2061,47 @@ CLIP_DOS = (CLIP_EXEC+4)
 CLIP_HOOK = (CLIP_DOS+4)
 CLIP_BUF = (CLIP_HOOK+20)
 CLIP_BUF_SIZE = 8
-CLIP_END = (CLIP_BUF+CLIP_BUF_SIZE)
+CLIP_POINTER_NOTIFY = (CLIP_BUF+CLIP_BUF_SIZE)
+CLIP_POINTER_PREFS = (CLIP_POINTER_NOTIFY+48)
+CLIP_END = (CLIP_POINTER_PREFS+32)
 
 clipboard_init:
-       lea clname(pc),a0
-       lea clipboard_task(pc),a1
-       moveq #-10,d0
-       bsr createtask
-       rts
-
-clipboard_task:
-       sub.l a5,a5
+       movem.l a5/a6,-(sp)
        move.l 4.w,a6
-
        move.l #CLIP_END,d0
        move.l #$10001,d1
        jsr AllocMem(a6)
        tst.l d0
-       beq.s clipdie
+       beq.w clipdie
        move.l d0,a5
-
        move.l a6,CLIP_EXEC(a5)
 
-       sub.l a1,a1
-       jsr -294(a6) ; FindTask
-       move.l d0,CLIP_TASK(a5)
-
        move.w #$FF38,d0
        moveq #14,d1
        bsr.w getrtbase
        move.l a5,d0
        jsr (a0)
 
-.wait
-       moveq #0,d0
-       bset #13,d0
-       jsr -$013e(a6) ;Wait
-       jsr -$0084(a6) ;Forbid
-       lea 378(a6),a0 ;LibList
-       lea doslibname(pc),a1
-       jsr -$114(a6) ;FindName
-       move.l d0,d2
-       jsr -$008a(a6) ;Permit
-       tst.l d2
-       beq.s .wait
-
-       clr.l CLIP_TASK(a5)
-
+       ; we need to be a process, LoadLibrary() needs to call dos
        lea clname(pc),a0
        lea clipboard_proc(pc),a1
        moveq #-10,d0
-       move.l #3000,d1
+       move.l #10000,d1
        bsr.w createproc
-       
-       ; task has done its job, process continues..
+
        moveq #0,d0
+       movem.l (sp)+,a5/a6
        rts
 
-clipdie:
+clipkill
        move.w #$FF38,d0
        moveq #10,d1
        bsr.w getrtbase
        jsr (a0)
+       rts
+
+clipdie:
+       bsr.s clipkill
        move.l a5,d0
        beq.s .cd1
        move.l CLIP_EXEC(a5),a6
@@ -2065,12 +2111,84 @@ clipdie:
        jsr -414(a6) ; CloseLibrary
 .cd2
        move.l a5,a1
-       moveq #CLIP_END,d0
+       move.l #CLIP_END,d0
        jsr FreeMem(a6) 
 .cd1
        moveq #0,d0
        rts
 
+prefsread:
+       movem.l d2-d4/a2-a6,-(sp)
+       move.l CLIP_DOS(a5),a6
+       lea pointer_prefs(pc),a0
+       move.l a0,d1
+       move.l #1005,d2
+       jsr -$001e(a6) ;Open
+       move.l d0,d4
+       beq.s .pr1
+       lea CLIP_POINTER_PREFS(a5),a2
+.pr4
+       clr.l (a2)
+.pr3
+       move.w 2(a2),(a2)
+       move.l a2,d2
+       addq.l #2,d2
+       moveq   #2,d3
+       move.l d4,d1
+       jsr -$002a(a6) ;Read
+       cmp.l d0,d3
+       bne.s .pr1
+       cmp.l #'PNTR',(a2)
+       bne.s .pr3
+       move.l a2,d2
+       moveq #4,d3
+       move.l d4,d1
+       jsr -$002a(a6) ;Read    
+       move.l a2,d2
+       moveq #32,d3
+       move.l d4,d1
+       jsr -$002a(a6) ;Read    
+       cmp.l d0,d3
+       bne.s .pr1
+       tst.w 16(a2) ;pp_Which
+       bne.s .pr4
+       move.w #$FF38,d0
+       moveq #16,d1
+       bsr.w getrtbase
+       jsr (a0)
+.pr1
+       move.l d4,d1
+       beq.s .pr2
+       jsr -$0024(a6) ;Close
+.pr2
+       movem.l (sp)+,d2-d4/a2-a6
+       rts
+
+prefshook:
+       move.l CLIP_DOS(a5),a6
+       lea ram_name(pc),a0
+       move.l a0,d1
+       moveq #-2,d2
+       jsr -$0054(a6) ;Lock
+       move.l d0,d1
+       beq.s .ph1
+       jsr -$005a(a6) ;Unlock
+       move.l CLIP_EXEC(a5),a6
+       lea CLIP_POINTER_NOTIFY(a5),a2
+       moveq #-1,d0
+       jsr -$014a(a6) ;AllocSignal
+       move.b d0,20(a2) ;nr_SignalNum
+       lea pointer_prefs(pc),a0
+       move.l a0,(a2) ;nr_Name
+       move.l #NRF_SEND_SIGNAL|NRF_NOTIFY_INITIAL,12(a2) ;nr_Flags 
+       move.l CLIP_TASK(a5),16(a2) ;nr_Task
+       move.l CLIP_DOS(a5),a6
+       move.l a2,d1
+       jsr -$378(a6) ;StartNotify
+.ph1
+       move.l CLIP_EXEC(a5),a6
+       rts
+
        cnop 0,4
        dc.l 16
 clipboard_proc:
@@ -2093,7 +2211,6 @@ clipboard_proc:
        moveq #0,d0
        jsr -$0228(a6) ; OpenLibrary
        move.l d0,CLIP_DOS(a5)
-       tst.l d0
        beq.w clipdie
        move.l d0,a6
 
@@ -2133,7 +2250,7 @@ cfloop2
        moveq #0,d0
        bset #13,d0
        jsr -$013e(a6) ;Wait
-
+       
        moveq #0,d1
        move.l CLIP_UNIT(a5),d0
        lea clip_dev(pc),a0
@@ -2141,11 +2258,18 @@ cfloop2
        jsr -$01bc(a6) ;OpenDevice
        tst.l d0
        bne.s cfloop2
-
-       move.w #$FF38,d0
-       moveq #15,d1
-       bsr.w getrtbase
-       jsr (a0)
+       move.l 20(a4),a0 ;device node
+       cmp.w #37,20(a0) ;must be at least v37
+       bcc.s cfversion
+       ;too lazy to free everything..
+       bsr.w clipkill
+cfloop3
+       moveq #0,d0
+       jsr -$013e(a6) ;Wait
+       bra.s cfloop3
+       
+cfversion
+       bsr.w prefshook
 
        lea CLIP_HOOK(a5),a0
        move.l a0,40(a4)
@@ -2158,11 +2282,26 @@ cfloop2
        move.l a4,a1
        jsr -$01c8(a6) ;DoIO
 
+       move.w #$FF38,d0
+       moveq #15,d1
+       bsr.w getrtbase
+       jsr (a0)
+       tst.l CLIP_WRITE_SIZE(a5)
+       bne.s clipsignal
+
 cfloop
        moveq #0,d0
+       moveq #0,d2
+       move.b CLIP_POINTER_NOTIFY+20(a5),d2
+       bset d2,d0
        bset #13,d0
        jsr -$013e(a6) ;Wait
+       btst d2,d0
+       beq.s clipsignal
+       bsr.w prefsread
+       bra.s cfloop
 
+clipsignal
        move.l CLIP_WRITE_SIZE(a5),d0
        beq.w clipread
        ;allocate amiga-side space
@@ -2276,12 +2415,60 @@ cliphook:
        moveq #0,d0
        rts
 
+consolehook:
+       move.l 4.w,a6
+       moveq #-1,d2
+       move.w #$FF38,d0
+       moveq #100,d1
+       bsr.w getrtbase
+       jsr (a0)
+       tst.l d0
+       beq.s .ch2
+       moveq #0,d2
+       jsr -$0084(a6) ;Forbid
+       lea 350(a6),a0 ;DeviceList
+       lea con_dev(pc),a1
+       jsr -$114(a6) ;FindName
+       tst.l d0
+       beq.s .ch1
+       move.l d0,a0
+       lea chook(pc),a1
+       move.l -$1e+2(a0),a2 ; BeginIO
+       move.l a1,-$1e+2(a0)
+       move.l a0,a1
+       move.w #$FF38,d0
+       moveq #101,d1
+       bsr.w getrtbase
+       jsr (a0)
+       moveq #1,d2
+.ch1
+       jsr -$008a(a6) ;Permit
+.ch2
+       move.l d2,d0
+       rts     
+       
+chook:
+       subq.l #4,sp ; native code fills with original return address
+       movem.l d0-d1/a0,-(sp)
+       move.w #$FF38,d0
+       moveq #102,d1
+       bsr.w getrtbase
+       jsr (a0)
+       movem.l (sp)+,d0-d1/a0
+       rts
+
+
 
 inp_dev: dc.b 'input.device',0
 tim_dev: dc.b 'timer.device',0
+con_dev: dc.b 'console.device',0
+devsn_name: dc.b 'DEVS',0
 devs_name: dc.b 'DEVS:',0
 clip_name: dc.b 'DEVS:clipboard.device',0
+ram_name: dc.b 'RAM:',0
 clip_dev: dc.b 'clipboard.device',0
+ ;argghh but StartNotify()ing non-existing ENV: causes "Insert disk ENV: in any drive" dialog..
+pointer_prefs: dc.b 'RAM:Env/Sys/Pointer.prefs',0
 clname: dc.b 'UAE clipboard sharing',0
 mhname: dc.b 'UAE mouse driver',0
 exter_name: dc.b 'UAE filesystem',0
@@ -2292,4 +2479,5 @@ intlibname: dc.b 'intuition.library',0
 gfxlibname: dc.b 'graphics.library',0
 explibname: dc.b 'expansion.library',0
 fsresname: dc.b 'FileSystem.resource',0
+fchipname: dc.b 'z3chip memory',0
        END
index 5c152060f2496b35524c249c0dc9d5920ed261f8..1154b55c0f77dfdc550ebf4247aeb2bd07c84bcb 100644 (file)
@@ -972,11 +972,19 @@ static struct fs_dirhandle *fs_opendir (Unit *u, const TCHAR *nname)
 {
        struct fs_dirhandle *fsd = xmalloc (struct fs_dirhandle, 1);
        fsd->isarch = !!(u->volflags & MYVOLUMEINFO_ARCHIVE);
-       if (fsd->isarch)
+       if (fsd->isarch) {
                fsd->zd = zfile_opendir_archive (nname);
-       else
+               if (!fsd->zd)
+                       goto end;
+       } else {
                fsd->od = my_opendir (nname);
+               if (!fsd->od)
+                       goto end;
+       }
        return fsd;
+end:
+       xfree (fsd);
+       return NULL;
 }
 static void fs_closedir (struct fs_dirhandle *fsd)
 {
@@ -992,11 +1000,19 @@ static struct fs_filehandle *fs_open (Unit *unit, const TCHAR *name, int flags)
 {
        struct fs_filehandle *fsf = xmalloc (struct fs_filehandle, 1);
        fsf->isarch = !!(unit->volflags & MYVOLUMEINFO_ARCHIVE);
-       if (fsf->isarch)
+       if (fsf->isarch) {
                fsf->zf = zfile_open_archive (name, flags);
-       else
+               if (!fsf->zf)
+                       goto end;
+       } else {
                fsf->of = my_open (name, flags);
+               if (!fsf->of)
+                       goto end;
+       }
        return fsf;
+end:
+       xfree (fsf);
+       return NULL;
 }
 static void fs_close (struct fs_filehandle *fd)
 {
index ce5c88eca0aecec45cc553d22f106ea0c4bdce2c..2cec82846a3bb11ef4674b40063cf5ba7d2bb8b1 100644 (file)
@@ -1,9 +1,9 @@
  db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x00); db(0x00); db(0x00); db(0x09); db(0x60); db(0x00); db(0x0a); db(0x22);
- db(0x00); db(0x00); db(0x08); db(0x04); db(0x00); db(0x00); db(0x00); db(0xd0);
- db(0x00); db(0x00); db(0x02); db(0x2c); db(0x00); db(0x00); db(0x00); db(0x24);
- db(0x00); db(0x00); db(0x02); db(0xe8); db(0x00); db(0x00); db(0x0d); db(0xf4);
- db(0x00); db(0x00); db(0x12); db(0x84); db(0x43); db(0xfa); db(0x17); db(0x5a);
+ db(0x00); db(0x00); db(0x00); db(0x09); db(0x60); db(0x00); db(0x0a); db(0x66);
+ db(0x00); db(0x00); db(0x08); db(0x48); db(0x00); db(0x00); db(0x00); db(0xd0);
+ db(0x00); db(0x00); db(0x02); db(0x70); db(0x00); db(0x00); db(0x00); db(0x24);
+ db(0x00); db(0x00); db(0x03); db(0x2c); db(0x00); db(0x00); db(0x0e); db(0x38);
+ db(0x00); db(0x00); db(0x12); db(0xc8); db(0x43); db(0xfa); db(0x17); db(0x9e);
  db(0x4e); db(0xae); db(0xff); db(0xa0); db(0x20); db(0x40); db(0x20); db(0x28);
  db(0x00); db(0x16); db(0x20); db(0x40); db(0x4e); db(0x90); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0xe0); db(0xe2); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x20); db(0x68); db(0x00); db(0x02); db(0x2f); db(0x08); db(0x4e); db(0x90);
  db(0x20); db(0x5f); db(0x58); db(0x8f); db(0x48); db(0xe7); db(0xff); db(0x7e);
  db(0x22); db(0x4e); db(0x20); db(0x08); db(0x30); db(0x7c); db(0xff); db(0xb8);
- db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x61); db(0x00); db(0x11); db(0xd6);
- db(0x61); db(0x00); db(0x15); db(0x88); db(0x4c); db(0xdf); db(0x7e); db(0xff);
+ db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x61); db(0x00); db(0x12); db(0x1a);
+ db(0x61); db(0x00); db(0x15); db(0xcc); db(0x4c); db(0xdf); db(0x7e); db(0xff);
  db(0x4e); db(0x75); db(0x00); db(0x00); db(0x08); db(0x00); db(0x00); db(0x02);
  db(0x67); db(0x06); db(0x4e); db(0xb9); db(0x00); db(0xf0); db(0x00); db(0x00);
  db(0x4e); db(0xf9); db(0x00); db(0xf0); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x48); db(0xe7); db(0xff); db(0xfe); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x30); db(0x3c); db(0xff); db(0xfc); db(0x61); db(0x00); db(0x0b); db(0x82);
- db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x16); db(0xcb); db(0x70); db(0x24);
+ db(0x30); db(0x3c); db(0xff); db(0xfc); db(0x61); db(0x00); db(0x0b); db(0xc6);
+ db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x17); db(0x0f); db(0x70); db(0x24);
  db(0x7a); db(0x01); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80);
- db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x16); db(0xbb); db(0x70); db(0x00);
+ db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x16); db(0xff); db(0x70); db(0x00);
  db(0x7a); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40);
  db(0x4a); db(0xad); db(0x01); db(0x0c); db(0x67); db(0x5a); db(0x20); db(0x3c);
  db(0x00); db(0x00); db(0x02); db(0x2c); db(0x22); db(0x3c); db(0x00); db(0x01);
@@ -37,7 +37,7 @@
  db(0x27); db(0x4c); db(0x01); db(0x9c); db(0x7c); db(0x00); db(0xbc); db(0xad);
  db(0x01); db(0x0c); db(0x64); db(0x2c); db(0x2f); db(0x06); db(0x7e); db(0x01);
  db(0x4a); db(0x45); db(0x67); db(0x04); db(0x08); db(0xc7); db(0x00); db(0x02);
- db(0x2f); db(0x0b); db(0x20); db(0x4b); db(0x61); db(0x00); db(0x06); db(0xce);
+ db(0x2f); db(0x0b); db(0x20); db(0x4b); db(0x61); db(0x00); db(0x07); db(0x12);
  db(0x26); db(0x5f); db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe);
  db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46);
  db(0x60); db(0xdc); db(0x2c); db(0x1f); db(0x52); db(0x46); db(0x60); db(0xce);
  db(0x00); db(0x00); db(0x02); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x2e);
  db(0x2c); db(0x78); db(0x00); db(0x04); db(0x22); db(0x4c); db(0x4e); db(0xae);
  db(0xfe); db(0x62); db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00);
- db(0x0a); db(0xf0); db(0x4e); db(0x90); db(0x72); db(0x03); db(0x74); db(0xf6);
+ db(0x0b); db(0x34); db(0x4e); db(0x90); db(0x72); db(0x03); db(0x74); db(0xf6);
  db(0x20); db(0x7c); db(0x00); db(0x20); db(0x00); db(0x00); db(0x90); db(0x88);
  db(0x65); db(0x0a); db(0x67); db(0x08); db(0x78); db(0x00); db(0x22); db(0x44);
- db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x15); db(0xc6);
- db(0x43); db(0xfa); db(0x00); db(0x54); db(0x70); db(0x0a); db(0x61); db(0x00);
- db(0x0b); db(0xa4); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c);
- db(0xff); db(0x48); db(0x61); db(0x00); db(0x0a); db(0xbc); db(0x4e); db(0x90);
- db(0x4c); db(0xdf); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x38); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x00);
- db(0x28); db(0x01); db(0x26); db(0x09); db(0x24); db(0x48); db(0x43); db(0xfa);
- db(0x15); db(0xc0); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x4a); db(0x80); db(0x67); db(0x14); db(0x2c); db(0x40); db(0x22); db(0x0a);
- db(0xe4); db(0x8b); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x22); db(0x4e);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62);
- db(0x4c); db(0xdf); db(0x44); db(0x1c); db(0x4e); db(0x75); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
- db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x15); db(0x71);
- db(0x43); db(0xfa); db(0x00); db(0x16); db(0x70); db(0x0f); db(0x22); db(0x3c);
- db(0x00); db(0x00); db(0x1f); db(0x40); db(0x61); db(0x00); db(0xff); db(0xa8);
- db(0x60); db(0xdc); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x72); db(0x02); db(0x30); db(0x3c);
- db(0xff); db(0x48); db(0x61); db(0x00); db(0x0a); db(0x44); db(0x4e); db(0x90);
- db(0x22); db(0x00); db(0x6b); db(0x04); db(0x61); db(0x00); db(0x07); db(0x8a);
- db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x20);
- db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x0a); db(0x2a);
- db(0x70); db(0x00); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0x00); db(0xa2); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c);
- db(0xff); db(0x50); db(0x61); db(0x00); db(0x0a); db(0x14); db(0x70); db(0x02);
- db(0x4e); db(0x90); db(0x0c); db(0x40); db(0x00); db(0x01); db(0x6d); db(0x00);
- db(0x00); db(0x7c); db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x92);
- db(0x60); db(0xe4); db(0x0c); db(0x40); db(0x00); db(0x02); db(0x6e); db(0x08);
- db(0x20); db(0x01); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x60); db(0xd6);
- db(0x0c); db(0x40); db(0x00); db(0x03); db(0x6e); db(0x06); db(0x4e); db(0xae);
- db(0xfe); db(0x86); db(0x60); db(0xca); db(0x0c); db(0x40); db(0x00); db(0x04);
- db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xff); db(0x4c); db(0x60); db(0xbe);
- db(0x0c); db(0x40); db(0x00); db(0x05); db(0x6e); db(0x46); db(0x48); db(0xe7);
- db(0x00); db(0xc0); db(0x70); db(0x26); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4c); db(0xdf);
- db(0x03); db(0x00); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08);
- db(0x00); db(0x08); db(0x25); db(0x48); db(0x00); db(0x0e); db(0x35); db(0x7c);
- db(0x00); db(0x26); db(0x00); db(0x12); db(0x25); db(0x7c); db(0x40); db(0x00);
- db(0x00); db(0x00); db(0x00); db(0x14); db(0x35); db(0x7c); db(0x12); db(0x34);
- db(0x00); db(0x18); db(0x25); db(0x49); db(0x00); db(0x1a); db(0x20); db(0x69);
- db(0x00); db(0x10); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0x92);
- db(0x60); db(0x00); db(0xff); db(0x74); db(0x30); db(0x3c); db(0xff); db(0x50);
- db(0x61); db(0x00); db(0x09); db(0x86); db(0x70); db(0x04); db(0x4e); db(0x90);
- db(0x70); db(0x01); db(0x4c); db(0xdf); db(0x04); db(0x00); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0xc0); db(0xc0); db(0x61); db(0x00); db(0xfd); db(0x4a);
- db(0x70); db(0x1a); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40); db(0x41); db(0xfa);
- db(0x14); db(0x45); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
- db(0xff); db(0x24); db(0x23); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xfa);
- db(0xff); db(0x1c); db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c);
- db(0x02); db(0x14); db(0x00); db(0x08); db(0x70); db(0x03); db(0x4e); db(0xae);
- db(0xff); db(0x58); db(0x30); db(0x3a); db(0x0a); db(0xd0); db(0x67); db(0x04);
- db(0x61); db(0x00); db(0x0a); db(0x6e); db(0x4c); db(0xdf); db(0x03); db(0x03);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xf2); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x24); db(0x48); db(0x26); db(0x49); db(0x20); db(0x3c);
- db(0x00); db(0x00); db(0x00); db(0xbe); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40);
- db(0x70); db(0x00); db(0x43); db(0xeb); db(0x01); db(0xa0); db(0x11); db(0xb1);
- db(0x00); db(0x00); db(0x00); db(0x0e); db(0x52); db(0x40); db(0x0c); db(0x40);
- db(0x00); db(0x8c); db(0x66); db(0xf2); db(0x20); db(0x0a); db(0xe4); db(0x88);
- db(0x21); db(0x40); db(0x00); db(0x36); db(0x22); db(0x48); db(0x41); db(0xfa);
- db(0x13); db(0xd5); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b);
- db(0x01); db(0x98); db(0x41); db(0xe8); db(0x00); db(0x12); db(0x4e); db(0xae);
- db(0xff); db(0x10); db(0x4c); db(0xdf); db(0x4f); db(0x03); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x7f); db(0x7e); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x24); db(0x48); db(0x0c); db(0x9a); db(0x00); db(0x00); db(0x03); db(0xf3);
- db(0x66); db(0x00); db(0x00); db(0xe4); db(0x50); db(0x8a); db(0x2e); db(0x2a);
- db(0x00); db(0x04); db(0x9e); db(0x92); db(0x50); db(0x8a); db(0x52); db(0x87);
- db(0x26); db(0x4a); db(0x20); db(0x07); db(0xd0); db(0x80); db(0xd0); db(0x80);
- db(0xd7); db(0xc0); db(0x28); db(0x4a); db(0x9b); db(0xcd); db(0x7c); db(0x00);
- db(0x24); db(0x12); db(0x72); db(0x01); db(0x08); db(0x02); db(0x00); db(0x1e);
- db(0x67); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x01); db(0x08); db(0xc1);
- db(0x00); db(0x10); db(0xe5); db(0x8a); db(0x20); db(0x02); db(0x66); db(0x04);
- db(0x42); db(0x9a); db(0x60); db(0x1e); db(0x50); db(0x80); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0xa0);
- db(0x20); db(0x40); db(0x20); db(0xc2); db(0x24); db(0xc8); db(0x22); db(0x0d);
- db(0x67); db(0x06); db(0x20); db(0x08); db(0xe4); db(0x88); db(0x2a); db(0x80);
- db(0x2a); db(0x48); db(0x52); db(0x86); db(0xbe); db(0x86); db(0x66); db(0xc0);
- db(0x7c); db(0x00); db(0x22); db(0x06); db(0xd2); db(0x81); db(0xd2); db(0x81);
- db(0x20); db(0x74); db(0x18); db(0x00); db(0x58); db(0x88); db(0x26); db(0x1b);
- db(0x28); db(0x1b); db(0xe5); db(0x8c); db(0x0c); db(0x83); db(0x00); db(0x00);
- db(0x03); db(0xe9); db(0x67); db(0x08); db(0x0c); db(0x83); db(0x00); db(0x00);
- db(0x03); db(0xea); db(0x66); db(0x0c); db(0x20); db(0x04); db(0x4a); db(0x80);
- db(0x67); db(0x0e); db(0x10); db(0xdb); db(0x53); db(0x80); db(0x60); db(0xf6);
- db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xeb); db(0x66); db(0x4e);
- db(0x26); db(0x1b); db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xec);
- db(0x66); db(0x28); db(0x22); db(0x06); db(0xd2); db(0x81); db(0xd2); db(0x81);
- db(0x20); db(0x74); db(0x18); db(0x00); db(0x58); db(0x88); db(0x20); db(0x1b);
- db(0x67); db(0xe6); db(0x22); db(0x1b); db(0xd2); db(0x81); db(0xd2); db(0x81);
- db(0x26); db(0x34); db(0x18); db(0x00); db(0x58); db(0x83); db(0x24); db(0x1b);
- db(0xd7); db(0xb0); db(0x28); db(0x00); db(0x53); db(0x80); db(0x66); db(0xf6);
- db(0x60); db(0xe4); db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xf2);
- db(0x66); db(0x14); db(0x52); db(0x86); db(0xbe); db(0x86); db(0x66); db(0x00);
- db(0xff); db(0x8a); db(0x7e); db(0x01); db(0x20); db(0x54); db(0x20); db(0x07);
- db(0x4c); db(0xdf); db(0x7e); db(0xfe); db(0x4e); db(0x75); db(0x7e); db(0x00);
- db(0x60); db(0xf4); db(0x48); db(0xe7); db(0x40); db(0xe2); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x41); db(0xee); db(0x01); db(0x50); db(0x20); db(0x50);
- db(0x4a); db(0x90); db(0x67); db(0x1a); db(0x22); db(0x68); db(0x00); db(0x0a);
- db(0x45); db(0xfa); db(0x13); db(0x27); db(0x10); db(0x19); db(0x12); db(0x1a);
- db(0xb0); db(0x01); db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x42);
- db(0x60); db(0xf2); db(0x20); db(0x50); db(0x60); db(0xe2); db(0x70); db(0x20);
- db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08);
- db(0x00); db(0x08); db(0x41); db(0xfa); db(0x12); db(0xfd); db(0x25); db(0x48);
- db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x12); db(0x79); db(0x25); db(0x48);
- db(0x00); db(0x0e); db(0x41); db(0xea); db(0x00); db(0x12); db(0x20); db(0x88);
- db(0x58); db(0x90); db(0x21); db(0x48); db(0x00); db(0x08); db(0x41); db(0xee);
- db(0x01); db(0x50); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x0a);
- db(0x20); db(0x4a); db(0x20); db(0x08); db(0x4c); db(0xdf); db(0x47); db(0x02);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x02); db(0x2e); db(0x00);
- db(0x4a); db(0x2b); db(0x00); db(0x4c); db(0x67); db(0x7c); db(0x2c); db(0x6b);
- db(0x00); db(0xa0); db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14);
- db(0x65); db(0x3e); db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x66);
- db(0x02); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x62);
- db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x0a); db(0x41); db(0xeb);
- db(0x00); db(0x20); db(0x22); db(0x08); db(0x4e); db(0xae); db(0xfd); db(0x5a);
- db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b);
- db(0x00); db(0x9e); db(0x66); db(0x0c); db(0x50); db(0xeb); db(0x00); db(0x9e);
- db(0x22); db(0x2b); db(0x00); db(0xb4); db(0x4e); db(0xae); db(0xfd); db(0x5a);
- db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x6c); db(0x60); db(0x32);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x7c);
- db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x08); db(0x41); db(0xeb);
- db(0x00); db(0x20); db(0x61); db(0x00); db(0x00); db(0xac); db(0x08); db(0x07);
- db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e);
- db(0x66); db(0x0c); db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x20); db(0x6b);
- db(0x00); db(0xb4); db(0x61); db(0x00); db(0x00); db(0x94); db(0x4e); db(0xae);
- db(0xff); db(0x76); db(0x4c); db(0xdf); db(0x40); db(0x80); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x01); db(0x22); db(0x2e); db(0x00); db(0x2c); db(0x6b);
- db(0x00); db(0xa0); db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14);
- db(0x65); db(0x3e); db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x66);
- db(0x02); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x62);
- db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x0a); db(0x41); db(0xeb);
- db(0x00); db(0x20); db(0x22); db(0x08); db(0x4e); db(0xae); db(0xfd); db(0x60);
- db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b);
- db(0x00); db(0x9e); db(0x67); db(0x0c); db(0x42); db(0x2b); db(0x00); db(0x9e);
- db(0x22); db(0x2b); db(0x00); db(0xb4); db(0x4e); db(0xae); db(0xfd); db(0x60);
- db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x6c); db(0x60); db(0x32);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x7c);
- db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x08); db(0x41); db(0xeb);
- db(0x00); db(0x20); db(0x61); db(0x00); db(0x00); db(0x44); db(0x08); db(0x07);
- db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e);
- db(0x67); db(0x0c); db(0x42); db(0x2b); db(0x00); db(0x9e); db(0x20); db(0x6b);
- db(0x00); db(0xb4); db(0x61); db(0x00); db(0x00); db(0x2c); db(0x4e); db(0xae);
- db(0xff); db(0x76); db(0x4c); db(0xdf); db(0x44); db(0x80); db(0x4e); db(0x75);
- db(0x22); db(0x48); db(0x20); db(0x6b); db(0x00); db(0xa0); db(0x20); db(0x68);
- db(0x00); db(0x22); db(0x20); db(0x68); db(0x00); db(0x18); db(0xd1); db(0xc8);
- db(0xd1); db(0xc8); db(0x22); db(0xa8); db(0x00); db(0x04); db(0x20); db(0x09);
- db(0xe4); db(0x88); db(0x21); db(0x40); db(0x00); db(0x04); db(0x4e); db(0x75);
- db(0x24); db(0x48); db(0x20); db(0x6b); db(0x00); db(0xa0); db(0x20); db(0x68);
- db(0x00); db(0x22); db(0x20); db(0x68); db(0x00); db(0x18); db(0xd1); db(0xc8);
- db(0xd1); db(0xc8); db(0x22); db(0x68); db(0x00); db(0x04); db(0xd3); db(0xc9);
- db(0xd3); db(0xc9); db(0xb3); db(0xca); db(0x66); db(0x06); db(0x21); db(0x52);
- db(0x00); db(0x04); db(0x60); db(0x18); db(0x20); db(0x09); db(0x67); db(0x0e);
- db(0x20); db(0x11); db(0xd0); db(0x80); db(0xd0); db(0x80); db(0xb5); db(0xc0);
- db(0x67); db(0x04); db(0x22); db(0x40); db(0x60); db(0xee); db(0x20); db(0x09);
- db(0x67); db(0x02); db(0x22); db(0x92); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x20); db(0x22); db(0x74); db(0x16); db(0x9f); db(0xc2); db(0x24); db(0x4f);
- db(0x32); db(0x02); db(0x42); db(0x32); db(0x10); db(0xff); db(0x53); db(0x41);
- db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x72); db(0x0f);
- db(0x4a); db(0x80); db(0x67); db(0x02); db(0x72); db(0x10); db(0x15); db(0x41);
- db(0x00); db(0x04); db(0x35); db(0x7c); db(0x08); db(0x00); db(0x00); db(0x08);
- db(0x22); db(0x6b); db(0x00); db(0xa4); db(0x33); db(0x7c); db(0x00); db(0x0b);
- db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16);
- db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28); db(0x13); db(0x7c);
- db(0x00); db(0x01); db(0x00); db(0x1e); db(0x22); db(0x6b); db(0x00); db(0xa8);
- db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c);
- db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x25); db(0x69); db(0x00); db(0x20);
- db(0x00); db(0x0e); db(0x25); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12);
- db(0x22); db(0x6b); db(0x00); db(0xa4); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0xdf); db(0xc2); db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75);
- db(0x4a); db(0x00); db(0x67); db(0x26); db(0x4a); db(0x2b); db(0x00); db(0x4c);
- db(0x66); db(0x36); db(0x70); db(0x00); db(0x4a); db(0x33); db(0x00); db(0x4d);
- db(0x67); db(0x04); db(0x52); db(0x00); db(0x60); db(0xf6); db(0x17); db(0x40);
- db(0x00); db(0x4c); db(0x67); db(0x24); db(0x20); db(0x01); db(0x61); db(0x00);
- db(0xfd); db(0xf2); db(0x70); db(0x01); db(0x61); db(0x00); db(0xff); db(0x60);
- db(0x60); db(0x16); db(0x4a); db(0x2b); db(0x00); db(0x4c); db(0x67); db(0x10);
- db(0x42); db(0x2b); db(0x00); db(0x4c); db(0x20); db(0x01); db(0x61); db(0x00);
- db(0xfe); db(0x68); db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0x48);
- db(0x4e); db(0x75); db(0x4a); db(0xac); db(0x00); db(0x14); db(0x67); db(0x0a);
- db(0x70); db(0x00); db(0x72); db(0x01); db(0x61); db(0x00); db(0xff); db(0xb2);
- db(0x4e); db(0x75); db(0x70); db(0x01); db(0x72); db(0x03); db(0x61); db(0x00);
- db(0xff); db(0xa8); db(0x4e); db(0x75); db(0x10); db(0x2b); db(0x00); db(0xac);
- db(0x6b); db(0x0a); db(0x70); db(0x01); db(0x72); db(0x03); db(0x61); db(0x00);
- db(0xff); db(0x98); db(0x4e); db(0x75); db(0x72); db(0x01); db(0x0c); db(0x00);
- db(0x00); db(0xfe); db(0x66); db(0x02); db(0x72); db(0x03); db(0x70); db(0x00);
- db(0x61); db(0x00); db(0xff); db(0x86); db(0x4e); db(0x75); db(0x20); db(0x6c);
- db(0x00); db(0x24); db(0x4a); db(0x90); db(0x67); db(0x0c); db(0x4a); db(0xa8);
- db(0x00); db(0x08); db(0x66); db(0x0a); db(0x4a); db(0xa8); db(0x00); db(0x0c);
- db(0x66); db(0x04); db(0x70); db(0x01); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x3f); db(0x3e); db(0x2a); db(0x48); db(0x24); db(0x6c); db(0x00); db(0x18);
- db(0x2e); db(0x15); db(0x7a); db(0x00); db(0x4a); db(0x87); db(0x67); db(0x70);
- db(0x20); db(0x0a); db(0x67); db(0x6c); db(0x7c); db(0x00); db(0x22); db(0x2d);
- db(0x00); db(0x08); db(0x67); db(0x12); db(0x24); db(0x2a); db(0x00); db(0x04);
- db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x4e); db(0xae); db(0xfc); db(0x34);
- db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6); db(0x22); db(0x2d);
- db(0x00); db(0x0c); db(0x67); db(0x1c); db(0x20); db(0x41); db(0x22); db(0x4a);
- db(0x2f); db(0x0a); db(0x45); db(0xec); db(0x00); db(0x20); db(0x48); db(0x7a);
- db(0x00); db(0x08); db(0x2f); db(0x28); db(0x00); db(0x08); db(0x4e); db(0x75);
- db(0x24); db(0x5f); db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6);
- db(0x4a); db(0x06); db(0x67); db(0x24); db(0x20); db(0x2a); db(0x00); db(0x04);
- db(0x90); db(0x8a); db(0x4a); db(0x92); db(0x66); db(0x0a); db(0x20); db(0x05);
- db(0x67); db(0x10); db(0x20); db(0x40); db(0x42); db(0x90); db(0x60); db(0x0a);
- db(0x20); db(0x52); db(0x22); db(0x4a); db(0x22); db(0xd8); db(0x59); db(0x80);
- db(0x6a); db(0xfa); db(0x53); db(0x95); db(0x53); db(0x87); db(0x60); db(0x94);
- db(0x2a); db(0x0a); db(0x24); db(0x52); db(0x53); db(0x87); db(0x60); db(0x8c);
- db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x20); db(0x6c); db(0x00); db(0x24);
- db(0x4a); db(0x90); db(0x4e); db(0x75); db(0x61); db(0x00); db(0xfc); db(0x7c);
- db(0x21); db(0x40); db(0x01); db(0x98); db(0x2f); db(0x08); db(0x30); db(0x3c);
- db(0xff); db(0xfc); db(0x61); db(0x00); db(0x04); db(0x4c); db(0x2a); db(0x50);
- db(0x30); db(0x3c); db(0xff); db(0x28); db(0x61); db(0x00); db(0x04); db(0x42);
- db(0x22); db(0x48); db(0x20); db(0x5f); db(0x42); db(0xa8); db(0x01); db(0x90);
- db(0x42); db(0xa8); db(0x01); db(0x94); db(0x4e); db(0x91); db(0x26); db(0x00);
- db(0x0c); db(0x43); db(0xff); db(0xfe); db(0x67); db(0x00); db(0xf9); db(0x76);
- db(0x20); db(0x28); db(0x01); db(0x90); db(0x67); db(0x14); db(0x6b); db(0x12);
- db(0x2f); db(0x08); db(0x72); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x5f); db(0x21); db(0x40);
- db(0x01); db(0x94); db(0x4a); db(0x83); db(0x6a); db(0x0e); db(0x22); db(0x48);
- db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00); db(0x04); db(0x02);
- db(0x4e); db(0x90); db(0x60); db(0x26); db(0x2c); db(0x4c); db(0x2f); db(0x08);
- db(0x4e); db(0xae); db(0xff); db(0x70); db(0x20); db(0x5f); db(0x22); db(0x48);
- db(0x26); db(0x40); db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00);
- db(0x03); db(0xe8); db(0x4e); db(0x90); db(0x70); db(0x00); db(0x27); db(0x40);
- db(0x00); db(0x08); db(0x27); db(0x40); db(0x00); db(0x10); db(0x27); db(0x40);
- db(0x00); db(0x20); db(0x4a); db(0xa9); db(0x01); db(0x94); db(0x67); db(0x28);
- db(0x20); db(0x69); db(0x01); db(0x94); db(0x61); db(0x00); db(0xfa); db(0xf2);
- db(0x48); db(0xe7); db(0x80); db(0xc0); db(0x20); db(0x29); db(0x01); db(0x90);
- db(0x22); db(0x69); db(0x01); db(0x94); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4c); db(0xdf); db(0x03); db(0x01);
- db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00); db(0xfa); db(0x7c);
- db(0x4a); db(0x83); db(0x6b); db(0x00); db(0xf8); db(0xf0); db(0x30); db(0x3c);
- db(0xff); db(0x18); db(0x61); db(0x00); db(0x03); db(0x9c); db(0x4e); db(0x90);
- db(0x20); db(0x03); db(0x16); db(0x29); db(0x00); db(0x4f); db(0x4a); db(0x80);
- db(0x66); db(0x1a); db(0x27); db(0x7c); db(0x00); db(0x00); db(0x17); db(0x70);
- db(0x00); db(0x14); db(0x41); db(0xfa); db(0xf7); db(0x20); db(0x20); db(0x08);
- db(0xe4); db(0x88); db(0x27); db(0x40); db(0x00); db(0x20); db(0x70); db(0xff);
- db(0x27); db(0x40); db(0x00); db(0x24); db(0x08); db(0x07); db(0x00); db(0x00);
- db(0x67); db(0x3a); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x14);
- db(0x72); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40);
- db(0x70); db(0x00); db(0x22); db(0x80); db(0x23); db(0x40); db(0x00); db(0x04);
- db(0x33); db(0x40); db(0x00); db(0x0e); db(0x30); db(0x3c); db(0x10); db(0x00);
- db(0x80); db(0x03); db(0x33); db(0x40); db(0x00); db(0x08); db(0x23); db(0x6d);
- db(0x01); db(0x04); db(0x00); db(0x0a); db(0x23); db(0x4b); db(0x00); db(0x10);
- db(0x41); db(0xec); db(0x00); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0xf2);
- db(0x70); db(0x00); db(0x4e); db(0x75); db(0x24); db(0x49); db(0x20); db(0x4b);
- db(0x72); db(0x00); db(0x22); db(0x41); db(0x08); db(0x07); db(0x00); db(0x01);
- db(0x67); db(0x08); db(0x08); db(0x07); db(0x00); db(0x02); db(0x67); db(0x02);
- db(0x72); db(0x01); db(0x70); db(0xec); db(0x2c); db(0x4c); db(0x4e); db(0xae);
- db(0xff); db(0x6a); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x5c);
- db(0x08); db(0x07); db(0x00); db(0x02); db(0x66); db(0x56); db(0x20); db(0x52);
- db(0x74); db(0x02); db(0x52); db(0x82); db(0x4a); db(0x30); db(0x28); db(0xfd);
- db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x02);
- db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
- db(0x67); db(0x3a); db(0x20); db(0x52); db(0x24); db(0x40); db(0x22); db(0x4a);
- db(0x12); db(0xd8); db(0x66); db(0xfc); db(0x13); db(0x7c); db(0x00); db(0x3a);
- db(0xff); db(0xff); db(0x42); db(0x11); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x43); db(0xfa); db(0x0d); db(0xf6); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x2c); db(0x40); db(0x22); db(0x0a); db(0x4e); db(0xae);
- db(0xff); db(0x52); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4a); db(0x20); db(0x02);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x01); db(0x7e); db(0x06);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0d); db(0xf1);
- db(0x70); db(0x24); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80);
- db(0x66); db(0x0e); db(0x08); db(0x87); db(0x00); db(0x02); db(0x43); db(0xfa);
- db(0x0d); db(0xdf); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x28); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c);
- db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x20); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x2c);
- db(0x21); db(0x4c); db(0x01); db(0x9c); db(0x48); db(0xe7); db(0x00); db(0x8a);
- db(0x61); db(0x00); db(0xfe); db(0x0a); db(0x4c); db(0xdf); db(0x51); db(0x00);
- db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08);
- db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xe4);
- db(0x22); db(0x48); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x22); db(0x4c); db(0x4e); db(0xae);
- db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9); db(0x4e); db(0xae);
- db(0xfe); db(0xda); db(0x20); db(0x40); db(0x4b); db(0xe8); db(0x00); db(0x5c);
- db(0x43); db(0xfa); db(0x0d); db(0x46); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x24); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x00); db(0xb9); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40); db(0x7c); db(0x00);
- db(0x26); db(0x86); db(0x27); db(0x46); db(0x00); db(0x04); db(0x27); db(0x46);
- db(0x00); db(0x08); db(0x27); db(0x4a); db(0x00); db(0xa0); db(0x50); db(0xeb);
- db(0x00); db(0x9e); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
- db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa); db(0x0c); db(0x2e);
- db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0x84);
- db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x0c); db(0x2b);
- db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0x74);
- db(0x27); db(0x40); db(0x00); db(0xa8); db(0x7a); db(0x00); db(0x20); db(0x4d);
- db(0x4e); db(0xae); db(0xfe); db(0x80); db(0x20); db(0x4d); db(0x4e); db(0xae);
- db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x26); db(0x2c); db(0x00); db(0x0a);
- db(0x30); db(0x3c); db(0xff); db(0x40); db(0x61); db(0x00); db(0x01); db(0xb2);
- db(0x70); db(0x00); db(0x4e); db(0x90); db(0x24); db(0x00); db(0x70); db(0x01);
- db(0x61); db(0x00); db(0xfa); db(0x38); db(0x08); db(0x02); db(0x00); db(0x01);
- db(0x67); db(0x06); db(0x70); db(0x01); db(0x61); db(0x00); db(0xfb); db(0xa0);
- db(0x60); db(0x00); db(0x00); db(0xf8); db(0x20); db(0x4d); db(0x4e); db(0xae);
- db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x4a); db(0x80); db(0x66); db(0x10);
- db(0x70); db(0x00); db(0x12); db(0x2d); db(0x00); db(0x0f); db(0x03); db(0xc0);
+ db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x30); db(0x3c); db(0xff); db(0x80);
+ db(0x61); db(0x00); db(0x0b); db(0x12); db(0x4e); db(0x90); db(0x4a); db(0x81);
+ db(0x67); db(0x36); db(0x24); db(0x49); db(0x4e); db(0xae); db(0xff); db(0x88);
+ db(0x41); db(0xee); db(0x01); db(0x42); db(0x20); db(0x50); db(0x4a); db(0x90);
+ db(0x67); db(0x26); db(0x20); db(0x28); db(0x00); db(0x14); db(0x42); db(0x40);
+ db(0xb5); db(0xc0); db(0x66); db(0xf0); db(0x30); db(0x28); db(0x00); db(0x0e);
+ db(0x02); db(0x40); db(0xff); db(0xfb); db(0x00); db(0x40); db(0x01); db(0x03);
+ db(0x31); db(0x40); db(0x00); db(0x0e); db(0x43); db(0xfa); db(0x16); db(0x53);
+ db(0x21); db(0x49); db(0x00); db(0x0a); db(0x4e); db(0xae); db(0xff); db(0x82);
+ db(0x41); db(0xfa); db(0x15); db(0xc6); db(0x43); db(0xfa); db(0x00); db(0x54);
+ db(0x70); db(0x0a); db(0x61); db(0x00); db(0x0b); db(0xa4); db(0x22); db(0x40);
+ db(0x72); db(0x01); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00);
+ db(0x0a); db(0xbc); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0xff);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x22); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x24); db(0x00); db(0x28); db(0x01); db(0x26); db(0x09);
+ db(0x24); db(0x48); db(0x43); db(0xfa); db(0x15); db(0xc0); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x67); db(0x14);
+ db(0x2c); db(0x40); db(0x22); db(0x0a); db(0xe4); db(0x8b); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x44); db(0x1c);
+ db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x00);
  db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2);
- db(0x4a); db(0x2b); db(0x00); db(0xac); db(0x67); db(0x08); db(0x61); db(0x00);
- db(0xfc); db(0x4c); db(0x42); db(0x2b); db(0x00); db(0xac); db(0x20); db(0x0c);
- db(0x67); db(0xd2); db(0x0c); db(0x6c); db(0x00); db(0x26); db(0x00); db(0x12);
- db(0x66); db(0x4c); db(0x0c); db(0xac); db(0x40); db(0x00); db(0x00); db(0x00);
- db(0x00); db(0x14); db(0x66); db(0x42); db(0x0c); db(0x6c); db(0x12); db(0x34);
- db(0x00); db(0x18); db(0x66); db(0x3a); db(0x20); db(0x6c); db(0x00); db(0x1a);
- db(0x20); db(0x28); db(0x00); db(0x0c); db(0x02); db(0x80); db(0x80); db(0x00);
- db(0x00); db(0x08); db(0x0c); db(0x80); db(0x80); db(0x00); db(0x00); db(0x08);
- db(0x66); db(0x18); db(0x02); db(0xa8); db(0x7f); db(0xff); db(0xff); db(0xff);
- db(0x00); db(0x0c); db(0x20); db(0x68); db(0x00); db(0x10); db(0x22); db(0x4c);
- db(0x12); db(0xbc); db(0x00); db(0x08); db(0x4e); db(0xae); db(0xfe); db(0x92);
- db(0x60); db(0x8a); db(0x22); db(0x4c); db(0x70); db(0x26); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x80); db(0x26); db(0x2c);
- db(0x00); db(0x0a); db(0x66); db(0x3e); db(0x30); db(0x3c); db(0xff); db(0x50);
- db(0x61); db(0x00); db(0x01); db(0x06); db(0x70); db(0x01); db(0x4e); db(0x90);
- db(0x45); db(0xeb); db(0x00); db(0x04); db(0x20); db(0x52); db(0x20); db(0x08);
- db(0x67); db(0x00); db(0xff); db(0x62); db(0x22); db(0x50); db(0x20); db(0x40);
- db(0x20); db(0x28); db(0x00); db(0x04); db(0x6a); db(0x16); db(0x48); db(0xe7);
- db(0x00); db(0xc0); db(0x28); db(0x68); db(0x00); db(0x0a); db(0x61); db(0x4a);
- db(0x53); db(0x85); db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x89);
- db(0x20); db(0x49); db(0x60); db(0xda); db(0x24); db(0x48); db(0x20); db(0x49);
- db(0x60); db(0xd4); db(0x0c); db(0x85); db(0x00); db(0x00); db(0x00); db(0x14);
- db(0x65); db(0x00); db(0x00); db(0x0a); db(0x70); db(0x01); db(0x29); db(0x40);
- db(0x00); db(0x04); db(0x60); db(0x12); db(0x61); db(0x5c); db(0x30); db(0x3c);
- db(0xff); db(0x30); db(0x61); db(0x00); db(0x00); db(0xb4); db(0x4e); db(0x90);
- db(0x4a); db(0x80); db(0x67); db(0x0e); db(0x52); db(0x85); db(0x28); db(0xab);
- db(0x00); db(0x04); db(0x27); db(0x4c); db(0x00); db(0x04); db(0x60); db(0x00);
- db(0xff); db(0x0c); db(0x28); db(0x43); db(0x61); db(0x04); db(0x60); db(0x00);
- db(0xff); db(0x04); db(0x0c); db(0xac); db(0x00); db(0x00); db(0x00); db(0x1f);
- db(0x00); db(0x08); db(0x66); db(0x04); db(0x61); db(0x00); db(0xfb); db(0x4c);
- db(0x0c); db(0xac); db(0x00); db(0x00); db(0x04); db(0x09); db(0x00); db(0x08);
- db(0x66); db(0x12); db(0x61); db(0x00); db(0xfb); db(0x7a); db(0x66); db(0x0c);
- db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00); db(0x00); db(0x72);
- db(0x4e); db(0x90); db(0x60); db(0xee); db(0x22); db(0x54); db(0x20); db(0x6c);
- db(0x00); db(0x04); db(0x29); db(0x4d); db(0x00); db(0x04); db(0x4e); db(0xee);
- db(0xfe); db(0x92); db(0x2f); db(0x05); db(0x7a); db(0xfc); db(0x24); db(0x53);
- db(0x2e); db(0x0a); db(0x22); db(0x0a); db(0x67); db(0x00); db(0x00); db(0x0c);
- db(0x52); db(0x85); db(0x67); db(0x1e); db(0x22); db(0x4a); db(0x24); db(0x52);
- db(0x60); db(0xf0); db(0x52); db(0x85); db(0x67); db(0x3c); db(0x24); db(0x47);
- db(0x70); db(0x18); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x52); db(0x46); db(0x24); db(0x40); db(0x24); db(0x87); db(0x2e); db(0x0a);
- db(0x60); db(0xe8); db(0x20); db(0x12); db(0x67); db(0x24); db(0x20); db(0x40);
- db(0x20); db(0x10); db(0x67); db(0x1e); db(0x20); db(0x40); db(0x20); db(0x10);
- db(0x67); db(0x18); db(0x70); db(0x00); db(0x22); db(0x80); db(0x22); db(0x4a);
- db(0x24); db(0x51); db(0x70); db(0x18); db(0x4e); db(0xae); db(0xff); db(0x2e);
- db(0x06); db(0x86); db(0x00); db(0x01); db(0x00); db(0x00); db(0x20); db(0x0a);
- db(0x66); db(0xec); db(0x26); db(0x87); db(0x2a); db(0x1f); db(0x4e); db(0x75);
- db(0x41); db(0xfa); db(0xf3); db(0x92); db(0x02); db(0x80); db(0x00); db(0x00);
- db(0xff); db(0xff); db(0xd1); db(0xc0); db(0x4e); db(0x75); db(0x20); db(0x88);
- db(0x58); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04); db(0x21); db(0x48);
- db(0x00); db(0x08); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0xff); db(0x4e); db(0xae);
- db(0xfe); db(0xb6); db(0x91); db(0xc8); db(0x24); db(0x00); db(0x6b); db(0x32);
- db(0x70); db(0x22); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x91); db(0xc8); db(0x24); db(0x40);
- db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x15); db(0x7c); db(0x00); db(0x04);
- db(0x00); db(0x08); db(0x15); db(0x42); db(0x00); db(0x0f); db(0x93); db(0xc9);
- db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x25); db(0x40); db(0x00); db(0x10);
- db(0x41); db(0xea); db(0x00); db(0x14); db(0x61); db(0x00); db(0xff); db(0xb0);
- db(0x20); db(0x4a); db(0x20); db(0x08); db(0x4c); db(0xdf); db(0x44); db(0x04);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x24); db(0x24); db(0x40);
- db(0x24); db(0x01); db(0x66); db(0x02); db(0x74); db(0x30); db(0x20); db(0x02);
+ db(0x41); db(0xfa); db(0x15); db(0x71); db(0x43); db(0xfa); db(0x00); db(0x16);
+ db(0x70); db(0x0f); db(0x22); db(0x3c); db(0x00); db(0x00); db(0x1f); db(0x40);
+ db(0x61); db(0x00); db(0xff); db(0xa8); db(0x60); db(0xdc); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x72); db(0x02); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00);
+ db(0x0a); db(0x44); db(0x4e); db(0x90); db(0x22); db(0x00); db(0x6b); db(0x04);
+ db(0x61); db(0x00); db(0x07); db(0x8a); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x00); db(0x20); db(0x30); db(0x3c); db(0xff); db(0x50);
+ db(0x61); db(0x00); db(0x0a); db(0x2a); db(0x70); db(0x00); db(0x4e); db(0x90);
+ db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0xa2); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00);
+ db(0x0a); db(0x14); db(0x70); db(0x02); db(0x4e); db(0x90); db(0x0c); db(0x40);
+ db(0x00); db(0x01); db(0x6d); db(0x00); db(0x00); db(0x7c); db(0x6e); db(0x06);
+ db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0xe4); db(0x0c); db(0x40);
+ db(0x00); db(0x02); db(0x6e); db(0x08); db(0x20); db(0x01); db(0x4e); db(0xae);
+ db(0xfe); db(0xbc); db(0x60); db(0xd6); db(0x0c); db(0x40); db(0x00); db(0x03);
+ db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x86); db(0x60); db(0xca);
+ db(0x0c); db(0x40); db(0x00); db(0x04); db(0x6e); db(0x06); db(0x4e); db(0xae);
+ db(0xff); db(0x4c); db(0x60); db(0xbe); db(0x0c); db(0x40); db(0x00); db(0x05);
+ db(0x6e); db(0x46); db(0x48); db(0xe7); db(0x00); db(0xc0); db(0x70); db(0x26);
  db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x20); db(0x40); db(0x11); db(0x7c); db(0x00); db(0x0a);
- db(0x00); db(0x08); db(0x31); db(0x42); db(0x00); db(0x12); db(0x21); db(0x4a);
- db(0x00); db(0x0e); db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x04);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x30); db(0x22); db(0x24); db(0x48);
- db(0x24); db(0x00); db(0x26); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x61); db(0x00); db(0xff); db(0x6a); db(0x22); db(0x03); db(0x61); db(0x00);
- db(0xff); db(0xb2); db(0x67); db(0x18); db(0x20); db(0x4a); db(0x22); db(0x40);
- db(0x24); db(0x40); db(0x20); db(0x02); db(0x72); db(0x00); db(0x4e); db(0xae);
- db(0xfe); db(0x44); db(0x22); db(0x00); db(0x70); db(0x00); db(0x4a); db(0x81);
- db(0x66); db(0x02); db(0x20); db(0x0a); db(0x4a); db(0x80); db(0x4c); db(0xdf);
- db(0x44); db(0x0c); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x32);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x28); db(0x00); db(0x24); db(0x08);
- db(0x26); db(0x09); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x08); db(0x5c);
+ db(0xff); db(0x3a); db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x40);
+ db(0x15); db(0x7c); db(0x00); db(0x08); db(0x00); db(0x08); db(0x25); db(0x48);
+ db(0x00); db(0x0e); db(0x35); db(0x7c); db(0x00); db(0x26); db(0x00); db(0x12);
+ db(0x25); db(0x7c); db(0x40); db(0x00); db(0x00); db(0x00); db(0x00); db(0x14);
+ db(0x35); db(0x7c); db(0x12); db(0x34); db(0x00); db(0x18); db(0x25); db(0x49);
+ db(0x00); db(0x1a); db(0x20); db(0x69); db(0x00); db(0x10); db(0x22); db(0x4a);
+ db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x74);
+ db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x09); db(0x86);
+ db(0x70); db(0x04); db(0x4e); db(0x90); db(0x70); db(0x01); db(0x4c); db(0xdf);
+ db(0x04); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xc0);
+ db(0x61); db(0x00); db(0xfd); db(0x06); db(0x70); db(0x1a); db(0x22); db(0x3c);
+ db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x22); db(0x40); db(0x41); db(0xfa); db(0x14); db(0x45); db(0x23); db(0x48);
+ db(0x00); db(0x0a); db(0x41); db(0xfa); db(0xff); db(0x24); db(0x23); db(0x48);
+ db(0x00); db(0x0e); db(0x41); db(0xfa); db(0xff); db(0x1c); db(0x23); db(0x48);
+ db(0x00); db(0x12); db(0x33); db(0x7c); db(0x02); db(0x14); db(0x00); db(0x08);
+ db(0x70); db(0x03); db(0x4e); db(0xae); db(0xff); db(0x58); db(0x30); db(0x3a);
+ db(0x0a); db(0xd0); db(0x67); db(0x04); db(0x61); db(0x00); db(0x0a); db(0x6e);
+ db(0x4c); db(0xdf); db(0x03); db(0x03); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0xc0); db(0xf2); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x48);
+ db(0x26); db(0x49); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xbe);
  db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x34);
- db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x08);
- db(0x15); db(0x44); db(0x00); db(0x09); db(0x25); db(0x42); db(0x00); db(0x0a);
- db(0x47); db(0xea); db(0x00); db(0x5c); db(0x25); db(0x4b); db(0x00); db(0x3a);
- db(0x47); db(0xeb); db(0x08); db(0x00); db(0x25); db(0x4b); db(0x00); db(0x3e);
- db(0x25); db(0x4b); db(0x00); db(0x36); db(0x22); db(0x4a); db(0x24); db(0x43);
- db(0x97); db(0xcb); db(0x24); db(0x09); db(0x4e); db(0xae); db(0xfe); db(0xe6);
- db(0x20); db(0x02); db(0x4c); db(0xdf); db(0x4c); db(0x1c); db(0x4e); db(0x75);
- db(0x41); db(0xfa); db(0x09); db(0x9a); db(0x43); db(0xfa); db(0x01); db(0x5c);
- db(0x70); db(0x13); db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75);
- db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x33); db(0x7c); db(0x00); db(0x0a);
+ db(0xff); db(0x3a); db(0x20); db(0x40); db(0x70); db(0x00); db(0x43); db(0xeb);
+ db(0x01); db(0xa0); db(0x11); db(0xb1); db(0x00); db(0x00); db(0x00); db(0x0e);
+ db(0x52); db(0x40); db(0x0c); db(0x40); db(0x00); db(0x8c); db(0x66); db(0xf2);
+ db(0x20); db(0x0a); db(0xe4); db(0x88); db(0x21); db(0x40); db(0x00); db(0x36);
+ db(0x22); db(0x48); db(0x41); db(0xfa); db(0x13); db(0xd5); db(0x23); db(0x48);
+ db(0x00); db(0x0a); db(0x20); db(0x6b); db(0x01); db(0x98); db(0x41); db(0xe8);
+ db(0x00); db(0x12); db(0x4e); db(0xae); db(0xff); db(0x10); db(0x4c); db(0xdf);
+ db(0x4f); db(0x03); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x7f); db(0x7e);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x48); db(0x0c); db(0x9a);
+ db(0x00); db(0x00); db(0x03); db(0xf3); db(0x66); db(0x00); db(0x00); db(0xe4);
+ db(0x50); db(0x8a); db(0x2e); db(0x2a); db(0x00); db(0x04); db(0x9e); db(0x92);
+ db(0x50); db(0x8a); db(0x52); db(0x87); db(0x26); db(0x4a); db(0x20); db(0x07);
+ db(0xd0); db(0x80); db(0xd0); db(0x80); db(0xd7); db(0xc0); db(0x28); db(0x4a);
+ db(0x9b); db(0xcd); db(0x7c); db(0x00); db(0x24); db(0x12); db(0x72); db(0x01);
+ db(0x08); db(0x02); db(0x00); db(0x1e); db(0x67); db(0x04); db(0x08); db(0xc1);
+ db(0x00); db(0x01); db(0x08); db(0xc1); db(0x00); db(0x10); db(0xe5); db(0x8a);
+ db(0x20); db(0x02); db(0x66); db(0x04); db(0x42); db(0x9a); db(0x60); db(0x1e);
+ db(0x50); db(0x80); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
+ db(0x67); db(0x00); db(0x00); db(0xa0); db(0x20); db(0x40); db(0x20); db(0xc2);
+ db(0x24); db(0xc8); db(0x22); db(0x0d); db(0x67); db(0x06); db(0x20); db(0x08);
+ db(0xe4); db(0x88); db(0x2a); db(0x80); db(0x2a); db(0x48); db(0x52); db(0x86);
+ db(0xbe); db(0x86); db(0x66); db(0xc0); db(0x7c); db(0x00); db(0x22); db(0x06);
+ db(0xd2); db(0x81); db(0xd2); db(0x81); db(0x20); db(0x74); db(0x18); db(0x00);
+ db(0x58); db(0x88); db(0x26); db(0x1b); db(0x28); db(0x1b); db(0xe5); db(0x8c);
+ db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xe9); db(0x67); db(0x08);
+ db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xea); db(0x66); db(0x0c);
+ db(0x20); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x0e); db(0x10); db(0xdb);
+ db(0x53); db(0x80); db(0x60); db(0xf6); db(0x0c); db(0x83); db(0x00); db(0x00);
+ db(0x03); db(0xeb); db(0x66); db(0x4e); db(0x26); db(0x1b); db(0x0c); db(0x83);
+ db(0x00); db(0x00); db(0x03); db(0xec); db(0x66); db(0x28); db(0x22); db(0x06);
+ db(0xd2); db(0x81); db(0xd2); db(0x81); db(0x20); db(0x74); db(0x18); db(0x00);
+ db(0x58); db(0x88); db(0x20); db(0x1b); db(0x67); db(0xe6); db(0x22); db(0x1b);
+ db(0xd2); db(0x81); db(0xd2); db(0x81); db(0x26); db(0x34); db(0x18); db(0x00);
+ db(0x58); db(0x83); db(0x24); db(0x1b); db(0xd7); db(0xb0); db(0x28); db(0x00);
+ db(0x53); db(0x80); db(0x66); db(0xf6); db(0x60); db(0xe4); db(0x0c); db(0x83);
+ db(0x00); db(0x00); db(0x03); db(0xf2); db(0x66); db(0x14); db(0x52); db(0x86);
+ db(0xbe); db(0x86); db(0x66); db(0x00); db(0xff); db(0x8a); db(0x7e); db(0x01);
+ db(0x20); db(0x54); db(0x20); db(0x07); db(0x4c); db(0xdf); db(0x7e); db(0xfe);
+ db(0x4e); db(0x75); db(0x7e); db(0x00); db(0x60); db(0xf4); db(0x48); db(0xe7);
+ db(0x40); db(0xe2); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x41); db(0xee);
+ db(0x01); db(0x50); db(0x20); db(0x50); db(0x4a); db(0x90); db(0x67); db(0x1a);
+ db(0x22); db(0x68); db(0x00); db(0x0a); db(0x45); db(0xfa); db(0x13); db(0x27);
+ db(0x10); db(0x19); db(0x12); db(0x1a); db(0xb0); db(0x01); db(0x66); db(0x06);
+ db(0x4a); db(0x00); db(0x67); db(0x42); db(0x60); db(0xf2); db(0x20); db(0x50);
+ db(0x60); db(0xe2); db(0x70); db(0x20); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x24); db(0x40);
+ db(0x15); db(0x7c); db(0x00); db(0x08); db(0x00); db(0x08); db(0x41); db(0xfa);
+ db(0x12); db(0xfd); db(0x25); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
+ db(0x12); db(0x79); db(0x25); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xea);
+ db(0x00); db(0x12); db(0x20); db(0x88); db(0x58); db(0x90); db(0x21); db(0x48);
+ db(0x00); db(0x08); db(0x41); db(0xee); db(0x01); db(0x50); db(0x22); db(0x4a);
+ db(0x4e); db(0xae); db(0xff); db(0x0a); db(0x20); db(0x4a); db(0x20); db(0x08);
+ db(0x4c); db(0xdf); db(0x47); db(0x02); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x01); db(0x02); db(0x2e); db(0x00); db(0x4a); db(0x2b); db(0x00); db(0x4c);
+ db(0x67); db(0x7c); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e);
+ db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e);
+ db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff);
+ db(0xff); db(0xfe); db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08);
+ db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x66); db(0x0c);
+ db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4);
+ db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x72); db(0x0e); db(0x4e); db(0xae);
+ db(0xfd); db(0x6c); db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x08); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00);
+ db(0x00); db(0xac); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12);
+ db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x66); db(0x0c); db(0x50); db(0xeb);
+ db(0x00); db(0x9e); db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00);
+ db(0x00); db(0x94); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf);
+ db(0x40); db(0x80); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x22);
+ db(0x2e); db(0x00); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e);
+ db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e);
+ db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff);
+ db(0xff); db(0xfe); db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08);
+ db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x67); db(0x0c);
+ db(0x42); db(0x2b); db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4);
+ db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x72); db(0x0e); db(0x4e); db(0xae);
+ db(0xfd); db(0x6c); db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x08); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00);
+ db(0x00); db(0x44); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12);
+ db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x67); db(0x0c); db(0x42); db(0x2b);
+ db(0x00); db(0x9e); db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00);
+ db(0x00); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf);
+ db(0x44); db(0x80); db(0x4e); db(0x75); db(0x22); db(0x48); db(0x20); db(0x6b);
+ db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68);
+ db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0xa8);
+ db(0x00); db(0x04); db(0x20); db(0x09); db(0xe4); db(0x88); db(0x21); db(0x40);
+ db(0x00); db(0x04); db(0x4e); db(0x75); db(0x24); db(0x48); db(0x20); db(0x6b);
+ db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68);
+ db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0x68);
+ db(0x00); db(0x04); db(0xd3); db(0xc9); db(0xd3); db(0xc9); db(0xb3); db(0xca);
+ db(0x66); db(0x06); db(0x21); db(0x52); db(0x00); db(0x04); db(0x60); db(0x18);
+ db(0x20); db(0x09); db(0x67); db(0x0e); db(0x20); db(0x11); db(0xd0); db(0x80);
+ db(0xd0); db(0x80); db(0xb5); db(0xc0); db(0x67); db(0x04); db(0x22); db(0x40);
+ db(0x60); db(0xee); db(0x20); db(0x09); db(0x67); db(0x02); db(0x22); db(0x92);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); db(0x74); db(0x16);
+ db(0x9f); db(0xc2); db(0x24); db(0x4f); db(0x32); db(0x02); db(0x42); db(0x32);
+ db(0x10); db(0xff); db(0x53); db(0x41); db(0x66); db(0xf8); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x72); db(0x0f); db(0x4a); db(0x80); db(0x67); db(0x02);
+ db(0x72); db(0x10); db(0x15); db(0x41); db(0x00); db(0x04); db(0x35); db(0x7c);
+ db(0x08); db(0x00); db(0x00); db(0x08); db(0x22); db(0x6b); db(0x00); db(0xa4);
+ db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c);
+ db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a);
+ db(0x00); db(0x28); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
+ db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x33); db(0x7c); db(0x00); db(0x0a);
  db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6d); db(0x02); db(0x0c);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6b); db(0x00); db(0xa8);
  db(0x25); db(0x69); db(0x00); db(0x20); db(0x00); db(0x0e); db(0x25); db(0x69);
- db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6d); db(0x02); db(0x08);
- db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae);
- db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x42); db(0xaa); db(0x00); db(0x0e);
- db(0x42); db(0xaa); db(0x00); db(0x12); db(0x22); db(0x6d); db(0x02); db(0x08);
- db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae);
- db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x00); db(0x00); db(0xff); db(0xff);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6b); db(0x00); db(0xa4);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0xdf); db(0xc2); db(0x4c); db(0xdf);
+ db(0x44); db(0x04); db(0x4e); db(0x75); db(0x4a); db(0x00); db(0x67); db(0x26);
+ db(0x4a); db(0x2b); db(0x00); db(0x4c); db(0x66); db(0x36); db(0x70); db(0x00);
+ db(0x4a); db(0x33); db(0x00); db(0x4d); db(0x67); db(0x04); db(0x52); db(0x00);
+ db(0x60); db(0xf6); db(0x17); db(0x40); db(0x00); db(0x4c); db(0x67); db(0x24);
+ db(0x20); db(0x01); db(0x61); db(0x00); db(0xfd); db(0xf2); db(0x70); db(0x01);
+ db(0x61); db(0x00); db(0xff); db(0x60); db(0x60); db(0x16); db(0x4a); db(0x2b);
+ db(0x00); db(0x4c); db(0x67); db(0x10); db(0x42); db(0x2b); db(0x00); db(0x4c);
+ db(0x20); db(0x01); db(0x61); db(0x00); db(0xfe); db(0x68); db(0x70); db(0x00);
+ db(0x61); db(0x00); db(0xff); db(0x48); db(0x4e); db(0x75); db(0x4a); db(0xac);
+ db(0x00); db(0x14); db(0x67); db(0x0a); db(0x70); db(0x00); db(0x72); db(0x01);
+ db(0x61); db(0x00); db(0xff); db(0xb2); db(0x4e); db(0x75); db(0x70); db(0x01);
+ db(0x72); db(0x03); db(0x61); db(0x00); db(0xff); db(0xa8); db(0x4e); db(0x75);
+ db(0x10); db(0x2b); db(0x00); db(0xac); db(0x6b); db(0x0a); db(0x70); db(0x01);
+ db(0x72); db(0x03); db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75);
+ db(0x72); db(0x01); db(0x0c); db(0x00); db(0x00); db(0xfe); db(0x66); db(0x02);
+ db(0x72); db(0x03); db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0x86);
+ db(0x4e); db(0x75); db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90);
+ db(0x67); db(0x0c); db(0x4a); db(0xa8); db(0x00); db(0x08); db(0x66); db(0x0a);
+ db(0x4a); db(0xa8); db(0x00); db(0x0c); db(0x66); db(0x04); db(0x70); db(0x01);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2a); db(0x48);
+ db(0x24); db(0x6c); db(0x00); db(0x18); db(0x2e); db(0x15); db(0x7a); db(0x00);
+ db(0x4a); db(0x87); db(0x67); db(0x70); db(0x20); db(0x0a); db(0x67); db(0x6c);
+ db(0x7c); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x08); db(0x67); db(0x12);
+ db(0x24); db(0x2a); db(0x00); db(0x04); db(0x2c); db(0x6b); db(0x00); db(0xa0);
+ db(0x4e); db(0xae); db(0xfc); db(0x34); db(0x4a); db(0x80); db(0x66); db(0x02);
+ db(0x50); db(0xc6); db(0x22); db(0x2d); db(0x00); db(0x0c); db(0x67); db(0x1c);
+ db(0x20); db(0x41); db(0x22); db(0x4a); db(0x2f); db(0x0a); db(0x45); db(0xec);
+ db(0x00); db(0x20); db(0x48); db(0x7a); db(0x00); db(0x08); db(0x2f); db(0x28);
+ db(0x00); db(0x08); db(0x4e); db(0x75); db(0x24); db(0x5f); db(0x4a); db(0x80);
+ db(0x66); db(0x02); db(0x50); db(0xc6); db(0x4a); db(0x06); db(0x67); db(0x24);
+ db(0x20); db(0x2a); db(0x00); db(0x04); db(0x90); db(0x8a); db(0x4a); db(0x92);
+ db(0x66); db(0x0a); db(0x20); db(0x05); db(0x67); db(0x10); db(0x20); db(0x40);
+ db(0x42); db(0x90); db(0x60); db(0x0a); db(0x20); db(0x52); db(0x22); db(0x4a);
+ db(0x22); db(0xd8); db(0x59); db(0x80); db(0x6a); db(0xfa); db(0x53); db(0x95);
+ db(0x53); db(0x87); db(0x60); db(0x94); db(0x2a); db(0x0a); db(0x24); db(0x52);
+ db(0x53); db(0x87); db(0x60); db(0x8c); db(0x4c); db(0xdf); db(0x7c); db(0xfc);
+ db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90); db(0x4e); db(0x75);
+ db(0x61); db(0x00); db(0xfc); db(0x7c); db(0x21); db(0x40); db(0x01); db(0x98);
+ db(0x2f); db(0x08); db(0x30); db(0x3c); db(0xff); db(0xfc); db(0x61); db(0x00);
+ db(0x04); db(0x4c); db(0x2a); db(0x50); db(0x30); db(0x3c); db(0xff); db(0x28);
+ db(0x61); db(0x00); db(0x04); db(0x42); db(0x22); db(0x48); db(0x20); db(0x5f);
+ db(0x42); db(0xa8); db(0x01); db(0x90); db(0x42); db(0xa8); db(0x01); db(0x94);
+ db(0x4e); db(0x91); db(0x26); db(0x00); db(0x0c); db(0x43); db(0xff); db(0xfe);
+ db(0x67); db(0x00); db(0xf9); db(0x76); db(0x20); db(0x28); db(0x01); db(0x90);
+ db(0x67); db(0x14); db(0x6b); db(0x12); db(0x2f); db(0x08); db(0x72); db(0x01);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x20); db(0x5f); db(0x21); db(0x40); db(0x01); db(0x94); db(0x4a); db(0x83);
+ db(0x6a); db(0x0e); db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x20);
+ db(0x61); db(0x00); db(0x04); db(0x02); db(0x4e); db(0x90); db(0x60); db(0x26);
+ db(0x2c); db(0x4c); db(0x2f); db(0x08); db(0x4e); db(0xae); db(0xff); db(0x70);
+ db(0x20); db(0x5f); db(0x22); db(0x48); db(0x26); db(0x40); db(0x30); db(0x3c);
+ db(0xff); db(0x20); db(0x61); db(0x00); db(0x03); db(0xe8); db(0x4e); db(0x90);
+ db(0x70); db(0x00); db(0x27); db(0x40); db(0x00); db(0x08); db(0x27); db(0x40);
+ db(0x00); db(0x10); db(0x27); db(0x40); db(0x00); db(0x20); db(0x4a); db(0xa9);
+ db(0x01); db(0x94); db(0x67); db(0x28); db(0x20); db(0x69); db(0x01); db(0x94);
+ db(0x61); db(0x00); db(0xfa); db(0xf2); db(0x48); db(0xe7); db(0x80); db(0xc0);
+ db(0x20); db(0x29); db(0x01); db(0x90); db(0x22); db(0x69); db(0x01); db(0x94);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x4c); db(0xdf); db(0x03); db(0x01); db(0x4a); db(0x80); db(0x67); db(0x04);
+ db(0x61); db(0x00); db(0xfa); db(0x7c); db(0x4a); db(0x83); db(0x6b); db(0x00);
+ db(0xf8); db(0xf0); db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00);
+ db(0x03); db(0x9c); db(0x4e); db(0x90); db(0x20); db(0x03); db(0x16); db(0x29);
+ db(0x00); db(0x4f); db(0x4a); db(0x80); db(0x66); db(0x1a); db(0x27); db(0x7c);
+ db(0x00); db(0x00); db(0x17); db(0x70); db(0x00); db(0x14); db(0x41); db(0xfa);
+ db(0xf6); db(0xdc); db(0x20); db(0x08); db(0xe4); db(0x88); db(0x27); db(0x40);
+ db(0x00); db(0x20); db(0x70); db(0xff); db(0x27); db(0x40); db(0x00); db(0x24);
+ db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x3a); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x70); db(0x14); db(0x72); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x22); db(0x40); db(0x70); db(0x00); db(0x22); db(0x80);
+ db(0x23); db(0x40); db(0x00); db(0x04); db(0x33); db(0x40); db(0x00); db(0x0e);
+ db(0x30); db(0x3c); db(0x10); db(0x00); db(0x80); db(0x03); db(0x33); db(0x40);
+ db(0x00); db(0x08); db(0x23); db(0x6d); db(0x01); db(0x04); db(0x00); db(0x0a);
+ db(0x23); db(0x4b); db(0x00); db(0x10); db(0x41); db(0xec); db(0x00); db(0x4a);
+ db(0x4e); db(0xae); db(0xfe); db(0xf2); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x24); db(0x49); db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41);
+ db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x08); db(0x08); db(0x07);
+ db(0x00); db(0x02); db(0x67); db(0x02); db(0x72); db(0x01); db(0x70); db(0xec);
+ db(0x2c); db(0x4c); db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x08); db(0x07);
+ db(0x00); db(0x01); db(0x67); db(0x5c); db(0x08); db(0x07); db(0x00); db(0x02);
+ db(0x66); db(0x56); db(0x20); db(0x52); db(0x74); db(0x02); db(0x52); db(0x82);
+ db(0x4a); db(0x30); db(0x28); db(0xfd); db(0x66); db(0xf8); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x20); db(0x02); db(0x72); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x3a); db(0x20); db(0x52);
+ db(0x24); db(0x40); db(0x22); db(0x4a); db(0x12); db(0xd8); db(0x66); db(0xfc);
+ db(0x13); db(0x7c); db(0x00); db(0x3a); db(0xff); db(0xff); db(0x42); db(0x11);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0d); db(0xf6);
+ db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2c); db(0x40);
+ db(0x22); db(0x0a); db(0x4e); db(0xae); db(0xff); db(0x52); db(0x22); db(0x4e);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62);
+ db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e);
+ db(0x2c); db(0x01); db(0x7e); db(0x06); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x43); db(0xfa); db(0x0d); db(0xf1); db(0x70); db(0x24); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0e); db(0x08); db(0x87);
+ db(0x00); db(0x02); db(0x43); db(0xfa); db(0x0d); db(0xdf); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x02); db(0x2c); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40);
+ db(0x4a); db(0x80); db(0x67); db(0x2c); db(0x21); db(0x4c); db(0x01); db(0x9c);
+ db(0x48); db(0xe7); db(0x00); db(0x8a); db(0x61); db(0x00); db(0xfe); db(0x0a);
+ db(0x4c); db(0xdf); db(0x51); db(0x00); db(0x0c); db(0x80); db(0xff); db(0xff);
+ db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46);
+ db(0x48); db(0x46); db(0x60); db(0xe4); db(0x22); db(0x48); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x02); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf);
+ db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x20); db(0x40);
+ db(0x4b); db(0xe8); db(0x00); db(0x5c); db(0x43); db(0xfa); db(0x0d); db(0x46);
+ db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x24); db(0x40);
+ db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xb9); db(0x22); db(0x3c);
+ db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x26); db(0x40); db(0x7c); db(0x00); db(0x26); db(0x86); db(0x27); db(0x46);
+ db(0x00); db(0x04); db(0x27); db(0x46); db(0x00); db(0x08); db(0x27); db(0x4a);
+ db(0x00); db(0xa0); db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x93); db(0xc9);
+ db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x27); db(0x40); db(0x00); db(0xb0);
+ db(0x41); db(0xfa); db(0x0c); db(0x2e); db(0x70); db(0x00); db(0x72); db(0x00);
+ db(0x61); db(0x00); db(0x02); db(0x84); db(0x27); db(0x40); db(0x00); db(0xa4);
+ db(0x41); db(0xfa); db(0x0c); db(0x2b); db(0x70); db(0x00); db(0x72); db(0x00);
+ db(0x61); db(0x00); db(0x02); db(0x74); db(0x27); db(0x40); db(0x00); db(0xa8);
+ db(0x7a); db(0x00); db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x80);
+ db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40);
+ db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x40);
+ db(0x61); db(0x00); db(0x01); db(0xb2); db(0x70); db(0x00); db(0x4e); db(0x90);
+ db(0x24); db(0x00); db(0x70); db(0x01); db(0x61); db(0x00); db(0xfa); db(0x38);
+ db(0x08); db(0x02); db(0x00); db(0x01); db(0x67); db(0x06); db(0x70); db(0x01);
+ db(0x61); db(0x00); db(0xfb); db(0xa0); db(0x60); db(0x00); db(0x00); db(0xf8);
+ db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40);
+ db(0x4a); db(0x80); db(0x66); db(0x10); db(0x70); db(0x00); db(0x12); db(0x2d);
+ db(0x00); db(0x0f); db(0x03); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d);
+ db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x4a); db(0x2b); db(0x00); db(0xac);
+ db(0x67); db(0x08); db(0x61); db(0x00); db(0xfc); db(0x4c); db(0x42); db(0x2b);
+ db(0x00); db(0xac); db(0x20); db(0x0c); db(0x67); db(0xd2); db(0x0c); db(0x6c);
+ db(0x00); db(0x26); db(0x00); db(0x12); db(0x66); db(0x4c); db(0x0c); db(0xac);
+ db(0x40); db(0x00); db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x42);
+ db(0x0c); db(0x6c); db(0x12); db(0x34); db(0x00); db(0x18); db(0x66); db(0x3a);
+ db(0x20); db(0x6c); db(0x00); db(0x1a); db(0x20); db(0x28); db(0x00); db(0x0c);
+ db(0x02); db(0x80); db(0x80); db(0x00); db(0x00); db(0x08); db(0x0c); db(0x80);
+ db(0x80); db(0x00); db(0x00); db(0x08); db(0x66); db(0x18); db(0x02); db(0xa8);
+ db(0x7f); db(0xff); db(0xff); db(0xff); db(0x00); db(0x0c); db(0x20); db(0x68);
+ db(0x00); db(0x10); db(0x22); db(0x4c); db(0x12); db(0xbc); db(0x00); db(0x08);
+ db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x8a); db(0x22); db(0x4c);
+ db(0x70); db(0x26); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00);
+ db(0xff); db(0x80); db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x66); db(0x3e);
+ db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x01); db(0x06);
+ db(0x70); db(0x01); db(0x4e); db(0x90); db(0x45); db(0xeb); db(0x00); db(0x04);
+ db(0x20); db(0x52); db(0x20); db(0x08); db(0x67); db(0x00); db(0xff); db(0x62);
+ db(0x22); db(0x50); db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x04);
+ db(0x6a); db(0x16); db(0x48); db(0xe7); db(0x00); db(0xc0); db(0x28); db(0x68);
+ db(0x00); db(0x0a); db(0x61); db(0x4a); db(0x53); db(0x85); db(0x4c); db(0xdf);
+ db(0x03); db(0x00); db(0x24); db(0x89); db(0x20); db(0x49); db(0x60); db(0xda);
+ db(0x24); db(0x48); db(0x20); db(0x49); db(0x60); db(0xd4); db(0x0c); db(0x85);
+ db(0x00); db(0x00); db(0x00); db(0x14); db(0x65); db(0x00); db(0x00); db(0x0a);
+ db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x04); db(0x60); db(0x12);
+ db(0x61); db(0x5c); db(0x30); db(0x3c); db(0xff); db(0x30); db(0x61); db(0x00);
+ db(0x00); db(0xb4); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x0e);
+ db(0x52); db(0x85); db(0x28); db(0xab); db(0x00); db(0x04); db(0x27); db(0x4c);
+ db(0x00); db(0x04); db(0x60); db(0x00); db(0xff); db(0x0c); db(0x28); db(0x43);
+ db(0x61); db(0x04); db(0x60); db(0x00); db(0xff); db(0x04); db(0x0c); db(0xac);
+ db(0x00); db(0x00); db(0x00); db(0x1f); db(0x00); db(0x08); db(0x66); db(0x04);
+ db(0x61); db(0x00); db(0xfb); db(0x4c); db(0x0c); db(0xac); db(0x00); db(0x00);
+ db(0x04); db(0x09); db(0x00); db(0x08); db(0x66); db(0x12); db(0x61); db(0x00);
+ db(0xfb); db(0x7a); db(0x66); db(0x0c); db(0x30); db(0x3c); db(0xff); db(0x58);
+ db(0x61); db(0x00); db(0x00); db(0x72); db(0x4e); db(0x90); db(0x60); db(0xee);
+ db(0x22); db(0x54); db(0x20); db(0x6c); db(0x00); db(0x04); db(0x29); db(0x4d);
+ db(0x00); db(0x04); db(0x4e); db(0xee); db(0xfe); db(0x92); db(0x2f); db(0x05);
+ db(0x7a); db(0xfc); db(0x24); db(0x53); db(0x2e); db(0x0a); db(0x22); db(0x0a);
+ db(0x67); db(0x00); db(0x00); db(0x0c); db(0x52); db(0x85); db(0x67); db(0x1e);
+ db(0x22); db(0x4a); db(0x24); db(0x52); db(0x60); db(0xf0); db(0x52); db(0x85);
+ db(0x67); db(0x3c); db(0x24); db(0x47); db(0x70); db(0x18); db(0x72); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x52); db(0x46); db(0x24); db(0x40);
+ db(0x24); db(0x87); db(0x2e); db(0x0a); db(0x60); db(0xe8); db(0x20); db(0x12);
+ db(0x67); db(0x24); db(0x20); db(0x40); db(0x20); db(0x10); db(0x67); db(0x1e);
+ db(0x20); db(0x40); db(0x20); db(0x10); db(0x67); db(0x18); db(0x70); db(0x00);
+ db(0x22); db(0x80); db(0x22); db(0x4a); db(0x24); db(0x51); db(0x70); db(0x18);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x06); db(0x86); db(0x00); db(0x01);
+ db(0x00); db(0x00); db(0x20); db(0x0a); db(0x66); db(0xec); db(0x26); db(0x87);
+ db(0x2a); db(0x1f); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0xf3); db(0x4e);
+ db(0x02); db(0x80); db(0x00); db(0x00); db(0xff); db(0xff); db(0xd1); db(0xc0);
+ db(0x4e); db(0x75); db(0x20); db(0x88); db(0x58); db(0x90); db(0x42); db(0xa8);
+ db(0x00); db(0x04); db(0x21); db(0x48); db(0x00); db(0x08); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x91); db(0xc8);
+ db(0x24); db(0x00); db(0x6b); db(0x32); db(0x70); db(0x22); db(0x22); db(0x3c);
+ db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x91); db(0xc8); db(0x24); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x1e);
+ db(0x15); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x08); db(0x15); db(0x42);
+ db(0x00); db(0x0f); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
+ db(0x25); db(0x40); db(0x00); db(0x10); db(0x41); db(0xea); db(0x00); db(0x14);
+ db(0x61); db(0x00); db(0xff); db(0xb0); db(0x20); db(0x4a); db(0x20); db(0x08);
+ db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4a); db(0x80);
+ db(0x67); db(0x24); db(0x24); db(0x40); db(0x24); db(0x01); db(0x66); db(0x02);
+ db(0x74); db(0x30); db(0x20); db(0x02); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40);
+ db(0x11); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x08); db(0x31); db(0x42);
+ db(0x00); db(0x12); db(0x21); db(0x4a); db(0x00); db(0x0e); db(0x4a); db(0x80);
+ db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x30); db(0x22); db(0x24); db(0x48); db(0x24); db(0x00); db(0x26); db(0x01);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x6a);
+ db(0x22); db(0x03); db(0x61); db(0x00); db(0xff); db(0xb2); db(0x67); db(0x18);
+ db(0x20); db(0x4a); db(0x22); db(0x40); db(0x24); db(0x40); db(0x20); db(0x02);
+ db(0x72); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x22); db(0x00);
+ db(0x70); db(0x00); db(0x4a); db(0x81); db(0x66); db(0x02); db(0x20); db(0x0a);
+ db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x0c); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x38); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x28); db(0x00); db(0x24); db(0x08); db(0x26); db(0x09); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x08); db(0x5c); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
+ db(0x67); db(0x00); db(0x00); db(0x34); db(0x24); db(0x40); db(0x15); db(0x7c);
+ db(0x00); db(0x01); db(0x00); db(0x08); db(0x15); db(0x44); db(0x00); db(0x09);
+ db(0x25); db(0x42); db(0x00); db(0x0a); db(0x47); db(0xea); db(0x00); db(0x5c);
+ db(0x25); db(0x4b); db(0x00); db(0x3a); db(0x47); db(0xeb); db(0x08); db(0x00);
+ db(0x25); db(0x4b); db(0x00); db(0x3e); db(0x25); db(0x4b); db(0x00); db(0x36);
+ db(0x22); db(0x4a); db(0x24); db(0x43); db(0x97); db(0xcb); db(0x24); db(0x09);
+ db(0x4e); db(0xae); db(0xfe); db(0xe6); db(0x20); db(0x02); db(0x4c); db(0xdf);
+ db(0x4c); db(0x1c); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x09); db(0x9a);
+ db(0x43); db(0xfa); db(0x01); db(0x5c); db(0x70); db(0x13); db(0x61); db(0x00);
+ db(0xff); db(0x98); db(0x4e); db(0x75); db(0x22); db(0x6d); db(0x02); db(0x0c);
+ db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c);
+ db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x25); db(0x69); db(0x00); db(0x20);
+ db(0x00); db(0x0e); db(0x25); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12);
+ db(0x22); db(0x6d); db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01);
+ db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75);
+ db(0x42); db(0xaa); db(0x00); db(0x0e); db(0x42); db(0xaa); db(0x00); db(0x12);
+ db(0x22); db(0x6d); db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01);
+ db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75);
+ db(0x00); db(0x00); db(0xff); db(0xff); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x48); db(0xe7); db(0xf8); db(0xfe); db(0x2a); db(0x48); db(0x95); db(0xca);
- db(0x97); db(0xcb); db(0x99); db(0xcc); db(0x78); db(0x00); db(0x2c); db(0x6d);
- db(0x00); db(0x18); db(0x20); db(0x6d); db(0x00); db(0x14); db(0x20); db(0x28);
- db(0x00); db(0x3c); db(0x67); db(0x5c); db(0x20); db(0x40); db(0x41); db(0xe8);
- db(0x00); db(0x2c); db(0x28); db(0x48); db(0x4e); db(0xae); db(0xfc); db(0xe8);
- db(0x72); db(0xff); db(0x74); db(0xff); db(0xb2); db(0x80); db(0x67); db(0x48);
- db(0x26); db(0x00); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x41); db(0xed);
- db(0x00); db(0xc0); db(0x70); db(0x66); db(0x4e); db(0xae); db(0xff); db(0x7c);
- db(0x41); db(0xed); db(0x00); db(0xc0); db(0x38); db(0x28); db(0x00); db(0x64);
- db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x91); db(0xc8); db(0x43); db(0xed);
- db(0x00); db(0x38); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58);
- db(0x22); db(0x3c); db(0x80); db(0x00); db(0x10); db(0x00); db(0x24); db(0x03);
- db(0x4e); db(0xae); db(0xfd); db(0x0c); db(0x72); db(0xff); db(0x74); db(0xff);
- db(0x4a); db(0x80); db(0x6b); db(0x0c); db(0x45); db(0xed); db(0x00); db(0x38);
- db(0x22); db(0x2a); db(0x00); db(0x32); db(0x24); db(0x2a); db(0x00); db(0x36);
- db(0x20); db(0x2c); db(0x00); db(0x1c); db(0xb8); db(0x6d); db(0x00); db(0x2c);
- db(0x66); db(0x12); db(0xb0); db(0xad); db(0x00); db(0x28); db(0x66); db(0x0c);
- db(0xb2); db(0xad); db(0x00); db(0x20); db(0x66); db(0x06); db(0xb4); db(0xad);
- db(0x00); db(0x24); db(0x67); db(0x40); db(0x2b); db(0x40); db(0x00); db(0x28);
- db(0x2b); db(0x41); db(0x00); db(0x20); db(0x2b); db(0x42); db(0x00); db(0x24);
- db(0x3b); db(0x44); db(0x00); db(0x2c); db(0x91); db(0xc8); db(0x43); db(0xed);
- db(0x00); db(0x90); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58);
- db(0x22); db(0x3c); db(0x80); db(0x00); db(0x00); db(0x00); db(0x24); db(0x03);
- db(0x4e); db(0xae); db(0xfd); db(0x0c); db(0x4a); db(0x80); db(0x6b); db(0x04);
- db(0x47); db(0xed); db(0x00); db(0x90); db(0x34); db(0x2d); db(0x00); db(0x2c);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x01); db(0x61); db(0x00);
- db(0xfd); db(0x70); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0x1f);
- db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x3e); db(0x2e);
- db(0x00); db(0x14); db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6);
- db(0x7c); db(0x00); db(0x01); db(0xc6); db(0x93); db(0xc9); db(0x4e); db(0xae);
- db(0xfe); db(0xda); db(0x28); db(0x40); db(0x70); db(0x14); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x70); db(0x00); db(0x30); db(0x3c);
- db(0x02); db(0x10); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2a); db(0x40); db(0x47); db(0xed);
- db(0x00); db(0x16); db(0x27); db(0x4e); db(0x00); db(0x10); db(0x27); db(0x4c);
- db(0x00); db(0x08); db(0x27); db(0x46); db(0x00); db(0x0c); db(0x70); db(0xff);
- db(0x37); db(0x40); db(0x00); db(0x00); db(0x43); db(0xed); db(0x00); db(0x00);
- db(0x13); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x08); db(0x13); db(0x7c);
- db(0x00); db(0x05); db(0x00); db(0x09); db(0x41); db(0xfa); db(0x07); db(0xde);
- db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x02); db(0xda);
- db(0x23); db(0x48); db(0x00); db(0x12); db(0x23); db(0x4d); db(0x00); db(0x0e);
- db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58); db(0x20); db(0x06);
- db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x70); db(0x00); db(0x53); db(0xab);
- db(0x00); db(0x1c); db(0x6a); db(0x06); db(0x70); db(0x0a); db(0x27); db(0x40);
- db(0x00); db(0x1c); db(0x4a); db(0xab); db(0x00); db(0x14); db(0x66); db(0x16);
- db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xe0); db(0x43); db(0xfa);
- db(0x07); db(0xfc); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x27); db(0x40); db(0x00); db(0x14); db(0x67); db(0xd0); db(0x4a); db(0xab);
- db(0x00); db(0x18); db(0x66); db(0x18); db(0x4a); db(0xab); db(0x00); db(0x1c);
- db(0x66); db(0xc4); db(0x43); db(0xfa); db(0x07); db(0xf2); db(0x70); db(0x00);
- db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x18);
- db(0x67); db(0x00); db(0xff); db(0xb4); db(0x4a); db(0xad); db(0x02); db(0x08);
- db(0x66); db(0x38); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xa6);
- db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e);
- db(0x43); db(0xfa); db(0x06); db(0xd2); db(0x4e); db(0xae); db(0xfe); db(0xec);
- db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82);
- db(0x67); db(0x8c); db(0x41); db(0xfa); db(0x06); db(0xc0); db(0x70); db(0x00);
- db(0x72); db(0x00); db(0x61); db(0x00); db(0xfd); db(0x16); db(0x2b); db(0x40);
- db(0x02); db(0x08); db(0x67); db(0x00); db(0x02); db(0x42); db(0x60); db(0x00);
- db(0xff); db(0x76); db(0x4a); db(0xad); db(0x02); db(0x0c); db(0x66); db(0x48);
- db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0x00); db(0xff); db(0x68);
- db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e);
- db(0x43); db(0xfa); db(0x06); db(0x9f); db(0x4e); db(0xae); db(0xfe); db(0xec);
- db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82);
- db(0x67); db(0x00); db(0xff); db(0x4c); db(0x41); db(0xfa); db(0x06); db(0x8b);
- db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0xd4);
- db(0x2b); db(0x40); db(0x02); db(0x0c); db(0x67); db(0x00); db(0x02); db(0x00);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x00); db(0x61); db(0x00);
- db(0xfc); db(0x20); db(0x4e); db(0x90); db(0x60); db(0x00); db(0xff); db(0x28);
- db(0x0c); db(0x47); db(0x00); db(0x24); db(0x65); db(0x12); db(0x53); db(0xab);
- db(0x00); db(0x34); db(0x6a); db(0x0c); db(0x20); db(0x4b); db(0x61); db(0x00);
- db(0xfd); db(0xc8); db(0x70); db(0x32); db(0x27); db(0x40); db(0x00); db(0x34);
- db(0x22); db(0x6d); db(0x02); db(0x08); db(0x45); db(0xed); db(0x01); db(0x3c);
- db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c);
- db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a);
- db(0x00); db(0x28); db(0x10); db(0x3a); db(0xfd); db(0x78); db(0x0c); db(0x47);
- db(0x00); db(0x27); db(0x65); db(0x00); db(0x01); db(0x62); db(0x08); db(0x00);
- db(0x00); db(0x01); db(0x67); db(0x00); db(0x01); db(0x5a); db(0x41); db(0xed);
- db(0x01); db(0x68); db(0x25); db(0x48); db(0x00); db(0x0a); db(0x15); db(0x7c);
- db(0x00); db(0x13); db(0x00); db(0x04); db(0x15); db(0x7c); db(0x00); db(0x03);
- db(0x00); db(0x05); db(0x42); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04);
- db(0x42); db(0x6a); db(0x00); db(0x06); db(0x42); db(0xa8); db(0x00); db(0x08);
- db(0x42); db(0x68); db(0x00); db(0x0c); db(0x22); db(0x3a); db(0xfd); db(0x60);
- db(0x02); db(0x41); db(0x00); db(0x07); db(0x70); db(0x07); db(0x90); db(0x41);
- db(0xe1); db(0x48); db(0xe9); db(0x48); db(0x35); db(0x40); db(0x00); db(0x08);
- db(0x31); db(0x7a); db(0xfd); db(0x34); db(0x00); db(0x0e); db(0x42); db(0x68);
- db(0x00); db(0x10); db(0x31); db(0x7a); db(0xfd); db(0x2c); db(0x00); db(0x12);
- db(0x42); db(0x68); db(0x00); db(0x14); db(0x31); db(0x7a); db(0xfd); db(0x1a);
- db(0x00); db(0x16); db(0x42); db(0x68); db(0x00); db(0x18); db(0x31); db(0x7a);
- db(0xfd); db(0x12); db(0x00); db(0x1a); db(0x43); db(0xed); db(0x01); db(0x88);
- db(0x21); db(0x49); db(0x00); db(0x1c); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x06); db(0x30); db(0x3a); db(0xfd); db(0x18); db(0x48); db(0xc0);
- db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x07); db(0x22); db(0xfa); db(0xfd); db(0x0a); db(0x70); db(0x00);
- db(0x30); db(0x3a); db(0xfc); db(0xf2); db(0x6b); db(0x08); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x09); db(0x22); db(0xc0); db(0x30); db(0x3a);
- db(0xfc); db(0xe6); db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x0a); db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xce);
- db(0x6b); db(0x14); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x02);
- db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xc6); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x01); db(0x22); db(0xc0); db(0x30); db(0x3a);
- db(0xfc); db(0xc0); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x03); db(0x30); db(0x3a); db(0xfc); db(0xba); db(0x48); db(0xc0);
- db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xac);
- db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x04);
- db(0x30); db(0x3a); db(0xfc); db(0xa6); db(0x48); db(0xc0); db(0xe1); db(0x80);
- db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0x98); db(0x6b); db(0x10);
- db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x05); db(0x30); db(0x3a);
- db(0xfc); db(0x92); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
- db(0x70); db(0x00); db(0x30); db(0x3a); db(0xfc); db(0x8e); db(0x6b); db(0x08);
- db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x08); db(0x22); db(0xc0);
- db(0x42); db(0x91); db(0x61); db(0x00); db(0xfc); db(0x40); db(0x36); db(0x3c);
- db(0x00); db(0x68); db(0x74); db(0x01); db(0x28); db(0x3a); db(0xfc); db(0x70);
- db(0x20); db(0x04); db(0xc0); db(0x82); db(0x22); db(0x2b); db(0x00); db(0x04);
- db(0xc2); db(0x82); db(0xb2); db(0x80); db(0x67); db(0x22); db(0x42); db(0x92);
- db(0x35); db(0x7c); db(0x02); db(0x00); db(0x00); db(0x04); db(0x42); db(0xaa);
- db(0x00); db(0x0a); db(0x32); db(0x03); db(0x4a); db(0x00); db(0x66); db(0x04);
- db(0x08); db(0xc1); db(0x00); db(0x07); db(0x35); db(0x41); db(0x00); db(0x06);
- db(0x42); db(0x6a); db(0x00); db(0x08); db(0x61); db(0x00); db(0xfc); db(0x06);
- db(0x52); db(0x43); db(0xd4); db(0x42); db(0x0c); db(0x42); db(0x00); db(0x08);
- db(0x66); db(0xc6); db(0x27); db(0x44); db(0x00); db(0x04); db(0x10); db(0x3a);
- db(0xfc); db(0x0c); db(0x08); db(0x00); db(0x00); db(0x00); db(0x67); db(0x00);
- db(0xfd); db(0x7e); db(0x42); db(0x92); db(0x35); db(0x7c); db(0x04); db(0x00);
- db(0x00); db(0x04); db(0x42); db(0x6a); db(0x00); db(0x06); db(0x42); db(0x6a);
- db(0x00); db(0x08); db(0x20); db(0x6b); db(0x00); db(0x14); db(0x30); db(0x3a);
- db(0xfc); db(0x14); db(0x32); db(0x28); db(0x00); db(0x30); db(0xd2); db(0x41);
+ db(0x00); db(0x00); db(0x00); db(0x00); db(0x48); db(0xe7); db(0xf8); db(0xfe);
+ db(0x2a); db(0x48); db(0x95); db(0xca); db(0x97); db(0xcb); db(0x99); db(0xcc);
+ db(0x78); db(0x00); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x20); db(0x6d);
+ db(0x00); db(0x14); db(0x20); db(0x28); db(0x00); db(0x3c); db(0x67); db(0x5c);
+ db(0x20); db(0x40); db(0x41); db(0xe8); db(0x00); db(0x2c); db(0x28); db(0x48);
+ db(0x4e); db(0xae); db(0xfc); db(0xe8); db(0x72); db(0xff); db(0x74); db(0xff);
+ db(0xb2); db(0x80); db(0x67); db(0x48); db(0x26); db(0x00); db(0x2c); db(0x6d);
+ db(0x00); db(0x14); db(0x41); db(0xed); db(0x00); db(0xc0); db(0x70); db(0x66);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xed); db(0x00); db(0xc0);
+ db(0x38); db(0x28); db(0x00); db(0x64); db(0x2c); db(0x6d); db(0x00); db(0x18);
+ db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x38); db(0x70); db(0x00);
+ db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c); db(0x80); db(0x00);
+ db(0x10); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae); db(0xfd); db(0x0c);
+ db(0x72); db(0xff); db(0x74); db(0xff); db(0x4a); db(0x80); db(0x6b); db(0x0c);
+ db(0x45); db(0xed); db(0x00); db(0x38); db(0x22); db(0x2a); db(0x00); db(0x32);
+ db(0x24); db(0x2a); db(0x00); db(0x36); db(0x20); db(0x2c); db(0x00); db(0x1c);
+ db(0xb8); db(0x6d); db(0x00); db(0x2c); db(0x66); db(0x12); db(0xb0); db(0xad);
+ db(0x00); db(0x28); db(0x66); db(0x0c); db(0xb2); db(0xad); db(0x00); db(0x20);
+ db(0x66); db(0x06); db(0xb4); db(0xad); db(0x00); db(0x24); db(0x67); db(0x40);
+ db(0x2b); db(0x40); db(0x00); db(0x28); db(0x2b); db(0x41); db(0x00); db(0x20);
+ db(0x2b); db(0x42); db(0x00); db(0x24); db(0x3b); db(0x44); db(0x00); db(0x2c);
+ db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x90); db(0x70); db(0x00);
+ db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c); db(0x80); db(0x00);
+ db(0x00); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae); db(0xfd); db(0x0c);
+ db(0x4a); db(0x80); db(0x6b); db(0x04); db(0x47); db(0xed); db(0x00); db(0x90);
+ db(0x34); db(0x2d); db(0x00); db(0x2c); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x01); db(0x61); db(0x00); db(0xfd); db(0x70); db(0x4e); db(0x90);
+ db(0x4c); db(0xdf); db(0x7f); db(0x1f); db(0x4e); db(0x75); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x3e); db(0x2e); db(0x00); db(0x14); db(0x70); db(0xff);
+ db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x7c); db(0x00); db(0x01); db(0xc6);
+ db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x28); db(0x40);
+ db(0x70); db(0x14); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0xd4);
+ db(0x70); db(0x00); db(0x30); db(0x3c); db(0x02); db(0x10); db(0x22); db(0x3c);
+ db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x2a); db(0x40); db(0x47); db(0xed); db(0x00); db(0x16); db(0x27); db(0x4e);
+ db(0x00); db(0x10); db(0x27); db(0x4c); db(0x00); db(0x08); db(0x27); db(0x46);
+ db(0x00); db(0x0c); db(0x70); db(0xff); db(0x37); db(0x40); db(0x00); db(0x00);
+ db(0x43); db(0xed); db(0x00); db(0x00); db(0x13); db(0x7c); db(0x00); db(0x02);
+ db(0x00); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x05); db(0x00); db(0x09);
+ db(0x41); db(0xfa); db(0x07); db(0xde); db(0x23); db(0x48); db(0x00); db(0x0a);
+ db(0x41); db(0xfa); db(0x02); db(0xda); db(0x23); db(0x48); db(0x00); db(0x12);
+ db(0x23); db(0x4d); db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae);
+ db(0xff); db(0x58); db(0x20); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0xc2);
+ db(0x70); db(0x00); db(0x53); db(0xab); db(0x00); db(0x1c); db(0x6a); db(0x06);
+ db(0x70); db(0x0a); db(0x27); db(0x40); db(0x00); db(0x1c); db(0x4a); db(0xab);
+ db(0x00); db(0x14); db(0x66); db(0x16); db(0x4a); db(0xab); db(0x00); db(0x1c);
+ db(0x66); db(0xe0); db(0x43); db(0xfa); db(0x07); db(0xfc); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x14);
+ db(0x67); db(0xd0); db(0x4a); db(0xab); db(0x00); db(0x18); db(0x66); db(0x18);
+ db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xc4); db(0x43); db(0xfa);
+ db(0x07); db(0xf2); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x27); db(0x40); db(0x00); db(0x18); db(0x67); db(0x00); db(0xff); db(0xb4);
+ db(0x4a); db(0xad); db(0x02); db(0x08); db(0x66); db(0x38); db(0x4a); db(0xab);
+ db(0x00); db(0x1c); db(0x66); db(0xa6); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x06); db(0xd2);
+ db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x8c); db(0x41); db(0xfa);
+ db(0x06); db(0xc0); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00);
+ db(0xfd); db(0x16); db(0x2b); db(0x40); db(0x02); db(0x08); db(0x67); db(0x00);
+ db(0x02); db(0x42); db(0x60); db(0x00); db(0xff); db(0x76); db(0x4a); db(0xad);
+ db(0x02); db(0x0c); db(0x66); db(0x48); db(0x4a); db(0xab); db(0x00); db(0x1c);
+ db(0x66); db(0x00); db(0xff); db(0x68); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x06); db(0x9f);
+ db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x00); db(0xff); db(0x4c);
+ db(0x41); db(0xfa); db(0x06); db(0x8b); db(0x70); db(0x00); db(0x72); db(0x00);
+ db(0x61); db(0x00); db(0xfc); db(0xd4); db(0x2b); db(0x40); db(0x02); db(0x0c);
+ db(0x67); db(0x00); db(0x02); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0x20); db(0x4e); db(0x90);
+ db(0x60); db(0x00); db(0xff); db(0x28); db(0x0c); db(0x47); db(0x00); db(0x24);
+ db(0x65); db(0x12); db(0x53); db(0xab); db(0x00); db(0x34); db(0x6a); db(0x0c);
+ db(0x20); db(0x4b); db(0x61); db(0x00); db(0xfd); db(0xc8); db(0x70); db(0x32);
+ db(0x27); db(0x40); db(0x00); db(0x34); db(0x22); db(0x6d); db(0x02); db(0x08);
+ db(0x45); db(0xed); db(0x01); db(0x3c); db(0x33); db(0x7c); db(0x00); db(0x0b);
+ db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16);
+ db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28); db(0x10); db(0x3a);
+ db(0xfd); db(0x78); db(0x0c); db(0x47); db(0x00); db(0x27); db(0x65); db(0x00);
+ db(0x01); db(0x62); db(0x08); db(0x00); db(0x00); db(0x01); db(0x67); db(0x00);
+ db(0x01); db(0x5a); db(0x41); db(0xed); db(0x01); db(0x68); db(0x25); db(0x48);
+ db(0x00); db(0x0a); db(0x15); db(0x7c); db(0x00); db(0x13); db(0x00); db(0x04);
+ db(0x15); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x05); db(0x42); db(0x90);
+ db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0x6a); db(0x00); db(0x06);
+ db(0x42); db(0xa8); db(0x00); db(0x08); db(0x42); db(0x68); db(0x00); db(0x0c);
+ db(0x22); db(0x3a); db(0xfd); db(0x60); db(0x02); db(0x41); db(0x00); db(0x07);
+ db(0x70); db(0x07); db(0x90); db(0x41); db(0xe1); db(0x48); db(0xe9); db(0x48);
+ db(0x35); db(0x40); db(0x00); db(0x08); db(0x31); db(0x7a); db(0xfd); db(0x34);
+ db(0x00); db(0x0e); db(0x42); db(0x68); db(0x00); db(0x10); db(0x31); db(0x7a);
+ db(0xfd); db(0x2c); db(0x00); db(0x12); db(0x42); db(0x68); db(0x00); db(0x14);
+ db(0x31); db(0x7a); db(0xfd); db(0x1a); db(0x00); db(0x16); db(0x42); db(0x68);
+ db(0x00); db(0x18); db(0x31); db(0x7a); db(0xfd); db(0x12); db(0x00); db(0x1a);
+ db(0x43); db(0xed); db(0x01); db(0x88); db(0x21); db(0x49); db(0x00); db(0x1c);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x06); db(0x30); db(0x3a);
+ db(0xfd); db(0x18); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x07); db(0x22); db(0xfa);
+ db(0xfd); db(0x0a); db(0x70); db(0x00); db(0x30); db(0x3a); db(0xfc); db(0xf2);
+ db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x09);
+ db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xe6); db(0x6b); db(0x08);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x0a); db(0x22); db(0xc0);
+ db(0x30); db(0x3a); db(0xfc); db(0xce); db(0x6b); db(0x14); db(0x22); db(0xfc);
+ db(0x80); db(0x03); db(0xa0); db(0x02); db(0x22); db(0xc0); db(0x30); db(0x3a);
+ db(0xfc); db(0xc6); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x01);
+ db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xc0); db(0x6b); db(0x10);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x03); db(0x30); db(0x3a);
+ db(0xfc); db(0xba); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
+ db(0x30); db(0x3a); db(0xfc); db(0xac); db(0x6b); db(0x10); db(0x22); db(0xfc);
+ db(0x80); db(0x03); db(0xa0); db(0x04); db(0x30); db(0x3a); db(0xfc); db(0xa6);
+ db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x3a);
+ db(0xfc); db(0x98); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03);
+ db(0xa0); db(0x05); db(0x30); db(0x3a); db(0xfc); db(0x92); db(0x48); db(0xc0);
+ db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x70); db(0x00); db(0x30); db(0x3a);
+ db(0xfc); db(0x8e); db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03);
+ db(0xa0); db(0x08); db(0x22); db(0xc0); db(0x42); db(0x91); db(0x61); db(0x00);
+ db(0xfc); db(0x40); db(0x36); db(0x3c); db(0x00); db(0x68); db(0x74); db(0x01);
+ db(0x28); db(0x3a); db(0xfc); db(0x70); db(0x20); db(0x04); db(0xc0); db(0x82);
+ db(0x22); db(0x2b); db(0x00); db(0x04); db(0xc2); db(0x82); db(0xb2); db(0x80);
+ db(0x67); db(0x22); db(0x42); db(0x92); db(0x35); db(0x7c); db(0x02); db(0x00);
+ db(0x00); db(0x04); db(0x42); db(0xaa); db(0x00); db(0x0a); db(0x32); db(0x03);
+ db(0x4a); db(0x00); db(0x66); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x07);
+ db(0x35); db(0x41); db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08);
+ db(0x61); db(0x00); db(0xfc); db(0x06); db(0x52); db(0x43); db(0xd4); db(0x42);
+ db(0x0c); db(0x42); db(0x00); db(0x08); db(0x66); db(0xc6); db(0x27); db(0x44);
+ db(0x00); db(0x04); db(0x10); db(0x3a); db(0xfc); db(0x0c); db(0x08); db(0x00);
+ db(0x00); db(0x00); db(0x67); db(0x00); db(0xfd); db(0x7e); db(0x42); db(0x92);
+ db(0x35); db(0x7c); db(0x04); db(0x00); db(0x00); db(0x04); db(0x42); db(0x6a);
+ db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08); db(0x20); db(0x6b);
+ db(0x00); db(0x14); db(0x30); db(0x3a); db(0xfc); db(0x14); db(0x32); db(0x28);
+ db(0x00); db(0x30); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02);
+ db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0a); db(0x30); db(0x3a);
+ db(0xfc); db(0x02); db(0x32); db(0x28); db(0x00); db(0x2e); db(0xd2); db(0x41);
  db(0x90); db(0x41); db(0x6a); db(0x02); db(0x70); db(0x00); db(0x35); db(0x40);
- db(0x00); db(0x0a); db(0x30); db(0x3a); db(0xfc); db(0x02); db(0x32); db(0x28);
- db(0x00); db(0x2e); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02);
- db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0c); db(0x61); db(0x00);
- db(0xfb); db(0x78); db(0x60); db(0x00); db(0xfd); db(0x3a); db(0x4e); db(0x75);
- db(0x4a); db(0xa9); db(0x02); db(0x08); db(0x67); db(0x14); db(0x4a); db(0xa9);
- db(0x02); db(0x0c); db(0x67); db(0x0e); db(0x30); db(0x3a); db(0xfb); db(0xb0);
- db(0xb0); db(0x69); db(0x00); db(0x16); db(0x67); db(0x14); db(0x33); db(0x40);
- db(0x00); db(0x16); db(0x2c); db(0x69); db(0x00); db(0x26); db(0x20); db(0x29);
- db(0x00); db(0x22); db(0x22); db(0x69); db(0x00); db(0x1e); db(0x4e); db(0xae);
- db(0xfe); db(0xbc); db(0x53); db(0x69); db(0x00); db(0x46); db(0x6a); db(0x12);
- db(0x33); db(0x7c); db(0x00); db(0x32); db(0x00); db(0x46); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x02); db(0x61); db(0x00); db(0xf9); db(0xea);
- db(0x4e); db(0x90); db(0x41); db(0xf9); db(0x00); db(0xdf); db(0xf0); db(0x00);
- db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x06);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x00); db(0x88); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0x00); db(0x40); db(0x2a); db(0x40); db(0x2b); db(0x4e); db(0x00); db(0x14);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00);
- db(0xf9); db(0xb0); db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x41); db(0xfa);
- db(0x04); db(0x66); db(0x43); db(0xfa); db(0x01); db(0x14); db(0x70); db(0xf6);
- db(0x22); db(0x3c); db(0x00); db(0x00); db(0x27); db(0x10); db(0x61); db(0x00);
- db(0xee); db(0xe6); db(0x70); db(0x00); db(0x4c); db(0xdf); db(0x60); db(0x00);
- db(0x4e); db(0x75); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0a);
- db(0x61); db(0x00); db(0xf9); db(0x86); db(0x4e); db(0x90); db(0x4e); db(0x75);
- db(0x61); db(0xf0); db(0x20); db(0x0d); db(0x67); db(0x1c); db(0x2c); db(0x6d);
- db(0x00); db(0x14); db(0x20); db(0x2d); db(0x00); db(0x18); db(0x67); db(0x06);
- db(0x22); db(0x40); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4d);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x88); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x38); db(0x3e); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa);
- db(0x03); db(0xf4); db(0x22); db(0x08); db(0x24); db(0x3c); db(0x00); db(0x00);
- db(0x03); db(0xed); db(0x4e); db(0xae); db(0xff); db(0xe2); db(0x28); db(0x00);
- db(0x67); db(0x4c); db(0x45); db(0xed); db(0x00); db(0x68); db(0x42); db(0x92);
- db(0x34); db(0xaa); db(0x00); db(0x02); db(0x24); db(0x0a); db(0x54); db(0x82);
- db(0x76); db(0x02); db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6);
- db(0xb6); db(0x80); db(0x66); db(0x32); db(0x0c); db(0x92); db(0x50); db(0x4e);
- db(0x54); db(0x52); db(0x66); db(0xe4); db(0x24); db(0x0a); db(0x76); db(0x04);
- db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6); db(0x24); db(0x0a);
- db(0x76); db(0x20); db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6);
- db(0xb6); db(0x80); db(0x66); db(0x12); db(0x4a); db(0x6a); db(0x00); db(0x10);
- db(0x66); db(0xc4); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x10);
- db(0x61); db(0x00); db(0xf8); db(0xf6); db(0x4e); db(0x90); db(0x22); db(0x04);
- db(0x67); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xdc); db(0x4c); db(0xdf);
- db(0x7c); db(0x1c); db(0x4e); db(0x75); db(0x2c); db(0x6d); db(0x00); db(0x18);
- db(0x41); db(0xfa); db(0x03); db(0x6c); db(0x22); db(0x08); db(0x74); db(0xfe);
- db(0x4e); db(0xae); db(0xff); db(0xac); db(0x22); db(0x00); db(0x67); db(0x34);
- db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14);
- db(0x45); db(0xed); db(0x00); db(0x38); db(0x70); db(0xff); db(0x4e); db(0xae);
- db(0xfe); db(0xb6); db(0x15); db(0x40); db(0x00); db(0x14); db(0x41); db(0xfa);
- db(0x03); db(0x5c); db(0x24); db(0x88); db(0x25); db(0x7c); db(0x00); db(0x00);
- db(0x00); db(0x12); db(0x00); db(0x0c); db(0x25); db(0x6d); db(0x00); db(0x08);
- db(0x00); db(0x10); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x22); db(0x0a);
- db(0x4e); db(0xae); db(0xfc); db(0x88); db(0x2c); db(0x6d); db(0x00); db(0x14);
- db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x0d); db(0x61); db(0x00); db(0xf8); db(0x84); db(0x4e); db(0x90);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0xfc); db(0x2a); db(0x40);
- db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x93); db(0xc9); db(0x4e); db(0xae);
- db(0xfe); db(0xda); db(0x2b); db(0x40); db(0x00); db(0x08); db(0x43); db(0xfa);
- db(0x03); db(0x88); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x2b); db(0x40); db(0x00); db(0x18); db(0x67); db(0x00); db(0xfe); db(0xda);
- db(0x2c); db(0x40); db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x41); db(0xfa); db(0x02); db(0xc0); db(0x22); db(0x08); db(0x74); db(0xfe);
- db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0xea);
- db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x72); db(0x32);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x02); db(0xaa);
+ db(0x00); db(0x0c); db(0x61); db(0x00); db(0xfb); db(0x78); db(0x60); db(0x00);
+ db(0xfd); db(0x3a); db(0x4e); db(0x75); db(0x4a); db(0xa9); db(0x02); db(0x08);
+ db(0x67); db(0x14); db(0x4a); db(0xa9); db(0x02); db(0x0c); db(0x67); db(0x0e);
+ db(0x30); db(0x3a); db(0xfb); db(0xb0); db(0xb0); db(0x69); db(0x00); db(0x16);
+ db(0x67); db(0x14); db(0x33); db(0x40); db(0x00); db(0x16); db(0x2c); db(0x69);
+ db(0x00); db(0x26); db(0x20); db(0x29); db(0x00); db(0x22); db(0x22); db(0x69);
+ db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x53); db(0x69);
+ db(0x00); db(0x46); db(0x6a); db(0x12); db(0x33); db(0x7c); db(0x00); db(0x32);
+ db(0x00); db(0x46); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x02);
+ db(0x61); db(0x00); db(0xf9); db(0xea); db(0x4e); db(0x90); db(0x41); db(0xf9);
+ db(0x00); db(0xdf); db(0xf0); db(0x00); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x00); db(0x06); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x88); db(0x22); db(0x3c);
+ db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x40); db(0x2a); db(0x40);
+ db(0x2b); db(0x4e); db(0x00); db(0x14); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x0e); db(0x61); db(0x00); db(0xf9); db(0xb0); db(0x20); db(0x0d);
+ db(0x4e); db(0x90); db(0x41); db(0xfa); db(0x04); db(0x66); db(0x43); db(0xfa);
+ db(0x01); db(0x14); db(0x70); db(0xf6); db(0x22); db(0x3c); db(0x00); db(0x00);
+ db(0x27); db(0x10); db(0x61); db(0x00); db(0xee); db(0xe6); db(0x70); db(0x00);
+ db(0x4c); db(0xdf); db(0x60); db(0x00); db(0x4e); db(0x75); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x72); db(0x0a); db(0x61); db(0x00); db(0xf9); db(0x86);
+ db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x61); db(0xf0); db(0x20); db(0x0d);
+ db(0x67); db(0x1c); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x20); db(0x2d);
+ db(0x00); db(0x18); db(0x67); db(0x06); db(0x22); db(0x40); db(0x4e); db(0xae);
+ db(0xfe); db(0x62); db(0x22); db(0x4d); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x00); db(0x88); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x3e); db(0x2c); db(0x6d);
+ db(0x00); db(0x18); db(0x41); db(0xfa); db(0x03); db(0xf4); db(0x22); db(0x08);
+ db(0x24); db(0x3c); db(0x00); db(0x00); db(0x03); db(0xed); db(0x4e); db(0xae);
+ db(0xff); db(0xe2); db(0x28); db(0x00); db(0x67); db(0x4c); db(0x45); db(0xed);
+ db(0x00); db(0x68); db(0x42); db(0x92); db(0x34); db(0xaa); db(0x00); db(0x02);
+ db(0x24); db(0x0a); db(0x54); db(0x82); db(0x76); db(0x02); db(0x22); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80); db(0x66); db(0x32);
+ db(0x0c); db(0x92); db(0x50); db(0x4e); db(0x54); db(0x52); db(0x66); db(0xe4);
+ db(0x24); db(0x0a); db(0x76); db(0x04); db(0x22); db(0x04); db(0x4e); db(0xae);
+ db(0xff); db(0xd6); db(0x24); db(0x0a); db(0x76); db(0x20); db(0x22); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80); db(0x66); db(0x12);
+ db(0x4a); db(0x6a); db(0x00); db(0x10); db(0x66); db(0xc4); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x72); db(0x10); db(0x61); db(0x00); db(0xf8); db(0xf6);
+ db(0x4e); db(0x90); db(0x22); db(0x04); db(0x67); db(0x04); db(0x4e); db(0xae);
+ db(0xff); db(0xdc); db(0x4c); db(0xdf); db(0x7c); db(0x1c); db(0x4e); db(0x75);
+ db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa); db(0x03); db(0x6c);
  db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae); db(0xff); db(0xac);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0xa4); db(0x22); db(0x00);
- db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14);
- db(0x61); db(0x00); db(0xf8); db(0x32); db(0x72); db(0x00); db(0x32); db(0x3c);
- db(0x00); db(0x34); db(0x61); db(0x00); db(0xf8); db(0x76); db(0x28); db(0x40);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0x84); db(0x70); db(0x00);
- db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2);
- db(0x72); db(0x00); db(0x20); db(0x2d); db(0x00); db(0x0c); db(0x41); db(0xfa);
- db(0x02); db(0x83); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44);
- db(0x4a); db(0x80); db(0x66); db(0xe2); db(0x20); db(0x6c); db(0x00); db(0x14);
- db(0x0c); db(0x68); db(0x00); db(0x25); db(0x00); db(0x14); db(0x64); db(0x0c);
- db(0x61); db(0x00); db(0xfe); db(0x48); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x60); db(0xf8); db(0x61); db(0x00); db(0xfe); db(0xe6);
- db(0x41); db(0xed); db(0x00); db(0x1c); db(0x29); db(0x48); db(0x00); db(0x28);
- db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); db(0x39); db(0x7c);
- db(0x00); db(0x0c); db(0x00); db(0x1c); db(0x2b); db(0x4d); db(0x00); db(0x2c);
- db(0x41); db(0xfa); db(0x01); db(0x5c); db(0x2b); db(0x48); db(0x00); db(0x24);
- db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x0f); db(0x61); db(0x00); db(0xf7); db(0x9a);
- db(0x4e); db(0x90); db(0x4a); db(0xad); db(0x00); db(0x00); db(0x66); db(0x1c);
- db(0x70); db(0x00); db(0x74); db(0x00); db(0x14); db(0x2d); db(0x00); db(0x4c);
- db(0x05); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x05); db(0x00); db(0x67); db(0x06); db(0x61); db(0x00);
- db(0xfe); db(0x1e); db(0x60); db(0xe4); db(0x20); db(0x2d); db(0x00); db(0x00);
- db(0x67); db(0x00); db(0x00); db(0x72); db(0x72); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x2b); db(0x40); db(0x00); db(0x04); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x0c); db(0x61); db(0x00); db(0xf7); db(0x5a);
- db(0x4e); db(0x90); db(0x4a); db(0xad); db(0x00); db(0x04); db(0x67); db(0x3a);
- db(0x39); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x1c); db(0x42); db(0x2c);
- db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x20); db(0x29); db(0x6d);
- db(0x00); db(0x00); db(0x00); db(0x24); db(0x29); db(0x6d); db(0x00); db(0x04);
- db(0x00); db(0x28); db(0x42); db(0xac); db(0x00); db(0x2c); db(0x42); db(0xac);
- db(0x00); db(0x30); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x2b); db(0x6c); db(0x00); db(0x30); db(0x00); db(0x10); db(0x39); db(0x7c);
- db(0x00); db(0x04); db(0x00); db(0x1c); db(0x22); db(0x4c); db(0x4e); db(0xae);
- db(0xfe); db(0x38); db(0x20); db(0x2d); db(0x00); db(0x00); db(0x42); db(0xad);
- db(0x00); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x04); db(0x67); db(0x00);
- db(0xff); db(0x78); db(0x22); db(0x41); db(0x4e); db(0xae); db(0xff); db(0x2e);
- db(0x60); db(0x00); db(0xff); db(0x6e); db(0x39); db(0x7c); db(0x00); db(0x02);
- db(0x00); db(0x1c); db(0x41); db(0xed); db(0x00); db(0x30); db(0x42); db(0x90);
- db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0x2c); db(0x00); db(0x1f);
- db(0x42); db(0xac); db(0x00); db(0x2c); db(0x42); db(0xac); db(0x00); db(0x30);
- db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x08); db(0x29); db(0x40);
- db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x0c); db(0xad); db(0x46); db(0x4f); db(0x52); db(0x4d); db(0x00); db(0x30);
- db(0x66); db(0x52); db(0x20); db(0x2d); db(0x00); db(0x34); db(0x67); db(0x4c);
- db(0x6b); db(0x4a); db(0x2b); db(0x6c); db(0x00); db(0x30); db(0x00); db(0x10);
- db(0x50); db(0x80); db(0x24); db(0x00); db(0x72); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x36); db(0x24); db(0x40);
- db(0x20); db(0x4a); db(0x20); db(0xed); db(0x00); db(0x30); db(0x20); db(0xed);
- db(0x00); db(0x34); db(0x29); db(0x48); db(0x00); db(0x28); db(0x20); db(0x02);
- db(0x51); db(0x80); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x0b); db(0x61); db(0x00); db(0xf6); db(0x84); db(0x20); db(0x2c);
- db(0x00); db(0x20); db(0x4e); db(0x90); db(0x22); db(0x4a); db(0x20); db(0x02);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4a); db(0xac); db(0x00); db(0x20);
- db(0x67); db(0x00); db(0xfe); db(0xde); db(0x41); db(0xed); db(0x00); db(0x30);
+ db(0x22); db(0x00); db(0x67); db(0x34); db(0x4e); db(0xae); db(0xff); db(0xa6);
+ db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x45); db(0xed); db(0x00); db(0x38);
+ db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x15); db(0x40);
+ db(0x00); db(0x14); db(0x41); db(0xfa); db(0x03); db(0x5c); db(0x24); db(0x88);
+ db(0x25); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x12); db(0x00); db(0x0c);
+ db(0x25); db(0x6d); db(0x00); db(0x08); db(0x00); db(0x10); db(0x2c); db(0x6d);
+ db(0x00); db(0x18); db(0x22); db(0x0a); db(0x4e); db(0xae); db(0xfc); db(0x88);
+ db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x4e); db(0x75); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0d); db(0x61); db(0x00);
+ db(0xf8); db(0x84); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0xfe); db(0xfc); db(0x2a); db(0x40); db(0x2c); db(0x6d); db(0x00); db(0x14);
+ db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x2b); db(0x40);
+ db(0x00); db(0x08); db(0x43); db(0xfa); db(0x03); db(0x88); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2b); db(0x40); db(0x00); db(0x18);
+ db(0x67); db(0x00); db(0xfe); db(0xda); db(0x2c); db(0x40); db(0x72); db(0x32);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x02); db(0xc0);
+ db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae); db(0xff); db(0xac);
+ db(0x4a); db(0x80); db(0x67); db(0xea); db(0x22); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0xa6); db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x41); db(0xfa); db(0x02); db(0xaa); db(0x22); db(0x08); db(0x74); db(0xfe);
+ db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0xfe); db(0xa4); db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6);
+ db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x61); db(0x00); db(0xf8); db(0x32);
+ db(0x72); db(0x00); db(0x32); db(0x3c); db(0x00); db(0x34); db(0x61); db(0x00);
+ db(0xf8); db(0x76); db(0x28); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0xfe); db(0x84); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
+ db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x72); db(0x00); db(0x20); db(0x2d);
+ db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x02); db(0x83); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x4a); db(0x80); db(0x66); db(0xe2);
+ db(0x20); db(0x6c); db(0x00); db(0x14); db(0x0c); db(0x68); db(0x00); db(0x25);
+ db(0x00); db(0x14); db(0x64); db(0x0c); db(0x61); db(0x00); db(0xfe); db(0x48);
+ db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x60); db(0xf8);
+ db(0x61); db(0x00); db(0xfe); db(0xe6); db(0x41); db(0xed); db(0x00); db(0x1c);
  db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); db(0x29); db(0x40);
- db(0x00); db(0x24); db(0x42); db(0xac); db(0x00); db(0x20); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x60); db(0xde); db(0x41); db(0xe8);
- db(0xff); db(0xe4); db(0x20); db(0x29); db(0x00); db(0x08); db(0xb0); db(0xa8);
- db(0x00); db(0x10); db(0x67); db(0x1a); db(0x21); db(0x40); db(0x00); db(0x10);
- db(0x2f); db(0x0e); db(0x2c); db(0x68); db(0x00); db(0x14); db(0x22); db(0x68);
- db(0x00); db(0x08); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
- db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x2c); db(0x5f); db(0x70); db(0x00);
- db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x74); db(0xff);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x64); db(0x61); db(0x00);
- db(0xf6); db(0x18); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x38);
- db(0x74); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee);
- db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x00); db(0x62); db(0x4e); db(0xae);
- db(0xfe); db(0xec); db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x20); db(0x40);
- db(0x43); db(0xfa); db(0x00); db(0x22); db(0x24); db(0x68); db(0xff); db(0xe4);
- db(0x21); db(0x49); db(0xff); db(0xe4); db(0x22); db(0x48); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x65); db(0x61); db(0x00); db(0xf5); db(0xe2);
- db(0x4e); db(0x90); db(0x74); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x76);
- db(0x20); db(0x02); db(0x4e); db(0x75); db(0x59); db(0x8f); db(0x48); db(0xe7);
- db(0xc0); db(0x80); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x66);
- db(0x61); db(0x00); db(0xf5); db(0xc6); db(0x4e); db(0x90); db(0x4c); db(0xdf);
- db(0x01); db(0x03); db(0x4e); db(0x75); db(0x69); db(0x6e); db(0x70); db(0x75);
- db(0x74); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65);
- db(0x00); db(0x74); db(0x69); db(0x6d); db(0x65); db(0x72); db(0x2e); db(0x64);
- db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x63); db(0x6f);
- db(0x6e); db(0x73); db(0x6f); db(0x6c); db(0x65); db(0x2e); db(0x64); db(0x65);
- db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x44); db(0x45); db(0x56);
- db(0x53); db(0x00); db(0x44); db(0x45); db(0x56); db(0x53); db(0x3a); db(0x00);
- db(0x44); db(0x45); db(0x56); db(0x53); db(0x3a); db(0x63); db(0x6c); db(0x69);
- db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x2e); db(0x64);
- db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x52); db(0x41);
- db(0x4d); db(0x3a); db(0x00); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62);
- db(0x6f); db(0x61); db(0x72); db(0x64); db(0x2e); db(0x64); db(0x65); db(0x76);
- db(0x69); db(0x63); db(0x65); db(0x00); db(0x52); db(0x41); db(0x4d); db(0x3a);
- db(0x45); db(0x6e); db(0x76); db(0x2f); db(0x53); db(0x79); db(0x73); db(0x2f);
- db(0x50); db(0x6f); db(0x69); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x2e);
- db(0x70); db(0x72); db(0x65); db(0x66); db(0x73); db(0x00); db(0x55); db(0x41);
- db(0x45); db(0x20); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f);
- db(0x61); db(0x72); db(0x64); db(0x20); db(0x73); db(0x68); db(0x61); db(0x72);
- db(0x69); db(0x6e); db(0x67); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20);
- db(0x6d); db(0x6f); db(0x75); db(0x73); db(0x65); db(0x20); db(0x64); db(0x72);
- db(0x69); db(0x76); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); db(0x45);
- db(0x20); db(0x66); db(0x69); db(0x6c); db(0x65); db(0x73); db(0x79); db(0x73);
- db(0x74); db(0x65); db(0x6d); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20);
- db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d);
- db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x00); db(0x55);
- db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75);
- db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x20);
- db(0x70); db(0x72); db(0x6f); db(0x63); db(0x65); db(0x73); db(0x73); db(0x00);
- db(0x64); db(0x6f); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72);
- db(0x61); db(0x72); db(0x79); db(0x00); db(0x69); db(0x6e); db(0x74); db(0x75);
- db(0x69); db(0x74); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69);
- db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x67); db(0x72);
- db(0x61); db(0x70); db(0x68); db(0x69); db(0x63); db(0x73); db(0x2e); db(0x6c);
- db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x65);
- db(0x78); db(0x70); db(0x61); db(0x6e); db(0x73); db(0x69); db(0x6f); db(0x6e);
- db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79);
- db(0x00); db(0x46); db(0x69); db(0x6c); db(0x65); db(0x53); db(0x79); db(0x73);
- db(0x74); db(0x65); db(0x6d); db(0x2e); db(0x72); db(0x65); db(0x73); db(0x6f);
- db(0x75); db(0x72); db(0x63); db(0x65); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x00); db(0x24); db(0x39); db(0x7c); db(0x00); db(0x0c); db(0x00); db(0x1c);
+ db(0x2b); db(0x4d); db(0x00); db(0x2c); db(0x41); db(0xfa); db(0x01); db(0x5c);
+ db(0x2b); db(0x48); db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae);
+ db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0f);
+ db(0x61); db(0x00); db(0xf7); db(0x9a); db(0x4e); db(0x90); db(0x4a); db(0xad);
+ db(0x00); db(0x00); db(0x66); db(0x1c); db(0x70); db(0x00); db(0x74); db(0x00);
+ db(0x14); db(0x2d); db(0x00); db(0x4c); db(0x05); db(0xc0); db(0x08); db(0xc0);
+ db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x05); db(0x00);
+ db(0x67); db(0x06); db(0x61); db(0x00); db(0xfe); db(0x1e); db(0x60); db(0xe4);
+ db(0x20); db(0x2d); db(0x00); db(0x00); db(0x67); db(0x00); db(0x00); db(0x72);
+ db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2b); db(0x40);
+ db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0c);
+ db(0x61); db(0x00); db(0xf7); db(0x5a); db(0x4e); db(0x90); db(0x4a); db(0xad);
+ db(0x00); db(0x04); db(0x67); db(0x3a); db(0x39); db(0x7c); db(0x00); db(0x03);
+ db(0x00); db(0x1c); db(0x42); db(0x2c); db(0x00); db(0x1f); db(0x42); db(0xac);
+ db(0x00); db(0x20); db(0x29); db(0x6d); db(0x00); db(0x00); db(0x00); db(0x24);
+ db(0x29); db(0x6d); db(0x00); db(0x04); db(0x00); db(0x28); db(0x42); db(0xac);
+ db(0x00); db(0x2c); db(0x42); db(0xac); db(0x00); db(0x30); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x2b); db(0x6c); db(0x00); db(0x30);
+ db(0x00); db(0x10); db(0x39); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x1c);
+ db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x20); db(0x2d);
+ db(0x00); db(0x00); db(0x42); db(0xad); db(0x00); db(0x00); db(0x22); db(0x2d);
+ db(0x00); db(0x04); db(0x67); db(0x00); db(0xff); db(0x78); db(0x22); db(0x41);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x6e);
+ db(0x39); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x1c); db(0x41); db(0xed);
+ db(0x00); db(0x30); db(0x42); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04);
+ db(0x42); db(0x2c); db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x2c);
+ db(0x42); db(0xac); db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28);
+ db(0x70); db(0x08); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x0c); db(0xad); db(0x46); db(0x4f);
+ db(0x52); db(0x4d); db(0x00); db(0x30); db(0x66); db(0x52); db(0x20); db(0x2d);
+ db(0x00); db(0x34); db(0x67); db(0x4c); db(0x6b); db(0x4a); db(0x2b); db(0x6c);
+ db(0x00); db(0x30); db(0x00); db(0x10); db(0x50); db(0x80); db(0x24); db(0x00);
+ db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
+ db(0x67); db(0x36); db(0x24); db(0x40); db(0x20); db(0x4a); db(0x20); db(0xed);
+ db(0x00); db(0x30); db(0x20); db(0xed); db(0x00); db(0x34); db(0x29); db(0x48);
+ db(0x00); db(0x28); db(0x20); db(0x02); db(0x51); db(0x80); db(0x29); db(0x40);
+ db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0b); db(0x61); db(0x00);
+ db(0xf6); db(0x84); db(0x20); db(0x2c); db(0x00); db(0x20); db(0x4e); db(0x90);
+ db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x4a); db(0xac); db(0x00); db(0x20); db(0x67); db(0x00); db(0xfe); db(0xde);
+ db(0x41); db(0xed); db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28);
+ db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); db(0x42); db(0xac);
+ db(0x00); db(0x20); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x60); db(0xde); db(0x41); db(0xe8); db(0xff); db(0xe4); db(0x20); db(0x29);
+ db(0x00); db(0x08); db(0xb0); db(0xa8); db(0x00); db(0x10); db(0x67); db(0x1a);
+ db(0x21); db(0x40); db(0x00); db(0x10); db(0x2f); db(0x0e); db(0x2c); db(0x68);
+ db(0x00); db(0x14); db(0x22); db(0x68); db(0x00); db(0x08); db(0x70); db(0x00);
+ db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xbc);
+ db(0x2c); db(0x5f); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x74); db(0xff); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x64); db(0x61); db(0x00); db(0xf6); db(0x18); db(0x4e); db(0x90);
+ db(0x4a); db(0x80); db(0x67); db(0x38); db(0x74); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa);
+ db(0x00); db(0x62); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x4a); db(0x80);
+ db(0x67); db(0x1e); db(0x20); db(0x40); db(0x43); db(0xfa); db(0x00); db(0x22);
+ db(0x24); db(0x68); db(0xff); db(0xe4); db(0x21); db(0x49); db(0xff); db(0xe4);
+ db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x65);
+ db(0x61); db(0x00); db(0xf5); db(0xe2); db(0x4e); db(0x90); db(0x74); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x76); db(0x20); db(0x02); db(0x4e); db(0x75);
+ db(0x59); db(0x8f); db(0x48); db(0xe7); db(0xc0); db(0x80); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x72); db(0x66); db(0x61); db(0x00); db(0xf5); db(0xc6);
+ db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x01); db(0x03); db(0x4e); db(0x75);
+ db(0x69); db(0x6e); db(0x70); db(0x75); db(0x74); db(0x2e); db(0x64); db(0x65);
+ db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x74); db(0x69); db(0x6d);
+ db(0x65); db(0x72); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63);
+ db(0x65); db(0x00); db(0x63); db(0x6f); db(0x6e); db(0x73); db(0x6f); db(0x6c);
+ db(0x65); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65);
+ db(0x00); db(0x44); db(0x45); db(0x56); db(0x53); db(0x00); db(0x44); db(0x45);
+ db(0x56); db(0x53); db(0x3a); db(0x00); db(0x44); db(0x45); db(0x56); db(0x53);
+ db(0x3a); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61);
+ db(0x72); db(0x64); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63);
+ db(0x65); db(0x00); db(0x52); db(0x41); db(0x4d); db(0x3a); db(0x00); db(0x63);
+ db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64);
+ db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00);
+ db(0x52); db(0x41); db(0x4d); db(0x3a); db(0x45); db(0x6e); db(0x76); db(0x2f);
+ db(0x53); db(0x79); db(0x73); db(0x2f); db(0x50); db(0x6f); db(0x69); db(0x6e);
+ db(0x74); db(0x65); db(0x72); db(0x2e); db(0x70); db(0x72); db(0x65); db(0x66);
+ db(0x73); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x63); db(0x6c);
+ db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x20);
+ db(0x73); db(0x68); db(0x61); db(0x72); db(0x69); db(0x6e); db(0x67); db(0x00);
+ db(0x55); db(0x41); db(0x45); db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73);
+ db(0x65); db(0x20); db(0x64); db(0x72); db(0x69); db(0x76); db(0x65); db(0x72);
+ db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x69); db(0x6c);
+ db(0x65); db(0x73); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); db(0x00);
+ db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61);
+ db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74);
+ db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66);
+ db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f);
+ db(0x75); db(0x6e); db(0x74); db(0x20); db(0x70); db(0x72); db(0x6f); db(0x63);
+ db(0x65); db(0x73); db(0x73); db(0x00); db(0x64); db(0x6f); db(0x73); db(0x2e);
+ db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00);
+ db(0x69); db(0x6e); db(0x74); db(0x75); db(0x69); db(0x74); db(0x69); db(0x6f);
+ db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72);
+ db(0x79); db(0x00); db(0x67); db(0x72); db(0x61); db(0x70); db(0x68); db(0x69);
+ db(0x63); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61);
+ db(0x72); db(0x79); db(0x00); db(0x65); db(0x78); db(0x70); db(0x61); db(0x6e);
+ db(0x73); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62);
+ db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x46); db(0x69); db(0x6c);
+ db(0x65); db(0x53); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); db(0x2e);
+ db(0x72); db(0x65); db(0x73); db(0x6f); db(0x75); db(0x72); db(0x63); db(0x65);
+ db(0x00); db(0x7a); db(0x33); db(0x63); db(0x68); db(0x69); db(0x70); db(0x20);
+ db(0x6d); db(0x65); db(0x6d); db(0x6f); db(0x72); db(0x79); db(0x00); db(0x00);
  db(0x00); db(0x00); db(0x03); db(0xf2);
 
index 33a1b7db626264a1da50db88d568a3b0482acf6a..5ba6dc6315e340f1c5237e71dbd1d3e43ad3b053 100644 (file)
@@ -97,15 +97,15 @@ static void generate_func(void)
        printf("uaecptr dstp = 0;\n");
        printf("for (j = 0; j < b->vblitsize; j++) {\n");
        printf("\tfor (i = 0; i < b->hblitsize; i++) {\n\t\tuae_u32 bltadat, srca;\n\n");
-       if (c_is_on) printf("\t\tif (ptc) { srcc = chipmem_agnus_wget (ptc); ptc += 2; }\n");
-       if (b_is_on) printf("\t\tif (ptb) {\n\t\t\tuae_u32 bltbdat = blt_info.bltbdat = chipmem_agnus_wget (ptb); ptb += 2;\n");
+       if (c_is_on) printf("\t\tif (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }\n");
+       if (b_is_on) printf("\t\tif (ptb) {\n\t\t\tuae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;\n");
        if (b_is_on) printf("\t\t\tsrcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;\n");
        if (b_is_on) printf("\t\t\tprevb = bltbdat;\n\t\t}\n");
-       if (a_is_on) printf("\t\tif (pta) { bltadat = blt_info.bltadat = chipmem_agnus_wget (pta); pta += 2; } else { bltadat = blt_info.bltadat; }\n");
+       if (a_is_on) printf("\t\tif (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }\n");
        if (a_is_on) printf("\t\tbltadat &= blit_masktable[i];\n");
        if (a_is_on) printf("\t\tsrca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;\n");
        if (a_is_on) printf("\t\tpreva = bltadat;\n");
-       printf("\t\tif (dstp) chipmem_agnus_wput (dstp, dstd);\n");
+       printf("\t\tif (dstp) chipmem_wput_indirect (dstp, dstd);\n");
        printf("\t\tdstd = (%s) & 0xFFFF;\n", blitops[blttbl[i]].s);
        printf("\t\ttotald |= dstd;\n");
        printf("\t\tif (ptd) { dstp = ptd; ptd += 2; }\n");
@@ -117,7 +117,7 @@ static void generate_func(void)
        printf("}\n");
        if (b_is_on) printf("b->bltbhold = srcb;\n");
        if (c_is_on) printf("b->bltcdat = srcc;\n");
-       printf("\t\tif (dstp) chipmem_agnus_wput (dstp, dstd);\n");
+       printf("\t\tif (dstp) chipmem_wput_indirect (dstp, dstd);\n");
 #if 0
        printf("}\n");
 #endif
@@ -174,15 +174,15 @@ static void generate_func(void)
        printf("uaecptr dstp = 0;\n");
        printf("for (j = 0; j < b->vblitsize; j++) {\n");
        printf("\tfor (i = 0; i < b->hblitsize; i++) {\n\t\tuae_u32 bltadat, srca;\n");
-       if (c_is_on) printf("\t\tif (ptc) { srcc = chipmem_agnus_wget (ptc); ptc -= 2; }\n");
-       if (b_is_on) printf("\t\tif (ptb) {\n\t\t\tuae_u32 bltbdat = blt_info.bltbdat = chipmem_agnus_wget (ptb); ptb -= 2;\n");
+       if (c_is_on) printf("\t\tif (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }\n");
+       if (b_is_on) printf("\t\tif (ptb) {\n\t\t\tuae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;\n");
        if (b_is_on) printf("\t\t\tsrcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;\n");
        if (b_is_on) printf("\t\t\tprevb = bltbdat;\n\t\t}\n");
-       if (a_is_on) printf("\t\tif (pta) { bltadat = blt_info.bltadat = chipmem_agnus_wget (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }\n");
+       if (a_is_on) printf("\t\tif (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }\n");
        if (a_is_on) printf("\t\tbltadat &= blit_masktable[i];\n");
        if (a_is_on) printf("\t\tsrca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;\n");
        if (a_is_on) printf("\t\tpreva = bltadat;\n");
-       printf("\t\tif (dstp) chipmem_agnus_wput (dstp, dstd);\n");
+       printf("\t\tif (dstp) chipmem_wput_indirect (dstp, dstd);\n");
        printf("\t\tdstd = (%s) & 0xFFFF;\n", blitops[blttbl[i]].s);
        printf("\t\ttotald |= dstd;\n");
        printf("\t\tif (ptd) { dstp = ptd; ptd -= 2; }\n");
@@ -194,7 +194,7 @@ static void generate_func(void)
        printf("}\n");
        if (b_is_on) printf("b->bltbhold = srcb;\n");
        if (c_is_on) printf("b->bltcdat = srcc;\n");
-       printf("\t\tif (dstp) chipmem_agnus_wput (dstp, dstd);\n");
+       printf("\t\tif (dstp) chipmem_wput_indirect (dstp, dstd);\n");
 #if 0
        printf("}\n");
 #endif
index cdd898e117ea640576635fecc737647aa14f0760..b033c6823ccad8612bdd64f8f0bfdbf5c98e229f 100644 (file)
@@ -43,7 +43,8 @@ extern uae_u32 allocated_chipmem;
 extern uae_u32 allocated_fastmem;
 extern uae_u32 allocated_bogomem;
 extern uae_u32 allocated_gfxmem;
-extern uae_u32 allocated_z3fastmem, allocated_z3fastmem2, max_z3fastmem;
+extern uae_u32 allocated_z3fastmem, allocated_z3fastmem2, allocated_z3chipmem;
+extern uae_u32 max_z3fastmem;
 extern uae_u32 allocated_a3000mem;
 extern uae_u32 allocated_cardmem;
 
@@ -59,7 +60,7 @@ extern void wait_cpu_cycle_write_ce020 (uaecptr addr, int mode, uae_u32 v);
 #define bogomem_start 0x00C00000
 #define cardmem_start 0x00E00000
 #define kickmem_start 0x00F80000
-extern uaecptr z3fastmem_start, z3fastmem2_start;
+extern uaecptr z3fastmem_start, z3fastmem2_start, z3chipmem_start;
 extern uaecptr p96ram_start;
 extern uaecptr fastmem_start;
 extern uaecptr a3000lmem_start, a3000hmem_start;
@@ -325,6 +326,15 @@ extern void REGPARAM3 chipmem_lput_ce2 (uaecptr, uae_u32) REGPARAM;
 extern void REGPARAM3 chipmem_wput_ce2 (uaecptr, uae_u32) REGPARAM;
 extern void REGPARAM3 chipmem_bput_c2 (uaecptr, uae_u32) REGPARAM;
 
+extern uae_u32 (REGPARAM3 *chipmem_lget_indirect)(uaecptr) REGPARAM;
+extern uae_u32 (REGPARAM3 *chipmem_wget_indirect)(uaecptr) REGPARAM;
+extern uae_u32 (REGPARAM3 *chipmem_bget_indirect)(uaecptr) REGPARAM;
+extern void (REGPARAM3 *chipmem_lput_indirect)(uaecptr, uae_u32) REGPARAM;
+extern void (REGPARAM3 *chipmem_wput_indirect)(uaecptr, uae_u32) REGPARAM;
+extern void (REGPARAM3 *chipmem_bput_indirect)(uaecptr, uae_u32) REGPARAM;
+extern int (REGPARAM2 *chipmem_check_indirect)(uaecptr, uae_u32);
+extern uae_u8 *(REGPARAM2 *chipmem_xlate_indirect)(uaecptr);
+
 #ifdef NATMEM_OFFSET
 
 typedef struct shmpiece_reg {
index 9d801a0df0710761f809e8aa4082226f5a75afa8..b82e6147cc93c70a4423804e611557e7db1e9a26 100644 (file)
@@ -296,6 +296,8 @@ struct uae_prefs {
 
        uae_u32 z3fastmem_size, z3fastmem2_size;
        uae_u32 z3fastmem_start;
+       uae_u32 z3chipmem_size;
+       uae_u32 z3chipmem_start;
        uae_u32 fastmem_size;
        uae_u32 chipmem_size;
        uae_u32 bogomem_size;
index ac9d3dfe3efc1146c23170c2fb4e8045a7f81b2d..b3d6d309e7cba098295b9eb26ef4aedc655f8c1d 100644 (file)
@@ -112,6 +112,9 @@ extern uae_u8 *restore_configuration (uae_u8 *src);
 extern uae_u8 *save_log (int, int *len);
 extern uae_u8 *restore_log (uae_u8 *src);
 
+extern uae_u8 *restore_input (uae_u8 *src);
+extern uae_u8 *save_input (int *len, uae_u8 *dstptr);
+
 extern void restore_cram (int, size_t);
 extern void restore_bram (int, size_t);
 extern void restore_fram (int, size_t);
index 6a7d9b964c682b3d4295363ec72272b21482f86e..4ad381cd95321f0640e0a63634ae9735af5174e5 100644 (file)
@@ -115,6 +115,9 @@ static struct uae_input_device2 joysticks2[MAX_INPUT_DEVICES];
 static struct uae_input_device2 mice2[MAX_INPUT_DEVICES];
 static uae_u8 scancodeused[MAX_INPUT_DEVICES][256];
 
+static int mouse_pullup = 1;
+static int joystick_pullup = 1;
+
 static int input_acquired;
 static int testmode, testmode_read, testmode_toggle;
 struct teststore
@@ -443,6 +446,33 @@ struct input_queue_struct {
 };
 static struct input_queue_struct input_queue[INPUT_QUEUE_SIZE];
 
+uae_u8 *restore_input (uae_u8 *src)
+{
+       restore_u32 ();
+       for (int i = 0; i < 2; i++) {
+               for (int j = 0; j < 2; j++) {
+                       pot_cap[i][j] = restore_u16 ();
+               }
+       }
+       return src;
+}
+uae_u8 *save_input (int *len, uae_u8 *dstptr)
+{
+       uae_u8 *dstbak, *dst;
+
+       if (dstptr)
+               dstbak = dst = dstptr;
+       else
+               dstbak = dst = xmalloc (uae_u8, 1000);
+       save_u32 (0);
+       for (int i = 0; i < 2; i++) {
+               for (int j = 0; j < 2; j++) {
+                       save_u16 (pot_cap[i][j]);
+               }
+       }
+       *len = dst - dstbak;
+       return dstbak;
+}
 
 static void freejport (struct uae_prefs *dst, int num)
 {
@@ -894,6 +924,8 @@ void read_inputdevice_config (struct uae_prefs *pr, TCHAR *option, TCHAR *value)
                        if (joystick < 0)
                                set_kbr_default (pr, idnum, devnum);
                        id->enabled = iscustom;
+               } else {
+                       id->enabled = false;
                }
                return;
        }
@@ -1980,7 +2012,7 @@ static void cap_check (void)
                                joypot = joydirpot[joy][i];
                                if (analog_port[joy][i] && pot_cap[joy][i] < joypot)
                                        charge = 1; // slow charge via pot variable resistor
-                               if ((digital_port[joy][i] || mouse_port[joy]))
+                               if (((joystick_pullup && digital_port[joy][i]) || (mouse_pullup && mouse_port[joy])))
                                        charge = 1; // slow charge via pull-up resistor
                        }
                        if (!(potgo_value & pdir)) { // input?
@@ -2024,13 +2056,13 @@ static void cap_check (void)
                        }
                        /* official Commodore mouse has pull-up resistors in button lines
                        * NOTE: 3rd party mice may not have pullups! */
-                       if (dong < 0 && mouse_port[joy] && charge == 0)
+                       if (dong < 0 && (mouse_pullup && mouse_port[joy]) && charge == 0)
                                charge = 2;
                        /* emulate pullup resistor if button mapped because there too many broken
                        * programs that read second button in input-mode (and most 2+ button pads have
                        * pullups)
                        */
-                       if (dong < 0 && digital_port[joy][i] && charge == 0)
+                       if (dong < 0 && (joystick_pullup && digital_port[joy][i]) && charge == 0)
                                charge = 2;
 
                        charge_cap (joy, i, charge);
index c14e1f9d3b93e666ba5400cdee65447130738ae3..6614fb1b297c48fc3c94a81687f617c70e30c787 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -209,6 +209,16 @@ void fixup_prefs (struct uae_prefs *p)
        p->z3fastmem_start &= ~0xffff;
        if (p->z3fastmem_start < 0x1000000)
                p->z3fastmem_start = 0x1000000;
+       if ((p->z3chipmem_size & (p->z3chipmem_size - 1)) != 0
+               || (p->z3chipmem_size != 0 && (p->z3chipmem_size < 0x100000 || p->z3chipmem_size > max_z3fastmem)))
+       {
+               write_log (L"Unsupported Zorro III fake chipmem size %x (%x)!\n", p->z3chipmem_size, max_z3fastmem);
+               if (p->z3chipmem_size > max_z3fastmem)
+                       p->z3chipmem_size = max_z3fastmem;
+               else
+                       p->z3chipmem_size = 0;
+               err = 1;
+       }
 
        if (p->address_space_24 && (p->gfxmem_size != 0 || p->z3fastmem_size != 0)) {
                p->z3fastmem_size = p->gfxmem_size = 0;
index 7c99dad0b8759d6ee269797186ce7ced28226b04..27e5a662570fb0f4f8c051d324ff1b91ea7d31dc 100644 (file)
@@ -61,7 +61,7 @@ uae_u32 allocated_chipmem;
 uae_u32 allocated_fastmem;
 uae_u32 allocated_bogomem;
 uae_u32 allocated_gfxmem;
-uae_u32 allocated_z3fastmem, allocated_z3fastmem2;
+uae_u32 allocated_z3fastmem, allocated_z3fastmem2, allocated_z3chipmem;
 uae_u32 allocated_a3000lmem;
 uae_u32 allocated_a3000hmem;
 uae_u32 allocated_cardmem;
@@ -558,6 +558,71 @@ static uae_u8 *REGPARAM2 chipmem_xlate (uaecptr addr)
        return chipmemory + addr;
 }
 
+STATIC_INLINE void REGPARAM2 chipmem_lput_bigmem (uaecptr addr, uae_u32 v)
+{
+       put_long (addr, v);
+}
+STATIC_INLINE void REGPARAM2 chipmem_wput_bigmem (uaecptr addr, uae_u32 v)
+{
+       put_word (addr, v);
+}
+STATIC_INLINE void REGPARAM2 chipmem_bput_bigmem (uaecptr addr, uae_u32 v)
+{
+       put_byte (addr, v);
+}
+STATIC_INLINE uae_u32 REGPARAM2 chipmem_lget_bigmem (uaecptr addr)
+{
+       return get_long (addr);
+}
+STATIC_INLINE uae_u32 REGPARAM2 chipmem_wget_bigmem (uaecptr addr)
+{
+       return get_word (addr);
+}
+STATIC_INLINE uae_u32 REGPARAM2 chipmem_bget_bigmem (uaecptr addr)
+{
+       return get_byte (addr);
+}
+STATIC_INLINE int REGPARAM2 chipmem_check_bigmem (uaecptr addr, uae_u32 size)
+{
+       return valid_address (addr, size);
+}
+STATIC_INLINE uae_u8* REGPARAM2 chipmem_xlate_bigmem (uaecptr addr)
+{
+       return get_real_address (addr);
+}
+
+uae_u32 (REGPARAM2 *chipmem_lget_indirect)(uaecptr);
+uae_u32 (REGPARAM2 *chipmem_wget_indirect)(uaecptr);
+uae_u32 (REGPARAM2 *chipmem_bget_indirect)(uaecptr);
+void (REGPARAM2 *chipmem_lput_indirect)(uaecptr, uae_u32);
+void (REGPARAM2 *chipmem_wput_indirect)(uaecptr, uae_u32);
+void (REGPARAM2 *chipmem_bput_indirect)(uaecptr, uae_u32);
+int (REGPARAM2 *chipmem_check_indirect)(uaecptr, uae_u32);
+uae_u8 *(REGPARAM2 *chipmem_xlate_indirect)(uaecptr);
+
+static void chipmem_setindirect (void)
+{
+       if (currprefs.z3chipmem_size) {
+               chipmem_lget_indirect = chipmem_lget_bigmem;
+               chipmem_wget_indirect = chipmem_wget_bigmem;
+               chipmem_bget_indirect = chipmem_bget_bigmem;
+               chipmem_lput_indirect = chipmem_lput_bigmem;
+               chipmem_wput_indirect = chipmem_wput_bigmem;
+               chipmem_bput_indirect = chipmem_bput_bigmem;
+               chipmem_check_indirect = chipmem_check_bigmem;
+               chipmem_xlate_indirect = chipmem_xlate_bigmem;
+       } else {
+               chipmem_lget_indirect = chipmem_lget;
+               chipmem_wget_indirect = chipmem_agnus_wget;
+               chipmem_bget_indirect = chipmem_agnus_bget;
+               chipmem_lput_indirect = chipmem_lput;
+               chipmem_wput_indirect = chipmem_agnus_wput;
+               chipmem_bput_indirect = chipmem_agnus_bput;
+               chipmem_check_indirect = chipmem_check;
+               chipmem_xlate_indirect = chipmem_xlate;
+       }
+}
+
 /* Slow memory */
 
 static uae_u8 *bogomemory;
@@ -2291,6 +2356,7 @@ void memory_reset (void)
 
        init_mem_banks ();
        allocate_memory ();
+       chipmem_setindirect ();
 
        if (_tcscmp (currprefs.romfile, changed_prefs.romfile) != 0
                || _tcscmp (currprefs.romextfile, changed_prefs.romextfile) != 0)
index d0e70312c42a7eab93772b112f1e63da1e074f02..fa7b6cf71f6abf4cbaeb1ebe8aa0cd43de12e1bc 100644 (file)
@@ -3310,7 +3310,8 @@ void m68k_go (int may_quit)
                        regs.spcflags |= of & (SPCFLAG_BRK | SPCFLAG_MODE_CHANGE);
                }
 #endif
-               if (mmu_enabled && !currprefs.cachesize) {
+       set_x_funcs ();
+       if (mmu_enabled && !currprefs.cachesize) {
                        run_func = m68k_run_mmu;
                } else {
                        run_func = currprefs.cpu_cycle_exact && currprefs.cpu_model == 68000 ? m68k_run_1_ce :
index 4f8820a9df6023bfe5d37a0cdd988efc5f700f2e..4b44db241717a9dec808c959393ff6a29650229f 100644 (file)
@@ -5,16 +5,19 @@
 #define CAPS_FILEPFX ".ipf"
 
 // Flags provided for locking, in order:
-// 0: re-align data as index synced recording
-// 1: decode track to word aligned size
-// 2: generate cell density for variable density tracks
-// 3: generate density for automatically sized cells
-// 4: generate density for unformatted cells
-// 5: generate unformatted data
-// 6: generate unformatted data, that changes each revolution
-// 7: directly use source memory buffer supplied with LockImageMemory
-// 8: flakey data is created on one revolution, updated with each lock
-// 9: ...Info.type holds the expected structure type
+//  0: re-align data as index synced recording
+//  1: decode track to word aligned size
+//  2: generate cell density for variable density tracks
+//  3: generate density for automatically sized cells
+//  4: generate density for unformatted cells
+//  5: generate unformatted data
+//  6: generate unformatted data, that changes each revolution
+//  7: directly use source memory buffer supplied with LockImageMemory
+//  8: flakey data is created on one revolution, updated with each lock
+//  9: ...Info.type holds the expected structure type
+// 10: alternate density map as fractions
+// 11: overlap position is in bits
+// 12: tracklen is in bits, and the track buffer is bit sized
 #define DI_LOCK_INDEX    DF_0
 #define DI_LOCK_ALIGN    DF_1
 #define DI_LOCK_DENVAR   DF_2
@@ -25,6 +28,9 @@
 #define DI_LOCK_MEMREF   DF_7
 #define DI_LOCK_UPDATEFD DF_8
 #define DI_LOCK_TYPE     DF_9
+#define DI_LOCK_DENALT   DF_10
+#define DI_LOCK_OVLBIT   DF_11
+#define DI_LOCK_TRKBIT   DF_12
 
 #define CAPS_MAXPLATFORM 4
 #define CAPS_MTRS 5
@@ -80,7 +86,7 @@ struct CapsTrackInfo {
        UDWORD sectorcnt;  // available sectors
        UDWORD sectorsize; // sector size
        UDWORD trackcnt;   // track variant count
-       PUBYTE trackbuf;   // track buffer memory
+       PUBYTE trackbuf;   // track buffer memory 
        UDWORD tracklen;   // track buffer memory length
        PUBYTE trackdata[CAPS_MTRS]; // track data pointer if available
        UDWORD tracksize[CAPS_MTRS]; // track data size
@@ -97,11 +103,11 @@ struct CapsTrackInfoT1 {
        UDWORD head;       // head#
        UDWORD sectorcnt;  // available sectors
        UDWORD sectorsize; // sector size
-       PUBYTE trackbuf;   // track buffer memory
+       PUBYTE trackbuf;   // track buffer memory 
        UDWORD tracklen;   // track buffer memory length
        UDWORD timelen;    // timing buffer length
        PUDWORD timebuf;   // timing buffer
-       UDWORD overlap;    // overlap position
+       SDWORD overlap;    // overlap position
 };
 
 typedef struct CapsTrackInfoT1 *PCAPSTRACKINFOT1;
@@ -132,7 +138,7 @@ enum {
 
 // image error status
 enum {
-       imgeOk,
+       imgeOk=0,
        imgeUnsupported,
        imgeGeneric,
        imgeOutOfRange,
@@ -147,7 +153,11 @@ enum {
        imgeDensityStream,
        imgeDensityData,
        imgeIncompatible,
-       imgeUnsupportedType
+       imgeUnsupportedType,
+       imgeBadBlockType,
+       imgeBadBlockSize,
+       imgeBadDataStart,
+       imgeBufferShort
 };
 
 #endif
index 5a0efe6443070649740f69d81d9e89fd7b00befc..b8a458e050e0a5e5a2c6ecdb1e35655e8e4660f7 100644 (file)
@@ -16,8 +16,9 @@
 
 static SDWORD caps_cont[4]= {-1, -1, -1, -1};
 static int caps_locked[4];
-static int caps_flags = DI_LOCK_DENVAR|DI_LOCK_DENNOISE|DI_LOCK_NOISE|DI_LOCK_UPDATEFD|DI_LOCK_TYPE;
+static int caps_flags = DI_LOCK_DENVAR|DI_LOCK_DENNOISE|DI_LOCK_NOISE|DI_LOCK_UPDATEFD|DI_LOCK_TYPE|DI_LOCK_OVLBIT;
 static struct CapsVersionInfo cvi;
+static bool oldlib;
 #define LIB_TYPE 1
 
 typedef SDWORD (__cdecl* CAPSINIT)(void);
@@ -86,7 +87,10 @@ int caps_init (void)
        init = 1;
        cvi.type = LIB_TYPE;
        pCAPSGetVersionInfo (&cvi, 0);
-       write_log (L"CAPS: library version %d.%d\n", cvi.release, cvi.revision);
+       write_log (L"CAPS: library version %d.%d (flags=%08X)\n", cvi.release, cvi.revision, cvi.flag);
+       oldlib = (cvi.flag & (DI_LOCK_TRKBIT | DI_LOCK_OVLBIT)) != (DI_LOCK_TRKBIT | DI_LOCK_OVLBIT);
+       if (!oldlib)
+               caps_flags |= DI_LOCK_TRKBIT | DI_LOCK_OVLBIT;
        for (i = 0; i < 4; i++)
                caps_cont[i] = pCAPSAddImage ();
        return 1;
@@ -180,44 +184,55 @@ static void outdisk (void)
 }
 #endif
 
+static void mfmcopy (uae_u16 *mfm, uae_u8 *data, int len)
+{
+       int memlen = (len + 7) / 8;
+       for (int i = 0; i < memlen; i+=2) {
+               if (i + 1 < memlen)
+                       *mfm++ = (data[i] << 8) + data[i + 1];
+               else
+                       *mfm++ = (data[i] << 8);
+       }
+}
+
 int caps_loadrevolution (uae_u16 *mfmbuf, int drv, int track, int *tracklength)
 {
-       int len, i;
-       uae_u16 *mfm;
+       int len;
        struct CapsTrackInfoT1 ci;
 
        ci.type = LIB_TYPE;
-       pCAPSLockTrack ((PCAPSTRACKINFO)&ci, caps_cont[drv], track / 2, track & 1, caps_flags);
-       len = ci.tracklen;
-       *tracklength = len * 8;
-       mfm = mfmbuf;
-       for (i = 0; i < (len + 1) / 2; i++) {
-               uae_u8 *data = ci.trackbuf + i * 2;
-               *mfm++ = 256 * *data + *(data + 1);
-       }
+       if (pCAPSLockTrack ((PCAPSTRACKINFO)&ci, caps_cont[drv], track / 2, track & 1, caps_flags) != imgeOk)
+               return 0;
+       if (oldlib)
+               len = ci.tracklen * 8;
+       else
+               len = ci.tracklen;
+       *tracklength = len;
+       mfmcopy (mfmbuf, ci.trackbuf, len);
        return 1;
 }
 
 int caps_loadtrack (uae_u16 *mfmbuf, uae_u16 *tracktiming, int drv, int track, int *tracklength, int *multirev, int *gapoffset)
 {
-       int i, len, type, ret;
-       uae_u16 *mfm;
+       int len;
        struct CapsTrackInfoT1 ci;
 
        ci.type = LIB_TYPE;
        if (tracktiming)
                *tracktiming = 0;
-       ret = pCAPSLockTrack ((PCAPSTRACKINFO)&ci, caps_cont[drv], track / 2, track & 1, caps_flags);
-       mfm = mfmbuf;
+       if (pCAPSLockTrack ((PCAPSTRACKINFO)&ci, caps_cont[drv], track / 2, track & 1, caps_flags) != imgeOk)
+               return 0;
        *multirev = (ci.type & CTIT_FLAG_FLAKEY) ? 1 : 0;
-       type = ci.type & CTIT_MASK_TYPE;
-       len = ci.tracklen;
-       *tracklength = len * 8;
-       *gapoffset = ci.overlap >= 0 ? ci.overlap * 8 : -1;
-       for (i = 0; i < (len + 1) / 2; i++) {
-               uae_u8 *data = ci.trackbuf + i * 2;
-               *mfm++ = 256 * *data + *(data + 1);
+       if (oldlib) {
+               len = ci.tracklen * 8;
+               *gapoffset = ci.overlap >= 0 ? ci.overlap * 8 : -1;
+       } else {
+               len = ci.tracklen;
+               *gapoffset = ci.overlap >= 0 ? ci.overlap : -1;
        }
+       //write_log (L"%d %d %d %d\n", track, len, ci.tracklen, ci.overlap);
+       *tracklength = len;
+       mfmcopy (mfmbuf, ci.trackbuf, len);
 #if 0
        {
                FILE *f=fopen("c:\\1.txt","wb");
@@ -226,7 +241,7 @@ int caps_loadtrack (uae_u16 *mfmbuf, uae_u16 *tracktiming, int drv, int track, i
        }
 #endif
        if (ci.timelen > 0 && tracktiming) {
-               for (i = 0; i < ci.timelen; i++)
+               for (int i = 0; i < ci.timelen; i++)
                        tracktiming[i] = (uae_u16)ci.timebuf[i];
        }
 #if 0
index 925d51f21570775fc9c1ef87868eeb95c00366f8..5827edc615f4ef4547f9a66b72cdd200e7a8f57c 100644 (file)
Binary files a/od-win32/lib/prowizard_x64.lib and b/od-win32/lib/prowizard_x64.lib differ
index 15ba1f5095245985e818337f826df505f4897627..aa879cbef11cc7eb08ac929919dc9742e0a77b27 100644 (file)
@@ -61,25 +61,33 @@ static void setworkingset(void)
 static uae_u32 lowmem (void)
 {
        uae_u32 change = 0;
-       if (currprefs.z3fastmem_size + currprefs.z3fastmem2_size >= 8 * 1024 * 1024) {
+       if (currprefs.z3fastmem_size + currprefs.z3fastmem2_size + currprefs.z3chipmem_size >= 8 * 1024 * 1024) {
                if (currprefs.z3fastmem2_size) {
                        if (currprefs.z3fastmem2_size <= 128 * 1024 * 1024) {
                                change = currprefs.z3fastmem2_size;
                                currprefs.z3fastmem2_size = 0;
                        } else {
                                change = currprefs.z3fastmem2_size / 2;
-                               currprefs.z3fastmem2_size >>= 1;
+                               currprefs.z3fastmem2_size /= 2;
                                changed_prefs.z3fastmem2_size = currprefs.z3fastmem2_size;
                        }
+               } else if (currprefs.z3chipmem_size) {
+                       if (currprefs.z3chipmem_size <= 16 * 1024 * 1024) {
+                               change = currprefs.z3chipmem_size;
+                               currprefs.z3chipmem_size = 0;
+                       } else {
+                               change = currprefs.z3chipmem_size / 2;
+                               currprefs.z3chipmem_size /= 2;
+                       }
                } else {
                        change = currprefs.z3fastmem_size - currprefs.z3fastmem_size / 4;
                        currprefs.z3fastmem2_size = changed_prefs.z3fastmem2_size = currprefs.z3fastmem_size / 4;
-                       currprefs.z3fastmem_size >>= 1;
+                       currprefs.z3fastmem_size /= 2;
                        changed_prefs.z3fastmem_size = currprefs.z3fastmem_size;
                }
        } else if (currprefs.gfxmem_size >= 1 * 1024 * 1024) {
                change = currprefs.gfxmem_size - currprefs.gfxmem_size / 2;
-               currprefs.gfxmem_size >>= 1;
+               currprefs.gfxmem_size /= 2;
                changed_prefs.gfxmem_size = currprefs.gfxmem_size;
        }
        if (currprefs.z3fastmem2_size < 128 * 1024 * 1024)
@@ -187,7 +195,8 @@ static void resetmem (void)
 
 int init_shm (void)
 {
-       uae_u32 size, totalsize, z3size, natmemsize, rtgbarrier, rtgextra;
+       uae_u32 size, totalsize, z3size, natmemsize;
+       uae_u32 rtgbarrier, z3chipbarrier, rtgextra;
        int rounds = 0;
 
 restart:
@@ -206,13 +215,16 @@ restart:
                z3size = 0;
                size = 0x1000000;
                rtgextra = 0;
+               z3chipbarrier = 0;
                rtgbarrier = si.dwPageSize;
                if (currprefs.cpu_model >= 68020)
                        size = 0x10000000;
-               if (currprefs.z3fastmem_size || currprefs.z3fastmem2_size) {
-                       z3size = currprefs.z3fastmem_size + currprefs.z3fastmem2_size + (currprefs.z3fastmem_start - 0x10000000);
+               if (currprefs.z3fastmem_size || currprefs.z3fastmem2_size || currprefs.z3chipmem_size) {
+                       z3size = currprefs.z3fastmem_size + currprefs.z3fastmem2_size + currprefs.z3chipmem_size + (currprefs.z3fastmem_start - 0x10000000);
                        if (currprefs.gfxmem_size)
                                rtgbarrier = 16 * 1024 * 1024;
+                       if (currprefs.z3chipmem_size && (currprefs.z3fastmem_size || currprefs.z3fastmem2_size))
+                               z3chipbarrier = 16 * 1024 * 1024;
                } else {
                        rtgbarrier = 0;
                }
@@ -236,13 +248,13 @@ restart:
                        rtgbarrier = 0;
                        rtgextra = 0;
                }
-               blah = (uae_u8*)VirtualAlloc (NULL, natmemsize + rtgbarrier + currprefs.gfxmem_size + rtgextra + 16 * si.dwPageSize, MEM_RESERVE, PAGE_READWRITE);
+               blah = (uae_u8*)VirtualAlloc (NULL, natmemsize + rtgbarrier + z3chipbarrier + currprefs.gfxmem_size + rtgextra + 16 * si.dwPageSize, MEM_RESERVE, PAGE_READWRITE);
                if (blah) {
                        natmem_offset = blah;
                        break;
                }
                write_log (L"NATMEM: %dM area failed to allocate, err=%d (Z3=%dM,RTG=%dM)\n",
-                       natmemsize >> 20, GetLastError (), (currprefs.z3fastmem_size + currprefs.z3fastmem2_size) >> 20, currprefs.gfxmem_size >> 20);
+                       natmemsize >> 20, GetLastError (), (currprefs.z3fastmem_size + currprefs.z3fastmem2_size + currprefs.z3chipmem_size) >> 20, currprefs.gfxmem_size >> 20);
                if (!lowmem ()) {
                        write_log (L"NATMEM: No special area could be allocated (2)!\n");
                        return 0;
@@ -251,14 +263,14 @@ restart:
        p96mem_size = currprefs.gfxmem_size;
        if (p96mem_size) {
                VirtualFree (natmem_offset, 0, MEM_RELEASE);
-               if (!VirtualAlloc (natmem_offset, natmemsize + rtgbarrier, MEM_RESERVE, PAGE_READWRITE)) {
+               if (!VirtualAlloc (natmem_offset, natmemsize + rtgbarrier + z3chipbarrier, MEM_RESERVE, PAGE_READWRITE)) {
                        write_log (L"VirtualAlloc() part 2 error %d. RTG disabled.\n", GetLastError ());
                        currprefs.gfxmem_size = changed_prefs.gfxmem_size = 0;
                        rtgbarrier = si.dwPageSize;
                        rtgextra = 0;
                        goto restart;
                }
-               p96mem_offset = (uae_u8*)VirtualAlloc (natmem_offset + natmemsize + rtgbarrier, p96mem_size + rtgextra,
+               p96mem_offset = (uae_u8*)VirtualAlloc (natmem_offset + natmemsize + rtgbarrier + z3chipbarrier, p96mem_size + rtgextra,
                        MEM_RESERVE | MEM_WRITE_WATCH, PAGE_READWRITE);
                if (!p96mem_offset) {
                        currprefs.gfxmem_size = changed_prefs.gfxmem_size = 0;
@@ -416,6 +428,14 @@ void *shmat (int shmid, void *shmaddr, int shmflg)
                        size += BARRIER;
                        got = TRUE;
                }
+               if(!_tcscmp (shmids[shmid].name, L"z3_chip")) {
+                       uae_u32 l = currprefs.z3fastmem_start + currprefs.z3fastmem_size + currprefs.z3fastmem2_size;
+                       if (currprefs.z3fastmem_size || currprefs.z3fastmem2_size)
+                               l += 16 * 1024 * 1024;
+                       shmaddr=natmem_offset + l;
+                       size += BARRIER;
+                       got = TRUE;
+               }
                if(!_tcscmp (shmids[shmid].name, L"gfx")) {
                        got = TRUE;
                        p96special = TRUE;
index b9e8d405f89b32d58f4b25e73deca183c42b46ff..f2e8ae681c42ca4a68aecfa6a2fd9f7cee6a57e0 100644 (file)
       </ModuleDefinitionFile>
       <ExportNamedFunctions>
       </ExportNamedFunctions>
+      <LinkTimeCodeGeneration>false</LinkTimeCodeGeneration>
     </Lib>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
       <WarningLevel>Level3</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CallingConvention>StdCall</CallingConvention>
-      <CompileAs>CompileAsC</CompileAs>
+      <CompileAs>Default</CompileAs>
       <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
     </ClCompile>
     <Lib>
       <ModuleDefinitionFile>
       </ModuleDefinitionFile>
       <ExportNamedFunctions>prowizard_search;%(ExportNamedFunctions)</ExportNamedFunctions>
+      <LinkTimeCodeGeneration>false</LinkTimeCodeGeneration>
     </Lib>
   </ItemDefinitionGroup>
   <ItemGroup>
index a9e63f2c481a1fa6aa50894f47a1ddd379a49b52..51560c3d7cbb9da4fb37ab08e6c66c85fd2fddc9 100644 (file)
 #define IDC_Z3FASTMEM                   1049
 #define IDC_MBRAM1                      1050
 #define IDC_MBRAM2                      1051
+#define IDC_Z3CHIPMEM                   1052
+#define IDC_Z3FASTRAM2                  1053
+#define IDC_Z3CHIPRAM                   1053
 #define IDC_UAEHOME                     1070
 #define IDC_PICASSOHOME                 1071
 #define IDC_AMIGAHOME                   1072
index 21cb13423b5b0da2c9ea41e8b741745557a44f20..3c966501ce8229cab7233ef9d19c2abe5a95e12b 100644 (file)
@@ -152,31 +152,34 @@ BEGIN
     COMBOBOX        IDC_DISPLAY_BUFFERCNT,187,47,87,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
 END\r
 \r
-IDD_MEMORY DIALOGEX 0, 0, 300, 158\r
+IDD_MEMORY DIALOGEX 0, 0, 300, 182\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 EXSTYLE WS_EX_CONTEXTHELP\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    GROUPBOX        "Memory Settings",-1,14,7,274,69\r
-    RTEXT           "Chip:",-1,24,26,20,10,SS_CENTERIMAGE\r
+    GROUPBOX        "Memory Settings",IDC_STATIC,14,7,274,97\r
     CONTROL         "Slider1",IDC_CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,54,22,50,20\r
     EDITTEXT        IDC_CHIPRAM,105,25,34,12,ES_CENTER | ES_READONLY\r
-    RTEXT           "Slow:",-1,149,26,20,10,SS_CENTERIMAGE\r
     CONTROL         "Slider1",IDC_SLOWMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,22,60,20\r
     EDITTEXT        IDC_SLOWRAM,243,25,34,12,ES_CENTER | ES_READONLY\r
-    RTEXT           "Fast:",IDC_FASTTEXT,24,51,20,10,SS_CENTERIMAGE\r
     CONTROL         "Slider1",IDC_FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,54,47,50,20\r
     EDITTEXT        IDC_FASTRAM,105,53,34,12,ES_CENTER | ES_READONLY\r
-    RTEXT           "Z3 Fast:",IDC_Z3TEXT,139,51,30,10,SS_CENTERIMAGE\r
     CONTROL         "Slider1",IDC_Z3FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,47,60,20\r
     EDITTEXT        IDC_Z3FASTRAM,243,50,34,12,ES_CENTER | ES_READONLY\r
-    GROUPBOX        "A3000/A4000 Advanced Memory Settings",-1,14,84,274,65\r
-    RTEXT           "Motherboard Fast RAM:",-1,40,100,129,10,SS_CENTERIMAGE\r
-    CONTROL         "",IDC_MBMEM1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,181,96,59,20\r
-    EDITTEXT        IDC_MBRAM1,244,99,34,12,ES_CENTER | ES_READONLY\r
-    RTEXT           "Processor Slot Fast RAM:",-1,40,123,129,10,SS_CENTERIMAGE\r
-    CONTROL         "",IDC_MBMEM2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,181,119,59,20\r
-    EDITTEXT        IDC_MBRAM2,244,122,34,12,ES_CENTER | ES_READONLY\r
+    GROUPBOX        "A3000/A4000 Advanced Memory Settings",IDC_STATIC,14,110,274,65\r
+    RTEXT           "Motherboard Fast RAM:",IDC_STATIC,40,126,129,10,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_MBMEM1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,181,122,59,20\r
+    EDITTEXT        IDC_MBRAM1,244,125,34,12,ES_CENTER | ES_READONLY\r
+    RTEXT           "Processor Slot Fast RAM:",IDC_STATIC,40,149,129,10,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_MBMEM2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,181,145,59,20\r
+    EDITTEXT        IDC_MBRAM2,244,148,34,12,ES_CENTER | ES_READONLY\r
+    RTEXT           "Fast:",IDC_STATIC,19,49,32,15,SS_CENTERIMAGE\r
+    RTEXT           "Chip:",IDC_STATIC,19,25,32,15,SS_CENTERIMAGE\r
+    RTEXT           "Slow:",IDC_STATIC,144,25,32,15,SS_CENTERIMAGE\r
+    RTEXT           "Z3 Fast:",IDC_STATIC,144,49,32,15,SS_CENTERIMAGE\r
+    RTEXT           "Z3 Fake Chip:",IDC_STATIC,123,73,54,15,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_Z3CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,71,60,20\r
+    EDITTEXT        IDC_Z3CHIPRAM,243,76,34,12,ES_CENTER | ES_READONLY\r
 END\r
 \r
 IDD_CPU DIALOGEX 0, 0, 300, 241\r
@@ -1181,6 +1184,11 @@ BEGIN
     BEGIN\r
     END\r
 \r
+    IDD_MEMORY, DIALOG\r
+    BEGIN\r
+        BOTTOMMARGIN, 158\r
+    END\r
+\r
     IDD_CPU, DIALOG\r
     BEGIN\r
     END\r
index c28a33109a9b9737ce132b6e35a6b3cebfbaf018..6df2fd7f2785e9d41dbf3c86279585c83cccc25e 100644 (file)
@@ -18,8 +18,8 @@
 #define WINUAEPUBLICBETA 1
 #define LANG_DLL 1
 
-#define WINUAEBETA L"5"
-#define WINUAEDATE MAKEBD(2010, 5, 26)
+#define WINUAEBETA L"6"
+#define WINUAEDATE MAKEBD(2010, 5, 29)
 #define WINUAEEXTRA L""
 #define WINUAEREV L""
 
index 0084b08c5de4b4d6dde586b85a0c1bb545c2ef7f..ab701857c74ed60cd8274e0dcd5bdb3b9343bb95 100644 (file)
@@ -1119,6 +1119,7 @@ static HWND cachedlist = NULL;
 #define MAX_SLOW_MEM 4
 #define MIN_Z3_MEM 0
 #define MAX_Z3_MEM ((max_z3fastmem >> 20) < 512 ? 12 : ((max_z3fastmem >> 20) < 1024 ? 13 : ((max_z3fastmem >> 20) < 2048) ? 14 : ((max_z3fastmem >> 20) < 2560) ? 15 : ((max_z3fastmem >> 20) < 3072) ? 16 : 17))
+#define MAX_Z3_CHIPMEM 7
 #define MIN_P96_MEM 0
 #define MAX_P96_MEM ((max_z3fastmem >> 20) < 512 ? 8 : ((max_z3fastmem >> 20) < 1024 ? 9 : ((max_z3fastmem >> 20) < 2048) ? 10 : 11))
 #define MIN_MB_MEM 0
@@ -2408,6 +2409,7 @@ static int msi_chip[] = { 1, 2, 3, 14, 4, 5, 6 };
 static int msi_bogo[] = { 0, 2, 3, 14, 15 };
 static int msi_fast[] = { 0, 3, 4, 5, 6 };
 static int msi_z3fast[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17, 12, 18, 13, 19, 16, 20, 21 };
+static int msi_z3chip[] = { 0, 7, 8, 9, 10, 11, 12, 13 };
 static int msi_gfx[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
 
 static int CalculateHardfileSize (HWND hDlg)
@@ -6111,6 +6113,8 @@ static void enable_for_memorydlg (HWND hDlg)
        ew (hDlg, IDC_Z3TEXT, z3);
        ew (hDlg, IDC_Z3FASTRAM, z3);
        ew (hDlg, IDC_Z3FASTMEM, z3);
+       ew (hDlg, IDC_Z3CHIPRAM, z3);
+       ew (hDlg, IDC_Z3CHIPMEM, z3);
        ew (hDlg, IDC_FASTMEM, fast);
        ew (hDlg, IDC_FASTRAM, fast);
        ew (hDlg, IDC_FASTTEXT, fast);
@@ -6228,6 +6232,27 @@ static void values_to_memorydlg (HWND hDlg)
        SendDlgItemMessage (hDlg, IDC_Z3FASTMEM, TBM_SETPOS, TRUE, mem_size);
        SetDlgItemText (hDlg, IDC_Z3FASTRAM, memsize_names[msi_z3fast[mem_size]]);
 
+       mem_size = 0;
+       v = workprefs.z3chipmem_size;
+       if (v < 0x01000000)
+               mem_size = 0;
+       else if (v < 0x02000000)
+               mem_size = 1;
+       else if (v < 0x04000000)
+               mem_size = 2;
+       else if (v < 0x08000000)
+               mem_size = 3;
+       else if (v < 0x10000000)
+               mem_size = 4;
+       else if (v < 0x20000000)
+               mem_size = 5;
+       else if (v < 0x40000000)
+               mem_size = 6;
+       else
+               mem_size = 7;
+       SendDlgItemMessage (hDlg, IDC_Z3CHIPMEM, TBM_SETPOS, TRUE, mem_size);
+       SetDlgItemText (hDlg, IDC_Z3CHIPRAM, memsize_names[msi_z3chip[mem_size]]);
+
        mem_size = 0;
        switch (workprefs.gfxmem_size) {
        case 0x00000000: mem_size = 0; break;
@@ -6683,6 +6708,7 @@ static INT_PTR CALLBACK MemoryDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARA
                SendDlgItemMessage (hDlg, IDC_FASTMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_FAST_MEM, MAX_FAST_MEM));
                SendDlgItemMessage (hDlg, IDC_SLOWMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_SLOW_MEM, MAX_SLOW_MEM));
                SendDlgItemMessage (hDlg, IDC_Z3FASTMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_Z3_MEM, MAX_Z3_MEM));
+               SendDlgItemMessage (hDlg, IDC_Z3CHIPMEM, TBM_SETRANGE, TRUE, MAKELONG (MIN_Z3_MEM, MAX_Z3_CHIPMEM));
                SendDlgItemMessage (hDlg, IDC_MBMEM1, TBM_SETRANGE, TRUE, MAKELONG (MIN_MB_MEM, MAX_MB_MEM));
                SendDlgItemMessage (hDlg, IDC_MBMEM2, TBM_SETRANGE, TRUE, MAKELONG (MIN_MB_MEM, MAX_MB_MEM));
 
@@ -6700,6 +6726,7 @@ static INT_PTR CALLBACK MemoryDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARA
                workprefs.fastmem_size = memsizes[msi_fast[SendMessage (GetDlgItem (hDlg, IDC_FASTMEM), TBM_GETPOS, 0, 0)]];
                workprefs.z3fastmem_size = memsizes[msi_z3fast[SendMessage (GetDlgItem (hDlg, IDC_Z3FASTMEM), TBM_GETPOS, 0, 0)]];
                updatez3 (&workprefs.z3fastmem_size, &workprefs.z3fastmem2_size);
+               workprefs.z3chipmem_size = memsizes[msi_z3chip[SendMessage (GetDlgItem (hDlg, IDC_Z3CHIPMEM), TBM_GETPOS, 0, 0)]];
                workprefs.mbresmem_low_size = memsizes[msi_gfx[SendMessage (GetDlgItem (hDlg, IDC_MBMEM1), TBM_GETPOS, 0, 0)]];
                workprefs.mbresmem_high_size = memsizes[msi_gfx[SendMessage (GetDlgItem (hDlg, IDC_MBMEM2), TBM_GETPOS, 0, 0)]];
                fix_values_memorydlg ();
index 2cc68dab060db06518fa3284b7be2c3cb477a7d2..8edcf4a2e9de114ba42fe38f6c33f17e195eba24 100644 (file)
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;packet.lib;wpcap.lib;openal32.lib;libpng.lib;lglcd.lib;wtsapi32.lib;wntab32x.lib;enet_x64.lib;prowizard_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;packet.lib;wpcap.lib;openal32.lib;libpng.lib;lglcd.lib;wtsapi32.lib;wntab32x.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>d:\amiga\winuae64.exe</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;packet.lib;wpcap.lib;openal32.lib;libpng.lib;lglcd.lib;wtsapi32.lib;wntab32x.lib;enet_x64.lib;prowizard_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;packet.lib;wpcap.lib;openal32.lib;libpng.lib;lglcd.lib;wtsapi32.lib;wntab32x.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <ShowProgress>NotSet</ShowProgress>
       <OutputFile>d:\amiga\winuae64.exe</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
index 4d5a6169b1177eeba125b4fb53c95a168c5a729b..a68c9454aec3c0998cc3fef6559966f40871a2ba 100644 (file)
@@ -1,4 +1,37 @@
 
+Beta 6:
+
+- CE-mode CIA interrupt delay decreased by 1 CPU clock cycle, tst.b CIAICR immediately followed
+  by move.w #x,INTREQ didn't clear the interrupt in some situations
+- disk DMA used generic memory access routines, not chip access routines (could DMA to/from
+  any memory address, not just chip ram)
+- "Z3 fake chip" added, "unlimited" chip ram size. (technically it adds another z3 fast ram
+  board that UAE boot rom changes to MEMF_CHIP|MEMF_PUBLIC|MEMF_LOCAL and removes normal chipset
+  DMA addressing limits)
+- two directory filesystem crash fixes (related to opening non-existing files or directories,
+  broken during C++ conversion)
+- CD32 state restore didn't work if CD32 configuration was not pre-selected
+- save POT capacitors' charge status to statefile
+- disk read DMA wordsync should not skip first syncword if data is already in sync
+- on the fly cycle-exact switching broke few betas ago
+- use early blitter finished state emulation only in 68000 cycle exact modes, 68020 "CE" can
+  execute blitter test and immediate blitter register near-instantly in some situations
+
+Beta 5:
+
+- autovsync was broken in b3
+- added NTSC checkbox to Quickstart panel
+- use DirectInput keyboard if rawinput keyboard is not found, same with mouse.
+  (do not disable both if only mouse or keyboard is found like in b4)
+- DirectInput keyboard and mouse didn't work in Test/Remap modes
+- Gameports remap keyboard configuration was not loaded correctly
+- Write Allocate 68030 data cache bit emulated
+- better "too fast" 68020 CE interrupt workaround
+- CD32 CD on fly media changes fixed (both internal mounter and real/virtual drives)
+- CD32 CD unknown command handling modified (Last Ninja 3)
+
+Last Ninja 3 NOTE: game only works if CD is inserted after CD32 boot screen! (Real CD32 confirmed)
+
 Beta 4:
 
 - keyboard input configuration didn't load correctly (was overwritten by default mappings
index 418bb58bc1d23163953a7aa98c2148736c86fbeb..74226db6d9b35d79736fef44986a686c5d2a9ceb 100644 (file)
@@ -325,6 +325,7 @@ static uae_u8 *restore_chunk (struct zfile *f, TCHAR *name, size_t *len, size_t
                && _tcscmp (name, L"BRAM") != 0
                && _tcscmp (name, L"FRAM") != 0
                && _tcscmp (name, L"ZRAM") != 0
+               && _tcscmp (name, L"ZCRM") != 0
                && _tcscmp (name, L"PRAM") != 0
                && _tcscmp (name, L"A3K1") != 0
                && _tcscmp (name, L"A3K2") != 0)
@@ -467,6 +468,9 @@ void restore_state (const TCHAR *filename)
                } else if (!_tcscmp (name, L"ZRAM")) {
                        restore_zram (totallen, filepos, z3num++);
                        continue;
+               } else if (!_tcscmp (name, L"ZCRM")) {
+                       restore_zram (totallen, filepos, -1);
+                       continue;
                } else if (!_tcscmp (name, L"BORO")) {
                        restore_bootrom (totallen, filepos);
                        continue;
@@ -512,6 +516,8 @@ void restore_state (const TCHAR *filename)
                        end = restore_cia (1, chunk);
                else if (!_tcscmp (name, L"CHIP"))
                        end = restore_custom (chunk);
+               else if (!_tcscmp (name, L"CINP"))
+                       end = restore_input (chunk);
                else if (!_tcscmp (name, L"CHPX"))
                        end = restore_custom_extra (chunk);
                else if (!_tcscmp (name, L"AUD0"))
@@ -647,6 +653,8 @@ static void save_rams (struct zfile *f, int comp)
        save_chunk (f, dst, len, L"ZRAM", comp);
        dst = save_zram (&len, 1);
        save_chunk (f, dst, len, L"ZRAM", comp);
+       dst = save_zram (&len, -1);
+       save_chunk (f, dst, len, L"ZCRM", comp);
        dst = save_bootrom (&len);
        save_chunk (f, dst, len, L"BORO", comp);
 #endif
@@ -757,6 +765,10 @@ int save_state (const TCHAR *filename, const TCHAR *description)
        save_chunk (f, dst, len, L"CHPX", 0);
        xfree (dst);
 
+       dst = save_input (&len, 0);
+       save_chunk (f, dst, len, L"CINP", 0);
+       xfree (dst);
+
        dst = save_custom_agacolors (&len, 0);
        save_chunk (f, dst, len, L"AGAC", 0);
        xfree (dst);