Short: ExecPatch 4.9 - KS 37.175+ Speedup Patch Author: *Art Uploader: Jess Sosnoski (jlsosn planetx bloomu edu) Type: util/boot Architecture: m68k-amigaos ===================================== ExecPatch 4.9 (25 May 1994) Copyright (C) 1993-1994 Arthur Hagen. ===================================== This software is FreeWare, and NOT in the Public Domain! Requires KickStart 36.xx or above, CLI use only. Should work with all processor types / FPU-configurations. Requires a few hundred bytes of FAST-mem to be present. ----------------------------------------------------------------------- The Amiga is a multitasking machine (no kidding!), and will happily switch its CPU use between several tasks and processes too fast for the user really to notice. This task switching system is the whole basis for the Amiga's multitasking capabilities, and has, naturally, been coded in efficient assembly to reduce overhead as much as possible. Even so, several of the basis multitasking functions of the system could be optimised even further, thus speeding up the machine when several tasks are running simultaneously, and/or the CPU use is high. So, I wrote this little utility that will replace some of the systems key functions with more speed-optimised, but excactly equal code. Just put ExecPatch in your S:User-Startup or similar. The functions that will be modified in exec.library are: Switch() Dispatch() Exception() Remove() Enqueue() Wait() Signal() WaitPort() DoIO() WaitIO() CheckIO() ExitIntr() Schedule() Reschedule() Permit() ObtainSemaphore() (*) SetExcept() SetSignal() (*) Under 3.0/3.1 only In addition, if you have a CPU without cache, the cache functions in exec.library that does nothing at all will be replaced with a return statement in the jumptable itself. The functions will be checked first to see if they really does nothing but return, so everything should be safe. ----------------------------------------------------------------------- Six executable files are now included in the archive: ExecPatch : Works on all 68000/010/020/030-equipped machines without FPU coprocessors like the 68881 or 68882. ExecPatch_010 : As above, but will not work on 68000-machines. A few cycles faster than the "standard" version. ExecPatch_881 : For 68040 or 68020/30-machines equipped with a FPU. ExecPatch_LED, Equal to the above versions, but turns the power LED ExecPatch_010LED, dark when the CPU is idle. This will permanently ExecPatch_881LED: enable the low-pass audio filter for all tasks, and might interfere with some audio players. Note that these LED patches will steal FAR less CPU time than the program "Idle-LED" or similar programs because it will not require extra interrupts or any tasks that must be scheduled, but is a part of the scheduling process itself. ----------------------------------------------------------------------- How much does ExecPatch help? ============================= ExecPatch will only speed up the machine in a multitasking situation, so speed test programs will not report any increased speed, unless the test can be made with multitasking enabled. A fair test of how much this program will help YOU is difficult to propose, but you might try something like running AIBB with multitasking ON, priority 0, while your favourite program is doing something in the background. Then do the same test again, but start ExecPatch first. The speed increase will depend on several things, among them are the speed of the FAST-MEM and the CPU type. But count on ExecPatch being faster except for on a slow-mem-only-expanded machine. ---------------------------------------------------------------------- Bugs/caveats: ============= 1) Some virus killers (like VirusChecker and my own VMon) might report that vectors have changed (especially the DoIO vector). This is as it should be, as the vector really has changed, and it is nothing to worry about. If there was a virus lurking on that vector, it would have been replaced by ExecPatch's routine. 2) ExecPatch will steal a couple of hundred bytes permanently, and these will not be released to the system except at reboot. 3) If you *only* have chip- and slow-mem on your system, don't expect too much from patches like this, as running code from ROM will usually be faster, especially when displaying graphics. ----------------------------------------------------------------------- Changes since version 4.8: Should now work on 2.0/2.1-equipped machines. Most patches 16-byte-aligned for maximum performance with burst-ram and "advanced" processors. Changes since version 4.6: SetExcept() and SetSignal() patched. Minor code enhancements. Should now work on 68040-equipped machines. Changes since version 4.4: Source rewritten. ObtainSemaphore() patched. Changes since version 4.3: Permit patch added. A few minor enhancements. LED versions for all processor/fpu-types included in archive. Changes since version 4.2: Had to make a kludge for the WaitPort()-patch, since EaglePlayer expected register A0 to be unchanged if there already were messages on the list. This really is a bug in the players code (german pro- grammers!), but it should now work. Most patches longword-aligned for performance increase on 68020+. Changes since version 3.0: Four more patches made. Just a weeny bit faster code. Changes since version 2.1: Should now work on OS 3.0+ machines. Optimised slightly. ----------------------------------------------------------------------- CrippleWare? ============ Yes - this program is CrippleWare. If you like it, just send me a cripple instead of payment. Enjoy, *Art