]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
imported winuaesrc1600b12.zip
authorToni Wilen <twilen@winuae.net>
Sat, 14 Feb 2009 12:48:56 +0000 (14:48 +0200)
committerToni Wilen <twilen@winuae.net>
Mon, 22 Feb 2010 19:44:45 +0000 (21:44 +0200)
21 files changed:
cfgfile.c
custom.c
disk.c
drawing.c
filesys.asm
filesys.c
filesys_bootrom.c
include/inputdevice.h
include/options.h
inputdevice.c
main.c
od-win32/fsdb_win32.c
od-win32/picasso96_win.c
od-win32/resources/resource
od-win32/resources/winuae.rc
od-win32/srcrelease.cmd
od-win32/win32.c
od-win32/win32.h
od-win32/win32gui.c
od-win32/winuaechangelog.txt
sana2.c

index e7657874a032624ae10333fb9191112dcfe5f626..7f0e5334b8dbc1823975822eae1052bf049172fb 100644 (file)
--- a/cfgfile.c
+++ b/cfgfile.c
@@ -161,6 +161,7 @@ static const char *scsimode[] = { "false", "true", "scsi", 0 };
 static const char *maxhoriz[] = { "lores", "hires", "superhires", 0 };
 static const char *maxvert[] = { "nointerlace", "interlace", 0 };
 static const char *abspointers[] = { "none", "mousehack", "tablet", 0 };
+static const char *magiccursors[] = { "both", "native", "host", 0 };
 static const char *autoscale[] = { "none", "scale", "resize", 0 };
 
 static const char *obsolete[] = {
@@ -504,6 +505,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
     cfgfile_write (f, "parallel_autoflush=%d\n", p->parallel_autoflush_time);
     cfgfile_dwrite (f, "uae_hide=%d\n", p->uae_hide);
     cfgfile_dwrite (f, "magic_mouse=%s\n", p->input_magic_mouse ? "true" : "false");
+    cfgfile_dwrite (f, "magic_mousecursor=%s\n", magiccursors[p->input_magic_mouse_cursor]);
     cfgfile_dwrite (f, "absolute_mouse=%s\n", abspointers[p->input_tablet]);
 
     cfgfile_write (f, "gfx_display=%d\n", p->gfx_display);
@@ -974,6 +976,7 @@ static int cfgfile_parse_host (struct uae_prefs *p, char *option, char *value)
        || cfgfile_strval (option, value, "gfx_max_horizontal", &p->gfx_max_horizontal, maxhoriz, 0)
        || cfgfile_strval (option, value, "gfx_max_vertical", &p->gfx_max_vertical, maxvert, 0)
        || cfgfile_strval (option, value, "gfx_filter_autoscale", &p->gfx_filter_autoscale, autoscale, 0)
+       || cfgfile_strval (option, value, "magic_mousecursor", &p->input_magic_mouse_cursor, magiccursors, 0)
        || cfgfile_strval (option, value, "absolute_mouse", &p->input_tablet, abspointers, 0))
            return 1;
 
@@ -3081,6 +3084,7 @@ void default_prefs (struct uae_prefs *p, int type)
 
     p->input_tablet = TABLET_OFF;
     p->input_magic_mouse = 0;
+    p->input_magic_mouse_cursor = 0;
 
     inputdevice_default_prefs (p);
 
index 39bbfb707c8ced3387118460a7de54ec98643e72..b7f42dd965c01db0451e3adf096e4057d24368ce 100644 (file)
--- a/custom.c
+++ b/custom.c
@@ -206,6 +206,7 @@ static struct sprite spr[MAX_SPRITES];
 uaecptr sprite_0;
 int sprite_0_width, sprite_0_height, sprite_0_doubled;
 uae_u32 sprite_0_colors[4];
+static uae_u8 magic_sprite_mask = 0xff;
 
 static int sprite_vblank_endline = VBLANK_SPRITE_PAL;
 
@@ -2135,7 +2136,7 @@ static void record_sprite (int line, int num, int sprxp, uae_u16 *data, uae_u16
        mask = 1 << half;
     }
     width = (sprite_width << sprite_buffer_res) >> sprres;
-    attachment = (spr[num & ~1].armed && ((sprctl[num | 1] & 0x80) || (!(currprefs.chipset_mask & CSMASK_AGA) && (sprctl[num & ~1] & 0x80))));
+    attachment = sprctl[num | 1] & 0x80;
 
     /* Try to coalesce entries if they aren't too far apart  */
     if (!next_sprite_forced && e[-1].max + sprite_width >= sprxp) {
@@ -2275,7 +2276,7 @@ static void decide_sprites (int hpos)
        if (spr[i].xpos < 0)
            continue;
 
-       if (!((debug_sprite_mask) & (1 << i)))
+       if (!((debug_sprite_mask & magic_sprite_mask) & (1 << i)))
            continue;
 
        if (! spr[i].armed)
@@ -3103,10 +3104,10 @@ static void INTREQ_d (uae_u16 v, int d)
 
 void INTREQ (uae_u16 v)
 {
-    if (!use_eventmode())
-       INTREQ_f(v);
+    if (!use_eventmode ())
+       INTREQ_f (v);
     else
-       INTREQ_d(v, 6);
+       INTREQ_d (v, 6);
 }
 
 static void ADKCON (int hpos, uae_u16 v)
@@ -4253,6 +4254,12 @@ static void cursorsprite (void)
        sprite_0_colors[3] = xcolors[current_colors.color_regs_ecs[19]];
     }
     sprite_0_width = sprite_width;
+    if (currprefs.input_tablet && currprefs.input_magic_mouse) {
+       if (currprefs.input_magic_mouse_cursor == MAGICMOUSE_HOST_ONLY && mousehack_alive ())
+           magic_sprite_mask &= ~1;
+       else
+           magic_sprite_mask |= 1;
+    }
 }
 
 STATIC_INLINE uae_u16 sprite_fetch (struct sprite *s, int dma, int hpos, int cycle, int mode)
@@ -6216,8 +6223,19 @@ uae_u8 *save_custom (int *len, uae_u8 *dstptr, int full)
            SW (sprdatb[i][0]);     /* 1x6 SPRxDATB */
        }
     }
-    for ( i = 0; i < 32; i++)
-       SW (current_colors.color_regs_ecs[i]); /* 180-1BE COLORxx */
+    for ( i = 0; i < 32; i++) {
+       if (currprefs.chipset_mask & CSMASK_AGA) {
+           uae_u32 v = current_colors.color_regs_aga[i];
+           uae_u16 v2;
+           v &= 0x00f0f0f0;
+           v2 = (v >> 4) & 15;
+           v2 |= ((v >> 12) & 15) << 4;
+           v2 |= ((v >> 20) & 15) << 8;
+           SW (v2);
+       } else {
+           SW (current_colors.color_regs_ecs[i]); /* 180-1BE COLORxx */
+       }
+    }
     SW (htotal);               /* 1C0 HTOTAL */
     SW (hsstop);               /* 1C2 HSTOP*/
     SW (hbstrt);               /* 1C4 HBSTRT */
diff --git a/disk.c b/disk.c
index 314d69796bce70445173e6b12dbc4502032d40d6..a43670294b8957f79ecb8ec9d1dc2e362e0c2b30 100644 (file)
--- a/disk.c
+++ b/disk.c
@@ -3247,9 +3247,9 @@ uae_u8 *restore_disk(int num,uae_u8 *src)
     drv->dskchange_time = 0;
     restore_u32 ();
     strcpy (old, currprefs.df[num]);
-    strncpy(changed_prefs.df[num],src,255);
+    strncpy (changed_prefs.df[num], src, 255);
     newis = changed_prefs.df[num][0] ? 1 : 0;
-    src+=strlen(src)+1;
+    src += strlen(src) + 1;
     if (!(disabled & (1 << num))) {
        if (!newis) {
            drv->dskchange = 1;
@@ -3265,7 +3265,7 @@ uae_u8 *restore_disk(int num,uae_u8 *src)
            }
        }
     }
-    reset_drive_gui(num);
+    reset_drive_gui (num);
     return src;
 }
 
index 81abe99f47c8ac6a5043c96990a0496988dbaeca..abd71a69dd6ace829bc4caeaeb2c3544a893d592 100644 (file)
--- a/drawing.c
+++ b/drawing.c
@@ -114,7 +114,7 @@ struct vidbuf_description gfxvidinfo;
 xcolnr xcolors[4096];
 
 struct spritepixelsbuf {
-    int attach:1;
+    uae_u8 attach;
     uae_u8 stdata;
     uae_u16 data;
 };
@@ -757,7 +757,6 @@ STATIC_INLINE void fill_line (void)
     }
 }
 
-static int linetoscr_double_offset;
 
 #define SPRITE_DEBUG 0
 STATIC_INLINE uae_u8 render_sprites (int pos, int dualpf, uae_u8 apixel, int aga)
