Fuse don't manage well time breakpoints longer than a frame, e.g., while loading a disk the event list show:
24569 Timer 70908 End of frame 1383589 FDD motor on 1594240 UPD FDC head (un)load
Double clicking over FDD event add a new time breakpoint with value 1383589 and one-shot life, but this breakpoint never get activated. After manually breaking the emulation the event list shows a plethora of events:
36337 Breakpoint 70908 End of frame 107245 Breakpoint 157014 Timer 178153 Breakpoint 249061 Breakpoint 319969 Breakpoint 390877 Breakpoint 461785 Breakpoint 532693 Breakpoint 603601 Breakpoint 674509 Breakpoint 745417 Breakpoint 816325 Breakpoint 887233 Breakpoint 958141 Breakpoint 1029049 Breakpoint 1099957 Breakpoint 1170865 Breakpoint 1241773 Breakpoint 1312681 Breakpoint 1383589 Breakpoint 1396701 UPD FDC timeout
There are two problems to address here:
1. Time events are reduced in every frame, so when the final countdown ends the breakpoint has a value greater than a frame and does not get activated. The value of time breakpoints should also be reduced in every frame.
2. debugger_add_time_events() add events corresponding to time breakpoints that happen during this frame (1383589 in the former example), but this should only be done for permanent breakpoints that have been triggered.
The attached patch fix these issues. Comments and suggestions are more than welcome.
Log in to post a comment.