]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
imported winuaesrc1600b24.zip
authorToni Wilen <twilen@winuae.net>
Sun, 12 Apr 2009 11:51:41 +0000 (14:51 +0300)
committerToni Wilen <twilen@winuae.net>
Mon, 22 Feb 2010 19:45:57 +0000 (21:45 +0200)
19 files changed:
cfgfile.c
custom.c
debug.c
disk.c
filesys.asm
filesys_bootrom.c
include/native2amiga.h
jit/compemu_fpp.c
main.c
native2amiga.c
od-win32/clipboard_win32.c
od-win32/win32.c
od-win32/win32.h
od-win32/win32gui.c
od-win32/winuaechangelog.txt
od-win32/writelog.c
traps.c
uaeunp.c
zfile_archive.c

index 9c2ea492191c9b557df31fe2e04ea0a7848fd0f0..c5a5d844b0306386d6de3fae4c7f37be3a29d9c1 100644 (file)
--- a/cfgfile.c
+++ b/cfgfile.c
@@ -173,7 +173,7 @@ static const TCHAR *obsolete[] = {
     L"gfx_test_speed", L"gfxlib_replacement", L"enforcer", L"catweasel_io",
     L"kickstart_key_file", L"fast_copper", L"sound_adjust",
     L"serial_hardware_dtrdsr", L"gfx_filter_upscale",
-    L"gfx_correct_aspect",
+    L"gfx_correct_aspect", L"gfx_autoscale",
     NULL
 };
 
index 1b59e6ea336c5aee061cd3d05a7914cc78eb3e09..0bb7c542390201a2b083fc4dabc777487dc2b82b 100644 (file)
--- a/custom.c
+++ b/custom.c
@@ -5259,6 +5259,7 @@ void customreset (int hardreset)
     int i;
     int zero = 0;
 
+    target_reset ();
     reset_all_systems ();
     write_log (L"Reset at %08X\n", m68k_getpc (&regs));
     memory_map_dump();
@@ -5427,7 +5428,6 @@ void customreset (int hardreset)
        rtc_hardreset();
 
     picasso_reset ();
-    target_reset ();
 }
 
 void dumpcustom (void)
diff --git a/debug.c b/debug.c
index 662414fe04312e1e3b1e3f4f2680d063d0434057..a96d41982ce32ad20a78ad1af0df980454fc81d5 100644 (file)
--- a/debug.c
+++ b/debug.c
@@ -122,7 +122,8 @@ static TCHAR help[] = {
     L"  S <file> <addr> <n>   Save a block of Amiga memory\n"
     L"  s \"<string>\"/<values> [<addr>] [<length>]\n"
     L"                        Search for string/bytes\n"
-    L"  T                     Show exec tasks and their PCs\n"
+    L"  T or Tt               Show exec tasks and their PCs\n"
+    L"  Td,Tl,Tr              Show devices, libraries or resources\n"
     L"  b                     Step to previous state capture position\n"
     L"  M<a/b/s> <val>        Enable or disable audio channels, bitplanes or sprites\n"
     L"  sp <addr> [<addr2][<size>] Dump sprite information\n"
@@ -2002,9 +2003,13 @@ static TCHAR *BSTR2CSTR (uae_u8 *bstr)
 
 static void print_task_info (uaecptr node)
 {
+    TCHAR *s;
     int process = get_byte (node + 8) == 13 ? 1 : 0;
-    console_out_f (L"%08X: %08X", node, 0);
-    console_out_f (process ? L" PROCESS '%s'" : L" TASK    '%s'\n", get_real_address (get_long (node + 10)));
+
+    console_out_f (L"%08X: ", node);
+    s = au (get_real_address (get_long (node + 10)));
+    console_out_f (process ? L" PROCESS '%s'" : L" TASK    '%s'\n", s);
+    xfree (s);
     if (process) {
        uaecptr cli = BPTR2APTR (get_long (node + 172));
        int tasknum = get_long (node + 140);
@@ -2025,7 +2030,7 @@ static void show_exec_tasks (void)
     uaecptr taskready = get_long (execbase + 406);
     uaecptr taskwait = get_long (execbase + 420);
     uaecptr node, end;
-    console_out_f (L"Execbase at 0x%08X\n", (unsigned long) execbase);
+    console_out_f (L"Execbase at 0x%08X\n", execbase);
     console_out (L"Current:\n");
     node = get_long (execbase + 276);
     print_task_info (node);
@@ -2045,6 +2050,34 @@ static void show_exec_tasks (void)
     }
 }
 
+static void show_exec_lists (TCHAR t)
+{
+    uaecptr execbase = get_long (4);
+    uaecptr list = 0, node;
+
+    switch (_totupper (t))
+    {
+       case 'R':
+       list = execbase + 336;
+       break;
+       case 'D':
+       list = execbase + 350;
+       break;
+       case 'L':
+       list = execbase + 378;
+       break;
+    }
+    if (list == 0)
+       return;
+    node = get_long (list);
+    while (get_long (node)) {
+       TCHAR *name = au (get_real_address (get_long (node + 10)));
+       console_out_f (L"%08x %s\n", node, name);
+       xfree (name);
+       node = get_long (node);
+    }
+}
+
 #if 0
 static int trace_same_insn_count;
 static uae_u8 trace_insn_copy[10];
@@ -2732,7 +2765,12 @@ static void debug_1 (void)
            }
        }
        break;
-       case 'T': show_exec_tasks (); break;
+       case 'T':
+           if (inptr[0] == 't' || inptr[0] == 0)
+               show_exec_tasks ();
+           else
+               show_exec_lists (inptr[0]);
+       break;
        case 't':
            if (more_params (&inptr))
                skipaddr_doskip = readint (&inptr);
diff --git a/disk.c b/disk.c
index e976b9ee08f67abe5a26c2d3cfaec52b8fe6abc9..47fcce47a5dfbc95b8ccb09d30fd8d4571f5e298 100644 (file)
--- a/disk.c
+++ b/disk.c
@@ -2065,6 +2065,9 @@ void disk_creatediskfile (TCHAR *name, int type, drive_type adftype, TCHAR *disk
     }
     xfree (chunk);
     zfile_fclose (f);