@@ -1787,6 +1786,7 @@ STATIC_INLINE void do_flush_screen (int start, int stop)
 static void pfield_expand_dp_bplcon (void)
 {
     int brdblank_2;
+    static int b2;
 
     bplres = dp_for_drawing->bplres;
     bplplanecnt = dp_for_drawing->nr_planes;
@@ -1807,7 +1807,7 @@ static void pfield_expand_dp_bplcon (void)
     plf1pri = dp_for_drawing->bplcon2 & 7;
     plf2pri = (dp_for_drawing->bplcon2 >> 3) & 7;
     plf_sprite_mask = 0xFFFF0000 << (4 * plf2pri);
-    plf_sprite_mask |= (0xFFFF << (4 * plf1pri)) & 0xFFFF;
+    plf_sprite_mask |= (0x0000FFFF << (4 * plf1pri)) & 0xFFFF;
     bpldualpf = (dp_for_drawing->bplcon0 & 0x400) == 0x400;
     bpldualpfpri = (dp_for_drawing->bplcon2 & 0x40) == 0x40;
 
@@ -1977,7 +1977,6 @@ static void pfield_draw_line (int lineno, int gfx_ypos, int follow_ypos)
     case LINE_DECIDED_DOUBLE:
        if (follow_ypos != -1) {
            do_double = 1;
-           linetoscr_double_offset = gfxvidinfo.rowbytes * (follow_ypos - gfx_ypos);
            linestate[lineno + 1] = LINE_DONE_AS_PREVIOUS;
        }
 
index ab5143829385191020d2c1b70140ccafad83d044..12a6ea7489d80c58ab0eef7a4cf8c54b1a443ef5 100644 (file)
@@ -18,6 +18,9 @@
 ; 2007.09.01 ACTION_EXAMINE_ALL (TW)
 ; 2007.09.05 fully 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
 
 AllocMem = -198
 FreeMem = -210
@@ -39,19 +42,18 @@ NRF_WAIT_REPLY = 8
 NRF_NOTIFY_INITIAL = 16
 NRF_MAGIC = $80000000
 
-       dc.l 16
+       dc.l 16                                                                 ; 4
 our_seglist:
-       dc.l 0 ;/* NextSeg */
+       dc.l 0                                                                  ; 8 /* NextSeg */
 start:
-       bra filesys_mainloop
-       dc.l make_dev-start
-       dc.l filesys_init-start
-       dc.l exter_server-start
-       dc.l bootcode-start
-       dc.l setup_exter-start
-
-       dc.l p96vsyncfix1-start
-       dc.l mousehack_x-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
 
 bootcode:
        lea.l doslibname(pc),a1
@@ -185,29 +187,40 @@ FSIN_chip_done
 general_ret:
        rts
 
-       ; this is getting ridiculous but I don't see any other solutions..
-fsmounttask
-.fsm1  move.l 4.w,a6
-       moveq #0,d0
-       bset #17,d0 ; SIGBREAK_CTRL_D
-       jsr -$013e(a6) ;Wait
+createproc
+       movem.l d2-d4/a2/a6,-(sp)
+       move.l 4.w,a6
+       move.l d0,d2
+       move.l d1,d4
+       move.l a1,d3
+       move.l a0,a2
        lea doslibname(pc),a1
        moveq #0,d0
        jsr -$0228(a6) ; OpenLibrary
        tst.l d0
-       beq.s .fsm1
+       beq.s .noproc
        move.l d0,a6
-       lea fsprocname(pc),a0
-       move.l a0,d1
-       moveq #15,d2
-       lea mountproc(pc),a0
-       move.l a0,d3
+       move.l a2,d1
        lsr.l #2,d3
-       move.l #8000,d4
        jsr -$08a(a6) ; CreateProc
        move.l a6,a1
        move.l 4.w,a6
        jsr -$019e(a6); CloseLibrary
+.noproc
+       movem.l (sp)+,d2-d4/a2/a6
+       rts
+
+       ; this is getting ridiculous but I don't see any other solutions..
+fsmounttask
+.fsm1  move.l 4.w,a6
+       moveq #0,d0
+       bset #13,d0 ; SIGBREAK_CTRL_D
+       jsr -$013e(a6) ;Wait
+       lea fsprocname(pc),a0
+       lea mountproc(pc),a1
+       moveq #15,d0
+       move.l #8000,d1
+       bsr.w createproc
        bra.s .fsm1     
 
        ; dummy process here because can't mount devices with ADNF_STARTPROC from task..
@@ -307,6 +320,14 @@ setup_exter:
        move.w #$0214,8(a1)
        moveq.l #3,d0
        jsr -168(a6) ; AddIntServer
+       move.w mh_e(pc),d0
+       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
 
@@ -814,14 +835,14 @@ make_dev: ; IN: A0 param_packet, D6: unit_no, D7: b0=autoboot,b1=onthefly,b2=v36
        move.l d0,d3
        cmp.w #-2,d3
        beq.w general_ret
-       cmp.w #1,d3
-       bne.s mountalways
 
+       ;cmp.w #1,d3
+       ;bne.s mountalways
        ; KS < V36: init regular hardfiles only if filesystem is loaded
-       btst #2,d7
-       bne.s mountalways ; >= 36
-       btst #1,d7
-       bne.w mountalways
+       ;btst #2,d7
+       ;bne.s mountalways ; >= 36
+       ;btst #1,d7
+       ;bne.w mountalways
 
 mountalways
        ; allocate memory for loaded filesystem
@@ -1056,9 +1077,15 @@ filesys_mainloop:
        jsr -294(a6) ; FindTask
        move.l d0,176(a3)
 
-       bsr.w allocinputdevice
+       lea inp_dev(pc),a0
+       moveq #0,d0
+       moveq #0,d1
+       bsr.w allocdevice
        move.l d0,164(a3)
-       bsr.w alloctimerdevice
+       lea tim_dev(pc),a0
+       moveq #0,d0
+       moveq #0,d1
+       bsr.w allocdevice
        move.l d0,168(a3)
 
        moveq.l #0,d5 ; No commands queued.
@@ -1085,7 +1112,6 @@ filesys_mainloop:
        bsr.w diskinsertremove
 .nonotif
 
-       bsr.w mousehack_init
        bra.w FSML_Reply
 
        ; We abuse some of the fields of the message we get. Offset 0 is
@@ -1097,7 +1123,6 @@ filesys_mainloop:
        ; processing by now, so it's safe to reply to it.
 
 FSML_loop:
-       bsr.w mousehack_init
 
        move.l a5,a0
        jsr -372(a6) ; GetMsg
@@ -1108,7 +1133,7 @@ FSML_loop:
        moveq #0,d0
        move.b 15(a5),d1 ;mp_SigBit
        bset d1,d0
-       bset #17,d0 ; SIGBREAK_CTRL_D
+       bset #13,d0 ; SIGBREAK_CTRL_D
        jsr -$013e(a6) ;Wait
 .msg
        ; disk changed?
@@ -1292,32 +1317,6 @@ getrtbase:
        add.l d0,a0
        rts
 
-       ;p96 stuff
-
-p96flag        dc.w 0
-p96vsyncfix1
-       cmp.l #34,8(sp) ; picasso_WaitVerticalSync?
-       bne.s p961
-       movem.l d0-d1/a0-a2/a6,-(sp)
-       move.l 4.w,a6
-       sub.l a1,a1
-       jsr -$126(a6) ; FindTask
-       move.l d0,a2
-       move.l a2,a1
-       moveq #-20,d0
-       jsr -$12c(a6) ; SetTaskPri
-       lea p96flag(pc),a0
-       move.w (a0),d1
-p962 cmp.w (a0),d1
-       beq.s p962
-       move.l a2,a1
-       jsr -$12c(a6) ; SetTaskPri
-       moveq #1,d1
-       movem.l (sp)+,d0-d1/a0-a2/a6
-       addq.l #4,sp ; return directly to caller
-p961 rts
-
-
 ; mouse hack
 
 newlist:
@@ -1329,7 +1328,7 @@ newlist:
 
 createport:
        movem.l d2/a2/a6,-(sp)
-       move.l 4,a6
+       move.l 4.w,a6
        moveq #-1,d0
        jsr -$014a(a6) ;AllocSignal
        sub.l a0,a0
@@ -1356,11 +1355,14 @@ createport:
 
 createio:
        movem.l d2/a2/a6,-(sp)
-       move.l 4,a6
+       move.l 4.w,a6
        tst.l d0
        beq.s .f
        move.l d0,a2
+       move.l d1,d2
+       bne.s .ci
        moveq #48,d2
+.ci
        move.l d2,d0
        move.l #65536+1,d1
        jsr AllocMem(a6)
@@ -1372,16 +1374,20 @@ createio:
        movem.l (sp)+,d2/a2/a6
        rts
 
-allocinputdevice
-       movem.l a2/a6,-(sp)
+allocdevice
+       movem.l d2-d3/a2/a6,-(sp)
+       move.l a0,a2
+       move.l d0,d2
+       move.l d1,d3
        move.l 4.w,a6
        bsr.w createport
+       move.l d3,d1
        bsr.w createio
        beq.s .f
+       move.l a2,a0
        move.l d0,a1
        move.l d0,a2
-       lea inp_dev(pc),a0
-       moveq #0,d0
+       move.l d2,d0
        moveq #0,d1
        jsr -$01bc(a6) ;OpenDevice
        move.l d0,d1
@@ -1390,33 +1396,12 @@ allocinputdevice
        bne.s .f
        move.l a2,d0
 .f     tst.l d0
-       movem.l (sp)+,a2/a6
-       rts
-
-alloctimerdevice
-       movem.l a2/a6,-(sp)
-       move.l 4.w,a6
-       bsr.w createport
-       bsr.w createio
-       beq.s .f
-       move.l d0,a2
-       move.l d0,a1
-       lea tim_dev(pc),a0
-       moveq #0,d0
-       moveq #0,d1
-       jsr -$01bc(a6) ;OpenDevice      
-       move.l d0,d1
-       moveq #0,d0
-       tst.l d1
-       bne.s .f
-       move.l a2,d0
-.f     tst.l d0
-       movem.l (sp)+,a2/a6
+       movem.l (sp)+,d2-d3/a2/a6
        rts
 
 createtask:
        movem.l d2/d3/d4/a2/a3/a6,-(sp)
-       move.l 4,a6
+       move.l 4.w,a6
        move.l d0,d4
        move.l a0,d2
        move.l a1,d3
@@ -1443,43 +1428,211 @@ createtask:
 .f     movem.l (sp)+,d2/d3/d4/a2/a3/a6
        rts
 
-mousehack_e: dc.w 0
-mousehack_x: dc.w 0
-mousehack_y: dc.w 0
+; mousehack/tablet
+
+mousehack_init:
+       lea mhname(pc),a0
+       lea mousehack_task(pc),a1
+       moveq #19,d0
+       bsr createtask
+       rts
+
+mhdoiotimer:
+       move.l MH_TM(a5),a1
+       move.w #10,28(a1) ;TR_GETSYSTIME
+       move.b #1,30(a1) ;IOF_QUICK
+       jsr -$01c8(a6) ;DoIO
+       move.l MH_TM(a5),a1
+       move.l 32(a1),14(a2)
+       move.l 36(a1),18(a2)
+       move.l MH_IO(a5),a1
+       move.b #1,30(a1) ;IOF_QUICK
+       jsr -$01c8(a6) ;DoIO
+       rts
+mhdoio:
+       clr.l 14(a2)
+       clr.l 18(a2)
+       move.l MH_IO(a5),a1
+       move.b #1,30(a1) ;IOF_QUICK
+       jsr -$01c8(a6) ;DoIO
+       rts
+
+; these shouldn't be here but it is easier this way..
+
+mh_e: dc.w 0
+mh_cnt: dc.w -1
+mh_maxx: dc.w 0
+mh_maxy: dc.w 0
+mh_maxz: dc.w 0
+mh_x: dc.w 0
+mh_y: dc.w 0
+mh_z: dc.w 0
+mh_resx: dc.w 0
+mh_resy: dc.w 0
+mh_maxax: dc.w 0
+mh_maxay: dc.w 0
+mh_maxaz: dc.w 0
+mh_ax: dc.w 0
+mh_ay: dc.w 0
+mh_az: dc.w 0
+mh_pressure: dc.w 0
+mh_buttonbits: dc.l 0
+mh_inproximity: dc.w 0
+mh_absx: dc.w 0
+mh_absy: dc.w 0
 
 MH_INT = 0
+
 MH_FOO = (MH_INT+22)
-MH_IEV = (MH_FOO+16)
-MH_IO = (MH_IEV+22)
+MH_FOO_CNT = 0
+MH_FOO_BUTTONS = 4
+MH_FOO_TASK = 8
+MH_FOO_MASK = 12
+MH_FOO_EXECBASE = 16
+MH_FOO_INTBASE = 20
+MH_FOO_GFXBASE = 24
+MH_FOO_DELAY = 28
+MH_FOO_DIMS_X = 32
+MH_FOO_DIMS_Y = 36
+MH_FOO_VPXY = 40
+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_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)
+MH_IEPT = (MH_IEH+22) ;IEPointerTable/IENewTablet
+MH_IENTTAGS = (MH_IEPT+32) ;space for ient_TagList
+MH_IO = (MH_IENTTAGS+16*4*2)
 MH_TM = (MH_IO+4)
 MH_END = (MH_TM+4)
 
-mousehack_init:
-       move.l a0,-(sp)
-       tst.b 157(a3)
-       bne.s .no
-       lea mousehack_e(pc),a0
-       cmp.b #1,(a0)
-       bne.s .no
-       lea mhname(pc),a0
-       lea mousehack_task(pc),a1
-       moveq #5,d0
-       bsr createtask
-       st 157(a3)
-       ;tell native side that mousehack is active
+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
+TABLETA_RangeZ         EQU     TABLETA_Dummy+$02
+TABLETA_AngleX         EQU     TABLETA_Dummy+$03
+TABLETA_AngleY         EQU     TABLETA_Dummy+$04
+TABLETA_AngleZ         EQU     TABLETA_Dummy+$05
+TABLETA_Pressure       EQU     TABLETA_Dummy+$06
+TABLETA_ButtonBits     EQU     TABLETA_Dummy+$07
+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-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
+       move.l 60(a0),d0 ;FirstScreen
+       beq.s .end
+
+       move.l d0,a0
+       lea 44(a0),a0 ;ViewPort
+       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
+       moveq #0,d0
+       move.w #88,d0
+       move.l #DTAG_DIMS,d1
+       move.l d3,d2
+       jsr -$2f4(a6) ;GetDisplayInfoData
+       moveq #-1,d1
+       moveq #-1,d2
+       tst.l d0
+       bmi.s .end
+       lea MH_FOO_DIMS(a5),a2
+       move.l 50(a2),d1
+       move.l 54(a2),d2
+.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
+       bne.s .dosend
+       cmp.l MH_FOO_DIMS_Y(a5),d2
+       beq.s .nosend
+.dosend
+       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
+       lea MH_FOO_DISP(a5),a1
+       moveq #0,d0
+       move.w #88,d0
+       move.l #DTAG_DISP,d1
+       move.l d3,d2
+       jsr -$2f4(a6) ;GetDisplayInfoData
+       tst.l d0
+       bmi.s .nomntr
+       lea MH_FOO_DISP(a5),a3
+.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)
-.no    move.l (sp)+,a0
+
+.nosend
+       movem.l (sp)+,d0-d4/a0-a6
        rts
 
 mousehack_task:
-       move.l 4,a6
+       move.l 4.w,a6
+
+       move.w 20(a6),d7
 
        moveq #-1,d0
        jsr -$014a(a6) ;AllocSignal
-       moveq #0,d2
-       bset d0,d2
+       moveq #0,d6
+       bset d0,d6
 
        sub.l a1,a1
        jsr -$0126(a6) ;FindTask
@@ -1489,30 +1642,18 @@ mousehack_task:
        move.l a4,a1
        jsr -$012c(a6) ;SetTaskPri
 
-       moveq #0,d0
-       lea intlibname(pc),a1
-       jsr -$0228(a6)
-       move.l d0,d7
-
        moveq #0,d0
        move.w #MH_END,d0
        move.l #65536+1,d1
        jsr AllocMem(a6)
        move.l d0,a5
 
-       bsr.w allocinputdevice
-       move.l d0,MH_IO(a5)
-       beq.w .f
-       bsr.w alloctimerdevice
-       move.l d0,MH_TM(a5)
-       beq.w .f
-
        lea MH_FOO(a5),a3
-       move.l a4,12(a3);task
-       move.l d2,8(a3) ;sigmask
+       move.l a6,MH_FOO_EXECBASE(a3)
+       move.l a4,MH_FOO_TASK(a3)
+       move.l d6,MH_FOO_MASK(a3)
        moveq #-1,d0
-       move.l d0,(a3)  ;mx
-       move.l d0,4(a3) ;my
+       move.w d0,MH_FOO_CNT(a3)
 
        lea MH_INT(a5),a1
        move.b #2,8(a1) ;NT_INTERRUPT
@@ -1521,83 +1662,699 @@ mousehack_task:
        move.l a0,10(a1)
        lea mousehackint(pc),a0
        move.l a0,18(a1)
-       move.l a3,14(a1)
+       move.l a5,14(a1)
        moveq #5,d0 ;INTB_VERTB
        jsr -$00a8(a6)
-       bra.s mhloop
-.f     rts
 
 mhloop
-       move.l d2,d0
+       move.l d6,d0
        jsr -$013e(a6) ;Wait
