]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
4000b2
authorToni Wilen <twilen@winuae.net>
Sat, 14 Apr 2018 16:10:17 +0000 (19:10 +0300)
committerToni Wilen <twilen@winuae.net>
Sat, 14 Apr 2018 16:10:17 +0000 (19:10 +0300)
casablanca.cpp
od-win32/resources/winuae.rc
od-win32/rp.cpp
od-win32/win32.h
od-win32/winuaechangelog.txt

index a67a329caf418fce7aa84f763cb1ad25034db68c..b46692d3f3d193aaba886a7e98a93241742fe0a7 100644 (file)
@@ -7,6 +7,36 @@
 #include "newcpu.h"
 #include "casablanca.h"
 
+/*
+
+       53C710 (SCSI)
+       Base: 0x04000000
+       IRQ: 4
+       INTREQ: 7 (AUD0)
+
+       DracoMotion
+       Base: 0x20000000
+       IRQ: 3
+       INTREQ: 4 (COPER)
+       Size: 128k
+       Autoconfig: 83 17 30 00 47 54 00 00 00 00 00 00 00 00 00 00 (18260/23)
+
+       Mouse
+       Base: 0x02400BE3
+       IRQ: 4
+       INTREQ: 9 (AUD2)
+
+       Serial
+       Base: 0x02400FE3
+       IRQ: 4
+       INTREQ: 10 (AUD3)
+
+       Floppy:
+       Base: 0x02400003
+       IRQ: 5
+       INTREQ: 11 (RBF)
+*/
+
 static uae_u32 REGPARAM2 casa_lget(uaecptr addr)
 {
        write_log(_T("casa_lget %08x %08x\n"), addr, M68K_GETPC);
index 067ae351ba4b2881a7ec53b1ac9cedab7d4e878e..2817a39cc50979273fc715c763c162aeca3649a3 100644 (file)
@@ -148,12 +148,12 @@ IDD_DISPLAY DIALOGEX 0, 0, 396, 311
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Screen",IDC_SCREENRESTEXT,1,0,393,77,BS_LEFT
+    GROUPBOX        "Screen",IDC_SCREENRESTEXT,1,0,393,81,BS_LEFT
     COMBOBOX        IDC_DISPLAYSELECT,10,13,375,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Fullscreen:",IDC_STATIC,3,33,51,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_RESOLUTION,59,33,76,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_RESOLUTIONDEPTH,144,33,62,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_REFRESHRATE,287,34,98,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Fullscreen:",IDC_STATIC,3,34,51,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_RESOLUTION,59,34,76,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_RESOLUTIONDEPTH,144,34,62,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_REFRESHRATE,288,35,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
     RTEXT           "Windowed:",IDC_STATIC,2,54,51,15,SS_CENTERIMAGE
     EDITTEXT        IDC_XSIZE,59,56,43,12,ES_NUMBER
     EDITTEXT        IDC_YSIZE,113,56,43,12,ES_NUMBER
index 94d76878010f7b15fa178660c478d6fbb0a07c62..cc4398b5e80eecdd94284b06d091ba72a2605704 100644 (file)
@@ -1566,7 +1566,9 @@ static bool ishd(int n)
        struct uaedev_config_data *uci = &currprefs.mountconfig[n];
        int num = -1;
        if (uci->ci.controller_type == HD_CONTROLLER_TYPE_UAE) {
-               return uci->ci.type == UAEDEV_DIR;
+               if (uci->ci.type == UAEDEV_DIR)
+                       return true;
+               num = uci->ci.controller_unit;
        } else if (uci->ci.controller_type >= HD_CONTROLLER_TYPE_IDE_FIRST && uci->ci.controller_type <= HD_CONTROLLER_TYPE_IDE_LAST) {
                num = uci->ci.controller_unit;
        } else if (uci->ci.controller_type >= HD_CONTROLLER_TYPE_SCSI_FIRST && uci->ci.controller_type <= HD_CONTROLLER_TYPE_SCSI_LAST) {
@@ -1641,13 +1643,13 @@ void rp_fixup_options (struct uae_prefs *p)
 
        hd_mask = 0;
        cd_mask = 0;
-       for (int i = 0; i < currprefs.mountitems; i++) {
+       for (int i = 0; i < currprefs.mountitems && i < 32; i++) {
                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 (int i = 0; i < currprefs.mountitems; i++) {
+               for (int i = 0; i < currprefs.mountitems && i < 32; i++) {
                        struct uaedev_config_data *uci = &currprefs.mountconfig[i];
                        if (ishd(i) && ((1 << i) & hd_mask))
                                rp_harddrive_image_change (i, uci->ci.readonly, uci->ci.rootdir);
index 2294828429084279f482036a7d5f406a9bff78e9..6befefc2188e5727de09140c238d4d4a778bdbb5 100644 (file)
 #define LANG_DLL_FULL_VERSION_MATCH 1
 
 #if WINUAEPUBLICBETA
-#define WINUAEBETA _T("1")
+#define WINUAEBETA _T("2")
 #else
 #define WINUAEBETA _T("")
 #endif
 
-#define WINUAEDATE MAKEBD(2018, 4, 8)
+#define WINUAEDATE MAKEBD(2018, 4, 14)
 
 //#define WINUAEEXTRA _T("AmiKit Preview")
 //#define WINUAEEXTRA _T("Amiga Forever Edition")
index ba5de9561b078ffc4ac69da32c6545097cf5e4ae..40546bb7bb17850cb4a2fb5fc5182206a33255fc 100644 (file)
@@ -5,6 +5,342 @@ 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 2:\r
+\r
+- New low latency vsync tweaks and updates.\r
+- If low latency vsync polling takes longer than 2 vblanks, exit immediately to prevent total hang if scanline reads return unexpected and weird values.\r
+- Display panel "native" resolution returned non-existing mode which got fixed to smallest supported resolution.\r
+- Fixed clipboard sharing.\r
+- Fixed graphics corruption (black lines/tearing) in new low latency mode with Vertical centering enabled.\r
+- Added overlay led support. Led overlays must have same resolution as main overlay file, fully transparent color except location of led. Name must be <original name>_x_led.png where x = power,df0,df1,df2,df3,hd,cd,md,net (md = flash/eeprom access, for example cd32 nvram) Currently D3D11 only.\r
+- MMU emulation works again (at least 68030 was broken)\r
+- If low latency vsync and DSOUND: switch to WASAPI. New low latency vsync needs "pull" mode audio driver.\r
+- Added new misc panel option, asks for confirmation when trying to close emulation window using close button or ALT+F4/CTRL+F11.\r
+- Fixed Output panel crash if capture before filtering was set.\r
+\r
+Beta 1:\r
+\r
+Multi virtual Amiga monitor support:\r
+------------------------------------\r
+\r
+Enables multiple virtual Amiga monitors. Amiga monitor = single WinUAE window.\r
+\r
+Default mode is unchanged, highest priority Amiga display output appear in single WinUAE window, switches automatically or manually (END+F9).\r
+\r
+Optionally any video port display adapter or any RTG board can be disconnected from default monitor and connected to other monitor. (Monitor 1 to 4 select box in GUI, 1 = default). Only one signal source can be connected to non-default monitors. Only default monitor support on the fly switching/END+F9 manual switching.\r
+\r
+Native (chipset) video output is always connected to first (default) monitor.\r
+\r
+Each active monitor (WinUAE window) content is refreshed in real-time.\r
+\r
+Limitations and other information:\r
+\r
+- Windowed mode only (later full-window with single virtual monitor to physical monitor mapping)\r
+- Fullscreen is not supported and won't be supported.\r
+- Direct 3D 9/11 mode only. DirectDraw won't be supported.\r
+- GUI options adjusts all monitors. If native/video port: native filter and all other native related settings are in use for all windows in native/video port mode, if RTG: GUI RTG settings are used for all monitors in RTG mode.\r
+- Non-default monitors are always opened next to default monitor. Positions are not stored.\r
+- It does not matter which window has focus/captured mouse. All windows listen for input normally.\r
+- Non-default windows don't have status bar or OSD and only have name of monitor in title bar.\r
+- Video port device's window opens immediately at startup, RTG board's window open when board's output is enabled with valid display configuration for the first time.\r
+\r
+--\r
+\r
+Lagless Vsync\r
+-------------\r
+\r
+Implemented lagless vsync mode (https://www.blurbusters.com/blur-busters-lagless-raster-follower-algorithm-for-emulator-developers/)\r
+Replaces old low latency vsync mode.\r
+\r
+What does it do? It reduces input latency from usual 20ms-40ms+ to less than 5ms! (or even less)\r
+\r
+Current limitations:\r
+\r
+- Does not support black frame insertion or frame doubling = use only standard 50Hz or 60Hz modes. (or up to 85Hz or so )\r
+- Native mode only. Cycle-exact/approximate/fastest possible/JIT supported.\r
+- Fullscreen only.\r
+- Amiga display to monitor position mapping must be border to border vertically (or close enough) or you may see tearing lines.\r
+- Does not gain anything from G-Sync.\r
+\r
+Current features:\r
+\r
+- Input is read after each slice.\r
+- Default is 4 slices (adjustable in GUI) which makes max input latency about 6ms. (Assuming quality "gaming grade" USB input devices that use <=1ms USB rate.)\r
+- Because output is shader based, outputting each slice requires full render pass each time. It technically means same as rendering screen 4 times the frame rate. (for example 50Hz output requires rendering 200 frames) -> don't enable any extra shaders unless you have powerful GPU. Most likely requires GPU with on-board RAM (discrete GPU) because this mode increases VRAM bandwidth requirements heavily. Or reduce resolution.\r
+- END+F9 toggles debug colors when in low latency vsync mode (In normal modes END+F9 changes screens). When debug colors are disabled, useless screen clearing before each slice rendering is also disabled.\r
+\r
+This method passes my standard Pinball Dreams input latency test. Ball/flipper response feels wrong even with 1 frame of input latency.\r
+\r
+--\r
+\r
+New debugger features:\r
+----------------------\r
+\r
+Main discussion thread: http://eab.abime.net/showthread.php?t=91321\r
+\r
+Ability to load any Amiga executable to special debugger RAM:\r
+\r
+- Static location, custom loader: program is always loaded in same addresses.\r
+- Each hunk is separated with (later configurable) 32k space to detect possible out of bounds accesses.\r
+- Program's memory allocations are also allocated from debugger RAM, with mungwall-like out of bounds access detection.\r
+- Program's stack is also moved to debug RAM.\r
+- Out of bounds detection is real-time and byte-based, detects both reads and writes. Detects also reads from uninitialized memory (read before write).\r
+\r
+\r
+Note that stack does not have unitialized memory read detection because dos does not always write to all addresses in stack frames it allocates (for example when it creates dos packet structures) which causes too many false positives.\r
+\r
+If debug ram is not manually configured and uaedbg is run, 256M of memory is automatically allocated if $70000000 to $f0000000 has at least one free 256M block. It can be manually configured by adding following lines to config file:\r
+\r
+debugmem_start=<address>\r
+debugmem_size=<size in megabytes> Must be power of 2.\r
+\r
+Amiga-side debugger command (may become built-in later):\r
+\r
+uaedbg <program to debug> <program parameters>\r
+\r
+uaedbg loads the program, relocates it to debug memory region, moves stack to debug memory region, breaks to debugger with PC pointing to first instruction of program. Hooks also AllocMem() and FreeMem() and if current task is same as uaedbg task, memory allocation is done from debug ram. (This needs to handle programs that create new tasks, later..)\r
+\r
+If program includes symbols (HUNK_SYMBOL), they are also loaded and shown in disassembler when current address matches or instruction's effect address matches symbol's address.\r
+\r
+Segment 1: 000003e9 70008000-700122ef\r
+__stext:\r
+70008008 [000000] 23c8 7002 3cfc           MOVE.L A0,$70023cfc [00000000] ___commandline\r
+7000800E [000006] 23c0 7002 3cf0           MOVE.L D0,$70023cf0 [00000000] ___commandlen\r
+\r
+If program includes GCC stab (-g) debugging information in HUNK_DEBUG, it is loaded and parsed, including source files. Disassembly will automatically list matched source files. Automatically converts internal source file paths from cygwin (/cygdrive/drive/path) and wsl (/mnt/drive/path) paths to native paths.\r
+\r
+\r
+70008172 [00016A] 48e7 3f3e                MOVEM.L D2-D7/A2-A6,-(A7)\r
+70008176 [00016E] 2478 0004                MOVEA.L $0004 [08000810],A2\r
+\r
+  240   SysBase =  *((struct ExecBase **)4);\r
+  241\r
+  242   /* init globaldata */\r
+\r
+7000817A [000172] 2c4a                     MOVEA.L A2,A6\r
+\r
+  243   g = AllocMem(sizeof(struct globaldata), MEMF_CLEAR);\r
+\r
+7000817C [000174] 203c 0000 09d0           MOVE.L #$000009d0,D0\r
+70008182 [00017A] 7201                     MOVE.L #$01,D1\r
+70008184 [00017C] 4841                     SWAP.W D1\r
+70008186 [00017E] 4eae ff3a                JSR (A6, -$00c6) == $00f9f4ec\r
+\r
+Debugging information also contains variable type data, register and local stack parameter data but it is not yet parsed or used.\r
+\r
+Debugger also resolves final address when it notices JSR x(PC) + JMP <final address> instruction combination:\r
+\r
+70008252 [00024A] 4eba 05f4                JSR (PC,$05f4) == $70008848 == $70015718  _FixStartupPacket\r
+\r
+vs old non-resolved final address:\r
+\r
+70008252 [00024A] 4eba 05f4                JSR (PC,$05f4) == $70008848\r
+\r
+Chip RAM "zero page" (0 to $400) is now watched (like Enforcer). All writes break to debugger immediately, long read from 4 is allowed, if vbr is 0: long aligned exception vector reads are allowed. All other reads break immediately.\r
+\r
+Non-existing RAM/IO read or write also breaks to debugger immediately.\r
+\r
+LVO symbol support:\r
+\r
+if amiga.lib (from Amiga NDK) is in plugins/debugger, it is scanned for LVO symbols.\r
+if plugins/debugger/fd contains one or more *.fd files, they are parsed and added to LVO symbol list.\r
+\r
+When disassembling jsr -$xx(a6) instructions will include name of library and LVO if a6 and -$xx matches. \r
+\r
+LVOs are resolved like this (See also TL command):\r
+\r
+70008034 [00002C] 4eae feda                JSR (A6, -$0126) == $080006ea exec/FindTask == $00f8272a\r
+\r
+If LVO jump table points to other known segment (not debugged program's segment), segment information is also shown.\r
+\r
+Stack frame tracking:\r
+\r
+Tracks debugged program JSR/BSR/RTS instructions.\r
+\r
+70008052 -> 700080a0 SP=7003c0f8 [000098] Segment 1: 000003e9 70008000-700122ef\r
+70008052 [00004A] 614c                     BSR.B #$4c == $700080a0\r
+70008054 [00004C] 2f39 7002 3d00           MOVE.L $70023d00 [00000000] ___env,-(A7) [700080b8]\r
+\r
+700080b6 -> 700121ac SP=7003c0f4 [00A1A4] Segment 1: 000003e9 70008000-700122ef ___initlibraries\r
+700080B6 [0000AE] 4e90                     JSR (A0) ___initlibraries\r
+700080B8 [0000B0] b584                     EOR.L D2,D4\r
+\r
+700121d6 -> 080005e8 SP=7003c09c\r
+700121D6 [00A1CE] 4eae fdd8                JSR (A6, -$0228) == $080005e8 exec/OpenLibrary == $00fbf246\r
+700121DA [00A1D2] 2680                     MOVE.L D0,(A3) [00000000] _DOSBase\r
+\r
+00fbf24e -> 080182b8 SP=7003c078\r
+00FBF24E 4ead 0038                JSR (A5, $0038) == $080182b8\r
+00FBF252 2400                     MOVE.L D0,D2\r
+\r
+PC before JSR/BSR, PC after JSR/BSR instruction, Stack pointer before JSR/BSR.\r
+Segment offset and segment details new PC points to debugged program.\r
+SR is also listed if supervisor mode stack frame.\r
+Disassembly of branch instruction + following instruction.\r
+\r
+Other new debugger features:\r
+\r
+- Early boot segtracker-like feature for loadable libraries and others, enable in misc panel.\r
+- if opcode 0x4afc (official invalid instruction) is executed when debugger is active: trigger breakpoint, don't generate illegal instruction exception.\r
+\r
+New debugger commands:\r
+\r
+- tr = break when PC points to any allocated debug memory\r
+- tl = break when PC matches next source line, step to next source line.\r
+- seg = list loaded program's segments.\r
+- segs = list all segtracker loaded segments.\r
+- u = inhibit current debugmem break to debugger method. (ua = inhibit all, uc = clear all)\r
+- TL = scan and match library bases (exec library, device and resource lists) with loaded amiga.lib/*.fd symbols. Automatically done when starting debug mem debugging session.\r
+- rs = show tracked stack frame.\r
+- rss = show tracked supervisor stack frame.\r
+- ts = break when tracked stack frame count decreases. (=tracked stack frame matched executed RTS) \r
+- tsp = break when tracked stack frame count decreases or increases. (RTS/BSR/JSR).\r
+- tse/tsd = enable/disable full stack frame tracking. Can be used when no debugmem debugging is active.\r
+\r
+ts/tsp stores current supervisor mode and only breaks to debugger if stack frame operation has same supervisor mode.\r
+\r
+All debugger commands that take address or register value also support symbol names. (for example "d __stext")\r
+"library/lvo" is also resolved if library was found when scanned with TL. (for example "d exec/wait" disassembles Wait())\r
+\r
+Notes:\r
+\r
+- Don't mention anything about GUI. Proper source level debugger may require it but I am not yet sure if it really can be done or is worth the trouble..\r
+- Console debugger must be in use. (If GUI mode: enter xx command to switch)\r
+- If executable has chip ram hunks, whole address space is made chip ram compatible and then hunk is loaded to debug ram.\r
+- Very unoptimal data structures, most also have static sizes. Odd errors and crashes can happen..\r
+- JIT must be off.\r
+- 32-bit addressing must be enabled.\r
+- KS 2.0+ only.\r
+\r
+TODO:\r
+\r
+- Does other popular compilers also generate useful HUNK_DEBUG data?\r
+- Suggestions needed! (But don't mention GUI!)\r
+\r
+--\r
+\r
+\r
+\r
+Lagless Vsync:\r
+\r
+Implemented lagless vsync mode (https://www.blurbusters.com/blur-busters-lagless-raster-follower-algorithm-for-emulator-developers/)\r
+Replaces old low latency vsync mode.\r
+\r
+What does it do? It reduces input latency from usual 20ms-40ms+ to less than 5ms! (or even less)\r
+\r
+Current limitations:\r
+\r
+- Does not support black frame insertion or frame doubling = use only standard 50Hz or 60Hz modes. (or up to 85Hz or so )\r
+- Native mode only. Cycle-exact/approximate/fastest possible/JIT supported.\r
+- Direct3D 9 and 11 only.\r
+- Fullscreen only.\r
+- Amiga display to monitor position mapping must be border to border vertically (or close enough) or you may see tearing lines.\r
+- Does not gain anything from G-Sync.\r
+\r
+Current features:\r
+\r
+- Input is read after each slice.\r
+- Default is 4 slices (adjustable in GUI) which makes max input latency about 6ms. (Assuming quality "gaming grade" USB input devices that use <=1ms USB rate.)\r
+- Because output is shader based, outputting each slice requires full render pass each time. It technically means same as rendering screen 4 times the frame rate. (for example 50Hz output requires rendering 200 frames) -> don't enable any extra shaders unless you have powerful GPU. Most likely requires GPU with on-board RAM (discrete GPU) because this mode increases VRAM bandwidth requirements heavily. Or reduce resolution.\r
+- END+F9 toggles debug colors when in low latency vsync mode (In normal modes END+F9 changes screens). When debug colors are disabled, useless screen clearing before each slice rendering is also disabled.\r
+\r
+--\r
+\r
+Multi virtual Amiga monitor support:\r
+\r
+Enables multiple virtual Amiga monitors. Amiga monitor = single WinUAE window.\r
+\r
+Default mode is unchanged, highest priority Amiga display output appear in single WinUAE window, switches automatically or manually (END+F9).\r
+\r
+Optionally any video port display adapter or any RTG board can be disconnected from default monitor and connected to other monitor. (Monitor 1 to 4 select box in GUI, 1 = default). Only one signal source can be connected to non-default monitors. Only default monitor support on the fly switching/END+F9 manual switching.\r
+\r
+Native (chipset) video output is always connected to first (default) monitor.\r
+\r
+Each active monitor (WinUAE window) content is refreshed in real-time.\r
+\r
+Limitations and other information:\r
+\r
+- Windowed mode only (later full-window with single virtual monitor to physical monitor mapping)\r
+- Fullscreen is not supported and won't be supported.\r
+- Direct 3D 9/11 mode only. DirectDraw won't be supported.\r
+- GUI options adjusts all monitors. If native/video port: native filter and all other native related settings are in use for all windows in native/video port mode, if RTG: GUI RTG settings are used for all monitors in RTG mode.\r
+- Non-default monitors are always opened next to default monitor. Positions are not stored.\r
+- It does not matter which window has focus/captured mouse. All windows listen for input normally.\r
+- Non-default windows don't have status bar or OSD and only have name of monitor in title bar.\r
+- Video port device's window opens immediately at startup, RTG board's window open when board's output is enabled with valid display configuration for the first time.\r
+\r
+--\r
+\r
+New debugger features:\r
+\r
+http://eab.abime.net/showthread.php?t=91321\r
+\r
+--\r
+\r
+Minimal Macrosystem Casablanca "emulation"\r
+\r
+Supports Casablanca ROM images, none of Casablanca special IO address spaces supported. It is has very unknown custom hardware.\r
+\r
+If you want to help with debugging/reverse-engineering Casablanca internals using emulation:\r
+\r
+- Set correct ROM, either original 2x512k 1:1 ROM images (ROM scanner supported) or 1x1024M manually merged and byteswapped. (Don't ask me, they contain KS modules, in scrambled format.) If rom starts with "00 00 00 00 00 00 00 18 44 52 42 52 00 01 00 06 ........DRBR...." = correct merged and byteswapped image.\r
+\r
+- CPU must be set to 68060 (MMU bus error handler assumes PC always points to faulting instruction, 68040 documentation says it isn't guaranteed)\r
+- MMU emulation must be enabled.\r
+- Chipset extra must be set to Casablanca.\r
+- Other chipset options don't matter.\r
+- RAM must be set manually: Select Z3 Fast #1, set size (32M/64M), tick "Manual configuration", set Address range start = 40000000. (End address is set automatically). Casablanca RAM uses Z3 space but does not use autoconfig.\r
+- Log window should be enabled.\r
+\r
+It "works" if you see lots of casablanca io access log messages, including MMU enable message. (MMU: TC=109dc enabled=0 page8k=0 PC=00000106). Finally it gets in infinite loop with exec partially initialized.\r
+\r
+Because ROM is descrambled and copied to RAM by boot code and MMU is used to remap it to usual $f80000 region, also "zero page" is remapped, you need to enable UAE debugger mmu mapping support (for example "mmu 1" = use current MMU tables to translate user space addresses, 5 = super space) or you most likely get random garbage when using debugger commands.\r
+\r
+--\r
+\r
+Other Changes\r
+\r
+- Directory harddrives now use uaehf.device as a fake device driver (instead of non-existing uae.device), SysInfo does not anymore crash in Drives page when selecting directory harddrive. (SysInfo bug: it does not check for device driver open failure) HD_SCSICMD is also partially supported in this situation, mainly identification commands that don't access the drive, like READ CAPACITY and INQUIRY. Unsupported commands return Incompatible Medium Installed ($05/$30 00) error.\r
+- Partition hardfiles also support above HD_SCSICMD SCSI commands.\r
+- Don't show loaded config file ".uae" extension in GUI title.\r
+- GUI title didn't show loaded config file if it was loaded from command line or via doubleclicking config file.\r
+- MSVC code analyzer warnings fixed (uninitialized variables, buffer size checks).\r
+- ROM is slow -option only changed $e0-$e8 ROM space timing (wrong end address)\r
+- Toccata recording used wrong interrupt bit.\r
+- Fixed WD33C93 based SCSI controller and no SCSI devices: boot hang (3.6.1)\r
+- If CD was changed and system was reset during change delay, drive become empty and new CD was never inserted.\r
+- DKB RapidFire and SpitFire use same boot rom. Renamed to RapidFire/SpitFire. Only difference seems to be RAM expansion.\r
+- Added Xetec FastTrak, CSA Magnum 40, GVP A1230 Series II, Hardital TQM and MacroSystem Falcon 040 (without SCSI).\r
+- Real harddrive imager attempts to automatically temporarily dismount source drive first.\r
+- Directory filesystem harddrive block size is dynamic adjustment now starts from smaller disk size to also fix WB free space calculation overflow.\r
+- Disk swapper config file data is restored from statefile.\r
+- If memwatch point is watching for blitter accesses, blitter registers at start of blit and current register are output when breakpoint is hit.\r
+\r
+Xetec FastTrak:\r
+- 5380 based SCSI controller, byte wide fake DMA, uses MOVEP.L.\r
+- "bootdisk.device" "bootdisk 1.42  (22 Mar 1990)" "Xetec FastTrak Autoboot"\r
+\r
+CSA Magnum 40:\r
+- A2000 68040 accelerator.\r
+- 53C710 based SCSI, true DMA.\r
+- ROM is loader only, SCSI driver is installed to RDB LSEG blocks by the installer.\r
+\r
+GVP A1230 Series II:\r
+- A1200 68030 accelerator.\r
+- Usual GVP WD33C93 + 24-bit GVP DMA chip combination, with 2 extra external DMA bits to support up to 32M of RAM.\r
+- ROM v5.0 gvpscsi.device.\r
+- Clock not emulated. (DS1994 1-wire clock)\r
+\r
+Hardital TQM:\r
+- A1200 68030 accelerator.\r
+- ROM only adds RAM to system.\r
+- Possibly clone of DKB 1230. Nearly identical ROM contents with "DKB1230" string in "hidden" nybble based data!\r
+\r
+MacroSystem Falcon 040\r
+- A1200 68040 accelerator.\r
+- Only non-SCSI boot ROM currently available, adds only RAM to system. Uses MOVEP, not 68060 compatible.\r
+\r
+\r
 3.6.1\r
 \r
 - 3200b15 "Support DSKLEN writes while disk DMA is active" didn't check if new DSKLEN write had write bit set. Fixes Amax II disk formatting.\r
@@ -6458,7 +6794,7 @@ Beta 3:
 \r
 - TD_WRITE64, TD_FORMAT64, NSCMD_TD_WRITE64 and NSCMD_TD_FORMAT64 io_Actual was always zero\r
 - b1 CIA update broke CIA interrupts partially (keyboard problems etc..)\r
-- MIDI input buffer length command line parameter, -midiinbuffer 12345\r
+- MIDI input buffer length command line parameter, -midiinbuffer ยง12345\r
 - AROS ROM updated, should work better again, previous one was quite broken\r
 \r
 Beta 2:\r