+    if (f)
+       DISK_history_add (name, -1);
+
 }
 
 int disk_getwriteprotect (const TCHAR *name)
index 0081a0c3574762699d7660132168ff8d6059d604..b63c4a6f98287383e7074346e3c5100582acedef 100644 (file)
@@ -73,7 +73,7 @@ residenthack
        bcs.s .rsh
        moveq #residentcodeend-residentcodestart,d0
        move.l d0,d2
-       move.l #65536+1,d1
+       moveq #1,d1
        jsr AllocMem(a6)
        tst.l d0
        beq.s .rsh
@@ -86,7 +86,7 @@ residenthack
        subq.l #4,d2
        bne.s .cp1
 
-       jsr -$0078(a6)
+       jsr -$0078(a6) ;Disable
        move.l a6,a1
        move.w #-$48,a0 ;InitCode
        move.l a2,d0
@@ -95,7 +95,7 @@ residenthack
        lea myafterdos(pc),a0
        move.l a0,residentcodejump1-residentcodestart+2(a2)
        jsr -$27C(a6) ;CacheClearU
-       jsr -$007e(a6)
+       jsr -$007e(a6) ;Enable
 .rsh
        movem.l (sp)+,d0-d2/a0-a2/a6
        rts
@@ -2241,11 +2241,6 @@ cfloop3
        bra.s cfloop3
        
 cfversion
-       move.w #$FF38,d0
-       moveq #15,d1
-       bsr.w getrtbase
-       jsr (a0)
-
        bsr.w prefshook
 
        lea CLIP_HOOK(a5),a0
@@ -2259,6 +2254,13 @@ cfversion
        move.l a4,a1
        jsr -$01c8(a6) ;DoIO
 
+       move.w #$FF38,d0
+       moveq #15,d1
+       bsr.w getrtbase
+       jsr (a0)
+       tst.l CLIP_WRITE_SIZE(a5)
+       bne.s clipsignal
+
 cfloop
        moveq #0,d0
        moveq #0,d2
@@ -2267,11 +2269,11 @@ cfloop
        bset #13,d0
        jsr -$013e(a6) ;Wait
        btst d2,d0
-       beq.s .clipsignal
+       beq.s clipsignal
        bsr.w prefsread
        bra.s cfloop
 
-.clipsignal
+clipsignal
        move.l CLIP_WRITE_SIZE(a5),d0
        beq.w clipread
        ;allocate amiga-side space
index 5c5e475e744eb77f90bc88764a4ff01b65c509e7..0fc55a03a723bbf5bd530c69d99d18848fc0cfe0 100644 (file)
@@ -3,7 +3,7 @@
  db(0x00); db(0x00); db(0x08); db(0x04); db(0x00); db(0x00); db(0x00); db(0xd0);
  db(0x00); db(0x00); db(0x02); db(0x2c); db(0x00); db(0x00); db(0x00); db(0x24);
  db(0x00); db(0x00); db(0x02); db(0xe8); db(0x00); db(0x00); db(0x0d); db(0xf4);
- db(0x00); db(0x00); db(0x12); db(0x84); db(0x43); db(0xfa); db(0x16); db(0xdb);
+ db(0x00); db(0x00); db(0x12); db(0x84); db(0x43); db(0xfa); db(0x16); db(0xe1);
  db(0x4e); db(0xae); db(0xff); db(0xa0); db(0x20); db(0x40); db(0x20); db(0x28);
  db(0x00); db(0x16); db(0x20); db(0x40); db(0x4e); db(0x90); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0xe0); db(0xe2); db(0x2c); db(0x78); db(0x00); db(0x04);
@@ -27,9 +27,9 @@
  db(0x4e); db(0xf9); db(0x00); db(0xf0); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x48); db(0xe7); db(0xff); db(0xfe); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x30); db(0x3c); db(0xff); db(0xfc); db(0x61); db(0x00); db(0x0b); db(0x82);
- db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x16); db(0x4c); db(0x70); db(0x24);
+ db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x16); db(0x52); db(0x70); db(0x24);
  db(0x7a); db(0x01); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80);
- db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x16); db(0x3c); db(0x70); db(0x00);
+ db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x16); db(0x42); 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(0xf0); db(0x4e); db(0x90); db(0x72); db(0x03); db(0x74); db(0xf6);
  db(0x20); db(0x7c); db(0x00); db(0x20); db(0x00); db(0x00); db(0x90); db(0x88);
  db(0x65); db(0x0a); db(0x67); db(0x08); db(0x78); db(0x00); db(0x22); db(0x44);
- db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x15); db(0x47);
+ db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x15); db(0x4d);
  db(0x43); db(0xfa); db(0x00); db(0x54); db(0x70); db(0x0a); db(0x61); db(0x00);
  db(0x0b); db(0xa4); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c);
  db(0xff); db(0x48); db(0x61); db(0x00); db(0x0a); db(0xbc); db(0x4e); db(0x90);
  db(0x4c); db(0xdf); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x48); db(0xe7);
  db(0x38); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x00);
  db(0x28); db(0x01); db(0x26); db(0x09); db(0x24); db(0x48); db(0x43); db(0xfa);
- db(0x15); db(0x41); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x15); db(0x47); 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(0xf2);
+ db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x14); db(0xf8);
  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);
@@ -95,7 +95,7 @@
  db(0x48); db(0xe7); db(0xc0); db(0xc0); db(0x61); db(0x00); db(0xfd); db(0x4a);
  db(0x70); db(0x1a); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
  db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40); db(0x41); db(0xfa);
- db(0x13); db(0xc6); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
+ db(0x13); db(0xcc); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
  db(0xff); db(0x24); db(0x23); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xfa);
  db(0xff); db(0x1c); db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c);
  db(0x02); db(0x14); db(0x00); db(0x08); db(0x70); db(0x03); db(0x4e); db(0xae);
  db(0x00); db(0x00); db(0x00); db(0x0e); db(0x52); db(0x40); db(0x0c); db(0x40);
  db(0x00); db(0x8c); db(0x66); db(0xf2); db(0x20); db(0x0a); db(0xe4); db(0x88);
  db(0x21); db(0x40); db(0x00); db(0x36); db(0x22); db(0x48); db(0x41); db(0xfa);
