]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
3600b1
authorToni Wilen <twilen@winuae.net>
Sun, 13 Aug 2017 15:52:15 +0000 (18:52 +0300)
committerToni Wilen <twilen@winuae.net>
Sun, 13 Aug 2017 15:52:15 +0000 (18:52 +0300)
35 files changed:
cpummu.cpp
cpummu30.cpp
gencpu.cpp
include/bsdsocket.h
include/options.h
include/picasso96.h
include/savestate.h
include/uae/mman.h
jit/codegen_x86.h
jit/compemu_fpp.cpp
jit/compemu_support.cpp
jit/compemu_support_codegen.cpp
memory.cpp
od-win32/ahidsound_dsonly.cpp
od-win32/ahidsound_unified.cpp
od-win32/blkdev_win32_ioctl.cpp
od-win32/bsdsock.cpp
od-win32/hardfile_win32.cpp
od-win32/mman.cpp
od-win32/prowizard/prowizard.vcxproj
od-win32/resources/resource.h
od-win32/resources/winuae.rc
od-win32/rp.cpp
od-win32/screenshot.cpp
od-win32/unpackers/unpackers.vcxproj
od-win32/win32.cpp
od-win32/win32.h
od-win32/win32gui.cpp
od-win32/winuae_msvc15/winuae_msvc.vcxproj
od-win32/winuae_msvc15/winuae_msvc.vcxproj.filters
od-win32/winuaechangelog.txt
od-win32/wix/Product.wxs
savestate.cpp
scsidev.cpp
serial.cpp

