@database "SystemPatch.guide" @author "Sante" @remark "$VER: SystemPatch Guide 1.5 (27 Aprile 2003)" @node MAIN "SystemPatch Guide" SystemPatch 2.1 (10/05/2003) Guide version 1.5 _____________________________________________________________________________________________ Sections of this guide - Look at the @{"what's new" link NEW} page to see what is changed since last public version - If you don't know what we are talking about: @{"what is it" link DESCRIPTION} page - System @{"requirements" link REQS} to run SystemPatch - A list of @{"patches installed" link PATCHES} by SystemPatch - If you want to use my program please read its @{"usage and installation" link INST} - You can spread this around the world: @{"distribution" link DIST} - People I have to @{"thank" link THANKS} - Hoping there are no serious @{"bugs" link BUGS} - A short @{"history" link HISTORY} page remembering all versions - Now take a look at the @{"author" link AUTHOR} All work done by Sante Nocciolino @endnode @node AUTHOR "Author" If this program does not crash on your system or you think it is useful let me know about it. Write me! Congratulations and insults are welcome or if you want to send me anything you like you can (comments, sources, progs, other patches...). Sante Nocciolino E-mail: ziosante@libero.it Home-page: http://digilander.iol.it/ziosante @endnode @node NEW "What's new" - A lot of bugs fixed in exec patches. - Added DoIO() and WaitIO(). - Added ClearRegion(), InitArea(), GetBitMapAttr(). - smaller quicklayers.library. - You can disable single patches by writing the name of the function you don't want to patch, prefixed by a minus; example: I want to install all patches but graphics ones and the exec Switch() patch SystemPatch NG -Switch @endnode @node DESCRIPTION "Description" SystemPatch is intended to be usefull on AGA systems. SystemPatch replaces some functions of the operating system with optimized ones, increasing the system efficiency in a multitasking environment. If you don't have OS3.5 or OS3.9, SystemPatch can fix some bugs in exec.library for you because the code of its patches takes care of known bugs of old execs. If you have a MMU and the mmu.library by Thomas Ritcher, SystemPatch can protect the code used by installed patches from being over-written. @endnode @node REQS "Requirements" MINIMUM: - OS3.0+ - CPU 68020+ - FAST RAM SUGGESTED (for full usage): - OS3.0+ - CPU 68020+ - FAST RAM - a MMU and the mmu.library V41+ by Thomas Richter - FBlit V3+ @endnode @node PATCHES "Installed patches" It patches these functions: in graphics.library DisownBlitter() WaitBlit() QBlit() QBSBlit() WaitTOF() RectFill() SetAPen() SetBPen() SetDrMd() SetABPenDrMd() WritePixel() OwnBlitter() DisownBlitter() LockLayerRom() UnLockLayerRom() BltClear() based on QBC 1.1 by Rick Pratt WritePixelLine8() | WritePixelArray8() | based on BlazeWCP 1.74 by Rick Pratt WriteChunkyPixels() | Text() installed only if FBlit is running, based on FText 1.7 by Rick Pratt ReadPixelLine8() based on code written in 1994 by Morten Eriksen ClearRegion() InitArea() corrects a bug of graphics.library(see romfixes modules from BlizKick) GetBitMapAttr() in exec.library Forbid() Schedule() Reschedule() GetMsg() PutMsg() ReplyMsg() Enqueue() Signal() SetSignal() ExitIntr() DisPatch() Cause() Exception() Wait() InitSemaphore() AddSemaphore() ReleaseSemaphore() AddPort() WaitPort() RemPort() RemSemaphore() RemResource() SetExcept() Insert() AddHead() Remove() RemHead() RemTail() Switch() DoIO() WaitIO() in utility.library (not installed on 040/060) SMult32() UMult32() SMult64() UMult64() SDivMod32() UDivMod32() It loads the quicklayers.library to speed up layers.library. It replaces Auto Vector Interrupts routines with faster ones. It replaces BLIT interrupt vector. These patches do not interfere with other programs like: FBlit, SysPatch (best if you run SystemPatch after it), CMQ (and other CopyMem() patches), MCP (you have to disable QuickLayers patch), PoolMem (and other memory allocation patches), Executive, Mult64Patch. NOTE: Routines that could be dangerous on 040/060 systems are not installed. @endnode @node INST "Installation" SystemPatch should be copied to your C: directory and the supplied quicklayers.library to your LIBS: directory. You can run it from shell or from your user-startup just typing the program name. If you have not or not enough fast memory or inadeguate processor it exits without installing anything. If you have Executive, it's best to launch SystemPatch before it. You should disable MCP QuickLayers patch unless you use the NOLAYERS option. Parameters: QUIET it doesn't output any message if everything ok. NOINTS it doesn't install faster Auto Vector Interrupts and Interrupt Vectors. NOEXEC exec.library patches are not installed. NOGFX graphics.library patches are not installed. NOUTIL utility.library patches are not installed (recommended on OS 3.5+). MMU this option needs mmu.library V41+ and a MMU in your processor to work. It marks memory used by patches as ROM memory, so faulty programs can not overwrite them (I mean that code can not be damaged, but functions can always be over-patched by other software). Use this option with care because it is yet experimental. NOLAYERS it doesn't load quicklayers.library. You can disable single patches by typing the unneded patch prefixed by minus; type "SystemPatch ?" to see the patches you can disable. @endnode @node DIST "Distribution" SystemPatch is FREEWARE. Use it at your own risk. You can distribute the original archive around the world but it should remain untouched. @endnode @node THANKS "THANKS" Riccardo Micci (for 68060 testing). Rick Pratt for his FText, QuickBC, BlazeWCP. Morten Eriksen for his planar to chunky code. Thomas Richter for mmu.library. Simone Bevilacqua, Kev Harrison for bugs hunting. ...everyone who helped me! @endnode @node BUGS "Known bugs" Text() patch is installed only if you have FBlit running, but SystemPatch does not check if FBlit is V3+ (as needed). Tested on : A1200 OS3.0 68020+68882 8 Megs Fast Ram A1200 OS3.0 Blizzard IV 16 Megs Fast Ram A1200 OS3.5+BoingBag2a Blizzard IV 16 Megs Fast Ram A1200 OS3.5 68060/50 16 Megs Fast Ram A1200 OS3.9+BoingBag1 68030+68882 16Megs Fast Ram @endnode @node HISTORY "History" - 2.1 (27/04/2003) added possibility to disable single patches. corrected bugs in exec patches. Added WaitIO(), DoIO(), InitArea(), ClearRegion(), GetBitMapAttr(). quicklayers.library is now linked using PhxLnk. - 2.0d (04/04/2003) corrected my mistake in BltClear030() that could cause problems on 68030 processors; removed a problem with Switch() on FPU systems; streamlined code in Reschedule(); added some output strings; corrected bugs in error handling of MMU code. - 2.0c (02/03/2003) updated graphics patches to BlazeWCP 1.74 code; added ReadPixelLine8() patch; corrected a bug in Exception(). - 2.0b (18/01/2002) minor changes to installation code. Streamlined quicklayers.library. - 2.0a (16/01/2002) created the included quicklayers.library. - 2.0 (15/09/2001) introduced new layers.library patches. - 1.9d (08/08/2001) 3rd beta release. Aggressive memory protection is used if MuForce is running. - 1.9d (31/07/2001) 2nd beta release. Cleaned up code a little. Included a little GUI interface. - 1.9d (19/07/2001) Beta release. Added some error strings for MMU code. Added WritePixelLine8(), WritePixelArray8(), WriteChunkyPixels(), BltClear(), Text(). - 1.9c (09/07/2001) Beta release. Cleaned MMU handling code. Added more MMU errors recognition. Now MMU handling code should be nearly complete. - 1.9c This is an alpha release. Added MMU option; now you can protect installed patches from being overwritten by faulty programs. - 1.9b Removed DoHookClipRects() becase was buggy on OS3.9(try to run WBClock with layers.library patch installed). - 1.9a Bugfixed patching code. Now compiled with Phxass (was compiled with Snma before this release). - 1.9 Added gfx patches: RectFill(), SetAPen(), SetBPen(), SetDrMd(), SetABPenDrMd(), WritePixel(), OwnBlitter(), DisownBlitter(), LockLayerRom(), UnLockLayerRom(). - 1.8fß Bug fixed on command line parser. - 1.8f Added command line parameters and some output text. - 1.8e Readded Switch(), GetMsg(). Reworked code a little. Reworked installation code; some patches are not installed on 040/060 systems. - 1.8d Faster WaitBlit(). Added WaitTOF(). - 1.8c Now if you own a 68040/68060 the utility.library patches are no more installed. Re-added Exception(), Wait(), InitSemaphore(), ReleaseSemaphore(), AddSemaphore(), AddPort(), WaitPort(), RemPort(), SetExcept(), Insert(), AddHead(), Remove(), RemHead(), RemTail(), RemResource(), RemSemaphore(). - 1.8b Added DisPatch(), Cause(). - 1.8a Added Signal(), SetSignal(), Enqueue(), ExitIntr(). - 1.8 Totally rewritten. Lot of patches removed because of problems with various Hardware. - 1.7b New UDivMod32() and SDivMod32() patches: these make a control on operands before taking division to avoid divide by zero errors. This fixes problems with programs that call that functions with wrong arguments(causing divide by zero errors). - 1.7 Removed Interrupts Vector patches because of a bug with mfm decoding of trackdisk. - 1.6f General speedup to interrupt vectors and auto vector interrupts. - 1.6e Corrected a bug in SOFTINT. Little speedup to BLIT. - 1.6d Reworked code for a better use of caches. - 1.6c Little speedup to InitRastPort(). - 1.6 Added AreaMove(), EraseRect(), ReleaseSemaphore(). Added Interrupt Vectors patches (see patches list in this doc). - 1.5g Added InitSemaphore(), AddSemaphore(), AddPort(), RemResource(), RemSemaphore(). Little speedup to Switch() and DoHookClipRects(). - 1.5f Little speedup to DoHookClipRects(). Changed the installation code. - 1.5e Nothing changed except the source. Now it uses CopyMemQuick() to install the patches. - 1.5d Added DoHookClipRects() patch. - 1.5c Re-added Switch(), now works perfectly. If Executive is launched this patch is not installed. - 1.5b Speeded up Auto Vector Interrupts. - 1.5a New Wait(). Some misc speedups. Aestetical changes to source. - 1.5 Restored old WaitBlit() patch (version 1.2 of SystemPatch) for safety reasons. Added utility.library patches. Reworked source. New Wait(). - 1.4 Removed a bug in QBlit() patch. Added QBSBlit() patch. - 1.3 Changed WaitBlit() patch (it's a little faster to return if blitter is not busy). Added a QBlit() patch. - 1.2 First public release. Reworked patch installation code to do it more compatible with Executive (this is done by removing Switch() patch). - 1.1 Fixed a bug in Schedule() that made to crash my system sometimes. - 1.0 First internal release. @endnode