-       
+
+       moveq #0,d0
+       subq.l #1,MH_FOO_DELAY(a3)
+       bpl.s .delay1
+       moveq #10,d0
+       move.l d0,MH_FOO_DELAY(a3)
+.delay1
+
+       tst.l MH_FOO_INTBASE(a3)
+       bne.s .intyes
+       tst.l MH_FOO_DELAY(a3)
+       bne.s mhloop
+       lea intlibname(pc),a1
+       moveq #0,d0
+       jsr -$0228(a6) ;OpenLibrary
+       move.l d0,MH_FOO_INTBASE(a3)
+       beq.s mhloop
+.intyes
+       tst.l MH_FOO_GFXBASE(a3)
+       bne.s .gfxyes
+       tst.l MH_FOO_DELAY(a3)
+       bne.s mhloop
+       lea gfxlibname(pc),a1
+       moveq #0,d0
+       jsr -$0228(a6) ;OpenLibrary
+       move.l d0,MH_FOO_GFXBASE(a3)
+       beq.w mhloop
+.gfxyes
+
+       tst.l MH_IO(a5)
+       bne.s .yesio
+       tst.l MH_FOO_DELAY(a3)
+       bne.s mhloop
+       jsr -$0084(a6) ;Forbid
+       lea 350(a6),a0 ;DeviceList
+       lea inp_dev(pc),a1
+       jsr -$114(a6) ;FindName
+       move.l d0,d2
+       jsr -$008a(a6) ;Permit
+       tst.l d2
+       beq.s mhloop
+       lea inp_dev(pc),a0
+       moveq #0,d0
+       moveq #0,d1
+       bsr.w allocdevice
+       move.l d0,MH_IO(a5)
+       beq.w mhend
+       bra.w mhloop
+.yesio
+       tst.l MH_TM(a5)
+       bne.s .yestim
+       tst.l MH_FOO_DELAY(a3)
+       bne.w mhloop
+       jsr -$0084(a6) ;Forbid
+       lea 350(a6),a0 ;DeviceList
+       lea tim_dev(pc),a1
+       jsr -$114(a6) ;FindName
+       move.l d0,d2
+       jsr -$008a(a6) ;Permit
+       tst.l d2
+       beq.w mhloop
+       lea tim_dev(pc),a0
+       moveq #0,d0
+       moveq #0,d1
+       bsr.w allocdevice
+       move.l d0,MH_TM(a5)
+       beq.w mhend
+
+       ;tell native side that mousehack is now active
+       move.w #$FF38,d0
+       moveq #0,d1
+       bsr.w getrtbase
+       jsr (a0)
+       bra.w mhloop
+.yestim
+
+       cmp.w #36,d7
+       bcs.s .nodims
+       subq.l #1,MH_FOO_LIMITCNT(a3)
+       bpl.s .nodims
+       move.l a3,a0
+       bsr.w getgfxlimits
+       moveq #50,d0
+       move.l d0,MH_FOO_LIMITCNT(a3)
+.nodims
+
        move.l MH_IO(a5),a1
        lea MH_IEV(a5),a2
        move.w #11,28(a1) ;IND_WRITEEVENT
        move.l #22,36(a1) ;sizeof(struct InputEvent)
        move.l a2,40(a1)
-       move.b #1,30(a1) ;IOF_QUICK
 
-       move.b #4,4(a2) ;IECLASS_POINTERPOS
-       clr.b 5(a2) ;ie_SubClass
+       move.b mh_e(pc),d0
+       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
+       moveq #7,d0
+       sub.w d1,d0
+       lsl.w #8,d0
+       lsl.w #4,d0
+       move.w d0,8(a2) ;ie_Qualifier
+
+       move.w mh_x(pc),12+2(a0) ;ient_TabletX
+       clr.w 16(a0)
+       move.w mh_y(pc),16+2(a0) ;ient_TabletY
+       clr.w 20(a0)
+       move.w mh_maxx(pc),20+2(a0) ;ient_RangeX
+       clr.w 24(a0)
+       move.w mh_maxy(pc),24+2(a0) ;ient_RangeY
+       lea MH_IENTTAGS(a5),a1
+       move.l a1,28(a0) ;ient_TagList
+       move.l #TABLETA_Pressure,(a1)+
+       move.w mh_pressure(pc),d0
+       ext.l d0
+       asl.l #8,d0
+       move.l d0,(a1)+
+       move.l #TABLETA_ButtonBits,(a1)+
+       move.l mh_buttonbits(pc),(a1)+
+       
+       moveq #0,d0
+
+       move.w mh_resx(pc),d0
+       bmi.s .noresx
+       move.l #TABLETA_ResolutionX,(a1)+
+       move.l d0,(a1)+
+.noresx
+       move.w mh_resy(pc),d0
+       bmi.s .noresy
+       move.l #TABLETA_ResolutionY,(a1)+
+       move.l d0,(a1)+
+.noresy
+
+       move.w mh_maxz(pc),d0
+       bmi.s .noz
+       move.l #TABLETA_RangeZ,(a1)+
+       move.l d0,(a1)+
+       move.w mh_z(pc),d0
+       move.l #TABLETA_TabletZ,(a1)+
+       move.l d0,(a1)+
+.noz
+
+       move.w mh_maxax(pc),d0
+       bmi.s .noax
+       move.l #TABLETA_AngleX,(a1)+
+       move.w mh_ax(pc),d0
+       ext.l d0
+       asl.l #8,d0
+       move.l d0,(a1)+
+.noax
+       move.w mh_maxay(pc),d0
+       bmi.s .noay
+       move.l #TABLETA_AngleY,(a1)+
+       move.w mh_ay(pc),d0
+       ext.l d0
+       asl.l #8,d0
+       move.l d0,(a1)+
+.noay
+       move.w mh_maxaz(pc),d0
+       bmi.s .noaz
+       move.l #TABLETA_AngleZ,(a1)+
+       move.w mh_az(pc),d0
+       ext.l d0
+       asl.l #8,d0
+       move.l d0,(a1)+
+.noaz
+       
+       moveq #0,d0
+       move.w mh_inproximity(pc),d0
+       bmi.s .noproxi
+       move.l #TABLETA_InProximity,(a1)+
+       move.l d0,(a1)+
+.noproxi
+       clr.l (a1) ;TAG_DONE
+
+       bsr.w mhdoio
+       
+       ;create mouse button events if button state changed
+       move.w #$68,d3 ;IECODE_LBUTTON->IECODE_RBUTTON->IECODE_MBUTTON
+       moveq #1,d2
+       move.l mh_buttonbits(pc),d4
+.nextbut
+       move.l d4,d0
+       and.l d2,d0
+       move.l MH_FOO_BUTTONS(a3),d1
+       and.l d2,d1
+       cmp.l d0,d1
+       beq.s .nobut
+       
+       clr.l (a2)
+       move.w #$0200,4(a2) ;ie_Class=IECLASS_RAWMOUSE,ie_SubClass=0
+       clr.l 10(a2)    ;ie_Addr/X+Y
+       move.w d3,d1
+       tst.b d0
+       bne.s .butdown
+       bset #7,d1 ;IECODE_UP_PREFIX
+.butdown
+       move.w d1,6(a2) ;ie_Code
+       clr.w 8(a2) ;ie_Qualifier
+
+       bsr.w mhdoio
+
+.nobut
+       addq.w #1,d3
+       add.w d2,d2
+       cmp.w #8,d2
+       bne.s .nextbut
+       move.l d4,MH_FOO_BUTTONS(a3)
+
+.notablet
+
+       move.b mh_e(pc),d0
+       btst #MH_MOUSEHACK,d0
+       beq.w mhloop
+
+       clr.l (a2)
+       move.w #$0400,4(a2) ;IECLASS_POINTERPOS
        clr.w 6(a2) ;ie_Code
        clr.w 8(a2) ;ie_Qualifier
 
-       move.l d7,a0 ;intbase
+       move.l MH_FOO_INTBASE(a3),a0
 
-       move.l MH_FOO+0(a5),d0
+       move.w mh_absx(pc),d0
        move.w 34+14(a0),d1
        add.w d1,d1
        sub.w d1,d0
+       bpl.s .xn
+       moveq #0,d0
+.xn
        move.w d0,10(a2)
 
-       move.l MH_FOO+4(a5),d0
+       move.w mh_absy(pc),d0
        move.w 34+12(a0),d1
        add.w d1,d1
        sub.w d1,d0
-       ext.l d0
+       bpl.s .yn
+       moveq #0,d0
+.yn
        move.w d0,12(a2)
 
-       move.l MH_TM(a5),a1
-       move.w #10,28(a1) ;TR_GETSYSTIME
-       move.b #1,30(a1) ;IOF_QUICK
-       jsr -$01c8(a6) ;DoIO
-       move.l MH_TM(a5),a1
-       move.l 32(a1),14(a2)
-       move.l 36(a1),18(a2)
+       bsr.w mhdoiotimer
 
-       move.l MH_IO(a5),a1
-       jsr -$01c8(a6) ;DoIO
-       
        bra.w mhloop
 
+mhend
+       rts
+
 mousehackint:
-       move.w mousehack_x(pc),d0
-       ext.l d0
-       move.w mousehack_y(pc),d1
-       ext.l d1
-       cmp.l (a1),d0
-       bne .l1
-       cmp.l 4(a1),d1
-       beq .l2
-.l1 move.l d1,4(a1)
-       move.l d0,(a1)
-       move.l 8(a1),d0
-       move.l 12(a1),a1
-       move.l 4.w,a6
+       tst.l MH_IO(a1)
+       beq.s .l1
+       tst.l MH_TM(a1)
+       beq.s .l1
+       move.w mh_cnt(pc),d0
+       cmp.w MH_FOO+MH_FOO_CNT(a1),d0
+       beq.s .l2
+       move.w d0,MH_FOO+MH_FOO_CNT(a1)
+.l1
+       move.l MH_FOO+MH_FOO_EXECBASE(a1),a6
+       move.l MH_FOO+MH_FOO_MASK(a1),d0
+       move.l MH_FOO+MH_FOO_TASK(a1),a1
        jsr -$0144(a6) ; Signal
-.l2    lea $dff000,a0
+.l2
+       subq.w #1,MH_FOO+MH_FOO_ALIVE(a1)
+       bpl.s .l3
+       move.w #50,MH_FOO+MH_FOO_ALIVE(a1)
+       move.w #$FF38,d0
+       moveq #2,d1
+       bsr.w getrtbase
+       jsr (a0)
+.l3
+       lea $dff000,a0
        moveq #0,d0
        rts
 
+; clipboard sharing
+
+CLIP_WRITE_SIZE = 0
+CLIP_WRITE_ALLOC = (CLIP_WRITE_SIZE+4)
+CLIP_TASK = (CLIP_WRITE_ALLOC+4)
+CLIP_UNIT = (CLIP_TASK+4)
+CLIP_ID = (CLIP_UNIT+4)
+CLIP_EXEC = (CLIP_ID+4)
+CLIP_DOS = (CLIP_EXEC+4)
+CLIP_HOOK = (CLIP_DOS+4)
+CLIP_BUF = (CLIP_HOOK+20)
+CLIP_BUF_SIZE = 8
+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
+       move.l 4.w,a6
+
+       move.l #CLIP_END,d0
+       move.l #$10001,d1
+       jsr AllocMem(a6)
+       tst.l d0
+       beq.s 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 #10000,d1
+       bsr.w createproc
+       
+       ; task has done its job, process continues..
+       moveq #0,d0
+       rts
+
+clipdie:
+       move.w #$FF38,d0
+       moveq #10,d1
+       bsr.w getrtbase
+       jsr (a0)
+       move.l a5,d0
+       beq.s .cd1
+       move.l CLIP_EXEC(a5),a6
+       move.l CLIP_DOS(a5),d0
+       beq.s .cd2
+       move.l d0,a1
+       jsr -414(a6) ; CloseLibrary
+.cd2
+       move.l a5,a1
+       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:
+       dc.l 0
+
+       move.w #$FF38,d0
+       moveq #13,d1
+       bsr.w getrtbase
+       jsr (a0)
+       tst.l d0
+       beq.w clipdie
+       move.l d0,a5
+       move.l CLIP_EXEC(a5),a6
+
+       sub.l a1,a1
+       jsr -294(a6) ; FindTask
+       move.l d0,CLIP_TASK(a5)
+
+       lea doslibname(pc),a1
+       moveq #0,d0
+       jsr -$0228(a6) ; OpenLibrary
+       move.l d0,CLIP_DOS(a5)
+       tst.l d0
+       beq.w clipdie
+       move.l d0,a6
+
+.devsloop
+       moveq #50,d1
+       jsr -$00c6(a6) ;Delay
+       lea devs_name(pc),a0
+       move.l a0,d1
+       moveq #-2,d2
+       jsr -$0054(a6) ;Lock
+       tst.l d0
+       beq.s .devsloop
+       move.l d0,d1
+       jsr -$005a(a6) ;Unlock
+       moveq #50,d1
+       jsr -$00c6(a6) ;Delay
+       lea clip_name(pc),a0
+       move.l a0,d1
+       moveq #-2,d2
+       jsr -$0054(a6) ;Lock
+       tst.l d0
+       beq.w clipdie
+       move.l d0,d1
+       jsr -$005a(a6) ;Unlock
+       
+       move.l CLIP_EXEC(a5),a6
+
+       bsr.w createport
+       moveq #0,d1
+       move.w #52,d1
+       bsr.w createio
+       move.l d0,a4
+       tst.l d0
+       beq.w clipdie   
+
+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
+       move.l a4,a1
+       jsr -$01bc(a6) ;OpenDevice
+       tst.l d0
+       bne.s cfloop2
+
+       move.w #$FF38,d0
+       moveq #15,d1
+       bsr.w getrtbase
+       jsr (a0)
+
+       bsr.w prefshook
+
+       lea CLIP_HOOK(a5),a0
+       move.l a0,40(a4)
+       moveq #1,d0
+       move.l d0,36(a4)
+       move.w #12,28(a4) ;CBD_CHANGEHOOK
+       move.l a5,CLIP_HOOK+16(a5)
+       lea cliphook(pc),a0
+       move.l a0,CLIP_HOOK+8(a5)
+       move.l a4,a1
+       jsr -$01c8(a6) ;DoIO
+
+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
+       moveq #1,d1
+       jsr AllocMem(a6)
+       move.l d0,CLIP_WRITE_ALLOC(a5)
+       ;and notify host-side
+       move.w #$FF38,d0
+       moveq #12,d1
+       bsr.w getrtbase
+       jsr (a0)
+       ; and now we should have the data in CLIP_WRITE_ALLOC
+       tst.l CLIP_WRITE_ALLOC(a5)
+       beq.s .nowrite
+
+       move.w #3,28(a4) ;CMD_WRITE
+       clr.b 31(a4)
+       clr.l 32(a4)
+       move.l CLIP_WRITE_SIZE(a5),36(a4)
+       move.l CLIP_WRITE_ALLOC(a5),40(a4)
+       clr.l 44(a4)
+       clr.l 48(a4)
+       move.l a4,a1
+       jsr -$01c8(a6) ;DoIO
+       move.l 48(a4),CLIP_ID(a5)
+       move.w #4,28(a4) ;CMD_UPDATE
+       move.l a4,a1
+       jsr -$01c8(a6) ;DoIO
+
+.nowrite
+       move.l CLIP_WRITE_SIZE(a5),d0
+       clr.l CLIP_WRITE_SIZE(a5)
+       move.l CLIP_WRITE_ALLOC(a5),d1
+       beq.w cfloop
+       move.l d1,a1
+       jsr FreeMem(a6)
+       bra.w cfloop
+
+clipread:
+  ; read first 8 bytes 
+       move.w #2,28(a4) ;CMD_READ
+       lea CLIP_BUF(a5),a0
+       clr.l (a0)
+       clr.l 4(a0)
+       clr.b 31(a4)
+       clr.l 44(a4)
+       clr.l 48(a4)
+       move.l a0,40(a4)
+       moveq #8,d0
+       move.l d0,36(a4)
+       move.l a4,a1
+       jsr -$01c8(a6) ;DoIO
+       cmp.l #'FORM',CLIP_BUF(a5)
+       bne.s .cf1
+       move.l CLIP_BUF+4(a5),d0
+       beq.s .cf1
+       bmi.s .cf1
+       move.l 48(a4),CLIP_ID(a5)
+       addq.l #8,d0
+       move.l d0,d2
+       moveq #1,d1
+       jsr AllocMem(a6)
+       tst.l d0
+       beq.s .cf1
+       move.l d0,a2
+       ; read the rest
+       move.l a2,a0
+       move.l CLIP_BUF(a5),(a0)+
+       move.l CLIP_BUF+4(a5),(a0)+
+       move.l a0,40(a4)
+       move.l d2,d0
+       subq.l #8,d0
+       move.l d0,36(a4)
+       move.l a4,a1
+       jsr -$01c8(a6) ;DoIO
+       move.w #$FF38,d0
+       moveq #11,d1
+       bsr.w getrtbase
+       move.l 32(a4),d0
+       jsr (a0)
+       move.l a2,a1
+       move.l d2,d0
+       jsr FreeMem(a6)
+.cf1
+       ; tell clipboard.device that we are done (read until io_Actual==0)
+       tst.l 32(a4)
+       beq.w cfloop
+       lea CLIP_BUF(a5),a0
+       move.l a0,40(a4)
+       moveq #1,d0
+       move.l d0,36(a4)
+       clr.l 32(a4)
+       move.l a4,a1
+       jsr -$01c8(a6) ;DoIO
+       bra.s .cf1
+
+cliphook:
+       lea -CLIP_HOOK(a0),a0
+       move.l 8(a1),d0
+       cmp.l CLIP_ID(a0),d0 ;ClipHookMsg->chm_ClipID
+       beq.s .same
+       move.l d0,CLIP_ID(a0)
+       move.l a6,-(sp)
+       move.l CLIP_EXEC(a0),a6
+       move.l CLIP_TASK(a0),a1
+       moveq #0,d0
+       bset #13,d0 ;SIG_D
+       jsr -$0144(a6) ;Signal
+       move.l (sp)+,a6
+.same
+       moveq #0,d0
+       rts
+
+
 inp_dev: dc.b 'input.device',0
 tim_dev: dc.b 'timer.device',0
