-------------------- 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