- db(0x13); db(0x56); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b);
+ db(0x13); db(0x5c); 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(0x12); db(0xa8); db(0x10); db(0x19); db(0x12); db(0x1a);
+ db(0x45); db(0xfa); db(0x12); db(0xae); db(0x10); db(0x19); db(0x12); db(0x1a);
  db(0xb0); db(0x01); db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x42);
  db(0x60); db(0xf2); db(0x20); db(0x50); db(0x60); db(0xe2); db(0x70); db(0x20);
  db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
  db(0xff); db(0x3a); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08);
- db(0x00); db(0x08); db(0x41); db(0xfa); db(0x12); db(0x7e); db(0x25); db(0x48);
- db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x11); db(0xfa); db(0x25); db(0x48);
+ db(0x00); db(0x08); db(0x41); db(0xfa); db(0x12); db(0x84); db(0x25); db(0x48);
+ db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x12); db(0x00); 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(0x0d); db(0x77); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0x43); db(0xfa); db(0x0d); db(0x7d); db(0x70); db(0x00); db(0x4e); db(0xae);
  db(0xfd); db(0xd8); db(0x2c); db(0x40); db(0x22); db(0x0a); db(0x4e); db(0xae);
  db(0xff); db(0x52); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4a); db(0x20); db(0x02);
  db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x01); db(0x7e); db(0x06);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0d); db(0x72);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0d); db(0x78);
  db(0x70); db(0x24); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80);
  db(0x66); db(0x0e); db(0x08); db(0x87); db(0x00); db(0x02); db(0x43); db(0xfa);
- db(0x0d); db(0x60); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x0d); db(0x66); 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(0x0c); db(0xc7); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0x43); db(0xfa); db(0x0c); db(0xcd); 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(0xbe);
+ db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa); db(0x0b); db(0xc4);
  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(0xbb);
+ db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x0b); db(0xc1);
  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(0x09); db(0x1b); db(0x43); db(0xfa); db(0x01); db(0x5c);
+ db(0x41); db(0xfa); db(0x09); db(0x21); db(0x43); db(0xfa); db(0x01); db(0x5c);
  db(0x70); db(0x13); db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75);
  db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x33); db(0x7c); db(0x00); db(0x0a);
  db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
  db(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(0x5f);
+ db(0x00); db(0x05); db(0x00); db(0x09); db(0x41); db(0xfa); db(0x07); db(0x65);
  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(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(0x7d); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x07); db(0x83); 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(0x73); db(0x70); db(0x00);
+ db(0x66); db(0xc4); db(0x43); db(0xfa); db(0x07); db(0x79); 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(0x62); db(0x4e); db(0xae); db(0xfe); db(0xec);
+ db(0x43); db(0xfa); db(0x06); db(0x68); 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(0x50); db(0x70); db(0x00);
+ db(0x67); db(0x8c); db(0x41); db(0xfa); db(0x06); db(0x56); 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(0x2f); db(0x4e); db(0xae); db(0xfe); db(0xec);
+ db(0x43); db(0xfa); db(0x06); db(0x35); 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(0x1b);
+ db(0x67); db(0x00); db(0xff); db(0x4c); db(0x41); db(0xfa); db(0x06); db(0x21);
  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(0x00); db(0x40); db(0x2a); db(0x40); db(0x2b); db(0x4e); db(0x00); db(0x14);
  db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00);
  db(0xf9); db(0xb0); db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x41); db(0xfa);
- db(0x03); db(0xe7); db(0x43); db(0xfa); db(0x01); db(0x14); db(0x70); db(0xf6);
+ db(0x03); db(0xed); db(0x43); db(0xfa); db(0x01); db(0x14); db(0x70); db(0xf6);
  db(0x22); db(0x3c); db(0x00); db(0x00); db(0x27); db(0x10); db(0x61); db(0x00);
  db(0xee); db(0xe6); db(0x70); db(0x00); db(0x4c); db(0xdf); db(0x60); db(0x00);
  db(0x4e); db(0x75); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0a);
  db(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(0x75); db(0x22); db(0x08); db(0x24); db(0x3c); db(0x00); db(0x00);
+ db(0x03); db(0x7b); 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(0x61); db(0x00); db(0xf8); db(0xf6); db(0x4e); db(0x90); db(0x22); db(0x04);
  db(0x67); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xdc); db(0x4c); db(0xdf);
  db(0x7c); db(0x1c); db(0x4e); db(0x75); db(0x2c); db(0x6d); db(0x00); db(0x18);
- db(0x41); db(0xfa); db(0x02); db(0xed); db(0x22); db(0x08); db(0x74); db(0xfe);
+ db(0x41); db(0xfa); db(0x02); db(0xf3); 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(0xdd); db(0x24); db(0x88); db(0x25); db(0x7c); db(0x00); db(0x00);
+ db(0x02); db(0xe3); 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(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0xfc); db(0x2a); db(0x40);
  db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x93); db(0xc9); db(0x4e); db(0xae);
  db(0xfe); db(0xda); db(0x2b); db(0x40); db(0x00); db(0x08); db(0x43); db(0xfa);
- db(0x03); db(0x09); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x03); db(0x0f); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
  db(0x2b); db(0x40); db(0x00); db(0x18); db(0x67); db(0x00); db(0xfe); db(0xda);
  db(0x2c); db(0x40); db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x41); db(0xfa); db(0x02); db(0x41); db(0x22); db(0x08); db(0x74); db(0xfe);
+ db(0x41); db(0xfa); db(0x02); db(0x47); db(0x22); db(0x08); db(0x74); db(0xfe);
  db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0xea);
  db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x72); db(0x32);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x02); db(0x2b);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x02); db(0x31);
  db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae); db(0xff); db(0xac);
  db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0xa4); db(0x22); db(0x00);
  db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14);
  db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0x84); db(0x70); db(0x00);
  db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2);
  db(0x72); db(0x00); db(0x20); db(0x2d); db(0x00); db(0x0c); db(0x41); db(0xfa);
