-------------------- AmigaOS 3.1.4.(1) project ----------------------- Changes made for 45.32 (17.12.2016) - The coldstart code is now able to detect a 68060 FPU and in case one is found, does not report the presence of a FPU. Ideally, a 68060 specific task scheduler should have been added to exec, but tradtionally, this role is taken over by the 68060.library and I did not want to break anything, so it will stay like this. NOTE: It needs to be tested whether this small patch is sufficient to make 68060 based cards without boot-ROM booting. The purpose of the boot ROM is typically to disable the 68060 FPU, avoiding the scheduler problem by different means. It should be evaluated whether the following additional patches should go into exec (they are currently not): exec/ExtIntr: this call should include a dummy-access to a custom chip register to ensure that Paula really cleared the IRQ flag when leaving the handler. On some fast 68060 systems, the exec handler leaves before PAULA negated the interrupt line, hence causing a second spurious interrupt. Currently, this patch is in the 68060.library. exec/Supervisor: this call should possibly check whether user code attempts to execute the MANX C FPU reset code. Unfortunately, the FPU stack frame created by the MANX startup code is only four bytes long, whereas the 68060 FPU requires a 12-byte idle stack frame. Since this is not exactly an exec problem but an application problem, it is probably best to leave this either in the 68060.library or SetPatch. It is currently part of (some) 68060.libraries. exec/AddLibrary, exec/CloseLibrary, exec/AddDevice, exec/AddResource, exec/AddTask, exec/AddIntServer, exec/SetIntVector, input/BeginIO: These functions may run into code placed on the stack or copied to memory without pushing caches properly. For safety reasons, these functions should therefore push caches manually. Again, this is not exactly an exec problem, but an application problem, so the patch should probably not go into exec, but rather into SetPatch or the 68060.library. It is currently part of (some) 68060.libraries. - Task trees have been removed from exec and any attempt to use them will end in a recoverable alert and a zero return code. These functions were never fully functional and were incomplete as well as modifications in the exec schedulure and RemTask() where never completed to provide full functionality. The purpose of this replacement is to test whether any user application actually depends on this. If so, the functions will be re-enabled. - AVL trees have been removed from exec. AVL trees were considered a high-level data structure that should better be left in a separate library, or could still be patched in by SetPatch. Any attempt to use the AVL functions will end in a recoverable alert and a zero return code. ROM space is precious already. - Due to the lack of the AVL trees, memory pools have been reverted to the V40 memory pools based on puddles and Allocate() on puddles, just without the V40 bugs. The main reason for adding AVL trees was the slowness of the RAM file deletion function, but that should be addressed by a better suited data structure anyhow. Changes made for 45.33 (22.3.2017) - The test for ranger memory was broken and damanged the memory, and hence everything that was supposed to be resident in this memory. - The test for ranger memory tested actually too much memory and overwrote the gayle registers. Changes made for 45.34 (29.4.2017) - In case ColdReboot() was called from non-cacheable memory, the code run into the reset, but could not find the jump to the actual ROM code as the CPU was forbidded to prefetch the next instruction. Hence, the machine crashed. This release only uses a single reset in case we are coming from chip. Not nice... Changes made for 46.35 (4.11.2017) - Bumped to V46 to be aligned with the kickstart version. Changes made for 46.36 (21.11.2017) - Added a special hook for deadend alerts not to trip over a non-zero VBR. Changes made for 46.37 (22.11.2017) - The sad story of SAD ends here. ROMWack is back. We have the ROM space, so we can back a somewhat more useful deadend debugger. Changes made for 46.38 (26.11.2017) - Reworked again the deadend-alert case. This might be a bit cleaner now. Changes made for 46.41 46.41 (4.3.2018) - Bumped the copyright date to 2018. Changes made for 46.42 (21.4.2018) - Reworked the low-memory location for chip memory a bit. Changes made for 46.43 (6.5.2018) - Optimized the memory pool functions a bit. Puddles into which memory has been released bubble now up to the top immediately. Changes made for 46.44 (25.8.2018) - In case rounding up to entire memory chunks overflows, the memory allocation functions proceed to a quick exit and failure. AllocVec() also attempts a memory flush (probably intended?), Allocate() and AllocAbs() fail in such situations, and Deallocate() does nothing. Changes made for 46.45 (18.9.2018) - ReadGayle is no longer a dummy for A2000 and A500 systems as the same ROM is also used for the A600. Changes made for 46.46 (9.12.2018) - Even though 46.45 was re-released with a changed copyright string, now the version is bumped such that SetPatch does not need to become active for any future release. Changes made for 46.47 (20.12.2018) - In case memory allocation failed with a AN_BadFreeAdr, exec then crashed for real as it forgot to restore one additional register. Changes made for 46.48 (14.1.2019) - Updated copyright string to year 2019. ----------------------- AmigaOS 3.2 project -------------------------- Changes made for 46.49 (6.5.2019): - In case TypeOfCPU is entered via the ROMWack, it no longer resets the VBR. This may be necessary because some FastVBR program may have moved the vectors without which a 68040 or 68060 cannot operate. Changes made for 47.1 (25.7.2019): - Actually, only the version number changed just in case exec is loaded from setpatch, and setpatch adjusts the version number of the ROM from exec. Changes made for 47.2 (28.7.2019): - Some very minor improvements, most notably changes in the source to adapt it to the new includes. Changes made for 47.3 (27.9.2019): - The default task exception handler overwrote D7 before entering the exception. It is now kept on the stack, hoping that there is one. - The alert/exception function restored the user registers from the wrong place, making them unavailable for ROMWack. Changes made for 47.4 (1.1.2020): - Bumped the Copyright message to the year 2020. Changes made for 47.5 (27.4.2020): - if a 68040 or better is present ExitIntr does perform an additional custom register access to make sure the interrupt lines are down to avoid an spurious interrupt, startexec patches ExitIntr to ExitIntr040 Changes made for 47.6 (31.5.2020): - replaced SizeExtMem by an alternate implementation that's safer and shorter at the same time. The old code had issues in certain hardware combinations (e.g. A600 + ROM mapped to FastRAM, also at least some external A500 expansions with MapROM capability) where Bus echos led to mis-detected RAM where there wasn't any. Changes made for 47.7 (12.11.2020): - ROMWack had the tendency to crash on 68040. Revised the code to avoid a redundant call to TypeOfCPU. - updated VERSION in GNUMakefile