index 2636fc93220420317719399d4229946bc0bc4459..9c81c8f14adb2cf1409cb30c790712f988755e01 100644 (file)
@@ -509,7 +509,7 @@ void mmu_bus_error(uaecptr addr, uae_u32 val, int fc, bool write, int size,uae_u
  * mmu access is a 4 step process:
  * if mmu is not enabled just read physical
  * check transparent region, if transparent, read physical
- * check ATC (address translation cache), read immediatly if HIT
+ * check ATC (address translation cache), read immediately if HIT
  * read from mmu with the long path (and allocate ATC entry if needed)
  */
 
index de4278d10698723ec2fc9132310093abfac33eeb..b6405de17da0d0a4aad0661f76d9a2247a65af03 100644 (file)
@@ -589,7 +589,7 @@ uae_u32 mmu_op30_helper_get_fc(uae_u16 next) {
  *
  */
 
-/* TT comparision results */
+/* TT comparison results */
 #define TT_NO_MATCH    0x1
 #define TT_OK_MATCH    0x2
 #define TT_NO_READ  0x4
@@ -1472,7 +1472,7 @@ uae_u32 mmu030_table_search(uaecptr addr, uae_u32 fc, bool write, int level) {
                     descr[0] |= DESCR_U;
                     descr_modified = true;
                 }
-                /* write modified descriptor if neccessary */
+                /* write modified descriptor if necessary */
                 if (descr_modified) {
                     phys_put_long(descr_addr[descr_num], descr[0]);
                 }
@@ -1538,7 +1538,7 @@ uae_u32 mmu030_table_search(uaecptr addr, uae_u32 fc, bool write, int level) {
     stop_search:
         ; /* Make compiler happy */
     } CATCH(prb) {
-        /* We jump to this place, if a bus error occured during table search.
+        /* We jump to this place, if a bus error occurred during table search.
          * bBusErrorReadWrite is set in m68000.c, M68000_BusError: read = 1 */
         if (bBusErrorReadWrite) {
             descr_num--;
index 20850cef74d7676f0b8b576d82bbbe41c9afaae1..b6cfc07db44fdd82cc6ffb7e5a86767f79e9a101 100644 (file)
@@ -1316,7 +1316,7 @@ static void maybeaddop_ce020 (int flags)
 * the calling routine handles Apdi and Aipi modes.
 * gb-- movem == 2 means the same thing but for a MOVE16 instruction */
 
-/* fixup indicates if we want to fix up adress registers in pre decrement
+/* fixup indicates if we want to fix up address registers in pre decrement
 * or post increment mode now (0) or later (1). A value of 2 will then be
 * used to do the actual fix up. This allows to do all memory readings
 * before any register is modified, and so to rerun operation without
index 2de460ee0cfe63cfe78f0ef7abe6766f861dc5a5..c5c89f82c69da5d41b02d6a76b54593a40935418 100644 (file)
@@ -22,7 +22,7 @@ extern int log_bsd;
 extern int init_socket_layer (void);
 extern void deinit_socket_layer (void);
 
-/* inital size of per-process descriptor table (currently fixed) */
+/* initial size of per-process descriptor table (currently fixed) */
 #define DEFAULT_DTABLE_SIZE 64
 
 #define SCRATCHBUFSIZE 128
index fcfd41495108d0fb53e7e3d3e9cb4a32011da5a7..9efffdaf18cae35c5d99281dd20ca94c0b2c1a67 100644 (file)
@@ -15,8 +15,8 @@
 #include "traps.h"
 
 #define UAEMAJOR 3
-#define UAEMINOR 5
-#define UAESUBREV 1
+#define UAEMINOR 6
+#define UAESUBREV 0
 
 typedef enum { KBD_LANG_US, KBD_LANG_DK, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang;
 
index b573624d6bc6122938e841924daa960134e455d1..9e05cb1c3049a2cb87023b63f45154950a9cf1cb 100644 (file)
@@ -225,7 +225,7 @@ struct BitMap
 
 struct Settings {
     uae_u32                                    BoardType;
-    /* a value discribing assignment to nth board local to boardtype
+    /* a value describing assignment to nth board local to boardtype
      * to be used for reassignment when boards are added or removed.  */
     uae_u16                                    LocalOrdering;
     uae_s16                                    LastSelected;
index af1597cad795c4acdf725e89717699724d2ccc7a..4c713e69569099252b64a90b77201a3ebe5491ac 100644 (file)
@@ -12,7 +12,7 @@
 #include "uae/types.h"
 
 /* functions to save byte,word or long word
- * independent of CPU's endianess */
+ * independent of CPU's endianness */
 
 extern void save_store_pos_func (uae_u8 **);
 extern void save_store_size_func (uae_u8 **);
index 91a2c6e8b2a62b88fc4fa962af181544a66bd931..5d4d55d2917ec56331b02fd3cb460d212e2064eb 100644 (file)
@@ -21,7 +21,7 @@ struct uae_shmid_ds {
        int maprom;
 };
 
-void *uae_shmat(addrbank *ab, int shmid, void *shmaddr, int shmflg);
+void *uae_shmat(addrbank *ab, int shmid, void *shmaddr, int shmflg, struct uae_mman_data *md);
 int uae_shmdt(const void *shmaddr);
 int uae_shmget(uae_key_t key, addrbank *ab, int shmflg);
 int uae_shmctl(int shmid, int cmd, struct uae_shmid_ds *buf);
index 6743392d424e023beac2dac004cb76a483a5cbba..b37b48f8781274c5b365acbea2a6bc1f721b565b 100644 (file)
@@ -1251,14 +1251,14 @@ enum {
 
 /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
 
-// FIXME: no prefix is availble to encode a 32-bit operand size in 64-bit mode
+// FIXME: no prefix is available to encode a 32-bit operand size in 64-bit mode
 #define CALLm(M)                                                       _O_D32          (0xe8                                   ,(int)(M)               )
 #define _CALLLsr(R)                    (_REXLrr(0, R),                 _O_Mrm          (0xff           ,_b11,_b010,_r4(R)                              ))
 #define _CALLQsr(R)                    (_REXQrr(0, R),                 _O_Mrm          (0xff           ,_b11,_b010,_r8(R)                              ))
 #define CALLsr(R)                      ( X86_TARGET_64BIT ? _CALLQsr(R) : _CALLLsr(R))
 #define CALLsm(D,B,I,S)                        (_REXLrm(0, B, I),              _O_r_X          (0xff                ,_b010             ,(int)(D),B,I,S         ))
 
-// FIXME: no prefix is availble to encode a 32-bit operand size in 64-bit mode
+// FIXME: no prefix is available to encode a 32-bit operand size in 64-bit mode
 #define JMPSm(M)                                                       _O_D8           (0xeb                                   ,(int)(M)               )
 #define JMPm(M)                                                                _O_D32          (0xe9                                   ,(int)(M)               )
 #define _JMPLsr(R)                     (_REXLrr(0, R),                 _O_Mrm          (0xff           ,_b11,_b100,_r4(R)                              ))
index a76ac9299e182ffd3e28d1f7335acbb58f38cf10..4b0afdfe04091c4ef16d534f2b50ef3ea9fa0a4b 100644 (file)
@@ -619,7 +619,7 @@ void comp_fbcc_opp (uae_u32 opcode)
 }
 
 /* Floating point conditions
-   The "NotANumber" part could be problematic; Howver, when NaN is
+   The "NotANumber" part could be problematic; However, when NaN is
    encountered, the ftst instruction sets bot N and Z to 1 on the x87,
    so quite often things just fall into place. This is probably not
    accurate wrt the 68k FPU, but it is *as* accurate as this was before.
index 9fa7c339cfd7124135bd1dfae86e97d026a25e08..eaac9c286ccadc88ab8b4952fbce239956b8024b 100644 (file)
@@ -699,7 +699,7 @@ static inline blockinfo* get_blockinfo_addr_new(void* addr, int /* setstate */)
 
 static void prepare_block(blockinfo* bi);
 
-/* Managment of blockinfos.
+/* Management of blockinfos.
 
    A blockinfo struct is allocated whenever a new block has to be
    compiled. If the list of free blockinfos is empty, we allocate a new
@@ -3246,7 +3246,7 @@ void get_n_addr(int address, int dest, int tmp)
 #if FIXED_ADDRESSING
                lea_l_brr(dest,address,MEMBaseDiff);
 #else
-# error "Only fixed adressing mode supported"
+# error "Only fixed addressing mode supported"
 #endif
                forget_about(tmp);
                (void) f;
index 56cbafff42597dbf52c4863a84a8f50f8b4e2d8c..86b4086ad8f0c6509018fba7631ed0414f6ef0ba 100644 (file)
@@ -579,7 +579,7 @@ static __inline__ blockinfo* get_blockinfo_addr_new(void* addr, int setstate)
 
 static void prepare_block(blockinfo* bi);
 
-/* Managment of blockinfos.
+/* Management of blockinfos.
 
    A blockinfo struct is allocated whenever a new block has to be
    compiled. If the list of free blockinfos is empty, we allocate a new
index f750ee796a94b432949426343b5080c8686e9ff5..b330e2bcc1d63e8d982874833d3c062cf4b61278 100644 (file)
@@ -1465,7 +1465,7 @@ static int patch_shapeshifter (uae_u8 *kickmemory)
 {
        /* Patch Kickstart ROM for ShapeShifter - from Christian Bauer.
        * Changes 'lea $400,a0' and 'lea $1000,a0' to 'lea $3000,a0' for
-       * ShapeShifter compatability.
+       * ShapeShifter compatibility.
        */
        int i, patched = 0;
        uae_u8 kickshift1[] = { 0x41, 0xf8, 0x04, 0x00 };
index c2daa6699c130b084b31a88534643c1e3a03a1a2..3cd28a878efdd034fc5697364c024cf98d967d92 100644 (file)
@@ -74,7 +74,7 @@ static LPDIRECTSOUNDCAPTUREBUFFER lpDSB2r = NULL;
 struct winuae  //this struct is put in a6 if you call
        //execute native function
 {
-       HWND amigawnd;    //adress of amiga Window Windows Handle
+       HWND amigawnd;    //address of amiga Window Windows Handle
        unsigned int changenum;   //number to detect screen close/open
        unsigned int z3offset;    //the offset to add to acsess Z3 mem from Dll side
 };
index cf448af59511be59ab31ce35fd271930a7e31080..1cadd4052f1422921d68992cc5579a8400281a5f 100644 (file)
@@ -76,7 +76,7 @@ static LPDIRECTSOUNDCAPTUREBUFFER lpDSB2r = NULL;
 struct winuae  //this struct is put in a6 if you call
                //execute native function
 {
-    HWND amigawnd;    //adress of amiga Window Windows Handle
+    HWND amigawnd;    //address of amiga Window Windows Handle
     unsigned int changenum;   //number to detect screen close/open
     unsigned int z3offset;    //the offset to add to acsess Z3 mem from Dll side
 };
index 8abfab5de3bfd8684fa72030f2a36396332dfaea..df5473d2519eb8d91d794331e4a0f920f89505cc 100644 (file)
@@ -1416,7 +1416,7 @@ static int sys_cddev_open (struct dev_info_ioctl *ciw, int unitnum)
                }
        }
 
-       write_log (_T("IOCTL: device '%s' (%s/%s/%s) opened succesfully (unit=%d,media=%d)\n"),
+       write_log (_T("IOCTL: device '%s' (%s/%s/%s) opened successfully (unit=%d,media=%d)\n"),
                ciw->devname, ciw->di.vendorid, ciw->di.productid, ciw->di.revision,
                unitnum, ciw->di.media_inserted);
        if (!_tcsicmp (ciw->di.vendorid, _T("iomega")) && !_tcsicmp (ciw->di.productid, _T("rrd"))) {
index 388d7a6c6b2ec6f5f5fbc884e7ba828f41746740..b3bef4ba7bf32f18b910dd474304520c8e3f2f1b 100644 (file)
@@ -2257,7 +2257,7 @@ static unsigned int thread_get2 (void *indexp)
                                        if (bsd->threadGetargs_inuse[index] != GET_STATE_CANCEL) {
                                                // No CTRL-C Signal
                                                if (host == 0) {
-                                                       // Error occured
+                                                       // Error occurred
                                                        SETERRNO;
                                                        BSDTRACE((_T("tg2_0 failed %d:%d -> "), sb->sb_errno,wscnt));
                                                } else {
@@ -2280,7 +2280,7 @@ static unsigned int thread_get2 (void *indexp)
                                proto = getprotobyname (name_rp);
                                if (bsd->threadGetargs_inuse[index] != GET_STATE_CANCEL) { // No CTRL-C Signal
                                        if (proto == 0) {
-                                               // Error occured
+                                               // Error occurred
                                                SETERRNO;
                                                BSDTRACE((_T("tg2_1 failed %d:%d -> "), sb->sb_errno, wscnt));
                                        } else {
@@ -2317,7 +2317,7 @@ static unsigned int thread_get2 (void *indexp)
                                if (bsd->threadGetargs_inuse[index] != GET_STATE_CANCEL) {
                                        // No CTRL-C Signal
                                        if (serv == 0) {
-                                               // Error occured
+                                               // Error occurred
                                                SETERRNO;
                                                BSDTRACE((_T("tg2_2 failed %d:%d -> "), sb->sb_errno, wscnt));
                                        } else {
index 4011838b2139640f31c3719a6462ed8feed7a893..51c1fe7c0387c6a8ef142959fd9aa43eedaf51a3 100644 (file)
@@ -1664,15 +1664,17 @@ static int hdf_seek (struct hardfiledata *hfd, uae_u64 offset)
                gui_message (_T("hd: hdf handle is not valid. bug."));
                abort();
        }
-       if (offset >= hfd->physsize - hfd->virtual_size) {
-               gui_message (_T("hd: tried to seek out of bounds! (%I64X >= %I64X - %I64X)\n"), offset, hfd->physsize, hfd->virtual_size);
-               abort ();
-       }
-       offset += hfd->offset;
-       if (offset & (hfd->ci.blocksize - 1)) {
-               gui_message (_T("hd: poscheck failed, offset=%I64X not aligned to blocksize=%d! (%I64X & %04X = %04X)\n"),
-                       offset, hfd->ci.blocksize, offset, hfd->ci.blocksize, offset & (hfd->ci.blocksize - 1));
-               abort ();
+       if (hfd->physsize) {
+               if (offset >= hfd->physsize - hfd->virtual_size) {
+                       gui_message (_T("hd: tried to seek out of bounds! (%I64X >= %I64X - %I64X)\n"), offset, hfd->physsize, hfd->virtual_size);
+                       abort ();
+               }
+               offset += hfd->offset;
+               if (offset & (hfd->ci.blocksize - 1)) {
+                       gui_message (_T("hd: poscheck failed, offset=%I64X not aligned to blocksize=%d! (%I64X & %04X = %04X)\n"),
+                               offset, hfd->ci.blocksize, offset, hfd->ci.blocksize, offset & (hfd->ci.blocksize - 1));
+                       abort ();
+               }
        }
        if (hfd->handle_valid == HDF_HANDLE_WIN32) {
                LARGE_INTEGER fppos;
@@ -1895,7 +1897,8 @@ int hdf_read_target (struct hardfiledata *hfd, void *buffer, uae_u64 offset, int
                if (hfd->physsize < CACHE_SIZE) {
                        hfd->cache_valid = 0;
                        hdf_seek (hfd, offset);
-                       poscheck (hfd, len);
+                       if (hfd->physsize)
+                               poscheck (hfd, len);
                        if (hfd->handle_valid == HDF_HANDLE_WIN32) {
                                ReadFile (hfd->handle->h, hfd->cache, len, &ret, NULL);
                                memcpy (buffer, hfd->cache, ret);
@@ -1967,7 +1970,7 @@ int hdf_write_target (struct hardfiledata *hfd, void *buffer, uae_u64 offset, in
        int got = 0;
        uae_u8 *p = (uae_u8*)buffer;
 
-       if (hfd->drive_empty)
+       if (hfd->drive_empty || hfd->physsize == 0)
                return 0;
        if (offset < hfd->virtual_size)
                return len;
@@ -2281,6 +2284,7 @@ static BOOL GetDevicePropertyFromName(const TCHAR *DevicePath, DWORD Index, DWOR
        }
 
        udi->offset = 0;
+       udi->size = 0;
        if (geom_ok) {
                udi->bytespersector = dg.BytesPerSector;
                if (dg.BytesPerSector < 512) {
@@ -2303,11 +2307,6 @@ static BOOL GetDevicePropertyFromName(const TCHAR *DevicePath, DWORD Index, DWOR
        }
        if (gli_ok && gli.Length.QuadPart)
                udi->size = gli.Length.QuadPart;
-       if (udi->size == 0) {
-               write_log (_T("device size is zero!\n"));
-               ret = 1;
-               goto end;
-       }
        write_log (_T("device size %I64d (0x%I64x) bytes\n"), udi->size, udi->size);
        trim (orgname);
 
@@ -2317,59 +2316,55 @@ static BOOL GetDevicePropertyFromName(const TCHAR *DevicePath, DWORD Index, DWOR
        if (!status) {
                DWORD err = GetLastError();
                write_log (_T("IOCTL_DISK_GET_DRIVE_LAYOUT failed with error code %d.\n"), err);
-               if (err != ERROR_INVALID_FUNCTION) {
-                       ret = 1;
-                       goto end;
-               }
-               goto amipartfound;
-       }
-       dli = (DRIVE_LAYOUT_INFORMATION*)outBuf;
-       if (dli->PartitionCount) {
-               int nonzeropart = 0;
-               int gotpart = 0;
-               int safepart = 0;
-               write_log (_T("%d MBR partitions found\n"), dli->PartitionCount);
-               for (i = 0; i < dli->PartitionCount && (*index2) < MAX_FILESYSTEM_UNITS; i++) {
-                       PARTITION_INFORMATION *pi = &dli->PartitionEntry[i];
-                       if (pi->PartitionType == PARTITION_ENTRY_UNUSED)
-                               continue;
-                       write_log (_T("%d: num: %d type: %02X offset: %I64d size: %I64d, "), i,
-                               pi->PartitionNumber, pi->PartitionType, pi->StartingOffset.QuadPart, pi->PartitionLength.QuadPart);
-                       if (pi->RecognizedPartition == 0) {
-                               write_log (_T("unrecognized\n"));
-                               continue;
+       } else {
+               dli = (DRIVE_LAYOUT_INFORMATION*)outBuf;
+               if (dli->PartitionCount) {
+                       int nonzeropart = 0;
+                       int gotpart = 0;
+                       int safepart = 0;
+                       write_log (_T("%d MBR partitions found\n"), dli->PartitionCount);
+                       for (i = 0; i < dli->PartitionCount && (*index2) < MAX_FILESYSTEM_UNITS; i++) {
+                               PARTITION_INFORMATION *pi = &dli->PartitionEntry[i];
+                               if (pi->PartitionType == PARTITION_ENTRY_UNUSED)
+                                       continue;
+                               write_log (_T("%d: num: %d type: %02X offset: %I64d size: %I64d, "), i,
+                                       pi->PartitionNumber, pi->PartitionType, pi->StartingOffset.QuadPart, pi->PartitionLength.QuadPart);
+                               if (pi->RecognizedPartition == 0) {
+                                       write_log (_T("unrecognized\n"));
+                                       continue;
+                               }
+                               nonzeropart++;
+                               if (pi->PartitionType != 0x76 && pi->PartitionType != 0x30) {
+                                       write_log (_T("type not 0x76 or 0x30\n"));
+                                       continue;
+                               }
+                               udi++;
+                               (*index2)++;
+                               memmove (udi, udi2, sizeof (*udi));
+                               udi->device_name[0] = 0;
+                               udi->offset = pi->StartingOffset.QuadPart;
+                               udi->size = pi->PartitionLength.QuadPart;
+                               write_log (_T("used\n"));
+                               _stprintf (udi->device_name, _T(":P#%d_%s"), pi->PartitionNumber, orgname);
+                               _stprintf(udi->device_full_path, _T("%s:%s"), udi->device_name, udi->device_path);
+                               checkhdname(udi);
+                               udi->dangerous = -5;
+                               udi->partitiondrive = true;
+                               safepart = 1;
+                               gotpart = 1;
                        }
-                       nonzeropart++;
-                       if (pi->PartitionType != 0x76 && pi->PartitionType != 0x30) {
-                               write_log (_T("type not 0x76 or 0x30\n"));
-                               continue;
+                       if (!nonzeropart) {
+                               write_log (_T("empty MBR partition table detected, checking for RDB\n"));
+                       } else if (!gotpart) {
+                               write_log (_T("non-empty MBR partition table detected, doing RDB check anyway\n"));
+                       } else if (safepart) {
+                               goto amipartfound; /* ugly but bleh.. */
                        }
-                       udi++;
-                       (*index2)++;
-                       memmove (udi, udi2, sizeof (*udi));
-                       udi->device_name[0] = 0;
-                       udi->offset = pi->StartingOffset.QuadPart;
-                       udi->size = pi->PartitionLength.QuadPart;
-                       write_log (_T("used\n"));
-                       _stprintf (udi->device_name, _T(":P#%d_%s"), pi->PartitionNumber, orgname);
-                       _stprintf(udi->device_full_path, _T("%s:%s"), udi->device_name, udi->device_path);
-                       checkhdname(udi);
-                       udi->dangerous = -5;
-                       udi->partitiondrive = true;
-                       safepart = 1;
-                       gotpart = 1;
-               }
-               if (!nonzeropart) {
-                       write_log (_T("empty MBR partition table detected, checking for RDB\n"));
-               } else if (!gotpart) {
-                       write_log (_T("non-empty MBR partition table detected, doing RDB check anyway\n"));
-               } else if (safepart) {
-                       goto amipartfound; /* ugly but bleh.. */
+               } else {
+                       write_log (_T("no MBR partition table detected, checking for RDB\n"));
                }
-       } else {
-               write_log (_T("no MBR partition table detected, checking for RDB\n"));
        }
-       if (udi->offset == 0) {
+       if (udi->offset == 0 && udi->size) {
                udi->dangerous = safetycheck (hDevice, udi->device_path, 0, buffer, dg.BytesPerSector);
                if (udi->dangerous > 0)
                        goto end;
index 2dc73237b98d8a487465d43cb9c1e4f2d8b9dcec..d935d5f0b1a407032ff7e577c9014b260625233f 100644 (file)
@@ -888,13 +888,15 @@ bool uae_mman_info(addrbank *ab, struct uae_mman_data *md)
        return got;
 }
 
-void *uae_shmat (addrbank *ab, int shmid, void *shmaddr, int shmflg)
+void *uae_shmat (addrbank *ab, int shmid, void *shmaddr, int shmflg, struct uae_mman_data *md)
 {
        void *result = (void *)-1;
        bool got = false, readonly = false, maprom = false;
        int p96special = FALSE;
+       struct uae_mman_data md2;
 
 #ifdef NATMEM_OFFSET
+
        unsigned int size = shmids[shmid].size;
        unsigned int readonlysize = size;
 
@@ -908,26 +910,33 @@ void *uae_shmat (addrbank *ab, int shmid, void *shmaddr, int shmflg)
        }
 
        if ((uae_u8*)shmaddr < natmem_offset) {
-               struct uae_mman_data md;
-               if (uae_mman_info(ab, &md)) {
-                       shmaddr = natmem_offset + md.start;
-                       size = md.size;
-                       readonlysize = md.readonlysize;
-                       readonly = md.readonly;
-                       maprom = md.maprom;
+               if (!md) {
+                       if (!uae_mman_info(ab, &md2))
+                               return NULL;
+                       md = &md2;
+               }
+               if (!shmaddr) {
+                       shmaddr = natmem_offset + md->start;
+                       size = md->size;
+                       readonlysize = md->readonlysize;
+                       readonly = md->readonly;
+                       maprom = md->maprom;
                        got = true;
                }
        }
-#endif
 
        uintptr_t natmem_end = (uintptr_t) natmem_reserved + natmem_reserved_size;
-       if ((uintptr_t) shmaddr + size > natmem_end && (uintptr_t)shmaddr <= natmem_end) {
+       if (md && md->hasbarrier && (uintptr_t) shmaddr + size > natmem_end && (uintptr_t)shmaddr <= natmem_end) {
                /* We cannot add a barrier beyond the end of the reserved memory. */
                //assert((uintptr_t) shmaddr + size - natmem_end == BARRIER);
                write_log(_T("NATMEM: Removing barrier (%d bytes) beyond reserved memory\n"), BARRIER);
                size -= BARRIER;
+               md->size -= BARRIER;
+               md->hasbarrier = false;
        }
 
+#endif
+
        if (shmids[shmid].key == shmid && shmids[shmid].size) {
                DWORD protect = readonly ? PAGE_READONLY : PAGE_READWRITE;
                shmids[shmid].mode = protect;
index 8de1776049b879a39f72ba8f75ae3d4753da2928..f55a8ff730d6c5d1e53eb821aef0ac8dbba921bd 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Test|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index 93b7d521ec03cffbe44b3cfbc4a6c0d9fe2cd657..c18b4725c0cbfe8444f2816acdb531647fc84608 100644 (file)
 #define IDC_22KHZ                       1233
 #define IDC_SPEED_x86                   1233
 #define IDC_44KHZ                       1234
+#define IDC_CPUDATACACHE                1234
 #define IDC_48KHZ                       1235
 #define IDC_FPU4                        1235
 #define IDC_SOUNDSIZE                   1236
index 0c6e998306c47f718421678d122ef1f912afb606..4d8b2c2b5024cf8463602d51891c522d44f44485 100644 (file)
@@ -252,25 +252,25 @@ IDD_CPU DIALOGEX 0, 0, 396, 317
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    GROUPBOX        "CPU",IDC_STATIC,1,1,129,152,BS_LEFT
+    GROUPBOX        "CPU",IDC_STATIC,1,1,129,163,BS_LEFT
     CONTROL         "68000",IDC_CPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,19,63,10
     CONTROL         "68010",IDC_CPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,32,63,10
     CONTROL         "68020",IDC_CPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,45,63,10
     CONTROL         "68030",IDC_CPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,58,63,10
     CONTROL         "68040",IDC_CPU4,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,71,63,10
     CONTROL         "68060",IDC_CPU5,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,84,63,10
-    CONTROL         "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,99,119,12
-    CONTROL         "More compatible [] 68000: emulate prefetch. 68020+: emulate prefetch partially. More compatible but slower.",IDC_COMPATIBLE,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,112,118,11
+    CONTROL         "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,98,119,12
+    CONTROL         "More compatible [] 68000: emulate prefetch. 68020+: emulate prefetch and instruction cache. More compatible but slower.",IDC_COMPATIBLE,
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,111,118,12
     CONTROL         "JIT [] Enable just-in-time CPU emulator. Significantly increases the speed of the CPU emulation. Requires 68020 or higher CPU.",IDC_JITENABLE,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,124,120,11
-    CONTROL         "None",IDC_MMUENABLEOFF,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,166,87,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,136,120,12
+    CONTROL         "None",IDC_MMUENABLEOFF,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,181,87,10
     CONTROL         "EC [] 68EC030, 68EC040 and 68EC060 Transparent Translation Register emulation. Not compatible with JIT.",IDC_MMUENABLEEC,
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,179,120,11
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,73,195,48,10
     CONTROL         "MMU [] 68030, 68040 and 68060 MMU emulation. Not compatible with JIT.",IDC_MMUENABLE,
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,193,120,11
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,195,49,10
     CONTROL         "Unimplemented CPU emu [] Emulate 68060 unimplemented integer instructions",IDC_CPU_UNIMPLEMENTED,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,136,118,10
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,149,118,12
     GROUPBOX        "FPU",IDC_STATIC,1,212,129,103,BS_LEFT
     CONTROL         "None",IDC_FPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,223,87,10
     CONTROL         "68881",IDC_FPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,236,87,10
@@ -313,7 +313,9 @@ BEGIN
     CONTROL         "Indirect",IDC_TRUST1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,221,299,72,10
     CONTROL         "No flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,299,299,68,11
     CONTROL         "Softfloat FPU emulation",IDC_FPU_SOFTFLOAT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,302,115,10
-    GROUPBOX        "MMU",IDC_STATIC,2,154,129,56,BS_LEFT
+    GROUPBOX        "MMU",IDC_STATIC,2,168,129,42,BS_LEFT
+    CONTROL         "Data cache emulation [] 68030, 040 and 060 optional data cache emulation. Requires More compatible option.",IDC_CPUDATACACHE,
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,123,119,12
 END
 
 IDD_FLOPPY DIALOGEX 0, 0, 396, 261
@@ -1340,8 +1342,8 @@ END
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,5,1,0
- PRODUCTVERSION 3,5,1,0
+ FILEVERSION 3,6,0,0
+ PRODUCTVERSION 3,6,0,0
  FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -1357,12 +1359,12 @@ BEGIN
         BLOCK "040904b0"
         BEGIN
             VALUE "FileDescription", "WinUAE"
-            VALUE "FileVersion", "3.5.1.0"
+            VALUE "FileVersion", "3.6.0.0"
             VALUE "InternalName", "WinUAE"
             VALUE "LegalCopyright", "© 1996-2017 under the GNU Public License (GPL)"
             VALUE "OriginalFilename", "WinUAE.exe"
             VALUE "ProductName", "WinUAE"
-            VALUE "ProductVersion", "3.5.1.0"
+            VALUE "ProductVersion", "3.6.0.0"
         END
     END
     BLOCK "VarFileInfo"
@@ -1980,7 +1982,7 @@ BEGIN
     IDS_NUMSG_KICKREP       "You need to have a floppy disk (image file) in DF0: to use the system ROM replacement."
     IDS_NUMSG_KICKREPNO     "The floppy disk (image file) in DF0: is not compatible with the system ROM replacement functionality."
     IDS_NUMSG_NOROM         "Could not load system ROM, trying system ROM replacement."
-    IDS_HDCLONE_OK          "Hard drive image file created succesfully."
+    IDS_HDCLONE_OK          "Hard drive image file created successfully."
     IDS_HDCLONE_FAIL        "Hard drive image file creation failed.\nError %d:%d (%s)."
     IDS_NUMSG_KS68030       "The selected system ROM requires a 68030 CPU."
     IDS_NUMSG_EXPROMNEED    "One of the following expansion boot ROMs is required:\n\n%s\n\nCheck the System ROM path in the Paths panel and click Rescan ROMs."
index dfa74872b6025569c28baee432ba57b0171f67b2..4d6268abce4c0864eebdb013f439e102aa6d7088 100644 (file)
@@ -1371,7 +1371,7 @@ static LRESULT CALLBACK RPHostMsgFunction2 (UINT uMessage, WPARAM wParam, LPARAM
                        return MAKELONG(7, 1);
                }
        case RP_IPC_TO_GUEST_SHOWOPTIONS:
-               inputdevice_add_inputcode (AKS_ENTERGUI, 1);
+               inputdevice_add_inputcode (AKS_ENTERGUI, 1, NULL);
                return 1;
        case RP_IPC_TO_GUEST_DEVICEACTIVITY:
                return deviceactivity(wParam, lParam);
@@ -1551,7 +1551,7 @@ static void sendfeatures (void)
        RPSendMessagex (RP_IPC_TO_HOST_FEATURES, feat, 0, NULL, 0, &guestinfo, NULL);
 }
 
-static int gethdnum (int n)
+static bool ishd(int n)
 {
        struct uaedev_config_data *uci = &currprefs.mountconfig[n];
        int num = -1;
@@ -1562,7 +1562,7 @@ static int gethdnum (int n)
        } else if (uci->ci.controller_type >= HD_CONTROLLER_TYPE_SCSI_FIRST && uci->ci.controller_type <= HD_CONTROLLER_TYPE_SCSI_LAST) {
                num = uci->ci.controller_unit;
        }
-       return num;
+       return num >= 0;
 }
 
 void rp_fixup_options (struct uae_prefs *p)
@@ -1632,17 +1632,15 @@ void rp_fixup_options (struct uae_prefs *p)
        hd_mask = 0;
        cd_mask = 0;
        for (i = 0; i < currprefs.mountitems; i++) {
-               int num = gethdnum (i);
-               if (num >= 0)
-                       hd_mask |= 1 << num;
+               if (ishd(i))
+                       hd_mask |= 1 << i;
        }
        RPSendMessagex (RP_IPC_TO_HOST_DEVICES, RP_DEVICECATEGORY_HD, hd_mask, NULL, 0, &guestinfo, NULL);
        if (hd_mask) {
                for (i = 0; i < currprefs.mountitems; i++) {
                        struct uaedev_config_data *uci = &currprefs.mountconfig[i];
-                       int num = gethdnum (i);
-                       if (num >= 0 && ((1 << num) & hd_mask))
-                               rp_harddrive_image_change (num, uci->ci.readonly, uci->ci.rootdir);
+                       if (ishd(i) && ((1 << i) & hd_mask))
+                               rp_harddrive_image_change (i, uci->ci.readonly, uci->ci.rootdir);
                }
        }
 
index 1f8acf2e1283b472a51d8e24e994787970c90ea3..a4220819d4d8dd0c6890fd30b15ad7a03971a60a 100644 (file)
@@ -632,7 +632,7 @@ static int savebmp (FILE *fp, bool alpha)
        if (fwrite (&bfh, 1, sizeof (BITMAPFILEHEADER), fp) < sizeof (BITMAPFILEHEADER))
                return 1; // failed to write bitmap file header
        if (fwrite (bi, 1, sizeof (BITMAPINFOHEADER), fp) < sizeof (BITMAPINFOHEADER))
-               return 2; // failed to write bitmap infomation header
+               return 2; // failed to write bitmap information header
        if (bi->bmiHeader.biClrUsed) {
                if (fwrite (bi->bmiColors, 1, bi->bmiHeader.biClrUsed * sizeof(RGBQUAD), fp) < bi->bmiHeader.biClrUsed * sizeof(RGBQUAD))
                        return 3; // failed to write bitmap file header
index 6be88f8a02e1405718a985f1d5efd2f866d5e1ca..9e403810759490523e5d43f66d7b486e6b0fc010 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Test|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index 34d44beaf7c57c9ff2a40709d12d4955cbe14099..352881525cfb54aa5bd91db544f5c396be6a939d 100644 (file)
@@ -7056,7 +7056,7 @@ void fpux_restore (int *v)
 struct winuae  //this struct is put in a6 if you call
        //execute native function
 {
-       HWND amigawnd;    //adress of amiga Window Windows Handle
+       HWND amigawnd;    //address of amiga Window Windows Handle
        unsigned int changenum;   //number to detect screen close/open
        unsigned int z3offset;    //the offset to add to acsess Z3 mem from Dll side
 };
index 147e2acd8decca8247c396dc4c9b5d40757f4847..551951e215aebd4aeb1c870f7bb0c83f9080d125 100644 (file)
 #define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100)
 #define GETBDD(x) ((x) % 100)
 
-#define WINUAEPUBLICBETA 0
+#define WINUAEPUBLICBETA 1
 #define LANG_DLL 1
 #define LANG_DLL_FULL_VERSION_MATCH 1
 
 #if WINUAEPUBLICBETA
-#define WINUAEBETA _T("14")
+#define WINUAEBETA _T("1")
 #else
 #define WINUAEBETA _T("")
 #endif
 
-#define WINUAEDATE MAKEBD(2017, 6, 15)
+#define WINUAEDATE MAKEBD(2017, 8, 13)
 
 //#define WINUAEEXTRA _T("AmiKit Preview")
 //#define WINUAEEXTRA _T("Amiga Forever Edition")
index 8c80493b1e3a86186240cb9e612f6cfcd2183abd..fa45d966f4105fa3133c28ef10f080498347cb38 100644 (file)
@@ -6791,19 +6791,12 @@ static void enable_for_chipsetdlg (HWND hDlg)
        ew (hDlg, IDC_CYCLEEXACT, FALSE);
 #else
        ew (hDlg, IDC_CYCLEEXACTMEMORY, workprefs.cpu_model >= 68020);
-#endif
-#if 0
-       ew (hDlg, IDC_BLITIMM, enable);
-       if (enable == FALSE) {
-               workprefs.immediate_blits = 0;
-               CheckDlgButton (hDlg, IDC_BLITIMM, FALSE);
-       }
 #endif
        if (workprefs.immediate_blits && workprefs.waiting_blits) {
                workprefs.waiting_blits = 0;
                CheckDlgButton (hDlg, IDC_BLITWAIT, FALSE);
        }
-       ew(hDlg, IDC_BLITWAIT, workprefs.immediate_blits ? FALSE : TRUE);
+       ew(hDlg, IDC_BLITIMM, !workprefs.cpu_cycle_exact);
 
        ew(hDlg, IDC_GENLOCKMODE, workprefs.genlock ? TRUE : FALSE);
        ew(hDlg, IDC_GENLOCKMIX, workprefs.genlock ? TRUE : FALSE);
@@ -7858,11 +7851,15 @@ static void values_from_chipsetdlg (HWND hDlg, UINT msg, WPARAM wParam, LPARAM l
                                workprefs.cpu_compatible = 1;
                        if (workprefs.cpu_model <= 68030)
                                workprefs.m68k_speed = 0;
-                       workprefs.immediate_blits = 0;
+                       if (workprefs.immediate_blits) {
+                               workprefs.immediate_blits = false;
+                               CheckDlgButton (hDlg, IDC_BLITIMM, FALSE);
+                       }
                        workprefs.gfx_framerate = 1;
                        workprefs.cachesize = 0;
                }
        }
+
        workprefs.collision_level = ischecked (hDlg, IDC_COLLISION0) ? 0
                : ischecked (hDlg, IDC_COLLISION1) ? 1
                : ischecked (hDlg, IDC_COLLISION2) ? 2 : 3;
@@ -8015,6 +8012,18 @@ static INT_PTR CALLBACK ChipsetDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPAR
                                DiskSelection(hDlg, IDC_GENLOCKFILESELECT, workprefs.genlock_image == 3 ? 20 : 21, &workprefs, NULL, path);
                                break;
                        }
+                       case IDC_BLITWAIT:
+                       if (workprefs.immediate_blits) {
+                               workprefs.immediate_blits = false;
+                               CheckDlgButton (hDlg, IDC_BLITIMM, FALSE);
+                       }
+                       break;
+                       case IDC_BLITIMM:
+                       if (workprefs.waiting_blits) {
+                               workprefs.waiting_blits = false;
+                               CheckDlgButton (hDlg, IDC_BLITWAIT, FALSE);
+                       }
+                       break;
                }
                values_from_chipsetdlg(hDlg, msg, wParam, lParam);
                enable_for_chipsetdlg(hDlg);
@@ -11446,6 +11455,7 @@ static void enable_for_cpudlg (HWND hDlg)
        ew (hDlg, IDC_FPU3, workprefs.cpu_model >= 68040);
        ew (hDlg, IDC_MMUENABLEEC, workprefs.cpu_model >= 68030 && workprefs.cachesize == 0);
        ew (hDlg, IDC_MMUENABLE, workprefs.cpu_model >= 68030 && workprefs.cachesize == 0);
+       ew (hDlg, IDC_CPUDATACACHE, workprefs.cpu_model >= 68030 && workprefs.cachesize == 0 && workprefs.cpu_compatible);
        ew (hDlg, IDC_CPU_PPC, workprefs.cpu_model >= 68040 && (workprefs.ppc_mode == 1 || (workprefs.ppc_mode == 0 && !is_ppc_cpu(&workprefs))));
 
        SendDlgItemMessage(hDlg, IDC_SPEED, TBM_SETRANGE, TRUE, workprefs.m68k_speed < 0 ? MAKELONG(-9, 0) : MAKELONG(-9, 50));
@@ -11479,6 +11489,7 @@ static void values_to_cpudlg (HWND hDlg)
        SetDlgItemText (hDlg, IDC_CPUTEXT, buffer);
        CheckDlgButton (hDlg, IDC_COMPATIBLE, workprefs.cpu_compatible);
        CheckDlgButton (hDlg, IDC_COMPATIBLE24, workprefs.address_space_24);
+       CheckDlgButton (hDlg, IDC_CPUDATACACHE, workprefs.cpu_data_cache);
        CheckDlgButton (hDlg, IDC_COMPATIBLE_FPU, workprefs.fpu_strict);
        CheckDlgButton (hDlg, IDC_FPU_UNIMPLEMENTED, !workprefs.fpu_no_unimplemented || workprefs.cachesize);
        CheckDlgButton (hDlg, IDC_FPU_SOFTFLOAT, workprefs.fpu_softfloat);
@@ -11568,6 +11579,7 @@ static void values_from_cpudlg (HWND hDlg)
        workprefs.cpu_model = newcpu;
        workprefs.mmu_model = 0;
        workprefs.mmu_ec = false;
+       workprefs.cpu_data_cache = false;
        switch(newcpu)
        {
        case 68000:
@@ -11587,6 +11599,8 @@ static void values_from_cpudlg (HWND hDlg)
                workprefs.fpu_model = newfpu == 0 ? 0 : (newfpu == 2 ? 68882 : 68881);
                workprefs.mmu_ec = ischecked(hDlg, IDC_MMUENABLEEC);
                workprefs.mmu_model = workprefs.mmu_ec || ischecked (hDlg, IDC_MMUENABLE) ? 68030 : 0;
+               if (workprefs.cpu_compatible)
+                       workprefs.cpu_data_cache = ischecked (hDlg, IDC_CPUDATACACHE);
                break;
        case 68040:
                workprefs.fpu_model = newfpu ? 68040 : 0;
@@ -11595,12 +11609,16 @@ static void values_from_cpudlg (HWND hDlg)
                        workprefs.fpu_model = 68040;
                workprefs.mmu_ec = ischecked(hDlg, IDC_MMUENABLEEC);
                workprefs.mmu_model = workprefs.mmu_ec || ischecked (hDlg, IDC_MMUENABLE) ? 68040 : 0;
+               if (workprefs.cpu_compatible)
+                       workprefs.cpu_data_cache = ischecked (hDlg, IDC_CPUDATACACHE);
                break;
        case 68060:
                workprefs.fpu_model = newfpu ? 68060 : 0;
                workprefs.address_space_24 = 0;
                workprefs.mmu_ec = ischecked(hDlg, IDC_MMUENABLEEC);
                workprefs.mmu_model = workprefs.mmu_ec || ischecked (hDlg, IDC_MMUENABLE) ? 68060 : 0;
+               if (workprefs.cpu_compatible)
+                       workprefs.cpu_data_cache = ischecked (hDlg, IDC_CPUDATACACHE);
                break;
        }
 
@@ -12271,7 +12289,7 @@ static INT_PTR CALLBACK SoundDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
                                SendDlgItemMessage (hDlg, IDC_SOUNDCARDLIST, CB_ADDSTRING, 0, (LPARAM)tmp);
                        }
                        if (numdevs == 0)
-                               workprefs.produce_sound = 0; /* No sound card in system, enable_for_sounddlg will accomodate this */
+                               workprefs.produce_sound = 0; /* No sound card in system, enable_for_sounddlg will accommodate this */
 
                        pages[SOUND_ID] = hDlg;
                        currentpage = SOUND_ID;
@@ -12725,7 +12743,7 @@ static void inithdcontroller (HWND hDlg, int ctype, int ctype_unit, int devtype,
        
        SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_RESETCONTENT, 0, 0);
 
-       gui_add_string(hdmenutable, hDlg, IDC_HDF_CONTROLLER, HD_CONTROLLER_TYPE_UAE, _T("UAE"));
+       gui_add_string(hdmenutable, hDlg, IDC_HDF_CONTROLLER, HD_CONTROLLER_TYPE_UAE, _T("UAE (uaehf.device)"));
 
        gui_add_string(hdmenutable, hDlg, IDC_HDF_CONTROLLER, 0, _T(""));
        gui_add_string(hdmenutable, hDlg, IDC_HDF_CONTROLLER, HD_CONTROLLER_TYPE_IDE_AUTO, _T("IDE (Auto)"));
index acb898681ba91a2625334b453e8668a8a7178ac8..4d97ba522cd23d895d545f6a03b4af95e484a23d 100644 (file)
@@ -39,7 +39,7 @@
     <ProjectGuid>{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}</ProjectGuid>
     <RootNamespace>winuae</RootNamespace>
     <TargetPlatformVersion>8.1</TargetPlatformVersion>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='FullRelease|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
+    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
     <ClCompile Include="..\..\cpuemu_24.cpp" />
     <ClCompile Include="..\..\cpuemu_32.cpp" />
     <ClCompile Include="..\..\cpuemu_33.cpp" />
+    <ClCompile Include="..\..\cpuemu_34.cpp" />
+    <ClCompile Include="..\..\cpuemu_35.cpp" />
     <ClCompile Include="..\..\cpuemu_40.cpp" />
     <ClCompile Include="..\..\cpuemu_50.cpp" />
     <ClCompile Include="..\..\cpummu30.cpp" />
     <ClCompile Include="..\..\hrtmon.rom.cpp" />
     <ClCompile Include="..\..\ide.cpp" />
     <ClCompile Include="..\..\idecontrollers.cpp" />
+    <ClCompile Include="..\..\ini.cpp" />
     <ClCompile Include="..\..\inputrecord.cpp" />
     <ClCompile Include="..\..\isofs.cpp" />
     <ClCompile Include="..\..\logging.cpp" />
index 14373be5c93f0816ea718560d43e395e0be9fc75..54847e2672a4cd4f5c279704f2154ee5a72b4a00 100644 (file)
     <ClCompile Include="..\..\rtc.cpp">
       <Filter>common</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\ini.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cpuemu_34.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cpuemu_35.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <None Include="..\resources\35floppy.ico">
index c6852b30019d60d422542cf50af1277c7d4ac7a1..4bf71754fbb0b27907e251d1eb933ae99c8a7d0b 100644 (file)
@@ -5,6 +5,119 @@ JIT Direct current rules are less complex now. It automatically switches off onl
   Note that in 64-bit version RTG VRAM must be inside of reserved natmem space. (Outside = error message and return back to GUI)\r
 \r
 \r
+Beta 1:\r
+\r
+Big CPU emulation update. More compatible (instruction cache) and data cache is now supported with MMU emulation.\r
+Probably not that useful for normal users but developers may find it interesting.\r
+\r
+Multi window (One window / Amiga monitor/output) support may be coming later.\r
+\r
+Notes:\r
+- 68020 more compatible/CE mode statefiles may not load ("CPU tracer" error dialog)\r
+- Anything CPU related may have broken..\r
+- And more!\r
+\r
+- 68030 + memory cycle exact (without full CE): BSR didn't use data cache memory access routines.\r
+- Softfloat fix: 68040+ will convert unnormal zeros (zero mantissa, non-zero exponent) to normals without datatype exceptions.\r
+- 68040/060 MMU updates. MOVES was wrong in some situations, ATC status bit handling updated. (Originally Previous fix, first Next version that supported 68040 seems to do some strange things)\r
+- 68030/040/060 MMU emulation internal fast path translation cache added, performance improved noticeably.\r
+- Fully validate 68030 MMU instruction opcodes and generate F-line exception if unused but invalid bits are set. (Real 68030 confirmed)\r
+- 68030 MMU PLOAD was unsupported.\r
+- "EC" MMU option added, emulates access control registers only (renamed transparent translation registers in EC models).\r
+- 68030 MMU + prefetch + instruction + data cache emulation mode. (Enabled when "More compatible" is ticked) CPU caches are now correctly located between CPU and MMU and they cache logical addresses.\r
+- 68030 MMU + prefetch + instruction + data cache + "cycle-exact" emulation mode. (Same timing as 68030 non-MMU "CE" mode)\r
+- 68030 data cache emulation is now optional.\r
+- 68030 data cache emulation is internally disabled if UAE Boot ROM is active in non-indirect mode. It is not compatible with most UAE expansions because they access memory directly, bypassing the data cache and previous data cache hack made the cache mostly useless.\r
+- 68040/060 MMU + full instruction cache emulation (when more compatible is set).\r
+- 68040/060 data cache emulation (including write-through and copyback, MMU support), optionally available in more compatible mode.\r
+- 68040/060 without FPU: many FPU instructions generated incorrect F-line stack frame contents, usually wrong PC or EA field.\r
+- 68881/68882 FMOVECR undocumented ROM offsets are now 100% accurately emulated, offsets 0x40-0x7f return f-line exception.\r
+- Currently emulated hardware cache inhibit signal is always active when CPU accesses anything non-RAM.\r
+\r
+- It was not possible to change existing path with Select Directory/Select Archive or Plain File buttons.\r
+- Do not reset manual geometry HDF setting when changing hardfiles.\r
+- Automatically enable RDB mode if empty HDF is added and controller type is IDE or SCSI.\r
+- Replaced ReadProfileString/WriteProfileString based ini support with custom routines that don't have 65536 byte section size limits. (Long ROM paths can easily become longer than 32k wide characters)\r
+- SCSI expansion SCSI ID: don't show it when it is not selectable, also make sure it is 7 by default, previously in some situations it become 0.\r
+- Internal AKS input events are now available in custom event strings (for example statefile save and restore)\r
+- uaehf.device hardfiles/harddrives unit number is now user configurable.\r
+- Joyport setting was not fully reset before loading Host-only config.\r
+- Added UAE HD controller A2090 partition table support. RDB didn't exist when A2090 was released.\r
+- Added extra validation after Windows illegal name check, if name is illegal, check what CreateFile() returns, name is invalid if it returns ERROR_INVALID_NAME. If open succeeds, return also illegal name status if GetFileType() does not return FILE_TYPE_DISK.\r
+- Avioutput on the fly recording start used GUI sound frequency setting if recording was started with a shortcut. If GUI was never opened, sound recording rate become 44100Hz, creating video that had bad AV sync if real in use frequency was not 44100Hz.\r
+- Don't support 360k floppy images in Amiga drive unless it is configured as 5.25" drive. (Fixes 360k DS vs 720k SS misdetection)\r
+- Disable low latency vsync if calibration returns impossibly large values (>1000Hz). Seems to happen with some recent NVidia drivers.\r
+- Do not create hidden inactive uaegfx modes if none of color modes fit in VRAM.\r
+- Fixed uaegfx VRAM size check, some modes that almost filled the whole VRAM didn't appear in resolution list.\r
+- Z3 RAM in manual mode was completely broken.\r
+- Added blitter_speed_throttle config file entry, adjusts blitter speed if in non-ce/non immediate blitter mode. (0 = no change, 0.1 = 10% speedup and so on)\r
+- If JIT FPU was ticked but JIT was off: FPU emulation used simple JIT FPU compatible FPU status register calculations, even if softfloat mode was selected.\r
+- New undocumented feature emulated: Bitplane DMA can be restarted during last AGA FMODE>0 idle cycles after DDFSTOP.\r
+- Bitplane overrun condition triggered incorrectly in rare situation where bitplane DMA is enabled after DDFSTOP on OCS. (Scoopex crash landing cracktro, possibly others)\r
+- "Include CD and FMV Audio" and/or sound mode change when CD or FMV audio is playing is now supported.\r
+\r
+- DKB RapidFire flash rom chip emulated. Contains boot rom but is also used to store "advanced scsi config" settings. (ROM scanner still detects flash rom update file, scsi config is located at the end of flash chip, far away from boot rom data)\r
+- DKB 1230/1240/Cobra flash chip emulated, advanced scsi config utility config save supported. SCSI expansion is now optional.\r
+- A2090 boot ROM didn't work without more compatible enabled.\r
+- Hardfile SCSI emulator MODE SELECT (6) and (10) added, mostly does nothing, added because A2090 SCSI driver TD_FORMAT requires it.\r
+- Host side read-only hdf was supposed to also force read-only HDF in Amiga-side.\r
+- Automatically support software dumped A590/A2091 ROMs that don't have 0x2000 wraparound/offset.\r
+- Comspec SA1000 KS rom image loader compatibility fix.\r
+- Blizzard 1230 MK I appears to be functionally identical to MK II. Same boot ROM, same SCSI expansion.\r
+\r
+- Added debugger 'I' command, send custom event string, same as Input panel uses (inject keycodes, change config like uae-configuration does..).\r
+- Added debugger 'L' command, load data from file (same parameters as 'S')\r
+- Added debugger fill memory command 'Wf <addr> <eaddr> <bytes or string like W>, repeats byte/string writing until end address.\r
+- Added debugger assembler ('a') command! (Most 68020+ only special encoded opcodes are not supported)\r
+\r
+- Ashcom AddHard emulation.\r
+- A2090 Combitec ROM expansion support.\r
+- FastATA 4000 MK I/II.\r
+- Spirit Technology InMate SCSI controller.\r
+- Emplant SCSI controller (and only SCSI)\r
+\r
+Hardfile/drive geometry file support extended. (WIP)\r
+\r
+- Geometry data can now include full ATA identity (512 bytes) and SCSI Inquiry/Mode pages.\r
+- Data can be added to mounted IDE or SCSI emulated HDF or real harddrive to make drive appear exactly as drive which geometry data was read, exact same name appears in hdtoolbox, exact same logical CHS geometry and so on.\r
+- WARNING: Identity data has priority, even if drive is smaller than size information stored in identity data.\r
+- Added drive identity option to add harddrive panel. It tries to query ATA Identity data and all SCSI Inquiry and Mode pages. Note that USB uses SCSI protocol and if drive is ATA, ATA identity can be only read if USB adapter supports SCSI ATA Passthrough. Unfortunately most USB CF adapters don't support it. (USB SATA harddrives seem to commonly support it)\r
+- Includes hack that enables reading CF ATA identity with Realtek chip based USB card readers. Uses vendor specific command to read memory region that contains ATA identity, requires card reinsert. Confirmed working with Kingston FCR-HS3 and Transcend TS-RDF9K. Probably works with most Realtek chip based card readers.\r
+\r
+New ROMs:\r
+- A590 v5.92 ROM.\r
+- DataFlyer Plus v2.0 ROM. (This was stored in 16k ROM but because others were 32k and duplicated, I manually duplicated this one too)\r
+- A2620 -02 and -03 ROM. (-05 remaining)\r
+- Non-SCSI DKB 1230/1240/Cobra flash ROM update image.\r
+- Replaced old DKB Ferret SCSI expansion compatible DKB accelerator ROM image with flash ROM update image. (Official flasher will create identical ROM image, also some CPU speed specific firmware data gets written at the end of flash image)\r
+- Ashcom AddHard boot ROM.\r
+- A2090 Combitec A2090a update ROM and 2x A2090 combitec expansion board ROMs.\r
+- A2090 MacroSystem boot ROM.\r
+- Vortex System 2000 v1.02 ROM.\r
+- Spirit Technology InMate v1.0 ROM.\r
+\r
+Ashcom Addhard:\r
+- 5380 based, nothing special.\r
+- Clone of Trumpcard, even ROM driver is a copy, only names have been changed! Nybble-wide loader code at the beginning of ROM has original IVS_SCSI.device string visible after converting it to bytes! Someone (who didn't know what or why there is nybble-wide data?) simply used hex-editor to change all visible strings?\r
+- ADD_SCSI.device "ADDSCSI 2.0 (26 MAR 1992)". But driver version number is actually 4.9. (Original Trumpcard driver version?)\r
+\r
+A2090 Combitec:\r
+- A2090 ROM board that adds KS 1.2+ compatible autoboot support to original non-a variant of A2090. (Also works with A2090a if original ROMS are removed first)\r
+- Shows boot screen.\r
+- MacroSystem ROM uses same adapter. Different driver and boot screen.\r
+\r
+FastATA 4000 MK I/II:\r
+- Z3 ATA controller with 2 ports (Max 4 devices).\r
+- Only v3 Boot ROM tested. (FastATA 3.0 (10 NOV 03)). Proper ROM dumps needed.\r
+\r
+Sprit Technology InMate:\r
+- Emulated as SCSI autoconfig board, not an accelerator board because it is 68000 board and does not require special address spaces.\r
+- AIC-6250 SCSI chip.\r
+- Fake DMA, word wide data port. Not fully hardware implemented, needs DMA status polling after each word read or write.\r
+- It has worst RDB filesystem loader ever (at least in 1.0 ROM). Must be single hunk, no relocs, must have total length patched in first long word (I assume install disk patches it). Does not do any checks.\r
+- Jumpers emulated. (ABOOT jumper mirrors Autoboot disabled -checkbox)\r
+\r
+\r
 3.5.0\r
 \r
 Beta 14:\r
index ae8ba8fd16775bda86196eb5459e0e7507ed7262..b2e8e64459d4a5f0975b1927daed2cdc6ad1af5f 100644 (file)
@@ -2,8 +2,8 @@
 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
 
   <?define ProductName = "WinUAE" ?>
-  <?define ProductVersion = "3.5.0" ?>
-  <?define ProductFullVersion = "3.5.0.0" ?>
+  <?define ProductVersion = "3.5.1" ?>
+  <?define ProductFullVersion = "3.5.1.0" ?>
   <?define ProductAuthor = "Arabuusimiehet" ?>
 
   <?if $(var.Platform) = x64 ?>
index 6a2be004c160bcdb2dfefefa26122a982d40b5a7..5c07265338cc6100571a92b5f8459200a834ad21 100644 (file)
@@ -133,7 +133,7 @@ static void state_incompatible_warn (void)
 }
 
 /* functions for reading/writing bytes, shorts and longs in big-endian
-* format independent of host machine's endianess */
+* format independent of host machine's endianness */
 
 static uae_u8 *storepos;
 void save_store_pos_func (uae_u8 **dstp)
index 95c45176aaa559d518250258cf358958145e68a4..e926ff69058945973184c4bc2f77e4b823bde0b2 100644 (file)
@@ -36,7 +36,7 @@ typedef int BOOL;
 #include "scg/scsitransp.h"
 #include "scg/scsireg.h"
 
-/* our configure does not have a seperate UAE_SCSIDEV_THREADS */
+/* our configure does not have a separate UAE_SCSIDEV_THREADS */
 #if defined(UAE_FILESYS_THREADS) && !defined(SCSI_IS_NOT_THREAD_SAFE)
 #define UAE_SCSIDEV_THREADS
 #endif
index 8595e504760f2c99e4d25da0cd6673aa2f98bf94..4771ab9d5dc998e732fef448183e6ba213b31c70 100644 (file)
@@ -163,7 +163,7 @@ void SERPER (uae_u16 w)
  *      of an asynchronous read before switching blind
  *      mode off again. It never gets there on UAE :-< )
  *
- *  -  RTS/CTS handshake, this is not really neccessary,
+ *  -  RTS/CTS handshake, this is not really necessary,
  *      because you can use RTS/CTS "outside" without
  *      passing it through to the emulated Amiga
  *