- db(0x02); db(0x04); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44);
+ db(0x02); db(0x0a); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44);
  db(0x4a); db(0x80); db(0x66); db(0xe2); db(0x20); db(0x6c); db(0x00); db(0x14);
  db(0x0c); db(0x68); db(0x00); db(0x25); db(0x00); db(0x14); db(0x64); db(0x0c);
  db(0x61); db(0x00); db(0xfe); db(0x48); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x60); db(0xf8); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x0f); db(0x61); db(0x00); db(0xf7); db(0xc4); db(0x4e); db(0x90);
- db(0x61); db(0x00); db(0xfe); db(0xda); 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(0x24); 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(0x60); 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(0xfe); db(0xc2); db(0x60); db(0xf8); db(0x61); db(0x00); db(0xfe); db(0xe6);
+ db(0x41); db(0xed); db(0x00); db(0x1c); db(0x29); db(0x48); db(0x00); db(0x28);
+ db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); db(0x39); db(0x7c);
+ db(0x00); db(0x0c); db(0x00); db(0x1c); db(0x2b); db(0x4d); db(0x00); db(0x2c);
+ db(0x41); db(0xfa); db(0x01); db(0x5c); db(0x2b); db(0x48); db(0x00); db(0x24);
  db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x0b); db(0x61); db(0x00); db(0xf6); db(0x8a);
- 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(0x00); db(0x44); db(0x45); db(0x56); db(0x53); db(0x3a);
- db(0x00); db(0x44); db(0x45); db(0x56); db(0x53); db(0x3a); db(0x63); db(0x6c);
- db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x2e);
- db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x52);
- db(0x41); db(0x4d); db(0x3a); db(0x00); db(0x63); db(0x6c); db(0x69); db(0x70);
+ db(0xff); db(0x38); db(0x72); db(0x0f); db(0x61); db(0x00); db(0xf7); db(0x9a);
+ db(0x4e); db(0x90); db(0x4a); db(0xad); db(0x00); db(0x00); db(0x66); db(0x1c);
+ db(0x70); db(0x00); db(0x74); db(0x00); db(0x14); db(0x2d); db(0x00); db(0x4c);
+ db(0x05); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae);
+ db(0xfe); db(0xc2); db(0x05); db(0x00); db(0x67); db(0x06); db(0x61); db(0x00);
+ db(0xfe); db(0x1e); db(0x60); db(0xe4); db(0x20); db(0x2d); db(0x00); db(0x00);
+ db(0x67); db(0x00); db(0x00); db(0x72); db(0x72); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x2b); db(0x40); db(0x00); db(0x04); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x72); db(0x0c); db(0x61); db(0x00); db(0xf7); db(0x5a);
+ db(0x4e); db(0x90); db(0x4a); db(0xad); db(0x00); db(0x04); db(0x67); db(0x3a);
+ db(0x39); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x1c); db(0x42); db(0x2c);
+ db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x20); db(0x29); db(0x6d);
+ db(0x00); db(0x00); db(0x00); db(0x24); db(0x29); db(0x6d); db(0x00); db(0x04);
+ db(0x00); db(0x28); db(0x42); db(0xac); db(0x00); db(0x2c); db(0x42); db(0xac);
+ db(0x00); db(0x30); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x2b); db(0x6c); db(0x00); db(0x30); db(0x00); db(0x10); db(0x39); db(0x7c);
+ db(0x00); db(0x04); db(0x00); db(0x1c); db(0x22); db(0x4c); db(0x4e); db(0xae);
+ db(0xfe); db(0x38); db(0x20); db(0x2d); db(0x00); db(0x00); db(0x42); db(0xad);
+ db(0x00); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x04); db(0x67); db(0x00);
+ db(0xff); db(0x78); db(0x22); db(0x41); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x60); db(0x00); db(0xff); db(0x6e); db(0x39); db(0x7c); db(0x00); db(0x02);
+ db(0x00); db(0x1c); db(0x41); db(0xed); db(0x00); db(0x30); db(0x42); db(0x90);
+ db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0x2c); db(0x00); db(0x1f);
+ db(0x42); db(0xac); db(0x00); db(0x2c); db(0x42); db(0xac); db(0x00); db(0x30);
+ db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x08); db(0x29); db(0x40);
+ db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x0c); db(0xad); db(0x46); db(0x4f); db(0x52); db(0x4d); db(0x00); db(0x30);
+ db(0x66); db(0x52); db(0x20); db(0x2d); db(0x00); db(0x34); db(0x67); db(0x4c);
+ db(0x6b); db(0x4a); db(0x2b); db(0x6c); db(0x00); db(0x30); db(0x00); db(0x10);
+ db(0x50); db(0x80); db(0x24); db(0x00); db(0x72); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x36); db(0x24); db(0x40);
+ db(0x20); db(0x4a); db(0x20); db(0xed); db(0x00); db(0x30); db(0x20); db(0xed);
+ db(0x00); db(0x34); db(0x29); db(0x48); db(0x00); db(0x28); db(0x20); db(0x02);
+ db(0x51); db(0x80); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x0b); db(0x61); db(0x00); db(0xf6); db(0x84); db(0x20); db(0x2c);
+ db(0x00); db(0x20); db(0x4e); db(0x90); db(0x22); db(0x4a); db(0x20); db(0x02);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4a); db(0xac); db(0x00); db(0x20);
+ db(0x67); db(0x00); db(0xfe); db(0xde); db(0x41); db(0xed); db(0x00); db(0x30);
+ db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); db(0x29); db(0x40);
+ db(0x00); db(0x24); db(0x42); db(0xac); db(0x00); db(0x20); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x60); db(0xde); db(0x41); db(0xe8);
+ db(0xff); db(0xe4); db(0x20); db(0x29); db(0x00); db(0x08); db(0xb0); db(0xa8);
+ db(0x00); db(0x10); db(0x67); db(0x1a); db(0x21); db(0x40); db(0x00); db(0x10);
+ db(0x2f); db(0x0e); db(0x2c); db(0x68); db(0x00); db(0x14); db(0x22); db(0x68);
+ db(0x00); db(0x08); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
+ db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x2c); db(0x5f); db(0x70); db(0x00);
+ db(0x4e); db(0x75); db(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(0x00); db(0x44); db(0x45); db(0x56); db(0x53); db(0x3a); db(0x00); db(0x44);
+ db(0x45); db(0x56); db(0x53); db(0x3a); db(0x63); db(0x6c); db(0x69); db(0x70);
  db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x2e); db(0x64); db(0x65);
  db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x52); db(0x41); db(0x4d);
