From 283488f52d0b9827b9ea90981260c6b7f4846c62 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Mon, 17 Apr 2017 19:21:22 +0300 Subject: [PATCH] 3410b6 --- cfgfile.cpp | 4 +- debug.cpp | 21 ++++----- expansion.cpp | 43 ++++++++++++++----- include/options.h | 2 - main.cpp | 5 ++- newcpu.cpp | 3 +- od-win32/resources/resource.h | 1 - od-win32/resources/winuae.rc | 1 - od-win32/win32.h | 4 +- od-win32/win32gui.cpp | 4 -- od-win32/winuae_msvc15/winuae_msvc.vcxproj | 1 + .../winuae_msvc15/winuae_msvc.vcxproj.filters | 26 ++++++----- od-win32/winuaechangelog.txt | 38 ++++++++++++++++ 13 files changed, 106 insertions(+), 47 deletions(-) diff --git a/cfgfile.cpp b/cfgfile.cpp index 42bf8eab..8c0f9f6d 100644 --- a/cfgfile.cpp +++ b/cfgfile.cpp @@ -309,6 +309,7 @@ static const TCHAR *obsolete[] = { _T("gfx_correct_aspect"), _T("gfx_autoscale"), _T("parallel_sampler"), _T("parallel_ascii_emulation"), _T("avoid_vid"), _T("avoid_dga"), _T("z3chipmem_size"), _T("state_replay_buffer"), _T("state_replay"), _T("z3realmapping"), _T("force_0x10000000_z3"), + _T("fpu_arithmetic_exceptions"), _T("gfx_filter_vert_zoom"),_T("gfx_filter_horiz_zoom"), _T("gfx_filter_vert_zoom_mult"), _T("gfx_filter_horiz_zoom_mult"), @@ -2221,7 +2222,6 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type) cfgfile_dwrite_bool (f, _T("cpu_no_unimplemented"), p->int_no_unimplemented); cfgfile_write_bool (f, _T("fpu_strict"), p->fpu_strict); cfgfile_dwrite_bool (f, _T("fpu_softfloat"), p->fpu_softfloat); - cfgfile_dwrite_bool (f, _T("fpu_arithmetic_exceptions"), p->fpu_exceptions); cfgfile_write_bool (f, _T("rtg_nocustom"), p->picasso96_nocustom); cfgfile_write (f, _T("rtg_modes"), _T("0x%x"), p->picasso96_modeflags); @@ -4843,7 +4843,6 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, const TCHAR *option, TCH || cfgfile_yesno (option, value, _T("serial_direct"), &p->serial_direct) || cfgfile_yesno (option, value, _T("fpu_strict"), &p->fpu_strict) || cfgfile_yesno (option, value, _T("fpu_softfloat"), &p->fpu_softfloat) - || cfgfile_yesno (option, value, _T("fpu_arithmetic_exceptions"), &p->fpu_exceptions) || cfgfile_yesno (option, value, _T("comp_nf"), &p->compnf) || cfgfile_yesno (option, value, _T("comp_constjump"), &p->comp_constjump) #ifdef USE_JIT_FPU @@ -6998,7 +6997,6 @@ void default_prefs (struct uae_prefs *p, bool reset, int type) p->int_no_unimplemented = false; p->fpu_strict = 0; p->fpu_softfloat = 0; - p->fpu_exceptions = 0; p->m68k_speed = 0; p->cpu_compatible = 1; p->address_space_24 = 1; diff --git a/debug.cpp b/debug.cpp index 3c4f8a0a..651d6776 100644 --- a/debug.cpp +++ b/debug.cpp @@ -43,6 +43,7 @@ #include "ppc/ppcd.h" #include "uae/io.h" #include "uae/ppc.h" +#include "drawing.h" int debugger_active; static uaecptr skipaddr_start, skipaddr_end; @@ -1355,9 +1356,7 @@ static void debug_draw_cycles (uae_u8 *buf, int bpp, int line, int width, int he struct dma_rec *dr; int t; - if (debug_dma >= 5) - yplus = 3; - else if (debug_dma >= 4) + if (debug_dma >= 4) yplus = 2; else yplus = 1; @@ -1369,7 +1368,9 @@ static void debug_draw_cycles (uae_u8 *buf, int bpp, int line, int width, int he xplus = 1; t = dma_record_toggle ^ 1; - y = line / yplus - 8; + y = line / yplus; + if (yplus < 2) + y -= 8; if (y < 0) return; @@ -1385,11 +1386,8 @@ static void debug_draw_cycles (uae_u8 *buf, int bpp, int line, int width, int he uae_u32 c = debug_colors[0].l[0]; xx = x * xplus + dx; dr = &dma_record[t][y * NR_DMA_REC_HPOS + x]; - if (dr->reg != 0xffff) { - if (debug_colors[dr->type].enabled) - c = debug_colors[dr->type].l[dr->extra]; - else - c = 0; + if (dr->reg != 0xffff && debug_colors[dr->type].enabled) { + c = debug_colors[dr->type].l[dr->extra]; } if (dr->intlev > intlev) intlev = dr->intlev; @@ -5222,6 +5220,7 @@ static bool debug_line (TCHAR *input) if (debug_dma) { console_out_f (_T("DMA debugger disabled\n"), debug_dma); record_dma_reset(); + reset_drawing(); debug_dma = 0; } } else if (*inptr == 'm') { @@ -5270,8 +5269,10 @@ static bool debug_line (TCHAR *input) if (debug_dma && v1 >= 0 && v2 >= 0) { decode_dma_record (v2, v1, cmd == 'v', false); } else { - if (debug_dma) + if (debug_dma) { record_dma_reset(); + reset_drawing(); + } debug_dma = v1 < 0 ? -v1 : 1; console_out_f (_T("DMA debugger enabled, mode=%d.\n"), debug_dma); } diff --git a/expansion.cpp b/expansion.cpp index 8fb95547..7a17c31d 100644 --- a/expansion.cpp +++ b/expansion.cpp @@ -3563,16 +3563,20 @@ void expansion_map(void) // map non-autoconfig ram boards for (int i = 0; i < MAX_RAM_BOARDS; i++) { struct ramboard *rb = &currprefs.fastmem[i]; - if (rb->manual_config) { - map_banks(&fastmem_bank[i], rb->start_address >> 16, (rb->end_address - rb->start_address + 1) >> 16, 0); - } else if (rb->no_reset_unmap && rb->start_address) { - map_banks(&fastmem_bank[i], rb->start_address >> 16, rb->size >> 16, 0); + if (rb->size) { + if (rb->manual_config) { + map_banks(&fastmem_bank[i], rb->start_address >> 16, (rb->end_address - rb->start_address + 1) >> 16, 0); + } else if (rb->no_reset_unmap && rb->start_address) { + map_banks(&fastmem_bank[i], rb->start_address >> 16, rb->size >> 16, 0); + } } rb = &currprefs.z3fastmem[i]; - if (rb->manual_config) { - map_banks(&z3fastmem_bank[i], rb->start_address >> 16, (rb->end_address - rb->start_address + 1) >> 16, 0); - } else if (rb->no_reset_unmap && rb->start_address) { - map_banks(&z3fastmem_bank[i], rb->start_address >> 16, rb->size >> 16, 0); + if (rb->size) { + if (rb->manual_config) { + map_banks(&z3fastmem_bank[i], rb->start_address >> 16, (rb->end_address - rb->start_address + 1) >> 16, 0); + } else if (rb->no_reset_unmap && rb->start_address) { + map_banks(&z3fastmem_bank[i], rb->start_address >> 16, rb->size >> 16, 0); + } } } if (currprefs.z3chipmem_size) { @@ -4444,6 +4448,15 @@ const struct expansionromtype expansionroms[] = { false, EXPANSIONTYPE_IDE, 2092, 8, 0 }, + { + _T("malibu"), _T("Malibu"), _T("California Access"), + malibu_init, NULL, malibu_add_scsi_unit, ROMTYPE_MALIBU, 0, 0, BOARD_AUTOCONFIG_Z2, false, + NULL, 0, + true, EXPANSIONTYPE_SCSI, + 0, 0, 0, false, NULL, + false, 0, NULL, + { 0xd1, 0x01, 0x00, 0x00, 0x08, 0x11, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00 }, + }, { _T("cltda1000scsi"), _T("A1000/A2000 SCSI"), _T("C-Ltd"), cltda1000scsi_init, NULL, cltda1000scsi_add_scsi_unit, ROMTYPE_CLTDSCSI | ROMTYPE_NOT, 0, 0, BOARD_AUTOCONFIG_Z2, false, @@ -4474,6 +4487,12 @@ const struct expansionromtype expansionroms[] = { 0, 0, 0, false, NULL, true, 0, a4091_settings }, + { + _T("comspec1000"), _T("SA-1000"), _T("Comspec"), + comspec_init, NULL, comspec_add_scsi_unit, ROMTYPE_COMSPEC, 0, 0, BOARD_NONAUTOCONFIG_BEFORE, true, + NULL, 0, + true, EXPANSIONTYPE_SCSI + }, { _T("dataflyerscsiplus"), _T("DataFlyer SCSI+"), _T("Expansion Systems"), dataflyer_init, NULL, dataflyer_add_scsi_unit, ROMTYPE_DATAFLYERP | ROMTYPE_NOT, 0, 0, BOARD_NONAUTOCONFIG_BEFORE, true, @@ -5408,6 +5427,10 @@ static const struct expansionboardsettings apollo_settings[] = { _T("SCSI module installed"), _T("scsi") }, + { + _T("Memory disable"), + _T("memory") + }, { NULL } @@ -5419,8 +5442,8 @@ static const struct cpuboardsubtype apollo_sub[] = { _T("Apollo"), ROMTYPE_CB_APOLLO, 0, apollo_add_scsi_unit, EXPANSIONTYPE_SCSI, - BOARD_MEMORY_HIGHMEM, - 128 * 1024 * 1024, + BOARD_MEMORY_CUSTOM_32, + 64 * 1024 * 1024, 0, apollo_init_cpu, NULL, 2, 0, apollo_settings diff --git a/include/options.h b/include/options.h index b6051a3a..5d749eea 100644 --- a/include/options.h +++ b/include/options.h @@ -470,9 +470,7 @@ struct uae_prefs { bool comp_constjump; int cachesize; bool fpu_strict; - bool fpu_softfloat; - bool fpu_exceptions; int gfx_framerate, gfx_autoframerate; struct wh gfx_size_win; diff --git a/main.cpp b/main.cpp index eba0d006..7144f00a 100644 --- a/main.cpp +++ b/main.cpp @@ -296,10 +296,9 @@ void fixup_cpu (struct uae_prefs *p) error_log (_T("JIT is not compatible with unimplemented CPU/FPU instruction emulation.")); p->fpu_no_unimplemented = p->int_no_unimplemented = false; } - if (p->cachesize && p->compfpu && (p->fpu_softfloat || p->fpu_exceptions)) { + if (p->cachesize && p->compfpu && p->fpu_softfloat) { error_log (_T("JIT FPU emulation is not compatible with softfloat FPU emulation.")); p->fpu_softfloat = false; - p->fpu_exceptions = false; } #if 0 @@ -357,6 +356,8 @@ void fixup_prefs (struct uae_prefs *p, bool userconfig) p->fastmem[0].size = p->cpuboardmem1_size; } else if (cpuboard_memorytype(p) == BOARD_MEMORY_25BITMEM) { p->mem25bit_size = p->cpuboardmem1_size; + } else if (cpuboard_memorytype(p) == BOARD_MEMORY_CUSTOM_32) { + p->mem25bit_size = 0; } if (((p->chipmem_size & (p->chipmem_size - 1)) != 0 && p->chipmem_size != 0x180000) diff --git a/newcpu.cpp b/newcpu.cpp index 7a99c546..d1f7f9d3 100644 --- a/newcpu.cpp +++ b/newcpu.cpp @@ -1561,8 +1561,7 @@ static int check_prefs_changed_cpu2(void) || currprefs.cpu_compatible != changed_prefs.cpu_compatible || currprefs.cpu_cycle_exact != changed_prefs.cpu_cycle_exact || currprefs.cpu_memory_cycle_exact != changed_prefs.cpu_memory_cycle_exact - || currprefs.fpu_softfloat != changed_prefs.fpu_softfloat - || currprefs.fpu_exceptions != changed_prefs.fpu_exceptions) { + || currprefs.fpu_softfloat != changed_prefs.fpu_softfloat) { cpu_prefs_changed_flag |= 1; } if (changed diff --git a/od-win32/resources/resource.h b/od-win32/resources/resource.h index 9e9382f9..b12891e0 100644 --- a/od-win32/resources/resource.h +++ b/od-win32/resources/resource.h @@ -552,7 +552,6 @@ #define IDC_22KHZ 1233 #define IDC_SPEED_x86 1233 #define IDC_44KHZ 1234 -#define IDC_FPU_EXCEPTIONS 1234 #define IDC_48KHZ 1235 #define IDC_SOUNDSIZE 1236 #define IDC_FREQUENCY 1237 diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index 8ddb62da..42b03a76 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -310,7 +310,6 @@ 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,285,115,10 - CONTROL "Arithmetic exceptions",IDC_FPU_EXCEPTIONS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,298,115,10 END IDD_FLOPPY DIALOGEX 0, 0, 396, 261 diff --git a/od-win32/win32.h b/od-win32/win32.h index 3c1b1bbc..cae655d9 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -20,12 +20,12 @@ #define LANG_DLL_FULL_VERSION_MATCH 1 #if WINUAEPUBLICBETA -#define WINUAEBETA _T("5") +#define WINUAEBETA _T("6") #else #define WINUAEBETA _T("") #endif -#define WINUAEDATE MAKEBD(2017, 4, 2) +#define WINUAEDATE MAKEBD(2017, 4, 17) //#define WINUAEEXTRA _T("AmiKit Preview") //#define WINUAEEXTRA _T("Amiga Forever Edition") diff --git a/od-win32/win32gui.cpp b/od-win32/win32gui.cpp index df5f7560..8d1c9021 100644 --- a/od-win32/win32gui.cpp +++ b/od-win32/win32gui.cpp @@ -11312,7 +11312,6 @@ static void enable_for_cpudlg (HWND hDlg) ew (hDlg, IDC_COMPATIBLE_FPU, workprefs.fpu_model > 0); ew (hDlg, IDC_FPU_UNIMPLEMENTED, workprefs.fpu_model && !workprefs.cachesize); ew (hDlg, IDC_FPU_SOFTFLOAT, workprefs.fpu_model && (!workprefs.compfpu || !workprefs.cachesize)); - ew (hDlg, IDC_FPU_EXCEPTIONS, workprefs.fpu_model && (!workprefs.compfpu || !workprefs.cachesize) && workprefs.fpu_softfloat); ew (hDlg, IDC_CPU_UNIMPLEMENTED, workprefs.cpu_model == 68060 && !workprefs.cachesize); #if 0 ew (hDlg, IDC_CPU_MULTIPLIER, workprefs.cpu_cycle_exact); @@ -11360,7 +11359,6 @@ static void values_to_cpudlg (HWND hDlg) 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); - CheckDlgButton (hDlg, IDC_FPU_EXCEPTIONS, workprefs.fpu_exceptions); CheckDlgButton (hDlg, IDC_CPU_UNIMPLEMENTED, !workprefs.int_no_unimplemented || workprefs.cachesize); SendDlgItemMessage (hDlg, IDC_CPUIDLE, TBM_SETPOS, TRUE, workprefs.cpu_idle == 0 ? 0 : 12 - workprefs.cpu_idle / 15); SendDlgItemMessage (hDlg, IDC_PPC_CPUIDLE, TBM_SETPOS, TRUE, workprefs.ppc_cpu_idle); @@ -11421,7 +11419,6 @@ static void values_from_cpudlg (HWND hDlg) workprefs.fpu_strict = ischecked (hDlg, IDC_COMPATIBLE_FPU) ? 1 : 0; workprefs.fpu_no_unimplemented = ischecked (hDlg, IDC_FPU_UNIMPLEMENTED) ? 0 : 1; workprefs.fpu_softfloat = ischecked (hDlg, IDC_FPU_SOFTFLOAT) ? 1 : 0; - workprefs.fpu_exceptions = (ischecked (hDlg, IDC_FPU_EXCEPTIONS) ? 1 : 0) && workprefs.fpu_softfloat; workprefs.int_no_unimplemented = ischecked (hDlg, IDC_CPU_UNIMPLEMENTED) ? 0 : 1; workprefs.address_space_24 = ischecked (hDlg, IDC_COMPATIBLE24) ? 1 : 0; workprefs.m68k_speed = ischecked (hDlg, IDC_CS_HOST) ? -1 : 0; @@ -11526,7 +11523,6 @@ static void values_from_cpudlg (HWND hDlg) } if (workprefs.cachesize && workprefs.compfpu && workprefs.fpu_softfloat) { workprefs.fpu_softfloat = false; - workprefs.fpu_exceptions = false; setchecked(hDlg, IDC_FPU_SOFTFLOAT, false); } if (oldcache == 0 && workprefs.cachesize > 0) { diff --git a/od-win32/winuae_msvc15/winuae_msvc.vcxproj b/od-win32/winuae_msvc15/winuae_msvc.vcxproj index 4bcd845a..5bcd59ec 100644 --- a/od-win32/winuae_msvc15/winuae_msvc.vcxproj +++ b/od-win32/winuae_msvc15/winuae_msvc.vcxproj @@ -897,6 +897,7 @@ + diff --git a/od-win32/winuae_msvc15/winuae_msvc.vcxproj.filters b/od-win32/winuae_msvc15/winuae_msvc.vcxproj.filters index 1c38334a..abe3d6f6 100644 --- a/od-win32/winuae_msvc15/winuae_msvc.vcxproj.filters +++ b/od-win32/winuae_msvc15/winuae_msvc.vcxproj.filters @@ -65,6 +65,9 @@ {fe9d96c8-c5ef-4f92-b9dc-79b5d3e4145c} + + {b113952e-b596-4a9e-922f-8ccff5b915ed} + @@ -775,15 +778,12 @@ common - - qemu - - - qemu - common + + slirp + slirp @@ -808,9 +808,6 @@ slirp - - slirp - slirp @@ -838,8 +835,17 @@ slirp + + softfloat + - qemu + softfloat + + + softfloat + + + softfloat diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index 7cf7deb1..250ad7b7 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -4,6 +4,44 @@ JIT Direct current rules are less complex now. It automatically switches off onl - RTG VRAM is outside of reserved natmem space. Workaround: Move RTG in earlier position using Hardware info GUI panel. Note that in 64-bit version RTG VRAM must be inside of reserved natmem space. (Outside = error message and return back to GUI) + +Beta 6: + +- Comspec SA-1000 SCSI HD controller emulation. (Partially implemented only, don't have working install disk) +- California Access Malibu SCSI HD controller emulation. +- Stop immediately with halt code 11 if initial PC does not point to any valid address or is odd when CPU emulator starts. +- Manually configured but disabled (size zero) Z2/Z3 banks were added to system. +- Apollo 1240/1260 memory address space fixed. Memory disable jumper option added. +- 68000 address error stacked PC was not correct in some read-modify-write instructions. +- If Custom board order was enabled, expansion devices custom config setting(s) was not saved correctly. +- Emulate rare 68040/060 FPU (with unimplemented instructions not emulated) fpsp (68040/060.library) software emulation case + correctly when both operands are denormals. +- Show [Paused] in windowed mode title bar when in pause mode. +- Transcendental functions added to softfloat emulation (Andreas Grabher). Not 100% identical results compared to + 6888x but almost. Softfloat mode is now complete. +- Removed Arithmetic exceptions option, it is now always enabled in softfloat mode. (It was only temporary option until + arithmetic exceptions are fully implemented) +- Visual DMA debugger can be switched off, "vo". +- Added visual DMA debugger -5 and -6 modes (-5 = larger overlay with "transparency" and -6 = no "transparency) +- Added separate colors for visual DMA debugger copper wait and special cases (strobe extra cycle, 0xe0 cycle) +- Added visual DMA debugger configuration: DMA channels can be disabled and colors can be changed. + "vm" = show status + "vm " = enable/disable toggle. (sub index is not used but must be included) + "vm " = change color of channel. If sub index is zero: all sub index colors are changed. + +Comspec SA-1000: + +- Autobooting A1000 HD controller that also supports loading KS disk from HD! +- Not RDB compatible. +- WD33C93 based, PIO, handshake in hardware but still needs status register polling. +- "ComspecHD.device 34.805 (17 Oct 1988)" added to ROM scanner. + +California Access Malibu: + +- 5380 SCSI, fake DMA (Long word) +- "Malibu.device 1.0 (1 Jan 1991)" added to ROM scanner. + + Beta 5: - Added Actionware dual light gun adapter emulation. Second gun config entries added to Input panel. -- 2.47.3