-mhname: dc.b 'UAE mouse hack',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 StartNofity()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
 fstaskname: dc.b 'UAE fs automounter',0
 fsprocname: dc.b 'UAE fs automount process',0
 doslibname: dc.b 'dos.library',0
 intlibname: dc.b 'intuition.library',0
+gfxlibname: dc.b 'graphics.library',0
 explibname: dc.b 'expansion.library',0
 fsresname: dc.b 'FileSystem.resource',0
        END
index 2119f80df1767f7326e3049569d43e7600af6b84..23ebe03c669e473dd1a4c75ea8f5739da93d5887 100644 (file)
--- a/filesys.c
+++ b/filesys.c
@@ -2342,9 +2342,12 @@ action_add_notify (Unit *unit, dpacket packet)
 #endif
 
     p = name + strlen (name) - 1;
-    if (p[0] == ':') p--;
-    while (p > name && p[0] != ':' && p[0] != '/') p--;
-    if (p[0] == ':' || p[0] == '/') p++;
+    if (p[0] == ':')
+       p--;
+    while (p > name && p[0] != ':' && p[0] != '/')
+       p--;
+    if (p[0] == ':' || p[0] == '/')
+       p++;
     partname = my_strdup (p);
     n = new_notify (unit, partname);
     n->notifyrequest = nr;
@@ -2710,7 +2713,7 @@ get_fileinfo (Unit *unit, dpacket packet, uaecptr info, a_inode *aino)
     PUT_PCK_RES1 (packet, DOS_TRUE);
 }
 
-int get_native_path(uae_u32 lock, char *out)
+int get_native_path (uae_u32 lock, char *out)
 {
     int i = 0;
     for (i = 0; i < MAX_FILESYSTEM_UNITS; i++) {
@@ -3331,10 +3334,17 @@ static void do_find (Unit *unit, dpacket packet, int mode, int create, int fallb
        fsdb_set_file_attrs (aino);
 
     put_long (fh + 36, k->uniq);
-    if (create == 2)
+    if (create == 2) {
        aino->elock = 1;
-    else
+       // clear comment if file already existed
+       if (aino->comment) {
+           xfree (aino->comment);
+           aino->comment = 0;
+       }
+       fsdb_set_file_attrs (aino);
+    } else {
        aino->shlock++;
+    }
     de_recycle_aino (unit, aino);
     PUT_PCK_RES1 (packet, DOS_TRUE);
 }
@@ -5403,7 +5413,7 @@ static uae_u32 REGPARAM2 mousehack_done (TrapContext *context)
        uaecptr diminfo = m68k_areg (&context->regs, 2);
        uaecptr dispinfo = m68k_areg (&context->regs, 3);
        uaecptr vp = m68k_areg (&context->regs, 4);
-       input_mousehack_status (mode, diminfo, dispinfo, vp);
+       input_mousehack_status (mode, diminfo, dispinfo, vp, m68k_dreg (&context->regs, 2));
     } else if (mode == 10) {
        amiga_clipboard_die ();
     } else if (mode == 11) {
@@ -5416,6 +5426,9 @@ static uae_u32 REGPARAM2 mousehack_done (TrapContext *context)
        amiga_clipboard_task_start (m68k_dreg (&context->regs, 0));
     } else if (mode == 15) {
        amiga_clipboard_init ();
+    } else if (mode == 16) {
+       uaecptr a2 = m68k_areg (&context->regs, 2);
+       input_mousehack_mouseoffset (a2);
     }
     return 1;
 }
@@ -5791,23 +5804,23 @@ static uae_u8 *restore_key(UnitInfo *ui, Unit *u, uae_u8 *src)
     return src;
 }
 
-static uae_u8 *restore_notify(UnitInfo *ui, Unit *u, uae_u8 *src)
+static uae_u8 *restore_notify (UnitInfo *ui, Unit *u, uae_u8 *src)
 {
-    Notify *n = (Notify*)xcalloc (sizeof (Notify), 1);
+    Notify *n = xcalloc (sizeof (Notify), 1);
     uae_u32 hash;
     char *s;
 
-    n->notifyrequest = restore_u32();
-    s = restore_string();
-    n->fullname = (char*)xmalloc (strlen(ui->volname) + 2 + strlen(s) + 1);
+    n->notifyrequest = restore_u32 ();
+    s = restore_string ();
+    n->fullname = xmalloc (strlen (ui->volname) + 2 + strlen (s) + 1);
     sprintf (n->fullname, "%s:%s", ui->volname, s);
     xfree(s);
-    s = strrchr(n->fullname, '/');
+    s = strrchr (n->fullname, '/');
     if (s)
        s++;
     else
        s = n->fullname;
-    n->partname = my_strdup(s);
+    n->partname = my_strdup (s);
     hash = notifyhash (n->fullname);
     n->next = u->notifyhash[hash];
     u->notifyhash[hash] = n;
index d365cbd74f6e93c20f277d8925ea5796379d643a..5c8385d2f180676a856f8a07173e48d3a19115ec 100644 (file)
@@ -2,14 +2,14 @@
  db(0x60); db(0x00); db(0x09); db(0x8e); db(0x00); db(0x00); db(0x07); db(0x6c);
  db(0x00); db(0x00); db(0x00); db(0x30); db(0x00); db(0x00); db(0x01); db(0x8c);
  db(0x00); db(0x00); db(0x00); db(0x1c); db(0x00); db(0x00); db(0x02); db(0x48);
- db(0x00); db(0x00); db(0x0d); db(0x5c); db(0x43); db(0xfa); db(0x15); db(0x6f);
+ db(0x00); db(0x00); db(0x0d); db(0x5c); db(0x43); db(0xfa); db(0x16); db(0x64);
  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(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(0x8a);
- db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x15); db(0x78); db(0x70); db(0x24);
+ db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x16); db(0x6d); 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(0x15); db(0x68); db(0x70); db(0x00);
+ db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x16); db(0x5d); 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);
  db(0x0a); db(0xf8); 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(0x14); db(0x73);
+ db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x15); db(0x68);
  db(0x43); db(0xfa); db(0x00); db(0x54); db(0x70); db(0x0a); db(0x61); db(0x00);
  db(0x0b); db(0xac); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c);
  db(0xff); db(0x48); db(0x61); db(0x00); db(0x0a); db(0xc4); 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(0x14); db(0x6d); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x15); db(0x62); 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(0x14); db(0x1e);
+ db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x15); db(0x13);
  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(0x70); db(0x01); db(0x4c); db(0xdf); db(0x04); db(0x00); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0xc0); db(0xc0); 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(0x12); db(0xf6); db(0x23); db(0x48);
+ db(0x22); db(0x40); db(0x41); db(0xfa); db(0x13); db(0xeb); db(0x23); db(0x48);
  db(0x00); db(0x0a); db(0x41); db(0xfa); db(0xff); db(0x28); db(0x23); db(0x48);
  db(0x00); db(0x0e); db(0x41); db(0xfa); db(0xff); db(0x20); 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(0xdc); db(0x67); db(0x04); db(0x61); db(0x00); db(0x0a); db(0x7a);
  db(0x0c); db(0x6e); db(0x00); db(0x24); db(0x00); db(0x14); db(0x65); db(0x04);
- db(0x61); db(0x00); db(0x0f); db(0x62); db(0x4c); db(0xdf); db(0x03); db(0x03);
+ db(0x61); db(0x00); db(0x0f); db(0x5a); 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);
@@ -90,7 +90,7 @@
  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(0x12); db(0x7a); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b);
+ db(0x13); db(0x6f); 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(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(0x11); db(0xcc); db(0x10); db(0x19); db(0x12); db(0x1a);
+ db(0x45); db(0xfa); db(0x12); db(0xc1); 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(0x11); db(0xa2); db(0x25); db(0x48);
- db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x11); db(0x1e); db(0x25); db(0x48);
+ db(0x00); db(0x08); db(0x41); db(0xfa); db(0x12); db(0x97); db(0x25); db(0x48);
+ db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x12); db(0x13); 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(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(0x0c); db(0x9b); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0x43); db(0xfa); db(0x0d); db(0x90); 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(0x0c); db(0x96);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0d); db(0x8b);
  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(0x0c); db(0x84); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x0d); db(0x79); 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(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(0x0b); db(0xeb); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0x43); db(0xfa); db(0x0c); db(0xe0); 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(0x0b); db(0x06);
+ db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa); db(0x0b); db(0xdc);
  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(0x0b); db(0x03);