- db(0x3a); db(0x45); db(0x6e); db(0x76); db(0x2f); db(0x53); db(0x79); db(0x73);
- db(0x2f); db(0x50); db(0x6f); db(0x69); db(0x6e); db(0x74); db(0x65); db(0x72);
- db(0x2e); db(0x70); db(0x72); db(0x65); db(0x66); db(0x73); db(0x00); db(0x55);
- db(0x41); db(0x45); db(0x20); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62);
- db(0x6f); db(0x61); db(0x72); db(0x64); db(0x20); db(0x73); db(0x68); db(0x61);
- db(0x72); db(0x69); db(0x6e); db(0x67); db(0x00); db(0x55); db(0x41); db(0x45);
- db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73); db(0x65); db(0x20); db(0x64);
- db(0x72); db(0x69); db(0x76); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41);
- db(0x45); db(0x20); db(0x66); db(0x69); db(0x6c); db(0x65); db(0x73); db(0x79);
- db(0x73); db(0x74); db(0x65); db(0x6d); db(0x00); db(0x55); db(0x41); db(0x45);
- db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f);
- db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x00);
- db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61);
- db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74);
- db(0x20); db(0x70); db(0x72); db(0x6f); db(0x63); db(0x65); db(0x73); db(0x73);
- db(0x00); db(0x64); db(0x6f); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62);
- db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x69); db(0x6e); db(0x74);
- db(0x75); db(0x69); db(0x74); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c);
- db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x67);
- db(0x72); db(0x61); db(0x70); db(0x68); db(0x69); db(0x63); db(0x73); db(0x2e);
+ db(0x3a); db(0x00); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f);
+ db(0x61); db(0x72); db(0x64); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69);
+ db(0x63); db(0x65); db(0x00); db(0x52); db(0x41); db(0x4d); db(0x3a); db(0x45);
+ db(0x6e); db(0x76); db(0x2f); db(0x53); db(0x79); db(0x73); db(0x2f); db(0x50);
+ db(0x6f); db(0x69); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x2e); db(0x70);
+ db(0x72); db(0x65); db(0x66); db(0x73); db(0x00); db(0x55); db(0x41); db(0x45);
+ db(0x20); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61);
+ db(0x72); db(0x64); db(0x20); db(0x73); db(0x68); db(0x61); db(0x72); db(0x69);
+ db(0x6e); db(0x67); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x6d);
+ db(0x6f); db(0x75); db(0x73); db(0x65); db(0x20); db(0x64); db(0x72); db(0x69);
+ db(0x76); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20);
+ db(0x66); db(0x69); db(0x6c); db(0x65); db(0x73); db(0x79); db(0x73); db(0x74);
+ db(0x65); db(0x6d); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66);
+ db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f);
+ db(0x75); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41);
+ db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74);
+ db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x20); db(0x70);
+ db(0x72); db(0x6f); db(0x63); db(0x65); db(0x73); db(0x73); db(0x00); db(0x64);
+ db(0x6f); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61);
+ db(0x72); db(0x79); db(0x00); db(0x69); db(0x6e); db(0x74); db(0x75); db(0x69);
+ db(0x74); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62);
+ db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x67); db(0x72); db(0x61);
+ db(0x70); db(0x68); db(0x69); db(0x63); db(0x73); db(0x2e); db(0x6c); db(0x69);
+ db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x65); db(0x78);
+ db(0x70); db(0x61); db(0x6e); db(0x73); db(0x69); db(0x6f); db(0x6e); db(0x2e);
  db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00);
