View Single Post
Old 24 May 2020, 17:48   #82
Toni Wilen
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 45
Posts: 24,049

Beta 4:

- 68010 address errors fixed. Most read and write bus errors tested and fixed.
- 68010 DIVU cycle count fix. It does not have fully static cycle count as I originally thought (due to not random enough test data). Best case 74 cycles, worst case 104 cycles. Most "normal" divisions (relatively small divisor) are 104 cycles. Algorithm seems to be exact same as used in 68000 but compare and subtract operation if comparison was true appears to be "free" in 68010. (MULs have similar operation, they do compare and add in a loop. 68010 hardware probably gained feature that first executes compare, then compare result is used to select between internal register or zero register, then following ALU operation is executed using selected value. 68000 had to do compare, check comparison result, branch if false, execute ALU operation if true which takes longer.)
- 68010 loop mode CLR.B and CLR.W need 2 extra cycles when loop ends. CLR.L was already correct.
- 68010 loop mode was 2 cycles too fast/loop round in prefetch (non-ce) mode.
- Verified real 68000 and 68010 in cputester cycle test mode again.
- 68030 MMU RTE software fixed pipeline stage handling bug fix. (WHDLoad QA tests 33003/33004/33005, 33012)
- 68030 MMU + prefetch: if instruction generated MMU access fault and it was Locked Read-Modify-Write (TAS, CAS, CAS2), MMU status register RM flag was not set. (94040)
- 68030 MMU + prefetch: "68030 MMU seems to do -(an)/(an)+ adjustment before bus error is detected and original register content is not restored when bus error exception starts" b1 update fix. Amix should boot again.
- Screen capture to clipboard created blank image if 256 color or less RTG mode and capture before filtering was set.
- When switching GUI panels, old sub panel window was not removed from element array. Possibly could cause crashes or some other issues when it was re-used.
- Added b1 debug logging format string flags and width specifier support (except floating point values). Alternate use mode implemented: write pointer to argument array to $BFFF08, then format string to $BFFF04. In this mode %d/%u/%x is assumed to be word wide, %ld/%lu/%lx long word wide (like exec/RawDoFmt). %c was missing.
Toni Wilen is online now  
Page generated in 0.04327 seconds with 11 queries