+ db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x0b); db(0xd9);
  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(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(0x08); db(0x3f); db(0x43); db(0xfa); db(0x01); db(0x30);
+ db(0x41); db(0xfa); db(0x09); db(0x34); 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(0x01); db(0x9e); db(0x33); db(0x7c); db(0x00); db(0x0a);
+ 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(0x01); db(0x9e);
+ 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(0x01); db(0x9a);
+ 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(0x01); db(0x9a);
+ 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(0x48); db(0xe7); db(0xf0); db(0xfe); db(0x2a); db(0x48); db(0x95); db(0xca);
- db(0x97); db(0xcb); db(0x99); db(0xcc); 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(0x40); 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(0xb2); db(0x80); db(0x67); db(0x2e); db(0x26); db(0x00); db(0x91); db(0xc8);
- db(0x43); db(0xed); db(0x00); db(0x30); 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(0x30); 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(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(0x38);
- 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(0x91); db(0xc8); db(0x43); db(0xed);
- db(0x00); db(0x88); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58);
+ 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(0x88); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x01); db(0x61); db(0x00); db(0xfd); db(0x9c); db(0x4e); db(0x90);
- db(0x4c); db(0xdf); db(0x7f); db(0x0f); 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(0x01); db(0xa2); 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(0x06); db(0xaf); db(0x23); db(0x48); db(0x00); db(0x0a);
- db(0x41); db(0xfa); db(0x03); db(0x0e); 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(0x18); db(0x4a); db(0xab); db(0x00); db(0x1c);
- db(0x66); db(0xe0); db(0x43); db(0xfa); db(0x06); db(0xcd); db(0x70); db(0x00);
- db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x14);
- db(0x67); db(0x00); db(0xff); 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(0xc2);
- db(0x43); db(0xfa); db(0x06); db(0xc1); 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(0xb2); db(0x4a); db(0xad); db(0x01); db(0x9a); db(0x66); db(0x38);
- db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xa4); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa);
- db(0x05); db(0xd4); 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(0x8a);
- db(0x41); db(0xfa); db(0x05); db(0xc2); db(0x70); db(0x00); db(0x72); db(0x00);
- db(0x61); db(0x00); db(0xfd); db(0x40); db(0x2b); db(0x40); db(0x01); db(0x9a);
- db(0x67); db(0x00); db(0x02); db(0x74); db(0x60); db(0x00); db(0xff); db(0x74);
- db(0x4a); db(0xad); db(0x01); db(0x9e); db(0x66); db(0x48); db(0x4a); db(0xab);
- db(0x00); db(0x1c); db(0x66); db(0x00); db(0xff); db(0x66); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa);
- db(0x05); db(0xa1); 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(0x4a); db(0x41); db(0xfa); db(0x05); db(0x8d); db(0x70); db(0x00);
- db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0xfe); db(0x2b); db(0x40);
- db(0x01); db(0x9e); db(0x67); db(0x00); db(0x02); db(0x32); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0x4a);
- db(0x4e); db(0x90); db(0x60); db(0x00); db(0xff); db(0x26); db(0x0c); db(0x47);
- db(0x00); db(0x24); db(0x65); db(0x06); db(0x20); db(0x4b); db(0x61); db(0x00);
- db(0xfd); db(0xf8); db(0x22); db(0x6d); db(0x01); db(0x9a); db(0x45); db(0xed);
- db(0x00); db(0xce); 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(0xae);
- db(0x6a); db(0x08); db(0x0c); db(0x47); db(0x00); db(0x24); db(0x65); db(0x00);
- db(0x01); db(0xaa); db(0x15); db(0x7c); db(0x00); db(0x13); db(0x00); db(0x04);
- db(0x42); db(0x6a); db(0x00); db(0x06); db(0x22); db(0x3a); db(0xfd); db(0xb8);
+ 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(0x78);
+ 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(0x96); 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(0x8c); 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(0x80); 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(0x6e); 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(0x4d); 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(0x39);
+ 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(0x41); db(0xed); db(0x00); db(0xfa); db(0x25); db(0x48); db(0x00); db(0x0a);
- db(0x10); db(0x3a); db(0xfd); db(0x7a); db(0x6b); db(0x00); db(0x00); db(0xf2);
- db(0x0c); db(0x47); db(0x00); db(0x27); db(0x65); db(0x00); db(0x00); db(0xee);
- 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(0xa8); db(0x00); db(0x08);
- db(0x42); db(0x68); db(0x00); db(0x0c); db(0x31); db(0x7a); db(0xfd); db(0x60);
- db(0x00); db(0x0e); db(0x42); db(0x68); db(0x00); db(0x10); db(0x31); db(0x7a);
- db(0xfd); db(0x58); db(0x00); db(0x12); db(0x42); db(0x68); db(0x00); db(0x14);
- db(0x31); db(0x7a); db(0xfd); db(0x46); db(0x00); db(0x16); db(0x42); db(0x68);
- db(0x00); db(0x18); db(0x31); db(0x7a); db(0xfd); db(0x3e); db(0x00); db(0x1a);
- db(0x43); db(0xed); db(0x01); db(0x1a); 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(0x44); 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(0x36); db(0x70); db(0x00); db(0x30); db(0x3a); db(0xfd); db(0x1e);
- 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(0xfd); db(0x12); 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(0xfa); 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(0xf2); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x01);
- db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xec); db(0x6b); db(0x10);
- db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x03); db(0x30); db(0x3a);
- db(0xfc); db(0xe6); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
- db(0x30); db(0x3a); db(0xfc); db(0xd8); db(0x6b); db(0x10); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x04); db(0x30); db(0x3a); db(0xfc); db(0xd2);
- db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x3a);
- db(0xfc); db(0xc4); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x05); db(0x30); db(0x3a); db(0xfc); db(0xbe); db(0x48); db(0xc0);
- db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x70); db(0x00); db(0x30); db(0x3a);
- db(0xfc); db(0xba); 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(0x60); db(0x32);
- db(0x42); db(0x6a); db(0x00); db(0x08); db(0x0c); db(0x47); db(0x00); db(0x24);
- db(0x65); db(0x00); db(0xfd); db(0xc8); db(0x15); db(0x7c); db(0x00); db(0x02);
- db(0x00); db(0x05); db(0x30); db(0xba); db(0xfc); db(0x74); db(0x31); db(0x7a);
- db(0xfc); db(0x72); db(0x00); db(0x02); db(0x31); db(0x7a); db(0xfc); db(0x70);
- db(0x00); db(0x04); db(0x31); db(0x7a); db(0xfc); db(0x6c); db(0x00); db(0x06);
- db(0x30); db(0x3a); db(0xfc); db(0x7a); db(0xe0); db(0x40); db(0x31); db(0x40);
- db(0x00); db(0x08); db(0x61); db(0x00); db(0xfc); db(0x38); db(0x10); db(0x3a);
- db(0xfc); db(0x4c); db(0x6b); db(0x00); db(0xfd); db(0x96); db(0x36); db(0x3c);
- db(0x00); db(0x68); db(0x74); db(0x01); db(0x28); db(0x3a); db(0xfc); db(0x60);
+ 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(0xfb); db(0xf6);
+ 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(0x60); db(0x00);
- db(0xfd); db(0x4a); db(0x42); db(0x92); db(0x35); db(0x7c); db(0x04); db(0x00);
+ 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(0x0c); db(0x32); db(0x28); db(0x00); db(0x30); db(0xd2); db(0x41);
+ 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(0xfb); db(0xfa); db(0x32); db(0x28);
+ 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(0x70); db(0x60); db(0x00); db(0xfd); db(0x06); db(0x4e); db(0x75);
- db(0x4a); db(0xa9); db(0x01); db(0x9a); db(0x67); db(0x14); db(0x4a); db(0xa9);
- db(0x01); db(0x9e); db(0x67); db(0x0e); db(0x30); db(0x3a); db(0xfb); db(0xa8);
+ 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(0x42); db(0x6a); db(0x12);
- db(0x33); db(0x7c); db(0x00); db(0x32); db(0x00); db(0x42); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x02); db(0x61); db(0x00); db(0xf9); db(0xe2);
+ 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(0x41); db(0xfa); db(0x03); db(0x35);
+ db(0x70); db(0x00); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x04); db(0x32);
  db(0x43); db(0xfa); db(0x00); db(0x0a); db(0x70); db(0xf6); db(0x61); db(0x00);
- db(0xfa); db(0xa4); db(0x4e); db(0x75); db(0x9b); db(0xcd); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x38);
+ db(0xfa); db(0xac); db(0x4e); db(0x75); db(0x9b); db(0xcd); 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(0x5e); db(0x2a); db(0x40);
  db(0x2b); db(0x4e); 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(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00); db(0xf9); db(0x92);
+ db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00); db(0xf9); db(0x9a);
  db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x70); db(0x00); db(0x08); db(0xc0);
  db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x4e); db(0xae);
  db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x7a); db(0x43); db(0xfa);
- db(0x03); db(0x3d); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00);
+ db(0x04); db(0x3a); 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(0xdc);
- db(0x42); db(0xad); db(0x00); db(0x08); db(0x41); db(0xfa); db(0x02); db(0xc5);
- db(0x43); db(0xfa); db(0x00); db(0x42); db(0x70); db(0xf6); db(0x22); db(0x3c);
- db(0x00); db(0x00); db(0x0b); db(0xb8); db(0x61); db(0x00); db(0xee); db(0x98);
+ db(0x42); db(0xad); db(0x00); db(0x08); db(0x41); db(0xfa); db(0x03); db(0xc2);
+ db(0x43); db(0xfa); db(0x01); db(0x0a); db(0x70); db(0xf6); db(0x22); db(0x3c);
+ db(0x00); db(0x00); db(0x27); db(0x10); db(0x61); db(0x00); db(0xee); db(0xa0);
  db(0x70); 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(0x44); db(0x4e); db(0x90);
- db(0x20); db(0x0d); db(0x67); db(0x18); db(0x2c); db(0x6d); db(0x00); db(0x14);
+ db(0x72); db(0x0a); db(0x61); db(0x00); db(0xf9); db(0x4c); db(0x4e); db(0x90);
+ 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(0x70); db(0x38);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00); db(0x4e); db(0x75);
+ 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(0x58);
+ 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(0xc0); 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(0x02); db(0xd0); 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(0x02); db(0xc0);
+ 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(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(0xf9); db(0x10); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0xff); db(0xbc); db(0x2a); db(0x40); db(0x2c); db(0x6d); db(0x00); db(0x14);
+ db(0xf8); db(0x50); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0xfe); db(0xf4); 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(0x02); db(0xb9); db(0x70); db(0x00);
+ db(0x00); db(0x08); db(0x43); db(0xfa); db(0x02); db(0xee); db(0x70); db(0x00);
  db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2b); db(0x40); db(0x00); db(0x18);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0xff); db(0x98); db(0x2c); db(0x40);
+ db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0xd0); db(0x2c); db(0x40);
  db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa);
- db(0x02); db(0x0e); db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae);
+ db(0x02); db(0x24); 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(0x01); db(0xf8); db(0x22); db(0x08);
+ db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x02); db(0x0e); 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(0xff); db(0x62); db(0x22); db(0x00); db(0x4e); db(0xae);
+ db(0x67); db(0x00); db(0xfe); db(0x9a); 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(0xbc); db(0x72); db(0x00); db(0x32); db(0x3c); db(0x00); db(0x34);
- db(0x61); db(0x00); db(0xf9); db(0x00); db(0x28); db(0x40); db(0x4a); db(0x80);
- db(0x67); db(0x00); db(0xff); db(0x42); db(0x70); db(0x00); db(0x08); db(0xc0);
+ db(0xf7); db(0xfc); db(0x72); db(0x00); db(0x32); db(0x3c); db(0x00); db(0x34);
+ db(0x61); db(0x00); db(0xf8); db(0x40); db(0x28); db(0x40); db(0x4a); db(0x80);
+ db(0x67); db(0x00); db(0xfe); db(0x7a); 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(0x01); db(0xcc);
+ db(0x20); db(0x2d); db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x01); db(0xe7);
  db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x4a); db(0x80);
  db(0x66); db(0xe2); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0f);
