while (rs) {
if (rs->changed) {
rs->changed = 0;
- fetch_screenshotpath (path, sizeof (path));
+ fetch_ripperpath (path, sizeof (path));
name[0] = 0;
if (currprefs.dfxtype[0] >= 0)
strcpy (name, currprefs.df[0]);
break;
/* replace old identical but shorter sample */
if (len > rs->len && !memcmp (rs->sample, smp, rs->len)) {
- xfree(rs->sample);
- rs->sample = (uae_u8*)xmalloc (len);
- memcpy(rs->sample, smp, len);
+ xfree (rs->sample);
+ rs->sample = xmalloc (len);
+ memcpy (rs->sample, smp, len);
write_log ("SAMPLERIPPER: replaced sample %d (%d -> %d)\n", cnt, rs->len, len);
rs->len = len;
rs->per = adp->per / CYCLE_UNIT;
}
if (rs || cnt > 100)
return;
- rs = (struct ripped_sample*)xmalloc(sizeof(struct ripped_sample));
+ rs = xmalloc(sizeof(struct ripped_sample));
if (prev)
prev->next = rs;
else
ripped_samples = rs;
rs->len = len;
rs->per = adp->per / CYCLE_UNIT;
- rs->sample = (uae_u8*)xmalloc (len);
+ rs->sample = xmalloc (len);
memcpy(rs->sample, smp, len);
rs->next = NULL;
rs->changed = 1;
uae_u16 bltcon0, bltcon1;
uae_u32 bltapt, bltbpt, bltcpt, bltdpt;
+static int blinea_shift;
static uae_u16 blinea, blineb;
static int blitline, blitfc, blitfill, blitife, blitsing, blitdesc;
static int blitonedot, blitsign;
if (bltcon0 & 0x200) {
if (!dmaen (DMA_BLITTER))
return;
- chipmem_bank.wput(bltdpt, blt_info.bltddat);
+ chipmem_bank.wput (bltdpt, blt_info.bltddat);
}
bltstate = BLT_next;
}
STATIC_INLINE void blitter_line_incx (void)
{
- if (++blt_info.blitashift == 16) {
- blt_info.blitashift = 0;
+ if (++blinea_shift == 16) {
+ blinea_shift = 0;
bltcpt += 2;
}
}
STATIC_INLINE void blitter_line_decx (void)
{
- if (blt_info.blitashift-- == 0) {
- blt_info.blitashift = 15;
+ if (blinea_shift-- == 0) {
+ blinea_shift = 15;
bltcpt -= 2;
}
}
static void blitter_line (void)
{
- uae_u16 blitahold = (blinea & blt_info.bltafwm) >> blt_info.blitashift;
+ uae_u16 blitahold = (blinea & blt_info.bltafwm) >> blinea_shift;
uae_u16 blitbhold = blineb & 1 ? 0xFFFF : 0;
uae_u16 blitchold = blt_info.bltcdat;
void reset_blit (int bltcon)
{
+ if (bltcon == 1)
+ blinea_shift = bltcon0 >> 12;
if (bltstate == BLT_done)
return;
if (bltcon)
buf1[0] = (uae_u8)addr;
if (handle != INVALID_HANDLE_VALUE) {
if (!DeviceIoControl (handle, CW_PEEKREG_FULL, buf1, 1, buf2, 1, &did_read, 0))
- write_log ("catweasel_do_bget fail err=%d\n", GetLastError());
+ write_log ("catweasel_do_bget %02x fail err=%d\n", buf1[0], GetLastError ());
} else {
buf2[0] = ioport_read (cwc.iobase + addr);
}
buf[1] = b;
if (handle != INVALID_HANDLE_VALUE) {
if (!DeviceIoControl (handle, CW_POKEREG_FULL, buf, 2, 0, 0, &did_read, 0))
- write_log ("catweasel_do_bput fail err=%d\n", GetLastError());
+ write_log ("catweasel_do_bput %02x=%02x fail err=%d\n", buf[0], buf[1], GetLastError ());
} else {
ioport_write (cwc.iobase + addr, b);
}
void catweasel_free (void)
{
if (cwc.direct_access) {
- if (cwc.type == 4)
+ if (cwc.type == CATWEASEL_TYPE_MK4)
catweasel_do_bput(3, 0x61); // enable floppy passthrough
}
if (handle != INVALID_HANDLE_VALUE)
p->cs_slowmemisfast = 0;
p->cs_resetwarning = 1;
- p->gfx_filter = 1;
+ p->gfx_filter = 0;
p->gfx_filtershader[0] = 0;
p->gfx_filter_horiz_zoom_mult = 0;
p->gfx_filter_vert_zoom_mult = 0;
#define SPRITE_COLLISIONS
#define SPEEDUP
+#define NEW_BPL 1
+
#define SPRBORDER 0
STATIC_INLINE int nocustom(void)
int i;
update_mirrors ();
- docols(¤t_colors);
- docols(&colors_for_drawing);
+ docols (¤t_colors);
+ docols (&colors_for_drawing);
for (i = 0; i < (MAXVPOS + 1) * 2; i++) {
- docols(color_tables[0] + i);
- docols(color_tables[1] + i);
+ docols (color_tables[0] + i);
+ docols (color_tables[1] + i);
}
}
STATIC_INLINE void fetch (int nr, int fm)
{
if (nr < toscr_nr_planes) {
+#if NEW_BPL
uaecptr p = f_bplpt[nr];
+#else
+ uaecptr p = bplpt[nr];
+ bplpt[nr] += 2 << fm;
+#endif
switch (fm)
{
case 0:
}
if (nr == 0)
fetch_state = fetch_was_plane0;
+#if NEW_BPL
else if (nr == 1 && t_bplcon0_res > f_bplcon0_res)
fetch_state = fetch_was_plane0;
-
+#endif
}
static void clear_fetchbuffer (uae_u32 *ptr, int nwords)
*/
STATIC_INLINE void inc_bpl (int fm, int oe)
{
+#if NEW_BPL
int i;
for (i = 0; i < f_bplcon0_planes; i++) {
if ((oe == 0) || (oe < 0 && (i & 1)) || (oe > 0 && !(i & 1))) {
bplptx[i] += 2 << fm;
}
}
+#endif
}
STATIC_INLINE int one_fetch_cycle_0 (int pos, int ddfstop_to_test, int dma, int fm)
break;
case 4:
switch (cycle_start) {
- case 0: inc_bpl (fm, 0); fetch (3, fm); break;
+ case 0: inc_bpl (fm, -1); fetch (3, fm); break;
case 1: fetch (1, fm); break;
- case 2: fetch (2, fm); break;
+ case 2: inc_bpl (fm, 1); fetch (2, fm); break;
case 3: fetch (0, fm); break;
}
break;
decide_fetch (hpos);
bplpt[num] = (bplpt[num] & 0x0000ffff) | ((uae_u32)v << 16);
bplptx[num] = (bplptx[num] & 0x0000ffff) | ((uae_u32)v << 16);
- //write_log ("%d:%d:BPL%dPTH %08X\n", hpos, vpos, num, v);
+ //write_log ("%d:%d:BPL%dPTH %08X COP=%08x\n", hpos, vpos, num, v, cop_state.ip);
}
static void BPLxPTL (int hpos, uae_u16 v, int num)
{
decide_fetch (hpos);
/* fix for "bitplane dma fetch at the same time while updating BPLxPTL" */
/* fixes "3v Demo" by Cave and "New Year Demo" by Phoenix */
- if (is_bitplane_dma (hpos - 1) == num + 1 && num > 0) {
+ if (is_bitplane_dma (hpos) == num + 1 || is_bitplane_dma (hpos - 1) == num + 1) {
delta = 2 << f_fetchmode;
}
bplpt[num] = (bplpt[num] & 0xffff0000) | ((v + delta) & 0x0000fffe);
bplptx[num] = (bplptx[num] & 0xffff0000) | ((v + delta) & 0x0000fffe);
- //write_log ("%d:%d:BPL%dPTL %08X\n", hpos, vpos, num, v);
+ //write_log ("%d:%d:BPL%dPTL %08X COP=%08x\n", hpos, vpos, num, v, cop_state.ip);
}
static int isehb (uae_u16 bplcon0, uae_u16 bplcon2)
{
int bplehb;
if (currprefs.chipset_mask & CSMASK_AGA)
- bplehb = (bplcon0 & 0x7010) == 0x6000 && !(bplcon2 & 0x200);
+ bplehb = (bplcon0 & 0x7010) == 0x6000;
else if (currprefs.chipset_mask & CSMASK_ECS_DENISE)
- bplehb = ((bplcon0 & 0xFC00) == 0x6000 || (bplcon0 & 0xFC00) == 0x7000) && !(bplcon2 & 0x200);
+ bplehb = ((bplcon0 & 0xFC00) == 0x6000 || (bplcon0 & 0xFC00) == 0x7000);
else
bplehb = ((bplcon0 & 0xFC00) == 0x6000 || (bplcon0 & 0xFC00) == 0x7000) && !currprefs.cs_denisenoehb;
return bplehb;
if ((bplcon0 & (0x800 | 0x400 | 0x80)) != (v & (0x800 | 0x400 | 0x80))) // HAM/EBH/DPF change is instant
record_register_change (hpos, 0x100, (bplcon0 & ~(0x800 | 0x400 | 0x80)) | (v & (0x0800 | 0x400 | 0x80)));
+
+ // don't ask..
+ if (GET_PLANES (v) > GET_PLANES (bplcon0) && GET_RES (v) >= GET_RES (bplcon0) && fetch_state != fetch_not_started)
+ fetch_state = fetch_was_plane0;
+
bplcon0 = v;
#ifdef ECS_DENISE
}
#endif
expand_fmodes ();
-
+#if NEW_BPL
if (fetch_state == fetch_not_started || diwstate != DIW_waiting_stop) {
record_register_change (hpos, 0x100, v);
fetch_bpl_params ();
fetch_bpl_params ();
copy_bpl_params (hpos);
}
+#else
+ fetch_bpl_params ();
+ copy_bpl_params (hpos);
+#endif
calcdiw ();
estimate_last_fetch_cycle (hpos);
for (i = 0; i < size * 2; i++)
console_out_f ("%04X ", get_word (addr + i * 2));
console_out_f ("\n");
+
ypos = w1 >> 8;
xpos = w1 & 255;
ypose = w2 >> 8;
ecs = 1;
if (w1 & 0x80)
sh10 = 1;
+ if (ypose < ypos)
+ ypose += 256;
+
for (y = ypos; y < ypose; y++) {
int x;
addr += size * 4;
int disk_debug_mode;
int disk_debug_track = -1;
-#define MIN_STEPLIMIT_CYCLE (CYCLE_UNIT * 150)
+#define MIN_STEPLIMIT_CYCLE (CYCLE_UNIT * 250)
static uae_u16 bigmfmbufw[0x4000 * DDHDMULT];
static drive floppy[MAX_FLOPPY_DRIVES];
}
}
+static void set_steplimit (drive *drv)
+{
+ drv->steplimit = 10;
+ drv->steplimitcycle = get_cycles ();
+}
+
static int drive_empty (drive * drv)
{
#ifdef CATWEASEL
#endif
if (drv->steplimit && get_cycles() - drv->steplimitcycle < MIN_STEPLIMIT_CYCLE) {
if (disk_debug_logging > 1)
- write_log (" step ignored %d", (get_cycles() - drv->steplimitcycle) / CYCLE_UNIT);
+ write_log (" step ignored drive %d, %d",
+ drv - floppy, (get_cycles() - drv->steplimitcycle) / CYCLE_UNIT);
return;
}
/* A1200's floppy drive needs at least 30 raster lines between steps
* but we'll use very small value for better compatibility with faster CPU emulation
* (stupid trackloaders with CPU delay loops)
*/
- drv->steplimit = 10;
- drv->steplimitcycle = get_cycles ();
+ set_steplimit (drv);
if (!drive_empty (drv))
drv->dskchange = 0;
if (direction) {
for (dr = 0; dr < MAX_FLOPPY_DRIVES ; dr++) {
drive *drv2 = &floppy[dr];
drv2->writtento = 0;
- if (drives[dr])
+ if (drives[dr]) {
drive_write_data (drv2);
+ //set_steplimit (drv2);
+ }
}
}
}
lores_shift++;
lores_factor = 2;
}
+ sprite_buffer_res = currprefs.gfx_resolution;
+ if (doublescan > 0 && sprite_buffer_res < RES_SUPERHIRES)
+ sprite_buffer_res++;
}
int aga_mode; /* mirror of chipset_mask & CSMASK_AGA */
can_use_lores = 0;
bplehb = (dp_for_drawing->bplcon0 & 0x80) == 0x80;
+ if ((currprefs.chipset_mask & CSMASK_AGA) && (dp_for_drawing->bplcon2 & 0x0200))
+ bplehb = 0;
plf1pri = dp_for_drawing->bplcon2 & 7;
plf2pri = (dp_for_drawing->bplcon2 >> 3) & 7;
plf_sprite_mask = 0xFFFF0000 << (4 * plf2pri);
frame_res_cnt = FRAMES_UNTIL_RES_SWITCH;
lightpen_y1 = lightpen_y2 = -1;
- sprite_buffer_res = currprefs.gfx_resolution;
- if (doublescan > 0 && sprite_buffer_res < RES_SUPERHIRES)
- sprite_buffer_res++;
-
reset_custom_limits ();
}
/* either a file-handle or lock */
uaecptr object = GET_PCK_ARG2 (packet) << 2;
/* will be EXCLUSIVE_LOCK/SHARED_LOCK if CHANGE_LOCK,
- * or MODE_OLDFILE/MODE_NEWFILE/MODE_READWRITE if CHANGE_FH */
+ * or MODE_OLDFILE/MODE_NEWFILE/MODE_READWRITE if CHANGE_FH *
+ * Above is wrong, it is always *_LOCK. TW. */
long mode = GET_PCK_ARG3 (packet);
unsigned long uniq;
a_inode *a = NULL, *olda = NULL;
uae_u32 err = 0;
- TRACE(("ACTION_CHANGE_MODE(0x%lx,%d,%d)\n", object, type,mode));
+ TRACE(("ACTION_CHANGE_MODE(0x%lx,%d,%d)\n", object, type, mode));
- if (! object
- || (type != CHANGE_FH && type != CHANGE_LOCK))
- {
+ if (! object || (type != CHANGE_FH && type != CHANGE_LOCK)) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_INVALID_LOCK);
return;
}
- /* @@@ Brian: shouldn't this be good enough to support
- CHANGE_FH? */
- if (type == CHANGE_FH)
- mode = (mode == 1006 ? -1 : -2);
-
- if (type == CHANGE_LOCK)
+ if (type == CHANGE_LOCK) {
uniq = get_long (object + 4);
- else {
- Key *k = lookup_key (unit, object);
+ } else {
+ Key *k = lookup_key (unit, get_long (object + 36));
if (!k) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_OBJECT_NOT_AROUND);
}
a = lookup_aino (unit, uniq);
- if (! a)
+ if (! a) {
err = ERROR_INVALID_LOCK;
- else {
+ } else {
if (mode == -1) {
- if (a->shlock > 1)
+ if (a->shlock > 1) {
err = ERROR_OBJECT_IN_USE;
- else {
+ } else {
a->shlock = 0;
a->elock = 1;
}
uaecptr vp = m68k_areg (&context->regs, 4);
input_mousehack_status (mode, diminfo, dispinfo, vp);
} else if (mode == 10) {
- amiga_clipboard_init ();
+ amiga_clipboard_die ();
} else if (mode == 11) {
amiga_clipboard_got_data (m68k_areg (&context->regs, 2), m68k_dreg (&context->regs, 2), m68k_dreg (&context->regs, 0) + 8);
} else if (mode == 12) {
return amiga_clipboard_proc_start ();
} else if (mode == 14) {
amiga_clipboard_task_start (m68k_dreg (&context->regs, 0));
+ } else if (mode == 15) {
+ amiga_clipboard_init ();
}
return 1;
}
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(0x14); db(0xd3);
+ db(0x00); db(0x00); db(0x0d); db(0x5c); db(0x43); db(0xfa); db(0x15); db(0x6f);
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(0x14); db(0xdc); db(0x70); db(0x24);
+ db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x15); db(0x78); 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(0x14); db(0xcc); db(0x70); db(0x00);
+ db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x15); db(0x68); 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(0x13); db(0xd7);
+ db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x14); db(0x73);
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(0x13); db(0xd1); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x14); db(0x6d); 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(0x13); db(0x82);
+ db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x14); db(0x1e);
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(0x5a); db(0x23); db(0x48);
+ db(0x22); db(0x40); db(0x41); db(0xfa); db(0x12); db(0xf6); 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(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(0x11); db(0xde); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b);
+ db(0x12); db(0x7a); 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(0x30); db(0x10); db(0x19); db(0x12); db(0x1a);
+ db(0x45); db(0xfa); db(0x11); db(0xcc); 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(0x06); db(0x25); db(0x48);
- db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x10); db(0x82); db(0x25); db(0x48);
+ 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(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(0x0b); db(0xff); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0x43); db(0xfa); db(0x0c); db(0x9b); 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(0x0b); db(0xfa);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0c); db(0x96);
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(0x0b); db(0xe8); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x0c); db(0x84); 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(0x4f); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0x43); db(0xfa); db(0x0b); db(0xeb); 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(0x0a); db(0x86);
+ db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa); db(0x0b); db(0x06);
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(0x0a); db(0x83);
+ db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x0b); db(0x03);
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(0x07); db(0xa3); db(0x43); db(0xfa); db(0x01); db(0x30);
+ db(0x41); db(0xfa); db(0x08); db(0x3f); db(0x43); db(0xfa); db(0x01); db(0x30);
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(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
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(0x13); db(0x23); db(0x48); db(0x00); db(0x0a);
+ 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(0x31); db(0x70); db(0x00);
+ 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(0x25); db(0x70); db(0x00); db(0x4e); db(0xae);
+ 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(0x54); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00);
+ 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(0x42); db(0x70); db(0x00); db(0x72); db(0x00);
+ 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(0x21); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00);
+ 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(0x0d); db(0x70); 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(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(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(0x02); db(0x99);
+ db(0x70); db(0x00); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x03); db(0x35);
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(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x34); 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(0xe6); 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(0x94); 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(0x02); db(0xa3);
- 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(0x2b); db(0x43); db(0xfa);
- db(0x00); db(0x18); db(0x70); db(0xf6); db(0x22); db(0x3c); db(0x00); db(0x00);
- db(0x0f); db(0xa0); db(0x61); db(0x00); db(0xee); db(0x9a); db(0x70); db(0x00);
- db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x0d); db(0x61); db(0x00); db(0xf9); db(0x3c); db(0x4e); db(0x90);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0xff); db(0x6e); 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(0x61); db(0x00);
- db(0xf9); db(0x3c); db(0x72); db(0x00); db(0x32); db(0x3c); db(0x00); db(0x34);
- db(0x61); db(0x00); db(0xf9); db(0x80); db(0x28); db(0x40); db(0x4a); db(0x80);
- db(0x67); db(0x00); db(0xff); db(0x48); db(0x70); db(0x00); db(0x08); db(0xc0);
+ 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(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(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(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(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(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(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(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(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(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(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(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(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(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(0xb0);
- db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x24); db(0x00);
- db(0x66); db(0xe2); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0a);
- db(0x61); db(0x00); db(0xf8); db(0xe6); db(0x4e); db(0x90); db(0x41); db(0xed);
- db(0x00); db(0x18); db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01);
+ db(0x20); db(0x2d); db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x01); db(0xcc);
+ 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(0x28); db(0x41); db(0xfa);
- db(0x01); db(0x38); db(0x2b); db(0x48); db(0x00); db(0x20); db(0x22); db(0x4c);
+ 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(0x98); db(0x4e); db(0x90); db(0x4a); db(0xad); db(0x00); db(0x04);
+ 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(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(0x2c);
+ 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(0x2c); db(0x66); db(0x52); db(0x20); db(0x2d); db(0x00); db(0x30);
+ 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(0x2c);
- db(0x20); db(0xed); db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28);
+ 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(0xc2);
+ 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(0x2c); db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01);
+ 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(0xe8); db(0x20); db(0x29); db(0x00); db(0x08);
+ 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(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(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(0x6c); db(0x69); db(0x70); db(0x62);
- db(0x6f); db(0x61); db(0x72); db(0x64); db(0x20); db(0x73); db(0x68); db(0x61);
- db(0x72); db(0x69); db(0x6e); db(0x67); db(0x00); db(0x55); db(0x41); db(0x45);
- db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73); db(0x65); db(0x20); db(0x64);
- db(0x72); db(0x69); db(0x76); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41);
- db(0x45); db(0x20); db(0x66); db(0x69); db(0x6c); db(0x65); db(0x73); db(0x79);
- db(0x73); db(0x74); db(0x65); db(0x6d); db(0x00); db(0x55); db(0x41); db(0x45);
- db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f);
- db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x00);
- db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61);
- db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74);
- db(0x20); db(0x70); db(0x72); db(0x6f); db(0x63); db(0x65); db(0x73); db(0x73);
- db(0x00); db(0x64); db(0x6f); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62);
- db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x69); db(0x6e); db(0x74);
- db(0x75); db(0x69); db(0x74); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c);
- db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x67);
- db(0x72); db(0x61); db(0x70); db(0x68); db(0x69); db(0x63); db(0x73); db(0x2e);
- db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00);
- db(0x65); db(0x78); db(0x70); db(0x61); db(0x6e); db(0x73); db(0x69); db(0x6f);
- db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72);
- db(0x79); db(0x00); db(0x46); db(0x69); db(0x6c); db(0x65); db(0x53); db(0x79);
- db(0x73); db(0x74); db(0x65); db(0x6d); db(0x2e); db(0x72); db(0x65); db(0x73);
- db(0x6f); db(0x75); db(0x72); db(0x63); db(0x65); db(0x00); db(0x00); db(0x00);
- db(0x00); db(0x00); db(0x03); db(0xf2);
+ 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(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64);
+ db(0x20); db(0x73); db(0x68); db(0x61); db(0x72); db(0x69); db(0x6e); db(0x67);
+ db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x6d); db(0x6f); db(0x75);
+ db(0x73); db(0x65); db(0x20); db(0x64); db(0x72); db(0x69); db(0x76); db(0x65);
+ db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x69);
+ db(0x6c); db(0x65); db(0x73); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d);
+ db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20);
+ db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e);
+ db(0x74); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20);
+ db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d);
+ db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x20); db(0x70); db(0x72); db(0x6f);
+ db(0x63); db(0x65); db(0x73); db(0x73); db(0x00); db(0x64); db(0x6f); db(0x73);
+ db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79);
+ db(0x00); db(0x69); db(0x6e); db(0x74); db(0x75); db(0x69); db(0x74); db(0x69);
+ db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61);
+ db(0x72); db(0x79); db(0x00); db(0x67); db(0x72); db(0x61); db(0x70); db(0x68);
+ db(0x69); db(0x63); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72);
+ db(0x61); db(0x72); db(0x79); db(0x00); db(0x65); db(0x78); db(0x70); db(0x61);
+ db(0x6e); db(0x73); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69);
+ db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x46); db(0x69);
+ db(0x6c); db(0x65); db(0x53); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d);
+ db(0x2e); db(0x72); db(0x65); db(0x73); db(0x6f); db(0x75); db(0x72); db(0x63);
+ db(0x65); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x03); db(0xf2);
if (currprefs.chipmem_size <= 4 * 1024 * 1024 && currprefs.fastmem_size <= 4 * 1024 * 1024)
map_banks (&dummy_bank, PCMCIA_COMMON_START >> 16, PCMCIA_COMMON_SIZE >> 16, 0);
} else {
- map_banks (&gayle_attr_bank, 0xA0, 8, 0);
+ map_banks (&gayle_attr_bank, 0xa0, 8, 0);
if (currprefs.chipmem_size <= 4 * 1024 * 1024 && currprefs.fastmem_size <= 4 * 1024 * 1024)
map_banks (&gayle_common_bank, PCMCIA_COMMON_START >> 16, PCMCIA_COMMON_SIZE >> 16, 0);
}
break;
case i_CINVL:
- printf ("\tif (opcode&0x80)\n"
- "\t\tflush_icache(31);\n");
- break;
case i_CINVP:
- printf ("\tif (opcode&0x80)\n"
- "\t\tflush_icache(32);\n");
- break;
case i_CINVA:
- printf ("\tif (opcode&0x80)\n"
- "\t\tflush_icache(33);\n");
- break;
case i_CPUSHL:
- printf ("\tif (opcode&0x80)\n"
- "\t\tflush_icache(41);\n");
- break;
case i_CPUSHP:
- printf ("\tif (opcode&0x80)\n"
- "\t\tflush_icache(42);\n");
- break;
case i_CPUSHA:
- printf ("\tif (opcode&0x80)\n"
- "\t\tflush_icache(43);\n");
+ printf ("\tif (opcode & 0x80)\n");
+ printf ("\t\tflush_icache(m68k_areg (regs, opcode & 3), (opcode >> 6) & 3);\n");
break;
+
case i_MOVE16:
if ((opcode & 0xfff8) == 0xf620) {
/* MOVE16 (Ax)+,(Ay)+ */
extern void amiga_clipboard_want_data (void);
extern void amiga_clipboard_got_data (uaecptr data, uae_u32 size, uae_u32 actual);
+extern void amiga_clipboard_die (void);
extern void amiga_clipboard_init (void);
extern uaecptr amiga_clipboard_proc_start (void);
extern void amiga_clipboard_task_start (uaecptr);
void uae_NotificationHack(uaecptr, uaecptr);
#endif
void uae_NewList(uaecptr list);
+int native2amiga_isfree (void);
\ No newline at end of file
void newcpu_showstate(void);
#ifdef JIT
-extern void flush_icache(int n);
+extern void flush_icache(uaecptr, int n);
extern void compemu_reset(void);
extern int check_prefs_changed_comp (void);
#else
extern void fetch_saveimagepath (char*, int, int);
extern void fetch_configurationpath (char *out, int size);
extern void fetch_screenshotpath (char *out, int size);
+extern void fetch_ripperpath (char *out, int size);
extern void fetch_datapath (char *out, int size);
extern int uaerand(void);
\ No newline at end of file
diffx = diffy = 0;
maxx = maxy = 0;
- {
- //uaecptr gb = get_intuitionbase ();
- //write_log ("%d %d\n", get_word (gb + 70), get_word (gb + 68));
- }
-
if (picasso_on) {
maxx = picasso96_state.Width;
maxy = picasso96_state.Height;
}
get_custom_mouse_limits (&maxx, &maxy, &diffx, &diffy, 0);
}
+#if 0
+ {
+ uaecptr gb = get_intuitionbase ();
+ maxy = get_word (gb + 1344 + 2);
+ maxx = get_word (gb + 1348 + 2);
+ write_log ("%d %d\n", maxx, maxy);
+ }
+#endif
+#if 1
+ {
+ uaecptr gb = get_gfxbase ();
+ uaecptr view = get_long (gb + 34);
+ if (view) {
+ uaecptr vp = get_long (view);
+ if (vp) {
+ int w, h, dw, dh;
+ w = get_word (vp + 24);
+ h = get_word (vp + 26) * 2;
+ dw = get_word (vp + 28);
+ dh = get_word (vp + 30);
+ //write_log ("%d %d %d %d\n", w, h, dw, dh);
+ if (w < maxx)
+ maxx = w;
+ if (h < maxy)
+ maxy = h;
+ x -= dw;
+ y -= dh;
+ }
+ }
+ //write_log ("* %d %d\n", get_word (gb + 218), get_word (gb + 216));
+ }
+ //write_log ("%d %d\n", maxx, maxy);
+#endif
+
maxx = maxx * 1000 / fmx;
maxy = maxy * 1000 / fmy;
extern int get_cache_state(void);
extern uae_u32 get_jitted_size(void);
#ifdef JIT
-extern void flush_icache(int n);
+extern void flush_icache(uaecptr ptr, int n);
#endif
extern void alloc_cache(void);
extern void compile_block(cpu_history* pc_hist, int blocklen, int totcyles);
waste half the entries in this array
UPDATE: We now use those entries to store the start of the linked
lists that we maintain for each hash result. */
-cacheline cache_tags[TAGSIZE];
-int letit=0;
-blockinfo* hold_bi[MAX_HOLD_BI];
-blockinfo* active;
-blockinfo* dormant;
+static cacheline cache_tags[TAGSIZE];
+static int letit=0;
+static blockinfo* hold_bi[MAX_HOLD_BI];
+static blockinfo* active;
+static blockinfo* dormant;
op_properties prop[65536];
extern const struct cputbl op_smalltbl_5_nf[];
#endif
-static void flush_icache_hard(int n);
+static void flush_icache_hard(uae_u32 ptr, int n);
-bigstate live;
-smallstate empty_ss;
-smallstate default_ss;
+static bigstate live;
+static smallstate empty_ss;
+static smallstate default_ss;
static int optlev;
static int writereg(int r, int size);
void set_cache_state(int enabled)
{
if (enabled!=letit)
- flush_icache_hard(77);
+ flush_icache_hard(0, 3);
letit=enabled;
}
void alloc_cache(void)
{
if (compiled_code) {
- flush_icache_hard(6);
+ flush_icache_hard(0, 3);
cache_free(compiled_code);
}
if (veccode == NULL)
}
-static void flush_icache_hard(int n)
+static void flush_icache_hard(uae_u32 ptr, int n)
{
blockinfo* bi;
we simply mark everything as "needs to be checked".
*/
-void flush_icache(int n)
+void flush_icache(uaecptr ptr, int n)
{
blockinfo* bi;
blockinfo* bi2;
if (currprefs.comp_hardflush) {
- flush_icache_hard(n);
+ flush_icache_hard(ptr, n);
return;
}
soft_flush_count++;
cache_tags[cl].handler=popall_execute_normal;
bi->handler_to_use=popall_execute_normal;
set_dhtu(bi,bi->direct_pen);
- }
- else {
+ } else {
if (bi==cache_tags[cl+1].bi)
cache_tags[cl].handler=popall_check_checksum;
bi->handler_to_use=popall_check_checksum;
compile_count++;
if (current_compile_p>=max_compile_start)
- flush_icache_hard(7);
+ flush_icache_hard(0, 3);
alloc_blockinfos();
/* We will flush soon, anyway, so let's do it now */
if (current_compile_p>=max_compile_start)
- flush_icache_hard(7);
+ flush_icache_hard(0, 3);
do_extra_cycles(totcycles); /* for the compilation time */
}
//write_log ("MAP_BANK %04X0000 %d %s\n", start, size, bank->name);
old = debug_bankchange (-1);
- flush_icache (1); /* Sure don't want to keep any old mappings around! */
+ flush_icache (0, 3); /* Sure don't want to keep any old mappings around! */
#ifdef NATMEM_OFFSET
delete_shmmaps (start << 16, size << 16);
#endif
#include "memory.h"
#include "moduleripper.h"
#include "gui.h"
+#include "uae.h"
static int got, canceled;
}
#ifdef _WIN32
-static LONG WINAPI ExceptionFilter( struct _EXCEPTION_POINTERS * pExceptionPointers, DWORD ec)
+static LONG WINAPI ExceptionFilter (struct _EXCEPTION_POINTERS * pExceptionPointers, DWORD ec)
{
return EXCEPTION_EXECUTE_HANDLER;
}
#endif
prowizard_search (buf, size);
#ifdef _WIN32
- } __except(ExceptionFilter(GetExceptionInformation(), GetExceptionCode())) {
+ } __except(ExceptionFilter (GetExceptionInformation (), GetExceptionCode ())) {
write_log ("prowizard scan crashed\n");
}
#endif
FILE *moduleripper_fopen (const char *name, const char *mode)
{
- return fopen (name, mode);
+ char tmp[MAX_DPATH], tmp2[MAX_DPATH];
+ fetch_ripperpath (tmp, sizeof tmp);
+ sprintf (tmp2, "%s%s", tmp, name);
+ return fopen (tmp2, mode);
}
FILE *moduleripper2_fopen (const char *name, const char *mode, const char *id, int addr, int size)
canceled = 1;
if (ret < 0 || ret != 1)
return NULL;
- return fopen (name, mode);
+ return moduleripper_fopen (name, mode);
}
#else
{
}
+int native2amiga_isfree (void)
+{
+ return comm_pipe_has_data (&native2amiga_pending) == 0;
+}
+
#ifdef SUPPORT_THREADS
void uae_Cause (uaecptr interrupt)
set_cache_state (regs.cacr & 1);
if (regs.cacr & 0x08) {
regs.cacr &= ~0x08;
- flush_icache (1);
+ flush_icache (0, 3);
}
} else {
set_cache_state ((regs.cacr & 0x8000) ? 1 : 0);
if (((opcr ^ regs.pcr) & 2) == 2) {
write_log ("68060 FPU state: %s\n", regs.pcr & 2 ? "disabled" : "enabled");
/* flush possible already translated FPU instructions */
- flush_icache (2);
+ flush_icache (0, 3);
}
}
break;
#include "clipboard_win32.h"
#include "clipboard.h"
+#include "threaddep/thread.h"
#include "memory.h"
#include "native2amiga_api.h"
+int clipboard_debug;
+
static HWND chwnd;
static HDC hdc;
static uaecptr clipboard_data;
static void *clipboard_delayed_data;
static int clipboard_delayed_size;
+static void debugwrite (const char *name, uae_u8 *p, int size)
+{
+ FILE *f;
+ int cnt;
+
+ if (!p || !size)
+ return;
+ cnt = 0;
+ for (;;) {
+ char tmp[MAX_DPATH];
+ sprintf (tmp, "%s.%03d.dat", name, cnt);
+ f = fopen (tmp, "rb");
+ if (f) {
+ fclose (f);
+ cnt++;
+ continue;
+ }
+ f = fopen (tmp, "wb");
+ if (f) {
+ fwrite (p, size, 1, f);
+ fclose (f);
+ }
+ return;
+ }
+}
+
static void to_amiga_start (void)
{
if (!clipboard_data)
return;
+ if (clipboard_debug) {
+ debugwrite ("clipboard_p2a", to_amiga, to_amiga_size);
+ }
put_long (clipboard_data, to_amiga_size);
uae_Signal (get_long (clipboard_data + 8), 1 << 13);
}
}
return txt2;
}
+
+static int parsecsi (const char *txt, int off, int len)
+{
+ while (off < len) {
+ if (txt[off] >= 0x40)
+ break;
+ off++;
+ }
+ return off;
+}
+
static char *amigatopc (const char *txt)
{
int i, j, cnt;
}
if (pc)
return my_strdup (txt);
- txt2 = xmalloc (len + cnt);
+ txt2 = xcalloc (len + cnt, 1);
j = 0;
for (i = 0; i < len; i++) {
char c = txt[i];
continue;
if (c == 10)
txt2[j++] = 13;
+ if (c == 0x9b) {
+ i = parsecsi (txt, i + 1, len);
+ continue;
+ } else if (c == 0x1b && i + 1 < len && txt[i + 1] == '[') {
+ i = parsecsi (txt, i + 2, len);
+ continue;
+ }
txt2[j++] = c;
}
return txt2;
int txtsize = 0;
char *pctxt;
+#if 0
+ {
+ FILE *f = fopen("c:\\d\\clipboard_a2p.000.dat", "rb");
+ if (f) {
+ addr = xmalloc (10000);
+ len = fread (addr, 1, 10000, f);
+ fclose (f);
+ }
+ }
+#endif
addr = get_real_address (ftxt);
eaddr = addr + len;
if (memcmp ("FTXT", addr + 8, 4))
if (!memcmp (addr, "CHRS", 4) && csize) {
int prevsize = txtsize;
txtsize += csize;
- if (!prevsize)
- txtsize++; // space for terminating null
- txt = realloc (txt, txtsize);
+ txt = realloc (txt, txtsize + 1);
memcpy (txt + prevsize, addr + 8, csize);
- txt[txtsize - 1] = 0;
+ txt[txtsize] = 0;
}
addr += 8 + csize + (csize & 1);
+ if (csize >= 1 && addr[-2] == 0x0d && addr[-1] == 0x0a && addr[0] == 0)
+ addr++;
+ else if (csize >= 1 && addr[-1] == 0x0d && addr[0] == 0x0a)
+ addr++;
}
pctxt = amigatopc (txt);
clipboard_put_text (pctxt);
to_amiga_size = 8 + tsize + (tsize & 1);
to_amiga = iff;
-#if 0
- {
- FILE *f = fopen("d:\\amiga\\amiga\\1.iff", "wb");
- fwrite (to_amiga, to_amiga_size, 1, f);
- fclose (f);
- }
-#endif
+
to_amiga_start ();
xfree (bmp.bmBits);
camg = 0;
} else if (!memcmp (chunk, "CMAP" ,4)) {
if (planes <= 8) {
+ int zero4 = 1;
for (i = 0; i < (1 << planes) && addr < ceaddr; i++, addr += 3) {
rgbx[i].rgbRed = addr[0];
rgbx[i].rgbGreen = addr[1];
rgbx[i].rgbBlue = addr[2];
+ if ((addr[0] & 0x0f) || (addr[1] & 0x0f) || (addr[2] & 0x0f))
+ zero4 = 0;
+ }
+ if (zero4) {
+ for (i = 0; i < (1 << planes); i++) {
+ rgbx[i].rgbRed |= rgbx[i].rgbRed >> 4;
+ rgbx[i].rgbGreen |= rgbx[i].rgbGreen >> 4;
+ rgbx[i].rgbBlue |= rgbx[i].rgbBlue >> 4;
+ }
}
}
} else if (!memcmp (chunk, "BODY" ,4) && bmhd) {
}
if (body) {
hbm = CreateDIBitmap (hdc, &bmih->bmiHeader, CBM_INIT, bmptr, bmih, DIB_RGB_COLORS);
- clipboard_put_bmp (hbm);
+ if (hbm)
+ clipboard_put_bmp (hbm);
}
xfree (bmih);
xfree (bmptr);
if (!valid_address (data, len))
return;
addr = get_real_address (data);
+ if (clipboard_debug)
+ debugwrite ("clipboard_a2p", addr, len);
if (memcmp ("FORM", addr, 4))
return;
if (!memcmp ("FTXT", addr + 8, 4))
return 1;
}
+void amiga_clipboard_die (void)
+{
+ signaling = 0;
+ write_log ("clipboard not initialized\n");
+}
+
void amiga_clipboard_init (void)
{
signaling = 0;
- write_log ("clipboard active\n");
+ write_log ("clipboard initialized\n");
}
void amiga_clipboard_task_start (uaecptr data)
void amiga_clipboard_want_data (void)
{
- uae_u32 addr;
+ uae_u32 addr, size;
addr = get_long (clipboard_data + 4);
- if (addr) {
+ size = get_long (clipboard_data);
+ if (addr && size) {
uae_u8 *raddr = get_real_address (addr);
- memcpy (raddr, to_amiga, to_amiga_size);
+ memcpy (raddr, to_amiga, size);
}
xfree (to_amiga);
- write_log ("clipboard: ->amiga, %08x %d bytes\n", addr, to_amiga_size);
+ write_log ("clipboard: ->amiga, %08x %d bytes\n", addr, size);
to_amiga = NULL;
to_amiga_size = 0;
}
if (vdelay > 0)
return;
task = get_long (clipboard_data + 8);
- if (task)
+ if (task && native2amiga_isfree ())
uae_Signal (task, 1 << 13);
vdelay = 50;
}
HRESULT DirectDraw_GetDC (HDC *hdc)
{
- HRESULT result;
- result = IDirectDrawSurface7_GetDC (getlocksurface (), hdc);
- return result;
+ if (getlocksurface () == NULL)
+ return E_FAIL;
+ return IDirectDrawSurface7_GetDC (getlocksurface (), hdc);
}
HRESULT DirectDraw_ReleaseDC (HDC hdc)
{
- HRESULT result;
- result = IDirectDrawSurface7_ReleaseDC (getlocksurface (), hdc);
- return result;
+ if (getlocksurface () == NULL)
+ return E_FAIL;
+ return IDirectDrawSurface7_ReleaseDC (getlocksurface (), hdc);
}
int DirectDraw_GetVerticalBlankStatus (void)
{
#define TRACE(x)
#endif
+static int fsdb_debug = 0;
+
/* these are deadly (but I think allowed on the Amiga): */
#define NUM_EVILCHARS 7
static char evilchars[NUM_EVILCHARS] = { '\\', '*', '?', '\"', '<', '>', '|' };
* Offset 0, 1 byte, valid
* Offset 1, 4 bytes, mode
* Offset 5, 257 bytes, aname
- * Offset 263, 257 bytes, nname
+ * Offset 262, 257 bytes, nname
* Offset 519, 81 bytes, comment
* Offset 600, 4 bytes, Windows-side mode
*/
HANDLE h;
DWORD read;
+ read = 0;
p = make_uaefsdbpath (dir, name);
h = CreateFile (p, GENERIC_READ, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ if (fsdb_debug)
+ write_log ("read_uaefsdb '%s' = %x\n", p, h);
xfree (p);
if (h != INVALID_HANDLE_VALUE) {
ReadFile (h, fsdb, UAEFSDB_LEN, &read, NULL);
CloseHandle (h);
- if (read == UAEFSDB_LEN)
+ if (read == UAEFSDB_LEN) {
+ if (fsdb_debug) {
+ write_log ("->ok\n");
+ write_log ("v=%02x flags=%08x an='%s' nn='%s' c='%s'\n", fsdb[0], ((uae_u32*)(fsdb+1))[0], fsdb + 5, fsdb + 262, fsdb + 519);
+ }
return 1;
+ }
}
+ if (fsdb_debug)
+ write_log ("->fail %d, %d\n", read, GetLastError ());
memset (fsdb, 0, UAEFSDB_LEN);
return 0;
}
p = make_uaefsdbpath (dir, NULL);
ret = DeleteFile(p);
- //write_log ("delete FSDB stream '%s' = %d\n", p, ret);
+ if (fsdb_debug)
+ write_log ("delete_uaefsdb '%s' = %d\n", p, ret);
xfree (p);
return ret;
}
{
char *p;
HANDLE h;
- DWORD written, dirflag, dirattr;
+ DWORD written = 0, dirflag, dirattr;
DWORD attr = INVALID_FILE_ATTRIBUTES;
FILETIME t1, t2, t3;
int time_valid = FALSE;
}
h = CreateFile (p, GENERIC_WRITE, 0,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ if (fsdb_debug) {
+ write_log ("write_uaefsdb '%s' = %x\n", p, h);
+ write_log ("v=%02x flags=%08x an='%s' nn='%s' c='%s'\n", fsdb[0], ((uae_u32*)(fsdb+1))[0], fsdb + 5, fsdb + 262, fsdb + 519);
+ }
if (h == INVALID_HANDLE_VALUE && GetLastError () == ERROR_ACCESS_DENIED) {
attr = GetFileAttributes (p);
if (attr != INVALID_FILE_ATTRIBUTES) {
SetFileAttributes (p, attr & ~(FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN));
h = CreateFile (p, GENERIC_WRITE, 0,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ if (fsdb_debug)
+ write_log ("write_uaefsdb (2) '%s' = %x\n", p, h);
}
}
}
WriteFile (h, fsdb, UAEFSDB_LEN, &written, NULL);
CloseHandle (h);
if (written == UAEFSDB_LEN) {
+ if (fsdb_debug)
+ write_log ("->ok\n");
ret = 1;
goto end;
}
}
+ if (fsdb_debug)
+ write_log ("->fail %d, %d\n", written, GetLastError ());
+
DeleteFile (p);
end:
if (attr != INVALID_FILE_ATTRIBUTES)
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+ <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
+ <security>
+ <requestedPrivileges>
+ <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
+ </requestedPrivileges>
+ </security>
+ </trustInfo>
+</assembly>
\ No newline at end of file
/>
<Tool
Name="VCManifestTool"
+ EmbedManifest="false"
/>
<Tool
Name="VCXDCMakeTool"
#include "rp.h"
#include "picasso96_win.h"
#include "win32gfx.h"
+#include "clipboard.h"
#define NOBLITTER 0
#define NOBLITTER_BLIT 0
#define IDC_BLITIMM 1174
#define IDC_LORES 1176
#define IDC_LORES_SMOOTHED 1179
-#define IDC_LORES_SMOOTHED2 1180
#define IDC_FLICKERFIXER 1180
#define IDC_FRAMERATE 1185
#define IDC_RATETEXT 1186
#define IDC_RESETDISKHISTORY 1677
#define IDC_DF0Q 1678
#define IDC_DF0QQ 1678
+#define IDC_PATHS_RIPSL 1678
#define IDC_DF1Q 1679
#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
#define IDC_DF0TEXTQ 1683
FONT 8, "MS Sans Serif", 0, 0, 0x1\r
BEGIN\r
LTEXT "System ROMs:",IDC_PATHS_ROML,14,4,260,8,SS_CENTERIMAGE\r
- EDITTEXT IDC_PATHS_ROM,14,16,261,15,ES_AUTOHSCROLL\r
- PUSHBUTTON "...",IDC_PATHS_ROMS,281,16,11,15\r
- LTEXT "Configuration files:",IDC_PATHS_CONFIGL,14,34,121,8,SS_CENTERIMAGE\r
- EDITTEXT IDC_PATHS_CONFIG,14,45,261,15,ES_AUTOHSCROLL\r
- PUSHBUTTON "...",IDC_PATHS_CONFIGS,281,45,11,15\r
- LTEXT "Screenshots:",IDC_PATHS_SCREENSHOTL,14,63,260,8,SS_CENTERIMAGE\r
- EDITTEXT IDC_PATHS_SCREENSHOT,14,74,261,15,ES_AUTOHSCROLL\r
- PUSHBUTTON "...",IDC_PATHS_SCREENSHOTS,281,74,11,15\r
- LTEXT "State files:",IDC_PATHS_STATEFILEL,14,92,260,8,SS_CENTERIMAGE\r
- EDITTEXT IDC_PATHS_SAVESTATE,14,104,261,15,ES_AUTOHSCROLL\r
- PUSHBUTTON "...",IDC_PATHS_SAVESTATES,281,104,11,15\r
- LTEXT "Videos:",IDC_PATHS_AVIOUTPUTL,14,122,260,8,SS_CENTERIMAGE\r
- EDITTEXT IDC_PATHS_AVIOUTPUT,14,134,261,15,ES_AUTOHSCROLL\r
- PUSHBUTTON "...",IDC_PATHS_AVIOUTPUTS,281,134,11,15\r
- LTEXT "Saveimages:",IDC_PATHS_SAVEIMAGEL,14,152,261,8,SS_CENTERIMAGE\r
- EDITTEXT IDC_PATHS_SAVEIMAGE,14,163,261,15,ES_AUTOHSCROLL\r
- PUSHBUTTON "...",IDC_PATHS_SAVEIMAGES,281,163,11,15\r
- PUSHBUTTON "Reset to defaults",IDC_PATHS_DEFAULT,14,184,92,14\r
- PUSHBUTTON "Rescan ROMs",IDC_ROM_RESCAN,14,200,92,14\r
- PUSHBUTTON "Clear registry",IDC_RESETREGISTRY,111,200,92,14\r
- COMBOBOX IDC_PATHS_DEFAULTTYPE,111,184,163,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
- PUSHBUTTON "Clear disk history",IDC_RESETDISKHISTORY,14,216,92,14\r
- CONTROL "Cache Configuration files",IDC_PATHS_CONFIGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,177,34,117,10\r
+ EDITTEXT IDC_PATHS_ROM,14,15,261,15,ES_AUTOHSCROLL\r
+ PUSHBUTTON "...",IDC_PATHS_ROMS,281,15,11,15\r
+ LTEXT "Configuration files:",IDC_PATHS_CONFIGL,14,32,121,8,SS_CENTERIMAGE\r
+ EDITTEXT IDC_PATHS_CONFIG,14,42,261,15,ES_AUTOHSCROLL\r
+ PUSHBUTTON "...",IDC_PATHS_CONFIGS,281,42,11,15\r
+ LTEXT "Screenshots:",IDC_PATHS_SCREENSHOTL,14,59,260,8,SS_CENTERIMAGE\r
+ EDITTEXT IDC_PATHS_SCREENSHOT,14,69,261,15,ES_AUTOHSCROLL\r
+ PUSHBUTTON "...",IDC_PATHS_SCREENSHOTS,281,69,11,15\r
+ LTEXT "State files:",IDC_PATHS_STATEFILEL,14,86,260,8,SS_CENTERIMAGE\r
+ EDITTEXT IDC_PATHS_SAVESTATE,14,96,261,15,ES_AUTOHSCROLL\r
+ PUSHBUTTON "...",IDC_PATHS_SAVESTATES,281,96,11,15\r
+ LTEXT "Videos:",IDC_PATHS_AVIOUTPUTL,14,113,260,8,SS_CENTERIMAGE\r
+ EDITTEXT IDC_PATHS_AVIOUTPUT,14,123,261,15,ES_AUTOHSCROLL\r
+ PUSHBUTTON "...",IDC_PATHS_AVIOUTPUTS,281,123,11,15\r
+ LTEXT "Saveimages:",IDC_PATHS_SAVEIMAGEL,14,140,261,8,SS_CENTERIMAGE\r
+ EDITTEXT IDC_PATHS_SAVEIMAGE,14,151,261,15,ES_AUTOHSCROLL\r
+ PUSHBUTTON "...",IDC_PATHS_SAVEIMAGES,281,151,11,15\r
+ PUSHBUTTON "Reset to defaults",IDC_PATHS_DEFAULT,14,196,92,14\r
+ PUSHBUTTON "Rescan ROMs",IDC_ROM_RESCAN,14,212,92,14\r
+ PUSHBUTTON "Clear registry",IDC_RESETREGISTRY,111,212,92,14\r
+ COMBOBOX IDC_PATHS_DEFAULTTYPE,111,197,163,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+ PUSHBUTTON "Clear disk history",IDC_RESETDISKHISTORY,14,228,92,14\r
+ CONTROL "Cache Configuration files",IDC_PATHS_CONFIGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,177,32,97,10\r
+ LTEXT "Rips:",IDC_PATHS_RIPSL,13,168,261,8,SS_CENTERIMAGE\r
+ EDITTEXT IDC_PATHS_RIP,13,178,261,15,ES_AUTOHSCROLL\r
+ PUSHBUTTON "...",IDC_PATHS_RIPS,280,178,11,15\r
END\r
\r
IDD_QUICKSTART DIALOGEX 0, 0, 300, 242\r
{
fetch_path ("ScreenshotPath", out, size);
}
+void fetch_ripperpath (char *out, int size)
+{
+ fetch_path ("RipperPath", out, size);
+}
void fetch_datapath (char *out, int size)
{
fetch_path (NULL, out, size);
}
extern void test (void);
-extern int screenshotmode, postscript_print_debugging, sound_debug, log_uaeserial;
+extern int screenshotmode, postscript_print_debugging, sound_debug, log_uaeserial, clipboard_debug;
extern int force_direct_catweasel, sound_mode_skip, maxmem;
extern DWORD_PTR cpu_affinity, cpu_paffinity;
log_uaeserial = 1;
return 1;
}
+ if (!strcmp (arg, "-clipboarddebug")) {
+ clipboard_debug = 1;
+ return 1;
+ }
if (!strcmp (arg, "-rplog")) {
log_rp = 1;
return 1;
#define WINUAEPUBLICBETA 1
-#define WINUAEBETA "10"
-#define WINUAEDATE MAKEBD(2009, 1, 24)
+#define WINUAEBETA "11"
+#define WINUAEDATE MAKEBD(2009, 2, 5)
#define WINUAEEXTRA ""
#define WINUAEREV ""
}
/* Returns 1 if an actual volume-name was found, 2 if no volume-name (so uses some defaults) */
-int target_get_volume_name(struct uaedev_mount_info *mtinf, const char *volumepath, char *volumename, int size, int inserted, int fullcheck)
+int target_get_volume_name (struct uaedev_mount_info *mtinf, const char *volumepath, char *volumename, int size, int inserted, int fullcheck)
{
int result = 2;
int drivetype;
- drivetype = GetDriveType(volumepath);
- if(inserted) {
- if(GetVolumeInformation(volumepath, volumename, size, NULL, NULL, NULL, NULL, 0) && volumename[0] && valid_volumename(mtinf, volumename, fullcheck)) {
+ drivetype = GetDriveType (volumepath);
+ if (inserted) {
+ if (GetVolumeInformation (volumepath, volumename, size, NULL, NULL, NULL, NULL, 0) &&
+ volumename[0] &&
+ valid_volumename (mtinf, volumename, fullcheck)) {
// +++Bernd Roesch
- if(!strcmp(volumename, "AmigaOS35"))
- strcpy(volumename, "AmigaOS3.5");
- if(!strcmp(volumename, "AmigaOS39"))
- strcpy(volumename, "AmigaOS3.9");
+ if(!strcmp (volumename, "AmigaOS35"))
+ strcpy (volumename, "AmigaOS3.5");
+ if(!strcmp (volumename, "AmigaOS39"))
+ strcpy (volumename, "AmigaOS3.9");
// ---Bernd Roesch
- result = 1;
+ if (strlen (volumename) > 0)
+ result = 1;
}
}
switch(drivetype)
{
case DRIVE_FIXED:
- sprintf(volumename, "WinDH_%c", volumepath[0]);
+ sprintf (volumename, "WinDH_%c", volumepath[0]);
break;
case DRIVE_CDROM:
- sprintf(volumename, "WinCD_%c", volumepath[0]);
+ sprintf (volumename, "WinCD_%c", volumepath[0]);
break;
case DRIVE_REMOVABLE:
- sprintf(volumename, "WinRMV_%c", volumepath[0]);
+ sprintf (volumename, "WinRMV_%c", volumepath[0]);
break;
case DRIVE_REMOTE:
- sprintf(volumename, "WinNET_%c", volumepath[0]);
+ sprintf (volumename, "WinNET_%c", volumepath[0]);
break;
case DRIVE_RAMDISK:
- sprintf(volumename, "WinRAM_%c", volumepath[0]);
+ sprintf (volumename, "WinRAM_%c", volumepath[0]);
break;
case DRIVE_UNKNOWN:
case DRIVE_NO_ROOT_DIR:
continue;
volumename[0] = 0;
if (inserted) {
- target_get_volume_name(&mountinfo, volumepath, volumename, MAX_DPATH, inserted, 1);
+ target_get_volume_name (&mountinfo, volumepath, volumename, MAX_DPATH, inserted, 1);
if (!volumename[0])
sprintf (volumename, "WinUNK_%c", drive);
}
strcat(volumepath, ".");
else
strcat(volumepath, "..");
+ //write_log ("Drive type %d: '%s' '%s'\n", drivetype, volumepath, volumename);
add_filesys_unit (devname[0] ? devname : NULL, volumename, volumepath, !rw, 0, 0, 0, 0, -20 - drvnum, 0, 1, 0, 0, 0);
drvnum++;
} /* if drivemask */
int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, char *path_out, int *multi)
{
static int statefile_previousfilter;
+ static int previousfilter[20];
OPENFILENAME openFileName;
char full_path[MAX_DPATH] = "";
char full_path2[MAX_DPATH];
char *p, *nextp;
int all = 1;
int next;
- int filterindex = 0;
int nosavepath = 0;
char szTitle[MAX_DPATH] = { 0 };
p += strlen (p) + 1;
*p = 0;
all = 0;
- filterindex = statefile_previousfilter;
}
defext = "USS";
break;
OFN_LONGNAMES | OFN_HIDEREADONLY | OFN_NOCHANGEDIR;
openFileName.lpstrFilter = szFilter;
openFileName.lpstrDefExt = defext;
- openFileName.nFilterIndex = filterindex;
+ openFileName.nFilterIndex = previousfilter[flag];
openFileName.lpstrFile = full_path;
openFileName.nMaxFile = MAX_DPATH;
openFileName.lpstrFileTitle = file_name;
if (!(result = GetOpenFileName (&openFileName)))
write_log ("GetOpenFileName() failed, err=%d.\n", GetLastError());
}
+ previousfilter[flag] = openFileName.nFilterIndex;
+
memcpy (full_path2, full_path, sizeof (full_path));
memcpy (stored_path, full_path, sizeof (stored_path));
next = 0;
break;
case IDC_DOSAVESTATE:
case IDC_DOLOADSTATE:
- statefile_previousfilter = openFileName.nFilterIndex;
savestate_initsave (full_path, openFileName.nFilterIndex, FALSE);
break;
case IDC_CREATE:
setpath (hDlg, "StatefilePath", IDC_PATHS_SAVESTATE, "Savestates");
setpath (hDlg, "SaveimagePath", IDC_PATHS_SAVEIMAGE, "SaveImages");
setpath (hDlg, "VideoPath", IDC_PATHS_AVIOUTPUT, "Videos");
+ setpath (hDlg, "RipperPath", IDC_PATHS_RIP, ".\\");
}
static void resetregistry (void)
regdelete (NULL, "ScreenshotPath");
regdelete (NULL, "StatefilePath");
regdelete (NULL, "VideoPath");
+ regdelete (NULL, "RipperPath");
regdelete (NULL, "QuickStartModel");
regdelete (NULL, "QuickStartConfiguration");
regdelete (NULL, "QuickStartCompatibility");
setac (hDlg, IDC_PATHS_SAVESTATE);
setac (hDlg, IDC_PATHS_SAVEIMAGE);
setac (hDlg, IDC_PATHS_AVIOUTPUT);
+ setac (hDlg, IDC_PATHS_RIP);
CheckDlgButton(hDlg, IDC_PATHS_CONFIGCACHE, configurationcache);
currentpage = PATHS_ID;
ShowWindow (GetDlgItem (hDlg, IDC_RESETREGISTRY), FALSE);
values_to_pathsdialog (hDlg);
}
break;
+ case IDC_PATHS_RIPS:
+ fetch_path ("RipperPath", tmp, sizeof (tmp));
+ if (DirectorySelection (hDlg, 0, tmp)) {
+ set_path ("RipperPath", tmp);
+ values_to_pathsdialog (hDlg);
+ }
+ break;
case IDC_PATHS_AVIOUTPUT:
GetWindowText (GetDlgItem (hDlg, IDC_PATHS_AVIOUTPUT), tmp, sizeof (tmp));
set_path ("VideoPath", tmp);
break;
+ case IDC_PATHS_RIP:
+ GetWindowText (GetDlgItem (hDlg, IDC_PATHS_RIP), tmp, sizeof (tmp));
+ set_path ("RipperPath", tmp);
+ break;
case IDC_PATHS_DEFAULT:
val = SendDlgItemMessage (hDlg, IDC_PATHS_DEFAULTTYPE, CB_GETCURSEL, 0, 0L);
if (val != CB_ERR && val >= 0 && val < numtypes) {
set_path ("StatefilePath", NULL);
set_path ("SaveimagePath", NULL);
set_path ("VideoPath", NULL);
+ set_path ("RipperPath", NULL);
values_to_pathsdialog (hDlg);
FreeConfigStore ();
}
-1,
IDD_MISC1, IDC_LANGUAGE,
-1,
- IDD_PATHS, IDC_PATHS_ROM, IDC_PATHS_CONFIG, IDC_PATHS_SCREENSHOT, IDC_PATHS_SAVESTATE, IDC_PATHS_AVIOUTPUT, IDC_PATHS_SAVEIMAGE,
+ IDD_PATHS, IDC_PATHS_ROM, IDC_PATHS_CONFIG, IDC_PATHS_SCREENSHOT, IDC_PATHS_SAVESTATE, IDC_PATHS_AVIOUTPUT, IDC_PATHS_SAVEIMAGE, IDC_PATHS_RIP,
-1,
IDD_IOPORTS, IDC_PRINTERLIST, IDC_PS_PARAMS, IDC_SERIAL, IDC_MIDIOUTLIST, IDC_MIDIINLIST,
-1,
-Beta 10:
+Beta 11:
+
+- fix for graphics corruption introduced in 1.5.3 when bitplane DMA
+ fetch happened while bitplane pointer was updated
+- AGA 6 plane mode (non-EHB) was not always enabled properly (b3)
+- added -clipboarddebug command line parameter that writes clipboard
+ contents to file in winuae directory. (clipboard_p2a.xxx.dat
+ and clipboard_a2p.xxx.dat)
+- added ripper path to Paths panel, used by prowizard and sample
+ ripper (previously sample ripper used screenshot directory and
+ prowizard used winuae root directory)
+- directory filesystem ACTION_CHANGE_MODE was completely broken in
+ CHANGE_FH mode, returned error and "Error: couldn't find key
+ x / y!" was logged. Bug since the beginning
+- clipboard: multiple CHRS chunk merging fixed (again), less stupid
+ clipboard.device detection
+- blitter line mode (only if linedraw code was "weird") broke in b3
+- 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
- clipboard: IFF ILBM Amiga to PC support implemented. EHB supported,