- db(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(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(0x03); db(0xf2);
 
index 1d8469381280a977e88dd6123efb320333e9f3ed..524e2e8a0f807c6d04d9c146f549811a31ee269e 100644 (file)
@@ -30,6 +30,8 @@ void uae_FreeMem (TrapContext *context, uaecptr memory, uae_u32 size);
  */
 void native2amiga_install (void);
 
+void native2amiga_reset (void);
+
 /*
  * to be called when the Amiga boots, i.e. by filesys_diagentry()
  */
index df842a26be8d08f68585e8e47aa18f7e24a8f1ce..ed78dd2e65e29290b158793b575aa97d37efb888 100644 (file)
@@ -134,7 +134,7 @@ STATIC_INLINE int comp_fp_get (uae_u32 opcode, uae_u16 extra, int treg)
          }
         case 2: /* (d16,PC) */
          {
-            uae_u32 address=start_pc+((TCHAR *)comp_pc_p-(TCHAR *)start_pc_p)+
+            uae_u32 address=start_pc+((uae_char*)comp_pc_p-(uae_char*)start_pc_p)+
                        m68k_pc_offset;
             uae_s32 PC16off =(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2);
             mov_l_ri(S1,address+PC16off);
diff --git a/main.c b/main.c
index 212ea4a355b3fc1f5e485ad93f6520d88b4ac857..f6a1d8eb6039da322865b17890794129984be984 100644 (file)
--- a/main.c
+++ b/main.c
@@ -503,7 +503,6 @@ static void parse_cmdline (int argc, TCHAR **argv)
            xfree (txt);
        } else if (_tcsncmp (argv[i], L"-statefile=", 11) == 0) {
            TCHAR *txt = parsetext (argv[i] + 11);
-           write_log (L"%s\n", txt);
            savestate_state = STATE_DORESTORE;
            _tcscpy (savestate_fname, txt);
            xfree (txt);
@@ -605,6 +604,7 @@ void reset_all_systems (void)
 #if defined (PARALLEL_PORT)
     initparallel ();
 #endif
+    native2amiga_reset ();
 }
 
 /* Okay, this stuff looks strange, but it is here to encourage people who
index 42cc3f31f800de28bc4ec26fce8f9a102c6c9c04..6ddd31762edb0619e161bffcbd4e384ff4970c7e 100644 (file)
@@ -34,6 +34,14 @@ void native2amiga_install (void)
     uae_sem_init (&n2asem, 0, 1);
 }
 
+void native2amiga_reset (void)
+{
+    smp_comm_pipe *p = &native2amiga_pending;
+    p->rdp = p->wrp = 0;
+    p->reader_waiting = 0;
+    p->writer_waiting = 0;
+};
+
 /*
  * to be called when the Amiga boots, i.e. by filesys_diagentry()
  */
index f22c1970d79bbc7a5f5b4c10d193e19b675b6fbd..7addb05d3d69a3d7d6dc347965c66d4ddb6b56d9 100644 (file)
@@ -19,7 +19,7 @@ int clipboard_debug;
 static HWND chwnd;
 static HDC hdc;
 static uaecptr clipboard_data;
-static int vdelay, signaling;
+static int vdelay, signaling, initialized;
 static uae_u8 *to_amiga;
 static uae_u32 to_amiga_size;
 static int clipopen;
@@ -56,11 +56,14 @@ static void debugwrite (const TCHAR *name, uae_u8 *p, int size)
 
 static void to_amiga_start (void)
 {
+    if (!initialized)
+       return;
     if (!clipboard_data)
        return;
     if (clipboard_debug) {
        debugwrite (L"clipboard_p2a", to_amiga, to_amiga_size);
     }
+    write_log (L"clipboard: to_amiga %08x\n", clipboard_data);
     put_long (clipboard_data, to_amiga_size);
     uae_Signal (get_long (clipboard_data + 8), 1 << 13);
 }
@@ -670,23 +673,23 @@ static void clipboard_read (HWND hwnd)
     UINT f;
     int text = FALSE, bmp = FALSE;
     
+    clipboard_change = 0;
+    //write_log (L"clipboard: read windows clipboard\n");
     if (!OpenClipboard (hwnd))
        return;
     f = 0;
-    write_log (L"clipboard: windows clipboard: ");
     while (f = EnumClipboardFormats (f)) {
-       write_log (L"%d ", f);
        if (f == CF_UNICODETEXT)
            text = TRUE;
        if (f == CF_BITMAP)
            bmp = TRUE;
     }
-    write_log (L"\n");
     if (text) {
        hglb = GetClipboardData (CF_UNICODETEXT); 
        if (hglb != NULL) { 
            TCHAR *lptstr = GlobalLock (hglb); 
            if (lptstr != NULL) {
+               //write_log (L"clipboard: CF_UNICODETEXT '%s'\n", lptstr);
                to_iff_text (lptstr);
                GlobalUnlock (hglb);
            }
@@ -694,6 +697,7 @@ static void clipboard_read (HWND hwnd)
     } else if (bmp) {
        HBITMAP hbmp = GetClipboardData (CF_BITMAP);
        if (hbmp != NULL) {
+           //write_log (L"clipboard: CF_BITMAP\n");
            to_iff_ilbm (hbmp);
        }
     }
@@ -714,7 +718,8 @@ static void clipboard_free_delayed (void)
 
 void clipboard_changed (HWND hwnd)
 {
-    if (!clipboard_data)
+    //write_log (L"clipboard: windows clipboard changed message\n");
+    if (!clipboard_data || !initialized)
        return;
     if (clipopen)
        return;
@@ -737,7 +742,7 @@ static int clipboard_put_bmp_real (HBITMAP hbmp)
     ret = TRUE;
     CloseClipboard ();
     clipopen--;
-    write_log (L"clipboard: BMP written to windows clipboard\n");
+    //write_log (L"clipboard: BMP written to windows clipboard\n");
     return ret;
 }
 
@@ -760,7 +765,7 @@ static int clipboard_put_text_real (const TCHAR *txt)
     }
     CloseClipboard ();
     clipopen--;
-    write_log (L"clipboard: text written to windows clipboard\n");
+    //write_log (L"clipboard: text written to windows clipboard\n");
     return ret;
 }
 
@@ -793,26 +798,33 @@ void amiga_clipboard_init (void)
 {
     signaling = 0;
     write_log (L"clipboard initialized\n");
+    initialized = 1;
+    clipboard_read (chwnd);
 }
 
 void amiga_clipboard_task_start (uaecptr data)
 {
     clipboard_data = data;
     signaling = 1;
-    write_log (L"clipboard task init: %08x\n", data);
+    write_log (L"clipboard task init: %08x\n", clipboard_data);
 }
 
 uae_u32 amiga_clipboard_proc_start (void)
 {
-    write_log (L"clipboard process init\n");
+    write_log (L"clipboard process init: %08x\n", clipboard_data);
     signaling = 1;
     return clipboard_data;
 }
 
 void amiga_clipboard_got_data (uaecptr data, uae_u32 size, uae_u32 actual)
 {
-    uae_u8 *addr = get_real_address (data);
-    write_log (L"clipboard: <-amiga, %08x %d %d\n", data, size, actual);
+    uae_u8 *addr;
+    if (!initialized) {
+       write_log (L"clipboard: got_data() before initialized!?\n");
+       return;
+    }
+    addr = get_real_address (data);
+    //write_log (L"clipboard: <-amiga, %08x, %08x %d %d\n", clipboard_data, data, size, actual);
     from_iff (data, actual);
 }
 
@@ -822,12 +834,16 @@ void amiga_clipboard_want_data (void)
 
     addr = get_long (clipboard_data + 4);
     size = get_long (clipboard_data);
+    if (!initialized) {
+       write_log (L"clipboard: want_data() before initialized!? (%08x %08x %d)\n", clipboard_data, addr, size);
+       return;
+    }
     if (addr && size) {
        uae_u8 *raddr = get_real_address (addr);
        memcpy (raddr, to_amiga, size);
     }
     xfree (to_amiga);
-    write_log (L"clipboard: ->amiga, %08x %d bytes\n", addr, size);
+    //write_log (L"clipboard: ->amiga, %08x, %08x %d bytes\n", clipboard_data, addr, size);
     to_amiga = NULL;
     to_amiga_size = 0;
 }