- db(0x61); db(0x00); db(0xf8); db(0x66); db(0x4e); db(0x90); 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(0x38); db(0x2b); db(0x48); db(0x00); db(0x24); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x70); db(0x00); db(0x08); db(0xc0);
- db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); 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(0xf8); db(0x18); 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(0x8a); db(0x22); db(0x41); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x80); 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(0xf7); db(0x42);
- 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(0xf0); 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(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(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(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(0x55); db(0x41); db(0x45); db(0x20); db(0x63);
+ db(0x61); db(0x00); db(0xf7); db(0xa6); db(0x4e); db(0x90); db(0x61); db(0x00);
+ db(0xfe); db(0xf2); 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(0x4a); db(0x2b); db(0x48);
+ db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ 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(0x3c); 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(0x42);
+ 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(0x6c); 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(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(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(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(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(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(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(0x69); db(0x6e); db(0x74); db(0x75); db(0x69); db(0x74); db(0x69);
+ 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(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(0x03); db(0xf2);
+ 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(0x03); db(0xf2);
 
index fb1b18b6e95a3e0c04f0bf404193683050877b58..355904b03737b4e0935eb794cffbdf9634e02301 100644 (file)
@@ -84,10 +84,15 @@ extern uae_u8 handle_joystick_buttons (uae_u8);
 extern int getbuttonstate (int joy, int button);
 extern int getjoystate (int joy);
 
+#define MAGICMOUSE_BOTH 0
+#define MAGICMOUSE_NATIVE_ONLY 1
+#define MAGICMOUSE_HOST_ONLY 2
+
 extern int magicmouse_alive (void);
 extern int is_tablet (void);
 extern int inputdevice_is_tablet (void);
-extern void input_mousehack_status (int mode, uaecptr diminfo, uaecptr dispinfo, uaecptr vp);
+extern void input_mousehack_status (int mode, uaecptr diminfo, uaecptr dispinfo, uaecptr vp, uae_u32 moffset);
+extern void input_mousehack_mouseoffset (uaecptr pointerprefs);
 extern int mousehack_alive (void);
 extern void setmouseactive (int);
 
index 7ab572cc6b9139478c010f1423b3b7573a350bb6..0ad43f09c7362029836c918d09d9003f073c19f3 100644 (file)
@@ -359,6 +359,7 @@ struct uae_prefs {
     int input_mouse_speed;
     int input_tablet;
     int input_magic_mouse;
+    int input_magic_mouse_cursor;
     struct uae_input_device joystick_settings[MAX_INPUT_SETTINGS + 1][MAX_INPUT_DEVICES];
     struct uae_input_device mouse_settings[MAX_INPUT_SETTINGS + 1][MAX_INPUT_DEVICES];
     struct uae_input_device keyboard_settings[MAX_INPUT_SETTINGS + 1][MAX_INPUT_DEVICES];
index fcfd888fceebfef976b0eadb5e049b387b8e5ae4..da23a7e97edcc7f1e55fd094468c4a08b4dbec45 100644 (file)
@@ -835,7 +835,7 @@ static int mouseedge_alive, mousehack_alive_cnt;
 static int lastmx, lastmy;
 static uaecptr magicmouse_ibase, magicmouse_gfxbase;
 static int dimensioninfo_width, dimensioninfo_height, dimensioninfo_dbl;
-static int vp_xoffset, vp_yoffset;
+static int vp_xoffset, vp_yoffset, mouseoffset_x, mouseoffset_y;
 static int tablet_maxx, tablet_maxy, tablet_data;
 
 int mousehack_alive (void)
@@ -936,6 +936,7 @@ static void mousehack_reset (void)
     int off;
 
     dimensioninfo_width = dimensioninfo_height = 0;
+    mouseoffset_x = mouseoffset_y = 0;
     dimensioninfo_dbl = 0;
     mousehack_alive_cnt = 0;
     vp_xoffset = vp_yoffset = 0;
@@ -955,18 +956,27 @@ static void mousehack_enable (void)
     off = 12 + get_long (rtarea_base + 36);
     if (rtarea[off + MH_E])
        return;
-    mode = 1;
-    if (inputdevice_is_tablet () < 0)
-       mode |= 0x80;
-    write_log ("Tablet driver enabled (%s)\n", (mode & 0x80) ? "mousehack" : "real");
-    rtarea[off + MH_E] = mode;
+    mode = 0x80;
+    if (currprefs.input_tablet == TABLET_MOUSEHACK)
+       mode |= 1;
+    if (inputdevice_is_tablet () > 0)
+       mode |= 2;
+    write_log ("Tablet driver enabled (%s)\n", ((mode & 3) == 3 ? "tablet+mousehack" : ((mode & 3) == 2) ? "tablet" : "mousehack"));
+    rtarea[off + MH_E] = 0x80;
+}
+
+void input_mousehack_mouseoffset (uaecptr pointerprefs)
+{
+    mouseoffset_x = (uae_s16)get_word (pointerprefs + 28);
+    mouseoffset_y = (uae_s16)get_word (pointerprefs + 30);
+    write_log ("MO: %dx%d\n", mouseoffset_x, mouseoffset_y);
 }
 
-void input_mousehack_status (int mode, uaecptr diminfo, uaecptr dispinfo, uaecptr vp)
+void input_mousehack_status (int mode, uaecptr diminfo, uaecptr dispinfo, uaecptr vp, uae_u32 moffset)
 {
     if (mode == 0) {
        uae_u8 v = rtarea[12 + get_long (rtarea_base + 36)];
-       v |= 2;
+       v |= 0x40;
        rtarea[12 + get_long (rtarea_base + 36)] = v;
        write_log ("Tablet driver running (%02x)\n", v);
     } else if (mode == 1) {
@@ -1109,6 +1119,7 @@ void inputdevice_tablet (int x, int y, int z, int pressure, uae_u32 buttonbits,
 
     if (!memcmp (tmp, p + MH_START, MH_END - MH_START))
        return;
+    rtarea[off + MH_E] = 0xc0 | 2;
     p[MH_CNT]++;
 }
 
@@ -1145,7 +1156,7 @@ void inputdevice_tablet_info (int maxx, int maxy, int maxz, int maxax, int maxay
 
 void getgfxoffset (int *dx, int *dy, int*,int*);
 
-static void inputdevice_tablet_abs (int x, int y)
+static void inputdevice_mh_abs (int x, int y)
 {
     uae_u8 *p;
     uae_u8 tmp[4];
@@ -1158,9 +1169,13 @@ static void inputdevice_tablet_abs (int x, int y)
 
     memcpy (tmp, p + MH_ABSX, 4);
 
-    getgfxoffset (&fdx, &fdy, &fmx, &fmy);
-    x -= fdx;
-    y -= fdy;
+    if (!picasso_on) {
+       getgfxoffset (&fdx, &fdy, &fmx, &fmy);
+       x -= fdx - 1;
+       y -= fdy - 1;
+    }
+    x -= mouseoffset_x + 1;
+    y -= mouseoffset_y + 2;
 
     p[MH_ABSX] = x >> 8;
     p[MH_ABSX + 1] = x;
@@ -1169,11 +1184,13 @@ static void inputdevice_tablet_abs (int x, int y)
 
     if (!memcmp (tmp, p + MH_ABSX, 4))
        return;
+    rtarea[off + MH_E] = 0xc0 | 1;
     p[MH_CNT]++;
     tablet_data = 1;
 }
 
-static void inputdevice_tablet_abs_v36 (int x, int y)
+#if 0
+static void inputdevice_mh_abs_v36 (int x, int y)
 {
     uae_u8 *p;
     uae_u8 tmp[MH_END];
@@ -1290,17 +1307,20 @@ static void inputdevice_tablet_abs_v36 (int x, int y)
     p[MH_CNT]++;
     tablet_data = 1;
 }
+#endif
 
 static void mousehack_helper (void)
 {
     int x, y;
 
-    if (currprefs.input_magic_mouse == 0 || currprefs.input_tablet == 0)
+    if (currprefs.input_magic_mouse == 0 || currprefs.input_tablet < TABLET_MOUSEHACK)
        return;
+#if 0
     if (kickstart_version >= 36) {
-       inputdevice_tablet_abs_v36 (lastmx, lastmy);
+       inputdevice_mh_abs_v36 (lastmx, lastmy);
        return;
     }
+#endif
 #ifdef PICASSO96
     if (picasso_on) {
        x = lastmx - picasso96_state.XOffset;
@@ -1311,7 +1331,7 @@ static void mousehack_helper (void)
        x = coord_native_to_amiga_x (lastmx);
        y = coord_native_to_amiga_y (lastmy) << 1;
     }
-    inputdevice_tablet_abs (x, y);
+    inputdevice_mh_abs (x, y);
 }
 
 static int mouseedge_x, mouseedge_y, mouseedge_time;
diff --git a/main.c b/main.c
index 25f63641a3e2c9b6168d5812d0f0e006433f5328..0041e358167ec69a46632f5d08da1dc81535736b 100644 (file)
--- a/main.c
+++ b/main.c
@@ -497,10 +497,9 @@ static void parse_cmdline (int argc, char **argv)
            target_cfgfile_load (&currprefs, argv[i] + 8, -1, 1);
        } else if (strncmp (argv[i], "-statefile=", 11) == 0) {
            savestate_state = STATE_DORESTORE;
-           strcpy (savestate_fname, argv[++i]);
-       }
-       /* Check for new-style "-f xxx" argument, where xxx is config-file */
-       else if (strcmp (argv[i], "-f") == 0) {
+           strcpy (savestate_fname, argv[i] + 11);
+       } else if (strcmp (argv[i], "-f") == 0) {
+           /* Check for new-style "-f xxx" argument, where xxx is config-file */
            if (i + 1 == argc) {
                write_log ("Missing argument for '-f' option.\n");
            } else {
index 59db874dd40711766a46031cbbaf76d24e0fbdce..893424df01804c763c3e510090f0a16df1529b4d 100644 (file)
@@ -365,7 +365,7 @@ int fsdb_set_file_attrs (a_inode *aino)
 
     aino->dirty = 1;
     if (aino->volflags & MYVOLUMEINFO_STREAMS) {
-       if (needs_fsdb(aino)) {
+       if (needs_fsdb (aino)) {
            create_uaefsdb (aino, fsdb, mode);
            write_uaefsdb (aino->nname, fsdb);
        } else {
index 938deb8cc0c1f88eddc17b103ba5224b381d1974..725faea539c9056e36b146046b0c2e8871ed6744 100644 (file)
@@ -32,7 +32,7 @@
 
 #define MULTIDISPLAY 0
 #define P96DX 0
-#define WINCURSOR 0
+#define WINCURSOR 1
 
 #include "sysconfig.h"
 #include "sysdeps.h"
@@ -1515,6 +1515,8 @@ int createwindowscursor (uaecptr src, int w, int h, int hiressprite, int doubled
 
     if (isfullscreen () > 0 || currprefs.input_tablet == 0 || currprefs.input_magic_mouse == 0)
        goto exit;
+    if (currprefs.input_magic_mouse_cursor != MAGICMOUSE_HOST_ONLY)
+       goto exit;
 
     if (chipset) {
        if (!sprite_0 || !mousehack_alive ()) {
@@ -1548,8 +1550,10 @@ int createwindowscursor (uaecptr src, int w, int h, int hiressprite, int doubled
            !memcmp (tmp_sprite_data, realsrc, datasize) && !memcmp (tmp_sprite_colors, ct, sizeof (uae_u32)*4)
            && hiressprite == tmp_sprite_hires && doubledsprite == tmp_sprite_doubled
        ) {
-           if (GetCursor () == wincursor)
+           if (GetCursor () == wincursor) {
+               wincursor_shown = 1;
                return 1;
+           }
        }
     }
     write_log ("wincursor: %dx%d hires=%d doubled=%d\n", w2, h2, hiressprite, doubledsprite);
@@ -1639,17 +1643,20 @@ end:
     
     if (wincursor) {
        SetCursor (wincursor);
-#if WINCURSOR > 0
        wincursor_shown = 1;
-#endif
     }
 
     if (!ret)
        write_log ("RTG Windows color cursor creation failed\n");
 
 exit:
-    if (wincursor == oldwincursor)
-       SetCursor (normalcursor);
+    if (currprefs.input_tablet && currprefs.input_magic_mouse && currprefs.input_magic_mouse_cursor == MAGICMOUSE_NATIVE_ONLY) {
+       if (GetCursor () != NULL)
+           SetCursor (NULL);
+    } else {
+       if (wincursor == oldwincursor)
+           SetCursor (normalcursor);
+    }
     if (oldwincursor)
        DestroyIcon (oldwincursor);
     oldwincursor = NULL;
index f5d649da613e971739c0c6c41347fb02f974598c..83a41ad293fb3c5ac698b2d1825f6cc4b7e276eb 100644 (file)
 #define IDC_PORT1_JOYS                  1027
 #define IDC_SCREENMODE_RTG              1027
 #define IDC_MBMEM1                      1028
+#define IDC_PORT_TABLE_CURSOR           1028
+#define IDC_PORT_TABLET_CURSOR          1028
 #define IDC_SLOWMEM                     1030
 #define IDC_MBMEM2                      1031
 #define IDC_PARALLEL                    1033
 #define IDC_QUICKSTART_HOSTCONFIG       1679
 #define IDC_PATHS_RIP                   1679
 #define IDC_DF1QQ                       1680
-#define IDC_PATHS_SAVEIMAGES2           1680
 #define IDC_PATHS_RIPS                  1680
 #define IDC_QUICKSTART_SETCONFIG        1681
 #define IDC_CONFIGAUTO                  1682
index 32ac9eac940678e04c0af6884a14f65cfd4f7a30..91104a386bf5dea117cfc6fc8af345a970369d9f 100644 (file)
@@ -381,13 +381,15 @@ BEGIN
     RTEXT           "Port 1:",IDC_STATIC,11,49,25,15,SS_CENTERIMAGE\r
     LTEXT           "X-Arcade layout information []#1",IDC_STATIC,16,68,106,15,SS_NOTIFY | SS_CENTERIMAGE\r
     GROUPBOX        "Mouse and Joystick settings",IDC_STATIC,4,15,292,76\r
-    GROUPBOX        "Mouse extra settings",IDC_STATIC,4,92,292,67\r
+    GROUPBOX        "Mouse extra settings",IDC_STATIC,4,92,292,76\r
     RTEXT           "Mouse speed:",IDC_STATIC,17,106,56,10,SS_CENTERIMAGE\r
     EDITTEXT        IDC_INPUTSPEEDM,87,106,25,12,ES_NUMBER\r
-    CONTROL         "Install virtual mouse driver",IDC_PORT_TABLET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,123,120,10\r
+    CONTROL         "Install virtual mouse driver",IDC_PORT_TABLET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,118,120,10\r
     CONTROL         "Full tablet input emulation",IDC_PORT_TABLET_FULL,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,137,121,10\r
-    CONTROL         "Magic Mouse",IDC_PORT_MOUSETRICK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,109,119,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,151,121,10\r
+    CONTROL         "Magic Mouse",IDC_PORT_MOUSETRICK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,106,119,10\r
+    COMBOBOX        IDC_PORT_TABLET_CURSOR,167,132,119,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "Magic Mouse cursor mode:",IDC_STATIC,17,135,138,10,SS_CENTERIMAGE\r
 END\r
 \r
 IDD_CONTRIBUTORS DIALOGEX 0, 0, 411, 242\r
index b59021f1f3ca4b6ebd05da137a9378ca84a53236..cbb802eb13aa5ba77696c8a87a7026e675d8001b 100644 (file)
@@ -3,6 +3,7 @@ rm -rf bak
 mkdir bak
 copy c:\projects\winuae\src\ c:\projects\winuae_bak\bak\ /s
 copy d:\amiga\text\winuaechangelog.txt c:\projects\winuae_bak\bak\od-win32
+copy d:\amiga\amiga\filesys.asm c:\projects\winuae_bak\bak
 
 cd bak
 del *.obj *.ilk *.exe *.pdb *.pch *.idb /s
index cdca089fec8e325a01496a394fabb5fcfe80f347..8a2da4061746a4eb662d8a635093da07520ff338 100644 (file)
@@ -487,8 +487,13 @@ void setpriority (struct threadpriorities *pri)
 
 static void setcursorshape (void)
 {
-    if (!picasso_setwincursor ())
-       SetCursor (normalcursor);
+    if (currprefs.input_tablet && currprefs.input_magic_mouse && currprefs.input_magic_mouse_cursor == MAGICMOUSE_NATIVE_ONLY) {
+       if (GetCursor () != NULL)
+           SetCursor (NULL);
+    }  else if (!picasso_setwincursor ()) {
+       if (GetCursor () != normalcursor)
+           SetCursor (normalcursor);
+    }
 }
 
 static void releasecapture (void)
@@ -527,7 +532,7 @@ void setmouseactive (int active)
     if (isfullscreen () <= 0 && currprefs.input_magic_mouse && currprefs.input_tablet > 0) {
        if (mousehack_alive ())
            return;
-       SetCursor (normalcursor);
+        SetCursor (normalcursor);
     }
 
     if (mouseactive > 0)
index 3c7116a5f103b59e76ba8d73acbf69adaf21e0d8..4b84833fa4e806853b82d9a0c34ab7c284210265 100644 (file)
@@ -17,8 +17,8 @@
 
 #define WINUAEPUBLICBETA 1
 
-#define WINUAEBETA "11"
-#define WINUAEDATE MAKEBD(2009, 2, 5)
+#define WINUAEBETA "12"
+#define WINUAEDATE MAKEBD(2009, 2, 14)
 #define WINUAEEXTRA ""
 #define WINUAEREV ""
 
index df40b23caf4b170f14893186e82f0048d283d192..67c72fac34e4de15b55bfcc1572f1a9ca6ed6320 100644 (file)
@@ -1285,7 +1285,7 @@ static void prefs_to_gui (struct uae_prefs *p)
     workprefs = *p;
     /* filesys hack */
     workprefs.mountitems = currprefs.mountitems;
-    memcpy(&workprefs.mountconfig, &currprefs.mountconfig, MOUNT_CONFIG_SIZE * sizeof (struct uaedev_config_info));
+    memcpy (&workprefs.mountconfig, &currprefs.mountconfig, MOUNT_CONFIG_SIZE * sizeof (struct uaedev_config_info));
 
     updatewinfsmode (&workprefs);
 #if 0
@@ -1424,9 +1424,6 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs
            break;
        }
     }
-    openFileName.lStructSize = sizeof (OPENFILENAME);
-    openFileName.hwndOwner = hDlg;
-    openFileName.hInstance = hInst;
 
     szFilter[0] = 0;
     szFilter[1] = 0;
@@ -1556,6 +1553,8 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs
        p += strlen(p) + 1;
        *p = 0;
     }
+    openFileName.lStructSize = sizeof (OPENFILENAME);
+    openFileName.hwndOwner = hDlg;
     openFileName.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST |
        OFN_LONGNAMES | OFN_HIDEREADONLY | OFN_NOCHANGEDIR;
     openFileName.lpstrFilter = szFilter;
@@ -3937,7 +3936,7 @@ static void init_quickstartdlg (HWND hDlg)
 
     qssize = sizeof (tmp1);
     regquerystr (NULL, "QuickStartHostConfig", hostconf, &qssize);
-    if (firsttime == 0) {
+    if (firsttime == 0 && workprefs.start_gui) {
        regqueryint (NULL, "QuickStartModel", &quickstart_model);
        regqueryint (NULL, "QuickStartConfiguration", &quickstart_conf);
        regqueryint (NULL, "QuickStartCompatibility", &quickstart_compa);
@@ -3950,8 +3949,8 @@ static void init_quickstartdlg (HWND hDlg)
            load_quickstart (hDlg, 1);
            quickstarthost (hDlg, hostconf);
        }
-       firsttime = 1;
     }
+    firsttime = 1;
 
     CheckDlgButton (hDlg, IDC_QUICKSTARTMODE, quickstart);
 
@@ -8313,200 +8312,200 @@ static INT_PTR CALLBACK FloppyDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARA
 
     switch (msg)
     {
-    case WM_INITDIALOG:
-    {
-       char ft35dd[20], ft35hd[20], ft525sd[20], ftdis[20], ft35ddescom[20];
-       int df0texts[] = { IDC_DF0TEXT, IDC_DF1TEXT, IDC_DF2TEXT, IDC_DF3TEXT, -1 };
-
-       WIN32GUI_LoadUIString (IDS_FLOPPYTYPE35DD, ft35dd, sizeof ft35dd);
-       WIN32GUI_LoadUIString (IDS_FLOPPYTYPE35HD, ft35hd, sizeof ft35hd);
-       WIN32GUI_LoadUIString (IDS_FLOPPYTYPE525SD, ft525sd, sizeof ft525sd);
-       WIN32GUI_LoadUIString (IDS_FLOPPYTYPE35DDESCOM, ft35ddescom, sizeof ft35ddescom);
-       WIN32GUI_LoadUIString (IDS_FLOPPYTYPEDISABLED, ftdis, sizeof ftdis);
-       pages[FLOPPY_ID] = hDlg;
-       if (workprefs.floppy_speed > 0 && workprefs.floppy_speed < 10)
-           workprefs.floppy_speed = 100;
-       currentpage = FLOPPY_ID;
-       SendDlgItemMessage (hDlg, IDC_FLOPPYSPD, TBM_SETRANGE, TRUE, MAKELONG (0, 4));
-       SendDlgItemMessage (hDlg, IDC_FLOPPYSPD, TBM_SETPAGESIZE, 0, 1);
-       SendDlgItemMessage (hDlg, IDC_FLOPPYTYPE, CB_RESETCONTENT, 0, 0L);
-       SendDlgItemMessage (hDlg, IDC_FLOPPYTYPE, CB_ADDSTRING, 0, (LPARAM)ft35dd);
-       SendDlgItemMessage (hDlg, IDC_FLOPPYTYPE, CB_ADDSTRING, 0, (LPARAM)ft35hd);
-       SendDlgItemMessage (hDlg, IDC_FLOPPYTYPE, CB_ADDSTRING, 0, (LPARAM)ft525sd);
-       SendDlgItemMessage (hDlg, IDC_FLOPPYTYPE, CB_SETCURSEL, 0, 0);
-       for (i = 0; i < 4; i++) {
-           int f_type = floppybuttons[i][3];
-           SendDlgItemMessage (hDlg, f_type, CB_RESETCONTENT, 0, 0L);
-           SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ftdis);
-           SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft35dd);
-           SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft35hd);
-           SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft525sd);
-           SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft35ddescom);
+       case WM_INITDIALOG:
+       {
+           char ft35dd[20], ft35hd[20], ft525sd[20], ftdis[20], ft35ddescom[20];
+           int df0texts[] = { IDC_DF0TEXT, IDC_DF1TEXT, IDC_DF2TEXT, IDC_DF3TEXT, -1 };
+
+           WIN32GUI_LoadUIString (IDS_FLOPPYTYPE35DD, ft35dd, sizeof ft35dd);
+           WIN32GUI_LoadUIString (IDS_FLOPPYTYPE35HD, ft35hd, sizeof ft35hd);
+           WIN32GUI_LoadUIString (IDS_FLOPPYTYPE525SD, ft525sd, sizeof ft525sd);
+           WIN32GUI_LoadUIString (IDS_FLOPPYTYPE35DDESCOM, ft35ddescom, sizeof ft35ddescom);
+           WIN32GUI_LoadUIString (IDS_FLOPPYTYPEDISABLED, ftdis, sizeof ftdis);
+           pages[FLOPPY_ID] = hDlg;
+           if (workprefs.floppy_speed > 0 && workprefs.floppy_speed < 10)
+               workprefs.floppy_speed = 100;
+           currentpage = FLOPPY_ID;
+           SendDlgItemMessage (hDlg, IDC_FLOPPYSPD, TBM_SETRANGE, TRUE, MAKELONG (0, 4));
+           SendDlgItemMessage (hDlg, IDC_FLOPPYSPD, TBM_SETPAGESIZE, 0, 1);
+           SendDlgItemMessage (hDlg, IDC_FLOPPYTYPE, CB_RESETCONTENT, 0, 0L);
+           SendDlgItemMessage (hDlg, IDC_FLOPPYTYPE, CB_ADDSTRING, 0, (LPARAM)ft35dd);
+           SendDlgItemMessage (hDlg, IDC_FLOPPYTYPE, CB_ADDSTRING, 0, (LPARAM)ft35hd);
+           SendDlgItemMessage (hDlg, IDC_FLOPPYTYPE, CB_ADDSTRING, 0, (LPARAM)ft525sd);
+           SendDlgItemMessage (hDlg, IDC_FLOPPYTYPE, CB_SETCURSEL, 0, 0);
+           for (i = 0; i < 4; i++) {
+               int f_type = floppybuttons[i][3];
+               SendDlgItemMessage (hDlg, f_type, CB_RESETCONTENT, 0, 0L);
+               SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ftdis);
+               SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft35dd);
+               SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft35hd);
+               SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft525sd);
+               SendDlgItemMessage (hDlg, f_type, CB_ADDSTRING, 0, (LPARAM)ft35ddescom);
+           }
+           setmultiautocomplete (hDlg, df0texts);
        }
-       setmultiautocomplete (hDlg, df0texts);
-    }
-    case WM_USER:
-       recursive++;
-       SetDlgItemText (hDlg, IDC_DF0TEXT, workprefs.df[0]);
-       SetDlgItemText (hDlg, IDC_DF1TEXT, workprefs.df[1]);
-       SetDlgItemText (hDlg, IDC_DF2TEXT, workprefs.df[2]);
-       SetDlgItemText (hDlg, IDC_DF3TEXT, workprefs.df[3]);
-       SetDlgItemText (hDlg, IDC_DF0TEXTQ, workprefs.df[0]);
-       SetDlgItemText (hDlg, IDC_DF1TEXTQ, workprefs.df[1]);
-       SetDlgItemText (hDlg, IDC_CREATE_NAME, diskname);
-       SendDlgItemMessage (hDlg, IDC_FLOPPYSPD, TBM_SETPOS, TRUE,
-           workprefs.floppy_speed ? exact_log2 ((workprefs.floppy_speed) / 100) + 1 : 0);
-       out_floppyspeed (hDlg);
-       addallfloppies (hDlg);
-       recursive--;
-       break;
-
-    case WM_CONTEXTMENU:
-       diskselectmenu (hDlg, wParam);
-       break;
+       case WM_USER:
+           recursive++;
+           SetDlgItemText (hDlg, IDC_DF0TEXT, workprefs.df[0]);
+           SetDlgItemText (hDlg, IDC_DF1TEXT, workprefs.df[1]);
+           SetDlgItemText (hDlg, IDC_DF2TEXT, workprefs.df[2]);
+           SetDlgItemText (hDlg, IDC_DF3TEXT, workprefs.df[3]);
+           SetDlgItemText (hDlg, IDC_DF0TEXTQ, workprefs.df[0]);
+           SetDlgItemText (hDlg, IDC_DF1TEXTQ, workprefs.df[1]);
+           SetDlgItemText (hDlg, IDC_CREATE_NAME, diskname);
+           SendDlgItemMessage (hDlg, IDC_FLOPPYSPD, TBM_SETPOS, TRUE,
+               workprefs.floppy_speed ? exact_log2 ((workprefs.floppy_speed) / 100) + 1 : 0);
+           out_floppyspeed (hDlg);
+           addallfloppies (hDlg);
+           recursive--;
+           break;
 
-    case WM_COMMAND:
-       if (recursive > 0)
+       case WM_CONTEXTMENU:
+           diskselectmenu (hDlg, wParam);
            break;
-       recursive++;
-       if (HIWORD (wParam) == CBN_SELCHANGE || HIWORD (wParam) == CBN_KILLFOCUS)  {
+
+       case WM_COMMAND:
+           if (recursive > 0)
+               break;
+           recursive++;
+           if (HIWORD (wParam) == CBN_SELCHANGE || HIWORD (wParam) == CBN_KILLFOCUS)  {
+               switch (LOWORD (wParam))
+               {
+                   case IDC_DF0TEXT:
+                   case IDC_DF0TEXTQ:
+                   getfloppyname (hDlg, 0);
+                   addfloppytype (hDlg, 0);
+                   addfloppyhistory (hDlg);
+                   break;
+                   case IDC_DF1TEXT:
+                   case IDC_DF1TEXTQ:
+                   getfloppyname (hDlg, 1);
+                   addfloppytype (hDlg, 1);
+                   addfloppyhistory (hDlg);
+                   break;
+                   case IDC_DF2TEXT:
+                   getfloppyname (hDlg, 2);
+                   addfloppytype (hDlg, 2);
+                   addfloppyhistory (hDlg);
+                   break;
+                   case IDC_DF3TEXT:
+                   getfloppyname (hDlg, 3);
+                   addfloppytype (hDlg, 3);
+                   addfloppyhistory (hDlg);
+                   break;
+                   case IDC_DF0TYPE:
+                   getfloppytype (hDlg, 0);
+                   break;
+                   case IDC_DF1TYPE:
+                   getfloppytype (hDlg, 1);
+                   break;
+                   case IDC_DF2TYPE:
+                   getfloppytype (hDlg, 2);
+                   break;
+                   case IDC_DF3TYPE:
+                   getfloppytype (hDlg, 3);
+                   break;
+               }
+           }
            switch (LOWORD (wParam))
            {
-               case IDC_DF0TEXT:
-               case IDC_DF0TEXTQ:
-               getfloppyname (hDlg, 0);
+           case IDC_DF0ENABLE:
+           case IDC_DF0QENABLE:
+               getfloppytypeq (hDlg, 0);
+               break;
+           case IDC_DF1ENABLE:
+           case IDC_DF1QENABLE:
+               getfloppytypeq (hDlg, 1);
+               break;
+           case IDC_DF2ENABLE:
+               getfloppytypeq (hDlg, 2);
+               break;
+           case IDC_DF3ENABLE:
+               getfloppytypeq (hDlg, 3);
+               break;
+           case IDC_DF0WP:
+           case IDC_DF0WPQ:
+               floppysetwriteprotect (hDlg, 0, currentpage == QUICKSTART_ID ? IsDlgButtonChecked (hDlg, IDC_DF0WPQ) : IsDlgButtonChecked (hDlg, IDC_DF0WP));
+               break;
+           case IDC_DF1WP:
+           case IDC_DF1WPQ:
+               floppysetwriteprotect (hDlg, 1, currentpage == QUICKSTART_ID ? IsDlgButtonChecked (hDlg, IDC_DF1WPQ) : IsDlgButtonChecked (hDlg, IDC_DF1WP));
+               break;
+           case IDC_DF2WP:
+               floppysetwriteprotect (hDlg, 2, IsDlgButtonChecked (hDlg, IDC_DF2WP));
+               break;
+           case IDC_DF3WP:
+               floppysetwriteprotect (hDlg, 3, IsDlgButtonChecked (hDlg, IDC_DF3WP));
+               break;
+           case IDC_DF0:
+           case IDC_DF0QQ:
+               diskselect (hDlg, wParam, &workprefs, 0, NULL);
+               break;
+           case IDC_DF1:
+           case IDC_DF1QQ:
+               diskselect (hDlg, wParam, &workprefs, 1, NULL);
+               break;
+           case IDC_DF2:
+               diskselect (hDlg, wParam, &workprefs, 2, NULL);
+               break;
+           case IDC_DF3:
+               diskselect (hDlg, wParam, &workprefs, 3, NULL);
+               break;
+           case IDC_EJECT0:
+           case IDC_EJECT0Q:
+               SetDlgItemText (hDlg, IDC_DF0TEXT, "");
+               SetDlgItemText (hDlg, IDC_DF0TEXTQ, "");
+               workprefs.df[0][0] = 0;
                addfloppytype (hDlg, 0);
-               addfloppyhistory (hDlg);
                break;
-               case IDC_DF1TEXT:
-               case IDC_DF1TEXTQ:
-               getfloppyname (hDlg, 1);
+           case IDC_EJECT1:
+           case IDC_EJECT1Q:
+               SetDlgItemText (hDlg, IDC_DF1TEXT, "");
+               SetDlgItemText (hDlg, IDC_DF1TEXTQ, "");
+               workprefs.df[1][0] = 0;
                addfloppytype (hDlg, 1);
-               addfloppyhistory (hDlg);
                break;
-               case IDC_DF2TEXT:
-               getfloppyname (hDlg, 2);
+           case IDC_EJECT2:
+               SetDlgItemText (hDlg, IDC_DF2TEXT, "");
+               workprefs.df[2][0] = 0;
                addfloppytype (hDlg, 2);
-               addfloppyhistory (hDlg);
                break;
-               case IDC_DF3TEXT:
-               getfloppyname (hDlg, 3);
+           case IDC_EJECT3:
+               SetDlgItemText (hDlg, IDC_DF3TEXT, "");
+               workprefs.df[3][0] = 0;
                addfloppytype (hDlg, 3);
-               addfloppyhistory (hDlg);
                break;
-               case IDC_DF0TYPE:
-               getfloppytype (hDlg, 0);
+           case IDC_SAVEIMAGE0:
+               deletesaveimage (hDlg, 0);
+               break;
+           case IDC_SAVEIMAGE1:
+               deletesaveimage (hDlg, 1);
+               break;
+           case IDC_SAVEIMAGE2:
+               deletesaveimage (hDlg, 2);
                break;
-               case IDC_DF1TYPE:
-               getfloppytype (hDlg, 1);
+           case IDC_SAVEIMAGE3:
+               deletesaveimage (hDlg, 3);
                break;
-               case IDC_DF2TYPE:
-               getfloppytype (hDlg, 2);
+           case IDC_CREATE:
+               DiskSelection(hDlg, wParam, 1, &workprefs, 0);
                break;
-               case IDC_DF3TYPE:
-               getfloppytype (hDlg, 3);
+           case IDC_CREATE_RAW:
+               DiskSelection(hDlg, wParam, 1, &workprefs, 0);
                break;
            }
-       }
-       switch (LOWORD (wParam))
-       {
-       case IDC_DF0ENABLE:
-       case IDC_DF0QENABLE:
-           getfloppytypeq (hDlg, 0);
-           break;
-       case IDC_DF1ENABLE:
-       case IDC_DF1QENABLE:
-           getfloppytypeq (hDlg, 1);
-           break;
-       case IDC_DF2ENABLE:
-           getfloppytypeq (hDlg, 2);
-           break;
-       case IDC_DF3ENABLE:
-           getfloppytypeq (hDlg, 3);
-           break;
-       case IDC_DF0WP:
-       case IDC_DF0WPQ:
-           floppysetwriteprotect (hDlg, 0, currentpage == QUICKSTART_ID ? IsDlgButtonChecked (hDlg, IDC_DF0WPQ) : IsDlgButtonChecked (hDlg, IDC_DF0WP));
-           break;
-       case IDC_DF1WP:
-       case IDC_DF1WPQ:
-           floppysetwriteprotect (hDlg, 1, currentpage == QUICKSTART_ID ? IsDlgButtonChecked (hDlg, IDC_DF1WPQ) : IsDlgButtonChecked (hDlg, IDC_DF1WP));
-           break;
-       case IDC_DF2WP:
-           floppysetwriteprotect (hDlg, 2, IsDlgButtonChecked (hDlg, IDC_DF2WP));
-           break;
-       case IDC_DF3WP:
-           floppysetwriteprotect (hDlg, 3, IsDlgButtonChecked (hDlg, IDC_DF3WP));
-           break;
-       case IDC_DF0:
-       case IDC_DF0QQ:
-           diskselect (hDlg, wParam, &workprefs, 0, NULL);
-           break;
-       case IDC_DF1:
-       case IDC_DF1QQ:
-           diskselect (hDlg, wParam, &workprefs, 1, NULL);
-           break;
-       case IDC_DF2:
-           diskselect (hDlg, wParam, &workprefs, 2, NULL);
-           break;
-       case IDC_DF3:
-           diskselect (hDlg, wParam, &workprefs, 3, NULL);
-           break;
-       case IDC_EJECT0:
-       case IDC_EJECT0Q:
-           SetDlgItemText (hDlg, IDC_DF0TEXT, "");
-           SetDlgItemText (hDlg, IDC_DF0TEXTQ, "");
-           workprefs.df[0][0] = 0;
-           addfloppytype (hDlg, 0);
-           break;
-       case IDC_EJECT1:
-       case IDC_EJECT1Q:
-           SetDlgItemText (hDlg, IDC_DF1TEXT, "");
-           SetDlgItemText (hDlg, IDC_DF1TEXTQ, "");
-           workprefs.df[1][0] = 0;
-           addfloppytype (hDlg, 1);
-           break;
-       case IDC_EJECT2:
-           SetDlgItemText (hDlg, IDC_DF2TEXT, "");
-           workprefs.df[2][0] = 0;
-           addfloppytype (hDlg, 2);
-           break;
-       case IDC_EJECT3:
-           SetDlgItemText (hDlg, IDC_DF3TEXT, "");
-           workprefs.df[3][0] = 0;
-           addfloppytype (hDlg, 3);
-           break;
-       case IDC_SAVEIMAGE0:
-           deletesaveimage (hDlg, 0);
-           break;
-       case IDC_SAVEIMAGE1:
-           deletesaveimage (hDlg, 1);
-           break;
-       case IDC_SAVEIMAGE2:
-           deletesaveimage (hDlg, 2);
-           break;
-       case IDC_SAVEIMAGE3:
-           deletesaveimage (hDlg, 3);
-           break;
-       case IDC_CREATE:
-           DiskSelection(hDlg, wParam, 1, &workprefs, 0);
-           break;
-       case IDC_CREATE_RAW:
-           DiskSelection(hDlg, wParam, 1, &workprefs, 0);
+           recursive--;
            break;
-       }
-       recursive--;
-       break;
 
-    case WM_HSCROLL:
-       workprefs.floppy_speed = (int)SendMessage (GetDlgItem (hDlg, IDC_FLOPPYSPD), TBM_GETPOS, 0, 0);
-       if (workprefs.floppy_speed > 0) {
-           workprefs.floppy_speed--;
-           workprefs.floppy_speed = 1 << workprefs.floppy_speed;
-           workprefs.floppy_speed *= 100;
-       }
-       out_floppyspeed (hDlg);
-       break;
+       case WM_HSCROLL:
+           workprefs.floppy_speed = (int)SendMessage (GetDlgItem (hDlg, IDC_FLOPPYSPD), TBM_GETPOS, 0, 0);
+           if (workprefs.floppy_speed > 0) {
+               workprefs.floppy_speed--;
+               workprefs.floppy_speed = 1 << workprefs.floppy_speed;
+               workprefs.floppy_speed *= 100;
+           }
+           out_floppyspeed (hDlg);
+           break;
     }
 
     return FALSE;
@@ -8799,6 +8798,7 @@ static void enable_for_gameportsdlg (HWND hDlg)
     int v = full_property_sheet;
     ew (hDlg, IDC_PORT_TABLET_FULL, v && is_tablet () && workprefs.input_tablet > 0);
     ew (hDlg, IDC_PORT_MOUSETRICK, v);
+    ew (hDlg, IDC_PORT_TABLET_CURSOR, v && workprefs.input_tablet > 0);
 }
 
 static void enable_for_portsdlg (HWND hDlg)
@@ -8843,6 +8843,7 @@ static void updatejoyport (HWND hDlg)
 
     SetDlgItemInt (hDlg, IDC_INPUTSPEEDM, workprefs.input_mouse_speed, FALSE);
     CheckDlgButton (hDlg, IDC_PORT_MOUSETRICK, workprefs.input_magic_mouse);
+    SendDlgItemMessage (hDlg, IDC_PORT_TABLET_CURSOR, CB_SETCURSEL, workprefs.input_magic_mouse_cursor, 0);
     CheckDlgButton (hDlg, IDC_PORT_TABLET, workprefs.input_tablet > 0);
     CheckDlgButton (hDlg, IDC_PORT_TABLET_FULL, workprefs.input_tablet == TABLET_REAL);
 
@@ -8931,6 +8932,7 @@ static void values_from_gameportsdlg (HWND hDlg, int d)
            currprefs.input_mouse_speed = workprefs.input_mouse_speed = i;
 
        workprefs.input_magic_mouse = IsDlgButtonChecked (hDlg, IDC_PORT_MOUSETRICK) ? -1 : 0;
+       workprefs.input_magic_mouse_cursor = SendDlgItemMessage (hDlg, IDC_PORT_TABLET_CURSOR, CB_GETCURSEL, 0, 0L);
        workprefs.input_tablet = 0;
        if (IsDlgButtonChecked (hDlg, IDC_PORT_TABLET)) {
            workprefs.input_tablet = TABLET_MOUSEHACK;
@@ -9222,6 +9224,10 @@ static INT_PTR CALLBACK GamePortsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP
        recursive++;
        pages[GAMEPORTS_ID] = hDlg;
        currentpage = GAMEPORTS_ID;
+       SendDlgItemMessage (hDlg, IDC_PORT_TABLET_CURSOR, CB_RESETCONTENT, 0, 0L);
+        SendDlgItemMessage (hDlg, IDC_PORT_TABLET_CURSOR, CB_ADDSTRING, 0, (LPARAM)"Show both cursors");
+        SendDlgItemMessage (hDlg, IDC_PORT_TABLET_CURSOR, CB_ADDSTRING, 0, (LPARAM)"Show native cursor only");
+        SendDlgItemMessage (hDlg, IDC_PORT_TABLET_CURSOR, CB_ADDSTRING, 0, (LPARAM)"Show host cursor only");
        inputdevice_updateconfig (&workprefs);
        enable_for_gameportsdlg (hDlg);
        updatejoyport (hDlg);
index 564d00596cecc89898cca0b0cea1bd28048be300..7a0388912d85e619ed750d731c7f5fbf4d55c856 100644 (file)
@@ -1,4 +1,24 @@
 
+Beta 12:
+
+- file comment was not reset when file already existed and file was
+  opened mode = MODE_NEWFILE, also caused lost file comment if file
+  was opened and old comment was set again (probably another "since
+  the beginning bug") Thanks to TC for finding easy test case.
+- mousehack/tablet support "mouse sync" updates (still not fixed)
+- "Magic mouse cursor" mode configuration added.
+  - Both = show standard Windows and Amiga cursors
+  - Native = show Amiga cursor only
+  - Host = show Windows cursor only (with colors and shape copied
+    from real hidden Amiga cursor) This mode fakes really smooth
+    looking cursor movement (as long as positioning is correct..)
+- 'e' debugger command OCS/ECS color register contents are shown
+  correctly in AGA mode
+- sprite garbage in some rare situations (reason not fully known..)
+- floppy drives were emptied if quickstart was enabled, show gui on
+  startup was not enabled and GUI was entered for the first time
+- sprite attachment fixed. Surprisingly it works as documented :)
+
 Beta 11:
 
 - fix for graphics corruption introduced in 1.5.3 when bitplane DMA
@@ -19,7 +39,6 @@ Beta 11:
 - file selection dialog (adf, hdf etc..) remembers previous filter
   mode ("*.adf", "all files" etc..)
 
-
 Beta 10: clipboard stuff.
 
 - clipboard: multiple CHRS chunks inside FTXT supported
@@ -142,7 +161,6 @@ Beta 6:
 - detected screen size logged
 - loading new statefile didn't always trigger scale update
 
-
 Beta 5: WARNING: big changes. 1.6 version change expected.
 
 - KS loader 16-bit odd/even rom image to 32-bit merging fixed
diff --git a/sana2.c b/sana2.c
index 6d0c4935823e141459a9b2ab437348f7060bb5d8..b84a9da3b7d83f56c06733d6109478f2fae9d02c 100644 (file)
--- a/sana2.c
+++ b/sana2.c
@@ -1408,7 +1408,6 @@ static uae_u32 REGPARAM2 dev_abortio (TrapContext *context)
 static uae_u32 REGPARAM2 uaenet_int_handler (TrapContext *ctx)
 {
     int i, j;
-    int ours = 0;
     int gotit;
     struct asyncreq *ar;
 
@@ -1554,7 +1553,7 @@ static uae_u32 REGPARAM2 uaenet_int_handler (TrapContext *ctx)
        uaenet_int_requested = 0;
     uaenet_int_late = 0;
     uae_sem_post (&async_sem);
-    return ours;
+    return 0;
 }
 
 static void dev_reset (void)