-------------------- AmigaOS 3.1.4.(1) project ----------------------- Changes for 45.10 (17.12.2016) - This this actually a pretty old release of the audio.device, though newer than contained in the kickstart. Work for this was done for Os 4.0 back then (more than ten years ago...). - Recompiled with the latest SAS/C and registerized parameters instead of the stack-based arguments. - Updated from K&R C to ANSI C. - Fixed one particular bug: CMD_RESET crashed when the channels were lost. This caused AmigaBasic to crash on a DisplayBeep(). The latter stole channels from AmigaBasic which tried to beep itself. Changes for 45.11 (9.7.2018) - The audio.device did not return an error in case channels were never allocated and no unit exists. - Added support for NSCMD_DEVICEQUERY. Changes for 45.12 (15.7.2018) - Removed pointless trampoline functions. Changes for 45.13 (15.8.2018) - Hardware registers were not declared as volatile, hence the compiler might have optimized access to them out. )-: - The "small busy loop" that waits for the audio channel to become free slows now the CPU down by accesses to the hardware registers. Changes for 45.14 (8.9.2018) - The small busy loop that waits for the channel to become empty was still optimized away by the compiler, so it was transferred to assembly. - In case someone issues a CMD_WRITE while being in Disable-state, the busy loop would wait forever. Changes for 45.15 (20.9.2018) - The name of the audio interrupts was garbled due to a linker issue. Fixed. Changes for 45.16 (5.10.2018) - The audio.device apparently blocked an interrupt by polling the custom chip interrupt enable flag while waiting for the channel to become free. Removed the offensive code. Changes for 45.17 (7.10.2018) - Reverted the change from 45.11. Unit == 0 is not an error condition. Changes for 45.18 (13.2.2019) - Apparently, some broken programs expect that Begin() returns an error code - how could it, it is not a synchronous call in general. However, just to be nice, it now returns io_Error in case it was, and returns 0 otherwise. ------------------------------ AmigaOS 3.2 project ------------------- Changes for V45.19: - Instead of starting audio by writing a dummy period into the audio data register, the device now triggers the interrupt manually. This avoids a race condition for the first two samples. Changes for V45.20: - The previous release tends to cause hiccups on fast machines, thus the old code was reverted, though the period was reduced from 8 to 1 to avoid trouble with some emulators. Changes for V47.1: - Bumped to 47.1 to allow automatic loading for the 3.2 ROM.