@@ -835,9 +851,10 @@ void amiga_clipboard_want_data (void)
 void clipboard_active (HWND hwnd, int active)
 {
     clipactive = active;
+    if (!initialized)
+       return;
     if (clipactive && clipboard_change) {
        clipboard_read (hwnd);
-       clipboard_change = 0;
     }
     if (!clipactive && clipboard_delayed_data) {
        if (clipboard_delayed_size < 0) {
@@ -854,23 +871,28 @@ void clipboard_active (HWND hwnd, int active)
 void clipboard_vsync (void)
 {
     uaecptr task;
+
     if (!signaling || !clipboard_data)
        return;
     vdelay--;
     if (vdelay > 0)
        return;
     task = get_long (clipboard_data + 8);
-    if (task && native2amiga_isfree ())
+    if (task && native2amiga_isfree ()) {
        uae_Signal (task, 1 << 13);
+//     write_log (L"clipboard: signal %08x\n", clipboard_data);
+    }
     vdelay = 50;
 }
 
 void clipboard_reset (void)
 {
+    write_log (L"clipboard: reset (%08x)\n", clipboard_data);
     vdelay = 100;
     clipboard_free_delayed ();
     clipboard_data = 0;
     signaling = 0;
+    initialized = 0;
     xfree (to_amiga);
     to_amiga = NULL;
     to_amiga_size = 0;
index 42263aaefa3219e6226590bab6307905c705283d..fa4990ddd31863700157a237d138efa10f0d1008 100644 (file)
@@ -3602,9 +3602,10 @@ static TCHAR **parseargstring (TCHAR *s)
        if (*p == 0)
            break;
        if (*p == '\'' || *p == '"') {
+           TCHAR sc = *p;
            p++;
            s++;
-           while (*p && *p != '\'' && *p != '"')
+           while (*p && *p != sc)
                p++;
            skip = 1;
        } else {
index 92b75f3f0c33baf5effdb3b3dd5fbfdfd411d4fe..f96612be74673d9eda89fb8019bc2b8a5cdf126b 100644 (file)
@@ -17,8 +17,8 @@
 
 #define WINUAEPUBLICBETA 1
 
-#define WINUAEBETA L"23"
-#define WINUAEDATE MAKEBD(2009, 4, 10)
+#define WINUAEBETA L"24"
+#define WINUAEDATE MAKEBD(2009, 4, 12)
 #define WINUAEEXTRA L""
 #define WINUAEREV L""
 
index 13abf0f555b6ac0714e16c3c2f1868335a08422f..0781ca7a9475391035f37cee8ec22d1d67717c82 100644 (file)
@@ -8656,9 +8656,11 @@ static INT_PTR CALLBACK FloppyDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARA
                break;
            case IDC_CREATE:
                DiskSelection (hDlg, wParam, 1, &workprefs, 0);
+               addfloppyhistory (hDlg);
                break;
            case IDC_CREATE_RAW:
                DiskSelection (hDlg, wParam, 1, &workprefs, 0);
+               addfloppyhistory (hDlg);
                break;
            }
            recursive--;
@@ -9054,8 +9056,10 @@ static void updatejoyport (HWND hDlg)
        }
        for (j = 0; j < inputdevice_get_device_total (IDTYPE_JOYSTICK); j++, total++)
            SendDlgItemMessage (hDlg, id, CB_ADDSTRING, 0, (LPARAM)inputdevice_get_device_name(IDTYPE_JOYSTICK, j));
-       for (j = 0; j < inputdevice_get_device_total (IDTYPE_MOUSE); j++, total++)
-           SendDlgItemMessage (hDlg, id, CB_ADDSTRING, 0, (LPARAM)inputdevice_get_device_name(IDTYPE_MOUSE, j));
+       if (i < 2) {
+           for (j = 0; j < inputdevice_get_device_total (IDTYPE_MOUSE); j++, total++)
+               SendDlgItemMessage (hDlg, id, CB_ADDSTRING, 0, (LPARAM)inputdevice_get_device_name(IDTYPE_MOUSE, j));
+       }
        idx = inputdevice_getjoyportdevice (v);
        if (idx >= 0)
            idx += 2;
@@ -9534,6 +9538,8 @@ static INT_PTR CALLBACK IOPortsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPAR
            workprefs.parallel_postscript_detection = IsDlgButtonChecked (hDlg, IDC_PSPRINTERDETECT) ? 1 : 0;
            if (!workprefs.parallel_postscript_detection)
                CheckDlgButton (hDlg, IDC_PSPRINTER, 0);
+       } else if (wParam == IDC_UAESERIAL || wParam == IDC_SER_SHARED || wParam == IDC_SER_DIRECT || wParam == IDC_SER_CTSRTS || wParam == IDC_PRINTERAUTOFLUSH) {
+           values_from_portsdlg (hDlg);
        } else {
            if (HIWORD (wParam) == CBN_SELCHANGE) {
                switch (LOWORD (wParam))
index 299ab1b14ca922737278a146b9ecc622ce2dd828..9fc9d6d01f880983ef5d49da7511f2ed603ecf8a 100644 (file)
@@ -1,11 +1,24 @@
 
+Beta 24:
+
+- debugger T command fixed (b15)
+- JIT FPU bug, one addressing mode was wrong (b15)
+- reset clears "native2amiga" command queue (it was possible to have
+  command queued just before reset which would have been executed
+  after reset -> random errors and crashes)
+- do not include mice in parallel port joystick select menus
+- add new empty adf files to disk history list
+- added simple list devices, libraries and resources commands to
+  debugger (Td Tl Tr)
+- log file long datestamps fixed
+
 Beta 23:
 
-- archives (zip etc) didn't unpack
+- archives (zip etc) didn't unpack (b22)
 - directinput keyboard was not always unacquired when focus was lost
 - hq2x/3x/4x crash in specific situations (old random bug)
 - clipboard initialization changed again, now initialized after all
-  residents have been initialized (previously it was after dos)
+  other residents (previously it was after dos)
 
 Beta 22:
 
index 26f03fe515534672604e2ef856e5fe36335c78e1..0c24b9ebe566fee4968f189ff2fba6e85666e474 100644 (file)
@@ -216,7 +216,7 @@ static TCHAR *writets (void)
     _tcsftime (curts, sizeof curts / sizeof (TCHAR), L"%Y-%m-%d %H:%M:%S\n", t);
     p = out;
     *p = 0;
-    if (!_tcsncmp (curts, lastts, _tcslen (curts))) {
+    if (_tcsncmp (curts, lastts, _tcslen (curts) - 3)) { // "xx\n"
        _tcscat (p, curts);
        p += _tcslen (p);
        _tcscpy (lastts, curts);
diff --git a/traps.c b/traps.c
index 7fc2b473c37c34902330a39528dcb952369cb381..13ab9bb97260ba5719fd3f99058126824546f574 100644 (file)
--- a/traps.c
+++ b/traps.c
@@ -109,13 +109,23 @@ unsigned int define_trap (TrapHandler handler_func, int flags, const TCHAR *name
        abort ();
        return -1;
     } else {
-       unsigned int trap_num = trap_count++;
-       struct Trap *trap = &traps[trap_num];
+       int i;
+       unsigned int trap_num;
+       struct Trap *trap;
+       uaecptr addr = here ();
+
+       for (i = 0; i < trap_count; i++) {
+           if (addr == traps[i].addr)
+               return i;
+       }
+
+       trap_num = trap_count++;
+       trap = &traps[trap_num];
 
        trap->handler = handler_func;
        trap->flags   = flags;
        trap->name    = name;
-       trap->addr    = here ();
+       trap->addr    = addr;
 
        return trap_num;
     }
index 5b3efd8c27f8afd2718e63834be8a9f96e79294f..9775d7b6e77ea00698df7d32c93c9f7ca6f24ff7 100644 (file)
--- a/uaeunp.c
+++ b/uaeunp.c
@@ -625,7 +625,7 @@ int wmain (int argc, wchar_t *argv[], wchar_t *envp[])
        ok = 1;
     }
     if (!ok) {
-       _tprintf (L"UAE unpacker uaeunp 0.5b by Toni Wilen (c)2009\n");
+       _tprintf (L"UAE unpacker uaeunp 0.5c by Toni Wilen (c)2009\n");
        _tprintf (L"\n");
        _tprintf (L"List: \"uaeunp (-l) <path>\"\n");
        _tprintf (L"List all recursively: \"uaeunp -l <path> **\"\n");
@@ -660,5 +660,8 @@ int wmain (int argc, wchar_t *argv[], wchar_t *envp[])
     - SFS2 supported
     - block size autodetection implemented (if non-rdb hardfile)
 
+    0.5c:
+
+    - rdb_dump.dat added to rdb hardfiles, can be used to dump/backup rdb blocks
 
 */
\ No newline at end of file
index 7671c5af4db574e9d578ae1f377714cd64ebb66a..ffbae8dfbac25eeaafe4b496fc4eed1515ccf08b 100644 (file)
@@ -1479,9 +1479,12 @@ static TCHAR *tochar (uae_u8 *s, int len)
 struct zvolume *archive_directory_rdb (struct zfile *z)
 {
     uae_u8 buf[512] = { 0 };
-    int partnum;
+    int partnum, bs;
     TCHAR *devname;
     struct zvolume *zv;
+    struct zarchive_info zai;
+    uae_u8 *p;
+    struct znode *zn;
 
     zv = zvolume_alloc (z, ArchiveFormatRDB, NULL, NULL);
 
@@ -1491,12 +1494,9 @@ struct zvolume *archive_directory_rdb (struct zfile *z)
     partnum = 0;
     for (;;) {
        int partblock;
-       struct znode *zn;
-        struct zarchive_info zai;
        TCHAR tmp[MAX_DPATH];
        int surf, spt, spb, lowcyl, highcyl, reserved;
        int size, block, blocksize, rootblock;
-       uae_u8 *p;
        TCHAR comment[81], *dos;
 
        if (partnum == 0)
@@ -1546,6 +1546,16 @@ struct zvolume *archive_directory_rdb (struct zfile *z)
        zn->offset2 = blocksize; // örp?
     }
 
+    zfile_fseek (z, 0, SEEK_SET);
+    p = buf;
+    zfile_fread (buf, 1, 512, z);
+    zai.name = L"rdb_dump.dat";
+    bs = rl (p + 16);
+    zai.size = rl (p + 140) * bs;
+    zai.comment = NULL;
+    zn = zvolume_addfile_abs (zv, &zai);
+    zn->offset = 0;
+
     zv->method = ArchiveFormatRDB;
     return zv;
 }
@@ -1559,20 +1569,29 @@ struct zfile *archive_access_rdb (struct znode *zn)
     int size, block, blocksize;
     uae_u8 *p;
 
-    zfile_fseek (z, zn->offset * 512, SEEK_SET);
-    zfile_fread (buf, 1, 512, z);
-    p = buf + 128 - 16;
-    surf = rl (p + 28);
-    spb = rl (p + 32);
-    spt = rl (p + 36);
-    lowcyl = rl (p + 52);
-    highcyl = rl (p + 56);
-    blocksize = rl (p + 20) * 4;
-    block = lowcyl * surf * spt;
-
-    size = (highcyl - lowcyl + 1) * surf * spt;
-    size *= blocksize;
+    if (zn->offset) {
+       zfile_fseek (z, zn->offset * 512, SEEK_SET);
+       zfile_fread (buf, 1, 512, z);
+     
+       p = buf + 128 - 16;
+       surf = rl (p + 28);
+       spb = rl (p + 32);
+       spt = rl (p + 36);
+       lowcyl = rl (p + 52);
+       highcyl = rl (p + 56);
+       blocksize = rl (p + 20) * 4;
+       block = lowcyl * surf * spt;
+
+       size = (highcyl - lowcyl + 1) * surf * spt;
+       size *= blocksize;
+    } else {
+       zfile_fseek (z, 0, SEEK_SET);
+       zfile_fread (buf, 1, 512, z);
+       p = buf;
+       blocksize = rl (p + 16);
+       block = 0;
+       size = zn->size;
+    }
 
     zf = zfile_fopen_empty (z, zn->fullname, size);
     zfile_fseek (z, block * blocksize, SEEK_SET);